myrta-ui 17.1.75 → 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;
@@ -72,32 +71,66 @@ export class PaginatorComponent {
72
71
  // }
73
72
  // });
74
73
  // }
75
- // Упрощенная версия getViewItems()
76
74
  get getViewItems() {
77
75
  const totalPages = this.getItems;
76
+ // Если нет страниц или только одна
77
+ if (totalPages <= 1) {
78
+ return [];
79
+ }
78
80
  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);
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
+ });
83
94
  }
84
- // Добавляем первую страницу
85
- if (current - delta > 1) {
86
- range.unshift('...');
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);
87
101
  }
88
- range.unshift(1);
89
- // Добавляем последнюю страницу
90
- if (current + delta < totalPages - 1) {
91
- range.push('...');
102
+ // Если текущая страница близко к концу
103
+ if (current >= totalPages - 2) {
104
+ start = Math.max(totalPages - 3, 2);
92
105
  }
93
- if (totalPages > 1) {
94
- range.push(totalPages);
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
+ });
113
+ }
95
114
  }
96
- return range.map((item, index) => ({
97
- index: typeof item === 'number' ? item : index,
98
- active: item === current,
99
- isEllipsis: item === '...'
100
- }));
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
127
+ });
128
+ return result;
129
+ }
130
+ // И trackByFn:
131
+ trackByFn(index, item) {
132
+ // Для многоточий используем уникальные значения, для страниц - их индекс
133
+ return item.isEllipsis ? `ellipsis-${index}` : item.index;
101
134
  }
102
135
  get getFirstNumberCurrentPage() {
103
136
  if (this.total === 0) {
@@ -131,15 +164,12 @@ export class PaginatorComponent {
131
164
  pageSize: value
132
165
  });
133
166
  }
134
- trackByFn(index, item) {
135
- return item.id;
136
- }
137
167
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
138
- 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"] }] });
139
169
  }
140
170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, decorators: [{
141
171
  type: Component,
142
- 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"] }]
143
173
  }], propDecorators: { pageSizes: [{
144
174
  type: Input
145
175
  }], currentPage: [{
@@ -169,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
169
199
  }], dataStateChanged: [{
170
200
  type: Output
171
201
  }] } });
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==
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
@@ -4536,32 +4536,66 @@ class PaginatorComponent {
4536
4536
  // }
4537
4537
  // });
4538
4538
  // }
4539
- // Упрощенная версия getViewItems()
4540
4539
  get getViewItems() {
4541
4540
  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);
4541
+ // Если нет страниц или только одна
4542
+ if (totalPages <= 1) {
4543
+ return [];
4547
4544
  }
4548
- // Добавляем первую страницу
4549
- if (current - delta > 1) {
4550
- range.unshift('...');
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
+ });
4551
4559
  }
4552
- range.unshift(1);
4553
- // Добавляем последнюю страницу
4554
- if (current + delta < totalPages - 1) {
4555
- range.push('...');
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
+ });
4578
+ }
4556
4579
  }
4557
- if (totalPages > 1) {
4558
- range.push(totalPages);
4580
+ // Показываем многоточие перед последней страницей если нужно
4581
+ if (current < totalPages - 2) {
4582
+ result.push({
4583
+ index: -2,
4584
+ active: false,
4585
+ isEllipsis: true
4586
+ });
4559
4587
  }
4560
- return range.map((item, index) => ({
4561
- index: typeof item === 'number' ? item : index,
4562
- active: item === current,
4563
- isEllipsis: item === '...'
4564
- }));
4588
+ // Добавляем последнюю страницу
4589
+ result.push({
4590
+ index: totalPages,
4591
+ active: current === totalPages
4592
+ });
4593
+ return result;
4594
+ }
4595
+ // И trackByFn:
4596
+ trackByFn(index, item) {
4597
+ // Для многоточий используем уникальные значения, для страниц - их индекс
4598
+ return item.isEllipsis ? `ellipsis-${index}` : item.index;
4565
4599
  }
4566
4600
  get getFirstNumberCurrentPage() {
4567
4601
  if (this.total === 0) {
@@ -4595,15 +4629,12 @@ class PaginatorComponent {
4595
4629
  pageSize: value
4596
4630
  });
4597
4631
  }
4598
- trackByFn(index, item) {
4599
- return item.id;
4600
- }
4601
4632
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4602
- 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"] }] });
4603
4634
  }
4604
4635
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, decorators: [{
4605
4636
  type: Component,
4606
- 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"] }]
4607
4638
  }], propDecorators: { pageSizes: [{
4608
4639
  type: Input
4609
4640
  }], currentPage: [{