myrta-ui 17.1.73 → 17.1.76

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.
@@ -2,9 +2,8 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { PaginatorPositionCss, } from './paginator.enum';
3
3
  import { PositionEnum } from '../../enums/overlay';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/forms";
7
- import * as i3 from "../form/select/select.component";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "../form/select/select.component";
8
7
  export class PaginatorComponent {
9
8
  position = 'centered';
10
9
  withPageSize = true;
@@ -36,44 +35,102 @@ export class PaginatorComponent {
36
35
  .fill(1)
37
36
  .map((item, index) => ({ index: index + 1, active: index + 1 === this.currentPage }));
38
37
  }
38
+ // TO DO: пока оставлю для тестов
39
+ // public get getViewItems(): PaginatorItem[] {
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
+ // } else if (this.currentPage == 2 && this.currentPage < this.getItems) {
48
+ // return item.index === this.currentPage - 1 ||
49
+ // item.index === this.currentPage ||
50
+ // item.index === this.currentPage + 1 ||
51
+ // item.index === this.currentPage + 2 ||
52
+ // item.index === this.currentPage + 3;
53
+ // } else if (this.currentPage == this.getItems - 1 && this.currentPage < this.getItems) {
54
+ // return item.index === this.currentPage - 3 ||
55
+ // item.index === this.currentPage - 2 ||
56
+ // item.index === this.currentPage - 1 ||
57
+ // item.index === this.currentPage ||
58
+ // item.index === this.currentPage + 1;
59
+ // } else if (this.currentPage > 1 && this.currentPage < this.getItems) {
60
+ // return item.index === this.currentPage - 2 ||
61
+ // item.index === this.currentPage - 1 ||
62
+ // item.index === this.currentPage ||
63
+ // item.index === this.currentPage + 1 ||
64
+ // item.index === this.currentPage + 2;
65
+ // } else {
66
+ // return item.index === this.currentPage - 4 ||
67
+ // item.index === this.currentPage - 3 ||
68
+ // item.index === this.currentPage - 2 ||
69
+ // item.index === this.currentPage - 1 ||
70
+ // item.index === this.currentPage;
71
+ // }
72
+ // });
73
+ // }
39
74
  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
+ const totalPages = this.getItems;
76
+ // Если нет страниц или только одна
77
+ if (totalPages <= 1) {
78
+ return [];
79
+ }
80
+ const current = this.currentPage;
81
+ const result = [];
82
+ // Всегда показываем первую страницу
83
+ result.push({
84
+ index: 1,
85
+ active: current === 1
86
+ });
87
+ // Показываем многоточие после первой страницы если нужно
88
+ if (current > 3) {
89
+ result.push({
90
+ index: -1,
91
+ active: false,
92
+ isEllipsis: true
93
+ });
94
+ }
95
+ // Определяем диапазон страниц вокруг текущей
96
+ let start = Math.max(2, current - 1);
97
+ let end = Math.min(totalPages - 1, current + 1);
98
+ // Если текущая страница близко к началу
99
+ if (current <= 3) {
100
+ end = Math.min(4, totalPages - 1);
101
+ }
102
+ // Если текущая страница близко к концу
103
+ if (current >= totalPages - 2) {
104
+ start = Math.max(totalPages - 3, 2);
105
+ }
106
+ // Добавляем страницы в диапазоне
107
+ for (let i = start; i <= end; i++) {
108
+ if (i > 1 && i < totalPages) {
109
+ result.push({
110
+ index: i,
111
+ active: i === current
112
+ });
75
113
  }
114
+ }
115
+ // Показываем многоточие перед последней страницей если нужно
116
+ if (current < totalPages - 2) {
117
+ result.push({
118
+ index: -2,
119
+ active: false,
120
+ isEllipsis: true
121
+ });
122
+ }
123
+ // Добавляем последнюю страницу
124
+ result.push({
125
+ index: totalPages,
126
+ active: current === totalPages
76
127
  });
128
+ return result;
129
+ }
130
+ // И trackByFn:
131
+ trackByFn(index, item) {
132
+ // Для многоточий используем уникальные значения, для страниц - их индекс
133
+ return item.isEllipsis ? `ellipsis-${index}` : item.index;
77
134
  }
78
135
  get getFirstNumberCurrentPage() {
79
136
  if (this.total === 0) {
@@ -100,21 +157,19 @@ export class PaginatorComponent {
100
157
  });
101
158
  }
102
159
  onChangePageSize(value) {
160
+ console.log(value);
103
161
  this.currentPage = 1;
104
162
  this.dataStateChanged.emit({
105
163
  currentPage: this.currentPage,
106
164
  pageSize: value
107
165
  });
108
166
  }
