ng-zenduit 2.0.12 → 2.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/groups/zendu-groups.component.mjs +5 -1
- package/esm2020/lib/pagination-bar/zendu-pagination-bar.component.mjs +1 -1
- package/esm2020/lib/select/zendu-select.component.mjs +9 -3
- package/esm2020/lib/top-nav/zen-top-nav.component.mjs +3 -3
- package/esm2020/lib/top-nav-item/zen-top-nav-item.component.mjs +2 -2
- package/fesm2015/ng-zenduit.mjs +17 -6
- package/fesm2015/ng-zenduit.mjs.map +1 -1
- package/fesm2020/ng-zenduit.mjs +16 -6
- package/fesm2020/ng-zenduit.mjs.map +1 -1
- package/lib/select/zendu-select.component.d.ts +5 -1
- package/lib/top-nav/zen-top-nav.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -37,6 +37,10 @@ export class ZenduGroupsComponent {
|
|
|
37
37
|
if (changes['dataSource']) {
|
|
38
38
|
this.buildTreeLevels();
|
|
39
39
|
}
|
|
40
|
+
if ((changes['filteredDataSource'] || changes['dataSource']) &&
|
|
41
|
+
this._treeMap.size > 0 && this.filteredDataSource?.length) {
|
|
42
|
+
this.filteredDataSource = this.sortTreeOrder(this.filteredDataSource);
|
|
43
|
+
}
|
|
40
44
|
}
|
|
41
45
|
onOutsideClick(event) {
|
|
42
46
|
if (this.inline || !this.isOpen)
|
|
@@ -344,4 +348,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
344
348
|
type: HostListener,
|
|
345
349
|
args: ['window:mousedown', ['$event']]
|
|
346
350
|
}] } });
|
|
347
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9ncm91cHMvemVuZHUtZ3JvdXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9ncm91cHMvemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRdkIsTUFBTSxPQUFPLG9CQUFvQjtJQXVCL0IsWUFBb0IsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUF0QmxDLGVBQVUsR0FBaUIsRUFBRSxDQUFDO1FBQzlCLHVCQUFrQixHQUFpQixFQUFFLENBQUM7UUFDdEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBRyxPQUFPLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxjQUFjLENBQUM7UUFDN0IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixXQUFNLEdBQVcsSUFBSSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVcsTUFBTSxDQUFDO1FBRTVCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBRWxELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDZiw4QkFBeUIsR0FBd0IsSUFBSSxDQUFDO1FBRXRELGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNs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QUxoQyxTQUFTOytCQUNFLFlBQVk7aUdBS2IsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQTRCUCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uL2ZpbHRlci9maWx0ZXJzQ29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnemVuLWdyb3VwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi96ZW5kdS1ncm91cHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi96ZW5kdS1ncm91cHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgWmVuZHVHcm91cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkYXRhU291cmNlOiBEYXRhU291cmNlW10gPSBbXTtcbiAgQElucHV0KCkgZmlsdGVyZWREYXRhU291cmNlOiBEYXRhU291cmNlW10gPSBbXTtcbiAgQElucHV0KCkgaGlkZVNlbGVjdEFsbCA9IGZhbHNlO1xuICBASW5wdXQoKSBpc1NlbGVjdGVkQWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlubGluZSA9IGZhbHNlO1xuICBASW5wdXQoKSB3aWR0aCA9ICczMDBweCc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlbGVjdCBncm91cCc7XG4gIEBJbnB1dCgpIGhpZGVTZWFyY2ggPSBmYWxzZTtcbiAgQElucHV0KCkgaWRQcm9wOiBzdHJpbmcgPSAnaWQnO1xuICBASW5wdXQoKSBkaXNwbGF5UHJvcDogc3RyaW5nID0gJ25hbWUnO1xuXG4gIEBPdXRwdXQoKSBpc1NlbGVjdGVkQWxsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVNvdXJjZT4oKTtcblxuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG4gIHB1YmxpYyBvcGVuVXB3YXJkID0gZmFsc2U7XG4gIHB1YmxpYyBzZWFyY2hUZXh0ID0gJyc7XG4gIHByaXZhdGUgX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZTogRGF0YVNvdXJjZVtdIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfdHJlZU1hcCA9IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBEYXRhU291cmNlPigpO1xuICBwcml2YXRlIF9jaGlsZENvdW50Q2FjaGUgPSBuZXcgTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbihpdGVtOiBhbnkpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGl0ZW0uY2hpbGRyZW4gfHwgaXRlbS5DaGlsZHJlbiB8fCBpdGVtLkNoaWxkcmVucztcbiAgfVxuXG4gIHB1YmxpYyBoYXNDaGlsZHJlbihpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oaXRlbSk7XG4gICAgcmV0dXJuICEhY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RhdGFTb3VyY2UnXSkge1xuICAgICAgdGhpcy5idWlsZFRyZWVMZXZlbHMoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25PdXRzaWRlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pbmxpbmUgfHwgIXRoaXMuaXNPcGVuKSByZXR1cm47XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICghdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5vcGVuVXB3YXJkID0gdGhpcy5zaG91bGRPcGVuVXB3YXJkKDMwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5fc2VhcmNoRmlsdGVyZWREYXRhU291cmNlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3VsZE9wZW5VcHdhcmQoZHJvcGRvd25IZWlnaHQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuICh3aW5kb3cuaW5uZXJIZWlnaHQgLSByZWN0LmJvdHRvbSkgPCBkcm9wZG93bkhlaWdodDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheURhdGFTb3VyY2UoKTogRGF0YVNvdXJjZVtdIHtcbiAgICBpZiAodGhpcy5fc2VhcmNoRmlsdGVyZWREYXRhU291cmNlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VhcmNoRmlsdGVyZWREYXRhU291cmNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZERhdGFTb3VyY2U7XG4gIH1cblxuICBwdWJsaWMgb25TZWFyY2hDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG93ZXJTZWFyY2ggPSB0aGlzLnNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBtYXRjaGluZ0lkcyA9IG5ldyBTZXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xuXG4gICAgZm9yIChjb25zdCBlbCBvZiB0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgZWxbdGhpcy5kaXNwbGF5UHJvcF0gPT09ICdudW1iZXInID8gZWxbdGhpcy5kaXNwbGF5UHJvcF0udG9TdHJpbmcoKSA6IGVsW3RoaXMuZGlzcGxheVByb3BdO1xuICAgICAgaWYgKG5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlclNlYXJjaCkpIHtcbiAgICAgICAgbWF0Y2hpbmdJZHMuYWRkKGVsW3RoaXMuaWRQcm9wXSk7XG4gICAgICAgIC8vIEluY2x1ZGUgYWxsIGFuY2VzdG9yc1xuICAgICAgICBsZXQgY3VycmVudCA9IGVsO1xuICAgICAgICB3aGlsZSAoY3VycmVudC5wYXJlbnRJZCAhPSBudWxsKSB7XG4gICAgICAgICAgbWF0Y2hpbmdJZHMuYWRkKGN1cnJlbnQucGFyZW50SWQpO1xuICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3RyZWVNYXAuZ2V0KGN1cnJlbnQucGFyZW50SWQpO1xuICAgICAgICAgIGlmICghcGFyZW50KSBicmVhaztcbiAgICAgICAgICBjdXJyZW50ID0gcGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZpbHRlcmVkID0gdGhpcy5kYXRhU291cmNlLmZpbHRlcihlbCA9PiBtYXRjaGluZ0lkcy5oYXMoZWxbdGhpcy5pZFByb3BdKSk7XG5cbiAgICAvLyBBdXRvLWV4cGFuZCBwYXJlbnRzIHdoZW4gc2VhcmNoaW5nXG4gICAgZm9yIChjb25zdCBlbCBvZiBmaWx0ZXJlZCkge1xuICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4oZWwpKSB7XG4gICAgICAgIGVsLmlzT3BlbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc2VhcmNoRmlsdGVyZWREYXRhU291cmNlID0gdGhpcy5zb3J0VHJlZU9yZGVyKGZpbHRlcmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2U/LmZpbHRlcihkID0+IGQuY2hlY2tlZCkubGVuZ3RoIHx8IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMuc2VsZWN0ZWRDb3VudDtcbiAgICBpZiAoY291bnQgPT09IDApIHJldHVybiAnJztcbiAgICBpZiAoY291bnQgPT09IDEpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmRhdGFTb3VyY2UuZmluZChkID0+IGQuY2hlY2tlZCk7XG4gICAgICByZXR1cm4gaXRlbSA/IGl0ZW1bdGhpcy5kaXNwbGF5UHJvcF0/LnRvU3RyaW5nKCkgOiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGAke2NvdW50fSBzZWxlY3RlZGA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0FjdGl2ZUl0ZW1zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2U/LnNvbWUoZCA9PiBkLmNoZWNrZWQpIHx8IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKGQgPT4gKGQuY2hlY2tlZCA9IHRoaXMuaXNTZWxlY3RlZEFsbCkpO1xuICAgIHRoaXMuaXNTZWxlY3RlZEFsbENoYW5nZS5lbWl0KHRoaXMuaXNTZWxlY3RlZEFsbCk7XG4gIH1cblxuICBwdWJsaWMgb25DaGVja0NoYW5nZWQoZHNJdGVtOiBEYXRhU291cmNlKTogdm9pZCB7XG4gICAgdGhpcy5jYXNjYWRlVG9DaGlsZHJlbihkc0l0ZW0pO1xuICAgIHRoaXMudXBkYXRlUGFyZW50Q2hlY2tlZFN0YXRlKGRzSXRlbSk7XG4gICAgdGhpcy5jaGVja2VkQ2hhbmdlLmVtaXQoZHNJdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRUcmVlTGV2ZWxzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kYXRhU291cmNlPy5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBoYXNDaGlsZHJlbiA9IHRoaXMuZGF0YVNvdXJjZS5zb21lKGQgPT4gdGhpcy5oYXNDaGlsZHJlbihkKSk7XG4gICAgaWYgKCFoYXNDaGlsZHJlbikgcmV0dXJuO1xuXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIsIERhdGFTb3VyY2U+KCk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgbWFwLnNldChpdGVtW3RoaXMuaWRQcm9wXSwgaXRlbSk7XG4gICAgfVxuICAgIHRoaXMuX3RyZWVNYXAgPSBtYXA7XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5kYXRhU291cmNlKSB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oaXRlbSk7XG4gICAgICBpZiAoY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkSWQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBjaGlsZCA9IG1hcC5nZXQoY2hpbGRJZCk7XG4gICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLnBhcmVudElkID09IG51bGwpIHtcbiAgICAgICAgICAgIGNoaWxkLnBhcmVudElkID0gaXRlbVt0aGlzLmlkUHJvcF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgbGV0IGxldmVsID0gMDtcbiAgICAgIGxldCBjdXJyZW50ID0gaXRlbTtcbiAgICAgIHdoaWxlIChjdXJyZW50LnBhcmVudElkICE9IG51bGwpIHtcbiAgICAgICAgbGV2ZWwrKztcbiAgICAgICAgY29uc3QgcGFyZW50ID0gbWFwLmdldChjdXJyZW50LnBhcmVudElkKTtcbiAgICAgICAgaWYgKCFwYXJlbnQpIGJyZWFrO1xuICAgICAgICBjdXJyZW50ID0gcGFyZW50O1xuICAgICAgfVxuICAgICAgaXRlbS5sZXZlbCA9IGxldmVsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoaWxkQ291bnRDYWNoZS5jbGVhcigpO1xuICAgIGNvbnN0IGNvdW50Q2hpbGRyZW4gPSAoaXRlbTogRGF0YVNvdXJjZSk6IG51bWJlciA9PiB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oaXRlbSk7XG4gICAgICBpZiAoIWNoaWxkcmVuPy5sZW5ndGgpIHJldHVybiAwO1xuICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgIGZvciAoY29uc3QgY2hpbGRJZCBvZiBjaGlsZHJlbikge1xuICAgICAgICBjb25zdCBjaGlsZCA9IG1hcC5nZXQoY2hpbGRJZCk7XG4gICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgIGNvbnN0IGNoaWxkTGVhdmVzID0gY291bnRDaGlsZHJlbihjaGlsZCk7XG4gICAgICAgICAgY291bnQgKz0gY2hpbGRMZWF2ZXMgPiAwID8gY2hpbGRMZWF2ZXMgOiAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY291bnQ7XG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5kYXRhU291cmNlKSB7XG4gICAgICBpZiAodGhpcy5oYXNDaGlsZHJlbihpdGVtKSkge1xuICAgICAgICB0aGlzLl9jaGlsZENvdW50Q2FjaGUuc2V0KGl0ZW1bdGhpcy5pZFByb3BdLCBjb3VudENoaWxkcmVuKGl0ZW0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc29ydFRyZWVPcmRlcihpdGVtczogRGF0YVNvdXJjZVtdKTogRGF0YVNvdXJjZVtdIHtcbiAgICBjb25zdCBpdGVtU2V0ID0gbmV3IFNldChpdGVtcy5tYXAoaSA9PiBpW3RoaXMuaWRQcm9wXSkpO1xuICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZyB8IG51bWJlcj4oKTtcbiAgICBjb25zdCBvcmRlcmVkOiBEYXRhU291cmNlW10gPSBbXTtcbiAgICBjb25zdCB2aXNpdCA9IChpdGVtOiBEYXRhU291cmNlKSA9PiB7XG4gICAgICBpZiAodmlzaXRlZC5oYXMoaXRlbVt0aGlzLmlkUHJvcF0pKSByZXR1cm47XG4gICAgICBpZiAoIWl0ZW1TZXQuaGFzKGl0ZW1bdGhpcy5pZFByb3BdKSkgcmV0dXJuO1xuICAgICAgdmlzaXRlZC5hZGQoaXRlbVt0aGlzLmlkUHJvcF0pO1xuICAgICAgb3JkZXJlZC5wdXNoKGl0ZW0pO1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGl0ZW0pO1xuICAgICAgaWYgKGNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZElkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLl90cmVlTWFwLmdldChjaGlsZElkKTtcbiAgICAgICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHZpc2l0KGNoaWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaWYgKGl0ZW0ucGFyZW50SWQgPT0gbnVsbCkge1xuICAgICAgICB2aXNpdChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKGl0ZW1bdGhpcy5pZFByb3BdKSkge1xuICAgICAgICBvcmRlcmVkLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvcmRlcmVkO1xuICB9XG5cbiAgcHVibGljIGlzVHJlZUl0ZW1WaXNpYmxlKGRzSXRlbTogRGF0YVNvdXJjZSk6IGJvb2xlYW4ge1xuICAgIGlmIChkc0l0ZW0ucGFyZW50SWQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3RyZWVNYXAuZ2V0KGRzSXRlbS5wYXJlbnRJZCk7XG4gICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50LmlzT3BlbiAmJiB0aGlzLmlzVHJlZUl0ZW1WaXNpYmxlKHBhcmVudCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlVHJlZU5vZGUoZHNJdGVtOiBEYXRhU291cmNlKTogdm9pZCB7XG4gICAgZHNJdGVtLmlzT3BlbiA9ICFkc0l0ZW0uaXNPcGVuO1xuICB9XG5cbiAgcHVibGljIGdldENoaWxkQ291bnQoZHNJdGVtOiBEYXRhU291cmNlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRDb3VudENhY2hlLmdldChkc0l0ZW1bdGhpcy5pZFByb3BdKSB8fCAwO1xuICB9XG5cbiAgcHVibGljIGlzVHJlZUl0ZW1JbmRldGVybWluYXRlKGRzSXRlbTogRGF0YVNvdXJjZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbihkc0l0ZW0pKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgYWxsRGVzY2VuZGFudHMgPSB0aGlzLmdldEFsbERlc2NlbmRhbnRzKGRzSXRlbSk7XG4gICAgaWYgKCFhbGxEZXNjZW5kYW50cy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBjaGVja2VkQ291bnQgPSBhbGxEZXNjZW5kYW50cy5maWx0ZXIoZCA9PiBkLmNoZWNrZWQpLmxlbmd0aDtcbiAgICByZXR1cm4gY2hlY2tlZENvdW50ID4gMCAmJiBjaGVja2VkQ291bnQgPCBhbGxEZXNjZW5kYW50cy5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIGdldEFsbERlc2NlbmRhbnRzKGRzSXRlbTogRGF0YVNvdXJjZSk6IERhdGFTb3VyY2VbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBEYXRhU291cmNlW10gPSBbXTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oZHNJdGVtKTtcbiAgICBpZiAoIWNoaWxkcmVuPy5sZW5ndGgpIHJldHVybiByZXN1bHQ7XG4gICAgZm9yIChjb25zdCBjaGlsZElkIG9mIGNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IHRoaXMuX3RyZWVNYXAuZ2V0KGNoaWxkSWQpO1xuICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkKTtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5nZXRBbGxEZXNjZW5kYW50cyhjaGlsZCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQYXJlbnRDaGVja2VkU3RhdGUoZHNJdGVtOiBEYXRhU291cmNlKTogdm9pZCB7XG4gICAgaWYgKGRzSXRlbS5wYXJlbnRJZCA9PSBudWxsKSByZXR1cm47XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fdHJlZU1hcC5nZXQoZHNJdGVtLnBhcmVudElkKTtcbiAgICBpZiAoIXBhcmVudCB8fCAhdGhpcy5oYXNDaGlsZHJlbihwYXJlbnQpKSByZXR1cm47XG4gICAgY29uc3QgYWxsRGVzY2VuZGFudHMgPSB0aGlzLmdldEFsbERlc2NlbmRhbnRzKHBhcmVudCk7XG4gICAgY29uc3QgYWxsQ2hlY2tlZCA9IGFsbERlc2NlbmRhbnRzLmV2ZXJ5KGQgPT4gZC5jaGVja2VkKTtcbiAgICBwYXJlbnQuY2hlY2tlZCA9IGFsbENoZWNrZWQ7XG4gICAgdGhpcy51cGRhdGVQYXJlbnRDaGVja2VkU3RhdGUocGFyZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FzY2FkZVRvQ2hpbGRyZW4oaXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihpdGVtKTtcbiAgICBpZiAoIWNoaWxkcmVuPy5sZW5ndGgpIHJldHVybjtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgIGlmIChpdGVtW3RoaXMuaWRQcm9wXSA9PSBkYXRhW3RoaXMuaWRQcm9wXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoY2hpbGRyZW4uaW5jbHVkZXMoPHN0cmluZz5kYXRhW3RoaXMuaWRQcm9wXSkpIHtcbiAgICAgICAgZGF0YS5jaGVja2VkID0gaXRlbS5jaGVja2VkO1xuICAgICAgICBpZiAodGhpcy5oYXNDaGlsZHJlbihkYXRhKSkge1xuICAgICAgICAgIHRoaXMuY2FzY2FkZVRvQ2hpbGRyZW4oZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmVlQ29ubmVjdG9ycyhkc0l0ZW06IERhdGFTb3VyY2UpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCFkc0l0ZW0ubGV2ZWwpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGlzTGFzdEZsYWdzOiBib29sZWFuW10gPSBbXTtcbiAgICBsZXQgY3VycmVudDogRGF0YVNvdXJjZSB8IHVuZGVmaW5lZCA9IGRzSXRlbTtcblxuICAgIGZvciAobGV0IGwgPSBkc0l0ZW0ubGV2ZWw7IGwgPj0gMTsgbC0tKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl90cmVlTWFwLmdldChjdXJyZW50IS5wYXJlbnRJZCEpO1xuICAgICAgY29uc3QgcGFyZW50Q2hpbGRyZW4gPSBwYXJlbnQgPyB0aGlzLmdldENoaWxkcmVuKHBhcmVudCkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoIXBhcmVudENoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgaXNMYXN0RmxhZ3MucHVzaCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxhc3RDaGlsZElkID0gcGFyZW50Q2hpbGRyZW5bcGFyZW50Q2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICAgIGlzTGFzdEZsYWdzLnB1c2goY3VycmVudCFbdGhpcy5pZFByb3BdID09PSBsYXN0Q2hpbGRJZCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gcGFyZW50O1xuICAgIH1cblxuICAgIGlzTGFzdEZsYWdzLnJldmVyc2UoKTtcblxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlzTGFzdEZsYWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpc0l0ZW1MZXZlbCA9IChpID09PSBpc0xhc3RGbGFncy5sZW5ndGggLSAxKTtcbiAgICAgIGNvbnN0IGlzTGFzdCA9IGlzTGFzdEZsYWdzW2ldO1xuXG4gICAgICBpZiAoaXNJdGVtTGV2ZWwpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goaXNMYXN0ID8gJ2VsYm93JyA6ICdicmFuY2gnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGlzTGFzdCA/ICdub25lJyA6ICd0aHJvdWdoJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJlZU1hcCgpOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBEYXRhU291cmNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyZWVNYXA7XG4gIH1cbn1cbiIsIjwhLS0gRHJvcGRvd24gbW9kZSAoZGVmYXVsdCkgLS0+XG48ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy1kcm9wZG93blwiICpuZ0lmPVwiIWlubGluZVwiIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJ6ZW4tZ3JvdXBzLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzT3Blbn1cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ6ZW4tZ3JvdXBzLXRvZ2dsZS1sYWJlbFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2VsZWN0ZWRMYWJlbFwiIGNsYXNzPVwiemVuLWdyb3Vwcy1wbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZExhYmVsXCIgY2xhc3M9XCJ6ZW4tZ3JvdXBzLXZhbHVlXCI+e3sgc2VsZWN0ZWRMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHplbi1ncm91cHMtY2hldnJvblwiPmV4cGFuZF9tb3JlPC9pPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cInplbi1ncm91cHMtcGFuZWxcIiAqbmdJZj1cImlzT3BlblwiIFtjbGFzcy5vcGVuLXVwd2FyZF09XCJvcGVuVXB3YXJkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ6ZW4tZ3JvdXBzLXNlYXJjaFwiICpuZ0lmPVwiIWhpZGVTZWFyY2hcIj5cbiAgICAgICAgICAgIDx6ZW4tc2VhcmNoLWJveCBbKHRleHQpXT1cInNlYXJjaFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXh0Q2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKClcIj48L3plbi1zZWFyY2gtYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBJbmxpbmUgbW9kZSAodXNlZCBpbnNpZGUgemVuLWZpbHRlcikgLS0+XG48ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy1pbmxpbmVcIiAqbmdJZj1cImlubGluZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ6ZW4tZ3JvdXBzLXNlYXJjaFwiICpuZ0lmPVwiIWhpZGVTZWFyY2hcIj5cbiAgICAgICAgPHplbi1zZWFyY2gtYm94IFsodGV4dCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodGV4dENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCI+PC96ZW4tc2VhcmNoLWJveD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48IS0tIFNoYXJlZCB0cmVlIGNvbnRlbnQgLS0+XG48bmctdGVtcGxhdGUgI3RyZWVDb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJ6ZW4tZ3JvdXBzLXRyZWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1pdGVtLWNoZWNrYm94IHNlbGVjdC1hbGxcIiAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCI+XG4gICAgICAgICAgICA8emVuLWNoZWNrYm94ICpuZ0lmPVwiZGF0YVNvdXJjZS5sZW5ndGggPT09IGRpc3BsYXlEYXRhU291cmNlLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsoY2hlY2tlZCldPVwiaXNTZWxlY3RlZEFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImhhc0FjdGl2ZUl0ZW1zICYmICFpc1NlbGVjdGVkQWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTZWxlY3QgQWxsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uU2VsZWN0QWxsKClcIj5cbiAgICAgICAgICAgIDwvemVuLWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkc0l0ZW0gb2YgZGlzcGxheURhdGFTb3VyY2VcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1RyZWVJdGVtVmlzaWJsZShkc0l0ZW0pXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taXRlbS1jaGVja2JveCB0cmVlLWl0ZW1cIlxuICAgICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZy1sZWZ0LnB4XT1cIjI0ICsgKGRzSXRlbS5sZXZlbCB8fCAwKSAqIDI0XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRzSXRlbS5sZXZlbCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29ubmVjdG9yIG9mIGdldFRyZWVDb25uZWN0b3JzKGRzSXRlbSk7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJlZS1jb25uZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIid0cmVlLWNvbm5lY3Rvci0nICsgY29ubmVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCIzMiArIGkgKiAyNFwiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZS1pdGVtLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8emVuLWNoZWNrYm94IFsoY2hlY2tlZCldPVwiZHNJdGVtLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzVHJlZUl0ZW1JbmRldGVybWluYXRlKGRzSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbWFnZVVybF09XCJkc0l0ZW0uaW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uQ2hlY2tDaGFuZ2VkKGRzSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJkc0l0ZW1bZGlzcGxheVByb3BdPy50b1N0cmluZygpIHwgdHJhbnNsYXRlXCI+PC96ZW4tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGFzQ2hpbGRyZW4oZHNJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJlZS1pdGVtLWJhZGdlXCI+e3sgZ2V0Q2hpbGRDb3VudChkc0l0ZW0pIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJoYXNDaGlsZHJlbihkc0l0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJlZS1pdGVtLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVHJlZU5vZGUoZHNJdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHRyZWUtdG9nZ2xlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mub3Blbl09XCJkc0l0ZW0uaXNPcGVuXCI+ZXhwYW5kX21vcmU8L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInplbi1ncm91cHMtbm8tcmVzdWx0c1wiICpuZ0lmPVwic2VhcmNoVGV4dCAmJiBkaXNwbGF5RGF0YVNvdXJjZS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgIHt7ICdObyBSZXN1bHRzIEZvdW5kJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9ncm91cHMvemVuZHUtZ3JvdXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9ncm91cHMvemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRdkIsTUFBTSxPQUFPLG9CQUFvQjtJQXVCL0IsWUFBb0IsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUF0QmxDLGVBQVUsR0FBaUIsRUFBRSxDQUFDO1FBQzlCLHVCQUFrQixHQUFpQixFQUFFLENBQUM7UUFDdEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBRyxPQUFPLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxjQUFjLENBQUM7UUFDN0IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixXQUFNLEdBQVcsSUFBSSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVcsTUFBTSxDQUFDO1FBRTVCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBRWxELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDZiw4QkFBeUIsR0FBd0IsSUFBSSxDQUFDO1FBRXRELGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNs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TSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDMUM7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7O2tIQTNVVSxvQkFBb0I7c0dBQXBCLG9CQUFvQiw2ZkNqQmpDLCt0SEE0RUE7NEZEM0RhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxZQUFZO2lHQUtiLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFnQ1AsY0FBYztzQkFEYixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICcuLi9maWx0ZXIvZmlsdGVyc0NvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3plbi1ncm91cHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFplbmR1R3JvdXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZVtdID0gW107XG4gIEBJbnB1dCgpIGZpbHRlcmVkRGF0YVNvdXJjZTogRGF0YVNvdXJjZVtdID0gW107XG4gIEBJbnB1dCgpIGhpZGVTZWxlY3RBbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgaXNTZWxlY3RlZEFsbCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbmxpbmUgPSBmYWxzZTtcbiAgQElucHV0KCkgd2lkdGggPSAnMzAwcHgnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdTZWxlY3QgZ3JvdXAnO1xuICBASW5wdXQoKSBoaWRlU2VhcmNoID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlkUHJvcDogc3RyaW5nID0gJ2lkJztcbiAgQElucHV0KCkgZGlzcGxheVByb3A6IHN0cmluZyA9ICduYW1lJztcblxuICBAT3V0cHV0KCkgaXNTZWxlY3RlZEFsbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFTb3VyY2U+KCk7XG5cbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuICBwdWJsaWMgb3BlblVwd2FyZCA9IGZhbHNlO1xuICBwdWJsaWMgc2VhcmNoVGV4dCA9ICcnO1xuICBwcml2YXRlIF9zZWFyY2hGaWx0ZXJlZERhdGFTb3VyY2U6IERhdGFTb3VyY2VbXSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX3RyZWVNYXAgPSBuZXcgTWFwPHN0cmluZyB8IG51bWJlciwgRGF0YVNvdXJjZT4oKTtcbiAgcHJpdmF0ZSBfY2hpbGRDb3VudENhY2hlID0gbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIHByaXZhdGUgZ2V0Q2hpbGRyZW4oaXRlbTogYW55KTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBpdGVtLmNoaWxkcmVuIHx8IGl0ZW0uQ2hpbGRyZW4gfHwgaXRlbS5DaGlsZHJlbnM7XG4gIH1cblxuICBwdWJsaWMgaGFzQ2hpbGRyZW4oaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGl0ZW0pO1xuICAgIHJldHVybiAhIWNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRhU291cmNlJ10pIHtcbiAgICAgIHRoaXMuYnVpbGRUcmVlTGV2ZWxzKCk7XG4gICAgfVxuICAgIGlmICgoY2hhbmdlc1snZmlsdGVyZWREYXRhU291cmNlJ10gfHwgY2hhbmdlc1snZGF0YVNvdXJjZSddKSAmJlxuICAgICAgdGhpcy5fdHJlZU1hcC5zaXplID4gMCAmJiB0aGlzLmZpbHRlcmVkRGF0YVNvdXJjZT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YVNvdXJjZSA9IHRoaXMuc29ydFRyZWVPcmRlcih0aGlzLmZpbHRlcmVkRGF0YVNvdXJjZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uT3V0c2lkZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaW5saW5lIHx8ICF0aGlzLmlzT3BlbikgcmV0dXJuO1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMub3BlblVwd2FyZCA9IHRoaXMuc2hvdWxkT3BlblVwd2FyZCgzMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRPcGVuVXB3YXJkKGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiAod2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20pIDwgZHJvcGRvd25IZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXlEYXRhU291cmNlKCk6IERhdGFTb3VyY2VbXSB7XG4gICAgaWYgKHRoaXMuX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWREYXRhU291cmNlO1xuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLl9zZWFyY2hGaWx0ZXJlZERhdGFTb3VyY2UgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvd2VyU2VhcmNoID0gdGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbWF0Y2hpbmdJZHMgPSBuZXcgU2V0PHN0cmluZyB8IG51bWJlcj4oKTtcblxuICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5kYXRhU291cmNlKSB7XG4gICAgICBjb25zdCBuYW1lID0gdHlwZW9mIGVsW3RoaXMuZGlzcGxheVByb3BdID09PSAnbnVtYmVyJyA/IGVsW3RoaXMuZGlzcGxheVByb3BdLnRvU3RyaW5nKCkgOiBlbFt0aGlzLmRpc3BsYXlQcm9wXTtcbiAgICAgIGlmIChuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJTZWFyY2gpKSB7XG4gICAgICAgIG1hdGNoaW5nSWRzLmFkZChlbFt0aGlzLmlkUHJvcF0pO1xuICAgICAgICAvLyBJbmNsdWRlIGFsbCBhbmNlc3RvcnNcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBlbDtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnQucGFyZW50SWQgIT0gbnVsbCkge1xuICAgICAgICAgIG1hdGNoaW5nSWRzLmFkZChjdXJyZW50LnBhcmVudElkKTtcbiAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl90cmVlTWFwLmdldChjdXJyZW50LnBhcmVudElkKTtcbiAgICAgICAgICBpZiAoIXBhcmVudCkgYnJlYWs7XG4gICAgICAgICAgY3VycmVudCA9IHBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBmaWx0ZXJlZCA9IHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIoZWwgPT4gbWF0Y2hpbmdJZHMuaGFzKGVsW3RoaXMuaWRQcm9wXSkpO1xuXG4gICAgLy8gQXV0by1leHBhbmQgcGFyZW50cyB3aGVuIHNlYXJjaGluZ1xuICAgIGZvciAoY29uc3QgZWwgb2YgZmlsdGVyZWQpIHtcbiAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKGVsKSkge1xuICAgICAgICBlbC5pc09wZW4gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZSA9IHRoaXMuc29ydFRyZWVPcmRlcihmaWx0ZXJlZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlPy5maWx0ZXIoZCA9PiBkLmNoZWNrZWQpLmxlbmd0aCB8fCAwO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZExhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY291bnQgPSB0aGlzLnNlbGVjdGVkQ291bnQ7XG4gICAgaWYgKGNvdW50ID09PSAwKSByZXR1cm4gJyc7XG4gICAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5kYXRhU291cmNlLmZpbmQoZCA9PiBkLmNoZWNrZWQpO1xuICAgICAgcmV0dXJuIGl0ZW0gPyBpdGVtW3RoaXMuZGlzcGxheVByb3BdPy50b1N0cmluZygpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiBgJHtjb3VudH0gc2VsZWN0ZWRgO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNBY3RpdmVJdGVtcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlPy5zb21lKGQgPT4gZC5jaGVja2VkKSB8fCBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaChkID0+IChkLmNoZWNrZWQgPSB0aGlzLmlzU2VsZWN0ZWRBbGwpKTtcbiAgICB0aGlzLmlzU2VsZWN0ZWRBbGxDaGFuZ2UuZW1pdCh0aGlzLmlzU2VsZWN0ZWRBbGwpO1xuICB9XG5cbiAgcHVibGljIG9uQ2hlY2tDaGFuZ2VkKGRzSXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIHRoaXMuY2FzY2FkZVRvQ2hpbGRyZW4oZHNJdGVtKTtcbiAgICB0aGlzLnVwZGF0ZVBhcmVudENoZWNrZWRTdGF0ZShkc0l0ZW0pO1xuICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KGRzSXRlbSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVHJlZUxldmVscygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZT8ubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSB0aGlzLmRhdGFTb3VyY2Uuc29tZShkID0+IHRoaXMuaGFzQ2hpbGRyZW4oZCkpO1xuICAgIGlmICghaGFzQ2hpbGRyZW4pIHJldHVybjtcblxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBEYXRhU291cmNlPigpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIG1hcC5zZXQoaXRlbVt0aGlzLmlkUHJvcF0sIGl0ZW0pO1xuICAgIH1cbiAgICB0aGlzLl90cmVlTWFwID0gbWFwO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGl0ZW0pO1xuICAgICAgaWYgKGNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZElkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgY2hpbGQgPSBtYXAuZ2V0KGNoaWxkSWQpO1xuICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5wYXJlbnRJZCA9PSBudWxsKSB7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnRJZCA9IGl0ZW1bdGhpcy5pZFByb3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIGxldCBsZXZlbCA9IDA7XG4gICAgICBsZXQgY3VycmVudCA9IGl0ZW07XG4gICAgICB3aGlsZSAoY3VycmVudC5wYXJlbnRJZCAhPSBudWxsKSB7XG4gICAgICAgIGxldmVsKys7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IG1hcC5nZXQoY3VycmVudC5wYXJlbnRJZCk7XG4gICAgICAgIGlmICghcGFyZW50KSBicmVhaztcbiAgICAgICAgY3VycmVudCA9IHBhcmVudDtcbiAgICAgIH1cbiAgICAgIGl0ZW0ubGV2ZWwgPSBsZXZlbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGlsZENvdW50Q2FjaGUuY2xlYXIoKTtcbiAgICBjb25zdCBjb3VudENoaWxkcmVuID0gKGl0ZW06IERhdGFTb3VyY2UpOiBudW1iZXIgPT4ge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGl0ZW0pO1xuICAgICAgaWYgKCFjaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm4gMDtcbiAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkSWQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBtYXAuZ2V0KGNoaWxkSWQpO1xuICAgICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgICBjb25zdCBjaGlsZExlYXZlcyA9IGNvdW50Q2hpbGRyZW4oY2hpbGQpO1xuICAgICAgICAgIGNvdW50ICs9IGNoaWxkTGVhdmVzID4gMCA/IGNoaWxkTGVhdmVzIDogMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH07XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4oaXRlbSkpIHtcbiAgICAgICAgdGhpcy5fY2hpbGRDb3VudENhY2hlLnNldChpdGVtW3RoaXMuaWRQcm9wXSwgY291bnRDaGlsZHJlbihpdGVtKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNvcnRUcmVlT3JkZXIoaXRlbXM6IERhdGFTb3VyY2VbXSk6IERhdGFTb3VyY2VbXSB7XG4gICAgY29uc3QgaXRlbVNldCA9IG5ldyBTZXQoaXRlbXMubWFwKGkgPT4gaVt0aGlzLmlkUHJvcF0pKTtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmcgfCBudW1iZXI+KCk7XG4gICAgY29uc3Qgb3JkZXJlZDogRGF0YVNvdXJjZVtdID0gW107XG4gICAgY29uc3QgdmlzaXQgPSAoaXRlbTogRGF0YVNvdXJjZSkgPT4ge1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKGl0ZW1bdGhpcy5pZFByb3BdKSkgcmV0dXJuO1xuICAgICAgaWYgKCFpdGVtU2V0LmhhcyhpdGVtW3RoaXMuaWRQcm9wXSkpIHJldHVybjtcbiAgICAgIHZpc2l0ZWQuYWRkKGl0ZW1bdGhpcy5pZFByb3BdKTtcbiAgICAgIG9yZGVyZWQucHVzaChpdGVtKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihpdGVtKTtcbiAgICAgIGlmIChjaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGRJZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5fdHJlZU1hcC5nZXQoY2hpbGRJZCk7XG4gICAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgICB2aXNpdChjaGlsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChpdGVtLnBhcmVudElkID09IG51bGwpIHtcbiAgICAgICAgdmlzaXQoaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaWYgKCF2aXNpdGVkLmhhcyhpdGVtW3RoaXMuaWRQcm9wXSkpIHtcbiAgICAgICAgb3JkZXJlZC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3JkZXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBpc1RyZWVJdGVtVmlzaWJsZShkc0l0ZW06IERhdGFTb3VyY2UpOiBib29sZWFuIHtcbiAgICBpZiAoZHNJdGVtLnBhcmVudElkID09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl90cmVlTWFwLmdldChkc0l0ZW0ucGFyZW50SWQpO1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudC5pc09wZW4gJiYgdGhpcy5pc1RyZWVJdGVtVmlzaWJsZShwYXJlbnQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVRyZWVOb2RlKGRzSXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIGRzSXRlbS5pc09wZW4gPSAhZHNJdGVtLmlzT3BlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGlsZENvdW50KGRzSXRlbTogRGF0YVNvdXJjZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaWxkQ291bnRDYWNoZS5nZXQoZHNJdGVtW3RoaXMuaWRQcm9wXSkgfHwgMDtcbiAgfVxuXG4gIHB1YmxpYyBpc1RyZWVJdGVtSW5kZXRlcm1pbmF0ZShkc0l0ZW06IERhdGFTb3VyY2UpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4oZHNJdGVtKSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGFsbERlc2NlbmRhbnRzID0gdGhpcy5nZXRBbGxEZXNjZW5kYW50cyhkc0l0ZW0pO1xuICAgIGlmICghYWxsRGVzY2VuZGFudHMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgY2hlY2tlZENvdW50ID0gYWxsRGVzY2VuZGFudHMuZmlsdGVyKGQgPT4gZC5jaGVja2VkKS5sZW5ndGg7XG4gICAgcmV0dXJuIGNoZWNrZWRDb3VudCA+IDAgJiYgY2hlY2tlZENvdW50IDwgYWxsRGVzY2VuZGFudHMubGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGxEZXNjZW5kYW50cyhkc0l0ZW06IERhdGFTb3VyY2UpOiBEYXRhU291cmNlW10ge1xuICAgIGNvbnN0IHJlc3VsdDogRGF0YVNvdXJjZVtdID0gW107XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGRzSXRlbSk7XG4gICAgaWYgKCFjaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm4gcmVzdWx0O1xuICAgIGZvciAoY29uc3QgY2hpbGRJZCBvZiBjaGlsZHJlbikge1xuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLl90cmVlTWFwLmdldChjaGlsZElkKTtcbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICByZXN1bHQucHVzaChjaGlsZCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZ2V0QWxsRGVzY2VuZGFudHMoY2hpbGQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUGFyZW50Q2hlY2tlZFN0YXRlKGRzSXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIGlmIChkc0l0ZW0ucGFyZW50SWQgPT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3RyZWVNYXAuZ2V0KGRzSXRlbS5wYXJlbnRJZCk7XG4gICAgaWYgKCFwYXJlbnQgfHwgIXRoaXMuaGFzQ2hpbGRyZW4ocGFyZW50KSkgcmV0dXJuO1xuICAgIGNvbnN0IGFsbERlc2NlbmRhbnRzID0gdGhpcy5nZXRBbGxEZXNjZW5kYW50cyhwYXJlbnQpO1xuICAgIGNvbnN0IGFsbENoZWNrZWQgPSBhbGxEZXNjZW5kYW50cy5ldmVyeShkID0+IGQuY2hlY2tlZCk7XG4gICAgcGFyZW50LmNoZWNrZWQgPSBhbGxDaGVja2VkO1xuICAgIHRoaXMudXBkYXRlUGFyZW50Q2hlY2tlZFN0YXRlKHBhcmVudCk7XG4gIH1cblxuICBwcml2YXRlIGNhc2NhZGVUb0NoaWxkcmVuKGl0ZW06IERhdGFTb3VyY2UpOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oaXRlbSk7XG4gICAgaWYgKCFjaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm47XG4gICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBpZiAoaXRlbVt0aGlzLmlkUHJvcF0gPT0gZGF0YVt0aGlzLmlkUHJvcF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkcmVuLmluY2x1ZGVzKDxzdHJpbmc+ZGF0YVt0aGlzLmlkUHJvcF0pKSB7XG4gICAgICAgIGRhdGEuY2hlY2tlZCA9IGl0ZW0uY2hlY2tlZDtcbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4oZGF0YSkpIHtcbiAgICAgICAgICB0aGlzLmNhc2NhZGVUb0NoaWxkcmVuKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJlZUNvbm5lY3RvcnMoZHNJdGVtOiBEYXRhU291cmNlKTogc3RyaW5nW10ge1xuICAgIGlmICghZHNJdGVtLmxldmVsKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBpc0xhc3RGbGFnczogYm9vbGVhbltdID0gW107XG4gICAgbGV0IGN1cnJlbnQ6IERhdGFTb3VyY2UgfCB1bmRlZmluZWQgPSBkc0l0ZW07XG5cbiAgICBmb3IgKGxldCBsID0gZHNJdGVtLmxldmVsOyBsID49IDE7IGwtLSkge1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fdHJlZU1hcC5nZXQoY3VycmVudCEucGFyZW50SWQhKTtcbiAgICAgIGNvbnN0IHBhcmVudENoaWxkcmVuID0gcGFyZW50ID8gdGhpcy5nZXRDaGlsZHJlbihwYXJlbnQpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCFwYXJlbnRDaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGlzTGFzdEZsYWdzLnB1c2godHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBsYXN0Q2hpbGRJZCA9IHBhcmVudENoaWxkcmVuW3BhcmVudENoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgICBpc0xhc3RGbGFncy5wdXNoKGN1cnJlbnQhW3RoaXMuaWRQcm9wXSA9PT0gbGFzdENoaWxkSWQpO1xuICAgICAgfVxuICAgICAgY3VycmVudCA9IHBhcmVudDtcbiAgICB9XG5cbiAgICBpc0xhc3RGbGFncy5yZXZlcnNlKCk7XG5cbiAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpc0xhc3RGbGFncy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXNJdGVtTGV2ZWwgPSAoaSA9PT0gaXNMYXN0RmxhZ3MubGVuZ3RoIC0gMSk7XG4gICAgICBjb25zdCBpc0xhc3QgPSBpc0xhc3RGbGFnc1tpXTtcblxuICAgICAgaWYgKGlzSXRlbUxldmVsKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGlzTGFzdCA/ICdlbGJvdycgOiAnYnJhbmNoJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQucHVzaChpc0xhc3QgPyAnbm9uZScgOiAndGhyb3VnaCcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldFRyZWVNYXAoKTogTWFwPHN0cmluZyB8IG51bWJlciwgRGF0YVNvdXJjZT4ge1xuICAgIHJldHVybiB0aGlzLl90cmVlTWFwO1xuICB9XG59XG4iLCI8IS0tIERyb3Bkb3duIG1vZGUgKGRlZmF1bHQpIC0tPlxuPGRpdiBjbGFzcz1cInplbi1ncm91cHMtZHJvcGRvd25cIiAqbmdJZj1cIiFpbmxpbmVcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiemVuLWdyb3Vwcy10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc09wZW59XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiemVuLWdyb3Vwcy10b2dnbGUtbGFiZWxcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNlbGVjdGVkTGFiZWxcIiBjbGFzcz1cInplbi1ncm91cHMtcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRMYWJlbFwiIGNsYXNzPVwiemVuLWdyb3Vwcy12YWx1ZVwiPnt7IHNlbGVjdGVkTGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyB6ZW4tZ3JvdXBzLWNoZXZyb25cIj5leHBhbmRfbW9yZTwvaT5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJ6ZW4tZ3JvdXBzLXBhbmVsXCIgKm5nSWY9XCJpc09wZW5cIiBbY2xhc3Mub3Blbi11cHdhcmRdPVwib3BlblVwd2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy1zZWFyY2hcIiAqbmdJZj1cIiFoaWRlU2VhcmNoXCI+XG4gICAgICAgICAgICA8emVuLXNlYXJjaC1ib3ggWyh0ZXh0KV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGV4dENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCI+PC96ZW4tc2VhcmNoLWJveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gSW5saW5lIG1vZGUgKHVzZWQgaW5zaWRlIHplbi1maWx0ZXIpIC0tPlxuPGRpdiBjbGFzcz1cInplbi1ncm91cHMtaW5saW5lXCIgKm5nSWY9XCJpbmxpbmVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy1zZWFyY2hcIiAqbmdJZj1cIiFoaWRlU2VhcmNoXCI+XG4gICAgICAgIDx6ZW4tc2VhcmNoLWJveCBbKHRleHQpXT1cInNlYXJjaFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHRleHRDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoKVwiPjwvemVuLXNlYXJjaC1ib3g+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPCEtLSBTaGFyZWQgdHJlZSBjb250ZW50IC0tPlxuPG5nLXRlbXBsYXRlICN0cmVlQ29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy10cmVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbS1jaGVja2JveCBzZWxlY3QtYWxsXCIgKm5nSWY9XCIhaGlkZVNlbGVjdEFsbFwiPlxuICAgICAgICAgICAgPHplbi1jaGVja2JveCAqbmdJZj1cImRhdGFTb3VyY2UubGVuZ3RoID09PSBkaXNwbGF5RGF0YVNvdXJjZS5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKGNoZWNrZWQpXT1cImlzU2VsZWN0ZWRBbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJoYXNBY3RpdmVJdGVtcyAmJiAhaXNTZWxlY3RlZEFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU2VsZWN0IEFsbCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJvblNlbGVjdEFsbCgpXCI+XG4gICAgICAgICAgICA8L3plbi1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZHNJdGVtIG9mIGRpc3BsYXlEYXRhU291cmNlXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNUcmVlSXRlbVZpc2libGUoZHNJdGVtKVwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWl0ZW0tY2hlY2tib3ggdHJlZS1pdGVtXCJcbiAgICAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCIyNCArIChkc0l0ZW0ubGV2ZWwgfHwgMCkgKiAyNFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkc0l0ZW0ubGV2ZWwgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbm5lY3RvciBvZiBnZXRUcmVlQ29ubmVjdG9ycyhkc0l0ZW0pOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtY29ubmVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIndHJlZS1jb25uZWN0b3ItJyArIGNvbm5lY3RvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiMzIgKyBpICogMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyZWUtaXRlbS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHplbi1jaGVja2JveCBbKGNoZWNrZWQpXT1cImRzSXRlbS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpc1RyZWVJdGVtSW5kZXRlcm1pbmF0ZShkc0l0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW1hZ2VVcmxdPVwiZHNJdGVtLmltYWdlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJvbkNoZWNrQ2hhbmdlZChkc0l0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZHNJdGVtW2Rpc3BsYXlQcm9wXT8udG9TdHJpbmcoKSB8IHRyYW5zbGF0ZVwiPjwvemVuLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhhc0NoaWxkcmVuKGRzSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtaXRlbS1iYWRnZVwiPnt7IGdldENoaWxkQ291bnQoZHNJdGVtKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaGFzQ2hpbGRyZW4oZHNJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtaXRlbS10b2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRyZWVOb2RlKGRzSXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyB0cmVlLXRvZ2dsZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm9wZW5dPVwiZHNJdGVtLmlzT3BlblwiPmV4cGFuZF9tb3JlPC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ6ZW4tZ3JvdXBzLW5vLXJlc3VsdHNcIiAqbmdJZj1cInNlYXJjaFRleHQgJiYgZGlzcGxheURhdGFTb3VyY2UubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICB7eyAnTm8gUmVzdWx0cyBGb3VuZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -60,7 +60,7 @@ export class ZenduPaginationBarComponent {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
ZenduPaginationBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduPaginationBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
-
ZenduPaginationBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduPaginationBarComponent, selector: "zen-pagination-bar", inputs: { page: "page", perPage: "perPage", count: "count" }, outputs: { pageChange: "pageChange", perPageChange: "perPageChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pagination-component\">\n <div class=\"select-dropdown\">\n <label>{{\"Rows per page\" | translate}}:</label>\n <zen-select [(selectModel)]=\"perPage\"\n [options]=\"availablePagesSize\"\n [displayProp]=\"'text'\"\n [idProp]=\"'id'\"\n (selectModelChange)=\"updatePageSize()\"></zen-select>\n </div>\n <div class=\"pages\">\n <button class=\"pagination-button\"\n [disabled]=\"page - 1 <= 0\"\n (click)=\"prevPage()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </button>\n <label>{{((page - 1) * perPage) + 1 }} - {{endRowSize()}} of {{count}}</label>\n <button class=\"pagination-button\"\n [disabled]=\"page + 1 > totalPages\"\n (click)=\"nextPage()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </button>\n </div>\n</div>\n", styles: [".pagination-component{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.pagination-component .select-dropdown{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .select-dropdown label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:120%;color:#4f4f4f}.pagination-component .pages{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .pages label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:16px;color:#828282}.pagination-component .pages .pagination-button{display:flex;flex-direction:row;align-items:center;height:16px;padding:0;box-sizing:border-box;white-space:nowrap;border:none;border-radius:50%;transition:.1s;cursor:pointer;color:#828282;background:#FFFFFF}.pagination-component .pages .pagination-button:hover{color:#4f4f4f;background:#F2F2F2}.pagination-component .pages .pagination-button:focus{outline:none;color:#2188d9;background:#F4F9FD}.pagination-component .pages .pagination-button:disabled{color:#e0e0e0;background:#FFFFFF;cursor:not-allowed}.pagination-component .pages .pagination-button .material-icons{font-size:16px;height:16px;width:16px}\n"], dependencies: [{ kind: "component", type: i1.ZenduSelectComponent, selector: "zen-select", inputs: ["selectModel", "options", "label", "supportingText", "hintText", "placeholder", "leadingType", "leadingIcon", "leadingAvatar", "leadingDotColor", "displayProp", "idProp", "hasSearch", "isMultiselect", "multiselect", "hideSelectAll", "hideTreeSearch", "disabled", "error", "errorMessage", "destructive", "size", "returnOption", "isTruncate", "enableAddNewOption", "showDefaultAddOption", "newOptionText", "enableRemoveOption", "removeOptionText", "isLazyLoading", "lazyLoader", "preferredOpenDirection"], outputs: ["selectModelChange", "addNewOption", "removeOption", "closed"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
63
|
+
ZenduPaginationBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduPaginationBarComponent, selector: "zen-pagination-bar", inputs: { page: "page", perPage: "perPage", count: "count" }, outputs: { pageChange: "pageChange", perPageChange: "perPageChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pagination-component\">\n <div class=\"select-dropdown\">\n <label>{{\"Rows per page\" | translate}}:</label>\n <zen-select [(selectModel)]=\"perPage\"\n [options]=\"availablePagesSize\"\n [displayProp]=\"'text'\"\n [idProp]=\"'id'\"\n (selectModelChange)=\"updatePageSize()\"></zen-select>\n </div>\n <div class=\"pages\">\n <button class=\"pagination-button\"\n [disabled]=\"page - 1 <= 0\"\n (click)=\"prevPage()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </button>\n <label>{{((page - 1) * perPage) + 1 }} - {{endRowSize()}} of {{count}}</label>\n <button class=\"pagination-button\"\n [disabled]=\"page + 1 > totalPages\"\n (click)=\"nextPage()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </button>\n </div>\n</div>\n", styles: [".pagination-component{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.pagination-component .select-dropdown{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .select-dropdown label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:120%;color:#4f4f4f}.pagination-component .pages{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .pages label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:16px;color:#828282}.pagination-component .pages .pagination-button{display:flex;flex-direction:row;align-items:center;height:16px;padding:0;box-sizing:border-box;white-space:nowrap;border:none;border-radius:50%;transition:.1s;cursor:pointer;color:#828282;background:#FFFFFF}.pagination-component .pages .pagination-button:hover{color:#4f4f4f;background:#F2F2F2}.pagination-component .pages .pagination-button:focus{outline:none;color:#2188d9;background:#F4F9FD}.pagination-component .pages .pagination-button:disabled{color:#e0e0e0;background:#FFFFFF;cursor:not-allowed}.pagination-component .pages .pagination-button .material-icons{font-size:16px;height:16px;width:16px}\n"], dependencies: [{ kind: "component", type: i1.ZenduSelectComponent, selector: "zen-select", inputs: ["selectModel", "options", "label", "supportingText", "hintText", "placeholder", "leadingType", "leadingIcon", "leadingAvatar", "leadingDotColor", "displayProp", "idProp", "hasSearch", "isMultiselect", "multiselect", "hideSelectAll", "hideTreeSearch", "required", "disabled", "error", "errorMessage", "destructive", "size", "returnOption", "isTruncate", "enableAddNewOption", "showDefaultAddOption", "newOptionText", "enableRemoveOption", "removeOptionText", "isLazyLoading", "lazyLoader", "preferredOpenDirection"], outputs: ["selectModelChange", "addNewOption", "removeOption", "closed"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
64
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduPaginationBarComponent, decorators: [{
|
|
65
65
|
type: Component,
|
|
66
66
|
args: [{ selector: 'zen-pagination-bar', template: "<div class=\"pagination-component\">\n <div class=\"select-dropdown\">\n <label>{{\"Rows per page\" | translate}}:</label>\n <zen-select [(selectModel)]=\"perPage\"\n [options]=\"availablePagesSize\"\n [displayProp]=\"'text'\"\n [idProp]=\"'id'\"\n (selectModelChange)=\"updatePageSize()\"></zen-select>\n </div>\n <div class=\"pages\">\n <button class=\"pagination-button\"\n [disabled]=\"page - 1 <= 0\"\n (click)=\"prevPage()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </button>\n <label>{{((page - 1) * perPage) + 1 }} - {{endRowSize()}} of {{count}}</label>\n <button class=\"pagination-button\"\n [disabled]=\"page + 1 > totalPages\"\n (click)=\"nextPage()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </button>\n </div>\n</div>\n", styles: [".pagination-component{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.pagination-component .select-dropdown{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .select-dropdown label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:120%;color:#4f4f4f}.pagination-component .pages{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .pages label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:16px;color:#828282}.pagination-component .pages .pagination-button{display:flex;flex-direction:row;align-items:center;height:16px;padding:0;box-sizing:border-box;white-space:nowrap;border:none;border-radius:50%;transition:.1s;cursor:pointer;color:#828282;background:#FFFFFF}.pagination-component .pages .pagination-button:hover{color:#4f4f4f;background:#F2F2F2}.pagination-component .pages .pagination-button:focus{outline:none;color:#2188d9;background:#F4F9FD}.pagination-component .pages .pagination-button:disabled{color:#e0e0e0;background:#FFFFFF;cursor:not-allowed}.pagination-component .pages .pagination-button .material-icons{font-size:16px;height:16px;width:16px}\n"] }]
|