@pepperi-addons/ngx-composite-lib 0.4.2-beta.47 → 0.4.2-beta.48

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.
@@ -203,6 +203,7 @@ export class GenericListComponent {
203
203
  this.onSortingChange($event);
204
204
  });
205
205
  componentRef.instance.listLoad.subscribe(($event) => {
206
+ this.onSelectedItemsChanged(this._pepList.selectedItems.length);
206
207
  this.onListLoad();
207
208
  });
208
209
  let convertedList = [];
@@ -512,4 +513,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
512
513
  }], listLoad: [{
513
514
  type: Output
514
515
  }] } });
515
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtbGlzdC9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1saXN0L2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUlILE9BQU8sRUFDUCxTQUFTLEVBSVosTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFFSCxnQkFBZ0IsRUFJaEIsaUJBQWlCLEVBS3BCLE1BQU0sOEJBQThCLENBQUM7QUF5QnRDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWMvRCxNQUFNLE9BQU8sb0JBQW9CO0lBNEo3QixZQUNZLHFCQUE4QyxFQUM5QyxjQUFnQyxFQUNoQyxjQUFnQyxFQUNoQyxVQUE0QixFQUM1QixtQkFBMEMsRUFDMUMsZUFBa0M7UUFMbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QjtRQUM5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7UUFDMUMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBeEp0QyxnQkFB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QkFJTixVQUFVO3NCQURULE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLG1CQUFtQjtzQkFEbEIsTUFBTTtnQkFJUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFJUCxRQUFRO3NCQURQLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gICAgUGVwRGF0YUNvbnZlcnRvclNlcnZpY2UsXG4gICAgUGVwTGF5b3V0U2VydmljZSxcbiAgICBPYmplY3RzRGF0YVJvdyxcbiAgICBQZXBHdWlkLFxuICAgIFVJQ29udHJvbCxcbiAgICBQZXBMb2FkZXJTZXJ2aWNlLFxuICAgIFBlcFJvd0RhdGEsXG4gICAgUGVwU2Vzc2lvblNlcnZpY2Vcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2Zvcm0nO1xuaW1wb3J0IHtcbiAgICBQZXBMaXN0Q29tcG9uZW50LFxuICAgIFBlcFNlbGVjdGlvbkRhdGEsXG4gICAgSVBlcExpc3RMb2FkUGFnZUV2ZW50LFxuICAgIFBlcExpc3RTZWxlY3Rpb25UeXBlLFxuICAgIElQZXBMaXN0U29ydGluZ0NoYW5nZUV2ZW50LFxuICAgIERFRkFVTFRfUEFHRV9TSVpFLFxuICAgIElQZXBMaXN0TG9hZEl0ZW1zRXZlbnQsXG4gICAgUGVwTGlzdFRhYmxlVmlld1R5cGUsXG4gICAgSVBlcExpc3RTb3J0aW5nRGF0YSxcbiAgICBJUGVwTGlzdFN0YXJ0SW5kZXhDaGFuZ2VFdmVudFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9saXN0JztcbmltcG9ydCB7XG4gICAgUGVwTWVudUl0ZW0sXG4gICAgSVBlcE1lbnVJdGVtQ2xpY2tFdmVudCxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvbWVudSc7XG5pbXBvcnQgeyBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2Zvcm0nO1xuaW1wb3J0IHtcbiAgICBQZXBCcmVhZENydW1iSXRlbSxcbiAgICBJUGVwQnJlYWRDcnVtYkl0ZW1DbGlja0V2ZW50XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2JyZWFkLWNydW1icyc7XG5pbXBvcnQgeyBJUGVwU2VhcmNoQ2xpY2tFdmVudCwgUGVwU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvc2VhcmNoJztcblxuaW1wb3J0IHtcbiAgICBEYXRhVmlldyxcbiAgICBHcmlkRGF0YVZpZXdcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL3BhcGktc2RrL2Rpc3QvZW50aXRpZXMvZGF0YS12aWV3JztcbmltcG9ydCB7XG4gICAgSVBlcEdlbmVyaWNMaXN0SW5pdERhdGEsXG4gICAgSVBlcEdlbmVyaWNMaXN0RGF0YVNvdXJjZSxcbiAgICBJUGVwR2VuZXJpY0xpc3RQYWdlcixcbiAgICBJUGVwR2VuZXJpY0xpc3RBY3Rpb25zLFxuICAgIElQZXBHZW5lcmljTGlzdFNtYXJ0RmlsdGVyLFxuICAgIElQZXBTbWFydEZpbHRlcnMsXG4gICAgSVBlcEdlbmVyaWNMaXN0RW1wdHlTdGF0ZVxufSBmcm9tICcuL2dlbmVyaWMtbGlzdC5tb2RlbCc7XG5pbXBvcnQgeyBQZXBHZW5lcmljTGlzdFNlcnZpY2UgfSBmcm9tICcuL2dlbmVyaWMtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFWaWV3Q29udmVydGVyIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL2RhdGEtdmlld3MnO1xuaW1wb3J0IHtcbiAgICBJUGVwU21hcnRGaWx0ZXJEYXRhLFxuICAgIFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkLFxuICAgIFBlcFNtYXJ0RmlsdGVyc0NvbXBvbmVudFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zbWFydC1maWx0ZXJzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1nZW5lcmljLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2dlbmVyaWMtbGlzdC5jb21wb25lbnQuc2NzcycsICcuL2dlbmVyaWMtbGlzdC5jb21wb25lbnQudGhlbWUuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1BlcEdlbmVyaWNMaXN0U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaCcpIHNlYXJjaDogUGVwU2VhcmNoQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICAgIEBWaWV3Q2hpbGQoJ3NtYXJ0RmlsdGVyc0NvbXBvbmVudCcpIHNtYXJ0RmlsdGVyc0NvbXBvbmVudDogUGVwU21hcnRGaWx0ZXJzQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgcHJpdmF0ZSBfcGVwTGlzdENvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcbiAgICBAVmlld0NoaWxkKCdwZXBMaXN0Q29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICAgc2V0IHBlcExpc3RDb250YWluZXIodmFsOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIHRoaXMuX3BlcExpc3RDb250YWluZXIgPSB2YWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogSVBlcEdlbmVyaWNMaXN0RGF0YVNvdXJjZSA9IHtcbiAgICAgICAgaW5pdDogYXN5bmMgKHBhcmFtczogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRhdGFWaWV3OiB7XG4gICAgICAgICAgICAgICAgICAgIFR5cGU6ICdHcmlkJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdG90YWxDb3VudDogLTEsXG4gICAgICAgICAgICAgICAgaXRlbXM6IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgQElucHV0KClcbiAgICBzZXQgZGF0YVNvdXJjZSh2YWw6IElQZXBHZW5lcmljTGlzdERhdGFTb3VyY2UpIHtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IHZhbDtcbiAgICAgICAgdGhpcy5fc29ydGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pbml0U2VhcmNoKCk7XG4gICAgICAgIHRoaXMuaW5pdFNtYXJ0U2VhcmNoKCk7XG4gICAgICAgIHRoaXMuaW5pdExpc3QoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGFjdGlvbnM6IElQZXBHZW5lcmljTGlzdEFjdGlvbnMgPSB7XG4gICAgICAgIGdldDogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgQElucHV0KClcbiAgICB1dWlkTWFwcGluZyA9ICdrZXknO1xuXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBhZGRQYWRkaW5nID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIGRlc2NyaXB0aW9uID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIGlubGluZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93U2VhcmNoID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIG5vRGF0YUZvdW5kTXNnID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIGVtcHR5U3RhdGU6IElQZXBHZW5lcmljTGlzdEVtcHR5U3RhdGUgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvblR5cGU6IFBlcExpc3RTZWxlY3Rpb25UeXBlID0gJ211bHRpJztcblxuICAgIEBJbnB1dCgpXG4gICAgc3VwcG9ydFNvcnRpbmcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc29ydGluZzogSVBlcExpc3RTb3J0aW5nRGF0YSB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FjaGVTaXplID0gLTE7XG5cbiAgICBASW5wdXQoKVxuICAgIGhpZGVTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHBhZ2VyOiBJUGVwR2VuZXJpY0xpc3RQYWdlciA9IHtcbiAgICAgICAgdHlwZTogJ3Njcm9sbCdcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHRhYmxlVmlld1R5cGU6IFBlcExpc3RUYWJsZVZpZXdUeXBlID0gJ3JlZ3VsYXInO1xuXG4gICAgQElucHV0KClcbiAgICB6ZWJyYVN0cmlwZXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNtYXJ0RmlsdGVyKHZhbDogSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5zbWFydEZpbHRlcnMgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvU21hcnRGaWx0ZXIodmFsKTtcbiAgICAgICAgdGhpcy5fYXBwbGllZEZpbHRlcnMgPSB0aGlzLnNtYXJ0RmlsdGVycy5kYXRhIHx8IFtdO1xuICAgICAgICB0aGlzLnNob3dTbWFydEZpbHRlciA9IHRoaXMuc21hcnRGaWx0ZXJzLmZpZWxkcy5sZW5ndGggPiAwOyBcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dUb3BCYXIgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYnJlYWRDcnVtYnNJdGVtczogUGVwQnJlYWRDcnVtYkl0ZW1bXSA9IG5ldyBBcnJheTxQZXBCcmVhZENydW1iSXRlbT4oKTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0QWxsID0gZmFsc2VcblxuICAgIEBJbnB1dCgpXG4gICAgc2Nyb2xsUG9zaXRpb24gPSAwXG5cbiAgICBAT3V0cHV0KClcbiAgICBmaWVsZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGJyZWFkQ3J1bWJJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBzdGFydEluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwTGlzdFN0YXJ0SW5kZXhDaGFuZ2VFdmVudD4oKVxuXG4gICAgQE91dHB1dCgpXG4gICAgbGlzdExvYWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHNldCBwZXBMaXN0KHZhbDogUGVwTGlzdENvbXBvbmVudCkge1xuICAgICAgICB0aGlzLl9wZXBMaXN0ID0gdmFsO1xuICAgIH1cblxuICAgIGdldCBwZXBMaXN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVwTGlzdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXNpemUkOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBfbG9hZGVyJDogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgcHJpdmF0ZSBfZGF0YVZpZXc6IERhdGFWaWV3ID0ge1xuICAgICAgICBUeXBlOiAnR3JpZCdcbiAgICB9O1xuICAgIHByaXZhdGUgX3BlcExpc3Q6IGFueTtcbiAgICBvbkxvYWQgPSB0cnVlO1xuICAgIGxpc3RJbnB1dHM6IGFueTtcbiAgICB0b3RhbFJvd0NvdW50ID0gLTE7XG4gICAgc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgc2hvd1NtYXJ0RmlsdGVyID0gZmFsc2U7XG4gICAgc2hvd0VtcHR5U3RhdGUgPSBmYWxzZTtcbiAgICBzbWFydEZpbHRlcnM6IElQZXBTbWFydEZpbHRlcnMgPSB7XG4gICAgICAgIGZpZWxkczogW10sXG4gICAgICAgIGRhdGE6IFtdLFxuICAgICAgICB0aXRsZTogJ0ZpbHRlcnMnXG4gICAgfTtcbiAgICBwcml2YXRlIF9hcHBsaWVkRmlsdGVyczogSVBlcFNtYXJ0RmlsdGVyRGF0YVtdID0gW107XG4gICAgcHJpdmF0ZSBfc29ydGluZzogSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBtZW51SGFuZGxlcnM6IHsgW2tleTogc3RyaW5nXTogKG9iajogYW55KSA9PiBQcm9taXNlPHZvaWQ+IH0gPSB7fTtcbiAgICBtZW51QWN0aW9uczogQXJyYXk8UGVwTWVudUl0ZW0+ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGF0YUNvbnZlcnRvclNlcnZpY2U6IFBlcERhdGFDb252ZXJ0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sb2FkZXJTZXJ2aWNlOiBQZXBMb2FkZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2dlbmVyaWNMaXN0U2VydmljZTogUGVwR2VuZXJpY0xpc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9zZXNzaW9uU2VydmljZTogUGVwU2Vzc2lvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5fcmVzaXplJCA9IHRoaXMuX2xheW91dFNlcnZpY2Uub25SZXNpemUkLnBpcGUoKS5zdWJzY3JpYmUoKHNpemUpID0+IHsgICAgICAgICAgICBcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9sb2FkZXIkID0gdGhpcy5fbG9hZGVyU2VydmljZS5vbkNoYW5nZWQkLnN1YnNjcmliZSgoc3RhdHVzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAvL1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXRMaXN0KCkge1xuICAgICAgICB0aGlzLm9uTG9hZCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4geyAvL21ha2luZyBzdXJlIGFsbCBpbnB1dCBkYXRhIGlzIGF2YWlsYWJsZVxuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAvL21lcmdlIHNlbGVjdG9yIGlucHV0cyB3aXRoIGNhbGxiYWNrIGlucHV0c1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFRhYmxlSW5wdXRzKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZnJvbUluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgdG9JbmRleCA9IDA7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnBhZ2VyLnR5cGUgPT09ICdwYWdlcycpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbUluZGV4ID0gdGhpcy5saXN0SW5wdXRzLnBhZ2VyLnNpemUgKiB0aGlzLmxpc3RJbnB1dHMucGFnZXIuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRvSW5kZXggPSBmcm9tSW5kZXggKyAodGhpcy5saXN0SW5wdXRzLnBhZ2VyLnNpemUgfHwgREVGQVVMVF9QQUdFX1NJWkUpIC0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b0luZGV4ID0gMTAwOy8vVE8gRE8gLSBnZXQgdmFsdWUgZnJvbSAtIHRoaXMuY3VzdG9tTGlzdC5nZXRUb3BJdGVtcygpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubG9hZERhdGEoZnJvbUluZGV4LCB0b0luZGV4KTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzPy5lbXB0eVN0YXRlPy5zaG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RW1wdHlTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9uTG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vc2hvdyBlbXB0eSBzdGF0ZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dFbXB0eVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5saXN0SW5wdXRzLmVtcHR5U3RhdGUudGl0bGUpIHsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0dFTkVSSUNfTElTVC5FTVBUWV9TVEFURS5USVRMRScpLnN1YnNjcmliZSh0ZXh0ID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0SW5wdXRzLmVtcHR5U3RhdGUudGl0bGUgPSB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbikgeyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnR0VORVJJQ19MSVNULkVNUFRZX1NUQVRFLkRFU0NSSVBUSU9OJykuc3Vic2NyaWJlKHRleHQgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbiA9IHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVwTGlzdENvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlcExpc3RDb250YWluZXIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BlcExpc3RDb250YWluZXIucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IFBlcExpc3RDb21wb25lbnQgfSA9IGF3YWl0IGltcG9ydCgnQHBlcHBlcmktYWRkb25zL25neC1saWIvbGlzdCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5fcGVwTGlzdENvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoUGVwTGlzdENvbXBvbmVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVwTGlzdCA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnZpZXdUeXBlID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldExpc3RWaWV3VHlwZSh0aGlzLl9kYXRhVmlldy5UeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS50YWJsZVZpZXdUeXBlID0gdGhpcy5saXN0SW5wdXRzLnRhYmxlVmlld1R5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuemVicmFTdHJpcGVzID0gdGhpcy5saXN0SW5wdXRzLnplYnJhU3RyaXBlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubG9ja0l0ZW1Jbm5lckV2ZW50cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc3VwcG9ydFNvcnRpbmcgPSB0aGlzLmxpc3RJbnB1dHMuc3VwcG9ydFNvcnRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc29ydGluZyA9IHRoaXMubGlzdElucHV0cy5zb3J0aW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNhY2hlU2l6ZSA9IHRoaXMubGlzdElucHV0cy5jYWNoZVNpemU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3Rpb25UeXBlRm9yQWN0aW9ucyA9IHRoaXMubGlzdElucHV0cy5zZWxlY3Rpb25UeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmhpZGVBbGxTZWxlY3Rpb25Jbk11bHRpID0gdGhpcy5saXN0SW5wdXRzLmhpZGVTZWxlY3RBbGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zaG93Q2FyZFNlbGVjdGlvbiA9IHRoaXMubGlzdElucHV0cy5zZWxlY3Rpb25UeXBlICE9PSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZXJUeXBlID0gdGhpcy5saXN0SW5wdXRzLnBhZ2VyLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnBhZ2VyLnR5cGUgPT09ICdwYWdlcycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZVNpemUgPSB0aGlzLmxpc3RJbnB1dHMucGFnZXI/LnNpemUgfHwgREVGQVVMVF9QQUdFX1NJWkU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhZ2VJbmRleCA9IHRoaXMubGlzdElucHV0cy5wYWdlcj8uaW5kZXggfHwgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuc2VsZWN0aW9uVHlwZSA9PSBcIm11bHRpXCIgJiYgdGhpcy5zZWxlY3RBbGwpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25TZXJ2aWNlLnNldE9iamVjdCgnQWxsU2VsZWN0ZWQnLCB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm5vRGF0YUZvdW5kTXNnID0gdGhpcy5saXN0SW5wdXRzLm5vRGF0YUZvdW5kTXNnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnN0YXJ0SW5kZXhDaGFuZ2Uuc3Vic2NyaWJlKCRldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEluZGV4Q2hhbmdlLmVtaXQoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5maWVsZENsaWNrLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkN1c3RvbWl6ZUZpZWxkQ2xpY2soJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGVkSXRlbXNDaGFuZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0ZWRJdGVtc0NoYW5nZWQoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxvYWRJdGVtcy5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Mb2FkSXRlbXMoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxvYWRQYWdlLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkxvYWRQYWdlKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS52YWx1ZUNoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNvcnRpbmdDaGFuZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU29ydGluZ0NoYW5nZSgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubGlzdExvYWQuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTGlzdExvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRlZExpc3Q6IE9iamVjdHNEYXRhUm93W10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aUNvbnRyb2wgPSB0aGlzLmdldFVpQ29udHJvbChEYXRhVmlld0NvbnZlcnRlci50b1VJQ29udHJvbERhdGEodGhpcy5fZGF0YVZpZXcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXMoY29udmVydGVkTGlzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0U2VsZWN0ZWRJZHMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbml0TGlzdERhdGEodWlDb250cm9sLCB0aGlzLnRvdGFsUm93Q291bnQsIGNvbnZlcnRlZExpc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNjcm9sbFRvSW5kZXgodGhpcy5zY3JvbGxQb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyBpbnB1dHMgaW4gY2FzZSB0aGV5IGFyZSBwcm92aWRlZCBhbmQgbWVyZ2Ugd2l0aCBzZWxlY3RvciBpbnB1dHNcbiAgICAgKiBAcmV0dXJucyBtZXJnZWQgcGVwLWxpc3QgaW5wdXRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkVGFibGVJbnB1dHMoKSB7XG4gICAgICAgIHRoaXMubGlzdElucHV0cyA9IHtcbiAgICAgICAgICAgIHN1cHBvcnRTb3J0aW5nOiB0aGlzLnN1cHBvcnRTb3J0aW5nLFxuICAgICAgICAgICAgc29ydGluZzogdGhpcy5zb3J0aW5nLFxuICAgICAgICAgICAgY2FjaGVTaXplOiB0aGlzLmNhY2hlU2l6ZSxcbiAgICAgICAgICAgIGhpZGVTZWxlY3RBbGw6IHRoaXMuaGlkZVNlbGVjdEFsbCxcbiAgICAgICAgICAgIHNlbGVjdGlvblR5cGU6IHRoaXMuc2VsZWN0aW9uVHlwZSxcbiAgICAgICAgICAgIHBhZ2VyOiB0aGlzLnBhZ2VyLFxuICAgICAgICAgICAgbm9EYXRhRm91bmRNc2c6IHRoaXMubm9EYXRhRm91bmRNc2csXG4gICAgICAgICAgICB0YWJsZVZpZXdUeXBlOiB0aGlzLnRhYmxlVmlld1R5cGUsXG4gICAgICAgICAgICB6ZWJyYVN0cmlwZXM6IHRoaXMuemVicmFTdHJpcGVzLFxuICAgICAgICAgICAgZW1wdHlTdGF0ZTogdGhpcy5lbXB0eVN0YXRlLFxuICAgICAgICAgICAgc2VsZWN0QWxsOiB0aGlzLnNlbGVjdEFsbFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZS5pbnB1dHMpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuX2RhdGFTb3VyY2UuaW5wdXRzKS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmhhc1Byb3BlcnR5KHRoaXMubGlzdElucHV0cywgaXRlbVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0SW5wdXRzW2l0ZW1bMF1dID0gaXRlbVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRldGVtaW5lcyB3aGV0aGVyIGVtcHR5IHN0YXRlIGlzIHRvIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0RW1wdHlTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zaG93RW1wdHlTdGF0ZSA9IHRoaXMudG90YWxSb3dDb3VudCA9PT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPT09ICcnICYmXG4gICAgICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVaUNvbnRyb2woZGF0YTogYW55KTogVUlDb250cm9sIHtcbiAgICAgICAgY29uc3QgdWlDb250cm9sID0gbmV3IFVJQ29udHJvbCgpO1xuICAgICAgICB1aUNvbnRyb2wuQ29udHJvbEZpZWxkcyA9IFtdO1xuXG4gICAgICAgIGlmIChkYXRhPy5Db250cm9sRmllbGRzKSB7XG4gICAgICAgICAgICB1aUNvbnRyb2wuQ29udHJvbEZpZWxkcyA9IGRhdGEuQ29udHJvbEZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9VaUNvbnRyb2xGaWVsZChmaWVsZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVpQ29udHJvbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRNZW51SXRlbXMoKTogdm9pZCB7IC8vVE9ET1xuICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5nZXRNZW51QWN0aW9ucygpLnRoZW4oXG4gICAgICAgICAgICAgICAgeCA9PiB0aGlzLm1lbnVBY3Rpb25zID0geFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0TWVudUFjdGlvbnMoKTogUHJvbWlzZTxQZXBNZW51SXRlbVtdPiB7XG4gICAgICAgIGNvbnN0IHJlczogUGVwTWVudUl0ZW1bXSA9IFtdO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldE1lbnVPYmplY3RzKCk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IGF3YWl0IHRoaXMuYWN0aW9ucy5nZXQocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5tZW51SGFuZGxlcnMgPSB7fTtcbiAgICAgICAgICAgIGFjdGlvbnM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IFBlcEd1aWQubmV3R3VpZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzW3V1aWRdID0gaXRlbS5oYW5kbGVyO1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiB1dWlkLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWVudU9iamVjdHMoKSB7XG4gICAgICAgIGNvbnN0IG1lbnVPYmplY3RzOiBhbnkgPSB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IG5ldyBQZXBTZWxlY3Rpb25EYXRhKClcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5wZXBMaXN0KSB7XG4gICAgICAgICAgICBtZW51T2JqZWN0cy5zdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIG1lbnVPYmplY3RzLmRhdGEgPSB0aGlzLnBlcExpc3QuZ2V0U2VsZWN0ZWRJdGVtc0RhdGEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZW51T2JqZWN0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgICAgIHRoaXMuc2VhcmNoPy5pbml0U2VhcmNoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U21hcnRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRGaWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuc21hcnRGaWx0ZXJzQ29tcG9uZW50Py5jbGVhckZpbHRlcnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxvYWREYXRhKGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiBQcm9taXNlPFBlcFJvd0RhdGFbXT4ge1xuICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLnNob3coKTtcbiAgICAgICAgbGV0IGNvbnZlcmVkRGF0YTogUGVwUm93RGF0YVtdID0gW107XG4gICAgICAgIGNvbnN0IGRhdGE6IElQZXBHZW5lcmljTGlzdEluaXREYXRhID0gYXdhaXQgdGhpcy5fZGF0YVNvdXJjZS5pbml0KHtcbiAgICAgICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5fYXBwbGllZEZpbHRlcnMubGVuZ3RoID8gdGhpcy5fYXBwbGllZEZpbHRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzb3J0aW5nOiB0aGlzLl9zb3J0aW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgICAgICAgICAgdG9JbmRleDogdG9JbmRleFxuICAgICAgICB9KTsgICAgICAgIFxuICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLmhpZGUoKTtcblxuICAgICAgICAvLyBTZXQgdGhlIHRvdGFsIGNvdW50XG4gICAgICAgIHRoaXMudG90YWxSb3dDb3VudCA9IGRhdGE/LnRvdGFsQ291bnQgfHwgMDtcblxuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVZpZXcgPSBkYXRhLmRhdGFWaWV3O1xuXG4gICAgICAgICAgICBpZiAoZGF0YS5pdGVtcz8ubGVuZ3RoID4gMCAmJiAhZGF0YS5pc1BlcFJvd0RhdGEpIHsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY29udmVyZWREYXRhID0gZGF0YS5pdGVtcy5tYXAoaXRlbSA9PiB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvUGVwUm93RGF0YShpdGVtLCBkYXRhLmRhdGFWaWV3LCB0aGlzLnV1aWRNYXBwaW5nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udmVyZWREYXRhO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBhc3luYyB1cGRhdGVEYXRhTGlzdChmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyLCBwYWdlSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IFByb21pc2U8UGVwUm93RGF0YVtdPiB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhU291cmNlLnVwZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGVyU2VydmljZS5zaG93KCk7XG4gICAgICAgICAgICBsZXQgY29udmVyZWREYXRhOiBQZXBSb3dEYXRhW10gPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFMaXN0ID0gYXdhaXQgdGhpcy5fZGF0YVNvdXJjZS51cGRhdGUoe1xuICAgICAgICAgICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMuX2FwcGxpZWRGaWx0ZXJzLmxlbmd0aCA/IHRoaXMuX2FwcGxpZWRGaWx0ZXJzIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNvcnRpbmc6IHRoaXMuX3NvcnRpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgICAgICAgICAgICAgIHRvSW5kZXg6IHRvSW5kZXgsXG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiBwYWdlSW5kZXhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fbG9hZGVyU2VydmljZS5oaWRlKCk7XG5cbiAgICAgICAgICAgIGlmIChkYXRhTGlzdD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnZlcmVkRGF0YSA9IGRhdGFMaXN0Lm1hcChpdGVtID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9QZXBSb3dEYXRhKGl0ZW0sIHRoaXMuX2RhdGFWaWV3LCB0aGlzLnV1aWRNYXBwaW5nKSk7XG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcmVkRGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWRzIHZpcnR1YWwgc2Nyb2xsIGl0ZW1zIGZyb20gYXBpXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBvbkxvYWRJdGVtcyhldmVudDogSVBlcExpc3RMb2FkSXRlbXNFdmVudCkge1xuICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgdGhpcy51cGRhdGVEYXRhTGlzdChldmVudC5mcm9tSW5kZXgsIGV2ZW50LnRvSW5kZXgpO1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGxpc3QpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXMoY29udmVydGVkTGlzdCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucGVwTGlzdC5zZXRTZWxlY3RlZElkcyhzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlcExpc3QudXBkYXRlSXRlbXMoY29udmVydGVkTGlzdCwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWRzIHBhZ2luZyBidWxrIGZyb20gYXBpXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBvbkxvYWRQYWdlKGV2ZW50OiBJUGVwTGlzdExvYWRQYWdlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZnJvbUluZGV4ID0gZXZlbnQucGFnZUluZGV4ICogZXZlbnQucGFnZVNpemU7XG4gICAgICAgIGNvbnN0IHRvSW5kZXggPSBNYXRoLm1pbihmcm9tSW5kZXggKyBldmVudC5wYWdlU2l6ZSAtIDEsIHRoaXMudG90YWxSb3dDb3VudCAtIDEpO1xuICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgdGhpcy51cGRhdGVEYXRhTGlzdChmcm9tSW5kZXgsIHRvSW5kZXgsIGV2ZW50LnBhZ2VJbmRleCk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZExpc3QgPSB0aGlzLl9kYXRhQ29udmVydG9yU2VydmljZS5jb252ZXJ0TGlzdERhdGEobGlzdCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuZ2V0U2VsZWN0ZWRJdGVtcyhjb252ZXJ0ZWRMaXN0KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wZXBMaXN0LnNldFNlbGVjdGVkSWRzKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVwTGlzdC51cGRhdGVQYWdlKGNvbnZlcnRlZExpc3QsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBnZXRJdGVtQnlJZChpZDogc3RyaW5nKTogT2JqZWN0c0RhdGFSb3cgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMucGVwTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BlcExpc3QuZ2V0SXRlbURhdGFCeUlEKGlkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRJdGVtcygpOiBQZXBTZWxlY3Rpb25EYXRhIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnBlcExpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wZXBMaXN0LmdldFNlbGVjdGVkSXRlbXNEYXRhKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhZ2VJbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVwTGlzdC5wYWdlSW5kZXg7XG4gICAgfVxuXG4gICAgb25BY3Rpb25JdGVtQ2xpY2tlZChhY3Rpb246IElQZXBNZW51SXRlbUNsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRNZW51T2JqZWN0cygpO1xuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzW2FjdGlvbi5zb3VyY2Uua2V5XShyZXN1bHQuZGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlYXJjaENoYW5nZWQoZXZlbnQ6IElQZXBTZWFyY2hDbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuaW5pdExpc3QoKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdGVkSXRlbXNDaGFuZ2VkKHNlbGVjdGVkUm93c0NvdW50OiBudW1iZXIpIHtcbiAgICAgICAgLy9sb2FkaW5nIG1lbnUgaXRlbXMgYWZ0ZXIgcGVwLWxpc3Qgc2VsZWN0ZWQgaXRlbXMgYXJlIHVwZGF0ZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRNZW51SXRlbXMoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgb25DdXN0b21pemVGaWVsZENsaWNrKGZpZWxkQ2xpY2tFdmVudDogSVBlcEZvcm1GaWVsZENsaWNrRXZlbnQpIHtcbiAgICAgICAgdGhpcy5maWVsZENsaWNrLmVtaXQoZmllbGRDbGlja0V2ZW50KTtcbiAgICB9XG5cbiAgICBvbkJyZWFkQ3J1bWJJdGVtQ2xpY2soZXZlbnQ6IElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnQpIHtcbiAgICAgICAgdGhpcy5icmVhZENydW1iSXRlbUNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2VkKGV2ZW50OiBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudCkge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uU29ydGluZ0NoYW5nZShldmVudDogSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5fc29ydGluZyA9IGV2ZW50O1xuICAgICAgICB0aGlzLmluaXRMaXN0KCk7XG4gICAgfVxuXG4gICAgb25GaWx0ZXJzQ2hhbmdlKGZpbHRlcnM6IElQZXBTbWFydEZpbHRlckRhdGFbXSkge1xuICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycyA9IGZpbHRlcnM7XG4gICAgICAgIHRoaXMuaW5pdExpc3QoKTtcbiAgICB9XG5cbiAgICBvbkxpc3RMb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RMb2FkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jlc2l6ZSQpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fbG9hZGVyJCkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGVyJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCI8ZGl2ICpuZ0lmPVwiaW5saW5lXCIgY2xhc3M9XCJpbmxpbmUtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyAnYWRkLXBhZGRpbmcnOiBhZGRQYWRkaW5nLCAnd2l0aC1zbWFydC1maWx0ZXJzJzogc2hvd1NtYXJ0RmlsdGVyIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWFyZWFcIiA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VG9wQmFyXCIgY2xhc3M9XCJpbmxpbmUtdG9wLWJhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BCYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1kZXNjcmlwdGlvblwiPnt7ZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkQ3J1bWJzSXRlbXMubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJlYWRDcnVtYnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NtYXJ0RmlsdGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzbWFydEZpbHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvbkxvYWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48cGVwLXBhZ2UtbGF5b3V0ICpuZ0lmPVwiIWlubGluZVwiIGNsYXNzPVwibm9uZS1pbmxpbmVcIiBbYWRkUGFkZGluZ109XCJhZGRQYWRkaW5nXCIgW3Nob3dTaGFkb3ddPVwic2hvd1NtYXJ0RmlsdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTbWFydEZpbHRlclwiIHBlcC1zaWRlLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzbWFydEZpbHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3BCYXJcIiBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BCYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXNjcmlwdGlvblwiIHBlcC10b3AtYXJlYT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZGVzY3JpcHRpb25cIj57e2Rlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRDcnVtYnNJdGVtcy5sZW5ndGhcIiBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmVhZENydW1ic1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAqbmdJZj1cIiFvbkxvYWRcIiBwZXAtbWFpbi1hcmVhIGNsYXNzPVwibWFpbi1hcmVhLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L3BlcC1wYWdlLWxheW91dD5cblxuPG5nLXRlbXBsYXRlICN0b3BCYXJUZW1wbGF0ZT5cbiAgICA8cGVwLXRvcC1iYXIgW3RpdGxlXT1cInRpdGxlXCIgW2lubGluZV09XCJpbmxpbmVcIj5cbiAgICAgICAgPGRpdiBoZWFkZXItc3RhcnQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsZWZ0LWJ1dHRvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBoZWFkZXItZW5kLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHQtYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgZm9vdGVyLXN0YXJ0LWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGVmdC1ib3R0b20tYXJlYV1cIj48L25nLWNvbnRlbnQ+ICAgICAgICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZvb3Rlci1lbmQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltyaWdodC1ib3R0b20tYXJlYV1cIj48L25nLWNvbnRlbnQ+ICAgICBcbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8cGVwLWxpc3QtYWN0aW9ucyAqbmdJZj1cIm1lbnVBY3Rpb25zLmxlbmd0aCA+IDBcIiBbc2l6ZVR5cGVdPVwiaW5saW5lID8gJ3NtJyA6ICdtZCdcIiBbYWN0aW9uc109XCJtZW51QWN0aW9uc1wiXG4gICAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2tlZCgkZXZlbnQpXCI+PC9wZXAtbGlzdC1hY3Rpb25zPlxuICAgICAgICA8cGVwLWxpc3QtdG90YWwgW3NpemVUeXBlXT1cImlubGluZSA/ICdzbScgOiAnbWQnXCIgW3RvdGFsUm93c109XCJ0b3RhbFJvd0NvdW50XCI+XG4gICAgICAgIDwvcGVwLWxpc3QtdG90YWw+XG4gICAgICAgIDxwZXAtc2VhcmNoICNzZWFyY2ggKm5nSWY9XCJzaG93U2VhcmNoXCIgW3ZhbHVlXT1cInNlYXJjaFN0cmluZ1wiIFtzaXplVHlwZV09XCJpbmxpbmUgPyAnc20nIDogJ21kJ1wiXG4gICAgICAgICAgICAoc2VhcmNoKT1cIm9uU2VhcmNoQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvcGVwLXNlYXJjaD5cbiAgICA8L3BlcC10b3AtYmFyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzbWFydEZpbHRlclRlbXBsYXRlPiAgICBcbiAgICA8cGVwLXNpZGUtYmFyICNzaWRlTmF2IFtuZ0NsYXNzXT1cInsnc21hcnQtZmlsdGVyLWFyZWEnOiBpbmxpbmV9XCI+IFxuICAgICAgICA8cGVwLXNtYXJ0LWZpbHRlcnMgI3NtYXJ0RmlsdGVyc0NvbXBvbmVudCBbdGl0bGVdPVwic21hcnRGaWx0ZXJzLnRpdGxlXCIgW2ZpZWxkc109XCJzbWFydEZpbHRlcnMuZmllbGRzXCJcbiAgICAgICAgICAgIFtmaWx0ZXJzXT1cInNtYXJ0RmlsdGVycy5kYXRhXCIgKGZpbHRlcnNDaGFuZ2UpPVwib25GaWx0ZXJzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9wZXAtc21hcnQtZmlsdGVycz5cbiAgICA8L3BlcC1zaWRlLWJhcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnJlYWRDcnVtYnNUZW1wbGF0ZT5cbiAgICA8cGVwLWJyZWFkLWNydW1icyBjbGFzcz1cImJyZWFkLWNydW1ic1wiIFtpdGVtc109XCJicmVhZENydW1ic0l0ZW1zXCIgW2FkZFNwYWNpbmddPVwidHJ1ZVwiIFtkaXNwbGF5VHlwZV09XCInaXRlbXMnXCJcbiAgICAgICAgKGl0ZW1DbGljayk9XCJvbkJyZWFkQ3J1bWJJdGVtQ2xpY2soJGV2ZW50KVwiPjwvcGVwLWJyZWFkLWNydW1icz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdFRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlTdGF0ZVwiIGNsYXNzPVwibGlzdC1lbXB0eS1zdGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS10aXRsZVwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS1kZXNjclwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfc2tpbnlcIiBjbGFzcz1cImxlYWYtc2tpbnlcIj48L3BlcC1pY29uPlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfcm91bmRcIiBjbGFzcz1cImxlYWYtcm91bmRcIj48L3BlcC1pY29uPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImxlYWYtc2tpbnlcIj5cbiAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9za2lueVwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+IC0tPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImxlYWYtcm91bmRcIj5cbiAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9yb3VuZFwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+IC0tPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhc2hvd0VtcHR5U3RhdGVcIiBjbGFzcz1cImxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3BlcExpc3RDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
516
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtbGlzdC9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1saXN0L2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUlILE9BQU8sRUFDUCxTQUFTLEVBSVosTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFFSCxnQkFBZ0IsRUFJaEIsaUJBQWlCLEVBS3BCLE1BQU0sOEJBQThCLENBQUM7QUF5QnRDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWMvRCxNQUFNLE9BQU8sb0JBQW9CO0lBNEo3QixZQUNZLHFCQUE4QyxFQUM5QyxjQUFnQyxFQUNoQyxjQUFnQyxFQUNoQyxVQUE0QixFQUM1QixtQkFBMEMsRUFDMUMsZUFBa0M7UUFMbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QjtRQUM5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7UUFDMUMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBeEp0QyxnQkFB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S0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBSVAsbUJBQW1CO3NCQURsQixNQUFNO2dCQUlQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUlQLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBQZXBEYXRhQ29udmVydG9yU2VydmljZSxcbiAgICBQZXBMYXlvdXRTZXJ2aWNlLFxuICAgIE9iamVjdHNEYXRhUm93LFxuICAgIFBlcEd1aWQsXG4gICAgVUlDb250cm9sLFxuICAgIFBlcExvYWRlclNlcnZpY2UsXG4gICAgUGVwUm93RGF0YSxcbiAgICBQZXBTZXNzaW9uU2VydmljZVxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElQZXBGb3JtRmllbGRDbGlja0V2ZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZm9ybSc7XG5pbXBvcnQge1xuICAgIFBlcExpc3RDb21wb25lbnQsXG4gICAgUGVwU2VsZWN0aW9uRGF0YSxcbiAgICBJUGVwTGlzdExvYWRQYWdlRXZlbnQsXG4gICAgUGVwTGlzdFNlbGVjdGlvblR5cGUsXG4gICAgSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQsXG4gICAgREVGQVVMVF9QQUdFX1NJWkUsXG4gICAgSVBlcExpc3RMb2FkSXRlbXNFdmVudCxcbiAgICBQZXBMaXN0VGFibGVWaWV3VHlwZSxcbiAgICBJUGVwTGlzdFNvcnRpbmdEYXRhLFxuICAgIElQZXBMaXN0U3RhcnRJbmRleENoYW5nZUV2ZW50XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2xpc3QnO1xuaW1wb3J0IHtcbiAgICBQZXBNZW51SXRlbSxcbiAgICBJUGVwTWVudUl0ZW1DbGlja0V2ZW50LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9tZW51JztcbmltcG9ydCB7IElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZm9ybSc7XG5pbXBvcnQge1xuICAgIFBlcEJyZWFkQ3J1bWJJdGVtLFxuICAgIElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnRcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvYnJlYWQtY3J1bWJzJztcbmltcG9ydCB7IElQZXBTZWFyY2hDbGlja0V2ZW50LCBQZXBTZWFyY2hDb21wb25lbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zZWFyY2gnO1xuXG5pbXBvcnQge1xuICAgIERhdGFWaWV3LFxuICAgIEdyaWREYXRhVmlld1xufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsvZGlzdC9lbnRpdGllcy9kYXRhLXZpZXcnO1xuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0xpc3RJbml0RGF0YSxcbiAgICBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlLFxuICAgIElQZXBHZW5lcmljTGlzdFBhZ2VyLFxuICAgIElQZXBHZW5lcmljTGlzdEFjdGlvbnMsXG4gICAgSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIsXG4gICAgSVBlcFNtYXJ0RmlsdGVycyxcbiAgICBJUGVwR2VuZXJpY0xpc3RFbXB0eVN0YXRlXG59IGZyb20gJy4vZ2VuZXJpYy1saXN0Lm1vZGVsJztcbmltcG9ydCB7IFBlcEdlbmVyaWNMaXN0U2VydmljZSB9IGZyb20gJy4vZ2VuZXJpYy1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVZpZXdDb252ZXJ0ZXIgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvZGF0YS12aWV3cyc7XG5pbXBvcnQge1xuICAgIElQZXBTbWFydEZpbHRlckRhdGEsXG4gICAgUGVwU21hcnRGaWx0ZXJCYXNlRmllbGQsXG4gICAgUGVwU21hcnRGaWx0ZXJzQ29tcG9uZW50XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWdlbmVyaWMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5zY3NzJywgJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudC50aGVtZS5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbUGVwR2VuZXJpY0xpc3RTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoJykgc2VhcmNoOiBQZXBTZWFyY2hDb21wb25lbnQgfCB1bmRlZmluZWQ7XG4gICAgQFZpZXdDaGlsZCgnc21hcnRGaWx0ZXJzQ29tcG9uZW50Jykgc21hcnRGaWx0ZXJzQ29tcG9uZW50OiBQZXBTbWFydEZpbHRlcnNDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICBwcml2YXRlIF9wZXBMaXN0Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xuICAgIEBWaWV3Q2hpbGQoJ3BlcExpc3RDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICBzZXQgcGVwTGlzdENvbnRhaW5lcih2YWw6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgdGhpcy5fcGVwTGlzdENvbnRhaW5lciA9IHZhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kYXRhU291cmNlOiBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlID0ge1xuICAgICAgICBpbml0OiBhc3luYyAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZpZXc6IHtcbiAgICAgICAgICAgICAgICAgICAgVHlwZTogJ0dyaWQnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50OiAtMSxcbiAgICAgICAgICAgICAgICBpdGVtczogW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhU291cmNlKHZhbDogSVBlcEdlbmVyaWNMaXN0RGF0YVNvdXJjZSkge1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gdmFsO1xuICAgICAgICB0aGlzLl9zb3J0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmluaXRTZWFyY2goKTtcbiAgICAgICAgdGhpcy5pbml0U21hcnRTZWFyY2goKTtcbiAgICAgICAgdGhpcy5pbml0TGlzdCgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgYWN0aW9uczogSVBlcEdlbmVyaWNMaXN0QWN0aW9ucyA9IHtcbiAgICAgICAgZ2V0OiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBASW5wdXQoKVxuICAgIHV1aWRNYXBwaW5nID0gJ2tleSc7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGFkZFBhZGRpbmcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgdGl0bGUgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgZGVzY3JpcHRpb24gPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgaW5saW5lID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dTZWFyY2ggPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbm9EYXRhRm91bmRNc2cgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgZW1wdHlTdGF0ZTogSVBlcEdlbmVyaWNMaXN0RW1wdHlTdGF0ZSB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uVHlwZTogUGVwTGlzdFNlbGVjdGlvblR5cGUgPSAnbXVsdGknO1xuXG4gICAgQElucHV0KClcbiAgICBzdXBwb3J0U29ydGluZyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzb3J0aW5nOiBJUGVwTGlzdFNvcnRpbmdEYXRhIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KClcbiAgICBjYWNoZVNpemUgPSAtMTtcblxuICAgIEBJbnB1dCgpXG4gICAgaGlkZVNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIFxuICAgIEBJbnB1dCgpXG4gICAgcGFnZXI6IElQZXBHZW5lcmljTGlzdFBhZ2VyID0ge1xuICAgICAgICB0eXBlOiAnc2Nyb2xsJ1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgdGFibGVWaWV3VHlwZTogUGVwTGlzdFRhYmxlVmlld1R5cGUgPSAncmVndWxhcic7XG5cbiAgICBASW5wdXQoKVxuICAgIHplYnJhU3RyaXBlcyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgc21hcnRGaWx0ZXIodmFsOiBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcikge1xuICAgICAgICB0aGlzLnNtYXJ0RmlsdGVycyA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9TbWFydEZpbHRlcih2YWwpO1xuICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycyA9IHRoaXMuc21hcnRGaWx0ZXJzLmRhdGEgfHwgW107XG4gICAgICAgIHRoaXMuc2hvd1NtYXJ0RmlsdGVyID0gdGhpcy5zbWFydEZpbHRlcnMuZmllbGRzLmxlbmd0aCA+IDA7IFxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RvcEJhciA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBicmVhZENydW1ic0l0ZW1zOiBQZXBCcmVhZENydW1iSXRlbVtdID0gbmV3IEFycmF5PFBlcEJyZWFkQ3J1bWJJdGVtPigpO1xuXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RBbGwgPSBmYWxzZVxuXG4gICAgQElucHV0KClcbiAgICBzY3JvbGxQb3NpdGlvbiA9IDBcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpZWxkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRDbGlja0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgYnJlYWRDcnVtYkl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEJyZWFkQ3J1bWJJdGVtQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHN0YXJ0SW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBMaXN0U3RhcnRJbmRleENoYW5nZUV2ZW50PigpXG5cbiAgICBAT3V0cHV0KClcbiAgICBsaXN0TG9hZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgc2V0IHBlcExpc3QodmFsOiBQZXBMaXN0Q29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuX3BlcExpc3QgPSB2YWw7XG4gICAgfVxuXG4gICAgZ2V0IHBlcExpc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXBMaXN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc2l6ZSQ6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIF9sb2FkZXIkOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBwcml2YXRlIF9kYXRhVmlldzogRGF0YVZpZXcgPSB7XG4gICAgICAgIFR5cGU6ICdHcmlkJ1xuICAgIH07XG4gICAgcHJpdmF0ZSBfcGVwTGlzdDogYW55O1xuICAgIG9uTG9hZCA9IHRydWU7XG4gICAgbGlzdElucHV0czogYW55O1xuICAgIHRvdGFsUm93Q291bnQgPSAtMTtcbiAgICBzZWFyY2hTdHJpbmcgPSAnJztcbiAgICBzaG93U21hcnRGaWx0ZXIgPSBmYWxzZTtcbiAgICBzaG93RW1wdHlTdGF0ZSA9IGZhbHNlO1xuICAgIHNtYXJ0RmlsdGVyczogSVBlcFNtYXJ0RmlsdGVycyA9IHtcbiAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgZGF0YTogW10sXG4gICAgICAgIHRpdGxlOiAnRmlsdGVycydcbiAgICB9O1xuICAgIHByaXZhdGUgX2FwcGxpZWRGaWx0ZXJzOiBJUGVwU21hcnRGaWx0ZXJEYXRhW10gPSBbXTtcbiAgICBwcml2YXRlIF9zb3J0aW5nOiBJUGVwTGlzdFNvcnRpbmdDaGFuZ2VFdmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIG1lbnVIYW5kbGVyczogeyBba2V5OiBzdHJpbmddOiAob2JqOiBhbnkpID0+IFByb21pc2U8dm9pZD4gfSA9IHt9O1xuICAgIG1lbnVBY3Rpb25zOiBBcnJheTxQZXBNZW51SXRlbT4gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9kYXRhQ29udmVydG9yU2VydmljZTogUGVwRGF0YUNvbnZlcnRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2xheW91dFNlcnZpY2U6IFBlcExheW91dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2xvYWRlclNlcnZpY2U6IFBlcExvYWRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZ2VuZXJpY0xpc3RTZXJ2aWNlOiBQZXBHZW5lcmljTGlzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3Nlc3Npb25TZXJ2aWNlOiBQZXBTZXNzaW9uU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl9yZXNpemUkID0gdGhpcy5fbGF5b3V0U2VydmljZS5vblJlc2l6ZSQucGlwZSgpLnN1YnNjcmliZSgoc2l6ZSkgPT4geyAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2xvYWRlciQgPSB0aGlzLl9sb2FkZXJTZXJ2aWNlLm9uQ2hhbmdlZCQuc3Vic2NyaWJlKChzdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdExpc3QoKSB7XG4gICAgICAgIHRoaXMub25Mb2FkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7IC8vbWFraW5nIHN1cmUgYWxsIGlucHV0IGRhdGEgaXMgYXZhaWxhYmxlXG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIC8vbWVyZ2Ugc2VsZWN0b3IgaW5wdXRzIHdpdGggY2FsbGJhY2sgaW5wdXRzXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkVGFibGVJbnB1dHMoKTtcblxuICAgICAgICAgICAgICAgIGxldCBmcm9tSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIGxldCB0b0luZGV4ID0gMDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RJbnB1dHMucGFnZXIudHlwZSA9PT0gJ3BhZ2VzJykge1xuICAgICAgICAgICAgICAgICAgICBmcm9tSW5kZXggPSB0aGlzLmxpc3RJbnB1dHMucGFnZXIuc2l6ZSAqIHRoaXMubGlzdElucHV0cy5wYWdlci5pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdG9JbmRleCA9IGZyb21JbmRleCArICh0aGlzLmxpc3RJbnB1dHMucGFnZXIuc2l6ZSB8fCBERUZBVUxUX1BBR0VfU0laRSkgLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRvSW5kZXggPSAxMDA7Ly9UTyBETyAtIGdldCB2YWx1ZSBmcm9tIC0gdGhpcy5jdXN0b21MaXN0LmdldFRvcEl0ZW1zKClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sb2FkRGF0YShmcm9tSW5kZXgsIHRvSW5kZXgpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RJbnB1dHM/LmVtcHR5U3RhdGU/LnNob3cgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFbXB0eVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25Mb2FkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy9zaG93IGVtcHR5IHN0YXRlXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0VtcHR5U3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnR0VORVJJQ19MSVNULkVNUFRZX1NUQVRFLlRJVExFJykuc3Vic2NyaWJlKHRleHQgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSA9IHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlLmRlc2NyaXB0aW9uKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdHRU5FUklDX0xJU1QuRU1QVFlfU1RBVEUuREVTQ1JJUFRJT04nKS5zdWJzY3JpYmUodGV4dCA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlLmRlc2NyaXB0aW9uID0gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZXBMaXN0Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVwTGlzdENvbnRhaW5lci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVwTGlzdENvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgUGVwTGlzdENvbXBvbmVudCB9ID0gYXdhaXQgaW1wb3J0KCdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9saXN0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9wZXBMaXN0Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChQZXBMaXN0Q29tcG9uZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXBMaXN0ID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uudmlld1R5cGUgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuZ2V0TGlzdFZpZXdUeXBlKHRoaXMuX2RhdGFWaWV3LlR5cGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnRhYmxlVmlld1R5cGUgPSB0aGlzLmxpc3RJbnB1dHMudGFibGVWaWV3VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS56ZWJyYVN0cmlwZXMgPSB0aGlzLmxpc3RJbnB1dHMuemVicmFTdHJpcGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sb2NrSXRlbUlubmVyRXZlbnRzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zdXBwb3J0U29ydGluZyA9IHRoaXMubGlzdElucHV0cy5zdXBwb3J0U29ydGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zb3J0aW5nID0gdGhpcy5saXN0SW5wdXRzLnNvcnRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY2FjaGVTaXplID0gdGhpcy5saXN0SW5wdXRzLmNhY2hlU2l6ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGlvblR5cGVGb3JBY3Rpb25zID0gdGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuaGlkZUFsbFNlbGVjdGlvbkluTXVsdGkgPSB0aGlzLmxpc3RJbnB1dHMuaGlkZVNlbGVjdEFsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNob3dDYXJkU2VsZWN0aW9uID0gdGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGUgIT09ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYWdlclR5cGUgPSB0aGlzLmxpc3RJbnB1dHMucGFnZXIudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RJbnB1dHMucGFnZXIudHlwZSA9PT0gJ3BhZ2VzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYWdlU2l6ZSA9IHRoaXMubGlzdElucHV0cy5wYWdlcj8uc2l6ZSB8fCBERUZBVUxUX1BBR0VfU0laRTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZUluZGV4ID0gdGhpcy5saXN0SW5wdXRzLnBhZ2VyPy5pbmRleCB8fCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5zZWxlY3Rpb25UeXBlID09IFwibXVsdGlcIiAmJiB0aGlzLnNlbGVjdEFsbCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KCdBbGxTZWxlY3RlZCcsIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uubm9EYXRhRm91bmRNc2cgPSB0aGlzLmxpc3RJbnB1dHMubm9EYXRhRm91bmRNc2c7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc3RhcnRJbmRleENoYW5nZS5zdWJzY3JpYmUoJGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0SW5kZXhDaGFuZ2UuZW1pdCgkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkQ2xpY2suc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ3VzdG9taXplRmllbGRDbGljaygkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0ZWRJdGVtc0NoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RlZEl0ZW1zQ2hhbmdlZCgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubG9hZEl0ZW1zLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkxvYWRJdGVtcygkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubG9hZFBhZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9hZFBhZ2UoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlQ2hhbmdlLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZCgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc29ydGluZ0NoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Tb3J0aW5nQ2hhbmdlKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5saXN0TG9hZC5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RlZEl0ZW1zQ2hhbmdlZCh0aGlzLl9wZXBMaXN0LnNlbGVjdGVkSXRlbXMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTGlzdExvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRlZExpc3Q6IE9iamVjdHNEYXRhUm93W10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aUNvbnRyb2wgPSB0aGlzLmdldFVpQ29udHJvbChEYXRhVmlld0NvbnZlcnRlci50b1VJQ29udHJvbERhdGEodGhpcy5fZGF0YVZpZXcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXMoY29udmVydGVkTGlzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0U2VsZWN0ZWRJZHMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbml0TGlzdERhdGEodWlDb250cm9sLCB0aGlzLnRvdGFsUm93Q291bnQsIGNvbnZlcnRlZExpc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNjcm9sbFRvSW5kZXgodGhpcy5zY3JvbGxQb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyBpbnB1dHMgaW4gY2FzZSB0aGV5IGFyZSBwcm92aWRlZCBhbmQgbWVyZ2Ugd2l0aCBzZWxlY3RvciBpbnB1dHNcbiAgICAgKiBAcmV0dXJucyBtZXJnZWQgcGVwLWxpc3QgaW5wdXRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkVGFibGVJbnB1dHMoKSB7XG4gICAgICAgIHRoaXMubGlzdElucHV0cyA9IHtcbiAgICAgICAgICAgIHN1cHBvcnRTb3J0aW5nOiB0aGlzLnN1cHBvcnRTb3J0aW5nLFxuICAgICAgICAgICAgc29ydGluZzogdGhpcy5zb3J0aW5nLFxuICAgICAgICAgICAgY2FjaGVTaXplOiB0aGlzLmNhY2hlU2l6ZSxcbiAgICAgICAgICAgIGhpZGVTZWxlY3RBbGw6IHRoaXMuaGlkZVNlbGVjdEFsbCxcbiAgICAgICAgICAgIHNlbGVjdGlvblR5cGU6IHRoaXMuc2VsZWN0aW9uVHlwZSxcbiAgICAgICAgICAgIHBhZ2VyOiB0aGlzLnBhZ2VyLFxuICAgICAgICAgICAgbm9EYXRhRm91bmRNc2c6IHRoaXMubm9EYXRhRm91bmRNc2csXG4gICAgICAgICAgICB0YWJsZVZpZXdUeXBlOiB0aGlzLnRhYmxlVmlld1R5cGUsXG4gICAgICAgICAgICB6ZWJyYVN0cmlwZXM6IHRoaXMuemVicmFTdHJpcGVzLFxuICAgICAgICAgICAgZW1wdHlTdGF0ZTogdGhpcy5lbXB0eVN0YXRlLFxuICAgICAgICAgICAgc2VsZWN0QWxsOiB0aGlzLnNlbGVjdEFsbFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZS5pbnB1dHMpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuX2RhdGFTb3VyY2UuaW5wdXRzKS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmhhc1Byb3BlcnR5KHRoaXMubGlzdElucHV0cywgaXRlbVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0SW5wdXRzW2l0ZW1bMF1dID0gaXRlbVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRldGVtaW5lcyB3aGV0aGVyIGVtcHR5IHN0YXRlIGlzIHRvIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0RW1wdHlTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zaG93RW1wdHlTdGF0ZSA9IHRoaXMudG90YWxSb3dDb3VudCA9PT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPT09ICcnICYmXG4gICAgICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVaUNvbnRyb2woZGF0YTogYW55KTogVUlDb250cm9sIHtcbiAgICAgICAgY29uc3QgdWlDb250cm9sID0gbmV3IFVJQ29udHJvbCgpO1xuICAgICAgICB1aUNvbnRyb2wuQ29udHJvbEZpZWxkcyA9IFtdO1xuXG4gICAgICAgIGlmIChkYXRhPy5Db250cm9sRmllbGRzKSB7XG4gICAgICAgICAgICB1aUNvbnRyb2wuQ29udHJvbEZpZWxkcyA9IGRhdGEuQ29udHJvbEZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9VaUNvbnRyb2xGaWVsZChmaWVsZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVpQ29udHJvbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRNZW51SXRlbXMoKTogdm9pZCB7IC8vVE9ET1xuICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5nZXRNZW51QWN0aW9ucygpLnRoZW4oXG4gICAgICAgICAgICAgICAgeCA9PiB0aGlzLm1lbnVBY3Rpb25zID0geFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0TWVudUFjdGlvbnMoKTogUHJvbWlzZTxQZXBNZW51SXRlbVtdPiB7XG4gICAgICAgIGNvbnN0IHJlczogUGVwTWVudUl0ZW1bXSA9IFtdO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldE1lbnVPYmplY3RzKCk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IGF3YWl0IHRoaXMuYWN0aW9ucy5nZXQocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5tZW51SGFuZGxlcnMgPSB7fTtcbiAgICAgICAgICAgIGFjdGlvbnM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IFBlcEd1aWQubmV3R3VpZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzW3V1aWRdID0gaXRlbS5oYW5kbGVyO1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiB1dWlkLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWVudU9iamVjdHMoKSB7XG4gICAgICAgIGNvbnN0IG1lbnVPYmplY3RzOiBhbnkgPSB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IG5ldyBQZXBTZWxlY3Rpb25EYXRhKClcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5wZXBMaXN0KSB7XG4gICAgICAgICAgICBtZW51T2JqZWN0cy5zdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIG1lbnVPYmplY3RzLmRhdGEgPSB0aGlzLnBlcExpc3QuZ2V0U2VsZWN0ZWRJdGVtc0RhdGEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZW51T2JqZWN0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgICAgIHRoaXMuc2VhcmNoPy5pbml0U2VhcmNoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U21hcnRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRGaWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuc21hcnRGaWx0ZXJzQ29tcG9uZW50Py5jbGVhckZpbHRlcnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxvYWREYXRhKGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiBQcm9taXNlPFBlcFJvd0RhdGFbXT4ge1xuICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLnNob3coKTtcbiAgICAgICAgbGV0IGNvbnZlcmVkRGF0YTogUGVwUm93RGF0YVtdID0gW107XG4gICAgICAgIGNvbnN0IGRhdGE6IElQZXBHZW5lcmljTGlzdEluaXREYXRhID0gYXdhaXQgdGhpcy5fZGF0YVNvdXJjZS5pbml0KHtcbiAgICAgICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5fYXBwbGllZEZpbHRlcnMubGVuZ3RoID8gdGhpcy5fYXBwbGllZEZpbHRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzb3J0aW5nOiB0aGlzLl9zb3J0aW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgICAgICAgICAgdG9JbmRleDogdG9JbmRleFxuICAgICAgICB9KTsgICAgICAgIFxuICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLmhpZGUoKTtcblxuICAgICAgICAvLyBTZXQgdGhlIHRvdGFsIGNvdW50XG4gICAgICAgIHRoaXMudG90YWxSb3dDb3VudCA9IGRhdGE/LnRvdGFsQ291bnQgfHwgMDtcblxuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVZpZXcgPSBkYXRhLmRhdGFWaWV3O1xuXG4gICAgICAgICAgICBpZiAoZGF0YS5pdGVtcz8ubGVuZ3RoID4gMCAmJiAhZGF0YS5pc1BlcFJvd0RhdGEpIHsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY29udmVyZWREYXRhID0gZGF0YS5pdGVtcy5tYXAoaXRlbSA9PiB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvUGVwUm93RGF0YShpdGVtLCBkYXRhLmRhdGFWaWV3LCB0aGlzLnV1aWRNYXBwaW5nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udmVyZWREYXRhO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBhc3luYyB1cGRhdGVEYXRhTGlzdChmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyLCBwYWdlSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IFByb21pc2U8UGVwUm93RGF0YVtdPiB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhU291cmNlLnVwZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGVyU2VydmljZS5zaG93KCk7XG4gICAgICAgICAgICBsZXQgY29udmVyZWREYXRhOiBQZXBSb3dEYXRhW10gPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFMaXN0ID0gYXdhaXQgdGhpcy5fZGF0YVNvdXJjZS51cGRhdGUoe1xuICAgICAgICAgICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMuX2FwcGxpZWRGaWx0ZXJzLmxlbmd0aCA/IHRoaXMuX2FwcGxpZWRGaWx0ZXJzIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNvcnRpbmc6IHRoaXMuX3NvcnRpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgICAgICAgICAgICAgIHRvSW5kZXg6IHRvSW5kZXgsXG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiBwYWdlSW5kZXhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fbG9hZGVyU2VydmljZS5oaWRlKCk7XG5cbiAgICAgICAgICAgIGlmIChkYXRhTGlzdD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnZlcmVkRGF0YSA9IGRhdGFMaXN0Lm1hcChpdGVtID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9QZXBSb3dEYXRhKGl0ZW0sIHRoaXMuX2RhdGFWaWV3LCB0aGlzLnV1aWRNYXBwaW5nKSk7XG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcmVkRGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWRzIHZpcnR1YWwgc2Nyb2xsIGl0ZW1zIGZyb20gYXBpXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBvbkxvYWRJdGVtcyhldmVudDogSVBlcExpc3RMb2FkSXRlbXNFdmVudCkge1xuICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgdGhpcy51cGRhdGVEYXRhTGlzdChldmVudC5mcm9tSW5kZXgsIGV2ZW50LnRvSW5kZXgpO1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGxpc3QpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXMoY29udmVydGVkTGlzdCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucGVwTGlzdC5zZXRTZWxlY3RlZElkcyhzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlcExpc3QudXBkYXRlSXRlbXMoY29udmVydGVkTGlzdCwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWRzIHBhZ2luZyBidWxrIGZyb20gYXBpXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBvbkxvYWRQYWdlKGV2ZW50OiBJUGVwTGlzdExvYWRQYWdlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZnJvbUluZGV4ID0gZXZlbnQucGFnZUluZGV4ICogZXZlbnQucGFnZVNpemU7XG4gICAgICAgIGNvbnN0IHRvSW5kZXggPSBNYXRoLm1pbihmcm9tSW5kZXggKyBldmVudC5wYWdlU2l6ZSAtIDEsIHRoaXMudG90YWxSb3dDb3VudCAtIDEpO1xuICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgdGhpcy51cGRhdGVEYXRhTGlzdChmcm9tSW5kZXgsIHRvSW5kZXgsIGV2ZW50LnBhZ2VJbmRleCk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZExpc3QgPSB0aGlzLl9kYXRhQ29udmVydG9yU2VydmljZS5jb252ZXJ0TGlzdERhdGEobGlzdCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuZ2V0U2VsZWN0ZWRJdGVtcyhjb252ZXJ0ZWRMaXN0KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wZXBMaXN0LnNldFNlbGVjdGVkSWRzKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVwTGlzdC51cGRhdGVQYWdlKGNvbnZlcnRlZExpc3QsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBnZXRJdGVtQnlJZChpZDogc3RyaW5nKTogT2JqZWN0c0RhdGFSb3cgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMucGVwTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BlcExpc3QuZ2V0SXRlbURhdGFCeUlEKGlkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRJdGVtcygpOiBQZXBTZWxlY3Rpb25EYXRhIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnBlcExpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wZXBMaXN0LmdldFNlbGVjdGVkSXRlbXNEYXRhKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhZ2VJbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVwTGlzdC5wYWdlSW5kZXg7XG4gICAgfVxuXG4gICAgb25BY3Rpb25JdGVtQ2xpY2tlZChhY3Rpb246IElQZXBNZW51SXRlbUNsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRNZW51T2JqZWN0cygpO1xuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzW2FjdGlvbi5zb3VyY2Uua2V5XShyZXN1bHQuZGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlYXJjaENoYW5nZWQoZXZlbnQ6IElQZXBTZWFyY2hDbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuaW5pdExpc3QoKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdGVkSXRlbXNDaGFuZ2VkKHNlbGVjdGVkUm93c0NvdW50OiBudW1iZXIpIHtcbiAgICAgICAgLy9sb2FkaW5nIG1lbnUgaXRlbXMgYWZ0ZXIgcGVwLWxpc3Qgc2VsZWN0ZWQgaXRlbXMgYXJlIHVwZGF0ZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRNZW51SXRlbXMoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgb25DdXN0b21pemVGaWVsZENsaWNrKGZpZWxkQ2xpY2tFdmVudDogSVBlcEZvcm1GaWVsZENsaWNrRXZlbnQpIHtcbiAgICAgICAgdGhpcy5maWVsZENsaWNrLmVtaXQoZmllbGRDbGlja0V2ZW50KTtcbiAgICB9XG5cbiAgICBvbkJyZWFkQ3J1bWJJdGVtQ2xpY2soZXZlbnQ6IElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnQpIHtcbiAgICAgICAgdGhpcy5icmVhZENydW1iSXRlbUNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2VkKGV2ZW50OiBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudCkge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uU29ydGluZ0NoYW5nZShldmVudDogSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5fc29ydGluZyA9IGV2ZW50O1xuICAgICAgICB0aGlzLmluaXRMaXN0KCk7XG4gICAgfVxuXG4gICAgb25GaWx0ZXJzQ2hhbmdlKGZpbHRlcnM6IElQZXBTbWFydEZpbHRlckRhdGFbXSkge1xuICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycyA9IGZpbHRlcnM7XG4gICAgICAgIHRoaXMuaW5pdExpc3QoKTtcbiAgICB9XG5cbiAgICBvbkxpc3RMb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RMb2FkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jlc2l6ZSQpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fbG9hZGVyJCkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGVyJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCI8ZGl2ICpuZ0lmPVwiaW5saW5lXCIgY2xhc3M9XCJpbmxpbmUtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyAnYWRkLXBhZGRpbmcnOiBhZGRQYWRkaW5nLCAnd2l0aC1zbWFydC1maWx0ZXJzJzogc2hvd1NtYXJ0RmlsdGVyIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWFyZWFcIiA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VG9wQmFyXCIgY2xhc3M9XCJpbmxpbmUtdG9wLWJhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BCYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1kZXNjcmlwdGlvblwiPnt7ZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkQ3J1bWJzSXRlbXMubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJlYWRDcnVtYnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NtYXJ0RmlsdGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzbWFydEZpbHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvbkxvYWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48cGVwLXBhZ2UtbGF5b3V0ICpuZ0lmPVwiIWlubGluZVwiIGNsYXNzPVwibm9uZS1pbmxpbmVcIiBbYWRkUGFkZGluZ109XCJhZGRQYWRkaW5nXCIgW3Nob3dTaGFkb3ddPVwic2hvd1NtYXJ0RmlsdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTbWFydEZpbHRlclwiIHBlcC1zaWRlLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzbWFydEZpbHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3BCYXJcIiBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BCYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXNjcmlwdGlvblwiIHBlcC10b3AtYXJlYT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZGVzY3JpcHRpb25cIj57e2Rlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRDcnVtYnNJdGVtcy5sZW5ndGhcIiBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmVhZENydW1ic1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAqbmdJZj1cIiFvbkxvYWRcIiBwZXAtbWFpbi1hcmVhIGNsYXNzPVwibWFpbi1hcmVhLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L3BlcC1wYWdlLWxheW91dD5cblxuPG5nLXRlbXBsYXRlICN0b3BCYXJUZW1wbGF0ZT5cbiAgICA8cGVwLXRvcC1iYXIgW3RpdGxlXT1cInRpdGxlXCIgW2lubGluZV09XCJpbmxpbmVcIj5cbiAgICAgICAgPGRpdiBoZWFkZXItc3RhcnQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsZWZ0LWJ1dHRvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBoZWFkZXItZW5kLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHQtYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgZm9vdGVyLXN0YXJ0LWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGVmdC1ib3R0b20tYXJlYV1cIj48L25nLWNvbnRlbnQ+ICAgICAgICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZvb3Rlci1lbmQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltyaWdodC1ib3R0b20tYXJlYV1cIj48L25nLWNvbnRlbnQ+ICAgICBcbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8cGVwLWxpc3QtYWN0aW9ucyAqbmdJZj1cIm1lbnVBY3Rpb25zLmxlbmd0aCA+IDBcIiBbc2l6ZVR5cGVdPVwiaW5saW5lID8gJ3NtJyA6ICdtZCdcIiBbYWN0aW9uc109XCJtZW51QWN0aW9uc1wiXG4gICAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2tlZCgkZXZlbnQpXCI+PC9wZXAtbGlzdC1hY3Rpb25zPlxuICAgICAgICA8cGVwLWxpc3QtdG90YWwgW3NpemVUeXBlXT1cImlubGluZSA/ICdzbScgOiAnbWQnXCIgW3RvdGFsUm93c109XCJ0b3RhbFJvd0NvdW50XCI+XG4gICAgICAgIDwvcGVwLWxpc3QtdG90YWw+XG4gICAgICAgIDxwZXAtc2VhcmNoICNzZWFyY2ggKm5nSWY9XCJzaG93U2VhcmNoXCIgW3ZhbHVlXT1cInNlYXJjaFN0cmluZ1wiIFtzaXplVHlwZV09XCJpbmxpbmUgPyAnc20nIDogJ21kJ1wiXG4gICAgICAgICAgICAoc2VhcmNoKT1cIm9uU2VhcmNoQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvcGVwLXNlYXJjaD5cbiAgICA8L3BlcC10b3AtYmFyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzbWFydEZpbHRlclRlbXBsYXRlPiAgICBcbiAgICA8cGVwLXNpZGUtYmFyICNzaWRlTmF2IFtuZ0NsYXNzXT1cInsnc21hcnQtZmlsdGVyLWFyZWEnOiBpbmxpbmV9XCI+IFxuICAgICAgICA8cGVwLXNtYXJ0LWZpbHRlcnMgI3NtYXJ0RmlsdGVyc0NvbXBvbmVudCBbdGl0bGVdPVwic21hcnRGaWx0ZXJzLnRpdGxlXCIgW2ZpZWxkc109XCJzbWFydEZpbHRlcnMuZmllbGRzXCJcbiAgICAgICAgICAgIFtmaWx0ZXJzXT1cInNtYXJ0RmlsdGVycy5kYXRhXCIgKGZpbHRlcnNDaGFuZ2UpPVwib25GaWx0ZXJzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9wZXAtc21hcnQtZmlsdGVycz5cbiAgICA8L3BlcC1zaWRlLWJhcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnJlYWRDcnVtYnNUZW1wbGF0ZT5cbiAgICA8cGVwLWJyZWFkLWNydW1icyBjbGFzcz1cImJyZWFkLWNydW1ic1wiIFtpdGVtc109XCJicmVhZENydW1ic0l0ZW1zXCIgW2FkZFNwYWNpbmddPVwidHJ1ZVwiIFtkaXNwbGF5VHlwZV09XCInaXRlbXMnXCJcbiAgICAgICAgKGl0ZW1DbGljayk9XCJvbkJyZWFkQ3J1bWJJdGVtQ2xpY2soJGV2ZW50KVwiPjwvcGVwLWJyZWFkLWNydW1icz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdFRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlTdGF0ZVwiIGNsYXNzPVwibGlzdC1lbXB0eS1zdGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS10aXRsZVwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS1kZXNjclwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfc2tpbnlcIiBjbGFzcz1cImxlYWYtc2tpbnlcIj48L3BlcC1pY29uPlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfcm91bmRcIiBjbGFzcz1cImxlYWYtcm91bmRcIj48L3BlcC1pY29uPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImxlYWYtc2tpbnlcIj5cbiAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9za2lueVwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+IC0tPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImxlYWYtcm91bmRcIj5cbiAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9yb3VuZFwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+IC0tPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhc2hvd0VtcHR5U3RhdGVcIiBjbGFzcz1cImxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3BlcExpc3RDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -124,11 +124,15 @@ export class PepGenericListService {
124
124
  }