109
- trackByFn(index, item) {
110
- return item.id;
111
- }
112
167
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
113
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PaginatorComponent, selector: "mrx-paginator", inputs: { pageSizes: "pageSizes", currentPage: "currentPage", pageSize: "pageSize", total: "total", customClasses: "customClasses", isEmptyPaginator: "isEmptyPaginator", isPaginatorText: "isPaginatorText", paginatorText: "paginatorText", dropdownPosition: "dropdownPosition", popupPosition: "popupPosition", setPosition: ["position", "setPosition"], setWithPageSize: ["withPageSize", "setWithPageSize"] }, outputs: { dataStateChanged: "dataStateChanged" }, ngImport: i0, template: "<div class=\"mrx-paginator\" [class]=\"getClasses\" *ngIf=\"isEmptyPaginator || total\">\r\n <ul class=\"mrx-paginator__list\">\r\n <li\r\n class=\"mrx-paginator__previous\"\r\n [class.disabled]=\"currentPage <= 1\"\r\n (click)=\"currentPage > 1 && onChangeCurrentPage(currentPage - 1)\">\r\n <div class=\"mrx-icon icon-chevron-left icon-font-24\"></div>\r\n </li>\r\n\r\n <li *ngIf=\"getViewItems.length === 0\" class=\"mrx-paginator__item active\">1</li>\r\n\r\n <li class=\"mrx-paginator__item\" *ngIf=\"currentPage > 3 && getItems > 5\" (click)=\"onChangeCurrentPage(1)\">1</li>\r\n <li class=\"mrx-paginator__item dots\" *ngIf=\"currentPage > 3 && getItems > 5\">...</li>\r\n\r\n <li\r\n class=\"mrx-paginator__item\"\r\n *ngFor=\"let item of getViewItems; trackBy: trackByFn\"\r\n (click)=\"onChangeCurrentPage(item.index)\"\r\n [class.active]=\"currentPage === item.index\"\r\n >\r\n {{item.index}}\r\n </li>\r\n\r\n <li class=\"mrx-paginator__item dots\" *ngIf=\"currentPage < getItems - 2 && getItems > 5\">...</li>\r\n <li class=\"mrx-paginator__item\" *ngIf=\"currentPage < getItems - 2 && getItems > 5\"\r\n (click)=\"onChangeCurrentPage(getItems)\">{{getItems}}</li>\r\n\r\n <li\r\n class=\"mrx-paginator__next\"\r\n [class.disabled]=\"currentPage >= getItems\"\r\n (click)=\"currentPage < getItems && onChangeCurrentPage(currentPage + 1)\">\r\n <div class=\"mrx-icon icon-chevron-right icon-font-24\"></div>\r\n </li>\r\n </ul>\r\n\r\n @if (withPageSize) {\r\n <mrx-select\r\n [ngModel]=\"pageSize\"\r\n [size]=\"'medium'\"\r\n [items]=\"pageSizes\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [popupPosition]=\"popupPosition\"\r\n [singleChange]=\"true\"\r\n (ngModelChange)=\"onChangePageSize($event)\"\r\n ></mrx-select>\r\n }\r\n\r\n <div *ngIf=\"isPaginatorText\" class=\"mrx-paginator__text\">\r\n \u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u044B {{paginatorText}} {{getFirstNumberCurrentPage}} - {{getLastNumberCurrentPage}} \u0438\u0437 {{total}}\r\n </div>\r\n</div>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-paginator{display:flex;align-items:center;list-style:none;padding-left:0;gap:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container{padding-left:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container .ng-value-container{min-width:36px;padding:0!important;min-height:auto}:host::ng-deep .mrx-paginator ul{display:flex;align-items:center;justify-content:center;list-style:none;padding:0;margin:0;gap:var(--spacing-1)}:host::ng-deep .mrx-paginator ul li{display:flex;align-items:center;justify-content:center;cursor:pointer}:host::ng-deep .mrx-paginator .mrx-paginator__item{padding-left:var(--spacing-3);padding-right:var(--spacing-3);min-width:32px;min-height:32px;border-radius:4px;font-weight:400;font-size:16px;line-height:24px;transition:.2s}:host::ng-deep .mrx-paginator .mrx-paginator__item.active{background-color:var(--brand-bg-primary-default);color:#fff}:host::ng-deep .mrx-paginator .mrx-paginator__item.dots,:host::ng-deep .mrx-paginator .mrx-paginator__item.disabled{cursor:default}:host::ng-deep .mrx-paginator .mrx-paginator__item:not(.dots,.active):hover{background-color:var(--brand-bg-tertiary-hover)}:host::ng-deep .mrx-paginator .mrx-paginator__previous,:host::ng-deep .mrx-paginator .mrx-paginator__next{min-width:24px;min-height:24px}:host::ng-deep .mrx-paginator .mrx-paginator__previous.disabled .mrx-icon,:host::ng-deep .mrx-paginator .mrx-paginator__next.disabled .mrx-icon{color:var(--neutral-icon-disabled)}:host::ng-deep .mrx-paginator__text{font-size:16px;line-height:24px;color:var(--neutral-text-primary)}.mrx-paginator.mrx-paginator.paginator-centered{justify-content:center}.mrx-paginator.mrx-paginator.paginator-left{justify-content:flex-start}.mrx-paginator.mrx-paginator.paginator-right{justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SelectComponent, selector: "mrx-select", inputs: ["fields", "items", "multiple", "isLoading", "searchable", "clearable", "closable", "size", "bindValue", "bindLabel", "bindIcon", "emptyText", "placeholder", "searchPlaceholder", "multiCollapseCount", "isExtraOption", "extraOptionPlaceholder", "use", "sortIcon", "sortPlaceholder", "isFullWidthDropdown", "withoutSelected", "hideSelected", "addOption", "customSearchFn", "disabled", "readonly", "invalid", "invalidMessage", "checkInvalid", "popupPosition", "singleChange", "scrollContainer", "scrollStrategy"], outputs: ["changed", "modelChange"] }] });
168
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PaginatorComponent, selector: "mrx-paginator", inputs: { pageSizes: "pageSizes", currentPage: "currentPage", pageSize: "pageSize", total: "total", customClasses: "customClasses", isEmptyPaginator: "isEmptyPaginator", isPaginatorText: "isPaginatorText", paginatorText: "paginatorText", dropdownPosition: "dropdownPosition", popupPosition: "popupPosition", setPosition: ["position", "setPosition"], setWithPageSize: ["withPageSize", "setWithPageSize"] }, outputs: { dataStateChanged: "dataStateChanged" }, ngImport: i0, template: "@if(isEmptyPaginator || total) {\r\n <div class=\"mrx-paginator\" [class]=\"getClasses\">\r\n <ul class=\"mrx-paginator__list\">\r\n <li\r\n class=\"mrx-paginator__previous\"\r\n [class.disabled]=\"currentPage <= 1\"\r\n (click)=\"currentPage > 1 && onChangeCurrentPage(currentPage - 1)\">\r\n <div class=\"mrx-icon icon-chevron-left icon-font-24\"></div>\r\n </li>\r\n\r\n <!-- \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E 1 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0435\u0441\u043B\u0438 \u0432\u0441\u0435\u0433\u043E 0 \u0441\u0442\u0440\u0430\u043D\u0438\u0446 -->\r\n @if(getItems === 0) {\r\n <li class=\"mrx-paginator__item active\">1</li>\r\n }\r\n\r\n <!-- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E getViewItems -->\r\n @for(item of getViewItems; track item.index) {\r\n <li\r\n class=\"mrx-paginator__item\"\r\n (click)=\"!item.isEllipsis && onChangeCurrentPage(item.index)\"\r\n [class.active]=\"currentPage === item.index && !item.isEllipsis\"\r\n [class.dots]=\"item.isEllipsis\"\r\n >\r\n {{item.isEllipsis ? '...' : item.index}}\r\n </li>\r\n }\r\n\r\n <li\r\n class=\"mrx-paginator__next\"\r\n [class.disabled]=\"currentPage >= getItems || getItems === 0\"\r\n (click)=\"currentPage < getItems && onChangeCurrentPage(currentPage + 1)\">\r\n <div class=\"mrx-icon icon-chevron-right icon-font-24\"></div>\r\n </li>\r\n </ul>\r\n\r\n @if (withPageSize) {\r\n <mrx-select\r\n [ngModel]=\"pageSize\"\r\n [size]=\"'medium'\"\r\n [items]=\"pageSizes\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [popupPosition]=\"popupPosition\"\r\n [singleChange]=\"true\"\r\n (ngModelChange)=\"onChangePageSize($event)\"\r\n ></mrx-select>\r\n }\r\n\r\n @if(isPaginatorText) {\r\n <div class=\"mrx-paginator__text\">\r\n \u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u044B {{paginatorText}} {{getFirstNumberCurrentPage}} - {{getLastNumberCurrentPage}} \u0438\u0437 {{total}}\r\n </div>\r\n }\r\n </div>\r\n}", styles: [":host::ng-deep .mrx-paginator{display:flex;align-items:center;list-style:none;padding-left:0;gap:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container{padding-left:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container .ng-value-container{min-width:36px;padding:0!important;min-height:auto}:host::ng-deep .mrx-paginator ul{display:flex;align-items:center;justify-content:center;list-style:none;padding:0;margin:0;gap:var(--spacing-1)}:host::ng-deep .mrx-paginator ul li{display:flex;align-items:center;justify-content:center;cursor:pointer}:host::ng-deep .mrx-paginator .mrx-paginator__item{padding-left:var(--spacing-3);padding-right:var(--spacing-3);min-width:32px;min-height:32px;border-radius:4px;font-weight:400;font-size:16px;line-height:24px;transition:.2s}:host::ng-deep .mrx-paginator .mrx-paginator__item.active{background-color:var(--brand-bg-primary-default);color:#fff}:host::ng-deep .mrx-paginator .mrx-paginator__item.dots,:host::ng-deep .mrx-paginator .mrx-paginator__item.disabled{cursor:default}:host::ng-deep .mrx-paginator .mrx-paginator__item:not(.dots,.active):hover{background-color:var(--brand-bg-tertiary-hover)}:host::ng-deep .mrx-paginator .mrx-paginator__previous,:host::ng-deep .mrx-paginator .mrx-paginator__next{min-width:24px;min-height:24px}:host::ng-deep .mrx-paginator .mrx-paginator__previous.disabled .mrx-icon,:host::ng-deep .mrx-paginator .mrx-paginator__next.disabled .mrx-icon{color:var(--neutral-icon-disabled)}:host::ng-deep .mrx-paginator__text{font-size:16px;line-height:24px;color:var(--neutral-text-primary)}.mrx-paginator.mrx-paginator.paginator-centered{justify-content:center}.mrx-paginator.mrx-paginator.paginator-left{justify-content:flex-start}.mrx-paginator.mrx-paginator.paginator-right{justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SelectComponent, selector: "mrx-select", inputs: ["fields", "items", "multiple", "isLoading", "searchable", "clearable", "closable", "size", "bindValue", "bindLabel", "bindIcon", "emptyText", "placeholder", "searchPlaceholder", "multiCollapseCount", "isExtraOption", "extraOptionPlaceholder", "use", "sortIcon", "sortPlaceholder", "isFullWidthDropdown", "withoutSelected", "hideSelected", "addOption", "customSearchFn", "disabled", "readonly", "invalid", "invalidMessage", "checkInvalid", "popupPosition", "singleChange", "scrollContainer", "scrollStrategy"], outputs: ["changed", "modelChange"] }] });
114
169
  }
