myrta-ui 17.1.73 → 17.1.75

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.
@@ -36,44 +36,68 @@ export class PaginatorComponent {
36
36
  .fill(1)
37
37
  .map((item, index) => ({ index: index + 1, active: index + 1 === this.currentPage }));
38
38
  }
39
+ // TO DO: пока оставлю для тестов
40
+ // public get getViewItems(): PaginatorItem[] {
41
+ // return this.getNumbers.filter((item, index) => {
42
+ // if (this.currentPage === 1 && this.currentPage < this.getItems) {
43
+ // return item.index === this.currentPage ||
44
+ // item.index === this.currentPage + 1 ||
45
+ // item.index === this.currentPage + 2 ||
46
+ // item.index === this.currentPage + 3 ||
47
+ // item.index === this.currentPage + 4;
48
+ // } else if (this.currentPage == 2 && this.currentPage < this.getItems) {
49
+ // return item.index === this.currentPage - 1 ||
50
+ // item.index === this.currentPage ||
51
+ // item.index === this.currentPage + 1 ||
52
+ // item.index === this.currentPage + 2 ||
53
+ // item.index === this.currentPage + 3;
54
+ // } else if (this.currentPage == this.getItems - 1 && this.currentPage < this.getItems) {
55
+ // return item.index === this.currentPage - 3 ||
56
+ // item.index === this.currentPage - 2 ||
57
+ // item.index === this.currentPage - 1 ||
58
+ // item.index === this.currentPage ||
59
+ // item.index === this.currentPage + 1;
60
+ // } else if (this.currentPage > 1 && this.currentPage < this.getItems) {
61
+ // return item.index === this.currentPage - 2 ||
62
+ // item.index === this.currentPage - 1 ||
63
+ // item.index === this.currentPage ||
64
+ // item.index === this.currentPage + 1 ||
65
+ // item.index === this.currentPage + 2;
66
+ // } else {
67
+ // return item.index === this.currentPage - 4 ||
68
+ // item.index === this.currentPage - 3 ||
69
+ // item.index === this.currentPage - 2 ||
70
+ // item.index === this.currentPage - 1 ||
71
+ // item.index === this.currentPage;
72
+ // }
73
+ // });
74
+ // }
75
+ // Упрощенная версия getViewItems()
39
76
  get getViewItems() {
40
- return this.getNumbers.filter((item, index) => {
41
- if (this.currentPage === 1 && this.currentPage < this.getItems) {
42
- return item.index === this.currentPage ||
43
- item.index === this.currentPage + 1 ||
44
- item.index === this.currentPage + 2 ||
45
- item.index === this.currentPage + 3 ||
46
- item.index === this.currentPage + 4;
47
- }
48
- else if (this.currentPage == 2 && this.currentPage < this.getItems) {
49
- return item.index === this.currentPage - 1 ||
50
- item.index === this.currentPage ||
51
- item.index === this.currentPage + 1 ||
52
- item.index === this.currentPage + 2 ||
53
- item.index === this.currentPage + 3;
54
- }
55
- else if (this.currentPage == this.getItems - 1 && this.currentPage < this.getItems) {
56
- return item.index === this.currentPage - 3 ||
57
- item.index === this.currentPage - 2 ||
58
- item.index === this.currentPage - 1 ||
59
- item.index === this.currentPage ||
60
- item.index === this.currentPage + 1;
61
- }
62
- else if (this.currentPage > 1 && this.currentPage < this.getItems) {
63
- return item.index === this.currentPage - 2 ||
64
- item.index === this.currentPage - 1 ||
65
- item.index === this.currentPage ||
66
- item.index === this.currentPage + 1 ||
67
- item.index === this.currentPage + 2;
68
- }
69
- else {
70
- return item.index === this.currentPage - 4 ||
71
- item.index === this.currentPage - 3 ||
72
- item.index === this.currentPage - 2 ||
73
- item.index === this.currentPage - 1 ||
74
- item.index === this.currentPage;
75
- }
76
- });
77
+ const totalPages = this.getItems;
78
+ const current = this.currentPage;
79
+ const delta = 2; // количество страниц по бокам от текущей
80
+ const range = [];
81
+ for (let i = Math.max(2, current - delta); i <= Math.min(totalPages - 1, current + delta); i++) {
82
+ range.push(i);
83
+ }
84
+ // Добавляем первую страницу
85
+ if (current - delta > 1) {
86
+ range.unshift('...');
87
+ }
88
+ range.unshift(1);
89
+ // Добавляем последнюю страницу
90
+ if (current + delta < totalPages - 1) {
91
+ range.push('...');
92
+ }
93
+ if (totalPages > 1) {
94
+ range.push(totalPages);
95
+ }
96
+ return range.map((item, index) => ({
97
+ index: typeof item === 'number' ? item : index,
98
+ active: item === current,
99
+ isEllipsis: item === '...'
100
+ }));
77
101
  }