125
125
  return smartFields;
126
126
  }
127
+ // TODO: This func is copy from ngx-lib write it in one place.
128
+ getUniqItemId(itemId, itemType = '') {
129
+ return itemId + ',' + itemType;
130
+ }
127
131
  getSelectedItems(items) {
128
132
  const selectedItems = [];
129
133
  for (let i = 0; i < items.length; i++) {
130
134
  if (items[i].IsSelected) {
131
- selectedItems.push(items[i].UID);
135
+ selectedItems.push(this.getUniqItemId(items[i].UID, items[i].Type?.toString()));
132
136
  }
133
137
  }
134
138
  return selectedItems;
@@ -139,4 +143,4 @@ PepGenericListService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0"
139
143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGenericListService, decorators: [{
140
144
  type: Injectable
141
145
  }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.PepQueryBuilderService }]; } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9nZW5lcmljLWxpc3QvZ2VuZXJpYy1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVkzQyxPQUFPLEVBQ0gsVUFBVSxFQUViLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFxQixrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7O0FBR3pHLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFDWSxVQUE0QixFQUM1QixvQkFBNEM7UUFENUMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF3QjtRQUVwRCxFQUFFO0lBQ04sQ0FBQztJQUVEOzs7OztLQUtDO0lBQ0QsV0FBVyxDQUFDLEdBQVEsRUFBRSxJQUFZO1FBQzlCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQW9CO1FBQ2hDLFFBQVEsWUFBWSxFQUFFO1lBQ2xCLEtBQUssTUFBTTtnQkFDUCxPQUFPLE9BQU8sQ0FBQztZQUNuQixLQUFLLE1BQU07Z0JBQ1AsT0FBTyxPQUFPLENBQUM7WUFDbkIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sT0FBTyxDQUFDO1lBQ25CO2dCQUNJLE9BQU8sT0FBTyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVMsRUFBRSxRQUFhLEVBQUUsV0FBbUI7UUFDN0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixJQUFJLFVBQWUsQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxXQUFXLENB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QTBCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkYsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLEVBQUU7WUFDM0IsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBdUI7UUFDcEMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRTtnQkFDckIsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDcEM7U0FDSjtRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7O2tIQWpKUSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcixcbiAgICBJUGVwR2VuZXJpY0xpc3REYXRhVmlld0ZpZWxkLFxuICAgIElQZXBTbWFydEZpbHRlcnNcbn0gZnJvbSAnLi9nZW5lcmljLWxpc3QubW9kZWwnO1xuaW1wb3J0IHtcbiAgICBQZXBTbWFydEZpbHRlckJhc2VGaWVsZCxcbiAgICBJUGVwU21hcnRGaWx0ZXJEYXRhLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zbWFydC1maWx0ZXJzJztcbmltcG9ydCB7IFBlcFF1ZXJ5QnVpbGRlclNlcnZpY2UsIElQZXBRdWVyeUJ1aWxkZXJGaWVsZCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3F1ZXJ5LWJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgICBQZXBSb3dEYXRhLFxuICAgIE9iamVjdHNEYXRhUm93XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IEdyaWREYXRhVmlld0ZpZWxkLCBEYXRhVmlld0ZpZWxkVHlwZXMgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsvZGlzdC9lbnRpdGllcy9kYXRhLXZpZXcnO1xuXG5ASW5qZWN0YWJsZSgpIFxuZXhwb3J0IGNsYXNzIFBlcEdlbmVyaWNMaXN0U2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9xdWVyeUJ1aWxkZXJTZXJ2aWNlOiBQZXBRdWVyeUJ1aWxkZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgLyoqXG4gICAqIGNoZWNrcyBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHByb3BlcnR5XG4gICAqIEBwYXJhbSBvYmogb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wIHByb3BlcnR5IG5hbWVcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBjb250YWlucywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICAgIGhhc1Byb3BlcnR5KG9iajogYW55LCBwcm9wOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xuICAgIH1cblxuICAgIGdldExpc3RWaWV3VHlwZShkYXRhVmlld1R5cGU6IHN0cmluZykge1xuICAgICAgICBzd2l0Y2ggKGRhdGFWaWV3VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnR3JpZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0YWJsZSc7XG4gICAgICAgICAgICBjYXNlICdDYXJkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NhcmRzJztcbiAgICAgICAgICAgIGNhc2UgJ0xpbmUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbGluZXMnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RhYmxlJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnZlcnRUb1BlcFJvd0RhdGEoaXRlbTogYW55LCBkYXRhVmlldzogYW55LCB1dWlkTWFwcGluZzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IG5ldyBQZXBSb3dEYXRhKCk7XG4gICAgICAgIGxldCBpdGVtRmllbGRzOiBhbnk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUHJvcGVydHkoaXRlbSwgJ2ZpZWxkcycpICYmIHR5cGVvZiBpdGVtLmZpZWxkcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGl0ZW1GaWVsZHMgPSBpdGVtLmZpZWxkcztcbiAgICAgICAgICAgIGlmIChpdGVtLmlzRWRpdGFibGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcm93LklzRWRpdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmlzU2VsZWN0YWJsZUZvckFjdGlvbnMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcm93LklzU2VsZWN0YWJsZUZvckFjdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmlzRWRpdGFibGUgJiYgaXRlbS5pc1NlbGVjdGFibGVGb3JBY3Rpb25zICYmIGl0ZW0uaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHJvdy5Jc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1GaWVsZHMgPSBpdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93LlVVSUQgPSBpdGVtRmllbGRzW3V1aWRNYXBwaW5nXSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIHJvdy5GaWVsZHMgPSBbXTtcblxuICAgICAgICBpZiAoZGF0YVZpZXc/LkZpZWxkcyAmJiBkYXRhVmlldy5Db2x1bW5zKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YVZpZXcuRmllbGRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZGF0YVZpZXcuRmllbGRzW2luZGV4XSBhcyBJUGVwR2VuZXJpY0xpc3REYXRhVmlld0ZpZWxkO1xuICAgICAgICAgICAgICAgIHJvdy5GaWVsZHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIEFwaU5hbWU6IGZpZWxkLkZpZWxkSUQsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBmaWVsZC5UaXRsZSA/IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGZpZWxkLlRpdGxlKSA6ICcnLFxuICAgICAgICAgICAgICAgICAgICBYQWxpZ25tZW50OiAxLFxuICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZTogKGl0ZW1GaWVsZHNbZmllbGQuRmllbGRJRF0gfHwgJycpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIFZhbHVlOiAoaXRlbUZpZWxkc1tmaWVsZC5GaWVsZElEXSB8fCAnJykudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGg6IGRhdGFWaWV3LkNvbHVtbnNbaW5kZXhdPy5XaWR0aCB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxWYWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsVmFsdWVzOiBmaWVsZC5PcHRpb25hbFZhbHVlcyB8fCBbXSxcbiAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlOiBEYXRhVmlld0ZpZWxkVHlwZXNbZmllbGQuVHlwZV0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5OiBmaWVsZC5SZWFkT25seSxcbiAgICAgICAgICAgICAgICAgICAgRW5hYmxlZDogIWZpZWxkLlJlYWRPbmx5XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93O1xuICAgIH1cblxuICAgIGNvbnZlcnRUb1VpQ29udHJvbEZpZWxkKGZpZWxkOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFwaU5hbWU6IGZpZWxkLkFwaU5hbWUsXG4gICAgICAgICAgICBGaWVsZFR5cGU6IGZpZWxkLkZpZWxkVHlwZSxcbiAgICAgICAgICAgIFRpdGxlOiBmaWVsZC5UaXRsZSxcbiAgICAgICAgICAgIFJlYWRPbmx5OiBmaWVsZC5SZWFkT25seUZpZWxkLFxuICAgICAgICAgICAgQ29sdW1uV2lkdGg6IGZpZWxkLkNvbHVtbldpZHRoLFxuICAgICAgICAgICAgQ29sdW1uV2lkdGhUeXBlOiAxLFxuICAgICAgICAgICAgTGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgWDogZmllbGQuTGF5b3V0LlgsXG4gICAgICAgICAgICAgICAgWTogZmllbGQuTGF5b3V0LlksXG4gICAgICAgICAgICAgICAgV2lkdGg6IGZpZWxkLkxheW91dC5XaWR0aCxcbiAgICAgICAgICAgICAgICBIZWlnaHQ6IGZpZWxkLkxheW91dC5GaWVsZF9IZWlnaHQsXG4gICAgICAgICAgICAgICAgWEFsaWdubWVudDogZmllbGQuTGF5b3V0LnhBbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgWUFsaWdubWVudDogZmllbGQuTGF5b3V0LnlBbGlnbm1lbnQsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb252ZXJ0VG9TbWFydEZpbHRlcihpbnB1dDogSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIpIHsgICAgICAgIFxuICAgICAgICBjb25zdCBzbWFydEZpbHRlcnM6IElQZXBTbWFydEZpbHRlcnMgPSB7XG4gICAgICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgICAgICAgZGF0YTogW10sXG4gICAgICAgICAgICB0aXRsZTogJ0ZpbHRlcnMnXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5kYXRhVmlldykge1xuICAgICAgICAgICAgICAgIHNtYXJ0RmlsdGVycy5maWVsZHMgPSB0aGlzLmNyZWF0ZVNtYXJ0RmlsdGVyRmllbGRzKGlucHV0LmRhdGFWaWV3KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHNtYXJ0RmlsdGVycy5kYXRhID0gaW5wdXQuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5wdXQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICBzbWFydEZpbHRlcnMudGl0bGUgPSBpbnB1dC50aXRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzbWFydEZpbHRlcnM7ICAgICAgICBcbiAgICB9XG5cbiAgICBjcmVhdGVTbWFydEZpbHRlckZpZWxkcyhkYXRhVmlldzogYW55KSB7XG4gICAgICAgIGxldCBzbWFydEZpZWxkczogUGVwU21hcnRGaWx0ZXJCYXNlRmllbGRbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGRhdGFWaWV3LkZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgRmllbGRJRDogZmllbGQuRmllbGRJRCxcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGU6IGZpZWxkLlR5cGUsXG4gICAgICAgICAgICAgICAgVGl0bGU6IGZpZWxkLlRpdGxlLFxuICAgICAgICAgICAgICAgIE9wdGlvbmFsVmFsdWVzOiBmaWVsZC5PcHRpb25hbFZhbHVlc1xuICAgICAgICAgICAgfSBhcyBJUGVwUXVlcnlCdWlsZGVyRmllbGRcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNtYXJ0RmlsdGVyZmllbGRzID0gdGhpcy5fcXVlcnlCdWlsZGVyU2VydmljZS5jb252ZXJ0VG9TbWFydEZpbHRlckZpZWxkcyhmaWVsZHMpO1xuICAgICAgICBpZiAoc21hcnRGaWx0ZXJmaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgc21hcnRGaWVsZHMgPSBzbWFydEZpbHRlcmZpZWxkcy5tYXAoKGZpZWxkID0+IGZpZWxkLnNtYXJ0KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc21hcnRGaWVsZHM7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRJdGVtcyhpdGVtczogT2JqZWN0c0RhdGFSb3dbXSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGl0ZW1zW2ldLklzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbXNbaV0uVUlEKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zO1xuICAgIH1cblxuXG59Il19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9nZW5lcmljLWxpc3QvZ2VuZXJpYy1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVkzQyxPQUFPLEVBQ0gsVUFBVSxFQUViLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFxQixrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7O0FBR3pHLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFDWSxVQUE0QixFQUM1QixvQkFBNEM7UUFENUMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF3QjtRQUVwRCxFQUFFO0lBQ04sQ0FBQztJQUVEOzs7OztLQUtDO0lBQ0QsV0FBVyxDQUFDLEdBQVEsRUFBRSxJQUFZO1FBQzlCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQW9CO1FBQ2hDLFFBQVEsWUFBWSxFQUFFO1lBQ2xCLEtBQUssTUFBTTtnQkFDUCxPQUFPLE9BQU8sQ0FBQztZQUNuQixLQUFLLE1BQU07Z0JBQ1AsT0FBTyxPQUFPLENBQUM7WUFDbkIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sT0FBTyxDQUFDO1lBQ25CO2dCQUNJLE9BQU8sT0FBTyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVMsRUFBRSxRQUFhLEVBQUUsV0FBbUI7UUFDN0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixJQUFJLFVBQWUsQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxXQUFXLENB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QTBCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkYsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLEVBQUU7WUFDM0IsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsOERBQThEO0lBQ3RELGFBQWEsQ0FBQyxNQUFjLEVBQUUsUUFBUSxHQUFHLEVBQUU7UUFDL0MsT0FBTyxNQUFNLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBdUI7UUFDcEMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRTtnQkFDckIsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbkY7U0FDSjtRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7O2tIQXRKUSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcixcbiAgICBJUGVwR2VuZXJpY0xpc3REYXRhVmlld0ZpZWxkLFxuICAgIElQZXBTbWFydEZpbHRlcnNcbn0gZnJvbSAnLi9nZW5lcmljLWxpc3QubW9kZWwnO1xuaW1wb3J0IHtcbiAgICBQZXBTbWFydEZpbHRlckJhc2VGaWVsZCxcbiAgICBJUGVwU21hcnRGaWx0ZXJEYXRhLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zbWFydC1maWx0ZXJzJztcbmltcG9ydCB7IFBlcFF1ZXJ5QnVpbGRlclNlcnZpY2UsIElQZXBRdWVyeUJ1aWxkZXJGaWVsZCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3F1ZXJ5LWJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgICBQZXBSb3dEYXRhLFxuICAgIE9iamVjdHNEYXRhUm93XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IEdyaWREYXRhVmlld0ZpZWxkLCBEYXRhVmlld0ZpZWxkVHlwZXMgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsvZGlzdC9lbnRpdGllcy9kYXRhLXZpZXcnO1xuXG5ASW5qZWN0YWJsZSgpIFxuZXhwb3J0IGNsYXNzIFBlcEdlbmVyaWNMaXN0U2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9xdWVyeUJ1aWxkZXJTZXJ2aWNlOiBQZXBRdWVyeUJ1aWxkZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgLyoqXG4gICAqIGNoZWNrcyBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHByb3BlcnR5XG4gICAqIEBwYXJhbSBvYmogb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wIHByb3BlcnR5IG5hbWVcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBjb250YWlucywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICAgIGhhc1Byb3BlcnR5KG9iajogYW55LCBwcm9wOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xuICAgIH1cblxuICAgIGdldExpc3RWaWV3VHlwZShkYXRhVmlld1R5cGU6IHN0cmluZykge1xuICAgICAgICBzd2l0Y2ggKGRhdGFWaWV3VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnR3JpZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0YWJsZSc7XG4gICAgICAgICAgICBjYXNlICdDYXJkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NhcmRzJztcbiAgICAgICAgICAgIGNhc2UgJ0xpbmUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbGluZXMnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RhYmxlJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnZlcnRUb1BlcFJvd0RhdGEoaXRlbTogYW55LCBkYXRhVmlldzogYW55LCB1dWlkTWFwcGluZzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IG5ldyBQZXBSb3dEYXRhKCk7XG4gICAgICAgIGxldCBpdGVtRmllbGRzOiBhbnk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUHJvcGVydHkoaXRlbSwgJ2ZpZWxkcycpICYmIHR5cGVvZiBpdGVtLmZpZWxkcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGl0ZW1GaWVsZHMgPSBpdGVtLmZpZWxkcztcbiAgICAgICAgICAgIGlmIChpdGVtLmlzRWRpdGFibGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcm93LklzRWRpdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmlzU2VsZWN0YWJsZUZvckFjdGlvbnMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcm93LklzU2VsZWN0YWJsZUZvckFjdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmlzRWRpdGFibGUgJiYgaXRlbS5pc1NlbGVjdGFibGVGb3JBY3Rpb25zICYmIGl0ZW0uaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHJvdy5Jc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1GaWVsZHMgPSBpdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93LlVVSUQgPSBpdGVtRmllbGRzW3V1aWRNYXBwaW5nXSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIHJvdy5GaWVsZHMgPSBbXTtcblxuICAgICAgICBpZiAoZGF0YVZpZXc/LkZpZWxkcyAmJiBkYXRhVmlldy5Db2x1bW5zKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YVZpZXcuRmllbGRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZGF0YVZpZXcuRmllbGRzW2luZGV4XSBhcyBJUGVwR2VuZXJpY0xpc3REYXRhVmlld0ZpZWxkO1xuICAgICAgICAgICAgICAgIHJvdy5GaWVsZHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIEFwaU5hbWU6IGZpZWxkLkZpZWxkSUQsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBmaWVsZC5UaXRsZSA/IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGZpZWxkLlRpdGxlKSA6ICcnLFxuICAgICAgICAgICAgICAgICAgICBYQWxpZ25tZW50OiAxLFxuICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZTogKGl0ZW1GaWVsZHNbZmllbGQuRmllbGRJRF0gfHwgJycpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIFZhbHVlOiAoaXRlbUZpZWxkc1tmaWVsZC5GaWVsZElEXSB8fCAnJykudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGg6IGRhdGFWaWV3LkNvbHVtbnNbaW5kZXhdPy5XaWR0aCB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxWYWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsVmFsdWVzOiBmaWVsZC5PcHRpb25hbFZhbHVlcyB8fCBbXSxcbiAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlOiBEYXRhVmlld0ZpZWxkVHlwZXNbZmllbGQuVHlwZV0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5OiBmaWVsZC5SZWFkT25seSxcbiAgICAgICAgICAgICAgICAgICAgRW5hYmxlZDogIWZpZWxkLlJlYWRPbmx5XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93O1xuICAgIH1cblxuICAgIGNvbnZlcnRUb1VpQ29udHJvbEZpZWxkKGZpZWxkOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFwaU5hbWU6IGZpZWxkLkFwaU5hbWUsXG4gICAgICAgICAgICBGaWVsZFR5cGU6IGZpZWxkLkZpZWxkVHlwZSxcbiAgICAgICAgICAgIFRpdGxlOiBmaWVsZC5UaXRsZSxcbiAgICAgICAgICAgIFJlYWRPbmx5OiBmaWVsZC5SZWFkT25seUZpZWxkLFxuICAgICAgICAgICAgQ29sdW1uV2lkdGg6IGZpZWxkLkNvbHVtbldpZHRoLFxuICAgICAgICAgICAgQ29sdW1uV2lkdGhUeXBlOiAxLFxuICAgICAgICAgICAgTGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgWDogZmllbGQuTGF5b3V0LlgsXG4gICAgICAgICAgICAgICAgWTogZmllbGQuTGF5b3V0LlksXG4gICAgICAgICAgICAgICAgV2lkdGg6IGZpZWxkLkxheW91dC5XaWR0aCxcbiAgICAgICAgICAgICAgICBIZWlnaHQ6IGZpZWxkLkxheW91dC5GaWVsZF9IZWlnaHQsXG4gICAgICAgICAgICAgICAgWEFsaWdubWVudDogZmllbGQuTGF5b3V0LnhBbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgWUFsaWdubWVudDogZmllbGQuTGF5b3V0LnlBbGlnbm1lbnQsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb252ZXJ0VG9TbWFydEZpbHRlcihpbnB1dDogSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIpIHsgICAgICAgIFxuICAgICAgICBjb25zdCBzbWFydEZpbHRlcnM6IElQZXBTbWFydEZpbHRlcnMgPSB7XG4gICAgICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgICAgICAgZGF0YTogW10sXG4gICAgICAgICAgICB0aXRsZTogJ0ZpbHRlcnMnXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5kYXRhVmlldykge1xuICAgICAgICAgICAgICAgIHNtYXJ0RmlsdGVycy5maWVsZHMgPSB0aGlzLmNyZWF0ZVNtYXJ0RmlsdGVyRmllbGRzKGlucHV0LmRhdGFWaWV3KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHNtYXJ0RmlsdGVycy5kYXRhID0gaW5wdXQuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5wdXQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICBzbWFydEZpbHRlcnMudGl0bGUgPSBpbnB1dC50aXRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzbWFydEZpbHRlcnM7ICAgICAgICBcbiAgICB9XG5cbiAgICBjcmVhdGVTbWFydEZpbHRlckZpZWxkcyhkYXRhVmlldzogYW55KSB7XG4gICAgICAgIGxldCBzbWFydEZpZWxkczogUGVwU21hcnRGaWx0ZXJCYXNlRmllbGRbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGRhdGFWaWV3LkZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgRmllbGRJRDogZmllbGQuRmllbGRJRCxcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGU6IGZpZWxkLlR5cGUsXG4gICAgICAgICAgICAgICAgVGl0bGU6IGZpZWxkLlRpdGxlLFxuICAgICAgICAgICAgICAgIE9wdGlvbmFsVmFsdWVzOiBmaWVsZC5PcHRpb25hbFZhbHVlc1xuICAgICAgICAgICAgfSBhcyBJUGVwUXVlcnlCdWlsZGVyRmllbGRcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNtYXJ0RmlsdGVyZmllbGRzID0gdGhpcy5fcXVlcnlCdWlsZGVyU2VydmljZS5jb252ZXJ0VG9TbWFydEZpbHRlckZpZWxkcyhmaWVsZHMpO1xuICAgICAgICBpZiAoc21hcnRGaWx0ZXJmaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgc21hcnRGaWVsZHMgPSBzbWFydEZpbHRlcmZpZWxkcy5tYXAoKGZpZWxkID0+IGZpZWxkLnNtYXJ0KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc21hcnRGaWVsZHM7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVGhpcyBmdW5jIGlzIGNvcHkgZnJvbSBuZ3gtbGliIHdyaXRlIGl0IGluIG9uZSBwbGFjZS5cbiAgICBwcml2YXRlIGdldFVuaXFJdGVtSWQoaXRlbUlkOiBzdHJpbmcsIGl0ZW1UeXBlID0gJycpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbUlkICsgJywnICsgaXRlbVR5cGU7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRJdGVtcyhpdGVtczogT2JqZWN0c0RhdGFSb3dbXSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGl0ZW1zW2ldLklzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2godGhpcy5nZXRVbmlxSXRlbUlkKGl0ZW1zW2ldLlVJRCwgaXRlbXNbaV0uVHlwZT8udG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbXM7XG4gICAgfVxuXG5cbn0iXX0=