115
170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, decorators: [{
116
171
  type: Component,
117
- args: [{ selector: 'mrx-paginator', template: "<div class=\"mrx-paginator\" [class]=\"getClasses\" *ngIf=\"isEmptyPaginator || total\">\r\n <ul class=\"mrx-paginator__list\">\r\n <li\r\n class=\"mrx-paginator__previous\"\r\n [class.disabled]=\"currentPage <= 1\"\r\n (click)=\"currentPage > 1 && onChangeCurrentPage(currentPage - 1)\">\r\n <div class=\"mrx-icon icon-chevron-left icon-font-24\"></div>\r\n </li>\r\n\r\n <li *ngIf=\"getViewItems.length === 0\" class=\"mrx-paginator__item active\">1</li>\r\n\r\n <li class=\"mrx-paginator__item\" *ngIf=\"currentPage > 3 && getItems > 5\" (click)=\"onChangeCurrentPage(1)\">1</li>\r\n <li class=\"mrx-paginator__item dots\" *ngIf=\"currentPage > 3 && getItems > 5\">...</li>\r\n\r\n <li\r\n class=\"mrx-paginator__item\"\r\n *ngFor=\"let item of getViewItems; trackBy: trackByFn\"\r\n (click)=\"onChangeCurrentPage(item.index)\"\r\n [class.active]=\"currentPage === item.index\"\r\n >\r\n {{item.index}}\r\n </li>\r\n\r\n <li class=\"mrx-paginator__item dots\" *ngIf=\"currentPage < getItems - 2 && getItems > 5\">...</li>\r\n <li class=\"mrx-paginator__item\" *ngIf=\"currentPage < getItems - 2 && getItems > 5\"\r\n (click)=\"onChangeCurrentPage(getItems)\">{{getItems}}</li>\r\n\r\n <li\r\n class=\"mrx-paginator__next\"\r\n [class.disabled]=\"currentPage >= getItems\"\r\n (click)=\"currentPage < getItems && onChangeCurrentPage(currentPage + 1)\">\r\n <div class=\"mrx-icon icon-chevron-right icon-font-24\"></div>\r\n </li>\r\n </ul>\r\n\r\n @if (withPageSize) {\r\n <mrx-select\r\n [ngModel]=\"pageSize\"\r\n [size]=\"'medium'\"\r\n [items]=\"pageSizes\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [popupPosition]=\"popupPosition\"\r\n [singleChange]=\"true\"\r\n (ngModelChange)=\"onChangePageSize($event)\"\r\n ></mrx-select>\r\n }\r\n\r\n <div *ngIf=\"isPaginatorText\" class=\"mrx-paginator__text\">\r\n \u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u044B {{paginatorText}} {{getFirstNumberCurrentPage}} - {{getLastNumberCurrentPage}} \u0438\u0437 {{total}}\r\n </div>\r\n</div>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-paginator{display:flex;align-items:center;list-style:none;padding-left:0;gap:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container{padding-left:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container .ng-value-container{min-width:36px;padding:0!important;min-height:auto}:host::ng-deep .mrx-paginator ul{display:flex;align-items:center;justify-content:center;list-style:none;padding:0;margin:0;gap:var(--spacing-1)}:host::ng-deep .mrx-paginator ul li{display:flex;align-items:center;justify-content:center;cursor:pointer}:host::ng-deep .mrx-paginator .mrx-paginator__item{padding-left:var(--spacing-3);padding-right:var(--spacing-3);min-width:32px;min-height:32px;border-radius:4px;font-weight:400;font-size:16px;line-height:24px;transition:.2s}:host::ng-deep .mrx-paginator .mrx-paginator__item.active{background-color:var(--brand-bg-primary-default);color:#fff}:host::ng-deep .mrx-paginator .mrx-paginator__item.dots,:host::ng-deep .mrx-paginator .mrx-paginator__item.disabled{cursor:default}:host::ng-deep .mrx-paginator .mrx-paginator__item:not(.dots,.active):hover{background-color:var(--brand-bg-tertiary-hover)}:host::ng-deep .mrx-paginator .mrx-paginator__previous,:host::ng-deep .mrx-paginator .mrx-paginator__next{min-width:24px;min-height:24px}:host::ng-deep .mrx-paginator .mrx-paginator__previous.disabled .mrx-icon,:host::ng-deep .mrx-paginator .mrx-paginator__next.disabled .mrx-icon{color:var(--neutral-icon-disabled)}:host::ng-deep .mrx-paginator__text{font-size:16px;line-height:24px;color:var(--neutral-text-primary)}.mrx-paginator.mrx-paginator.paginator-centered{justify-content:center}.mrx-paginator.mrx-paginator.paginator-left{justify-content:flex-start}.mrx-paginator.mrx-paginator.paginator-right{justify-content:flex-end}\n"] }]
172
+ args: [{ selector: 'mrx-paginator', template: "@if(isEmptyPaginator || total) {\r\n <div class=\"mrx-paginator\" [class]=\"getClasses\">\r\n <ul class=\"mrx-paginator__list\">\r\n <li\r\n class=\"mrx-paginator__previous\"\r\n [class.disabled]=\"currentPage <= 1\"\r\n (click)=\"currentPage > 1 && onChangeCurrentPage(currentPage - 1)\">\r\n <div class=\"mrx-icon icon-chevron-left icon-font-24\"></div>\r\n </li>\r\n\r\n <!-- \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E 1 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0435\u0441\u043B\u0438 \u0432\u0441\u0435\u0433\u043E 0 \u0441\u0442\u0440\u0430\u043D\u0438\u0446 -->\r\n @if(getItems === 0) {\r\n <li class=\"mrx-paginator__item active\">1</li>\r\n }\r\n\r\n <!-- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E getViewItems -->\r\n @for(item of getViewItems; track item.index) {\r\n <li\r\n class=\"mrx-paginator__item\"\r\n (click)=\"!item.isEllipsis && onChangeCurrentPage(item.index)\"\r\n [class.active]=\"currentPage === item.index && !item.isEllipsis\"\r\n [class.dots]=\"item.isEllipsis\"\r\n >\r\n {{item.isEllipsis ? '...' : item.index}}\r\n </li>\r\n }\r\n\r\n <li\r\n class=\"mrx-paginator__next\"\r\n [class.disabled]=\"currentPage >= getItems || getItems === 0\"\r\n (click)=\"currentPage < getItems && onChangeCurrentPage(currentPage + 1)\">\r\n <div class=\"mrx-icon icon-chevron-right icon-font-24\"></div>\r\n </li>\r\n </ul>\r\n\r\n @if (withPageSize) {\r\n <mrx-select\r\n [ngModel]=\"pageSize\"\r\n [size]=\"'medium'\"\r\n [items]=\"pageSizes\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [popupPosition]=\"popupPosition\"\r\n [singleChange]=\"true\"\r\n (ngModelChange)=\"onChangePageSize($event)\"\r\n ></mrx-select>\r\n }\r\n\r\n @if(isPaginatorText) {\r\n <div class=\"mrx-paginator__text\">\r\n \u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u044B {{paginatorText}} {{getFirstNumberCurrentPage}} - {{getLastNumberCurrentPage}} \u0438\u0437 {{total}}\r\n </div>\r\n }\r\n </div>\r\n}", styles: [":host::ng-deep .mrx-paginator{display:flex;align-items:center;list-style:none;padding-left:0;gap:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container{padding-left:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container .ng-value-container{min-width:36px;padding:0!important;min-height:auto}:host::ng-deep .mrx-paginator ul{display:flex;align-items:center;justify-content:center;list-style:none;padding:0;margin:0;gap:var(--spacing-1)}:host::ng-deep .mrx-paginator ul li{display:flex;align-items:center;justify-content:center;cursor:pointer}:host::ng-deep .mrx-paginator .mrx-paginator__item{padding-left:var(--spacing-3);padding-right:var(--spacing-3);min-width:32px;min-height:32px;border-radius:4px;font-weight:400;font-size:16px;line-height:24px;transition:.2s}:host::ng-deep .mrx-paginator .mrx-paginator__item.active{background-color:var(--brand-bg-primary-default);color:#fff}:host::ng-deep .mrx-paginator .mrx-paginator__item.dots,:host::ng-deep .mrx-paginator .mrx-paginator__item.disabled{cursor:default}:host::ng-deep .mrx-paginator .mrx-paginator__item:not(.dots,.active):hover{background-color:var(--brand-bg-tertiary-hover)}:host::ng-deep .mrx-paginator .mrx-paginator__previous,:host::ng-deep .mrx-paginator .mrx-paginator__next{min-width:24px;min-height:24px}:host::ng-deep .mrx-paginator .mrx-paginator__previous.disabled .mrx-icon,:host::ng-deep .mrx-paginator .mrx-paginator__next.disabled .mrx-icon{color:var(--neutral-icon-disabled)}:host::ng-deep .mrx-paginator__text{font-size:16px;line-height:24px;color:var(--neutral-text-primary)}.mrx-paginator.mrx-paginator.paginator-centered{justify-content:center}.mrx-paginator.mrx-paginator.paginator-left{justify-content:flex-start}.mrx-paginator.mrx-paginator.paginator-right{justify-content:flex-end}\n"] }]
118
173
  }], propDecorators: { pageSizes: [{
119
174
  type: Input
120
175
  }], currentPage: [{
@@ -144,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
144
199
  }], dataStateChanged: [{
145
200
  type: Output
146
201
  }] } });
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==
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUdjLG9CQUFvQixHQUN4QyxNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7OztBQU9sRCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3RCLFFBQVEsR0FBa0MsVUFBVSxDQUFDO0lBQ3JELFlBQVksR0FBd0IsSUFBSSxDQUFDO0lBRXZDLFNBQVMsR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNoQixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNWLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFFbkIsZ0JBQWdCLEdBQVksS0FBSyxDQUFDO0lBQ2xDLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFDakMsYUFBYSxHQUFXLFFBQVEsQ0FBQztJQUNqQyxnQkFBZ0IsR0FBc0IsTUFBTSxDQUFDLENBQUMsYUFBYTtJQUMzRCxhQUFhLEdBQWlCLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFFOUQsSUFDVyxXQUFXLENBQUMsS0FBb0M7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLElBQUksVUFBVSxD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QztZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0E3TFUsa0JBQWtCOzRGQUFsQixrQkFBa0IsOGZDZC9CLG14RUFzREM7OzRGRHhDWSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZUFBZTs4QkFRaEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFHSyxXQUFXO3NCQURyQixLQUFLO3VCQUFDLFVBQVU7Z0JBTU4sZUFBZTtzQkFEekIsS0FBSzt1QkFBQyxjQUFjO2dCQUtYLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgUGFnaW5hdGVPdXRwdXRPYmplY3QsXHJcbiAgUGFnaW5hdG9ySXRlbSxcclxuICBQYWdpbmF0b3JQb3NpdGlvbiwgUGFnaW5hdG9yUG9zaXRpb25Dc3MsXHJcbn0gZnJvbSAnLi9wYWdpbmF0b3IuZW51bSc7XHJcbmltcG9ydCB7IERyb3Bkb3duUG9zaXRpb24gfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcbmltcG9ydCB7IFBvc2l0aW9uRW51bSB9IGZyb20gJy4uLy4uL2VudW1zL292ZXJsYXknXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1wYWdpbmF0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BhZ2luYXRvci5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JDb21wb25lbnQge1xyXG4gIHB1YmxpYyBwb3NpdGlvbjogUGFnaW5hdG9yUG9zaXRpb24gfCB1bmRlZmluZWQgPSAnY2VudGVyZWQnO1xyXG4gIHB1YmxpYyB3aXRoUGFnZVNpemU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBwYWdlU2l6ZXM6IG51bWJlcltdID0gWzIwLCA1MCwgMTAwXTtcclxuICBASW5wdXQoKSBjdXJyZW50UGFnZSA9IDE7XHJcbiAgQElucHV0KCkgcGFnZVNpemUgPSAyMDtcclxuICBASW5wdXQoKSB0b3RhbCA9IDA7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBpc0VtcHR5UGFnaW5hdG9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNQYWdpbmF0b3JUZXh0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcGFnaW5hdG9yVGV4dDogc3RyaW5nID0gJ9C30LDQv9C40YHQuCc7XHJcbiAgQElucHV0KCkgZHJvcGRvd25Qb3NpdGlvbjogRHJvcGRvd25Qb3NpdGlvbiAgPSAnYXV0byc7IC8vIGRlcHJlY2F0ZWRcclxuICBASW5wdXQoKSBwb3B1cFBvc2l0aW9uOiBQb3NpdGlvbkVudW0gPSBQb3NpdGlvbkVudW0uQm90dG9tRW5kO1xyXG5cclxuICBASW5wdXQoJ3Bvc2l0aW9uJylcclxuICBwdWJsaWMgc2V0IHNldFBvc2l0aW9uKHZhbHVlOiBQYWdpbmF0b3JQb3NpdGlvbiB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5wb3NpdGlvbiA9IHZhbHVlIHx8ICdjZW50ZXJlZCc7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ3dpdGhQYWdlU2l6ZScpXHJcbiAgcHVibGljIHNldCBzZXRXaXRoUGFnZVNpemUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMud2l0aFBhZ2VTaXplID0gdmFsdWUgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgZGF0YVN0YXRlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFBhZ2luYXRlT3V0cHV0T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5hdGVPdXRwdXRPYmplY3Q+KCk7XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke3RoaXMucG9zaXRpb24gJiYgUGFnaW5hdG9yUG9zaXRpb25Dc3NbdGhpcy5wb3NpdGlvbl19ICR7dGhpcy5jdXN0b21DbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEl0ZW1zKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBhZ2VTaXplKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0TnVtYmVycygpOiBQYWdpbmF0b3JJdGVtW10ge1xyXG4gICAgcmV0dXJuIEFycmF5KHRoaXMuZ2V0SXRlbXMpXHJcbiAgICAgIC5maWxsKDEpXHJcbiAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoeyBpbmRleDogaW5kZXggKyAxLCBhY3RpdmU6IGluZGV4ICsgMSA9PT0gdGhpcy5jdXJyZW50UGFnZSB9KSk7XHJcbiAgfVxyXG5cclxuICAvLyBUTyBETzog0L/QvtC60LAg0L7RgdGC0LDQstC70Y4g0LTQu9GPINGC0LXRgdGC0L7QslxyXG4gIC8vIHB1YmxpYyBnZXQgZ2V0Vmlld0l0ZW1zKCk6IFBhZ2luYXRvckl0ZW1bXSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5nZXROdW1iZXJzLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IHtcclxuICAvLyAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPT09IDEgJiYgdGhpcy5jdXJyZW50UGFnZSA8IHRoaXMuZ2V0SXRlbXMpIHtcclxuICAvLyAgICAgICByZXR1cm4gaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDEgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgKyAyIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgMyB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDQ7XHJcbiAgLy8gICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFnZSA9PSAyICYmIHRoaXMuY3VycmVudFBhZ2UgPCB0aGlzLmdldEl0ZW1zKSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSAxIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgMSB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDIgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgKyAzO1xyXG4gIC8vICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFBhZ2UgPT0gdGhpcy5nZXRJdGVtcyAtIDEgJiYgdGhpcy5jdXJyZW50UGFnZSA8IHRoaXMuZ2V0SXRlbXMpIHtcclxuICAvLyAgICAgICByZXR1cm4gaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDMgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSAyIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIC0gMSB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDE7XHJcbiAgLy8gICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFnZSA+IDEgJiYgdGhpcy5jdXJyZW50UGFnZSA8IHRoaXMuZ2V0SXRlbXMpIHtcclxuICAvLyAgICAgICByZXR1cm4gaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDIgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSAxIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlICsgMSB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSArIDI7XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSA0IHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlIC0gMyB8fFxyXG4gIC8vICAgICAgICAgaXRlbS5pbmRleCA9PT0gdGhpcy5jdXJyZW50UGFnZSAtIDIgfHxcclxuICAvLyAgICAgICAgIGl0ZW0uaW5kZXggPT09IHRoaXMuY3VycmVudFBhZ2UgLSAxIHx8XHJcbiAgLy8gICAgICAgICBpdGVtLmluZGV4ID09PSB0aGlzLmN1cnJlbnRQYWdlO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Vmlld0l0ZW1zKCk6IFBhZ2luYXRvckl0ZW1bXSB7XHJcbiAgICBjb25zdCB0b3RhbFBhZ2VzID0gdGhpcy5nZXRJdGVtcztcclxuICAgIFxyXG4gICAgLy8g0JXRgdC70Lgg0L3QtdGCINGB0YLRgNCw0L3QuNGGINC40LvQuCDRgtC+0LvRjNC60L4g0L7QtNC90LBcclxuICAgIGlmICh0b3RhbFBhZ2VzIDw9IDEpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5jdXJyZW50UGFnZTtcclxuICAgIGNvbnN0IHJlc3VsdDogUGFnaW5hdG9ySXRlbVtdID0gW107XHJcbiAgICBcclxuICAgIC8vINCS0YHQtdCz0LTQsCDQv9C+0LrQsNC30YvQstCw0LXQvCDQv9C10YDQstGD0Y4g0YHRgtGA0LDQvdC40YbRg1xyXG4gICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICBpbmRleDogMSxcclxuICAgICAgYWN0aXZlOiBjdXJyZW50ID09PSAxXHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgLy8g0J/QvtC60LDQt9GL0LLQsNC10Lwg0LzQvdC+0LPQvtGC0L7Rh9C40LUg0L/QvtGB0LvQtSDQv9C10YDQstC+0Lkg0YHRgtGA0LDQvdC40YbRiyDQtdGB0LvQuCDQvdGD0LbQvdC+XHJcbiAgICBpZiAoY3VycmVudCA+IDMpIHtcclxuICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgIGluZGV4OiAtMSxcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzRWxsaXBzaXM6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vINCe0L/RgNC10LTQtdC70Y/QtdC8INC00LjQsNC/0LDQt9C+0L0g0YHRgtGA0LDQvdC40YYg0LLQvtC60YDRg9CzINGC0LXQutGD0YnQtdC5XHJcbiAgICBsZXQgc3RhcnQgPSBNYXRoLm1heCgyLCBjdXJyZW50IC0gMSk7XHJcbiAgICBsZXQgZW5kID0gTWF0aC5taW4odG90YWxQYWdlcyAtIDEsIGN1cnJlbnQgKyAxKTtcclxuICAgIFxyXG4gICAgLy8g0JXRgdC70Lgg0YLQtdC60YPRidCw0Y8g0YHRgtGA0LDQvdC40YbQsCDQsdC70LjQt9C60L4g0Log0L3QsNGH0LDQu9GDXHJcbiAgICBpZiAoY3VycmVudCA8PSAzKSB7XHJcbiAgICAgIGVuZCA9IE1hdGgubWluKDQsIHRvdGFsUGFnZXMgLSAxKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8g0JXRgdC70Lgg0YLQtdC60YPRidCw0Y8g0YHRgtGA0LDQvdC40YbQsCDQsdC70LjQt9C60L4g0Log0LrQvtC90YbRg1xyXG4gICAgaWYgKGN1cnJlbnQgPj0gdG90YWxQYWdlcyAtIDIpIHtcclxuICAgICAgc3RhcnQgPSBNYXRoLm1heCh0b3RhbFBhZ2VzIC0gMywgMik7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDRgdGC0YDQsNC90LjRhtGLINCyINC00LjQsNC/0LDQt9C+0L3QtVxyXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XHJcbiAgICAgIGlmIChpID4gMSAmJiBpIDwgdG90YWxQYWdlcykge1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKHtcclxuICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgYWN0aXZlOiBpID09PSBjdXJyZW50XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8g0J/QvtC60LDQt9GL0LLQsNC10Lwg0LzQvdC+0LPQvtGC0L7Rh9C40LUg0L/QtdGA0LXQtCDQv9C+0YHQu9C10LTQvdC10Lkg0YHRgtGA0LDQvdC40YbQtdC5INC10YHQu9C4INC90YPQttC90L5cclxuICAgIGlmIChjdXJyZW50IDwgdG90YWxQYWdlcyAtIDIpIHtcclxuICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgIGluZGV4OiAtMixcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzRWxsaXBzaXM6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQv9C+0YHQu9C10LTQvdGO0Y4g0YHRgtGA0LDQvdC40YbRg1xyXG4gICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICBpbmRleDogdG90YWxQYWdlcyxcclxuICAgICAgYWN0aXZlOiBjdXJyZW50ID09PSB0b3RhbFBhZ2VzXHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vINCYIHRyYWNrQnlGbjpcclxuICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IFBhZ2luYXRvckl0ZW0pIHtcclxuICAgIC8vINCU0LvRjyDQvNC90L7Qs9C+0YLQvtGH0LjQuSDQuNGB0L/QvtC70YzQt9GD0LXQvCDRg9C90LjQutCw0LvRjNC90YvQtSDQt9C90LDRh9C10L3QuNGPLCDQtNC70Y8g0YHRgtGA0LDQvdC40YYgLSDQuNGFINC40L3QtNC10LrRgVxyXG4gICAgcmV0dXJuIGl0ZW0uaXNFbGxpcHNpcyA/IGBlbGxpcHNpcy0ke2luZGV4fWAgOiBpdGVtLmluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRGaXJzdE51bWJlckN1cnJlbnRQYWdlKCk6IG51bWJlciB7XHJcbiAgICBpZih0aGlzLnRvdGFsID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy50b3RhbCA8IHRoaXMucGFnZVNpemUgKiB0aGlzLmN1cnJlbnRQYWdlIC0gdGhpcy5wYWdlU2l6ZSArIDEpIHtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICh0aGlzLnBhZ2VTaXplICogdGhpcy5jdXJyZW50UGFnZSAtIHRoaXMucGFnZVNpemUpICsgMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0TGFzdE51bWJlckN1cnJlbnRQYWdlKCk6IG51bWJlciB7XHJcbiAgICBpZih0aGlzLnRvdGFsID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy50b3RhbCA8IHRoaXMucGFnZVNpemUgKiB0aGlzLmN1cnJlbnRQYWdlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRvdGFsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucGFnZVNpemUgKiB0aGlzLmN1cnJlbnRQYWdlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlQ3VycmVudFBhZ2UodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhU3RhdGVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICBjdXJyZW50UGFnZTogdmFsdWUsXHJcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZVBhZ2VTaXplKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHZhbHVlKVxyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcblxyXG4gICAgdGhpcy5kYXRhU3RhdGVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICBjdXJyZW50UGFnZTogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgcGFnZVNpemU6IHZhbHVlXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiQGlmKGlzRW1wdHlQYWdpbmF0b3IgfHwgdG90YWwpIHtcclxuICA8ZGl2IGNsYXNzPVwibXJ4LXBhZ2luYXRvclwiIFtjbGFzc109XCJnZXRDbGFzc2VzXCI+XHJcbiAgICA8dWwgY2xhc3M9XCJtcngtcGFnaW5hdG9yX19saXN0XCI+XHJcbiAgICAgIDxsaVxyXG4gICAgICAgIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9fcHJldmlvdXNcIlxyXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA8PSAxXCJcclxuICAgICAgICAoY2xpY2spPVwiY3VycmVudFBhZ2UgPiAxICYmIG9uQ2hhbmdlQ3VycmVudFBhZ2UoY3VycmVudFBhZ2UgLSAxKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tbGVmdCBpY29uLWZvbnQtMjRcIj48L2Rpdj5cclxuICAgICAgPC9saT5cclxuXHJcbiAgICAgIDwhLS0g0J/QvtC60LDQt9GL0LLQsNC10Lwg0YLQvtC70YzQutC+IDEg0Y3Qu9C10LzQtdC90YIg0LXRgdC70Lgg0LLRgdC10LPQviAwINGB0YLRgNCw0L3QuNGGIC0tPlxyXG4gICAgICBAaWYoZ2V0SXRlbXMgPT09IDApIHtcclxuICAgICAgICA8bGkgY2xhc3M9XCJtcngtcGFnaW5hdG9yX19pdGVtIGFjdGl2ZVwiPjE8L2xpPlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8IS0tINCY0YHQv9C+0LvRjNC30YPQtdC8INGC0L7Qu9GM0LrQviBnZXRWaWV3SXRlbXMgLS0+XHJcbiAgICAgIEBmb3IoaXRlbSBvZiBnZXRWaWV3SXRlbXM7IHRyYWNrIGl0ZW0uaW5kZXgpIHtcclxuICAgICAgICA8bGlcclxuICAgICAgICAgIGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9faXRlbVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiIWl0ZW0uaXNFbGxpcHNpcyAmJiBvbkNoYW5nZUN1cnJlbnRQYWdlKGl0ZW0uaW5kZXgpXCJcclxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFBhZ2UgPT09IGl0ZW0uaW5kZXggJiYgIWl0ZW0uaXNFbGxpcHNpc1wiXHJcbiAgICAgICAgICBbY2xhc3MuZG90c109XCJpdGVtLmlzRWxsaXBzaXNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7aXRlbS5pc0VsbGlwc2lzID8gJy4uLicgOiBpdGVtLmluZGV4fX1cclxuICAgICAgICA8L2xpPlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8bGlcclxuICAgICAgICBjbGFzcz1cIm1yeC1wYWdpbmF0b3JfX25leHRcIlxyXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA+PSBnZXRJdGVtcyB8fCBnZXRJdGVtcyA9PT0gMFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImN1cnJlbnRQYWdlIDwgZ2V0SXRlbXMgJiYgb25DaGFuZ2VDdXJyZW50UGFnZShjdXJyZW50UGFnZSArIDEpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1yaWdodCBpY29uLWZvbnQtMjRcIj48L2Rpdj5cclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcblxyXG4gICAgQGlmICh3aXRoUGFnZVNpemUpIHtcclxuICAgICAgPG1yeC1zZWxlY3RcclxuICAgICAgICBbbmdNb2RlbF09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgIFtpdGVtc109XCJwYWdlU2l6ZXNcIlxyXG4gICAgICAgIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzZWFyY2hhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICBbcG9wdXBQb3NpdGlvbl09XCJwb3B1cFBvc2l0aW9uXCJcclxuICAgICAgICBbc2luZ2xlQ2hhbmdlXT1cInRydWVcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlUGFnZVNpemUoJGV2ZW50KVwiXHJcbiAgICAgID48L21yeC1zZWxlY3Q+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmKGlzUGFnaW5hdG9yVGV4dCkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXBhZ2luYXRvcl9fdGV4dFwiPlxyXG4gICAgICAgINCe0YLQvtCx0YDQsNC20LXQvdGLIHt7cGFnaW5hdG9yVGV4dH19IHt7Z2V0Rmlyc3ROdW1iZXJDdXJyZW50UGFnZX19IC0ge3tnZXRMYXN0TnVtYmVyQ3VycmVudFBhZ2V9fSDQuNC3IHt7dG90YWx9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxufSJdfQ==
@@ -3,4 +3,4 @@ export const PaginatorPositionCss = {
3
3
  ['right']: 'paginator-right',
4
4
  ['left']: 'paginator-left'
5
5
  };
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvcGFnaW5hdG9yL3BhZ2luYXRvci5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUNLO0lBQ3BDLENBQUMsVUFBVSxDQUFDLEVBQUUsb0JBQW9CO0lBQ2xDLENBQUMsT0FBTyxDQUFDLEVBQUUsaUJBQWlCO0lBQzVCLENBQUMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCO0NBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVjbGFyZSB0eXBlIFBhZ2luYXRvclBvc2l0aW9uID0gJ2NlbnRlcmVkJyB8ICdyaWdodCcgfCAnbGVmdCc7XHJcblxyXG5leHBvcnQgY29uc3QgUGFnaW5hdG9yUG9zaXRpb25Dc3M6XHJcbiAgUmVjb3JkPFBhZ2luYXRvclBvc2l0aW9uLCBzdHJpbmc+ID0ge1xyXG4gIFsnY2VudGVyZWQnXTogJ3BhZ2luYXRvci1jZW50ZXJlZCcsXHJcbiAgWydyaWdodCddOiAncGFnaW5hdG9yLXJpZ2h0JyxcclxuICBbJ2xlZnQnXTogJ3BhZ2luYXRvci1sZWZ0J1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0b3JJdGVtIHtcclxuICBpbmRleDogbnVtYmVyLFxyXG4gIGFjdGl2ZTogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlT3V0cHV0T2JqZWN0IHtcclxuICBjdXJyZW50UGFnZTogbnVtYmVyLFxyXG4gIHBhZ2VTaXplOiBudW1iZXJcclxufVxyXG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvcGFnaW5hdG9yL3BhZ2luYXRvci5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUNLO0lBQ3BDLENBQUMsVUFBVSxDQUFDLEVBQUUsb0JBQW9CO0lBQ2xDLENBQUMsT0FBTyxDQUFDLEVBQUUsaUJBQWlCO0lBQzVCLENBQUMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCO0NBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVjbGFyZSB0eXBlIFBhZ2luYXRvclBvc2l0aW9uID0gJ2NlbnRlcmVkJyB8ICdyaWdodCcgfCAnbGVmdCc7XHJcblxyXG5leHBvcnQgY29uc3QgUGFnaW5hdG9yUG9zaXRpb25Dc3M6XHJcbiAgUmVjb3JkPFBhZ2luYXRvclBvc2l0aW9uLCBzdHJpbmc+ID0ge1xyXG4gIFsnY2VudGVyZWQnXTogJ3BhZ2luYXRvci1jZW50ZXJlZCcsXHJcbiAgWydyaWdodCddOiAncGFnaW5hdG9yLXJpZ2h0JyxcclxuICBbJ2xlZnQnXTogJ3BhZ2luYXRvci1sZWZ0J1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0b3JJdGVtIHtcclxuICBpbmRleDogbnVtYmVyLFxyXG4gIGFjdGl2ZTogYm9vbGVhbixcclxuICBpc0VsbGlwc2lzPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0ZU91dHB1dE9iamVjdCB7XHJcbiAgY3VycmVudFBhZ2U6IG51bWJlcixcclxuICBwYWdlU2l6ZTogbnVtYmVyXHJcbn1cclxuIl19
@@ -4500,44 +4500,102 @@ 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
+ // }
4503
4539
  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;