78
102
  get getFirstNumberCurrentPage() {
79
103
  if (this.total === 0) {
@@ -100,6 +124,7 @@ export class PaginatorComponent {
100
124
  });
101
125
  }
102
126
  onChangePageSize(value) {
127
+ console.log(value);
103
128
  this.currentPage = 1;
104
129
  this.dataStateChanged.emit({
105
130
  currentPage: this.currentPage,
@@ -144,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
144
169
  }], dataStateChanged: [{
145
170
  type: Output
146
171
  }] } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUdjLG9CQUFvQixHQUN4QyxNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7Ozs7QUFPbEQsTUFBTSxPQUFPLGtCQUFrQjtJQUN0QixRQUFRLEdBQWtDLFVBQVUsQ0FBQztJQUNyRCxZQUFZLEdBQXdCLElBQUksQ0FBQztJQUV2QyxTQUFTLEdBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEIsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDVixhQUFhLEdBQUcsRUFBRSxDQUFDO0lBRW5CLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNsQyxlQUFlLEdBQVksS0FBSyxDQUFDO0lBQ2pDLGFBQWEsR0FBVyxRQUFRLENBQUM7SUFDakMsZ0JBQWdCLEdBQXNCLE1BQU0sQ0FBQyxDQUFDLGFBQWE7SUFDM0QsYUFBYSxHQUFpQixZQUFZLENBQUMsU0FBUyxDQUFDO0lBRTlELElBQ1csV0FBVyxDQUFDLEtBQW9DO1FBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxJQUFJLFVBQVUs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RyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdLLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsVUFBVTtnQkFNTixlQUFlO3NCQUR6QixLQUFLO3VCQUFDLGNBQWM7Z0JBS1gsZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBQYWdpbmF0ZU91dHB1dE9iamVjdCxcclxuICBQYWdpbmF0b3JJdGVtLFxyXG4gIFBhZ2luYXRvclBvc2l0aW9uLCBQYWdpbmF0b3JQb3NpdGlvbkNzcyxcclxufSBmcm9tICcuL3BhZ2luYXRvci5lbnVtJztcclxuaW1wb3J0IHsgRHJvcGRvd25Qb3NpdGlvbiB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgUG9zaXRpb25FbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMvb3ZlcmxheSdcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LXBhZ2luYXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdG9yLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRvckNvbXBvbmVudCB7XHJcbiAgcHVibGljIHBvc2l0aW9uOiBQYWdpbmF0b3JQb3NpdGlvbiB8IHVuZGVmaW5lZCA9ICdjZW50ZXJlZCc7XHJcbiAgcHVibGljIHdpdGhQYWdlU2l6ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHBhZ2VTaXplczogbnVtYmVyW10gPSBbMjAsIDUwLCAxMDBdO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlID0gMTtcclxuICBASW5wdXQoKSBwYWdlU2l6ZSA9IDIwO1xyXG4gIEBJbnB1dCgpIHRvdGFsID0gMDtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzc2VzID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIGlzRW1wdHlQYWdpbmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc1BhZ2luYXRvclRleHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwYWdpbmF0b3JUZXh0OiBzdHJpbmcgPSAn0LfQsNC/0LjRgdC4JztcclxuICBASW5wdXQoKSBkcm9wZG93blBvc2l0aW9uOiBEcm9wZG93blBvc2l0aW9uICA9ICdhdXRvJzsgLy8gZGVwcmVjYXRlZFxyXG4gIEBJbnB1dCgpIHBvcHVwUG9zaXRpb246IFBvc2l0aW9uRW51bSA9IFBvc2l0aW9uRW51bS5Cb3R0b21FbmQ7XHJcblxyXG4gIEBJbnB1dCgncG9zaXRpb24nKVxyXG4gIHB1YmxpYyBzZXQgc2V0UG9zaXRpb24odmFsdWU6IFBhZ2luYXRvclBvc2l0aW9uIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gdmFsdWUgfHwgJ2NlbnRlcmVkJztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnd2l0aFBhZ2VTaXplJylcclxuICBwdWJsaWMgc2V0IHNldFdpdGhQYWdlU2l6ZSh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy53aXRoUGFnZVNpemUgPSB2YWx1ZSB8fCBmYWxzZTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBkYXRhU3RhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8UGFnaW5hdGVPdXRwdXRPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmF0ZU91dHB1dE9iamVjdD4oKTtcclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5wb3NpdGlvbiAmJiBQYWdpbmF0b3JQb3NpdGlvbkNzc1t0aGlzLnBvc2l0aW9uXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0SXRlbXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbCAvIHRoaXMucGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXROdW1iZXJzKCk6IFBhZ2luYXRvckl0ZW1bXSB7XHJcbiAgICByZXR1cm4gQXJyYXkodGhpcy5nZXRJdGVtcylcclxuICAgICAgLmZpbGwoMSlcclxuICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7IGluZGV4OiBpbmRleCArIDEsIGFjdGl2ZTogaW5kZXggKyAxID09PSB0aGlzLmN1cnJlbnRQYWdlIH0pKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Vmlld0l0ZW1zKCk6IFBhZ2luYXRvckl0ZW1bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXROdW1iZXJzLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPT09IDEgJiYgdGhpcy5jdXJyZW50UGFnZSA8IHRoaXMuZ2V0SXRlbXMpIHtcclxuICAgICAgICByZXR1cm4gaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSB8fFxyXG4gICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDEgfHxcclxuICAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgKyAyIHx8XHJcbiAgICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgMyB8fFxyXG4gICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDQ7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFnZSA9PSAyICYmIHRoaXMuY3VycmVudFBhZ2UgPCB0aGlzLmdldEl0ZW1zKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSAxIHx8XHJcbiAgICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIHx8XHJcbiAgICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgMSB8fFxyXG4gICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDIgfHxcclxuICAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgKyAzO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFBhZ2UgPT0gdGhpcy5nZXRJdGVtcyAtIDEgJiYgdGhpcy5jdXJyZW50UGFnZSA8IHRoaXMuZ2V0SXRlbXMpIHtcclxuICAgICAgICByZXR1cm4gaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDMgfHxcclxuICAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSAyIHx8XHJcbiAgICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIC0gMSB8fFxyXG4gICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSB8fFxyXG4gICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDE7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFnZSA+IDEgJiYgdGhpcy5jdXJyZW50UGFnZSA8IHRoaXMuZ2V0SXRlbXMpIHtcclxuICAgICAgICByZXR1cm4gaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDIgfHxcclxuICAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSAxIHx8XHJcbiAgICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIHx8XHJcbiAgICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgMSB8fFxyXG4gICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSA0IHx8XHJcbiAgICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIC0gMyB8fFxyXG4gICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDIgfHxcclxuICAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSAxIHx8XHJcbiAgICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Rmlyc3ROdW1iZXJDdXJyZW50UGFnZSgpOiBudW1iZXIge1xyXG4gICAgaWYodGhpcy50b3RhbCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICAgIGlmKHRoaXMudG90YWwgPCB0aGlzLnBhZ2VTaXplICogdGhpcy5jdXJyZW50UGFnZSAtIHRoaXMucGFnZVNpemUgKyAxKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAodGhpcy5wYWdlU2l6ZSAqIHRoaXMuY3VycmVudFBhZ2UgLSB0aGlzLnBhZ2VTaXplKSArIDE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldExhc3ROdW1iZXJDdXJyZW50UGFnZSgpOiBudW1iZXIge1xyXG4gICAgaWYodGhpcy50b3RhbCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICAgIGlmKHRoaXMudG90YWwgPCB0aGlzLnBhZ2VTaXplICogdGhpcy5jdXJyZW50UGFnZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy50b3RhbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnBhZ2VTaXplICogdGhpcy5jdXJyZW50UGFnZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZUN1cnJlbnRQYWdlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YVN0YXRlQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgY3VycmVudFBhZ2U6IHZhbHVlLFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2VQYWdlU2l6ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHJcbiAgICB0aGlzLmRhdGFTdGF0ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxyXG4gICAgICBwYWdlU2l6ZTogdmFsdWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LXBhZ2luYXRvclwiIFtjbGFzc109XCJnZXRDbGFzc2VzXCIgKm5nSWY9XCJpc0VtcHR5UGFnaW5hdG9yIHx8IHRvdGFsXCI+XHJcbiAgPHVsIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9fbGlzdFwiPlxyXG4gICAgPGxpXHJcbiAgICAgIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9fcHJldmlvdXNcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPD0gMVwiXHJcbiAgICAgIChjbGljayk9XCJjdXJyZW50UGFnZSA+IDEgJiYgb25DaGFuZ2VDdXJyZW50UGFnZShjdXJyZW50UGFnZSAtIDEpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tbGVmdCBpY29uLWZvbnQtMjRcIj48L2Rpdj5cclxuICAgIDwvbGk+XHJcblxyXG4gICAgPGxpICpuZ0lmPVwiZ2V0Vmlld0l0ZW1zLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9faXRlbSBhY3RpdmVcIj4xPC9saT5cclxuXHJcbiAgICA8bGkgY2xhc3M9XCJtcngtcGFnaW5hdG9yX19pdGVtXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA+IDMgJiYgZ2V0SXRlbXMgPiA1XCIgKGNsaWNrKT1cIm9uQ2hhbmdlQ3VycmVudFBhZ2UoMSlcIj4xPC9saT5cclxuICAgIDxsaSBjbGFzcz1cIm1yeC1wYWdpbmF0b3JfX2l0ZW0gZG90c1wiICpuZ0lmPVwiY3VycmVudFBhZ2UgPiAzICYmIGdldEl0ZW1zID4gNVwiPi4uLjwvbGk+XHJcblxyXG4gICAgPGxpXHJcbiAgICAgIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9faXRlbVwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldFZpZXdJdGVtczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQ2hhbmdlQ3VycmVudFBhZ2UoaXRlbS5pbmRleClcIlxyXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRQYWdlID09PSBpdGVtLmluZGV4XCJcclxuICAgID5cclxuICAgICAge3tpdGVtLmluZGV4fX1cclxuICAgIDwvbGk+XHJcblxyXG4gICAgPGxpIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9faXRlbSBkb3RzXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA8IGdldEl0ZW1zIC0gMiAmJiBnZXRJdGVtcyA+IDVcIj4uLi48L2xpPlxyXG4gICAgPGxpIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9faXRlbVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPCBnZXRJdGVtcyAtIDIgJiYgZ2V0SXRlbXMgPiA1XCJcclxuICAgICAgICAoY2xpY2spPVwib25DaGFuZ2VDdXJyZW50UGFnZShnZXRJdGVtcylcIj57e2dldEl0ZW1zfX08L2xpPlxyXG5cclxuICAgIDxsaVxyXG4gICAgICBjbGFzcz1cIm1yeC1wYWdpbmF0b3JfX25leHRcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPj0gZ2V0SXRlbXNcIlxyXG4gICAgICAoY2xpY2spPVwiY3VycmVudFBhZ2UgPCBnZXRJdGVtcyAmJiBvbkNoYW5nZUN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlICsgMSlcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1yaWdodCBpY29uLWZvbnQtMjRcIj48L2Rpdj5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuXHJcbiAgQGlmICh3aXRoUGFnZVNpemUpIHtcclxuICAgIDxtcngtc2VsZWN0XHJcbiAgICAgIFtuZ01vZGVsXT1cInBhZ2VTaXplXCJcclxuICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICBbaXRlbXNdPVwicGFnZVNpemVzXCJcclxuICAgICAgW2NsZWFyYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgIFtzZWFyY2hhYmxlXT1cImZhbHNlXCJcclxuICAgICAgW3BvcHVwUG9zaXRpb25dPVwicG9wdXBQb3NpdGlvblwiXHJcbiAgICAgIFtzaW5nbGVDaGFuZ2VdPVwidHJ1ZVwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlUGFnZVNpemUoJGV2ZW50KVwiXHJcbiAgICA+PC9tcngtc2VsZWN0PlxyXG4gIH1cclxuXHJcbiAgPGRpdiAqbmdJZj1cImlzUGFnaW5hdG9yVGV4dFwiIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9fdGV4dFwiPlxyXG4gICAg0J7RgtC+0LHRgNCw0LbQtdC90Ysge3twYWdpbmF0b3JUZXh0fX0ge3tnZXRGaXJzdE51bWJlckN1cnJlbnRQYWdlfX0gLSB7e2dldExhc3ROdW1iZXJDdXJyZW50UGFnZX19INC40Lcge3t0b3RhbH19XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUdjLG9CQUFvQixHQUN4QyxNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7Ozs7QUFPbEQsTUFBTSxPQUFPLGtCQUFrQjtJQUN0QixRQUFRLEdBQWtDLFVBQVUsQ0FBQztJQUNyRCxZQUFZLEdBQXdCLElBQUksQ0FBQztJQUV2QyxTQUFTLEdBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEIsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDVixhQUFhLEdBQUcsRUFBRSxDQUFDO0lBRW5CLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNsQyxlQUFlLEdBQVksS0FBSyxDQUFDO0lBQ2pDLGFBQWEsR0FBVyxRQUFRLENBQUM7SUFDakMsZ0JBQWdCLEdBQXNCLE1BQU0sQ0FBQyxDQUFDLGFBQWE7SUFDM0QsYUFBYSxHQUFpQixZQUFZLENBQUMsU0FBUyxDQUFDO0lBRTlELElBQ1csV0FBVyxDQUFDLEtBQW9DO1FBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxJQUFJLFVBQVUs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QWE7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN6QixXQUFXLEVBQUUsS0FBSztZQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEtBQWE7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUVyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDO3dHQXZKVSxrQkFBa0I7NEZBQWxCLGtCQUFrQiw4ZkNkL0IsK29FQXNEQTs7NEZEeENhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlOzhCQVFoQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdLLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsVUFBVTtnQkFNTixlQUFlO3NCQUR6QixLQUFLO3VCQUFDLGNBQWM7Z0JBS1gsZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBQYWdpbmF0ZU91dHB1dE9iamVjdCxcclxuICBQYWdpbmF0b3JJdGVtLFxyXG4gIFBhZ2luYXRvclBvc2l0aW9uLCBQYWdpbmF0b3JQb3NpdGlvbkNzcyxcclxufSBmcm9tICcuL3BhZ2luYXRvci5lbnVtJztcclxuaW1wb3J0IHsgRHJvcGRvd25Qb3NpdGlvbiB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgUG9zaXRpb25FbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMvb3ZlcmxheSdcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LXBhZ2luYXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdG9yLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRvckNvbXBvbmVudCB7XHJcbiAgcHVibGljIHBvc2l0aW9uOiBQYWdpbmF0b3JQb3NpdGlvbiB8IHVuZGVmaW5lZCA9ICdjZW50ZXJlZCc7XHJcbiAgcHVibGljIHdpdGhQYWdlU2l6ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHBhZ2VTaXplczogbnVtYmVyW10gPSBbMjAsIDUwLCAxMDBdO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlID0gMTtcclxuICBASW5wdXQoKSBwYWdlU2l6ZSA9IDIwO1xyXG4gIEBJbnB1dCgpIHRvdGFsID0gMDtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzc2VzID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIGlzRW1wdHlQYWdpbmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc1BhZ2luYXRvclRleHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwYWdpbmF0b3JUZXh0OiBzdHJpbmcgPSAn0LfQsNC/0LjRgdC4JztcclxuICBASW5wdXQoKSBkcm9wZG93blBvc2l0aW9uOiBEcm9wZG93blBvc2l0aW9uICA9ICdhdXRvJzsgLy8gZGVwcmVjYXRlZFxyXG4gIEBJbnB1dCgpIHBvcHVwUG9zaXRpb246IFBvc2l0aW9uRW51bSA9IFBvc2l0aW9uRW51bS5Cb3R0b21FbmQ7XHJcblxyXG4gIEBJbnB1dCgncG9zaXRpb24nKVxyXG4gIHB1YmxpYyBzZXQgc2V0UG9zaXRpb24odmFsdWU6IFBhZ2luYXRvclBvc2l0aW9uIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gdmFsdWUgfHwgJ2NlbnRlcmVkJztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnd2l0aFBhZ2VTaXplJylcclxuICBwdWJsaWMgc2V0IHNldFdpdGhQYWdlU2l6ZSh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy53aXRoUGFnZVNpemUgPSB2YWx1ZSB8fCBmYWxzZTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBkYXRhU3RhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8UGFnaW5hdGVPdXRwdXRPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmF0ZU91dHB1dE9iamVjdD4oKTtcclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5wb3NpdGlvbiAmJiBQYWdpbmF0b3JQb3NpdGlvbkNzc1t0aGlzLnBvc2l0aW9uXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0SXRlbXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbCAvIHRoaXMucGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXROdW1iZXJzKCk6IFBhZ2luYXRvckl0ZW1bXSB7XHJcbiAgICByZXR1cm4gQXJyYXkodGhpcy5nZXRJdGVtcylcclxuICAgICAgLmZpbGwoMSlcclxuICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7IGluZGV4OiBpbmRleCArIDEsIGFjdGl2ZTogaW5kZXggKyAxID09PSB0aGlzLmN1cnJlbnRQYWdlIH0pKTtcclxuICB9XHJcblxyXG4gIC8vIFRPIERPOiDQv9C+0LrQsCDQvtGB0YLQsNCy0LvRjiDQtNC70Y8g0YLQtdGB0YLQvtCyXHJcbiAgLy8gcHVibGljIGdldCBnZXRWaWV3SXRlbXMoKTogUGFnaW5hdG9ySXRlbVtdIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmdldE51bWJlcnMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gIC8vICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA9PT0gMSAmJiB0aGlzLmN1cnJlbnRQYWdlIDwgdGhpcy5nZXRJdGVtcykge1xyXG4gIC8vICAgICAgIHJldHVybiBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgMSB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDIgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgKyAzIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgNDtcclxuICAvLyAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRQYWdlID09IDIgJiYgdGhpcy5jdXJyZW50UGFnZSA8IHRoaXMuZ2V0SXRlbXMpIHtcclxuICAvLyAgICAgICByZXR1cm4gaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDEgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgKyAxIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgMiB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDM7XHJcbiAgLy8gICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFnZSA9PSB0aGlzLmdldEl0ZW1zIC0gMSAmJiB0aGlzLmN1cnJlbnRQYWdlIDwgdGhpcy5nZXRJdGVtcykge1xyXG4gIC8vICAgICAgIHJldHVybiBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIC0gMyB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDIgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSAxIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgMTtcclxuICAvLyAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRQYWdlID4gMSAmJiB0aGlzLmN1cnJlbnRQYWdlIDwgdGhpcy5nZXRJdGVtcykge1xyXG4gIC8vICAgICAgIHJldHVybiBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIC0gMiB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDEgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgKyAxIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgMjtcclxuICAvLyAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICByZXR1cm4gaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDQgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSAzIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIC0gMiB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDEgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2U7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8g0KPQv9GA0L7RidC10L3QvdCw0Y8g0LLQtdGA0YHQuNGPIGdldFZpZXdJdGVtcygpXHJcbiAgcHVibGljIGdldCBnZXRWaWV3SXRlbXMoKTogUGFnaW5hdG9ySXRlbVtdIHtcclxuICAgIGNvbnN0IHRvdGFsUGFnZXMgPSB0aGlzLmdldEl0ZW1zO1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuY3VycmVudFBhZ2U7XHJcbiAgICBjb25zdCBkZWx0YSA9IDI7IC8vINC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLRgNCw0L3QuNGGINC/0L4g0LHQvtC60LDQvCDQvtGCINGC0LXQutGD0YnQtdC5XHJcbiAgICBjb25zdCByYW5nZSA9IFtdO1xyXG4gICAgXHJcbiAgICBmb3IgKGxldCBpID0gTWF0aC5tYXgoMiwgY3VycmVudCAtIGRlbHRhKTsgaSA8PSBNYXRoLm1pbih0b3RhbFBhZ2VzIC0gMSwgY3VycmVudCArIGRlbHRhKTsgaSsrKSB7XHJcbiAgICAgIHJhbmdlLnB1c2goaSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQv9C10YDQstGD0Y4g0YHRgtGA0LDQvdC40YbRg1xyXG4gICAgaWYgKGN1cnJlbnQgLSBkZWx0YSA+IDEpIHtcclxuICAgICAgcmFuZ2UudW5zaGlmdCgnLi4uJyBhcyBhbnkpO1xyXG4gICAgfVxyXG4gICAgcmFuZ2UudW5zaGlmdCgxKTtcclxuICAgIFxyXG4gICAgLy8g0JTQvtCx0LDQstC70Y/QtdC8INC/0L7RgdC70LXQtNC90Y7RjiDRgdGC0YDQsNC90LjRhtGDXHJcbiAgICBpZiAoY3VycmVudCArIGRlbHRhIDwgdG90YWxQYWdlcyAtIDEpIHtcclxuICAgICAgcmFuZ2UucHVzaCgnLi4uJyBhcyBhbnkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRvdGFsUGFnZXMgPiAxKSB7XHJcbiAgICAgIHJhbmdlLnB1c2godG90YWxQYWdlcyk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiByYW5nZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xyXG4gICAgICBpbmRleDogdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInID8gaXRlbSA6IGluZGV4LFxyXG4gICAgICBhY3RpdmU6IGl0ZW0gPT09IGN1cnJlbnQsXHJcbiAgICAgIGlzRWxsaXBzaXM6IGl0ZW0gPT09ICcuLi4nXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEZpcnN0TnVtYmVyQ3VycmVudFBhZ2UoKTogbnVtYmVyIHtcclxuICAgIGlmKHRoaXMudG90YWwgPT09IDApIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnRvdGFsIDwgdGhpcy5wYWdlU2l6ZSAqIHRoaXMuY3VycmVudFBhZ2UgLSB0aGlzLnBhZ2VTaXplICsgMSkge1xyXG4gICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKHRoaXMucGFnZVNpemUgKiB0aGlzLmN1cnJlbnRQYWdlIC0gdGhpcy5wYWdlU2l6ZSkgKyAxO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRMYXN0TnVtYmVyQ3VycmVudFBhZ2UoKTogbnVtYmVyIHtcclxuICAgIGlmKHRoaXMudG90YWwgPT09IDApIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnRvdGFsIDwgdGhpcy5wYWdlU2l6ZSAqIHRoaXMuY3VycmVudFBhZ2UpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudG90YWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlU2l6ZSAqIHRoaXMuY3VycmVudFBhZ2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2VDdXJyZW50UGFnZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFTdGF0ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgIGN1cnJlbnRQYWdlOiB2YWx1ZSxcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlUGFnZVNpemUodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2codmFsdWUpXHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHJcbiAgICB0aGlzLmRhdGFTdGF0ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxyXG4gICAgICBwYWdlU2l6ZTogdmFsdWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LXBhZ2luYXRvclwiIFtjbGFzc109XCJnZXRDbGFzc2VzXCIgKm5nSWY9XCJpc0VtcHR5UGFnaW5hdG9yIHx8IHRvdGFsXCI+XHJcbiAgPHVsIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9fbGlzdFwiPlxyXG4gICAgPGxpXHJcbiAgICAgIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9fcHJldmlvdXNcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPD0gMVwiXHJcbiAgICAgIChjbGljayk9XCJjdXJyZW50UGFnZSA+IDEgJiYgb25DaGFuZ2VDdXJyZW50UGFnZShjdXJyZW50UGFnZSAtIDEpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tbGVmdCBpY29uLWZvbnQtMjRcIj48L2Rpdj5cclxuICAgIDwvbGk+XHJcblxyXG4gICAgPGxpICpuZ0lmPVwiZ2V0Vmlld0l0ZW1zLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9faXRlbSBhY3RpdmVcIj4xPC9saT5cclxuXHJcbiAgICA8bGkgY2xhc3M9XCJtcngtcGFnaW5hdG9yX19pdGVtXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA+IDMgJiYgZ2V0SXRlbXMgPiA1XCIgKGNsaWNrKT1cIm9uQ2hhbmdlQ3VycmVudFBhZ2UoMSlcIj4xPC9saT5cclxuICAgIDxsaSBjbGFzcz1cIm1yeC1wYWdpbmF0b3JfX2l0ZW0gZG90c1wiICpuZ0lmPVwiY3VycmVudFBhZ2UgPiAzICYmIGdldEl0ZW1zID4gNVwiPi4uLjwvbGk+XHJcblxyXG4gICAgPGxpXHJcbiAgICAgIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9faXRlbVwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldFZpZXdJdGVtczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQ2hhbmdlQ3VycmVudFBhZ2UoaXRlbS5pbmRleClcIlxyXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRQYWdlID09PSBpdGVtLmluZGV4XCJcclxuICAgID5cclxuICAgICAge3tpdGVtLmluZGV4fX1cclxuICAgIDwvbGk+XHJcblxyXG4gICAgPGxpIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9faXRlbSBkb3RzXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA8IGdldEl0ZW1zIC0gMiAmJiBnZXRJdGVtcyA+IDVcIj4uLi48L2xpPlxyXG4gICAgPGxpIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9faXRlbVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPCBnZXRJdGVtcyAtIDIgJiYgZ2V0SXRlbXMgPiA1XCJcclxuICAgICAgICAoY2xpY2spPVwib25DaGFuZ2VDdXJyZW50UGFnZShnZXRJdGVtcylcIj57e2dldEl0ZW1zfX08L2xpPlxyXG5cclxuICAgIDxsaVxyXG4gICAgICBjbGFzcz1cIm1yeC1wYWdpbmF0b3JfX25leHRcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPj0gZ2V0SXRlbXNcIlxyXG4gICAgICAoY2xpY2spPVwiY3VycmVudFBhZ2UgPCBnZXRJdGVtcyAmJiBvbkNoYW5nZUN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlICsgMSlcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1yaWdodCBpY29uLWZvbnQtMjRcIj48L2Rpdj5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuXHJcbiAgQGlmICh3aXRoUGFnZVNpemUpIHtcclxuICAgIDxtcngtc2VsZWN0XHJcbiAgICAgIFtuZ01vZGVsXT1cInBhZ2VTaXplXCJcclxuICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICBbaXRlbXNdPVwicGFnZVNpemVzXCJcclxuICAgICAgW2NsZWFyYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgIFtzZWFyY2hhYmxlXT1cImZhbHNlXCJcclxuICAgICAgW3BvcHVwUG9zaXRpb25dPVwicG9wdXBQb3NpdGlvblwiXHJcbiAgICAgIFtzaW5nbGVDaGFuZ2VdPVwidHJ1ZVwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlUGFnZVNpemUoJGV2ZW50KVwiXHJcbiAgICA+PC9tcngtc2VsZWN0PlxyXG4gIH1cclxuXHJcbiAgPGRpdiAqbmdJZj1cImlzUGFnaW5hdG9yVGV4dFwiIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9fdGV4dFwiPlxyXG4gICAg0J7RgtC+0LHRgNCw0LbQtdC90Ysge3twYWdpbmF0b3JUZXh0fX0ge3tnZXRGaXJzdE51bWJlckN1cnJlbnRQYWdlfX0gLSB7e2dldExhc3ROdW1iZXJDdXJyZW50UGFnZX19INC40Lcge3t0b3RhbH19XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
