@pepperi-addons/ngx-composite-lib 0.0.16-loader.8 → 0.4.0-angular14.3
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/color-settings/color-settings.component.d.ts +25 -25
- package/color-settings/color-settings.model.d.ts +5 -5
- package/color-settings/color-settings.module.d.ts +12 -12
- package/color-settings/{pepperi-addons-ngx-composite-lib-color-settings.d.ts → index.d.ts} +5 -5
- package/color-settings/public-api.d.ts +3 -3
- package/core/common/directives/index.d.ts +1 -1
- package/core/common/directives/public-api.d.ts +1 -1
- package/core/common/directives/reset-configuration-field.directive.d.ts +39 -39
- package/core/common/index.d.ts +1 -1
- package/core/common/public-api.d.ts +2 -2
- package/core/common/services/dimx.service.d.ts +32 -32
- package/core/common/services/index.d.ts +1 -1
- package/core/common/services/public-api.d.ts +2 -2
- package/core/common/services/utilities.service.d.ts +6 -6
- package/core/index.d.ts +1 -1
- package/core/public-api.d.ts +1 -1
- package/data-view-builder/data-view-builder.component.d.ts +35 -35
- package/data-view-builder/data-view-builder.model.d.ts +1 -1
- package/data-view-builder/data-view-builder.module.d.ts +23 -23
- package/data-view-builder/data-view-builder.service.d.ts +14 -14
- package/data-view-builder/{pepperi-addons-ngx-composite-lib-data-view-builder.d.ts → index.d.ts} +5 -5
- package/data-view-builder/menu-data-view/menu-data-view.component.d.ts +36 -36
- package/data-view-builder/public-api.d.ts +3 -3
- package/{esm2015/color-settings/color-settings.component.js → esm2020/color-settings/color-settings.component.mjs} +87 -91
- package/{esm2015/color-settings/color-settings.model.js → esm2020/color-settings/color-settings.model.mjs} +8 -8
- package/{esm2015/color-settings/color-settings.module.js → esm2020/color-settings/color-settings.module.mjs} +38 -40
- package/{esm2015/color-settings/pepperi-addons-ngx-composite-lib-color-settings.js → esm2020/color-settings/pepperi-addons-ngx-composite-lib-color-settings.mjs} +4 -4
- package/{esm2015/color-settings/public-api.js → esm2020/color-settings/public-api.mjs} +6 -6
- package/{esm2015/core/common/directives/index.js → esm2020/core/common/directives/index.mjs} +4 -4
- package/{esm2015/core/common/directives/public-api.js → esm2020/core/common/directives/public-api.mjs} +4 -4
- package/esm2020/core/common/directives/reset-configuration-field.directive.mjs +153 -0
- package/{esm2015/core/common/index.js → esm2020/core/common/index.mjs} +4 -4
- package/{esm2015/core/common/public-api.js → esm2020/core/common/public-api.mjs} +5 -5
- package/esm2020/core/common/services/dimx.service.mjs +48 -0
- package/{esm2015/core/common/services/index.js → esm2020/core/common/services/index.mjs} +4 -4
- package/{esm2015/core/common/services/public-api.js → esm2020/core/common/services/public-api.mjs} +5 -5
- package/{esm2015/core/common/services/utilities.service.js → esm2020/core/common/services/utilities.service.mjs} +18 -18
- package/{esm2015/core/index.js → esm2020/core/index.mjs} +4 -4
- package/{esm2015/core/public-api.js → esm2020/core/public-api.mjs} +4 -4
- package/esm2020/data-view-builder/data-view-builder.component.mjs +117 -0
- package/{esm2015/data-view-builder/data-view-builder.model.js → esm2020/data-view-builder/data-view-builder.model.mjs} +1 -1
- package/{esm2015/data-view-builder/data-view-builder.module.js → esm2020/data-view-builder/data-view-builder.module.mjs} +80 -82
- package/{esm2015/data-view-builder/data-view-builder.service.js → esm2020/data-view-builder/data-view-builder.service.mjs} +38 -38
- package/esm2020/data-view-builder/menu-data-view/menu-data-view.component.mjs +117 -0
- package/{esm2015/data-view-builder/pepperi-addons-ngx-composite-lib-data-view-builder.js → esm2020/data-view-builder/pepperi-addons-ngx-composite-lib-data-view-builder.mjs} +4 -4
- package/{esm2015/data-view-builder/public-api.js → esm2020/data-view-builder/public-api.mjs} +6 -6
- package/esm2020/file-status-panel/file-status-panel.component.mjs +35 -0
- package/{esm2015/file-status-panel/file-status-panel.model.js → esm2020/file-status-panel/file-status-panel.model.mjs} +8 -8
- package/{esm2015/file-status-panel/file-status-panel.module.js → esm2020/file-status-panel/file-status-panel.module.mjs} +54 -56
- package/{esm2015/file-status-panel/pepperi-addons-ngx-composite-lib-file-status-panel.js → esm2020/file-status-panel/pepperi-addons-ngx-composite-lib-file-status-panel.mjs} +4 -4
- package/{esm2015/file-status-panel/public-api.js → esm2020/file-status-panel/public-api.mjs} +6 -6
- package/esm2020/generic-form/generic-form.component.mjs +184 -0
- package/{esm2015/generic-form/generic-form.model.js → esm2020/generic-form/generic-form.model.mjs} +1 -1
- package/{esm2015/generic-form/generic-form.module.js → esm2020/generic-form/generic-form.module.mjs} +68 -74
- package/{esm2015/generic-form/generic-form.service.js → esm2020/generic-form/generic-form.service.mjs} +67 -67
- package/{esm2015/generic-form/pepperi-addons-ngx-composite-lib-generic-form.js → esm2020/generic-form/pepperi-addons-ngx-composite-lib-generic-form.mjs} +4 -4
- package/{esm2015/generic-form/public-api.js → esm2020/generic-form/public-api.mjs} +7 -7
- package/esm2020/generic-list/generic-list.component.mjs +425 -0
- package/{esm2015/generic-list/generic-list.model.js → esm2020/generic-list/generic-list.model.mjs} +1 -1
- package/{esm2015/generic-list/generic-list.module.js → esm2020/generic-list/generic-list.module.mjs} +70 -72
- package/esm2020/generic-list/generic-list.service.mjs +125 -0
- package/{esm2015/generic-list/pepperi-addons-ngx-composite-lib-generic-list.js → esm2020/generic-list/pepperi-addons-ngx-composite-lib-generic-list.mjs} +4 -4
- package/{esm2015/generic-list/public-api.js → esm2020/generic-list/public-api.mjs} +7 -7
- package/esm2020/group-buttons-settings/group-buttons-settings.component.mjs +130 -0
- package/{esm2015/group-buttons-settings/group-buttons-settings.model.js → esm2020/group-buttons-settings/group-buttons-settings.model.mjs} +1 -1
- package/{esm2015/group-buttons-settings/group-buttons-settings.module.js → esm2020/group-buttons-settings/group-buttons-settings.module.mjs} +48 -50
- package/{esm2015/group-buttons-settings/pepperi-addons-ngx-composite-lib-group-buttons-settings.js → esm2020/group-buttons-settings/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs} +4 -4
- package/{esm2015/group-buttons-settings/public-api.js → esm2020/group-buttons-settings/public-api.mjs} +6 -6
- package/{esm2015/ngx-composite-lib.module.js → esm2020/ngx-composite-lib.module.mjs} +54 -56
- package/{esm2015/pepperi-addons-ngx-composite-lib.js → esm2020/pepperi-addons-ngx-composite-lib.mjs} +4 -4
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +5 -5
- package/{esm2015/shadow-settings/pepperi-addons-ngx-composite-lib-shadow-settings.js → esm2020/shadow-settings/pepperi-addons-ngx-composite-lib-shadow-settings.mjs} +4 -4
- package/{esm2015/shadow-settings/public-api.js → esm2020/shadow-settings/public-api.mjs} +6 -6
- package/{esm2015/shadow-settings/shadow-settings.component.js → esm2020/shadow-settings/shadow-settings.component.mjs} +69 -73
- package/{esm2015/shadow-settings/shadow-settings.model.js → esm2020/shadow-settings/shadow-settings.model.mjs} +7 -7
- package/{esm2015/shadow-settings/shadow-settings.module.js → esm2020/shadow-settings/shadow-settings.module.mjs} +42 -44
- package/fesm2015/{pepperi-addons-ngx-composite-lib-color-settings.js → pepperi-addons-ngx-composite-lib-color-settings.mjs} +117 -123
- package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-data-view-builder.mjs +350 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-data-view-builder.mjs.map +1 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +107 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -0
- package/fesm2015/{pepperi-addons-ngx-composite-lib-generic-form.js → pepperi-addons-ngx-composite-lib-generic-form.mjs} +295 -305
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-form.mjs.map +1 -0
- package/fesm2015/{pepperi-addons-ngx-composite-lib-generic-list.js → pepperi-addons-ngx-composite-lib-generic-list.mjs} +605 -609
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -0
- package/fesm2015/{pepperi-addons-ngx-composite-lib-group-buttons-settings.js → pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs} +168 -174
- package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs.map +1 -0
- package/fesm2015/{pepperi-addons-ngx-composite-lib-shadow-settings.js → pepperi-addons-ngx-composite-lib-shadow-settings.mjs} +102 -108
- package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -0
- package/fesm2015/{pepperi-addons-ngx-composite-lib.js → pepperi-addons-ngx-composite-lib.mjs} +254 -256
- package/fesm2015/pepperi-addons-ngx-composite-lib.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs +141 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-data-view-builder.mjs +348 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-data-view-builder.mjs.map +1 -0
- package/{fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.js → fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs} +82 -88
- package/fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-form.mjs +315 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-form.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs +619 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +186 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +126 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib.mjs +304 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib.mjs.map +1 -0
- package/file-status-panel/file-status-panel.component.d.ts +14 -14
- package/file-status-panel/file-status-panel.model.d.ts +7 -7
- package/file-status-panel/file-status-panel.module.d.ts +17 -17
- package/file-status-panel/{pepperi-addons-ngx-composite-lib-file-status-panel.d.ts → index.d.ts} +5 -5
- package/file-status-panel/public-api.d.ts +3 -3
- package/generic-form/generic-form.component.d.ts +46 -46
- package/generic-form/generic-form.model.d.ts +34 -34
- package/generic-form/generic-form.module.d.ts +13 -13
- package/generic-form/generic-form.service.d.ts +16 -16
- package/generic-form/index.d.ts +5 -1
- package/generic-form/public-api.d.ts +4 -4
- package/generic-list/generic-list.component.d.ts +101 -101
- package/generic-list/generic-list.model.d.ts +54 -54
- package/generic-list/generic-list.module.d.ts +18 -18
- package/generic-list/generic-list.service.d.ts +43 -43
- package/generic-list/{pepperi-addons-ngx-composite-lib-generic-list.d.ts → index.d.ts} +5 -5
- package/generic-list/public-api.d.ts +4 -4
- package/group-buttons-settings/group-buttons-settings.component.d.ts +33 -33
- package/group-buttons-settings/group-buttons-settings.model.d.ts +1 -1
- package/group-buttons-settings/group-buttons-settings.module.d.ts +15 -15
- package/group-buttons-settings/{pepperi-addons-ngx-composite-lib-group-buttons-settings.d.ts → index.d.ts} +5 -5
- package/group-buttons-settings/public-api.d.ts +3 -3
- package/{pepperi-addons-ngx-composite-lib.d.ts → index.d.ts} +5 -5
- package/ngx-composite-lib.module.d.ts +13 -13
- package/package.json +89 -19
- package/public-api.d.ts +2 -2
- package/shadow-settings/{pepperi-addons-ngx-composite-lib-shadow-settings.d.ts → index.d.ts} +5 -5
- package/shadow-settings/public-api.d.ts +3 -3
- package/shadow-settings/shadow-settings.component.d.ts +23 -23
- package/shadow-settings/shadow-settings.model.d.ts +7 -7
- package/shadow-settings/shadow-settings.module.d.ts +13 -13
- package/src/core/style/components/data-view-builder.scss +3 -3
- package/styling.scss +1 -1
- package/bundles/pepperi-addons-ngx-composite-lib-color-settings.umd.js +0 -181
- package/bundles/pepperi-addons-ngx-composite-lib-color-settings.umd.js.map +0 -1
- package/bundles/pepperi-addons-ngx-composite-lib-data-view-builder.umd.js +0 -393
- package/bundles/pepperi-addons-ngx-composite-lib-data-view-builder.umd.js.map +0 -1
- package/bundles/pepperi-addons-ngx-composite-lib-file-status-panel.umd.js +0 -137
- package/bundles/pepperi-addons-ngx-composite-lib-file-status-panel.umd.js.map +0 -1
- package/bundles/pepperi-addons-ngx-composite-lib-generic-form.umd.js +0 -697
- package/bundles/pepperi-addons-ngx-composite-lib-generic-form.umd.js.map +0 -1
- package/bundles/pepperi-addons-ngx-composite-lib-generic-list.umd.js +0 -1060
- package/bundles/pepperi-addons-ngx-composite-lib-generic-list.umd.js.map +0 -1
- package/bundles/pepperi-addons-ngx-composite-lib-group-buttons-settings.umd.js +0 -225
- package/bundles/pepperi-addons-ngx-composite-lib-group-buttons-settings.umd.js.map +0 -1
- package/bundles/pepperi-addons-ngx-composite-lib-shadow-settings.umd.js +0 -165
- package/bundles/pepperi-addons-ngx-composite-lib-shadow-settings.umd.js.map +0 -1
- package/bundles/pepperi-addons-ngx-composite-lib.umd.js +0 -666
- package/bundles/pepperi-addons-ngx-composite-lib.umd.js.map +0 -1
- package/color-settings/package.json +0 -10
- package/data-view-builder/package.json +0 -10
- package/esm2015/core/common/directives/reset-configuration-field.directive.js +0 -157
- package/esm2015/core/common/services/dimx.service.js +0 -50
- package/esm2015/data-view-builder/data-view-builder.component.js +0 -122
- package/esm2015/data-view-builder/menu-data-view/menu-data-view.component.js +0 -122
- package/esm2015/file-status-panel/file-status-panel.component.js +0 -39
- package/esm2015/generic-form/generic-form.component.js +0 -190
- package/esm2015/generic-form/index.js +0 -5
- package/esm2015/generic-list/generic-list.component.js +0 -443
- package/esm2015/generic-list/generic-list.service.js +0 -127
- package/esm2015/group-buttons-settings/group-buttons-settings.component.js +0 -135
- package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.js.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-data-view-builder.js +0 -360
- package/fesm2015/pepperi-addons-ngx-composite-lib-data-view-builder.js.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.js.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-form.js.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.js.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.js.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.js.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib.js.map +0 -1
- package/file-status-panel/package.json +0 -10
- package/generic-form/package.json +0 -10
- package/generic-form/pepperi-addons-ngx-composite-lib-generic-form.d.ts +0 -5
- package/generic-list/package.json +0 -13
- package/group-buttons-settings/package.json +0 -10
- package/shadow-settings/package.json +0 -10
|
@@ -1,443 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, ViewChild, Input, Output, EventEmitter, ViewContainerRef } from '@angular/core';
|
|
3
|
-
//import { TranslateService } from '@ngx-translate/core';
|
|
4
|
-
import { PepGuid, UIControl } from '@pepperi-addons/ngx-lib';
|
|
5
|
-
import { Subscription } from 'rxjs';
|
|
6
|
-
import { PepListComponent, PepSelectionData, DEFAULT_PAGE_SIZE } from '@pepperi-addons/ngx-lib/list';
|
|
7
|
-
import { PepGenericListService } from './generic-list.service';
|
|
8
|
-
import { DataViewConverter } from '@pepperi-addons/data-views';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@pepperi-addons/ngx-lib";
|
|
11
|
-
import * as i2 from "./generic-list.service";
|
|
12
|
-
import * as i3 from "@pepperi-addons/ngx-lib/page-layout";
|
|
13
|
-
import * as i4 from "@pepperi-addons/ngx-lib/top-bar";
|
|
14
|
-
import * as i5 from "@pepperi-addons/ngx-lib/list";
|
|
15
|
-
import * as i6 from "@pepperi-addons/ngx-lib/search";
|
|
16
|
-
import * as i7 from "@pepperi-addons/ngx-lib/side-bar";
|
|
17
|
-
import * as i8 from "@pepperi-addons/ngx-lib/smart-filters";
|
|
18
|
-
import * as i9 from "@pepperi-addons/ngx-lib/bread-crumbs";
|
|
19
|
-
import * as i10 from "@angular/common";
|
|
20
|
-
export class GenericListComponent {
|
|
21
|
-
constructor(_resolver, _dataConvertorService, _layoutService, _loaderService,
|
|
22
|
-
// private _translate: TranslateService,
|
|
23
|
-
_genericListService) {
|
|
24
|
-
this._resolver = _resolver;
|
|
25
|
-
this._dataConvertorService = _dataConvertorService;
|
|
26
|
-
this._layoutService = _layoutService;
|
|
27
|
-
this._loaderService = _loaderService;
|
|
28
|
-
this._genericListService = _genericListService;
|
|
29
|
-
this._dataSource = {
|
|
30
|
-
init: (params) => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
return {
|
|
32
|
-
dataView: {
|
|
33
|
-
Type: 'Grid'
|
|
34
|
-
},
|
|
35
|
-
totalCount: -1,
|
|
36
|
-
items: []
|
|
37
|
-
};
|
|
38
|
-
})
|
|
39
|
-
};
|
|
40
|
-
this.actions = {
|
|
41
|
-
get: (data) => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
return [];
|
|
43
|
-
})
|
|
44
|
-
};
|
|
45
|
-
this.uuidMapping = 'key';
|
|
46
|
-
this.disabled = false;
|
|
47
|
-
this.addPadding = false;
|
|
48
|
-
this.title = '';
|
|
49
|
-
this.description = '';
|
|
50
|
-
this.inline = false;
|
|
51
|
-
this.showSearch = false;
|
|
52
|
-
this.noDataFoundMsg = '';
|
|
53
|
-
this.selectionType = 'multi';
|
|
54
|
-
this.supportSorting = false;
|
|
55
|
-
this.pager = {
|
|
56
|
-
type: 'scroll'
|
|
57
|
-
};
|
|
58
|
-
this.tableViewType = 'regular';
|
|
59
|
-
this.zebraStripes = false;
|
|
60
|
-
this.showTopBar = false;
|
|
61
|
-
this.breadCrumbsItems = new Array();
|
|
62
|
-
this.fieldClick = new EventEmitter();
|
|
63
|
-
this.valueChange = new EventEmitter();
|
|
64
|
-
this.breadCrumbItemClick = new EventEmitter();
|
|
65
|
-
this._resize$ = new Subscription();
|
|
66
|
-
this._loader$ = new Subscription();
|
|
67
|
-
this._dataView = {
|
|
68
|
-
Type: 'Grid'
|
|
69
|
-
};
|
|
70
|
-
this.totalRowCount = -1;
|
|
71
|
-
this.searchString = '';
|
|
72
|
-
this.showSmartFilter = false;
|
|
73
|
-
this.internalSmartFilter = {
|
|
74
|
-
fields: [],
|
|
75
|
-
data: []
|
|
76
|
-
};
|
|
77
|
-
this._appliedFilters = [];
|
|
78
|
-
this._sorting = undefined;
|
|
79
|
-
this.menuHandlers = {};
|
|
80
|
-
this.menuActions = [];
|
|
81
|
-
this._resize$ = this._layoutService.onResize$.pipe().subscribe((size) => {
|
|
82
|
-
//
|
|
83
|
-
});
|
|
84
|
-
this._loader$ = this._loaderService.onChanged$.subscribe((status) => {
|
|
85
|
-
//
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
set pepListContainer(val) {
|
|
89
|
-
this._pepListContainer = val;
|
|
90
|
-
}
|
|
91
|
-
set dataSource(val) {
|
|
92
|
-
this._dataSource = val;
|
|
93
|
-
this._sorting = undefined;
|
|
94
|
-
this.initSearch();
|
|
95
|
-
this.initTable();
|
|
96
|
-
}
|
|
97
|
-
set smartFilter(val) {
|
|
98
|
-
this.internalSmartFilter = this._genericListService.convertToSmartFilter(val);
|
|
99
|
-
this.showSmartFilter = this.internalSmartFilter.fields.length > 0;
|
|
100
|
-
}
|
|
101
|
-
set pepList(val) {
|
|
102
|
-
this._pepList = val;
|
|
103
|
-
}
|
|
104
|
-
get pepList() {
|
|
105
|
-
return this._pepList;
|
|
106
|
-
}
|
|
107
|
-
ngOnInit() {
|
|
108
|
-
//
|
|
109
|
-
}
|
|
110
|
-
initTable() {
|
|
111
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
setTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
113
|
-
var _a, _b, _c;
|
|
114
|
-
if (this._dataSource &&
|
|
115
|
-
this._pepListContainer) {
|
|
116
|
-
if (this._pepListContainer.length > 0) {
|
|
117
|
-
this._pepListContainer.remove();
|
|
118
|
-
}
|
|
119
|
-
const factory = this._resolver.resolveComponentFactory(PepListComponent);
|
|
120
|
-
const componentRef = this._pepListContainer.createComponent(factory);
|
|
121
|
-
this.pepList = componentRef.instance;
|
|
122
|
-
//merge selector inputs with callback inputs
|
|
123
|
-
this.loadTableInputs();
|
|
124
|
-
let fromIndex = 0;
|
|
125
|
-
let toIndex = 0;
|
|
126
|
-
if (this._listInputs.pager.type === 'pages') {
|
|
127
|
-
fromIndex = this._listInputs.pager.size * this._listInputs.pager.index;
|
|
128
|
-
toIndex = fromIndex + (this._listInputs.pager.size || DEFAULT_PAGE_SIZE) - 1;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
toIndex = 100; //TO DO - get value from - this.customList.getTopItems()
|
|
132
|
-
}
|
|
133
|
-
const data = yield this.loadData(fromIndex, toIndex);
|
|
134
|
-
this.totalRowCount = (data === null || data === void 0 ? void 0 : data.totalCount) || 0;
|
|
135
|
-
componentRef.instance.viewType = this._genericListService.getListViewType(this._dataView.Type);
|
|
136
|
-
componentRef.instance.tableViewType = this._listInputs.tableViewType;
|
|
137
|
-
componentRef.instance.zebraStripes = this._listInputs.zebraStripes;
|
|
138
|
-
if (this.disabled) {
|
|
139
|
-
componentRef.instance.disabled = true;
|
|
140
|
-
componentRef.instance.lockItemInnerEvents = true;
|
|
141
|
-
}
|
|
142
|
-
componentRef.instance.supportSorting = this._listInputs.supportSorting;
|
|
143
|
-
componentRef.instance.selectionTypeForActions = this._listInputs.selectionType;
|
|
144
|
-
componentRef.instance.showCardSelection = this._listInputs.selectionType !== 'none';
|
|
145
|
-
componentRef.instance.pagerType = this._listInputs.pager.type;
|
|
146
|
-
if (this._listInputs.pager.type === 'pages') {
|
|
147
|
-
componentRef.instance.pageSize = ((_a = this._listInputs.pager) === null || _a === void 0 ? void 0 : _a.size) || DEFAULT_PAGE_SIZE;
|
|
148
|
-
componentRef.instance.pageIndex = ((_b = this._listInputs.pager) === null || _b === void 0 ? void 0 : _b.index) || 0;
|
|
149
|
-
}
|
|
150
|
-
componentRef.instance.noDataFoundMsg = this._listInputs.noDataFoundMsg;
|
|
151
|
-
componentRef.instance.fieldClick.subscribe(($event) => {
|
|
152
|
-
this.onCustomizeFieldClick($event);
|
|
153
|
-
});
|
|
154
|
-
componentRef.instance.selectedItemsChange.subscribe(($event) => {
|
|
155
|
-
this.onSelectedItemsChanged($event);
|
|
156
|
-
});
|
|
157
|
-
componentRef.instance.loadItems.subscribe(($event) => {
|
|
158
|
-
this.onLoadItems($event);
|
|
159
|
-
});
|
|
160
|
-
componentRef.instance.loadPage.subscribe(($event) => {
|
|
161
|
-
this.onLoadPage($event);
|
|
162
|
-
});
|
|
163
|
-
componentRef.instance.valueChange.subscribe(($event) => {
|
|
164
|
-
this.onValueChanged($event);
|
|
165
|
-
});
|
|
166
|
-
componentRef.instance.sortingChange.subscribe(($event) => {
|
|
167
|
-
this.onSortingChange($event);
|
|
168
|
-
});
|
|
169
|
-
let convertedList = [];
|
|
170
|
-
if (data) {
|
|
171
|
-
if ((_c = data.items) === null || _c === void 0 ? void 0 : _c.length) {
|
|
172
|
-
convertedList = this._dataConvertorService.convertListData(data.items);
|
|
173
|
-
}
|
|
174
|
-
const uiControl = this.getUiControl(DataViewConverter.toUIControlData(data.dataView));
|
|
175
|
-
componentRef.instance.initListData(uiControl, data.totalCount, convertedList);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}), 0);
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* loads inputs in case they are provided and merge with selector inputs
|
|
183
|
-
* @returns merged pep-list inputs
|
|
184
|
-
*/
|
|
185
|
-
loadTableInputs() {
|
|
186
|
-
this._listInputs = {
|
|
187
|
-
supportSorting: this.supportSorting,
|
|
188
|
-
selectionType: this.selectionType,
|
|
189
|
-
pager: this.pager,
|
|
190
|
-
noDataFoundMsg: this.noDataFoundMsg,
|
|
191
|
-
tableViewType: this.tableViewType,
|
|
192
|
-
zebraStripes: this.zebraStripes
|
|
193
|
-
};
|
|
194
|
-
if (this._dataSource.inputs) {
|
|
195
|
-
Object.entries(this._dataSource.inputs).forEach((item) => {
|
|
196
|
-
if (this._genericListService.hasProperty(this._listInputs, item[0])) {
|
|
197
|
-
this._listInputs[item[0]] = item[1];
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
getUiControl(data) {
|
|
203
|
-
const uiControl = new UIControl();
|
|
204
|
-
uiControl.ControlFields = [];
|
|
205
|
-
if (data === null || data === void 0 ? void 0 : data.ControlFields) {
|
|
206
|
-
uiControl.ControlFields = data.ControlFields.map((field) => this._genericListService.convertToUiControlField(field));
|
|
207
|
-
}
|
|
208
|
-
return uiControl;
|
|
209
|
-
}
|
|
210
|
-
loadMenuItems() {
|
|
211
|
-
if (this._listInputs.selectionType !== 'none') {
|
|
212
|
-
this.getMenuActions().then(x => this.menuActions = x);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
getMenuActions() {
|
|
216
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
217
|
-
const res = [];
|
|
218
|
-
const result = this.getMenuObjects();
|
|
219
|
-
if (result.success) {
|
|
220
|
-
const actions = yield this.actions.get(result.data);
|
|
221
|
-
this.menuHandlers = {};
|
|
222
|
-
actions === null || actions === void 0 ? void 0 : actions.forEach(item => {
|
|
223
|
-
const uuid = PepGuid.newGuid();
|
|
224
|
-
this.menuHandlers[uuid] = item.handler;
|
|
225
|
-
res.push({
|
|
226
|
-
key: uuid,
|
|
227
|
-
text: item.title
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
return res;
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
getMenuObjects() {
|
|
235
|
-
const menuObjects = {
|
|
236
|
-
success: false,
|
|
237
|
-
data: new PepSelectionData()
|
|
238
|
-
};
|
|
239
|
-
if (this.pepList) {
|
|
240
|
-
menuObjects.success = true;
|
|
241
|
-
menuObjects.data = this.pepList.getSelectedItemsData();
|
|
242
|
-
}
|
|
243
|
-
return menuObjects;
|
|
244
|
-
}
|
|
245
|
-
initSearch() {
|
|
246
|
-
var _a;
|
|
247
|
-
this.searchString = '';
|
|
248
|
-
(_a = this.search) === null || _a === void 0 ? void 0 : _a.initSearch();
|
|
249
|
-
}
|
|
250
|
-
loadData(fromIndex, toIndex) {
|
|
251
|
-
var _a;
|
|
252
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
253
|
-
setTimeout(() => {
|
|
254
|
-
this._loaderService.show();
|
|
255
|
-
}, 50);
|
|
256
|
-
const data = yield this._dataSource.init({
|
|
257
|
-
searchString: this.searchString || undefined,
|
|
258
|
-
filters: this._appliedFilters.length ? this._appliedFilters : undefined,
|
|
259
|
-
sorting: this._sorting || undefined,
|
|
260
|
-
fromIndex: fromIndex,
|
|
261
|
-
toIndex: toIndex
|
|
262
|
-
});
|
|
263
|
-
setTimeout(() => {
|
|
264
|
-
this._loaderService.hide();
|
|
265
|
-
}, 50);
|
|
266
|
-
//this._loaderService.hide();
|
|
267
|
-
if (data) {
|
|
268
|
-
this._dataView = data.dataView;
|
|
269
|
-
if (((_a = data.items) === null || _a === void 0 ? void 0 : _a.length) > 0 && !data.isPepRowData) {
|
|
270
|
-
data.items = data.items.map(item => this._genericListService.convertToPepRowData(item, data.dataView, this.uuidMapping));
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
return data;
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
updateDataList(fromIndex, toIndex, pageIndex = undefined) {
|
|
277
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
278
|
-
if (this._dataSource.update) {
|
|
279
|
-
this._loaderService.show();
|
|
280
|
-
const dataList = yield this._dataSource.update({
|
|
281
|
-
searchString: this.searchString || undefined,
|
|
282
|
-
filters: this._appliedFilters.length ? this._appliedFilters : undefined,
|
|
283
|
-
sorting: this._sorting || undefined,
|
|
284
|
-
fromIndex: fromIndex,
|
|
285
|
-
toIndex: toIndex,
|
|
286
|
-
pageIndex: pageIndex
|
|
287
|
-
});
|
|
288
|
-
this._loaderService.hide();
|
|
289
|
-
if ((dataList === null || dataList === void 0 ? void 0 : dataList.length) > 0) {
|
|
290
|
-
return dataList.map(item => this._genericListService.convertToPepRowData(item, this._dataView, this.uuidMapping));
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
return [];
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
return [];
|
|
298
|
-
}
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* loads virtual scroll items from api
|
|
303
|
-
*/
|
|
304
|
-
onLoadItems(event) {
|
|
305
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
306
|
-
const list = yield this.updateDataList(event.fromIndex, event.toIndex);
|
|
307
|
-
const convertedList = this._dataConvertorService.convertListData(list);
|
|
308
|
-
this.pepList.updateItems(convertedList, event);
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* loads paging bulk from api
|
|
313
|
-
*/
|
|
314
|
-
onLoadPage(event) {
|
|
315
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
316
|
-
const fromIndex = event.pageIndex * event.pageSize;
|
|
317
|
-
const toIndex = Math.min(fromIndex + event.pageSize - 1, this.totalRowCount - 1);
|
|
318
|
-
const list = yield this.updateDataList(fromIndex, toIndex, event.pageIndex);
|
|
319
|
-
const convertedList = this._dataConvertorService.convertListData(list);
|
|
320
|
-
this.pepList.updatePage(convertedList, event);
|
|
321
|
-
});
|
|
322
|
-
}
|
|
323
|
-
getItemById(id) {
|
|
324
|
-
if (this.pepList) {
|
|
325
|
-
return this._pepList.getItemDataByID(id);
|
|
326
|
-
}
|
|
327
|
-
else {
|
|
328
|
-
return null;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
getSelectedItems() {
|
|
332
|
-
if (this.pepList) {
|
|
333
|
-
return this._pepList.getSelectedItemsData();
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
return null;
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
getPageIndex() {
|
|
340
|
-
return this.pepList.pageIndex;
|
|
341
|
-
}
|
|
342
|
-
onActionItemClicked(action) {
|
|
343
|
-
const result = this.getMenuObjects();
|
|
344
|
-
if (result.success) {
|
|
345
|
-
this.menuHandlers[action.source.key](result.data);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
onSearchChanged(event) {
|
|
349
|
-
this.searchString = event.value;
|
|
350
|
-
this.initTable();
|
|
351
|
-
}
|
|
352
|
-
onSelectedItemsChanged(selectedRowsCount) {
|
|
353
|
-
//loading menu items after pep-list selected items are updated
|
|
354
|
-
setTimeout(() => {
|
|
355
|
-
this.loadMenuItems();
|
|
356
|
-
}, 0);
|
|
357
|
-
}
|
|
358
|
-
onCustomizeFieldClick(fieldClickEvent) {
|
|
359
|
-
this.fieldClick.emit(fieldClickEvent);
|
|
360
|
-
}
|
|
361
|
-
onBreadCrumbItemClick(event) {
|
|
362
|
-
this.breadCrumbItemClick.emit(event);
|
|
363
|
-
}
|
|
364
|
-
onValueChanged(event) {
|
|
365
|
-
this.valueChange.emit(event);
|
|
366
|
-
}
|
|
367
|
-
onSortingChange(event) {
|
|
368
|
-
this._sorting = event;
|
|
369
|
-
this.initTable();
|
|
370
|
-
}
|
|
371
|
-
onFiltersChange(filters) {
|
|
372
|
-
this._appliedFilters = filters;
|
|
373
|
-
this.initTable();
|
|
374
|
-
}
|
|
375
|
-
ngOnDestroy() {
|
|
376
|
-
if (this._resize$) {
|
|
377
|
-
this._resize$.unsubscribe();
|
|
378
|
-
}
|
|
379
|
-
if (this._loader$) {
|
|
380
|
-
this._loader$.unsubscribe();
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
GenericListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: GenericListComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.PepDataConvertorService }, { token: i1.PepLayoutService }, { token: i1.PepLoaderService }, { token: i2.PepGenericListService }], target: i0.ɵɵFactoryTarget.Component });
|
|
385
|
-
GenericListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: GenericListComponent, selector: "pep-generic-list", inputs: { dataSource: "dataSource", actions: "actions", uuidMapping: "uuidMapping", disabled: "disabled", addPadding: "addPadding", title: "title", description: "description", inline: "inline", showSearch: "showSearch", noDataFoundMsg: "noDataFoundMsg", selectionType: "selectionType", supportSorting: "supportSorting", pager: "pager", tableViewType: "tableViewType", zebraStripes: "zebraStripes", smartFilter: "smartFilter", showTopBar: "showTopBar", breadCrumbsItems: "breadCrumbsItems" }, outputs: { fieldClick: "fieldClick", valueChange: "valueChange", breadCrumbItemClick: "breadCrumbItemClick" }, providers: [PepGenericListService], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }, { propertyName: "pepListContainer", first: true, predicate: ["pepListContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate>\n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\">\n <pep-smart-filters title=\"Test filters\" [fields]=\"internalSmartFilter.fields\"\n [filters]=\"internalSmartFilter.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr;grid-template-columns:auto 1fr}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .header-area{grid-column:2/3;grid-row:1/2}.inline-container .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container .list-container{grid-column:2/3;grid-row:2/3}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}::ng-deep .pep-top-bar-container:not(.inline){margin-inline:var(--pep-spacing-xs, .25rem)}::ng-deep .pep-top-bar-container.inline{height:var(--pep-top-bar-field-height, 2.5rem)!important}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n"], components: [{ type: i3.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { type: i4.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }, { type: i5.PepListActionsComponent, selector: "pep-list-actions", inputs: ["actions", "sizeType", "xPosition", "hidden"], outputs: ["actionClick", "stateChange", "menuClick"] }, { type: i5.PepListTotalComponent, selector: "pep-list-total", inputs: ["totalRows", "totalAmount", "isMapView", "sizeType"] }, { type: i6.PepSearchComponent, selector: "pep-search", inputs: ["triggerOn", "autoCompleteTop", "sizeType", "autoCompleteValues", "shrink", "value", "searchControl", "useAsWebComponent"], outputs: ["search", "autocompleteChange", "stateChange"] }, { type: i7.PepSideBarComponent, selector: "pep-side-bar", inputs: ["ignoreResize", "showHeader", "showFooter", "useAsWebComponent"], outputs: ["stateChange"] }, { type: i8.PepSmartFiltersComponent, selector: "pep-smart-filters", inputs: ["title", "filters", "fields", "useAsWebComponent"], outputs: ["filtersChange", "fieldToggleChange"] }, { type: i9.PepBreadCrumbsComponent, selector: "pep-bread-crumbs", inputs: ["addSpacing", "items", "displayType"], outputs: ["itemClick"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
386
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: GenericListComponent, decorators: [{
|
|
387
|
-
type: Component,
|
|
388
|
-
args: [{
|
|
389
|
-
selector: 'pep-generic-list',
|
|
390
|
-
templateUrl: './generic-list.component.html',
|
|
391
|
-
styleUrls: ['./generic-list.component.scss'],
|
|
392
|
-
providers: [PepGenericListService]
|
|
393
|
-
}]
|
|
394
|
-
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.PepDataConvertorService }, { type: i1.PepLayoutService }, { type: i1.PepLoaderService }, { type: i2.PepGenericListService }]; }, propDecorators: { search: [{
|
|
395
|
-
type: ViewChild,
|
|
396
|
-
args: ['search']
|
|
397
|
-
}], pepListContainer: [{
|
|
398
|
-
type: ViewChild,
|
|
399
|
-
args: ['pepListContainer', { read: ViewContainerRef }]
|
|
400
|
-
}], dataSource: [{
|
|
401
|
-
type: Input
|
|
402
|
-
}], actions: [{
|
|
403
|
-
type: Input
|
|
404
|
-
}], uuidMapping: [{
|
|
405
|
-
type: Input
|
|
406
|
-
}], disabled: [{
|
|
407
|
-
type: Input
|
|
408
|
-
}], addPadding: [{
|
|
409
|
-
type: Input
|
|
410
|
-
}], title: [{
|
|
411
|
-
type: Input
|
|
412
|
-
}], description: [{
|
|
413
|
-
type: Input
|
|
414
|
-
}], inline: [{
|
|
415
|
-
type: Input
|
|
416
|
-
}], showSearch: [{
|
|
417
|
-
type: Input
|
|
418
|
-
}], noDataFoundMsg: [{
|
|
419
|
-
type: Input
|
|
420
|
-
}], selectionType: [{
|
|
421
|
-
type: Input
|
|
422
|
-
}], supportSorting: [{
|
|
423
|
-
type: Input
|
|
424
|
-
}], pager: [{
|
|
425
|
-
type: Input
|
|
426
|
-
}], tableViewType: [{
|
|
427
|
-
type: Input
|
|
428
|
-
}], zebraStripes: [{
|
|
429
|
-
type: Input
|
|
430
|
-
}], smartFilter: [{
|
|
431
|
-
type: Input
|
|
432
|
-
}], showTopBar: [{
|
|
433
|
-
type: Input
|
|
434
|
-
}], breadCrumbsItems: [{
|
|
435
|
-
type: Input
|
|
436
|
-
}], fieldClick: [{
|
|
437
|
-
type: Output
|
|
438
|
-
}], valueChange: [{
|
|
439
|
-
type: Output
|
|
440
|
-
}], breadCrumbItemClick: [{
|
|
441
|
-
type: Output
|
|
442
|
-
}] } });
|
|
443
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtbGlzdC9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1saXN0L2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osZ0JBQWdCLEVBRW5CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLHlEQUF5RDtBQUN6RCxPQUFPLEVBSUgsT0FBTyxFQUNQLFNBQVMsRUFFWixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUNILGdCQUFnQixFQUNoQixnQkFBZ0IsRUFJaEIsaUJBQWlCLEVBR3BCLE1BQU0sOEJBQThCLENBQUM7QUF3QnRDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7QUFhL0QsTUFBTSxPQUFPLG9CQUFvQjtJQWlJN0IsWUFDWSxTQUFtQyxFQUNuQyxxQkFBOEMsRUFDOUMsY0FBZ0MsRUFDaEMsY0FBZ0M7SUFDeEMsd0NBQXdDO0lBQ2hDLG1CQUEwQztRQUwxQyxjQUFTLEdBQVQsU0FBUyxDQUEwQjtRQUNuQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXlCO1FBQzlDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFFaEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF1QjtRQTlIOUMsZ0JBQVcs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c0JBREosS0FBSztnQkFNTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlGLFdBQVc7c0JBRGQsS0FBSztnQkFPTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxtQkFBbUI7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vL2ltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gICAgUGVwRGF0YUNvbnZlcnRvclNlcnZpY2UsXG4gICAgUGVwTGF5b3V0U2VydmljZSxcbiAgICBPYmplY3RzRGF0YVJvdyxcbiAgICBQZXBHdWlkLFxuICAgIFVJQ29udHJvbCxcbiAgICBQZXBMb2FkZXJTZXJ2aWNlXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVBlcEZvcm1GaWVsZENsaWNrRXZlbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9mb3JtJztcbmltcG9ydCB7XG4gICAgUGVwTGlzdENvbXBvbmVudCxcbiAgICBQZXBTZWxlY3Rpb25EYXRhLFxuICAgIElQZXBMaXN0TG9hZFBhZ2VFdmVudCxcbiAgICBQZXBMaXN0U2VsZWN0aW9uVHlwZSxcbiAgICBJUGVwTGlzdFNvcnRpbmdDaGFuZ2VFdmVudCxcbiAgICBERUZBVUxUX1BBR0VfU0laRSxcbiAgICBJUGVwTGlzdExvYWRJdGVtc0V2ZW50LFxuICAgIFBlcExpc3RUYWJsZVZpZXdUeXBlXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2xpc3QnO1xuaW1wb3J0IHtcbiAgICBQZXBNZW51SXRlbSxcbiAgICBJUGVwTWVudUl0ZW1DbGlja0V2ZW50LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9tZW51JztcbmltcG9ydCB7IElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZm9ybSc7XG5pbXBvcnQge1xuICAgIFBlcEJyZWFkQ3J1bWJJdGVtLFxuICAgIElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnRcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvYnJlYWQtY3J1bWJzJztcbmltcG9ydCB7IElQZXBTZWFyY2hDbGlja0V2ZW50LCBQZXBTZWFyY2hDb21wb25lbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zZWFyY2gnO1xuXG5pbXBvcnQge1xuICAgIERhdGFWaWV3LFxuICAgIEdyaWREYXRhVmlld1xufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsvZGlzdC9lbnRpdGllcy9kYXRhLXZpZXcnO1xuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0xpc3RJbml0RGF0YSxcbiAgICBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlLFxuICAgIElQZXBHZW5lcmljTGlzdFBhZ2VyLFxuICAgIElQZXBHZW5lcmljTGlzdEFjdGlvbnMsXG4gICAgSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIsXG4gICAgSVBlcEdlbmVyaWNMaXN0TGlzdElucHV0c1xufSBmcm9tICcuL2dlbmVyaWMtbGlzdC5tb2RlbCc7XG5pbXBvcnQgeyBQZXBHZW5lcmljTGlzdFNlcnZpY2UgfSBmcm9tICcuL2dlbmVyaWMtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFWaWV3Q29udmVydGVyIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL2RhdGEtdmlld3MnO1xuaW1wb3J0IHtcbiAgICBJUGVwU21hcnRGaWx0ZXJEYXRhLFxuICAgIFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWdlbmVyaWMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbUGVwR2VuZXJpY0xpc3RTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoJykgc2VhcmNoOiBQZXBTZWFyY2hDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICBwcml2YXRlIF9wZXBMaXN0Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xuICAgIEBWaWV3Q2hpbGQoJ3BlcExpc3RDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICBzZXQgcGVwTGlzdENvbnRhaW5lcih2YWw6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgdGhpcy5fcGVwTGlzdENvbnRhaW5lciA9IHZhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kYXRhU291cmNlOiBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlID0ge1xuICAgICAgICBpbml0OiBhc3luYyAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZpZXc6IHtcbiAgICAgICAgICAgICAgICAgICAgVHlwZTogJ0dyaWQnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50OiAtMSxcbiAgICAgICAgICAgICAgICBpdGVtczogW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhU291cmNlKHZhbDogSVBlcEdlbmVyaWNMaXN0RGF0YVNvdXJjZSkge1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gdmFsO1xuICAgICAgICB0aGlzLl9zb3J0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmluaXRTZWFyY2goKTtcbiAgICAgICAgdGhpcy5pbml0VGFibGUoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGFjdGlvbnM6IElQZXBHZW5lcmljTGlzdEFjdGlvbnMgPSB7XG4gICAgICAgIGdldDogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgQElucHV0KClcbiAgICB1dWlkTWFwcGluZyA9ICdrZXknO1xuXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBhZGRQYWRkaW5nID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIGRlc2NyaXB0aW9uID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIGlubGluZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93U2VhcmNoID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIG5vRGF0YUZvdW5kTXNnID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvblR5cGU6IFBlcExpc3RTZWxlY3Rpb25UeXBlID0gJ211bHRpJztcblxuICAgIEBJbnB1dCgpXG4gICAgc3VwcG9ydFNvcnRpbmcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcGFnZXI6IElQZXBHZW5lcmljTGlzdFBhZ2VyID0ge1xuICAgICAgICB0eXBlOiAnc2Nyb2xsJ1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgdGFibGVWaWV3VHlwZTogUGVwTGlzdFRhYmxlVmlld1R5cGUgPSAncmVndWxhcic7XG5cbiAgICBASW5wdXQoKVxuICAgIHplYnJhU3RyaXBlcyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgc21hcnRGaWx0ZXIodmFsOiBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcikge1xuICAgICAgICB0aGlzLmludGVybmFsU21hcnRGaWx0ZXIgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvU21hcnRGaWx0ZXIodmFsKTtcbiAgICAgICAgdGhpcy5zaG93U21hcnRGaWx0ZXIgPSB0aGlzLmludGVybmFsU21hcnRGaWx0ZXIuZmllbGRzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzaG93VG9wQmFyID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGJyZWFkQ3J1bWJzSXRlbXM6IFBlcEJyZWFkQ3J1bWJJdGVtW10gPSBuZXcgQXJyYXk8UGVwQnJlYWRDcnVtYkl0ZW0+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBmaWVsZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGJyZWFkQ3J1bWJJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBzZXQgcGVwTGlzdCh2YWw6IFBlcExpc3RDb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5fcGVwTGlzdCA9IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgcGVwTGlzdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BlcExpc3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVzaXplJDogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgX2xvYWRlciQ6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIHByaXZhdGUgX2RhdGFWaWV3OiBEYXRhVmlldyA9IHtcbiAgICAgICAgVHlwZTogJ0dyaWQnXG4gICAgfTtcbiAgICBwcml2YXRlIF9saXN0SW5wdXRzOiBhbnk7XG4gICAgcHJpdmF0ZSBfcGVwTGlzdDogYW55O1xuICAgIHRvdGFsUm93Q291bnQgPSAtMTtcbiAgICBzZWFyY2hTdHJpbmcgPSAnJztcbiAgICBzaG93U21hcnRGaWx0ZXIgPSBmYWxzZTtcbiAgICBpbnRlcm5hbFNtYXJ0RmlsdGVyOiB7XG4gICAgICAgIGZpZWxkczogUGVwU21hcnRGaWx0ZXJCYXNlRmllbGRbXSxcbiAgICAgICAgZGF0YTogSVBlcFNtYXJ0RmlsdGVyRGF0YVtdXG4gICAgfSA9IHtcbiAgICAgICAgICAgIGZpZWxkczogW10sXG4gICAgICAgICAgICBkYXRhOiBbXVxuICAgICAgICB9O1xuICAgIHByaXZhdGUgX2FwcGxpZWRGaWx0ZXJzOiBJUGVwU21hcnRGaWx0ZXJEYXRhW10gPSBbXTtcbiAgICBwcml2YXRlIF9zb3J0aW5nOiBJUGVwTGlzdFNvcnRpbmdDaGFuZ2VFdmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIG1lbnVIYW5kbGVyczogeyBba2V5OiBzdHJpbmddOiAob2JqOiBhbnkpID0+IFByb21pc2U8dm9pZD4gfSA9IHt9O1xuICAgIG1lbnVBY3Rpb25zOiBBcnJheTxQZXBNZW51SXRlbT4gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9yZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIF9kYXRhQ29udmVydG9yU2VydmljZTogUGVwRGF0YUNvbnZlcnRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2xheW91dFNlcnZpY2U6IFBlcExheW91dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2xvYWRlclNlcnZpY2U6IFBlcExvYWRlclNlcnZpY2UsXG4gICAgICAgIC8vIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZ2VuZXJpY0xpc3RTZXJ2aWNlOiBQZXBHZW5lcmljTGlzdFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5fcmVzaXplJCA9IHRoaXMuX2xheW91dFNlcnZpY2Uub25SZXNpemUkLnBpcGUoKS5zdWJzY3JpYmUoKHNpemUpID0+IHtcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9sb2FkZXIkID0gdGhpcy5fbG9hZGVyU2VydmljZS5vbkNoYW5nZWQkLnN1YnNjcmliZSgoc3RhdHVzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAvL1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXRUYWJsZSgpIHtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX3BlcExpc3RDb250YWluZXIpIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZXBMaXN0Q29udGFpbmVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVwTGlzdENvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuX3Jlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFBlcExpc3RDb21wb25lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuX3BlcExpc3RDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuICAgICAgICAgICAgICAgIHRoaXMucGVwTGlzdCA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcblxuICAgICAgICAgICAgICAgIC8vbWVyZ2Ugc2VsZWN0b3IgaW5wdXRzIHdpdGggY2FsbGJhY2sgaW5wdXRzXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkVGFibGVJbnB1dHMoKTtcblxuICAgICAgICAgICAgICAgIGxldCBmcm9tSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIGxldCB0b0luZGV4ID0gMDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9saXN0SW5wdXRzLnBhZ2VyLnR5cGUgPT09ICdwYWdlcycpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbUluZGV4ID0gdGhpcy5fbGlzdElucHV0cy5wYWdlci5zaXplICogdGhpcy5fbGlzdElucHV0cy5wYWdlci5pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdG9JbmRleCA9IGZyb21JbmRleCArICh0aGlzLl9saXN0SW5wdXRzLnBhZ2VyLnNpemUgfHwgREVGQVVMVF9QQUdFX1NJWkUpIC0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b0luZGV4ID0gMTAwOy8vVE8gRE8gLSBnZXQgdmFsdWUgZnJvbSAtIHRoaXMuY3VzdG9tTGlzdC5nZXRUb3BJdGVtcygpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubG9hZERhdGEoZnJvbUluZGV4LCB0b0luZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUm93Q291bnQgPSBkYXRhPy50b3RhbENvdW50IHx8IDA7XG5cbiAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uudmlld1R5cGUgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuZ2V0TGlzdFZpZXdUeXBlKHRoaXMuX2RhdGFWaWV3LlR5cGUpO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS50YWJsZVZpZXdUeXBlID0gdGhpcy5fbGlzdElucHV0cy50YWJsZVZpZXdUeXBlO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS56ZWJyYVN0cmlwZXMgPSB0aGlzLl9saXN0SW5wdXRzLnplYnJhU3RyaXBlcztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubG9ja0l0ZW1Jbm5lckV2ZW50cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zdXBwb3J0U29ydGluZyA9IHRoaXMuX2xpc3RJbnB1dHMuc3VwcG9ydFNvcnRpbmc7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGlvblR5cGVGb3JBY3Rpb25zID0gdGhpcy5fbGlzdElucHV0cy5zZWxlY3Rpb25UeXBlO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zaG93Q2FyZFNlbGVjdGlvbiA9IHRoaXMuX2xpc3RJbnB1dHMuc2VsZWN0aW9uVHlwZSAhPT0gJ25vbmUnO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYWdlclR5cGUgPSB0aGlzLl9saXN0SW5wdXRzLnBhZ2VyLnR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2xpc3RJbnB1dHMucGFnZXIudHlwZSA9PT0gJ3BhZ2VzJykge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZVNpemUgPSB0aGlzLl9saXN0SW5wdXRzLnBhZ2VyPy5zaXplIHx8IERFRkFVTFRfUEFHRV9TSVpFO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZUluZGV4ID0gdGhpcy5fbGlzdElucHV0cy5wYWdlcj8uaW5kZXggfHwgMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm5vRGF0YUZvdW5kTXNnID0gdGhpcy5fbGlzdElucHV0cy5ub0RhdGFGb3VuZE1zZztcbiAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZmllbGRDbGljay5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ3VzdG9taXplRmllbGRDbGljaygkZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3RlZEl0ZW1zQ2hhbmdlLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RlZEl0ZW1zQ2hhbmdlZCgkZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sb2FkSXRlbXMuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkxvYWRJdGVtcygkZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sb2FkUGFnZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9hZFBhZ2UoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UudmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZCgkZXZlbnQpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNvcnRpbmdDaGFuZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNvcnRpbmdDaGFuZ2UoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBsZXQgY29udmVydGVkTGlzdDogT2JqZWN0c0RhdGFSb3dbXSA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLml0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZExpc3QgPSB0aGlzLl9kYXRhQ29udmVydG9yU2VydmljZS5jb252ZXJ0TGlzdERhdGEoZGF0YS5pdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlDb250cm9sID0gdGhpcy5nZXRVaUNvbnRyb2woRGF0YVZpZXdDb252ZXJ0ZXIudG9VSUNvbnRyb2xEYXRhKGRhdGEuZGF0YVZpZXcpKTtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmluaXRMaXN0RGF0YSh1aUNvbnRyb2wsIGRhdGEudG90YWxDb3VudCwgY29udmVydGVkTGlzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyBpbnB1dHMgaW4gY2FzZSB0aGV5IGFyZSBwcm92aWRlZCBhbmQgbWVyZ2Ugd2l0aCBzZWxlY3RvciBpbnB1dHNcbiAgICAgKiBAcmV0dXJucyBtZXJnZWQgcGVwLWxpc3QgaW5wdXRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkVGFibGVJbnB1dHMoKSB7XG4gICAgICAgIHRoaXMuX2xpc3RJbnB1dHMgPSB7XG4gICAgICAgICAgICBzdXBwb3J0U29ydGluZzogdGhpcy5zdXBwb3J0U29ydGluZyxcbiAgICAgICAgICAgIHNlbGVjdGlvblR5cGU6IHRoaXMuc2VsZWN0aW9uVHlwZSxcbiAgICAgICAgICAgIHBhZ2VyOiB0aGlzLnBhZ2VyLFxuICAgICAgICAgICAgbm9EYXRhRm91bmRNc2c6IHRoaXMubm9EYXRhRm91bmRNc2csXG4gICAgICAgICAgICB0YWJsZVZpZXdUeXBlOiB0aGlzLnRhYmxlVmlld1R5cGUsXG4gICAgICAgICAgICB6ZWJyYVN0cmlwZXM6IHRoaXMuemVicmFTdHJpcGVzXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLl9kYXRhU291cmNlLmlucHV0cykge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5fZGF0YVNvdXJjZS5pbnB1dHMpLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuaGFzUHJvcGVydHkodGhpcy5fbGlzdElucHV0cywgaXRlbVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGlzdElucHV0c1tpdGVtWzBdXSA9IGl0ZW1bMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFVpQ29udHJvbChkYXRhOiBhbnkpOiBVSUNvbnRyb2wge1xuICAgICAgICBjb25zdCB1aUNvbnRyb2wgPSBuZXcgVUlDb250cm9sKCk7XG4gICAgICAgIHVpQ29udHJvbC5Db250cm9sRmllbGRzID0gW107XG5cbiAgICAgICAgaWYgKGRhdGE/LkNvbnRyb2xGaWVsZHMpIHtcbiAgICAgICAgICAgIHVpQ29udHJvbC5Db250cm9sRmllbGRzID0gZGF0YS5Db250cm9sRmllbGRzLm1hcCgoZmllbGQ6IGFueSkgPT4gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmNvbnZlcnRUb1VpQ29udHJvbEZpZWxkKGZpZWxkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdWlDb250cm9sO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZE1lbnVJdGVtcygpOiB2b2lkIHsgLy9UT0RPXG4gICAgICAgIGlmICh0aGlzLl9saXN0SW5wdXRzLnNlbGVjdGlvblR5cGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5nZXRNZW51QWN0aW9ucygpLnRoZW4oXG4gICAgICAgICAgICAgICAgeCA9PiB0aGlzLm1lbnVBY3Rpb25zID0geFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0TWVudUFjdGlvbnMoKTogUHJvbWlzZTxQZXBNZW51SXRlbVtdPiB7XG4gICAgICAgIGNvbnN0IHJlczogUGVwTWVudUl0ZW1bXSA9IFtdO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldE1lbnVPYmplY3RzKCk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IGF3YWl0IHRoaXMuYWN0aW9ucy5nZXQocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5tZW51SGFuZGxlcnMgPSB7fTtcbiAgICAgICAgICAgIGFjdGlvbnM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IFBlcEd1aWQubmV3R3VpZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzW3V1aWRdID0gaXRlbS5oYW5kbGVyO1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiB1dWlkLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWVudU9iamVjdHMoKSB7XG4gICAgICAgIGNvbnN0IG1lbnVPYmplY3RzOiBhbnkgPSB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IG5ldyBQZXBTZWxlY3Rpb25EYXRhKClcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5wZXBMaXN0KSB7XG4gICAgICAgICAgICBtZW51T2JqZWN0cy5zdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIG1lbnVPYmplY3RzLmRhdGEgPSB0aGlzLnBlcExpc3QuZ2V0U2VsZWN0ZWRJdGVtc0RhdGEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZW51T2JqZWN0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgICAgIHRoaXMuc2VhcmNoPy5pbml0U2VhcmNoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkRGF0YShmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyKTogUHJvbWlzZTxJUGVwR2VuZXJpY0xpc3RJbml0RGF0YT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRlclNlcnZpY2Uuc2hvdygpOyAgICBcbiAgICAgICAgfSwgNTApO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgZGF0YTogSVBlcEdlbmVyaWNMaXN0SW5pdERhdGEgPSBhd2FpdCB0aGlzLl9kYXRhU291cmNlLmluaXQoe1xuICAgICAgICAgICAgc2VhcmNoU3RyaW5nOiB0aGlzLnNlYXJjaFN0cmluZyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLl9hcHBsaWVkRmlsdGVycy5sZW5ndGggPyB0aGlzLl9hcHBsaWVkRmlsdGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNvcnRpbmc6IHRoaXMuX3NvcnRpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZnJvbUluZGV4OiBmcm9tSW5kZXgsXG4gICAgICAgICAgICB0b0luZGV4OiB0b0luZGV4XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRlclNlcnZpY2UuaGlkZSgpOyAgICBcbiAgICAgICAgfSwgNTApO1xuICAgICAgICAvL3RoaXMuX2xvYWRlclNlcnZpY2UuaGlkZSgpO1xuXG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhVmlldyA9IGRhdGEuZGF0YVZpZXc7XG5cbiAgICAgICAgICAgIGlmIChkYXRhLml0ZW1zPy5sZW5ndGggPiAwICYmICFkYXRhLmlzUGVwUm93RGF0YSkge1xuICAgICAgICAgICAgICAgIGRhdGEuaXRlbXMgPSBkYXRhLml0ZW1zLm1hcChpdGVtID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9QZXBSb3dEYXRhKGl0ZW0sIGRhdGEuZGF0YVZpZXcsIHRoaXMudXVpZE1hcHBpbmcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBhc3luYyB1cGRhdGVEYXRhTGlzdChmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyLCBwYWdlSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZS51cGRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRlclNlcnZpY2Uuc2hvdygpO1xuICAgICAgICAgICAgY29uc3QgZGF0YUxpc3QgPSBhd2FpdCB0aGlzLl9kYXRhU291cmNlLnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgc2VhcmNoU3RyaW5nOiB0aGlzLnNlYXJjaFN0cmluZyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogdGhpcy5fYXBwbGllZEZpbHRlcnMubGVuZ3RoID8gdGhpcy5fYXBwbGllZEZpbHRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc29ydGluZzogdGhpcy5fc29ydGluZyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZnJvbUluZGV4OiBmcm9tSW5kZXgsXG4gICAgICAgICAgICAgICAgdG9JbmRleDogdG9JbmRleCxcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IHBhZ2VJbmRleFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLmhpZGUoKTtcblxuICAgICAgICAgICAgaWYgKGRhdGFMaXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFMaXN0Lm1hcChpdGVtID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9QZXBSb3dEYXRhKGl0ZW0sIHRoaXMuX2RhdGFWaWV3LCB0aGlzLnV1aWRNYXBwaW5nKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWRzIHZpcnR1YWwgc2Nyb2xsIGl0ZW1zIGZyb20gYXBpXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBvbkxvYWRJdGVtcyhldmVudDogSVBlcExpc3RMb2FkSXRlbXNFdmVudCkge1xuICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgdGhpcy51cGRhdGVEYXRhTGlzdChldmVudC5mcm9tSW5kZXgsIGV2ZW50LnRvSW5kZXgpO1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGxpc3QpO1xuICAgICAgICB0aGlzLnBlcExpc3QudXBkYXRlSXRlbXMoY29udmVydGVkTGlzdCwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWRzIHBhZ2luZyBidWxrIGZyb20gYXBpXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBvbkxvYWRQYWdlKGV2ZW50OiBJUGVwTGlzdExvYWRQYWdlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZnJvbUluZGV4ID0gZXZlbnQucGFnZUluZGV4ICogZXZlbnQucGFnZVNpemU7XG4gICAgICAgIGNvbnN0IHRvSW5kZXggPSBNYXRoLm1pbihmcm9tSW5kZXggKyBldmVudC5wYWdlU2l6ZSAtIDEsIHRoaXMudG90YWxSb3dDb3VudCAtIDEpO1xuICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgdGhpcy51cGRhdGVEYXRhTGlzdChmcm9tSW5kZXgsIHRvSW5kZXgsIGV2ZW50LnBhZ2VJbmRleCk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZExpc3QgPSB0aGlzLl9kYXRhQ29udmVydG9yU2VydmljZS5jb252ZXJ0TGlzdERhdGEobGlzdCk7XG4gICAgICAgIHRoaXMucGVwTGlzdC51cGRhdGVQYWdlKGNvbnZlcnRlZExpc3QsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBnZXRJdGVtQnlJZChpZDogc3RyaW5nKTogT2JqZWN0c0RhdGFSb3cgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMucGVwTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BlcExpc3QuZ2V0SXRlbURhdGFCeUlEKGlkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRJdGVtcygpOiBQZXBTZWxlY3Rpb25EYXRhIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnBlcExpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wZXBMaXN0LmdldFNlbGVjdGVkSXRlbXNEYXRhKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhZ2VJbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVwTGlzdC5wYWdlSW5kZXg7XG4gICAgfVxuXG4gICAgb25BY3Rpb25JdGVtQ2xpY2tlZChhY3Rpb246IElQZXBNZW51SXRlbUNsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRNZW51T2JqZWN0cygpO1xuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzW2FjdGlvbi5zb3VyY2Uua2V5XShyZXN1bHQuZGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlYXJjaENoYW5nZWQoZXZlbnQ6IElQZXBTZWFyY2hDbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuaW5pdFRhYmxlKCk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RlZEl0ZW1zQ2hhbmdlZChzZWxlY3RlZFJvd3NDb3VudDogbnVtYmVyKSB7XG4gICAgICAgIC8vbG9hZGluZyBtZW51IGl0ZW1zIGFmdGVyIHBlcC1saXN0IHNlbGVjdGVkIGl0ZW1zIGFyZSB1cGRhdGVkXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkTWVudUl0ZW1zKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIG9uQ3VzdG9taXplRmllbGRDbGljayhmaWVsZENsaWNrRXZlbnQ6IElQZXBGb3JtRmllbGRDbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuZmllbGRDbGljay5lbWl0KGZpZWxkQ2xpY2tFdmVudCk7XG4gICAgfVxuXG4gICAgb25CcmVhZENydW1iSXRlbUNsaWNrKGV2ZW50OiBJUGVwQnJlYWRDcnVtYkl0ZW1DbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuYnJlYWRDcnVtYkl0ZW1DbGljay5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlZChldmVudDogSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblNvcnRpbmdDaGFuZ2UoZXZlbnQ6IElQZXBMaXN0U29ydGluZ0NoYW5nZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuX3NvcnRpbmcgPSBldmVudDtcbiAgICAgICAgdGhpcy5pbml0VGFibGUoKTtcbiAgICB9XG5cbiAgICBvbkZpbHRlcnNDaGFuZ2UoZmlsdGVyczogSVBlcFNtYXJ0RmlsdGVyRGF0YVtdKSB7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRGaWx0ZXJzID0gZmlsdGVycztcbiAgICAgICAgdGhpcy5pbml0VGFibGUoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jlc2l6ZSQpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fbG9hZGVyJCkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGVyJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCI8ZGl2ICpuZ0lmPVwiaW5saW5lXCIgY2xhc3M9XCJpbmxpbmUtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyAnYWRkLXBhZGRpbmcnOiBhZGRQYWRkaW5nIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWFyZWFcIiA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VG9wQmFyXCIgY2xhc3M9XCJpbmxpbmUtdG9wLWJhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BCYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1kZXNjcmlwdGlvblwiPnt7ZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkQ3J1bWJzSXRlbXMubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJlYWRDcnVtYnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NtYXJ0RmlsdGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzbWFydEZpbHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48cGVwLXBhZ2UtbGF5b3V0ICpuZ0lmPVwiIWlubGluZVwiIGNsYXNzPVwibm9uZS1pbmxpbmVcIiBbYWRkUGFkZGluZ109XCJhZGRQYWRkaW5nXCIgW3Nob3dTaGFkb3ddPVwic2hvd1NtYXJ0RmlsdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTbWFydEZpbHRlclwiIHBlcC1zaWRlLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzbWFydEZpbHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3BCYXJcIiBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BCYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXNjcmlwdGlvblwiIHBlcC10b3AtYXJlYT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZGVzY3JpcHRpb25cIj57e2Rlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRDcnVtYnNJdGVtcy5sZW5ndGhcIiBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmVhZENydW1ic1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBwZXAtbWFpbi1hcmVhIGNsYXNzPVwibWFpbi1hcmVhLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L3BlcC1wYWdlLWxheW91dD5cblxuPG5nLXRlbXBsYXRlICN0b3BCYXJUZW1wbGF0ZT5cbiAgICA8cGVwLXRvcC1iYXIgW3RpdGxlXT1cInRpdGxlXCIgW2lubGluZV09XCJpbmxpbmVcIj5cbiAgICAgICAgPGRpdiBoZWFkZXItc3RhcnQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsZWZ0LWJ1dHRvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBoZWFkZXItZW5kLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHQtYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgZm9vdGVyLXN0YXJ0LWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGVmdC1ib3R0b20tYXJlYV1cIj48L25nLWNvbnRlbnQ+ICAgICAgICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZvb3Rlci1lbmQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltyaWdodC1ib3R0b20tYXJlYV1cIj48L25nLWNvbnRlbnQ+ICAgICBcbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8cGVwLWxpc3QtYWN0aW9ucyAqbmdJZj1cIm1lbnVBY3Rpb25zLmxlbmd0aCA+IDBcIiBbc2l6ZVR5cGVdPVwiaW5saW5lID8gJ3NtJyA6ICdtZCdcIiBbYWN0aW9uc109XCJtZW51QWN0aW9uc1wiXG4gICAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2tlZCgkZXZlbnQpXCI+PC9wZXAtbGlzdC1hY3Rpb25zPlxuICAgICAgICA8cGVwLWxpc3QtdG90YWwgW3NpemVUeXBlXT1cImlubGluZSA/ICdzbScgOiAnbWQnXCIgW3RvdGFsUm93c109XCJ0b3RhbFJvd0NvdW50XCI+XG4gICAgICAgIDwvcGVwLWxpc3QtdG90YWw+XG4gICAgICAgIDxwZXAtc2VhcmNoICNzZWFyY2ggKm5nSWY9XCJzaG93U2VhcmNoXCIgW3ZhbHVlXT1cInNlYXJjaFN0cmluZ1wiIFtzaXplVHlwZV09XCJpbmxpbmUgPyAnc20nIDogJ21kJ1wiXG4gICAgICAgICAgICAoc2VhcmNoKT1cIm9uU2VhcmNoQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvcGVwLXNlYXJjaD5cbiAgICA8L3BlcC10b3AtYmFyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzbWFydEZpbHRlclRlbXBsYXRlPlxuICAgIDxwZXAtc2lkZS1iYXIgI3NpZGVOYXYgW25nQ2xhc3NdPVwieydzbWFydC1maWx0ZXItYXJlYSc6IGlubGluZX1cIj5cbiAgICAgICAgPHBlcC1zbWFydC1maWx0ZXJzIHRpdGxlPVwiVGVzdCBmaWx0ZXJzXCIgW2ZpZWxkc109XCJpbnRlcm5hbFNtYXJ0RmlsdGVyLmZpZWxkc1wiXG4gICAgICAgICAgICBbZmlsdGVyc109XCJpbnRlcm5hbFNtYXJ0RmlsdGVyLmRhdGFcIiAoZmlsdGVyc0NoYW5nZSk9XCJvbkZpbHRlcnNDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L3BlcC1zbWFydC1maWx0ZXJzPlxuICAgIDwvcGVwLXNpZGUtYmFyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNicmVhZENydW1ic1RlbXBsYXRlPlxuICAgIDxwZXAtYnJlYWQtY3J1bWJzIGNsYXNzPVwiYnJlYWQtY3J1bWJzXCIgW2l0ZW1zXT1cImJyZWFkQ3J1bWJzSXRlbXNcIiBbYWRkU3BhY2luZ109XCJ0cnVlXCIgW2Rpc3BsYXlUeXBlXT1cIidpdGVtcydcIlxuICAgICAgICAoaXRlbUNsaWNrKT1cIm9uQnJlYWRDcnVtYkl0ZW1DbGljaygkZXZlbnQpXCI+PC9wZXAtYnJlYWQtY3J1bWJzPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsaXN0VGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3BlcExpc3RDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|