4540
+ const totalPages = this.getItems;
4541
+ // Если нет страниц или только одна
4542
+ if (totalPages <= 1) {
4543
+ return [];
4544
+ }
4545
+ const current = this.currentPage;
4546
+ const result = [];
4547
+ // Всегда показываем первую страницу
4548
+ result.push({
4549
+ index: 1,
4550
+ active: current === 1
4551
+ });
4552
+ // Показываем многоточие после первой страницы если нужно
4553
+ if (current > 3) {
4554
+ result.push({
4555
+ index: -1,
4556
+ active: false,
4557
+ isEllipsis: true
4558
+ });
4559
+ }
4560
+ // Определяем диапазон страниц вокруг текущей
4561
+ let start = Math.max(2, current - 1);
4562
+ let end = Math.min(totalPages - 1, current + 1);
4563
+ // Если текущая страница близко к началу
4564
+ if (current <= 3) {
4565
+ end = Math.min(4, totalPages - 1);
4566
+ }
4567
+ // Если текущая страница близко к концу
4568
+ if (current >= totalPages - 2) {
4569
+ start = Math.max(totalPages - 3, 2);
4570
+ }
4571
+ // Добавляем страницы в диапазоне
4572
+ for (let i = start; i <= end; i++) {
4573
+ if (i > 1 && i < totalPages) {
4574
+ result.push({
4575
+ index: i,
4576
+ active: i === current
4577
+ });
4539
4578
  }
4579
+ }
4580
+ // Показываем многоточие перед последней страницей если нужно
4581
+ if (current < totalPages - 2) {
4582
+ result.push({
4583
+ index: -2,
4584
+ active: false,
4585
+ isEllipsis: true
4586
+ });
4587
+ }
4588
+ // Добавляем последнюю страницу
4589
+ result.push({
4590
+ index: totalPages,
4591
+ active: current === totalPages
4540
4592
  });