@@ -4500,44 +4500,68 @@ class PaginatorComponent {
4500
4500
  .fill(1)
4501
4501
  .map((item, index) => ({ index: index + 1, active: index + 1 === this.currentPage }));
4502
4502
  }
4503
+ // TO DO: пока оставлю для тестов
4504
+ // public get getViewItems(): PaginatorItem[] {
4505
+ // return this.getNumbers.filter((item, index) => {
4506
+ // if (this.currentPage === 1 && this.currentPage < this.getItems) {
4507
+ // return item.index === this.currentPage ||
4508
+ // item.index === this.currentPage + 1 ||
4509
+ // item.index === this.currentPage + 2 ||
4510
+ // item.index === this.currentPage + 3 ||
4511
+ // item.index === this.currentPage + 4;
4512
+ // } else if (this.currentPage == 2 && this.currentPage < this.getItems) {
4513
+ // return item.index === this.currentPage - 1 ||
4514
+ // item.index === this.currentPage ||
4515
+ // item.index === this.currentPage + 1 ||
4516
+ // item.index === this.currentPage + 2 ||
4517
+ // item.index === this.currentPage + 3;
4518
+ // } else if (this.currentPage == this.getItems - 1 && this.currentPage < this.getItems) {
4519
+ // return item.index === this.currentPage - 3 ||
4520
+ // item.index === this.currentPage - 2 ||
4521
+ // item.index === this.currentPage - 1 ||
4522
+ // item.index === this.currentPage ||
4523
+ // item.index === this.currentPage + 1;
4524
+ // } else if (this.currentPage > 1 && this.currentPage < this.getItems) {
4525
+ // return item.index === this.currentPage - 2 ||
4526
+ // item.index === this.currentPage - 1 ||
4527
+ // item.index === this.currentPage ||
4528
+ // item.index === this.currentPage + 1 ||
4529
+ // item.index === this.currentPage + 2;
4530
+ // } else {
4531
+ // return item.index === this.currentPage - 4 ||
4532
+ // item.index === this.currentPage - 3 ||
4533
+ // item.index === this.currentPage - 2 ||
4534
+ // item.index === this.currentPage - 1 ||
4535
+ // item.index === this.currentPage;
4536
+ // }
4537
+ // });
4538
+ // }
4539
+ // Упрощенная версия getViewItems()
4503
4540
  get getViewItems() {
4504
- return this.getNumbers.filter((item, index) => {
4505
- if (this.currentPage === 1 && this.currentPage < this.getItems) {
4506
- return item.index === this.currentPage ||
4507
- item.index === this.currentPage + 1 ||
4508
- item.index === this.currentPage + 2 ||
4509
- item.index === this.currentPage + 3 ||
4510
- item.index === this.currentPage + 4;
4511
- }
4512
- else if (this.currentPage == 2 && this.currentPage < this.getItems) {
4513
- return item.index === this.currentPage - 1 ||
4514
- item.index === this.currentPage ||
4515
- item.index === this.currentPage + 1 ||
4516
- item.index === this.currentPage + 2 ||
4517
- item.index === this.currentPage + 3;
4518
- }
4519
- else if (this.currentPage == this.getItems - 1 && this.currentPage < this.getItems) {
4520
- return item.index === this.currentPage - 3 ||
4521
- item.index === this.currentPage - 2 ||
4522
- item.index === this.currentPage - 1 ||
4523
- item.index === this.currentPage ||
4524
- item.index === this.currentPage + 1;
4525
- }
4526
- else if (this.currentPage > 1 && this.currentPage < this.getItems) {
4527
- return item.index === this.currentPage - 2 ||
4528
- item.index === this.currentPage - 1 ||
4529
- item.index === this.currentPage ||
4530
- item.index === this.currentPage + 1 ||
4531
- item.index === this.currentPage + 2;
4532
- }
4533
- else {
4534
- return item.index === this.currentPage - 4 ||
4535
- item.index === this.currentPage - 3 ||
4536
- item.index === this.currentPage - 2 ||
4537
- item.index === this.currentPage - 1 ||
4538
- item.index === this.currentPage;
4539
- }
4540
- });
4541
+ const totalPages = this.getItems;
4542
+ const current = this.currentPage;
4543
+ const delta = 2; // количество страниц по бокам от текущей
4544
+ const range = [];
4545
+ for (let i = Math.max(2, current - delta); i <= Math.min(totalPages - 1, current + delta); i++) {
4546
+ range.push(i);
4547
+ }
4548
+ // Добавляем первую страницу
4549
+ if (current - delta > 1) {
4550
+ range.unshift('...');
4551
+ }
4552
+ range.unshift(1);
4553
+ // Добавляем последнюю страницу
4554
+ if (current + delta < totalPages - 1) {
4555
+ range.push('...');
4556
+ }
4557
+ if (totalPages > 1) {
4558
+ range.push(totalPages);
4559
+ }
4560
+ return range.map((item, index) => ({
4561
+ index: typeof item === 'number' ? item : index,
4562
+ active: item === current,
4563
+ isEllipsis: item === '...'
4564
+ }));
4541
4565
  }
4542
4566
  get getFirstNumberCurrentPage() {
4543
4567
  if (this.total === 0) {
@@ -4564,6 +4588,7 @@ class PaginatorComponent {
4564
4588
  });
4565
4589
  }
4566
4590
  onChangePageSize(value) {
4591
+ console.log(value);
4567
4592
  this.currentPage = 1;
4568
4593
  this.dataStateChanged.emit({
4569
4594
  currentPage: this.currentPage,