@@ -152,11 +152,16 @@ class PepGenericListService {
152
152
  }
153
153
  return smartFields;
154
154
  }
155
+ // TODO: This func is copy from ngx-lib write it in one place.
156
+ getUniqItemId(itemId, itemType = '') {
157
+ return itemId + ',' + itemType;
158
+ }
155
159
  getSelectedItems(items) {
160
+ var _a;
156
161
  const selectedItems = [];
157
162
  for (let i = 0; i < items.length; i++) {
158
163
  if (items[i].IsSelected) {
159
- selectedItems.push(items[i].UID);
164
+ selectedItems.push(this.getUniqItemId(items[i].UID, (_a = items[i].Type) === null || _a === void 0 ? void 0 : _a.toString()));
160
165
  }
161
166
  }
162
167
  return selectedItems;
@@ -357,6 +362,7 @@ class GenericListComponent {
357
362
  this.onSortingChange($event);
358
363
  });
359
364
  componentRef.instance.listLoad.subscribe(($event) => {
365
+ this.onSelectedItemsChanged(this._pepList.selectedItems.length);
360
366
  this.onListLoad();
361
367
  });
362
368
  let convertedList = [];
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-composite-lib-generic-list.mjs","sources":["../../../projects/ngx-composite-lib/generic-list/generic-list.service.ts","../../../projects/ngx-composite-lib/generic-list/generic-list.component.ts","../../../projects/ngx-composite-lib/generic-list/generic-list.component.html","../../../projects/ngx-composite-lib/generic-list/generic-list.module.ts","../../../projects/ngx-composite-lib/generic-list/public-api.ts","../../../projects/ngx-composite-lib/generic-list/pepperi-addons-ngx-composite-lib-generic-list.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n IPepGenericListSmartFilter,\n IPepGenericListDataViewField,\n IPepSmartFilters\n} from './generic-list.model';\nimport {\n PepSmartFilterBaseField,\n IPepSmartFilterData,\n} from '@pepperi-addons/ngx-lib/smart-filters';\nimport { PepQueryBuilderService, IPepQueryBuilderField } from '@pepperi-addons/ngx-lib/query-builder';\nimport {\n PepRowData,\n ObjectsDataRow\n} from '@pepperi-addons/ngx-lib';\nimport { GridDataViewField, DataViewFieldTypes } from '@pepperi-addons/papi-sdk/dist/entities/data-view';\n\n@Injectable() \nexport class PepGenericListService {\n\n constructor(\n private _translate: TranslateService,\n private _queryBuilderService: PepQueryBuilderService\n ) {\n //\n }\n\n /**\n * checks if the object contains property\n * @param obj object\n * @param prop property name\n * @returns true if contains, false otherwise\n */\n hasProperty(obj: any, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n getListViewType(dataViewType: string) {\n switch (dataViewType) {\n case 'Grid':\n return 'table';\n case 'Card':\n return 'cards';\n case 'Line':\n return 'lines';\n default:\n return 'table';\n }\n }\n\n convertToPepRowData(item: any, dataView: any, uuidMapping: string) {\n const row = new PepRowData();\n let itemFields: any;\n\n if (this.hasProperty(item, 'fields') && typeof item.fields === 'object') {\n itemFields = item.fields;\n if (item.isEditable === false) {\n row.IsEditable = false;\n }\n if (item.isSelectableForActions === false) {\n row.IsSelectableForActions = false;\n }\n if (item.isEditable && item.isSelectableForActions && item.isSelected) {\n row.IsSelected = true;\n }\n } else {\n itemFields = item;\n }\n\n row.UUID = itemFields[uuidMapping] || undefined;\n row.Fields = [];\n\n if (dataView?.Fields && dataView.Columns) {\n for (let index = 0; index < dataView.Fields.length; index++) {\n const field = dataView.Fields[index] as IPepGenericListDataViewField;\n row.Fields.push({\n ApiName: field.FieldID,\n Title: field.Title ? this._translate.instant(field.Title) : '',\n XAlignment: 1,\n FormattedValue: (itemFields[field.FieldID] || '').toString(),\n Value: (itemFields[field.FieldID] || '').toString(),\n ColumnWidth: dataView.Columns[index]?.Width || undefined,\n AdditionalValue: '',\n OptionalValues: field.OptionalValues || [],\n FieldType: DataViewFieldTypes[field.Type],\n ReadOnly: field.ReadOnly,\n Enabled: !field.ReadOnly\n })\n }\n }\n return row;\n }\n\n convertToUiControlField(field: any) {\n return {\n ApiName: field.ApiName,\n FieldType: field.FieldType,\n Title: field.Title,\n ReadOnly: field.ReadOnlyField,\n ColumnWidth: field.ColumnWidth,\n ColumnWidthType: 1,\n Layout: {\n X: field.Layout.X,\n Y: field.Layout.Y,\n Width: field.Layout.Width,\n Height: field.Layout.Field_Height,\n XAlignment: field.Layout.xAlignment,\n YAlignment: field.Layout.yAlignment,\n }\n }\n }\n\n convertToSmartFilter(input: IPepGenericListSmartFilter) { \n const smartFilters: IPepSmartFilters = {\n fields: [],\n data: [],\n title: 'Filters'\n }\n\n if (input) {\n if (input.dataView) {\n smartFilters.fields = this.createSmartFilterFields(input.dataView);\n if (input.data?.length) {\n smartFilters.data = input.data;\n }\n }\n if (input.title) {\n smartFilters.title = input.title;\n }\n }\n\n return smartFilters; \n }\n\n createSmartFilterFields(dataView: any) {\n let smartFields: PepSmartFilterBaseField[] = [];\n\n const fields = dataView.Fields.map((field: any) => {\n return {\n FieldID: field.FieldID,\n FieldType: field.Type,\n Title: field.Title,\n OptionalValues: field.OptionalValues\n } as IPepQueryBuilderField\n });\n const smartFilterfields = this._queryBuilderService.convertToSmartFilterFields(fields);\n if (smartFilterfields?.length) {\n smartFields = smartFilterfields.map((field => field.smart));\n }\n\n return smartFields;\n }\n\n getSelectedItems(items: ObjectsDataRow[]) {\n const selectedItems = [];\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].IsSelected) {\n selectedItems.push(items[i].UID);\n }\n }\n\n return selectedItems;\n }\n\n\n}","import {\n Component,\n OnInit,\n ViewChild,\n Input,\n Output,\n EventEmitter,\n ViewContainerRef\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PepDataConvertorService,\n PepLayoutService,\n ObjectsDataRow,\n PepGuid,\n UIControl,\n PepLoaderService,\n PepRowData,\n PepSessionService\n} from '@pepperi-addons/ngx-lib';\nimport { Subscription } from 'rxjs';\nimport { IPepFormFieldClickEvent } from '@pepperi-addons/ngx-lib/form';\nimport {\n PepListComponent,\n PepSelectionData,\n IPepListLoadPageEvent,\n PepListSelectionType,\n IPepListSortingChangeEvent,\n DEFAULT_PAGE_SIZE,\n IPepListLoadItemsEvent,\n PepListTableViewType,\n IPepListSortingData,\n IPepListStartIndexChangeEvent\n} from '@pepperi-addons/ngx-lib/list';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { IPepFormFieldValueChangeEvent } from '@pepperi-addons/ngx-lib/form';\nimport {\n PepBreadCrumbItem,\n IPepBreadCrumbItemClickEvent\n} from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { IPepSearchClickEvent, PepSearchComponent } from '@pepperi-addons/ngx-lib/search';\n\nimport {\n DataView,\n GridDataView\n} from '@pepperi-addons/papi-sdk/dist/entities/data-view';\nimport {\n IPepGenericListInitData,\n IPepGenericListDataSource,\n IPepGenericListPager,\n IPepGenericListActions,\n IPepGenericListSmartFilter,\n IPepSmartFilters,\n IPepGenericListEmptyState\n} from './generic-list.model';\nimport { PepGenericListService } from './generic-list.service';\nimport { DataViewConverter } from '@pepperi-addons/data-views';\nimport {\n IPepSmartFilterData,\n PepSmartFilterBaseField,\n PepSmartFiltersComponent\n} from '@pepperi-addons/ngx-lib/smart-filters';\n\n\n@Component({\n selector: 'pep-generic-list',\n templateUrl: './generic-list.component.html',\n styleUrls: ['./generic-list.component.scss', './generic-list.component.theme.scss'],\n providers: [PepGenericListService]\n})\nexport class GenericListComponent implements OnInit {\n @ViewChild('search') search: PepSearchComponent | undefined;\n @ViewChild('smartFiltersComponent') smartFiltersComponent: PepSmartFiltersComponent | undefined;\n\n private _pepListContainer: ViewContainerRef | undefined;\n @ViewChild('pepListContainer', { read: ViewContainerRef })\n set pepListContainer(val: ViewContainerRef) {\n this._pepListContainer = val;\n }\n\n private _dataSource: IPepGenericListDataSource = {\n init: async (params: any) => {\n return {\n dataView: {\n Type: 'Grid'\n },\n totalCount: -1,\n items: []\n }\n }\n }\n @Input()\n set dataSource(val: IPepGenericListDataSource) {\n this._dataSource = val;\n this._sorting = undefined;\n this.initSearch();\n this.initSmartSearch();\n this.initList();\n }\n\n @Input()\n actions: IPepGenericListActions = {\n get: async (data: any) => {\n return []\n }\n };\n\n @Input()\n uuidMapping = 'key';\n\n @Input()\n disabled = false;\n\n @Input()\n addPadding = false;\n\n @Input()\n title = '';\n\n @Input()\n description = '';\n\n @Input()\n inline = false;\n\n @Input()\n showSearch = false;\n\n @Input()\n noDataFoundMsg = '';\n\n @Input()\n emptyState: IPepGenericListEmptyState | undefined;\n\n @Input()\n selectionType: PepListSelectionType = 'multi';\n\n @Input()\n supportSorting = false;\n\n @Input()\n sorting: IPepListSortingData | undefined;\n\n @Input()\n cacheSize = -1;\n\n @Input()\n hideSelectAll = false;\n \n @Input()\n pager: IPepGenericListPager = {\n type: 'scroll'\n }\n\n @Input()\n tableViewType: PepListTableViewType = 'regular';\n\n @Input()\n zebraStripes = false;\n\n @Input()\n set smartFilter(val: IPepGenericListSmartFilter) {\n this.smartFilters = this._genericListService.convertToSmartFilter(val);\n this._appliedFilters = this.smartFilters.data || [];\n this.showSmartFilter = this.smartFilters.fields.length > 0; \n }\n\n @Input()\n showTopBar = false;\n\n @Input()\n breadCrumbsItems: PepBreadCrumbItem[] = new Array<PepBreadCrumbItem>();\n\n @Input()\n selectAll = false\n\n @Input()\n scrollPosition = 0\n\n @Output()\n fieldClick = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output()\n valueChange = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @Output()\n breadCrumbItemClick = new EventEmitter<IPepBreadCrumbItemClickEvent>();\n\n @Output()\n startIndexChange = new EventEmitter<IPepListStartIndexChangeEvent>()\n\n @Output()\n listLoad: EventEmitter<void> = new EventEmitter<void>();\n\n set pepList(val: PepListComponent) {\n this._pepList = val;\n }\n\n get pepList() {\n return this._pepList;\n }\n\n private _resize$: Subscription = new Subscription();\n private _loader$: Subscription = new Subscription();\n\n private _dataView: DataView = {\n Type: 'Grid'\n };\n private _pepList: any;\n onLoad = true;\n listInputs: any;\n totalRowCount = -1;\n searchString = '';\n showSmartFilter = false;\n showEmptyState = false;\n smartFilters: IPepSmartFilters = {\n fields: [],\n data: [],\n title: 'Filters'\n };\n private _appliedFilters: IPepSmartFilterData[] = [];\n private _sorting: IPepListSortingChangeEvent | undefined = undefined;\n\n menuHandlers: { [key: string]: (obj: any) => Promise<void> } = {};\n menuActions: Array<PepMenuItem> = [];\n\n constructor(\n private _dataConvertorService: PepDataConvertorService,\n private _layoutService: PepLayoutService,\n private _loaderService: PepLoaderService,\n private _translate: TranslateService,\n private _genericListService: PepGenericListService,\n private _sessionService: PepSessionService\n ) {\n this._resize$ = this._layoutService.onResize$.pipe().subscribe((size) => { \n // \n });\n this._loader$ = this._loaderService.onChanged$.subscribe((status: boolean) => {\n //\n });\n }\n\n ngOnInit() {\n //\n }\n\n private async initList() {\n this.onLoad = true;\n setTimeout(async () => { //making sure all input data is available\n if (this._dataSource) {\n //merge selector inputs with callback inputs\n this.loadTableInputs();\n\n let fromIndex = 0;\n let toIndex = 0;\n\n if (this.listInputs.pager.type === 'pages') {\n fromIndex = this.listInputs.pager.size * this.listInputs.pager.index;\n toIndex = fromIndex + (this.listInputs.pager.size || DEFAULT_PAGE_SIZE) - 1;\n } else {\n toIndex = 100;//TO DO - get value from - this.customList.getTopItems()\n }\n\n const data = await this.loadData(fromIndex, toIndex);\n \n if (this.listInputs?.emptyState?.show === true) {\n this.setEmptyState();\n }\n this.onLoad = false;\n //show empty state\n if (this.showEmptyState) {\n if (!this.listInputs.emptyState.title) { \n this._translate.get('GENERIC_LIST.EMPTY_STATE.TITLE').subscribe(text => { \n this.listInputs.emptyState.title = text;\n });\n }\n if (!this.listInputs.emptyState.description) { \n this._translate.get('GENERIC_LIST.EMPTY_STATE.DESCRIPTION').subscribe(text => { \n this.listInputs.emptyState.description = text;\n });\n }\n return;\n }\n setTimeout(async () => {\n if (this._pepListContainer) {\n if (this._pepListContainer.length > 0) {\n this._pepListContainer.remove();\n }\n const { PepListComponent } = await import('@pepperi-addons/ngx-lib/list');\n const componentRef = this._pepListContainer.createComponent(PepListComponent);\n\n this.pepList = componentRef.instance;\n \n componentRef.instance.viewType = this._genericListService.getListViewType(this._dataView.Type);\n componentRef.instance.tableViewType = this.listInputs.tableViewType;\n componentRef.instance.zebraStripes = this.listInputs.zebraStripes;\n if (this.disabled) {\n componentRef.instance.disabled = true;\n componentRef.instance.lockItemInnerEvents = true;\n }\n componentRef.instance.supportSorting = this.listInputs.supportSorting;\n componentRef.instance.sorting = this.listInputs.sorting;\n componentRef.instance.cacheSize = this.listInputs.cacheSize;\n\n componentRef.instance.selectionTypeForActions = this.listInputs.selectionType;\n componentRef.instance.hideAllSelectionInMulti = this.listInputs.hideSelectAll;\n\n componentRef.instance.showCardSelection = this.listInputs.selectionType !== 'none';\n componentRef.instance.pagerType = this.listInputs.pager.type;\n if (this.listInputs.pager.type === 'pages') {\n componentRef.instance.pageSize = this.listInputs.pager?.size || DEFAULT_PAGE_SIZE;\n componentRef.instance.pageIndex = this.listInputs.pager?.index || 0;\n }\n if(this.selectionType == \"multi\" && this.selectAll){\n this._sessionService.setObject('AllSelected', true)\n }\n componentRef.instance.noDataFoundMsg = this.listInputs.noDataFoundMsg;\n componentRef.instance.startIndexChange.subscribe($event => {\n this.startIndexChange.emit($event)\n })\n componentRef.instance.fieldClick.subscribe(($event) => {\n this.onCustomizeFieldClick($event);\n });\n componentRef.instance.selectedItemsChange.subscribe(($event) => {\n this.onSelectedItemsChanged($event);\n });\n componentRef.instance.loadItems.subscribe(($event) => {\n this.onLoadItems($event);\n });\n componentRef.instance.loadPage.subscribe(($event) => {\n this.onLoadPage($event);\n });\n componentRef.instance.valueChange.subscribe(($event) => {\n this.onValueChanged($event);\n });\n componentRef.instance.sortingChange.subscribe(($event) => {\n this.onSortingChange($event);\n });\n componentRef.instance.listLoad.subscribe(($event) => {\n this.onListLoad();\n });\n let convertedList: ObjectsDataRow[] = [];\n if (data) {\n if (data?.length) {\n convertedList = this._dataConvertorService.convertListData(data);\n }\n const uiControl = this.getUiControl(DataViewConverter.toUIControlData(this._dataView));\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n componentRef.instance.setSelectedIds(selectedItems);\n } \n \n componentRef.instance.initListData(uiControl, this.totalRowCount, convertedList);\n }\n componentRef.instance.scrollToIndex(this.scrollPosition)\n }\n }, 0);\n }\n }, 0);\n }\n\n /**\n * loads inputs in case they are provided and merge with selector inputs\n * @returns merged pep-list inputs\n */\n private loadTableInputs() {\n this.listInputs = {\n supportSorting: this.supportSorting,\n sorting: this.sorting,\n cacheSize: this.cacheSize,\n hideSelectAll: this.hideSelectAll,\n selectionType: this.selectionType,\n pager: this.pager,\n noDataFoundMsg: this.noDataFoundMsg,\n tableViewType: this.tableViewType,\n zebraStripes: this.zebraStripes,\n emptyState: this.emptyState,\n selectAll: this.selectAll\n };\n if (this._dataSource.inputs) {\n Object.entries(this._dataSource.inputs).forEach((item: any) => {\n if (this._genericListService.hasProperty(this.listInputs, item[0])) {\n this.listInputs[item[0]] = item[1];\n }\n });\n }\n }\n\n /**\n * detemines whether empty state is to be displayed\n */\n private setEmptyState() {\n this.showEmptyState = this.totalRowCount === 0 &&\n this.searchString === '' &&\n this._appliedFilters.length === 0;\n }\n\n private getUiControl(data: any): UIControl {\n const uiControl = new UIControl();\n uiControl.ControlFields = [];\n\n if (data?.ControlFields) {\n uiControl.ControlFields = data.ControlFields.map((field: any) => this._genericListService.convertToUiControlField(field));\n }\n\n return uiControl;\n }\n\n private loadMenuItems(): void { //TODO\n if (this.listInputs.selectionType !== 'none') {\n this.getMenuActions().then(\n x => this.menuActions = x\n );\n }\n }\n\n private async getMenuActions(): Promise<PepMenuItem[]> {\n const res: PepMenuItem[] = [];\n const result = this.getMenuObjects();\n if (result.success) {\n const actions = await this.actions.get(result.data);\n this.menuHandlers = {};\n actions?.forEach(item => {\n const uuid = PepGuid.newGuid();\n this.menuHandlers[uuid] = item.handler;\n res.push({\n key: uuid,\n text: item.title\n })\n })\n }\n\n return res;\n }\n\n private getMenuObjects() {\n const menuObjects: any = {\n success: false,\n data: new PepSelectionData()\n };\n\n if (this.pepList) {\n menuObjects.success = true;\n menuObjects.data = this.pepList.getSelectedItemsData();\n }\n\n return menuObjects;\n }\n\n private initSearch() {\n this.searchString = '';\n this.search?.initSearch();\n }\n\n private initSmartSearch() {\n this._appliedFilters = [];\n this.smartFiltersComponent?.clearFilters();\n }\n\n private async loadData(fromIndex: number, toIndex: number): Promise<PepRowData[]> {\n this._loaderService.show();\n let converedData: PepRowData[] = [];\n const data: IPepGenericListInitData = await this._dataSource.init({\n searchString: this.searchString || undefined,\n filters: this._appliedFilters.length ? this._appliedFilters : undefined,\n sorting: this._sorting || undefined,\n fromIndex: fromIndex,\n toIndex: toIndex\n }); \n this._loaderService.hide();\n\n // Set the total count\n this.totalRowCount = data?.totalCount || 0;\n\n if (data) {\n this._dataView = data.dataView;\n\n if (data.items?.length > 0 && !data.isPepRowData) { \n converedData = data.items.map(item => this._genericListService.convertToPepRowData(item, data.dataView, this.uuidMapping));\n }\n }\n\n return converedData;\n }\n\n\n private async updateDataList(fromIndex: number, toIndex: number, pageIndex: number | undefined = undefined): Promise<PepRowData[]> {\n if (this._dataSource.update) {\n this._loaderService.show();\n let converedData: PepRowData[] = [];\n const dataList = await this._dataSource.update({\n searchString: this.searchString || undefined,\n filters: this._appliedFilters.length ? this._appliedFilters : undefined,\n sorting: this._sorting || undefined,\n fromIndex: fromIndex,\n toIndex: toIndex,\n pageIndex: pageIndex\n });\n this._loaderService.hide();\n\n if (dataList?.length > 0) {\n converedData = dataList.map(item => this._genericListService.convertToPepRowData(item, this._dataView, this.uuidMapping));\n } \n return converedData;\n } else {\n return [];\n }\n }\n\n /**\n * loads virtual scroll items from api\n */\n private async onLoadItems(event: IPepListLoadItemsEvent) {\n const list = await this.updateDataList(event.fromIndex, event.toIndex);\n const convertedList = this._dataConvertorService.convertListData(list);\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n this.pepList.setSelectedIds(selectedItems);\n }\n this.pepList.updateItems(convertedList, event);\n }\n\n /**\n * loads paging bulk from api\n */\n private async onLoadPage(event: IPepListLoadPageEvent) {\n const fromIndex = event.pageIndex * event.pageSize;\n const toIndex = Math.min(fromIndex + event.pageSize - 1, this.totalRowCount - 1);\n const list = await this.updateDataList(fromIndex, toIndex, event.pageIndex);\n const convertedList = this._dataConvertorService.convertListData(list);\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n this.pepList.setSelectedIds(selectedItems);\n }\n this.pepList.updatePage(convertedList, event);\n }\n\n getItemById(id: string): ObjectsDataRow | null {\n if (this.pepList) {\n return this._pepList.getItemDataByID(id);\n } else {\n return null;\n }\n }\n\n getSelectedItems(): PepSelectionData | null {\n if (this.pepList) {\n return this._pepList.getSelectedItemsData();\n } else {\n return null;\n }\n }\n\n getPageIndex() {\n return this.pepList.pageIndex;\n }\n\n onActionItemClicked(action: IPepMenuItemClickEvent): void {\n const result = this.getMenuObjects();\n if (result.success) {\n this.menuHandlers[action.source.key](result.data);\n }\n }\n\n onSearchChanged(event: IPepSearchClickEvent) {\n this.searchString = event.value;\n this.initList();\n }\n\n onSelectedItemsChanged(selectedRowsCount: number) {\n //loading menu items after pep-list selected items are updated\n setTimeout(() => {\n this.loadMenuItems();\n }, 0);\n }\n\n onCustomizeFieldClick(fieldClickEvent: IPepFormFieldClickEvent) {\n this.fieldClick.emit(fieldClickEvent);\n }\n\n onBreadCrumbItemClick(event: IPepBreadCrumbItemClickEvent) {\n this.breadCrumbItemClick.emit(event);\n }\n\n onValueChanged(event: IPepFormFieldValueChangeEvent) {\n this.valueChange.emit(event);\n }\n\n onSortingChange(event: IPepListSortingChangeEvent) {\n this._sorting = event;\n this.initList();\n }\n\n onFiltersChange(filters: IPepSmartFilterData[]) {\n this._appliedFilters = filters;\n this.initList();\n }\n\n onListLoad(): void {\n this.listLoad.emit();\n }\n\n ngOnDestroy() {\n if (this._resize$) {\n this._resize$.unsubscribe();\n }\n if (this._loader$) {\n this._loader$.unsubscribe();\n }\n }\n\n}\n","<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\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 *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </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 *ngIf=\"!onLoad\" 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 #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.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 *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>","import { NgModule, APP_INITIALIZER } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GenericListComponent } from './generic-list.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepListModule } from '@pepperi-addons/ngx-lib/list';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepPageLayoutModule } from '@pepperi-addons/ngx-lib/page-layout';\nimport { PepTopBarModule } from '@pepperi-addons/ngx-lib/top-bar';\nimport { PepSideBarModule } from '@pepperi-addons/ngx-lib/side-bar';\nimport { PepSearchModule } from '@pepperi-addons/ngx-lib/search';\nimport { PepBreadCrumbsModule } from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { PepSmartFiltersModule } from '@pepperi-addons/ngx-lib/smart-filters';\nimport { PepIconModule, PepIconRegistry, pepIconLeafRound, pepIconLeafSkiny, pepIconSystemView } from '@pepperi-addons/ngx-lib/icon';\nimport { PepGenericListService } from './generic-list.service';\nimport { firstValueFrom } from 'rxjs';\n\nconst pepIcons = [\n pepIconLeafRound,\n pepIconLeafSkiny, pepIconSystemView\n]\n\n/*\nexport function appInitializerFactory(translate: TranslateService) {\n return () => {\n translate.setDefaultLang('en');\n return firstValueFrom(translate.use('en'));\n }\n}*/\n\n@NgModule({\n declarations: [\n GenericListComponent\n ],\n imports: [\n CommonModule,\n PepNgxLibModule,\n MatIconModule,\n PepListModule,\n PepFormModule,\n PepMenuModule,\n PepPageLayoutModule,\n PepTopBarModule,\n PepSideBarModule,\n PepSearchModule,\n PepBreadCrumbsModule,\n PepIconModule,\n PepSmartFiltersModule\n ],\n exports: [\n GenericListComponent \n ],\n providers: [\n PepGenericListService,\n /*{\n provide: APP_INITIALIZER,\n useFactory: appInitializerFactory,\n deps: [TranslateService],\n multi: true\n } */\n ]\n})\nexport class PepGenericListModule { \n constructor(\n private pepIconRegistry: PepIconRegistry\n ) {\n this.pepIconRegistry.registerIcons(pepIcons);\n }\n}\n","/*\n * Public API Surface of ngx-composite-lib/generic-list\n */\nexport * from './generic-list.module';\nexport * from './generic-list.component';\nexport * from './generic-list.model';\nexport * from './generic-list.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.PepGenericListService","i11"],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-composite-lib-generic-list.mjs","sources":["../../../projects/ngx-composite-lib/generic-list/generic-list.service.ts","../../../projects/ngx-composite-lib/generic-list/generic-list.component.ts","../../../projects/ngx-composite-lib/generic-list/generic-list.component.html","../../../projects/ngx-composite-lib/generic-list/generic-list.module.ts","../../../projects/ngx-composite-lib/generic-list/public-api.ts","../../../projects/ngx-composite-lib/generic-list/pepperi-addons-ngx-composite-lib-generic-list.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n IPepGenericListSmartFilter,\n IPepGenericListDataViewField,\n IPepSmartFilters\n} from './generic-list.model';\nimport {\n PepSmartFilterBaseField,\n IPepSmartFilterData,\n} from '@pepperi-addons/ngx-lib/smart-filters';\nimport { PepQueryBuilderService, IPepQueryBuilderField } from '@pepperi-addons/ngx-lib/query-builder';\nimport {\n PepRowData,\n ObjectsDataRow\n} from '@pepperi-addons/ngx-lib';\nimport { GridDataViewField, DataViewFieldTypes } from '@pepperi-addons/papi-sdk/dist/entities/data-view';\n\n@Injectable() \nexport class PepGenericListService {\n\n constructor(\n private _translate: TranslateService,\n private _queryBuilderService: PepQueryBuilderService\n ) {\n //\n }\n\n /**\n * checks if the object contains property\n * @param obj object\n * @param prop property name\n * @returns true if contains, false otherwise\n */\n hasProperty(obj: any, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n getListViewType(dataViewType: string) {\n switch (dataViewType) {\n case 'Grid':\n return 'table';\n case 'Card':\n return 'cards';\n case 'Line':\n return 'lines';\n default:\n return 'table';\n }\n }\n\n convertToPepRowData(item: any, dataView: any, uuidMapping: string) {\n const row = new PepRowData();\n let itemFields: any;\n\n if (this.hasProperty(item, 'fields') && typeof item.fields === 'object') {\n itemFields = item.fields;\n if (item.isEditable === false) {\n row.IsEditable = false;\n }\n if (item.isSelectableForActions === false) {\n row.IsSelectableForActions = false;\n }\n if (item.isEditable && item.isSelectableForActions && item.isSelected) {\n row.IsSelected = true;\n }\n } else {\n itemFields = item;\n }\n\n row.UUID = itemFields[uuidMapping] || undefined;\n row.Fields = [];\n\n if (dataView?.Fields && dataView.Columns) {\n for (let index = 0; index < dataView.Fields.length; index++) {\n const field = dataView.Fields[index] as IPepGenericListDataViewField;\n row.Fields.push({\n ApiName: field.FieldID,\n Title: field.Title ? this._translate.instant(field.Title) : '',\n XAlignment: 1,\n FormattedValue: (itemFields[field.FieldID] || '').toString(),\n Value: (itemFields[field.FieldID] || '').toString(),\n ColumnWidth: dataView.Columns[index]?.Width || undefined,\n AdditionalValue: '',\n OptionalValues: field.OptionalValues || [],\n FieldType: DataViewFieldTypes[field.Type],\n ReadOnly: field.ReadOnly,\n Enabled: !field.ReadOnly\n })\n }\n }\n return row;\n }\n\n convertToUiControlField(field: any) {\n return {\n ApiName: field.ApiName,\n FieldType: field.FieldType,\n Title: field.Title,\n ReadOnly: field.ReadOnlyField,\n ColumnWidth: field.ColumnWidth,\n ColumnWidthType: 1,\n Layout: {\n X: field.Layout.X,\n Y: field.Layout.Y,\n Width: field.Layout.Width,\n Height: field.Layout.Field_Height,\n XAlignment: field.Layout.xAlignment,\n YAlignment: field.Layout.yAlignment,\n }\n }\n }\n\n convertToSmartFilter(input: IPepGenericListSmartFilter) { \n const smartFilters: IPepSmartFilters = {\n fields: [],\n data: [],\n title: 'Filters'\n }\n\n if (input) {\n if (input.dataView) {\n smartFilters.fields = this.createSmartFilterFields(input.dataView);\n if (input.data?.length) {\n smartFilters.data = input.data;\n }\n }\n if (input.title) {\n smartFilters.title = input.title;\n }\n }\n\n return smartFilters; \n }\n\n createSmartFilterFields(dataView: any) {\n let smartFields: PepSmartFilterBaseField[] = [];\n\n const fields = dataView.Fields.map((field: any) => {\n return {\n FieldID: field.FieldID,\n FieldType: field.Type,\n Title: field.Title,\n OptionalValues: field.OptionalValues\n } as IPepQueryBuilderField\n });\n const smartFilterfields = this._queryBuilderService.convertToSmartFilterFields(fields);\n if (smartFilterfields?.length) {\n smartFields = smartFilterfields.map((field => field.smart));\n }\n\n return smartFields;\n }\n\n // TODO: This func is copy from ngx-lib write it in one place.\n private getUniqItemId(itemId: string, itemType = ''): string {\n return itemId + ',' + itemType;\n }\n\n getSelectedItems(items: ObjectsDataRow[]) {\n const selectedItems = [];\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].IsSelected) {\n selectedItems.push(this.getUniqItemId(items[i].UID, items[i].Type?.toString()));\n }\n }\n\n return selectedItems;\n }\n\n\n}","import {\n Component,\n OnInit,\n ViewChild,\n Input,\n Output,\n EventEmitter,\n ViewContainerRef\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PepDataConvertorService,\n PepLayoutService,\n ObjectsDataRow,\n PepGuid,\n UIControl,\n PepLoaderService,\n PepRowData,\n PepSessionService\n} from '@pepperi-addons/ngx-lib';\nimport { Subscription } from 'rxjs';\nimport { IPepFormFieldClickEvent } from '@pepperi-addons/ngx-lib/form';\nimport {\n PepListComponent,\n PepSelectionData,\n IPepListLoadPageEvent,\n PepListSelectionType,\n IPepListSortingChangeEvent,\n DEFAULT_PAGE_SIZE,\n IPepListLoadItemsEvent,\n PepListTableViewType,\n IPepListSortingData,\n IPepListStartIndexChangeEvent\n} from '@pepperi-addons/ngx-lib/list';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { IPepFormFieldValueChangeEvent } from '@pepperi-addons/ngx-lib/form';\nimport {\n PepBreadCrumbItem,\n IPepBreadCrumbItemClickEvent\n} from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { IPepSearchClickEvent, PepSearchComponent } from '@pepperi-addons/ngx-lib/search';\n\nimport {\n DataView,\n GridDataView\n} from '@pepperi-addons/papi-sdk/dist/entities/data-view';\nimport {\n IPepGenericListInitData,\n IPepGenericListDataSource,\n IPepGenericListPager,\n IPepGenericListActions,\n IPepGenericListSmartFilter,\n IPepSmartFilters,\n IPepGenericListEmptyState\n} from './generic-list.model';\nimport { PepGenericListService } from './generic-list.service';\nimport { DataViewConverter } from '@pepperi-addons/data-views';\nimport {\n IPepSmartFilterData,\n PepSmartFilterBaseField,\n PepSmartFiltersComponent\n} from '@pepperi-addons/ngx-lib/smart-filters';\n\n\n@Component({\n selector: 'pep-generic-list',\n templateUrl: './generic-list.component.html',\n styleUrls: ['./generic-list.component.scss', './generic-list.component.theme.scss'],\n providers: [PepGenericListService]\n})\nexport class GenericListComponent implements OnInit {\n @ViewChild('search') search: PepSearchComponent | undefined;\n @ViewChild('smartFiltersComponent') smartFiltersComponent: PepSmartFiltersComponent | undefined;\n\n private _pepListContainer: ViewContainerRef | undefined;\n @ViewChild('pepListContainer', { read: ViewContainerRef })\n set pepListContainer(val: ViewContainerRef) {\n this._pepListContainer = val;\n }\n\n private _dataSource: IPepGenericListDataSource = {\n init: async (params: any) => {\n return {\n dataView: {\n Type: 'Grid'\n },\n totalCount: -1,\n items: []\n }\n }\n }\n @Input()\n set dataSource(val: IPepGenericListDataSource) {\n this._dataSource = val;\n this._sorting = undefined;\n this.initSearch();\n this.initSmartSearch();\n this.initList();\n }\n\n @Input()\n actions: IPepGenericListActions = {\n get: async (data: any) => {\n return []\n }\n };\n\n @Input()\n uuidMapping = 'key';\n\n @Input()\n disabled = false;\n\n @Input()\n addPadding = false;\n\n @Input()\n title = '';\n\n @Input()\n description = '';\n\n @Input()\n inline = false;\n\n @Input()\n showSearch = false;\n\n @Input()\n noDataFoundMsg = '';\n\n @Input()\n emptyState: IPepGenericListEmptyState | undefined;\n\n @Input()\n selectionType: PepListSelectionType = 'multi';\n\n @Input()\n supportSorting = false;\n\n @Input()\n sorting: IPepListSortingData | undefined;\n\n @Input()\n cacheSize = -1;\n\n @Input()\n hideSelectAll = false;\n \n @Input()\n pager: IPepGenericListPager = {\n type: 'scroll'\n }\n\n @Input()\n tableViewType: PepListTableViewType = 'regular';\n\n @Input()\n zebraStripes = false;\n\n @Input()\n set smartFilter(val: IPepGenericListSmartFilter) {\n this.smartFilters = this._genericListService.convertToSmartFilter(val);\n this._appliedFilters = this.smartFilters.data || [];\n this.showSmartFilter = this.smartFilters.fields.length > 0; \n }\n\n @Input()\n showTopBar = false;\n\n @Input()\n breadCrumbsItems: PepBreadCrumbItem[] = new Array<PepBreadCrumbItem>();\n\n @Input()\n selectAll = false\n\n @Input()\n scrollPosition = 0\n\n @Output()\n fieldClick = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output()\n valueChange = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @Output()\n breadCrumbItemClick = new EventEmitter<IPepBreadCrumbItemClickEvent>();\n\n @Output()\n startIndexChange = new EventEmitter<IPepListStartIndexChangeEvent>()\n\n @Output()\n listLoad: EventEmitter<void> = new EventEmitter<void>();\n\n set pepList(val: PepListComponent) {\n this._pepList = val;\n }\n\n get pepList() {\n return this._pepList;\n }\n\n private _resize$: Subscription = new Subscription();\n private _loader$: Subscription = new Subscription();\n\n private _dataView: DataView = {\n Type: 'Grid'\n };\n private _pepList: any;\n onLoad = true;\n listInputs: any;\n totalRowCount = -1;\n searchString = '';\n showSmartFilter = false;\n showEmptyState = false;\n smartFilters: IPepSmartFilters = {\n fields: [],\n data: [],\n title: 'Filters'\n };\n private _appliedFilters: IPepSmartFilterData[] = [];\n private _sorting: IPepListSortingChangeEvent | undefined = undefined;\n\n menuHandlers: { [key: string]: (obj: any) => Promise<void> } = {};\n menuActions: Array<PepMenuItem> = [];\n\n constructor(\n private _dataConvertorService: PepDataConvertorService,\n private _layoutService: PepLayoutService,\n private _loaderService: PepLoaderService,\n private _translate: TranslateService,\n private _genericListService: PepGenericListService,\n private _sessionService: PepSessionService\n ) {\n this._resize$ = this._layoutService.onResize$.pipe().subscribe((size) => { \n // \n });\n this._loader$ = this._loaderService.onChanged$.subscribe((status: boolean) => {\n //\n });\n }\n\n ngOnInit() {\n //\n }\n\n private async initList() {\n this.onLoad = true;\n setTimeout(async () => { //making sure all input data is available\n if (this._dataSource) {\n //merge selector inputs with callback inputs\n this.loadTableInputs();\n\n let fromIndex = 0;\n let toIndex = 0;\n\n if (this.listInputs.pager.type === 'pages') {\n fromIndex = this.listInputs.pager.size * this.listInputs.pager.index;\n toIndex = fromIndex + (this.listInputs.pager.size || DEFAULT_PAGE_SIZE) - 1;\n } else {\n toIndex = 100;//TO DO - get value from - this.customList.getTopItems()\n }\n\n const data = await this.loadData(fromIndex, toIndex);\n \n if (this.listInputs?.emptyState?.show === true) {\n this.setEmptyState();\n }\n this.onLoad = false;\n //show empty state\n if (this.showEmptyState) {\n if (!this.listInputs.emptyState.title) { \n this._translate.get('GENERIC_LIST.EMPTY_STATE.TITLE').subscribe(text => { \n this.listInputs.emptyState.title = text;\n });\n }\n if (!this.listInputs.emptyState.description) { \n this._translate.get('GENERIC_LIST.EMPTY_STATE.DESCRIPTION').subscribe(text => { \n this.listInputs.emptyState.description = text;\n });\n }\n return;\n }\n setTimeout(async () => {\n if (this._pepListContainer) {\n if (this._pepListContainer.length > 0) {\n this._pepListContainer.remove();\n }\n const { PepListComponent } = await import('@pepperi-addons/ngx-lib/list');\n const componentRef = this._pepListContainer.createComponent(PepListComponent);\n\n this.pepList = componentRef.instance;\n \n componentRef.instance.viewType = this._genericListService.getListViewType(this._dataView.Type);\n componentRef.instance.tableViewType = this.listInputs.tableViewType;\n componentRef.instance.zebraStripes = this.listInputs.zebraStripes;\n if (this.disabled) {\n componentRef.instance.disabled = true;\n componentRef.instance.lockItemInnerEvents = true;\n }\n componentRef.instance.supportSorting = this.listInputs.supportSorting;\n componentRef.instance.sorting = this.listInputs.sorting;\n componentRef.instance.cacheSize = this.listInputs.cacheSize;\n\n componentRef.instance.selectionTypeForActions = this.listInputs.selectionType;\n componentRef.instance.hideAllSelectionInMulti = this.listInputs.hideSelectAll;\n\n componentRef.instance.showCardSelection = this.listInputs.selectionType !== 'none';\n componentRef.instance.pagerType = this.listInputs.pager.type;\n if (this.listInputs.pager.type === 'pages') {\n componentRef.instance.pageSize = this.listInputs.pager?.size || DEFAULT_PAGE_SIZE;\n componentRef.instance.pageIndex = this.listInputs.pager?.index || 0;\n }\n if(this.selectionType == \"multi\" && this.selectAll){\n this._sessionService.setObject('AllSelected', true)\n }\n componentRef.instance.noDataFoundMsg = this.listInputs.noDataFoundMsg;\n componentRef.instance.startIndexChange.subscribe($event => {\n this.startIndexChange.emit($event)\n })\n componentRef.instance.fieldClick.subscribe(($event) => {\n this.onCustomizeFieldClick($event);\n });\n componentRef.instance.selectedItemsChange.subscribe(($event) => {\n this.onSelectedItemsChanged($event);\n });\n componentRef.instance.loadItems.subscribe(($event) => {\n this.onLoadItems($event);\n });\n componentRef.instance.loadPage.subscribe(($event) => {\n this.onLoadPage($event);\n });\n componentRef.instance.valueChange.subscribe(($event) => {\n this.onValueChanged($event);\n });\n componentRef.instance.sortingChange.subscribe(($event) => {\n this.onSortingChange($event);\n });\n componentRef.instance.listLoad.subscribe(($event) => {\n this.onSelectedItemsChanged(this._pepList.selectedItems.length);\n this.onListLoad();\n });\n let convertedList: ObjectsDataRow[] = [];\n if (data) {\n if (data?.length) {\n convertedList = this._dataConvertorService.convertListData(data);\n }\n const uiControl = this.getUiControl(DataViewConverter.toUIControlData(this._dataView));\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n componentRef.instance.setSelectedIds(selectedItems);\n } \n \n componentRef.instance.initListData(uiControl, this.totalRowCount, convertedList);\n }\n componentRef.instance.scrollToIndex(this.scrollPosition)\n }\n }, 0);\n }\n }, 0);\n }\n\n /**\n * loads inputs in case they are provided and merge with selector inputs\n * @returns merged pep-list inputs\n */\n private loadTableInputs() {\n this.listInputs = {\n supportSorting: this.supportSorting,\n sorting: this.sorting,\n cacheSize: this.cacheSize,\n hideSelectAll: this.hideSelectAll,\n selectionType: this.selectionType,\n pager: this.pager,\n noDataFoundMsg: this.noDataFoundMsg,\n tableViewType: this.tableViewType,\n zebraStripes: this.zebraStripes,\n emptyState: this.emptyState,\n selectAll: this.selectAll\n };\n if (this._dataSource.inputs) {\n Object.entries(this._dataSource.inputs).forEach((item: any) => {\n if (this._genericListService.hasProperty(this.listInputs, item[0])) {\n this.listInputs[item[0]] = item[1];\n }\n });\n }\n }\n\n /**\n * detemines whether empty state is to be displayed\n */\n private setEmptyState() {\n this.showEmptyState = this.totalRowCount === 0 &&\n this.searchString === '' &&\n this._appliedFilters.length === 0;\n }\n\n private getUiControl(data: any): UIControl {\n const uiControl = new UIControl();\n uiControl.ControlFields = [];\n\n if (data?.ControlFields) {\n uiControl.ControlFields = data.ControlFields.map((field: any) => this._genericListService.convertToUiControlField(field));\n }\n\n return uiControl;\n }\n\n private loadMenuItems(): void { //TODO\n if (this.listInputs.selectionType !== 'none') {\n this.getMenuActions().then(\n x => this.menuActions = x\n );\n }\n }\n\n private async getMenuActions(): Promise<PepMenuItem[]> {\n const res: PepMenuItem[] = [];\n const result = this.getMenuObjects();\n if (result.success) {\n const actions = await this.actions.get(result.data);\n this.menuHandlers = {};\n actions?.forEach(item => {\n const uuid = PepGuid.newGuid();\n this.menuHandlers[uuid] = item.handler;\n res.push({\n key: uuid,\n text: item.title\n })\n })\n }\n\n return res;\n }\n\n private getMenuObjects() {\n const menuObjects: any = {\n success: false,\n data: new PepSelectionData()\n };\n\n if (this.pepList) {\n menuObjects.success = true;\n menuObjects.data = this.pepList.getSelectedItemsData();\n }\n\n return menuObjects;\n }\n\n private initSearch() {\n this.searchString = '';\n this.search?.initSearch();\n }\n\n private initSmartSearch() {\n this._appliedFilters = [];\n this.smartFiltersComponent?.clearFilters();\n }\n\n private async loadData(fromIndex: number, toIndex: number): Promise<PepRowData[]> {\n this._loaderService.show();\n let converedData: PepRowData[] = [];\n const data: IPepGenericListInitData = await this._dataSource.init({\n searchString: this.searchString || undefined,\n filters: this._appliedFilters.length ? this._appliedFilters : undefined,\n sorting: this._sorting || undefined,\n fromIndex: fromIndex,\n toIndex: toIndex\n }); \n this._loaderService.hide();\n\n // Set the total count\n this.totalRowCount = data?.totalCount || 0;\n\n if (data) {\n this._dataView = data.dataView;\n\n if (data.items?.length > 0 && !data.isPepRowData) { \n converedData = data.items.map(item => this._genericListService.convertToPepRowData(item, data.dataView, this.uuidMapping));\n }\n }\n\n return converedData;\n }\n\n\n private async updateDataList(fromIndex: number, toIndex: number, pageIndex: number | undefined = undefined): Promise<PepRowData[]> {\n if (this._dataSource.update) {\n this._loaderService.show();\n let converedData: PepRowData[] = [];\n const dataList = await this._dataSource.update({\n searchString: this.searchString || undefined,\n filters: this._appliedFilters.length ? this._appliedFilters : undefined,\n sorting: this._sorting || undefined,\n fromIndex: fromIndex,\n toIndex: toIndex,\n pageIndex: pageIndex\n });\n this._loaderService.hide();\n\n if (dataList?.length > 0) {\n converedData = dataList.map(item => this._genericListService.convertToPepRowData(item, this._dataView, this.uuidMapping));\n } \n return converedData;\n } else {\n return [];\n }\n }\n\n /**\n * loads virtual scroll items from api\n */\n private async onLoadItems(event: IPepListLoadItemsEvent) {\n const list = await this.updateDataList(event.fromIndex, event.toIndex);\n const convertedList = this._dataConvertorService.convertListData(list);\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n this.pepList.setSelectedIds(selectedItems);\n }\n this.pepList.updateItems(convertedList, event);\n }\n\n /**\n * loads paging bulk from api\n */\n private async onLoadPage(event: IPepListLoadPageEvent) {\n const fromIndex = event.pageIndex * event.pageSize;\n const toIndex = Math.min(fromIndex + event.pageSize - 1, this.totalRowCount - 1);\n const list = await this.updateDataList(fromIndex, toIndex, event.pageIndex);\n const convertedList = this._dataConvertorService.convertListData(list);\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n this.pepList.setSelectedIds(selectedItems);\n }\n this.pepList.updatePage(convertedList, event);\n }\n\n getItemById(id: string): ObjectsDataRow | null {\n if (this.pepList) {\n return this._pepList.getItemDataByID(id);\n } else {\n return null;\n }\n }\n\n getSelectedItems(): PepSelectionData | null {\n if (this.pepList) {\n return this._pepList.getSelectedItemsData();\n } else {\n return null;\n }\n }\n\n getPageIndex() {\n return this.pepList.pageIndex;\n }\n\n onActionItemClicked(action: IPepMenuItemClickEvent): void {\n const result = this.getMenuObjects();\n if (result.success) {\n this.menuHandlers[action.source.key](result.data);\n }\n }\n\n onSearchChanged(event: IPepSearchClickEvent) {\n this.searchString = event.value;\n this.initList();\n }\n\n onSelectedItemsChanged(selectedRowsCount: number) {\n //loading menu items after pep-list selected items are updated\n setTimeout(() => {\n this.loadMenuItems();\n }, 0);\n }\n\n onCustomizeFieldClick(fieldClickEvent: IPepFormFieldClickEvent) {\n this.fieldClick.emit(fieldClickEvent);\n }\n\n onBreadCrumbItemClick(event: IPepBreadCrumbItemClickEvent) {\n this.breadCrumbItemClick.emit(event);\n }\n\n onValueChanged(event: IPepFormFieldValueChangeEvent) {\n this.valueChange.emit(event);\n }\n\n onSortingChange(event: IPepListSortingChangeEvent) {\n this._sorting = event;\n this.initList();\n }\n\n onFiltersChange(filters: IPepSmartFilterData[]) {\n this._appliedFilters = filters;\n this.initList();\n }\n\n onListLoad(): void {\n this.listLoad.emit();\n }\n\n ngOnDestroy() {\n if (this._resize$) {\n this._resize$.unsubscribe();\n }\n if (this._loader$) {\n this._loader$.unsubscribe();\n }\n }\n\n}\n","<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\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 *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </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 *ngIf=\"!onLoad\" 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 #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.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 *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>","import { NgModule, APP_INITIALIZER } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GenericListComponent } from './generic-list.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepListModule } from '@pepperi-addons/ngx-lib/list';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepPageLayoutModule } from '@pepperi-addons/ngx-lib/page-layout';\nimport { PepTopBarModule } from '@pepperi-addons/ngx-lib/top-bar';\nimport { PepSideBarModule } from '@pepperi-addons/ngx-lib/side-bar';\nimport { PepSearchModule } from '@pepperi-addons/ngx-lib/search';\nimport { PepBreadCrumbsModule } from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { PepSmartFiltersModule } from '@pepperi-addons/ngx-lib/smart-filters';\nimport { PepIconModule, PepIconRegistry, pepIconLeafRound, pepIconLeafSkiny, pepIconSystemView } from '@pepperi-addons/ngx-lib/icon';\nimport { PepGenericListService } from './generic-list.service';\nimport { firstValueFrom } from 'rxjs';\n\nconst pepIcons = [\n pepIconLeafRound,\n pepIconLeafSkiny, pepIconSystemView\n]\n\n/*\nexport function appInitializerFactory(translate: TranslateService) {\n return () => {\n translate.setDefaultLang('en');\n return firstValueFrom(translate.use('en'));\n }\n}*/\n\n@NgModule({\n declarations: [\n GenericListComponent\n ],\n imports: [\n CommonModule,\n PepNgxLibModule,\n MatIconModule,\n PepListModule,\n PepFormModule,\n PepMenuModule,\n PepPageLayoutModule,\n PepTopBarModule,\n PepSideBarModule,\n PepSearchModule,\n PepBreadCrumbsModule,\n PepIconModule,\n PepSmartFiltersModule\n ],\n exports: [\n GenericListComponent \n ],\n providers: [\n PepGenericListService,\n /*{\n provide: APP_INITIALIZER,\n useFactory: appInitializerFactory,\n deps: [TranslateService],\n multi: true\n } */\n ]\n})\nexport class PepGenericListModule { \n constructor(\n private pepIconRegistry: PepIconRegistry\n ) {\n this.pepIconRegistry.registerIcons(pepIcons);\n }\n}\n","/*\n * Public API Surface of ngx-composite-lib/generic-list\n */\nexport * from './generic-list.module';\nexport * from './generic-list.component';\nexport * from './generic-list.model';\nexport * from './generic-list.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.PepGenericListService","i11"],"mappings":"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"}
@@ -149,11 +149,15 @@ class PepGenericListService {
149
149
  }
150
150
  return smartFields;
151
151
  }
152
+ // TODO: This func is copy from ngx-lib write it in one place.
153
+ getUniqItemId(itemId, itemType = '') {
154
+ return itemId + ',' + itemType;
155
+ }
152
156
  getSelectedItems(items) {
153
157
  const selectedItems = [];
154
158
  for (let i = 0; i < items.length; i++) {
155
159
  if (items[i].IsSelected) {
156
- selectedItems.push(items[i].UID);
160
+ selectedItems.push(this.getUniqItemId(items[i].UID, items[i].Type?.toString()));
157
161
  }
158
162
  }
159
163
  return selectedItems;
@@ -351,6 +355,7 @@ class GenericListComponent {
351
355
  this.onSortingChange($event);
352
356
  });
353
357
  componentRef.instance.listLoad.subscribe(($event) => {
358
+ this.onSelectedItemsChanged(this._pepList.selectedItems.length);
354
359
  this.onListLoad();
355
360
  });
356
361
  let convertedList = [];
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-composite-lib-generic-list.mjs","sources":["../../../projects/ngx-composite-lib/generic-list/generic-list.service.ts","../../../projects/ngx-composite-lib/generic-list/generic-list.component.ts","../../../projects/ngx-composite-lib/generic-list/generic-list.component.html","../../../projects/ngx-composite-lib/generic-list/generic-list.module.ts","../../../projects/ngx-composite-lib/generic-list/public-api.ts","../../../projects/ngx-composite-lib/generic-list/pepperi-addons-ngx-composite-lib-generic-list.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n IPepGenericListSmartFilter,\n IPepGenericListDataViewField,\n IPepSmartFilters\n} from './generic-list.model';\nimport {\n PepSmartFilterBaseField,\n IPepSmartFilterData,\n} from '@pepperi-addons/ngx-lib/smart-filters';\nimport { PepQueryBuilderService, IPepQueryBuilderField } from '@pepperi-addons/ngx-lib/query-builder';\nimport {\n PepRowData,\n ObjectsDataRow\n} from '@pepperi-addons/ngx-lib';\nimport { GridDataViewField, DataViewFieldTypes } from '@pepperi-addons/papi-sdk/dist/entities/data-view';\n\n@Injectable() \nexport class PepGenericListService {\n\n constructor(\n private _translate: TranslateService,\n private _queryBuilderService: PepQueryBuilderService\n ) {\n //\n }\n\n /**\n * checks if the object contains property\n * @param obj object\n * @param prop property name\n * @returns true if contains, false otherwise\n */\n hasProperty(obj: any, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n getListViewType(dataViewType: string) {\n switch (dataViewType) {\n case 'Grid':\n return 'table';\n case 'Card':\n return 'cards';\n case 'Line':\n return 'lines';\n default:\n return 'table';\n }\n }\n\n convertToPepRowData(item: any, dataView: any, uuidMapping: string) {\n const row = new PepRowData();\n let itemFields: any;\n\n if (this.hasProperty(item, 'fields') && typeof item.fields === 'object') {\n itemFields = item.fields;\n if (item.isEditable === false) {\n row.IsEditable = false;\n }\n if (item.isSelectableForActions === false) {\n row.IsSelectableForActions = false;\n }\n if (item.isEditable && item.isSelectableForActions && item.isSelected) {\n row.IsSelected = true;\n }\n } else {\n itemFields = item;\n }\n\n row.UUID = itemFields[uuidMapping] || undefined;\n row.Fields = [];\n\n if (dataView?.Fields && dataView.Columns) {\n for (let index = 0; index < dataView.Fields.length; index++) {\n const field = dataView.Fields[index] as IPepGenericListDataViewField;\n row.Fields.push({\n ApiName: field.FieldID,\n Title: field.Title ? this._translate.instant(field.Title) : '',\n XAlignment: 1,\n FormattedValue: (itemFields[field.FieldID] || '').toString(),\n Value: (itemFields[field.FieldID] || '').toString(),\n ColumnWidth: dataView.Columns[index]?.Width || undefined,\n AdditionalValue: '',\n OptionalValues: field.OptionalValues || [],\n FieldType: DataViewFieldTypes[field.Type],\n ReadOnly: field.ReadOnly,\n Enabled: !field.ReadOnly\n })\n }\n }\n return row;\n }\n\n convertToUiControlField(field: any) {\n return {\n ApiName: field.ApiName,\n FieldType: field.FieldType,\n Title: field.Title,\n ReadOnly: field.ReadOnlyField,\n ColumnWidth: field.ColumnWidth,\n ColumnWidthType: 1,\n Layout: {\n X: field.Layout.X,\n Y: field.Layout.Y,\n Width: field.Layout.Width,\n Height: field.Layout.Field_Height,\n XAlignment: field.Layout.xAlignment,\n YAlignment: field.Layout.yAlignment,\n }\n }\n }\n\n convertToSmartFilter(input: IPepGenericListSmartFilter) { \n const smartFilters: IPepSmartFilters = {\n fields: [],\n data: [],\n title: 'Filters'\n }\n\n if (input) {\n if (input.dataView) {\n smartFilters.fields = this.createSmartFilterFields(input.dataView);\n if (input.data?.length) {\n smartFilters.data = input.data;\n }\n }\n if (input.title) {\n smartFilters.title = input.title;\n }\n }\n\n return smartFilters; \n }\n\n createSmartFilterFields(dataView: any) {\n let smartFields: PepSmartFilterBaseField[] = [];\n\n const fields = dataView.Fields.map((field: any) => {\n return {\n FieldID: field.FieldID,\n FieldType: field.Type,\n Title: field.Title,\n OptionalValues: field.OptionalValues\n } as IPepQueryBuilderField\n });\n const smartFilterfields = this._queryBuilderService.convertToSmartFilterFields(fields);\n if (smartFilterfields?.length) {\n smartFields = smartFilterfields.map((field => field.smart));\n }\n\n return smartFields;\n }\n\n getSelectedItems(items: ObjectsDataRow[]) {\n const selectedItems = [];\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].IsSelected) {\n selectedItems.push(items[i].UID);\n }\n }\n\n return selectedItems;\n }\n\n\n}","import {\n Component,\n OnInit,\n ViewChild,\n Input,\n Output,\n EventEmitter,\n ViewContainerRef\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PepDataConvertorService,\n PepLayoutService,\n ObjectsDataRow,\n PepGuid,\n UIControl,\n PepLoaderService,\n PepRowData,\n PepSessionService\n} from '@pepperi-addons/ngx-lib';\nimport { Subscription } from 'rxjs';\nimport { IPepFormFieldClickEvent } from '@pepperi-addons/ngx-lib/form';\nimport {\n PepListComponent,\n PepSelectionData,\n IPepListLoadPageEvent,\n PepListSelectionType,\n IPepListSortingChangeEvent,\n DEFAULT_PAGE_SIZE,\n IPepListLoadItemsEvent,\n PepListTableViewType,\n IPepListSortingData,\n IPepListStartIndexChangeEvent\n} from '@pepperi-addons/ngx-lib/list';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { IPepFormFieldValueChangeEvent } from '@pepperi-addons/ngx-lib/form';\nimport {\n PepBreadCrumbItem,\n IPepBreadCrumbItemClickEvent\n} from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { IPepSearchClickEvent, PepSearchComponent } from '@pepperi-addons/ngx-lib/search';\n\nimport {\n DataView,\n GridDataView\n} from '@pepperi-addons/papi-sdk/dist/entities/data-view';\nimport {\n IPepGenericListInitData,\n IPepGenericListDataSource,\n IPepGenericListPager,\n IPepGenericListActions,\n IPepGenericListSmartFilter,\n IPepSmartFilters,\n IPepGenericListEmptyState\n} from './generic-list.model';\nimport { PepGenericListService } from './generic-list.service';\nimport { DataViewConverter } from '@pepperi-addons/data-views';\nimport {\n IPepSmartFilterData,\n PepSmartFilterBaseField,\n PepSmartFiltersComponent\n} from '@pepperi-addons/ngx-lib/smart-filters';\n\n\n@Component({\n selector: 'pep-generic-list',\n templateUrl: './generic-list.component.html',\n styleUrls: ['./generic-list.component.scss', './generic-list.component.theme.scss'],\n providers: [PepGenericListService]\n})\nexport class GenericListComponent implements OnInit {\n @ViewChild('search') search: PepSearchComponent | undefined;\n @ViewChild('smartFiltersComponent') smartFiltersComponent: PepSmartFiltersComponent | undefined;\n\n private _pepListContainer: ViewContainerRef | undefined;\n @ViewChild('pepListContainer', { read: ViewContainerRef })\n set pepListContainer(val: ViewContainerRef) {\n this._pepListContainer = val;\n }\n\n private _dataSource: IPepGenericListDataSource = {\n init: async (params: any) => {\n return {\n dataView: {\n Type: 'Grid'\n },\n totalCount: -1,\n items: []\n }\n }\n }\n @Input()\n set dataSource(val: IPepGenericListDataSource) {\n this._dataSource = val;\n this._sorting = undefined;\n this.initSearch();\n this.initSmartSearch();\n this.initList();\n }\n\n @Input()\n actions: IPepGenericListActions = {\n get: async (data: any) => {\n return []\n }\n };\n\n @Input()\n uuidMapping = 'key';\n\n @Input()\n disabled = false;\n\n @Input()\n addPadding = false;\n\n @Input()\n title = '';\n\n @Input()\n description = '';\n\n @Input()\n inline = false;\n\n @Input()\n showSearch = false;\n\n @Input()\n noDataFoundMsg = '';\n\n @Input()\n emptyState: IPepGenericListEmptyState | undefined;\n\n @Input()\n selectionType: PepListSelectionType = 'multi';\n\n @Input()\n supportSorting = false;\n\n @Input()\n sorting: IPepListSortingData | undefined;\n\n @Input()\n cacheSize = -1;\n\n @Input()\n hideSelectAll = false;\n \n @Input()\n pager: IPepGenericListPager = {\n type: 'scroll'\n }\n\n @Input()\n tableViewType: PepListTableViewType = 'regular';\n\n @Input()\n zebraStripes = false;\n\n @Input()\n set smartFilter(val: IPepGenericListSmartFilter) {\n this.smartFilters = this._genericListService.convertToSmartFilter(val);\n this._appliedFilters = this.smartFilters.data || [];\n this.showSmartFilter = this.smartFilters.fields.length > 0; \n }\n\n @Input()\n showTopBar = false;\n\n @Input()\n breadCrumbsItems: PepBreadCrumbItem[] = new Array<PepBreadCrumbItem>();\n\n @Input()\n selectAll = false\n\n @Input()\n scrollPosition = 0\n\n @Output()\n fieldClick = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output()\n valueChange = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @Output()\n breadCrumbItemClick = new EventEmitter<IPepBreadCrumbItemClickEvent>();\n\n @Output()\n startIndexChange = new EventEmitter<IPepListStartIndexChangeEvent>()\n\n @Output()\n listLoad: EventEmitter<void> = new EventEmitter<void>();\n\n set pepList(val: PepListComponent) {\n this._pepList = val;\n }\n\n get pepList() {\n return this._pepList;\n }\n\n private _resize$: Subscription = new Subscription();\n private _loader$: Subscription = new Subscription();\n\n private _dataView: DataView = {\n Type: 'Grid'\n };\n private _pepList: any;\n onLoad = true;\n listInputs: any;\n totalRowCount = -1;\n searchString = '';\n showSmartFilter = false;\n showEmptyState = false;\n smartFilters: IPepSmartFilters = {\n fields: [],\n data: [],\n title: 'Filters'\n };\n private _appliedFilters: IPepSmartFilterData[] = [];\n private _sorting: IPepListSortingChangeEvent | undefined = undefined;\n\n menuHandlers: { [key: string]: (obj: any) => Promise<void> } = {};\n menuActions: Array<PepMenuItem> = [];\n\n constructor(\n private _dataConvertorService: PepDataConvertorService,\n private _layoutService: PepLayoutService,\n private _loaderService: PepLoaderService,\n private _translate: TranslateService,\n private _genericListService: PepGenericListService,\n private _sessionService: PepSessionService\n ) {\n this._resize$ = this._layoutService.onResize$.pipe().subscribe((size) => { \n // \n });\n this._loader$ = this._loaderService.onChanged$.subscribe((status: boolean) => {\n //\n });\n }\n\n ngOnInit() {\n //\n }\n\n private async initList() {\n this.onLoad = true;\n setTimeout(async () => { //making sure all input data is available\n if (this._dataSource) {\n //merge selector inputs with callback inputs\n this.loadTableInputs();\n\n let fromIndex = 0;\n let toIndex = 0;\n\n if (this.listInputs.pager.type === 'pages') {\n fromIndex = this.listInputs.pager.size * this.listInputs.pager.index;\n toIndex = fromIndex + (this.listInputs.pager.size || DEFAULT_PAGE_SIZE) - 1;\n } else {\n toIndex = 100;//TO DO - get value from - this.customList.getTopItems()\n }\n\n const data = await this.loadData(fromIndex, toIndex);\n \n if (this.listInputs?.emptyState?.show === true) {\n this.setEmptyState();\n }\n this.onLoad = false;\n //show empty state\n if (this.showEmptyState) {\n if (!this.listInputs.emptyState.title) { \n this._translate.get('GENERIC_LIST.EMPTY_STATE.TITLE').subscribe(text => { \n this.listInputs.emptyState.title = text;\n });\n }\n if (!this.listInputs.emptyState.description) { \n this._translate.get('GENERIC_LIST.EMPTY_STATE.DESCRIPTION').subscribe(text => { \n this.listInputs.emptyState.description = text;\n });\n }\n return;\n }\n setTimeout(async () => {\n if (this._pepListContainer) {\n if (this._pepListContainer.length > 0) {\n this._pepListContainer.remove();\n }\n const { PepListComponent } = await import('@pepperi-addons/ngx-lib/list');\n const componentRef = this._pepListContainer.createComponent(PepListComponent);\n\n this.pepList = componentRef.instance;\n \n componentRef.instance.viewType = this._genericListService.getListViewType(this._dataView.Type);\n componentRef.instance.tableViewType = this.listInputs.tableViewType;\n componentRef.instance.zebraStripes = this.listInputs.zebraStripes;\n if (this.disabled) {\n componentRef.instance.disabled = true;\n componentRef.instance.lockItemInnerEvents = true;\n }\n componentRef.instance.supportSorting = this.listInputs.supportSorting;\n componentRef.instance.sorting = this.listInputs.sorting;\n componentRef.instance.cacheSize = this.listInputs.cacheSize;\n\n componentRef.instance.selectionTypeForActions = this.listInputs.selectionType;\n componentRef.instance.hideAllSelectionInMulti = this.listInputs.hideSelectAll;\n\n componentRef.instance.showCardSelection = this.listInputs.selectionType !== 'none';\n componentRef.instance.pagerType = this.listInputs.pager.type;\n if (this.listInputs.pager.type === 'pages') {\n componentRef.instance.pageSize = this.listInputs.pager?.size || DEFAULT_PAGE_SIZE;\n componentRef.instance.pageIndex = this.listInputs.pager?.index || 0;\n }\n if(this.selectionType == \"multi\" && this.selectAll){\n this._sessionService.setObject('AllSelected', true)\n }\n componentRef.instance.noDataFoundMsg = this.listInputs.noDataFoundMsg;\n componentRef.instance.startIndexChange.subscribe($event => {\n this.startIndexChange.emit($event)\n })\n componentRef.instance.fieldClick.subscribe(($event) => {\n this.onCustomizeFieldClick($event);\n });\n componentRef.instance.selectedItemsChange.subscribe(($event) => {\n this.onSelectedItemsChanged($event);\n });\n componentRef.instance.loadItems.subscribe(($event) => {\n this.onLoadItems($event);\n });\n componentRef.instance.loadPage.subscribe(($event) => {\n this.onLoadPage($event);\n });\n componentRef.instance.valueChange.subscribe(($event) => {\n this.onValueChanged($event);\n });\n componentRef.instance.sortingChange.subscribe(($event) => {\n this.onSortingChange($event);\n });\n componentRef.instance.listLoad.subscribe(($event) => {\n this.onListLoad();\n });\n let convertedList: ObjectsDataRow[] = [];\n if (data) {\n if (data?.length) {\n convertedList = this._dataConvertorService.convertListData(data);\n }\n const uiControl = this.getUiControl(DataViewConverter.toUIControlData(this._dataView));\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n componentRef.instance.setSelectedIds(selectedItems);\n } \n \n componentRef.instance.initListData(uiControl, this.totalRowCount, convertedList);\n }\n componentRef.instance.scrollToIndex(this.scrollPosition)\n }\n }, 0);\n }\n }, 0);\n }\n\n /**\n * loads inputs in case they are provided and merge with selector inputs\n * @returns merged pep-list inputs\n */\n private loadTableInputs() {\n this.listInputs = {\n supportSorting: this.supportSorting,\n sorting: this.sorting,\n cacheSize: this.cacheSize,\n hideSelectAll: this.hideSelectAll,\n selectionType: this.selectionType,\n pager: this.pager,\n noDataFoundMsg: this.noDataFoundMsg,\n tableViewType: this.tableViewType,\n zebraStripes: this.zebraStripes,\n emptyState: this.emptyState,\n selectAll: this.selectAll\n };\n if (this._dataSource.inputs) {\n Object.entries(this._dataSource.inputs).forEach((item: any) => {\n if (this._genericListService.hasProperty(this.listInputs, item[0])) {\n this.listInputs[item[0]] = item[1];\n }\n });\n }\n }\n\n /**\n * detemines whether empty state is to be displayed\n */\n private setEmptyState() {\n this.showEmptyState = this.totalRowCount === 0 &&\n this.searchString === '' &&\n this._appliedFilters.length === 0;\n }\n\n private getUiControl(data: any): UIControl {\n const uiControl = new UIControl();\n uiControl.ControlFields = [];\n\n if (data?.ControlFields) {\n uiControl.ControlFields = data.ControlFields.map((field: any) => this._genericListService.convertToUiControlField(field));\n }\n\n return uiControl;\n }\n\n private loadMenuItems(): void { //TODO\n if (this.listInputs.selectionType !== 'none') {\n this.getMenuActions().then(\n x => this.menuActions = x\n );\n }\n }\n\n private async getMenuActions(): Promise<PepMenuItem[]> {\n const res: PepMenuItem[] = [];\n const result = this.getMenuObjects();\n if (result.success) {\n const actions = await this.actions.get(result.data);\n this.menuHandlers = {};\n actions?.forEach(item => {\n const uuid = PepGuid.newGuid();\n this.menuHandlers[uuid] = item.handler;\n res.push({\n key: uuid,\n text: item.title\n })\n })\n }\n\n return res;\n }\n\n private getMenuObjects() {\n const menuObjects: any = {\n success: false,\n data: new PepSelectionData()\n };\n\n if (this.pepList) {\n menuObjects.success = true;\n menuObjects.data = this.pepList.getSelectedItemsData();\n }\n\n return menuObjects;\n }\n\n private initSearch() {\n this.searchString = '';\n this.search?.initSearch();\n }\n\n private initSmartSearch() {\n this._appliedFilters = [];\n this.smartFiltersComponent?.clearFilters();\n }\n\n private async loadData(fromIndex: number, toIndex: number): Promise<PepRowData[]> {\n this._loaderService.show();\n let converedData: PepRowData[] = [];\n const data: IPepGenericListInitData = await this._dataSource.init({\n searchString: this.searchString || undefined,\n filters: this._appliedFilters.length ? this._appliedFilters : undefined,\n sorting: this._sorting || undefined,\n fromIndex: fromIndex,\n toIndex: toIndex\n }); \n this._loaderService.hide();\n\n // Set the total count\n this.totalRowCount = data?.totalCount || 0;\n\n if (data) {\n this._dataView = data.dataView;\n\n if (data.items?.length > 0 && !data.isPepRowData) { \n converedData = data.items.map(item => this._genericListService.convertToPepRowData(item, data.dataView, this.uuidMapping));\n }\n }\n\n return converedData;\n }\n\n\n private async updateDataList(fromIndex: number, toIndex: number, pageIndex: number | undefined = undefined): Promise<PepRowData[]> {\n if (this._dataSource.update) {\n this._loaderService.show();\n let converedData: PepRowData[] = [];\n const dataList = await this._dataSource.update({\n searchString: this.searchString || undefined,\n filters: this._appliedFilters.length ? this._appliedFilters : undefined,\n sorting: this._sorting || undefined,\n fromIndex: fromIndex,\n toIndex: toIndex,\n pageIndex: pageIndex\n });\n this._loaderService.hide();\n\n if (dataList?.length > 0) {\n converedData = dataList.map(item => this._genericListService.convertToPepRowData(item, this._dataView, this.uuidMapping));\n } \n return converedData;\n } else {\n return [];\n }\n }\n\n /**\n * loads virtual scroll items from api\n */\n private async onLoadItems(event: IPepListLoadItemsEvent) {\n const list = await this.updateDataList(event.fromIndex, event.toIndex);\n const convertedList = this._dataConvertorService.convertListData(list);\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n this.pepList.setSelectedIds(selectedItems);\n }\n this.pepList.updateItems(convertedList, event);\n }\n\n /**\n * loads paging bulk from api\n */\n private async onLoadPage(event: IPepListLoadPageEvent) {\n const fromIndex = event.pageIndex * event.pageSize;\n const toIndex = Math.min(fromIndex + event.pageSize - 1, this.totalRowCount - 1);\n const list = await this.updateDataList(fromIndex, toIndex, event.pageIndex);\n const convertedList = this._dataConvertorService.convertListData(list);\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n this.pepList.setSelectedIds(selectedItems);\n }\n this.pepList.updatePage(convertedList, event);\n }\n\n getItemById(id: string): ObjectsDataRow | null {\n if (this.pepList) {\n return this._pepList.getItemDataByID(id);\n } else {\n return null;\n }\n }\n\n getSelectedItems(): PepSelectionData | null {\n if (this.pepList) {\n return this._pepList.getSelectedItemsData();\n } else {\n return null;\n }\n }\n\n getPageIndex() {\n return this.pepList.pageIndex;\n }\n\n onActionItemClicked(action: IPepMenuItemClickEvent): void {\n const result = this.getMenuObjects();\n if (result.success) {\n this.menuHandlers[action.source.key](result.data);\n }\n }\n\n onSearchChanged(event: IPepSearchClickEvent) {\n this.searchString = event.value;\n this.initList();\n }\n\n onSelectedItemsChanged(selectedRowsCount: number) {\n //loading menu items after pep-list selected items are updated\n setTimeout(() => {\n this.loadMenuItems();\n }, 0);\n }\n\n onCustomizeFieldClick(fieldClickEvent: IPepFormFieldClickEvent) {\n this.fieldClick.emit(fieldClickEvent);\n }\n\n onBreadCrumbItemClick(event: IPepBreadCrumbItemClickEvent) {\n this.breadCrumbItemClick.emit(event);\n }\n\n onValueChanged(event: IPepFormFieldValueChangeEvent) {\n this.valueChange.emit(event);\n }\n\n onSortingChange(event: IPepListSortingChangeEvent) {\n this._sorting = event;\n this.initList();\n }\n\n onFiltersChange(filters: IPepSmartFilterData[]) {\n this._appliedFilters = filters;\n this.initList();\n }\n\n onListLoad(): void {\n this.listLoad.emit();\n }\n\n ngOnDestroy() {\n if (this._resize$) {\n this._resize$.unsubscribe();\n }\n if (this._loader$) {\n this._loader$.unsubscribe();\n }\n }\n\n}\n","<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\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 *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </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 *ngIf=\"!onLoad\" 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 #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.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 *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>","import { NgModule, APP_INITIALIZER } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GenericListComponent } from './generic-list.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepListModule } from '@pepperi-addons/ngx-lib/list';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepPageLayoutModule } from '@pepperi-addons/ngx-lib/page-layout';\nimport { PepTopBarModule } from '@pepperi-addons/ngx-lib/top-bar';\nimport { PepSideBarModule } from '@pepperi-addons/ngx-lib/side-bar';\nimport { PepSearchModule } from '@pepperi-addons/ngx-lib/search';\nimport { PepBreadCrumbsModule } from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { PepSmartFiltersModule } from '@pepperi-addons/ngx-lib/smart-filters';\nimport { PepIconModule, PepIconRegistry, pepIconLeafRound, pepIconLeafSkiny, pepIconSystemView } from '@pepperi-addons/ngx-lib/icon';\nimport { PepGenericListService } from './generic-list.service';\nimport { firstValueFrom } from 'rxjs';\n\nconst pepIcons = [\n pepIconLeafRound,\n pepIconLeafSkiny, pepIconSystemView\n]\n\n/*\nexport function appInitializerFactory(translate: TranslateService) {\n return () => {\n translate.setDefaultLang('en');\n return firstValueFrom(translate.use('en'));\n }\n}*/\n\n@NgModule({\n declarations: [\n GenericListComponent\n ],\n imports: [\n CommonModule,\n PepNgxLibModule,\n MatIconModule,\n PepListModule,\n PepFormModule,\n PepMenuModule,\n PepPageLayoutModule,\n PepTopBarModule,\n PepSideBarModule,\n PepSearchModule,\n PepBreadCrumbsModule,\n PepIconModule,\n PepSmartFiltersModule\n ],\n exports: [\n GenericListComponent \n ],\n providers: [\n PepGenericListService,\n /*{\n provide: APP_INITIALIZER,\n useFactory: appInitializerFactory,\n deps: [TranslateService],\n multi: true\n } */\n ]\n})\nexport class PepGenericListModule { \n constructor(\n private pepIconRegistry: PepIconRegistry\n ) {\n this.pepIconRegistry.registerIcons(pepIcons);\n }\n}\n","/*\n * Public API Surface of ngx-composite-lib/generic-list\n */\nexport * from './generic-list.module';\nexport * from './generic-list.component';\nexport * from './generic-list.model';\nexport * from './generic-list.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.PepGenericListService","i11"],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-composite-lib-generic-list.mjs","sources":["../../../projects/ngx-composite-lib/generic-list/generic-list.service.ts","../../../projects/ngx-composite-lib/generic-list/generic-list.component.ts","../../../projects/ngx-composite-lib/generic-list/generic-list.component.html","../../../projects/ngx-composite-lib/generic-list/generic-list.module.ts","../../../projects/ngx-composite-lib/generic-list/public-api.ts","../../../projects/ngx-composite-lib/generic-list/pepperi-addons-ngx-composite-lib-generic-list.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n IPepGenericListSmartFilter,\n IPepGenericListDataViewField,\n IPepSmartFilters\n} from './generic-list.model';\nimport {\n PepSmartFilterBaseField,\n IPepSmartFilterData,\n} from '@pepperi-addons/ngx-lib/smart-filters';\nimport { PepQueryBuilderService, IPepQueryBuilderField } from '@pepperi-addons/ngx-lib/query-builder';\nimport {\n PepRowData,\n ObjectsDataRow\n} from '@pepperi-addons/ngx-lib';\nimport { GridDataViewField, DataViewFieldTypes } from '@pepperi-addons/papi-sdk/dist/entities/data-view';\n\n@Injectable() \nexport class PepGenericListService {\n\n constructor(\n private _translate: TranslateService,\n private _queryBuilderService: PepQueryBuilderService\n ) {\n //\n }\n\n /**\n * checks if the object contains property\n * @param obj object\n * @param prop property name\n * @returns true if contains, false otherwise\n */\n hasProperty(obj: any, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n getListViewType(dataViewType: string) {\n switch (dataViewType) {\n case 'Grid':\n return 'table';\n case 'Card':\n return 'cards';\n case 'Line':\n return 'lines';\n default:\n return 'table';\n }\n }\n\n convertToPepRowData(item: any, dataView: any, uuidMapping: string) {\n const row = new PepRowData();\n let itemFields: any;\n\n if (this.hasProperty(item, 'fields') && typeof item.fields === 'object') {\n itemFields = item.fields;\n if (item.isEditable === false) {\n row.IsEditable = false;\n }\n if (item.isSelectableForActions === false) {\n row.IsSelectableForActions = false;\n }\n if (item.isEditable && item.isSelectableForActions && item.isSelected) {\n row.IsSelected = true;\n }\n } else {\n itemFields = item;\n }\n\n row.UUID = itemFields[uuidMapping] || undefined;\n row.Fields = [];\n\n if (dataView?.Fields && dataView.Columns) {\n for (let index = 0; index < dataView.Fields.length; index++) {\n const field = dataView.Fields[index] as IPepGenericListDataViewField;\n row.Fields.push({\n ApiName: field.FieldID,\n Title: field.Title ? this._translate.instant(field.Title) : '',\n XAlignment: 1,\n FormattedValue: (itemFields[field.FieldID] || '').toString(),\n Value: (itemFields[field.FieldID] || '').toString(),\n ColumnWidth: dataView.Columns[index]?.Width || undefined,\n AdditionalValue: '',\n OptionalValues: field.OptionalValues || [],\n FieldType: DataViewFieldTypes[field.Type],\n ReadOnly: field.ReadOnly,\n Enabled: !field.ReadOnly\n })\n }\n }\n return row;\n }\n\n convertToUiControlField(field: any) {\n return {\n ApiName: field.ApiName,\n FieldType: field.FieldType,\n Title: field.Title,\n ReadOnly: field.ReadOnlyField,\n ColumnWidth: field.ColumnWidth,\n ColumnWidthType: 1,\n Layout: {\n X: field.Layout.X,\n Y: field.Layout.Y,\n Width: field.Layout.Width,\n Height: field.Layout.Field_Height,\n XAlignment: field.Layout.xAlignment,\n YAlignment: field.Layout.yAlignment,\n }\n }\n }\n\n convertToSmartFilter(input: IPepGenericListSmartFilter) { \n const smartFilters: IPepSmartFilters = {\n fields: [],\n data: [],\n title: 'Filters'\n }\n\n if (input) {\n if (input.dataView) {\n smartFilters.fields = this.createSmartFilterFields(input.dataView);\n if (input.data?.length) {\n smartFilters.data = input.data;\n }\n }\n if (input.title) {\n smartFilters.title = input.title;\n }\n }\n\n return smartFilters; \n }\n\n createSmartFilterFields(dataView: any) {\n let smartFields: PepSmartFilterBaseField[] = [];\n\n const fields = dataView.Fields.map((field: any) => {\n return {\n FieldID: field.FieldID,\n FieldType: field.Type,\n Title: field.Title,\n OptionalValues: field.OptionalValues\n } as IPepQueryBuilderField\n });\n const smartFilterfields = this._queryBuilderService.convertToSmartFilterFields(fields);\n if (smartFilterfields?.length) {\n smartFields = smartFilterfields.map((field => field.smart));\n }\n\n return smartFields;\n }\n\n // TODO: This func is copy from ngx-lib write it in one place.\n private getUniqItemId(itemId: string, itemType = ''): string {\n return itemId + ',' + itemType;\n }\n\n getSelectedItems(items: ObjectsDataRow[]) {\n const selectedItems = [];\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].IsSelected) {\n selectedItems.push(this.getUniqItemId(items[i].UID, items[i].Type?.toString()));\n }\n }\n\n return selectedItems;\n }\n\n\n}","import {\n Component,\n OnInit,\n ViewChild,\n Input,\n Output,\n EventEmitter,\n ViewContainerRef\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PepDataConvertorService,\n PepLayoutService,\n ObjectsDataRow,\n PepGuid,\n UIControl,\n PepLoaderService,\n PepRowData,\n PepSessionService\n} from '@pepperi-addons/ngx-lib';\nimport { Subscription } from 'rxjs';\nimport { IPepFormFieldClickEvent } from '@pepperi-addons/ngx-lib/form';\nimport {\n PepListComponent,\n PepSelectionData,\n IPepListLoadPageEvent,\n PepListSelectionType,\n IPepListSortingChangeEvent,\n DEFAULT_PAGE_SIZE,\n IPepListLoadItemsEvent,\n PepListTableViewType,\n IPepListSortingData,\n IPepListStartIndexChangeEvent\n} from '@pepperi-addons/ngx-lib/list';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { IPepFormFieldValueChangeEvent } from '@pepperi-addons/ngx-lib/form';\nimport {\n PepBreadCrumbItem,\n IPepBreadCrumbItemClickEvent\n} from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { IPepSearchClickEvent, PepSearchComponent } from '@pepperi-addons/ngx-lib/search';\n\nimport {\n DataView,\n GridDataView\n} from '@pepperi-addons/papi-sdk/dist/entities/data-view';\nimport {\n IPepGenericListInitData,\n IPepGenericListDataSource,\n IPepGenericListPager,\n IPepGenericListActions,\n IPepGenericListSmartFilter,\n IPepSmartFilters,\n IPepGenericListEmptyState\n} from './generic-list.model';\nimport { PepGenericListService } from './generic-list.service';\nimport { DataViewConverter } from '@pepperi-addons/data-views';\nimport {\n IPepSmartFilterData,\n PepSmartFilterBaseField,\n PepSmartFiltersComponent\n} from '@pepperi-addons/ngx-lib/smart-filters';\n\n\n@Component({\n selector: 'pep-generic-list',\n templateUrl: './generic-list.component.html',\n styleUrls: ['./generic-list.component.scss', './generic-list.component.theme.scss'],\n providers: [PepGenericListService]\n})\nexport class GenericListComponent implements OnInit {\n @ViewChild('search') search: PepSearchComponent | undefined;\n @ViewChild('smartFiltersComponent') smartFiltersComponent: PepSmartFiltersComponent | undefined;\n\n private _pepListContainer: ViewContainerRef | undefined;\n @ViewChild('pepListContainer', { read: ViewContainerRef })\n set pepListContainer(val: ViewContainerRef) {\n this._pepListContainer = val;\n }\n\n private _dataSource: IPepGenericListDataSource = {\n init: async (params: any) => {\n return {\n dataView: {\n Type: 'Grid'\n },\n totalCount: -1,\n items: []\n }\n }\n }\n @Input()\n set dataSource(val: IPepGenericListDataSource) {\n this._dataSource = val;\n this._sorting = undefined;\n this.initSearch();\n this.initSmartSearch();\n this.initList();\n }\n\n @Input()\n actions: IPepGenericListActions = {\n get: async (data: any) => {\n return []\n }\n };\n\n @Input()\n uuidMapping = 'key';\n\n @Input()\n disabled = false;\n\n @Input()\n addPadding = false;\n\n @Input()\n title = '';\n\n @Input()\n description = '';\n\n @Input()\n inline = false;\n\n @Input()\n showSearch = false;\n\n @Input()\n noDataFoundMsg = '';\n\n @Input()\n emptyState: IPepGenericListEmptyState | undefined;\n\n @Input()\n selectionType: PepListSelectionType = 'multi';\n\n @Input()\n supportSorting = false;\n\n @Input()\n sorting: IPepListSortingData | undefined;\n\n @Input()\n cacheSize = -1;\n\n @Input()\n hideSelectAll = false;\n \n @Input()\n pager: IPepGenericListPager = {\n type: 'scroll'\n }\n\n @Input()\n tableViewType: PepListTableViewType = 'regular';\n\n @Input()\n zebraStripes = false;\n\n @Input()\n set smartFilter(val: IPepGenericListSmartFilter) {\n this.smartFilters = this._genericListService.convertToSmartFilter(val);\n this._appliedFilters = this.smartFilters.data || [];\n this.showSmartFilter = this.smartFilters.fields.length > 0; \n }\n\n @Input()\n showTopBar = false;\n\n @Input()\n breadCrumbsItems: PepBreadCrumbItem[] = new Array<PepBreadCrumbItem>();\n\n @Input()\n selectAll = false\n\n @Input()\n scrollPosition = 0\n\n @Output()\n fieldClick = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output()\n valueChange = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @Output()\n breadCrumbItemClick = new EventEmitter<IPepBreadCrumbItemClickEvent>();\n\n @Output()\n startIndexChange = new EventEmitter<IPepListStartIndexChangeEvent>()\n\n @Output()\n listLoad: EventEmitter<void> = new EventEmitter<void>();\n\n set pepList(val: PepListComponent) {\n this._pepList = val;\n }\n\n get pepList() {\n return this._pepList;\n }\n\n private _resize$: Subscription = new Subscription();\n private _loader$: Subscription = new Subscription();\n\n private _dataView: DataView = {\n Type: 'Grid'\n };\n private _pepList: any;\n onLoad = true;\n listInputs: any;\n totalRowCount = -1;\n searchString = '';\n showSmartFilter = false;\n showEmptyState = false;\n smartFilters: IPepSmartFilters = {\n fields: [],\n data: [],\n title: 'Filters'\n };\n private _appliedFilters: IPepSmartFilterData[] = [];\n private _sorting: IPepListSortingChangeEvent | undefined = undefined;\n\n menuHandlers: { [key: string]: (obj: any) => Promise<void> } = {};\n menuActions: Array<PepMenuItem> = [];\n\n constructor(\n private _dataConvertorService: PepDataConvertorService,\n private _layoutService: PepLayoutService,\n private _loaderService: PepLoaderService,\n private _translate: TranslateService,\n private _genericListService: PepGenericListService,\n private _sessionService: PepSessionService\n ) {\n this._resize$ = this._layoutService.onResize$.pipe().subscribe((size) => { \n // \n });\n this._loader$ = this._loaderService.onChanged$.subscribe((status: boolean) => {\n //\n });\n }\n\n ngOnInit() {\n //\n }\n\n private async initList() {\n this.onLoad = true;\n setTimeout(async () => { //making sure all input data is available\n if (this._dataSource) {\n //merge selector inputs with callback inputs\n this.loadTableInputs();\n\n let fromIndex = 0;\n let toIndex = 0;\n\n if (this.listInputs.pager.type === 'pages') {\n fromIndex = this.listInputs.pager.size * this.listInputs.pager.index;\n toIndex = fromIndex + (this.listInputs.pager.size || DEFAULT_PAGE_SIZE) - 1;\n } else {\n toIndex = 100;//TO DO - get value from - this.customList.getTopItems()\n }\n\n const data = await this.loadData(fromIndex, toIndex);\n \n if (this.listInputs?.emptyState?.show === true) {\n this.setEmptyState();\n }\n this.onLoad = false;\n //show empty state\n if (this.showEmptyState) {\n if (!this.listInputs.emptyState.title) { \n this._translate.get('GENERIC_LIST.EMPTY_STATE.TITLE').subscribe(text => { \n this.listInputs.emptyState.title = text;\n });\n }\n if (!this.listInputs.emptyState.description) { \n this._translate.get('GENERIC_LIST.EMPTY_STATE.DESCRIPTION').subscribe(text => { \n this.listInputs.emptyState.description = text;\n });\n }\n return;\n }\n setTimeout(async () => {\n if (this._pepListContainer) {\n if (this._pepListContainer.length > 0) {\n this._pepListContainer.remove();\n }\n const { PepListComponent } = await import('@pepperi-addons/ngx-lib/list');\n const componentRef = this._pepListContainer.createComponent(PepListComponent);\n\n this.pepList = componentRef.instance;\n \n componentRef.instance.viewType = this._genericListService.getListViewType(this._dataView.Type);\n componentRef.instance.tableViewType = this.listInputs.tableViewType;\n componentRef.instance.zebraStripes = this.listInputs.zebraStripes;\n if (this.disabled) {\n componentRef.instance.disabled = true;\n componentRef.instance.lockItemInnerEvents = true;\n }\n componentRef.instance.supportSorting = this.listInputs.supportSorting;\n componentRef.instance.sorting = this.listInputs.sorting;\n componentRef.instance.cacheSize = this.listInputs.cacheSize;\n\n componentRef.instance.selectionTypeForActions = this.listInputs.selectionType;\n componentRef.instance.hideAllSelectionInMulti = this.listInputs.hideSelectAll;\n\n componentRef.instance.showCardSelection = this.listInputs.selectionType !== 'none';\n componentRef.instance.pagerType = this.listInputs.pager.type;\n if (this.listInputs.pager.type === 'pages') {\n componentRef.instance.pageSize = this.listInputs.pager?.size || DEFAULT_PAGE_SIZE;\n componentRef.instance.pageIndex = this.listInputs.pager?.index || 0;\n }\n if(this.selectionType == \"multi\" && this.selectAll){\n this._sessionService.setObject('AllSelected', true)\n }\n componentRef.instance.noDataFoundMsg = this.listInputs.noDataFoundMsg;\n componentRef.instance.startIndexChange.subscribe($event => {\n this.startIndexChange.emit($event)\n })\n componentRef.instance.fieldClick.subscribe(($event) => {\n this.onCustomizeFieldClick($event);\n });\n componentRef.instance.selectedItemsChange.subscribe(($event) => {\n this.onSelectedItemsChanged($event);\n });\n componentRef.instance.loadItems.subscribe(($event) => {\n this.onLoadItems($event);\n });\n componentRef.instance.loadPage.subscribe(($event) => {\n this.onLoadPage($event);\n });\n componentRef.instance.valueChange.subscribe(($event) => {\n this.onValueChanged($event);\n });\n componentRef.instance.sortingChange.subscribe(($event) => {\n this.onSortingChange($event);\n });\n componentRef.instance.listLoad.subscribe(($event) => {\n this.onSelectedItemsChanged(this._pepList.selectedItems.length);\n this.onListLoad();\n });\n let convertedList: ObjectsDataRow[] = [];\n if (data) {\n if (data?.length) {\n convertedList = this._dataConvertorService.convertListData(data);\n }\n const uiControl = this.getUiControl(DataViewConverter.toUIControlData(this._dataView));\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n componentRef.instance.setSelectedIds(selectedItems);\n } \n \n componentRef.instance.initListData(uiControl, this.totalRowCount, convertedList);\n }\n componentRef.instance.scrollToIndex(this.scrollPosition)\n }\n }, 0);\n }\n }, 0);\n }\n\n /**\n * loads inputs in case they are provided and merge with selector inputs\n * @returns merged pep-list inputs\n */\n private loadTableInputs() {\n this.listInputs = {\n supportSorting: this.supportSorting,\n sorting: this.sorting,\n cacheSize: this.cacheSize,\n hideSelectAll: this.hideSelectAll,\n selectionType: this.selectionType,\n pager: this.pager,\n noDataFoundMsg: this.noDataFoundMsg,\n tableViewType: this.tableViewType,\n zebraStripes: this.zebraStripes,\n emptyState: this.emptyState,\n selectAll: this.selectAll\n };\n if (this._dataSource.inputs) {\n Object.entries(this._dataSource.inputs).forEach((item: any) => {\n if (this._genericListService.hasProperty(this.listInputs, item[0])) {\n this.listInputs[item[0]] = item[1];\n }\n });\n }\n }\n\n /**\n * detemines whether empty state is to be displayed\n */\n private setEmptyState() {\n this.showEmptyState = this.totalRowCount === 0 &&\n this.searchString === '' &&\n this._appliedFilters.length === 0;\n }\n\n private getUiControl(data: any): UIControl {\n const uiControl = new UIControl();\n uiControl.ControlFields = [];\n\n if (data?.ControlFields) {\n uiControl.ControlFields = data.ControlFields.map((field: any) => this._genericListService.convertToUiControlField(field));\n }\n\n return uiControl;\n }\n\n private loadMenuItems(): void { //TODO\n if (this.listInputs.selectionType !== 'none') {\n this.getMenuActions().then(\n x => this.menuActions = x\n );\n }\n }\n\n private async getMenuActions(): Promise<PepMenuItem[]> {\n const res: PepMenuItem[] = [];\n const result = this.getMenuObjects();\n if (result.success) {\n const actions = await this.actions.get(result.data);\n this.menuHandlers = {};\n actions?.forEach(item => {\n const uuid = PepGuid.newGuid();\n this.menuHandlers[uuid] = item.handler;\n res.push({\n key: uuid,\n text: item.title\n })\n })\n }\n\n return res;\n }\n\n private getMenuObjects() {\n const menuObjects: any = {\n success: false,\n data: new PepSelectionData()\n };\n\n if (this.pepList) {\n menuObjects.success = true;\n menuObjects.data = this.pepList.getSelectedItemsData();\n }\n\n return menuObjects;\n }\n\n private initSearch() {\n this.searchString = '';\n this.search?.initSearch();\n }\n\n private initSmartSearch() {\n this._appliedFilters = [];\n this.smartFiltersComponent?.clearFilters();\n }\n\n private async loadData(fromIndex: number, toIndex: number): Promise<PepRowData[]> {\n this._loaderService.show();\n let converedData: PepRowData[] = [];\n const data: IPepGenericListInitData = await this._dataSource.init({\n searchString: this.searchString || undefined,\n filters: this._appliedFilters.length ? this._appliedFilters : undefined,\n sorting: this._sorting || undefined,\n fromIndex: fromIndex,\n toIndex: toIndex\n }); \n this._loaderService.hide();\n\n // Set the total count\n this.totalRowCount = data?.totalCount || 0;\n\n if (data) {\n this._dataView = data.dataView;\n\n if (data.items?.length > 0 && !data.isPepRowData) { \n converedData = data.items.map(item => this._genericListService.convertToPepRowData(item, data.dataView, this.uuidMapping));\n }\n }\n\n return converedData;\n }\n\n\n private async updateDataList(fromIndex: number, toIndex: number, pageIndex: number | undefined = undefined): Promise<PepRowData[]> {\n if (this._dataSource.update) {\n this._loaderService.show();\n let converedData: PepRowData[] = [];\n const dataList = await this._dataSource.update({\n searchString: this.searchString || undefined,\n filters: this._appliedFilters.length ? this._appliedFilters : undefined,\n sorting: this._sorting || undefined,\n fromIndex: fromIndex,\n toIndex: toIndex,\n pageIndex: pageIndex\n });\n this._loaderService.hide();\n\n if (dataList?.length > 0) {\n converedData = dataList.map(item => this._genericListService.convertToPepRowData(item, this._dataView, this.uuidMapping));\n } \n return converedData;\n } else {\n return [];\n }\n }\n\n /**\n * loads virtual scroll items from api\n */\n private async onLoadItems(event: IPepListLoadItemsEvent) {\n const list = await this.updateDataList(event.fromIndex, event.toIndex);\n const convertedList = this._dataConvertorService.convertListData(list);\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n this.pepList.setSelectedIds(selectedItems);\n }\n this.pepList.updateItems(convertedList, event);\n }\n\n /**\n * loads paging bulk from api\n */\n private async onLoadPage(event: IPepListLoadPageEvent) {\n const fromIndex = event.pageIndex * event.pageSize;\n const toIndex = Math.min(fromIndex + event.pageSize - 1, this.totalRowCount - 1);\n const list = await this.updateDataList(fromIndex, toIndex, event.pageIndex);\n const convertedList = this._dataConvertorService.convertListData(list);\n const selectedItems = this._genericListService.getSelectedItems(convertedList);\n if (selectedItems?.length) {\n this.pepList.setSelectedIds(selectedItems);\n }\n this.pepList.updatePage(convertedList, event);\n }\n\n getItemById(id: string): ObjectsDataRow | null {\n if (this.pepList) {\n return this._pepList.getItemDataByID(id);\n } else {\n return null;\n }\n }\n\n getSelectedItems(): PepSelectionData | null {\n if (this.pepList) {\n return this._pepList.getSelectedItemsData();\n } else {\n return null;\n }\n }\n\n getPageIndex() {\n return this.pepList.pageIndex;\n }\n\n onActionItemClicked(action: IPepMenuItemClickEvent): void {\n const result = this.getMenuObjects();\n if (result.success) {\n this.menuHandlers[action.source.key](result.data);\n }\n }\n\n onSearchChanged(event: IPepSearchClickEvent) {\n this.searchString = event.value;\n this.initList();\n }\n\n onSelectedItemsChanged(selectedRowsCount: number) {\n //loading menu items after pep-list selected items are updated\n setTimeout(() => {\n this.loadMenuItems();\n }, 0);\n }\n\n onCustomizeFieldClick(fieldClickEvent: IPepFormFieldClickEvent) {\n this.fieldClick.emit(fieldClickEvent);\n }\n\n onBreadCrumbItemClick(event: IPepBreadCrumbItemClickEvent) {\n this.breadCrumbItemClick.emit(event);\n }\n\n onValueChanged(event: IPepFormFieldValueChangeEvent) {\n this.valueChange.emit(event);\n }\n\n onSortingChange(event: IPepListSortingChangeEvent) {\n this._sorting = event;\n this.initList();\n }\n\n onFiltersChange(filters: IPepSmartFilterData[]) {\n this._appliedFilters = filters;\n this.initList();\n }\n\n onListLoad(): void {\n this.listLoad.emit();\n }\n\n ngOnDestroy() {\n if (this._resize$) {\n this._resize$.unsubscribe();\n }\n if (this._loader$) {\n this._loader$.unsubscribe();\n }\n }\n\n}\n","<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\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 *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </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 *ngIf=\"!onLoad\" 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 #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.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 *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>","import { NgModule, APP_INITIALIZER } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GenericListComponent } from './generic-list.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepListModule } from '@pepperi-addons/ngx-lib/list';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepPageLayoutModule } from '@pepperi-addons/ngx-lib/page-layout';\nimport { PepTopBarModule } from '@pepperi-addons/ngx-lib/top-bar';\nimport { PepSideBarModule } from '@pepperi-addons/ngx-lib/side-bar';\nimport { PepSearchModule } from '@pepperi-addons/ngx-lib/search';\nimport { PepBreadCrumbsModule } from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { PepSmartFiltersModule } from '@pepperi-addons/ngx-lib/smart-filters';\nimport { PepIconModule, PepIconRegistry, pepIconLeafRound, pepIconLeafSkiny, pepIconSystemView } from '@pepperi-addons/ngx-lib/icon';\nimport { PepGenericListService } from './generic-list.service';\nimport { firstValueFrom } from 'rxjs';\n\nconst pepIcons = [\n pepIconLeafRound,\n pepIconLeafSkiny, pepIconSystemView\n]\n\n/*\nexport function appInitializerFactory(translate: TranslateService) {\n return () => {\n translate.setDefaultLang('en');\n return firstValueFrom(translate.use('en'));\n }\n}*/\n\n@NgModule({\n declarations: [\n GenericListComponent\n ],\n imports: [\n CommonModule,\n PepNgxLibModule,\n MatIconModule,\n PepListModule,\n PepFormModule,\n PepMenuModule,\n PepPageLayoutModule,\n PepTopBarModule,\n PepSideBarModule,\n PepSearchModule,\n PepBreadCrumbsModule,\n PepIconModule,\n PepSmartFiltersModule\n ],\n exports: [\n GenericListComponent \n ],\n providers: [\n PepGenericListService,\n /*{\n provide: APP_INITIALIZER,\n useFactory: appInitializerFactory,\n deps: [TranslateService],\n multi: true\n } */\n ]\n})\nexport class PepGenericListModule { \n constructor(\n private pepIconRegistry: PepIconRegistry\n ) {\n this.pepIconRegistry.registerIcons(pepIcons);\n }\n}\n","/*\n * Public API Surface of ngx-composite-lib/generic-list\n */\nexport * from './generic-list.module';\nexport * from './generic-list.component';\nexport * from './generic-list.model';\nexport * from './generic-list.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.PepGenericListService","i11"],"mappings":"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"}
@@ -35,7 +35,8 @@ export declare class PepGenericListService {
35
35
  };
36
36
  convertToSmartFilter(input: IPepGenericListSmartFilter): IPepSmartFilters;
37
37
  createSmartFilterFields(dataView: any): PepSmartFilterBaseField[];
38
- getSelectedItems(items: ObjectsDataRow[]): any[];
38
+ private getUniqItemId;
39
+ getSelectedItems(items: ObjectsDataRow[]): string[];
39
40
  static ɵfac: i0.ɵɵFactoryDeclaration<PepGenericListService, never>;
40
41
  static ɵprov: i0.ɵɵInjectableDeclaration<PepGenericListService>;
41
42
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pepperi-addons/ngx-composite-lib",
3
- "version": "0.4.2-beta.47",
3
+ "version": "0.4.2-beta.48",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": ">= 14.0.2",
6
6
  "@angular/cdk": ">= 14.0.2",