4593
+ return result;
4594
+ }
4595
+ // И trackByFn:
4596
+ trackByFn(index, item) {
4597
+ // Для многоточий используем уникальные значения, для страниц - их индекс
4598
+ return item.isEllipsis ? `ellipsis-${index}` : item.index;
4541
4599
  }
4542
4600
  get getFirstNumberCurrentPage() {
4543
4601
  if (this.total === 0) {
@@ -4564,21 +4622,19 @@ class PaginatorComponent {
4564
4622
  });
4565
4623
  }
4566
4624
  onChangePageSize(value) {
4625
+ console.log(value);
4567
4626
  this.currentPage = 1;
4568
4627
  this.dataStateChanged.emit({
4569
4628
  currentPage: this.currentPage,
4570
4629
  pageSize: value
4571
4630
  });
4572
4631
  }
4573
- trackByFn(index, item) {
4574
- return item.id;
4575
- }
4576
4632
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4577
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PaginatorComponent, selector: "mrx-paginator", inputs: { pageSizes: "pageSizes", currentPage: "currentPage", pageSize: "pageSize", total: "total", customClasses: "customClasses", isEmptyPaginator: "isEmptyPaginator", isPaginatorText: "isPaginatorText", paginatorText: "paginatorText", dropdownPosition: "dropdownPosition", popupPosition: "popupPosition", setPosition: ["position", "setPosition"], setWithPageSize: ["withPageSize", "setWithPageSize"] }, outputs: { dataStateChanged: "dataStateChanged" }, ngImport: i0, template: "<div class=\"mrx-paginator\" [class]=\"getClasses\" *ngIf=\"isEmptyPaginator || total\">\r\n <ul class=\"mrx-paginator__list\">\r\n <li\r\n class=\"mrx-paginator__previous\"\r\n [class.disabled]=\"currentPage <= 1\"\r\n (click)=\"currentPage > 1 && onChangeCurrentPage(currentPage - 1)\">\r\n <div class=\"mrx-icon icon-chevron-left icon-font-24\"></div>\r\n </li>\r\n\r\n <li *ngIf=\"getViewItems.length === 0\" class=\"mrx-paginator__item active\">1</li>\r\n\r\n <li class=\"mrx-paginator__item\" *ngIf=\"currentPage > 3 && getItems > 5\" (click)=\"onChangeCurrentPage(1)\">1</li>\r\n <li class=\"mrx-paginator__item dots\" *ngIf=\"currentPage > 3 && getItems > 5\">...</li>\r\n\r\n <li\r\n class=\"mrx-paginator__item\"\r\n *ngFor=\"let item of getViewItems; trackBy: trackByFn\"\r\n (click)=\"onChangeCurrentPage(item.index)\"\r\n [class.active]=\"currentPage === item.index\"\r\n >\r\n {{item.index}}\r\n </li>\r\n\r\n <li class=\"mrx-paginator__item dots\" *ngIf=\"currentPage < getItems - 2 && getItems > 5\">...</li>\r\n <li class=\"mrx-paginator__item\" *ngIf=\"currentPage < getItems - 2 && getItems > 5\"\r\n (click)=\"onChangeCurrentPage(getItems)\">{{getItems}}</li>\r\n\r\n <li\r\n class=\"mrx-paginator__next\"\r\n [class.disabled]=\"currentPage >= getItems\"\r\n (click)=\"currentPage < getItems && onChangeCurrentPage(currentPage + 1)\">\r\n <div class=\"mrx-icon icon-chevron-right icon-font-24\"></div>\r\n </li>\r\n </ul>\r\n\r\n @if (withPageSize) {\r\n <mrx-select\r\n [ngModel]=\"pageSize\"\r\n [size]=\"'medium'\"\r\n [items]=\"pageSizes\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [popupPosition]=\"popupPosition\"\r\n [singleChange]=\"true\"\r\n (ngModelChange)=\"onChangePageSize($event)\"\r\n ></mrx-select>\r\n }\r\n\r\n <div *ngIf=\"isPaginatorText\" class=\"mrx-paginator__text\">\r\n \u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u044B {{paginatorText}} {{getFirstNumberCurrentPage}} - {{getLastNumberCurrentPage}} \u0438\u0437 {{total}}\r\n </div>\r\n</div>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-paginator{display:flex;align-items:center;list-style:none;padding-left:0;gap:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container{padding-left:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container .ng-value-container{min-width:36px;padding:0!important;min-height:auto}:host::ng-deep .mrx-paginator ul{display:flex;align-items:center;justify-content:center;list-style:none;padding:0;margin:0;gap:var(--spacing-1)}:host::ng-deep .mrx-paginator ul li{display:flex;align-items:center;justify-content:center;cursor:pointer}:host::ng-deep .mrx-paginator .mrx-paginator__item{padding-left:var(--spacing-3);padding-right:var(--spacing-3);min-width:32px;min-height:32px;border-radius:4px;font-weight:400;font-size:16px;line-height:24px;transition:.2s}:host::ng-deep .mrx-paginator .mrx-paginator__item.active{background-color:var(--brand-bg-primary-default);color:#fff}:host::ng-deep .mrx-paginator .mrx-paginator__item.dots,:host::ng-deep .mrx-paginator .mrx-paginator__item.disabled{cursor:default}:host::ng-deep .mrx-paginator .mrx-paginator__item:not(.dots,.active):hover{background-color:var(--brand-bg-tertiary-hover)}:host::ng-deep .mrx-paginator .mrx-paginator__previous,:host::ng-deep .mrx-paginator .mrx-paginator__next{min-width:24px;min-height:24px}:host::ng-deep .mrx-paginator .mrx-paginator__previous.disabled .mrx-icon,:host::ng-deep .mrx-paginator .mrx-paginator__next.disabled .mrx-icon{color:var(--neutral-icon-disabled)}:host::ng-deep .mrx-paginator__text{font-size:16px;line-height:24px;color:var(--neutral-text-primary)}.mrx-paginator.mrx-paginator.paginator-centered{justify-content:center}.mrx-paginator.mrx-paginator.paginator-left{justify-content:flex-start}.mrx-paginator.mrx-paginator.paginator-right{justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SelectComponent, selector: "mrx-select", inputs: ["fields", "items", "multiple", "isLoading", "searchable", "clearable", "closable", "size", "bindValue", "bindLabel", "bindIcon", "emptyText", "placeholder", "searchPlaceholder", "multiCollapseCount", "isExtraOption", "extraOptionPlaceholder", "use", "sortIcon", "sortPlaceholder", "isFullWidthDropdown", "withoutSelected", "hideSelected", "addOption", "customSearchFn", "disabled", "readonly", "invalid", "invalidMessage", "checkInvalid", "popupPosition", "singleChange", "scrollContainer", "scrollStrategy"], outputs: ["changed", "modelChange"] }] });
4633
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PaginatorComponent, selector: "mrx-paginator", inputs: { pageSizes: "pageSizes", currentPage: "currentPage", pageSize: "pageSize", total: "total", customClasses: "customClasses", isEmptyPaginator: "isEmptyPaginator", isPaginatorText: "isPaginatorText", paginatorText: "paginatorText", dropdownPosition: "dropdownPosition", popupPosition: "popupPosition", setPosition: ["position", "setPosition"], setWithPageSize: ["withPageSize", "setWithPageSize"] }, outputs: { dataStateChanged: "dataStateChanged" }, ngImport: i0, template: "@if(isEmptyPaginator || total) {\r\n <div class=\"mrx-paginator\" [class]=\"getClasses\">\r\n <ul class=\"mrx-paginator__list\">\r\n <li\r\n class=\"mrx-paginator__previous\"\r\n [class.disabled]=\"currentPage <= 1\"\r\n (click)=\"currentPage > 1 && onChangeCurrentPage(currentPage - 1)\">\r\n <div class=\"mrx-icon icon-chevron-left icon-font-24\"></div>\r\n </li>\r\n\r\n <!-- \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E 1 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0435\u0441\u043B\u0438 \u0432\u0441\u0435\u0433\u043E 0 \u0441\u0442\u0440\u0430\u043D\u0438\u0446 -->\r\n @if(getItems === 0) {\r\n <li class=\"mrx-paginator__item active\">1</li>\r\n }\r\n\r\n <!-- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E getViewItems -->\r\n @for(item of getViewItems; track item.index) {\r\n <li\r\n class=\"mrx-paginator__item\"\r\n (click)=\"!item.isEllipsis && onChangeCurrentPage(item.index)\"\r\n [class.active]=\"currentPage === item.index && !item.isEllipsis\"\r\n [class.dots]=\"item.isEllipsis\"\r\n >\r\n {{item.isEllipsis ? '...' : item.index}}\r\n </li>\r\n }\r\n\r\n <li\r\n class=\"mrx-paginator__next\"\r\n [class.disabled]=\"currentPage >= getItems || getItems === 0\"\r\n (click)=\"currentPage < getItems && onChangeCurrentPage(currentPage + 1)\">\r\n <div class=\"mrx-icon icon-chevron-right icon-font-24\"></div>\r\n </li>\r\n </ul>\r\n\r\n @if (withPageSize) {\r\n <mrx-select\r\n [ngModel]=\"pageSize\"\r\n [size]=\"'medium'\"\r\n [items]=\"pageSizes\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [popupPosition]=\"popupPosition\"\r\n [singleChange]=\"true\"\r\n (ngModelChange)=\"onChangePageSize($event)\"\r\n ></mrx-select>\r\n }\r\n\r\n @if(isPaginatorText) {\r\n <div class=\"mrx-paginator__text\">\r\n \u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u044B {{paginatorText}} {{getFirstNumberCurrentPage}} - {{getLastNumberCurrentPage}} \u0438\u0437 {{total}}\r\n </div>\r\n }\r\n </div>\r\n}", styles: [":host::ng-deep .mrx-paginator{display:flex;align-items:center;list-style:none;padding-left:0;gap:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container{padding-left:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container .ng-value-container{min-width:36px;padding:0!important;min-height:auto}:host::ng-deep .mrx-paginator ul{display:flex;align-items:center;justify-content:center;list-style:none;padding:0;margin:0;gap:var(--spacing-1)}:host::ng-deep .mrx-paginator ul li{display:flex;align-items:center;justify-content:center;cursor:pointer}:host::ng-deep .mrx-paginator .mrx-paginator__item{padding-left:var(--spacing-3);padding-right:var(--spacing-3);min-width:32px;min-height:32px;border-radius:4px;font-weight:400;font-size:16px;line-height:24px;transition:.2s}:host::ng-deep .mrx-paginator .mrx-paginator__item.active{background-color:var(--brand-bg-primary-default);color:#fff}:host::ng-deep .mrx-paginator .mrx-paginator__item.dots,:host::ng-deep .mrx-paginator .mrx-paginator__item.disabled{cursor:default}:host::ng-deep .mrx-paginator .mrx-paginator__item:not(.dots,.active):hover{background-color:var(--brand-bg-tertiary-hover)}:host::ng-deep .mrx-paginator .mrx-paginator__previous,:host::ng-deep .mrx-paginator .mrx-paginator__next{min-width:24px;min-height:24px}:host::ng-deep .mrx-paginator .mrx-paginator__previous.disabled .mrx-icon,:host::ng-deep .mrx-paginator .mrx-paginator__next.disabled .mrx-icon{color:var(--neutral-icon-disabled)}:host::ng-deep .mrx-paginator__text{font-size:16px;line-height:24px;color:var(--neutral-text-primary)}.mrx-paginator.mrx-paginator.paginator-centered{justify-content:center}.mrx-paginator.mrx-paginator.paginator-left{justify-content:flex-start}.mrx-paginator.mrx-paginator.paginator-right{justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SelectComponent, selector: "mrx-select", inputs: ["fields", "items", "multiple", "isLoading", "searchable", "clearable", "closable", "size", "bindValue", "bindLabel", "bindIcon", "emptyText", "placeholder", "searchPlaceholder", "multiCollapseCount", "isExtraOption", "extraOptionPlaceholder", "use", "sortIcon", "sortPlaceholder", "isFullWidthDropdown", "withoutSelected", "hideSelected", "addOption", "customSearchFn", "disabled", "readonly", "invalid", "invalidMessage", "checkInvalid", "popupPosition", "singleChange", "scrollContainer", "scrollStrategy"], outputs: ["changed", "modelChange"] }] });
4578
4634
  }
4579
4635
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, decorators: [{
4580
4636
  type: Component,
4581
- args: [{ selector: 'mrx-paginator', template: "<div class=\"mrx-paginator\" [class]=\"getClasses\" *ngIf=\"isEmptyPaginator || total\">\r\n <ul class=\"mrx-paginator__list\">\r\n <li\r\n class=\"mrx-paginator__previous\"\r\n [class.disabled]=\"currentPage <= 1\"\r\n (click)=\"currentPage > 1 && onChangeCurrentPage(currentPage - 1)\">\r\n <div class=\"mrx-icon icon-chevron-left icon-font-24\"></div>\r\n </li>\r\n\r\n <li *ngIf=\"getViewItems.length === 0\" class=\"mrx-paginator__item active\">1</li>\r\n\r\n <li class=\"mrx-paginator__item\" *ngIf=\"currentPage > 3 && getItems > 5\" (click)=\"onChangeCurrentPage(1)\">1</li>\r\n <li class=\"mrx-paginator__item dots\" *ngIf=\"currentPage > 3 && getItems > 5\">...</li>\r\n\r\n <li\r\n class=\"mrx-paginator__item\"\r\n *ngFor=\"let item of getViewItems; trackBy: trackByFn\"\r\n (click)=\"onChangeCurrentPage(item.index)\"\r\n [class.active]=\"currentPage === item.index\"\r\n >\r\n {{item.index}}\r\n </li>\r\n\r\n <li class=\"mrx-paginator__item dots\" *ngIf=\"currentPage < getItems - 2 && getItems > 5\">...</li>\r\n <li class=\"mrx-paginator__item\" *ngIf=\"currentPage < getItems - 2 && getItems > 5\"\r\n (click)=\"onChangeCurrentPage(getItems)\">{{getItems}}</li>\r\n\r\n <li\r\n class=\"mrx-paginator__next\"\r\n [class.disabled]=\"currentPage >= getItems\"\r\n (click)=\"currentPage < getItems && onChangeCurrentPage(currentPage + 1)\">\r\n <div class=\"mrx-icon icon-chevron-right icon-font-24\"></div>\r\n </li>\r\n </ul>\r\n\r\n @if (withPageSize) {\r\n <mrx-select\r\n [ngModel]=\"pageSize\"\r\n [size]=\"'medium'\"\r\n [items]=\"pageSizes\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [popupPosition]=\"popupPosition\"\r\n [singleChange]=\"true\"\r\n (ngModelChange)=\"onChangePageSize($event)\"\r\n ></mrx-select>\r\n }\r\n\r\n <div *ngIf=\"isPaginatorText\" class=\"mrx-paginator__text\">\r\n \u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u044B {{paginatorText}} {{getFirstNumberCurrentPage}} - {{getLastNumberCurrentPage}} \u0438\u0437 {{total}}\r\n </div>\r\n</div>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-paginator{display:flex;align-items:center;list-style:none;padding-left:0;gap:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container{padding-left:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container .ng-value-container{min-width:36px;padding:0!important;min-height:auto}:host::ng-deep .mrx-paginator ul{display:flex;align-items:center;justify-content:center;list-style:none;padding:0;margin:0;gap:var(--spacing-1)}:host::ng-deep .mrx-paginator ul li{display:flex;align-items:center;justify-content:center;cursor:pointer}:host::ng-deep .mrx-paginator .mrx-paginator__item{padding-left:var(--spacing-3);padding-right:var(--spacing-3);min-width:32px;min-height:32px;border-radius:4px;font-weight:400;font-size:16px;line-height:24px;transition:.2s}:host::ng-deep .mrx-paginator .mrx-paginator__item.active{background-color:var(--brand-bg-primary-default);color:#fff}:host::ng-deep .mrx-paginator .mrx-paginator__item.dots,:host::ng-deep .mrx-paginator .mrx-paginator__item.disabled{cursor:default}:host::ng-deep .mrx-paginator .mrx-paginator__item:not(.dots,.active):hover{background-color:var(--brand-bg-tertiary-hover)}:host::ng-deep .mrx-paginator .mrx-paginator__previous,:host::ng-deep .mrx-paginator .mrx-paginator__next{min-width:24px;min-height:24px}:host::ng-deep .mrx-paginator .mrx-paginator__previous.disabled .mrx-icon,:host::ng-deep .mrx-paginator .mrx-paginator__next.disabled .mrx-icon{color:var(--neutral-icon-disabled)}:host::ng-deep .mrx-paginator__text{font-size:16px;line-height:24px;color:var(--neutral-text-primary)}.mrx-paginator.mrx-paginator.paginator-centered{justify-content:center}.mrx-paginator.mrx-paginator.paginator-left{justify-content:flex-start}.mrx-paginator.mrx-paginator.paginator-right{justify-content:flex-end}\n"] }]
4637
+ args: [{ selector: 'mrx-paginator', template: "@if(isEmptyPaginator || total) {\r\n <div class=\"mrx-paginator\" [class]=\"getClasses\">\r\n <ul class=\"mrx-paginator__list\">\r\n <li\r\n class=\"mrx-paginator__previous\"\r\n [class.disabled]=\"currentPage <= 1\"\r\n (click)=\"currentPage > 1 && onChangeCurrentPage(currentPage - 1)\">\r\n <div class=\"mrx-icon icon-chevron-left icon-font-24\"></div>\r\n </li>\r\n\r\n <!-- \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E 1 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0435\u0441\u043B\u0438 \u0432\u0441\u0435\u0433\u043E 0 \u0441\u0442\u0440\u0430\u043D\u0438\u0446 -->\r\n @if(getItems === 0) {\r\n <li class=\"mrx-paginator__item active\">1</li>\r\n }\r\n\r\n <!-- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E getViewItems -->\r\n @for(item of getViewItems; track item.index) {\r\n <li\r\n class=\"mrx-paginator__item\"\r\n (click)=\"!item.isEllipsis && onChangeCurrentPage(item.index)\"\r\n [class.active]=\"currentPage === item.index && !item.isEllipsis\"\r\n [class.dots]=\"item.isEllipsis\"\r\n >\r\n {{item.isEllipsis ? '...' : item.index}}\r\n </li>\r\n }\r\n\r\n <li\r\n class=\"mrx-paginator__next\"\r\n [class.disabled]=\"currentPage >= getItems || getItems === 0\"\r\n (click)=\"currentPage < getItems && onChangeCurrentPage(currentPage + 1)\">\r\n <div class=\"mrx-icon icon-chevron-right icon-font-24\"></div>\r\n </li>\r\n </ul>\r\n\r\n @if (withPageSize) {\r\n <mrx-select\r\n [ngModel]=\"pageSize\"\r\n [size]=\"'medium'\"\r\n [items]=\"pageSizes\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [popupPosition]=\"popupPosition\"\r\n [singleChange]=\"true\"\r\n (ngModelChange)=\"onChangePageSize($event)\"\r\n ></mrx-select>\r\n }\r\n\r\n @if(isPaginatorText) {\r\n <div class=\"mrx-paginator__text\">\r\n \u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u044B {{paginatorText}} {{getFirstNumberCurrentPage}} - {{getLastNumberCurrentPage}} \u0438\u0437 {{total}}\r\n </div>\r\n }\r\n </div>\r\n}", styles: [":host::ng-deep .mrx-paginator{display:flex;align-items:center;list-style:none;padding-left:0;gap:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container{padding-left:var(--spacing-4)}:host::ng-deep .mrx-paginator .mrx-input-select .ng-select .ng-select-container .ng-value-container{min-width:36px;padding:0!important;min-height:auto}:host::ng-deep .mrx-paginator ul{display:flex;align-items:center;justify-content:center;list-style:none;padding:0;margin:0;gap:var(--spacing-1)}:host::ng-deep .mrx-paginator ul li{display:flex;align-items:center;justify-content:center;cursor:pointer}:host::ng-deep .mrx-paginator .mrx-paginator__item{padding-left:var(--spacing-3);padding-right:var(--spacing-3);min-width:32px;min-height:32px;border-radius:4px;font-weight:400;font-size:16px;line-height:24px;transition:.2s}:host::ng-deep .mrx-paginator .mrx-paginator__item.active{background-color:var(--brand-bg-primary-default);color:#fff}:host::ng-deep .mrx-paginator .mrx-paginator__item.dots,:host::ng-deep .mrx-paginator .mrx-paginator__item.disabled{cursor:default}:host::ng-deep .mrx-paginator .mrx-paginator__item:not(.dots,.active):hover{background-color:var(--brand-bg-tertiary-hover)}:host::ng-deep .mrx-paginator .mrx-paginator__previous,:host::ng-deep .mrx-paginator .mrx-paginator__next{min-width:24px;min-height:24px}:host::ng-deep .mrx-paginator .mrx-paginator__previous.disabled .mrx-icon,:host::ng-deep .mrx-paginator .mrx-paginator__next.disabled .mrx-icon{color:var(--neutral-icon-disabled)}:host::ng-deep .mrx-paginator__text{font-size:16px;line-height:24px;color:var(--neutral-text-primary)}.mrx-paginator.mrx-paginator.paginator-centered{justify-content:center}.mrx-paginator.mrx-paginator.paginator-left{justify-content:flex-start}.mrx-paginator.mrx-paginator.paginator-right{justify-content:flex-end}\n"] }]
4582
4638
  }], propDecorators: { pageSizes: [{
4583
4639
  type: Input
4584
4640
  }], currentPage: [{