mapa-library-ui 0.0.35 → 0.0.37

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.
Files changed (43) hide show
  1. package/esm2020/lib/core/directives/custom-paginator-legacy.directive.mjs +227 -0
  2. package/esm2020/public-api.mjs +2 -2
  3. package/esm2020/src/lib/components/capability/lib/components/tag/src/tag.component.mjs +3 -3
  4. package/esm2020/src/lib/components/dropdown/lib/components/dropdown/src/dropdown.component.mjs +4 -5
  5. package/esm2020/src/lib/components/table/lib/components/table/src/table.component.mjs +3 -3
  6. package/esm2020/src/lib/components/table/lib/components/table/src/table.module.mjs +1 -4
  7. package/esm2020/src/lib/components/table/lib/core/directives/custom-paginator-legacy.directive.mjs +4 -4
  8. package/esm2020/src/lib/components/table/table.mjs +1 -2
  9. package/esm2020/src/lib/components/tag/src/tag.component.mjs +3 -3
  10. package/fesm2015/mapa-library-ui-src-lib-components-capability.mjs +2 -2
  11. package/fesm2015/mapa-library-ui-src-lib-components-capability.mjs.map +1 -1
  12. package/fesm2015/mapa-library-ui-src-lib-components-dropdown.mjs +3 -4
  13. package/fesm2015/mapa-library-ui-src-lib-components-dropdown.mjs.map +1 -1
  14. package/fesm2015/mapa-library-ui-src-lib-components-table.mjs +7 -191
  15. package/fesm2015/mapa-library-ui-src-lib-components-table.mjs.map +1 -1
  16. package/fesm2015/mapa-library-ui-src-lib-components-tag.mjs +2 -2
  17. package/fesm2015/mapa-library-ui-src-lib-components-tag.mjs.map +1 -1
  18. package/fesm2015/mapa-library-ui.mjs +211 -166
  19. package/fesm2015/mapa-library-ui.mjs.map +1 -1
  20. package/fesm2020/mapa-library-ui-src-lib-components-capability.mjs +2 -2
  21. package/fesm2020/mapa-library-ui-src-lib-components-capability.mjs.map +1 -1
  22. package/fesm2020/mapa-library-ui-src-lib-components-dropdown.mjs +3 -4
  23. package/fesm2020/mapa-library-ui-src-lib-components-dropdown.mjs.map +1 -1
  24. package/fesm2020/mapa-library-ui-src-lib-components-table.mjs +7 -190
  25. package/fesm2020/mapa-library-ui-src-lib-components-table.mjs.map +1 -1
  26. package/fesm2020/mapa-library-ui-src-lib-components-tag.mjs +2 -2
  27. package/fesm2020/mapa-library-ui-src-lib-components-tag.mjs.map +1 -1
  28. package/fesm2020/mapa-library-ui.mjs +208 -165
  29. package/fesm2020/mapa-library-ui.mjs.map +1 -1
  30. package/lib/core/directives/custom-paginator-legacy.directive.d.ts +27 -0
  31. package/mapa-library-ui-0.0.37.tgz +0 -0
  32. package/package.json +1 -1
  33. package/public-api.d.ts +1 -1
  34. package/src/lib/components/capability/lib/components/tag/src/tag.component.d.ts +1 -1
  35. package/src/lib/components/table/lib/components/table/src/table.module.d.ts +3 -4
  36. package/src/lib/components/table/lib/core/directives/custom-paginator-legacy.directive.d.ts +1 -1
  37. package/src/lib/components/table/table.d.ts +0 -1
  38. package/src/lib/components/tag/src/tag.component.d.ts +1 -1
  39. package/esm2020/lib/core/directives/custom-paginator.directive.mjs +0 -184
  40. package/esm2020/src/lib/components/table/lib/core/directives/custom-paginator.directive.mjs +0 -184
  41. package/lib/core/directives/custom-paginator.directive.d.ts +0 -33
  42. package/mapa-library-ui-0.0.35.tgz +0 -0
  43. package/src/lib/components/table/lib/core/directives/custom-paginator.directive.d.ts +0 -33
@@ -1,3 +1,2 @@
1
- export * from './lib/core/directives/custom-paginator.directive';
2
1
  export * from './lib/core/directives/custom-paginator-legacy.directive';
3
2
  export * from './lib/components/table/public-api';
@@ -1,6 +1,6 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class TagComponent {
3
- color: 'highlight' | null | undefined;
3
+ color: 'highlight' | 'selected' | null | undefined;
4
4
  size?: 'small' | null | undefined;
5
5
  static ɵfac: i0.ɵɵFactoryDeclaration<TagComponent, never>;
6
6
  static ɵcmp: i0.ɵɵComponentDeclaration<TagComponent, "mapa-tag", never, { "color": "color"; "size": "size"; }, {}, never, ["*"], false, never>;
@@ -1,184 +0,0 @@
1
- import { Directive, EventEmitter, Input, Output, } from "@angular/core";
2
- import { map } from "rxjs/internal/operators/map";
3
- import { startWith } from "rxjs/internal/operators/startWith";
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/paginator";
6
- export class BubblePaginationDirective {
7
- constructor(matPag, elementRef, ren) {
8
- this.matPag = matPag;
9
- this.elementRef = elementRef;
10
- this.ren = ren;
11
- this.pageIndexChangeEmitter = new EventEmitter();
12
- this.showFirstButton = true;
13
- this.showLastButton = true;
14
- this.renderButtonsNumber = 2;
15
- this.appCustomLength = 0;
16
- this.hideDefaultArrows = false;
17
- this.buttonsRef = [];
18
- }
19
- ngAfterViewInit() {
20
- this.styleDefaultPagination();
21
- this.createBubbleDivRef();
22
- this.renderButtons();
23
- }
24
- ngOnChanges(changes) {
25
- if (!changes?.["appCustomLength"]?.firstChange) {
26
- this.removeButtons();
27
- this.switchPage(0);
28
- this.renderButtons();
29
- }
30
- }
31
- renderButtons() {
32
- this.buildButtons();
33
- this.matPag.page
34
- .pipe(map((e) => [e.previousPageIndex ?? 0, e.pageIndex]), startWith([0, 0]))
35
- .subscribe(([prev, curr]) => {
36
- this.changeActiveButtonStyles(prev, curr);
37
- this.updateButtonsOnPageEvent();
38
- });
39
- }
40
- changeActiveButtonStyles(previousIndex, newIndex) {
41
- const previouslyActive = this.buttonsRef[previousIndex];
42
- const currentActive = this.buttonsRef[newIndex];
43
- try {
44
- this.ren.removeClass(previouslyActive, "g-bubble__active");
45
- this.ren.addClass(currentActive, "g-bubble__active");
46
- }
47
- catch { }
48
- this.buttonsRef.forEach((button) => this.ren.setStyle(button, "display", "none"));
49
- const renderElements = this.renderButtonsNumber;
50
- const endDots = newIndex < this.buttonsRef.length - renderElements - 1;
51
- const startDots = newIndex - renderElements > 0;
52
- const firstButton = this.buttonsRef[0];
53
- const lastButton = this.buttonsRef[this.buttonsRef.length - 1];
54
- try {
55
- if (this.showLastButton) {
56
- this.ren.setStyle(this.dotsEndRef, "display", endDots ? "block" : "none");
57
- this.ren.setStyle(lastButton, "display", endDots ? "flex" : "none");
58
- }
59
- }
60
- catch { }
61
- try {
62
- if (this.showFirstButton) {
63
- this.ren.setStyle(this.dotsStartRef, "display", startDots ? "block" : "none");
64
- this.ren.setStyle(firstButton, "display", startDots ? "flex" : "none");
65
- }
66
- }
67
- catch { }
68
- const startingIndex = startDots ? newIndex - renderElements : 0;
69
- const endingIndex = endDots
70
- ? newIndex + renderElements
71
- : this.buttonsRef.length - 1;
72
- for (let i = startingIndex; i <= endingIndex; i++) {
73
- const button = this.buttonsRef[i];
74
- this.ren.setStyle(button, "display", "flex");
75
- }
76
- }
77
- styleDefaultPagination() {
78
- const nativeElement = this.elementRef.nativeElement;
79
- const itemsPerPage = nativeElement.querySelector(".mat-mdc-paginator-page-size");
80
- const howManyDisplayedEl = nativeElement.querySelector(".mat-mdc-paginator-range-label");
81
- const previousButton = nativeElement.querySelector("button.mat-mdc-paginator-navigation-previous");
82
- const nextButtonDefault = nativeElement.querySelector("button.mat-mdc-paginator-navigation-next");
83
- if (this.hideDefaultArrows) {
84
- this.ren.setStyle(previousButton, "display", "none");
85
- this.ren.setStyle(nextButtonDefault, "display", "none");
86
- }
87
- }
88
- createBubbleDivRef() {
89
- const actionContainer = this.elementRef.nativeElement.querySelector("div.mat-mdc-paginator-range-actions");
90
- const nextButtonDefault = this.elementRef.nativeElement.querySelector("button.mat-mdc-paginator-navigation-next");
91
- this.bubbleContainerRef = this.ren.createElement("div");
92
- this.ren.addClass(this.bubbleContainerRef, "g-bubble-container");
93
- this.ren.insertBefore(actionContainer, this.bubbleContainerRef, nextButtonDefault);
94
- }
95
- buildButtons() {
96
- const neededButtons = Math.ceil(this.appCustomLength / this.matPag.pageSize);
97
- if (neededButtons === 1) {
98
- this.ren.setStyle(this.elementRef.nativeElement, "display", "none");
99
- return;
100
- }
101
- this.buttonsRef = [this.createButton(0)];
102
- this.dotsStartRef = this.createDotsElement();
103
- for (let index = 1; index < neededButtons - 1; index++) {
104
- this.buttonsRef = [...this.buttonsRef, this.createButton(index)];
105
- }
106
- this.dotsEndRef = this.createDotsElement();
107
- this.buttonsRef = [
108
- ...this.buttonsRef,
109
- this.createButton(neededButtons - 1),
110
- ];
111
- }
112
- removeButtons() {
113
- this.bubbleContainerRef.innerHTML = '';
114
- this.buttonsRef.forEach((button) => {
115
- this.ren.removeChild(this.bubbleContainerRef, button);
116
- });
117
- this.buttonsRef = [];
118
- this.buttonsRef.length = 0;
119
- }
120
- createButton(i) {
121
- const bubbleButton = this.ren.createElement("div");
122
- const text = this.ren.createText(String(i + 1));
123
- this.ren.addClass(bubbleButton, "g-bubble");
124
- this.ren.setStyle(bubbleButton, "margin-right", "8px");
125
- this.ren.appendChild(bubbleButton, text);
126
- this.ren.listen(bubbleButton, "click", () => {
127
- this.switchPage(i);
128
- });
129
- this.ren.appendChild(this.bubbleContainerRef, bubbleButton);
130
- this.ren.setStyle(bubbleButton, "display", "none");
131
- return bubbleButton;
132
- }
133
- createDotsElement() {
134
- const dotsEl = this.ren.createElement("span");
135
- const dotsText = this.ren.createText(".....");
136
- this.ren.setStyle(dotsEl, "font-size", "18px");
137
- this.ren.setStyle(dotsEl, "margin-right", "8px");
138
- this.ren.setStyle(dotsEl, "padding-top", "6px");
139
- this.ren.setStyle(dotsEl, "color", "#919191");
140
- this.ren.appendChild(dotsEl, dotsText);
141
- this.ren.appendChild(this.bubbleContainerRef, dotsEl);
142
- this.ren.setStyle(dotsEl, "display", "none");
143
- return dotsEl;
144
- }
145
- switchPage(i) {
146
- const previousPageIndex = this.matPag.pageIndex;
147
- this.matPag.pageIndex = i;
148
- try {
149
- this.matPag["_emitPageEvent"](previousPageIndex);
150
- }
151
- catch { }
152
- this.pageIndexChangeEmitter.emit(i);
153
- }
154
- updateButtonsOnPageEvent() {
155
- const neededButtons = Math.ceil(this.appCustomLength / this.matPag.pageSize);
156
- if (neededButtons === this.buttonsRef.length) {
157
- return;
158
- }
159
- this.removeButtons();
160
- this.buildButtons();
161
- }
162
- }
163
- BubblePaginationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BubblePaginationDirective, deps: [{ token: i1.MatPaginator }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
164
- BubblePaginationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: BubblePaginationDirective, isStandalone: true, selector: "[appBubblePagination]", inputs: { showFirstButton: "showFirstButton", showLastButton: "showLastButton", renderButtonsNumber: "renderButtonsNumber", appCustomLength: "appCustomLength", hideDefaultArrows: "hideDefaultArrows" }, outputs: { pageIndexChangeEmitter: "pageIndexChangeEmitter" }, usesOnChanges: true, ngImport: i0 });
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BubblePaginationDirective, decorators: [{
166
- type: Directive,
167
- args: [{
168
- selector: "[appBubblePagination]",
169
- standalone: true,
170
- }]
171
- }], ctorParameters: function () { return [{ type: i1.MatPaginator }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { pageIndexChangeEmitter: [{
172
- type: Output
173
- }], showFirstButton: [{
174
- type: Input
175
- }], showLastButton: [{
176
- type: Input
177
- }], renderButtonsNumber: [{
178
- type: Input
179
- }], appCustomLength: [{
180
- type: Input
181
- }], hideDefaultArrows: [{
182
- type: Input
183
- }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBhZ2luYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBhLWxpYnJhcnktdWkvc3JjL2xpYi9jb3JlL2RpcmVjdGl2ZXMvY3VzdG9tLXBhZ2luYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7QUFNOUQsTUFBTSxPQUFPLHlCQUF5QjtJQVlwQyxZQUNtQixNQUFvQixFQUM3QixVQUFzQixFQUN0QixHQUFjO1FBRkwsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQVc7UUFkZCwyQkFBc0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzRSxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2QixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0Qix3QkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDeEIsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBSTNCLGVBQVUsR0FBa0IsRUFBRSxDQUFDO0lBTXBDLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsV0FBVyxFQUFFO1lBQzlDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7YUFDYixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ25ELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNsQjthQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxhQUFxQixFQUFFLFFBQWdCO1FBQ3RFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhELElBQUk7WUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3REO1FBQUMsTUFBTSxHQUFFO1FBRVYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUM3QyxDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLFFBQVEsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBRWhELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUvRCxJQUFJO1lBQ0YsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JFO1NBQ0Y7UUFBQyxNQUFNLEdBQUU7UUFFVixJQUFJO1lBQ0YsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FDZixJQUFJLENBQUMsWUFBWSxFQUNqQixTQUFTLEVBQ1QsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDN0IsQ0FBQztnQkFDRixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN4RTtTQUNGO1FBQUMsTUFBTSxHQUFFO1FBRVYsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxXQUFXLEdBQUcsT0FBTztZQUN6QixDQUFDLENBQUMsUUFBUSxHQUFHLGNBQWM7WUFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUUvQixLQUFLLElBQUksQ0FBQyxHQUFHLGFBQWEsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDcEQsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FDOUMsOEJBQThCLENBQy9CLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQ3BELGdDQUFnQyxDQUNqQyxDQUFDO1FBQ0YsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FDaEQsOENBQThDLENBQy9DLENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQ25ELDBDQUEwQyxDQUMzQyxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekQ7SUFDSCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDakUscUNBQXFDLENBQ3RDLENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDbkUsMENBQTBDLENBQzNDLENBQUM7UUFFRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFnQixDQUFDO1FBQ3ZFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUNuQixlQUFlLEVBQ2YsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixpQkFBaUIsQ0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQzVDLENBQUM7UUFFRixJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3BFLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUU3QyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNsRTtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFM0MsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixHQUFHLElBQUksQ0FBQyxVQUFVO1lBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztTQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFlBQVksQ0FBQyxDQUFTO1FBQzVCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFN0MsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxDQUFTO1FBQzFCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUk7WUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNsRDtRQUFDLE1BQU0sR0FBRTtRQUVWLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUM1QyxDQUFDO1FBQ0YsSUFBSSxhQUFhLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDNUMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDOzt1SEE5TlUseUJBQXlCOzJHQUF6Qix5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7b0pBRVcsc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9pbnRlcm5hbC9vcGVyYXRvcnMvbWFwXCI7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tIFwicnhqcy9pbnRlcm5hbC9vcGVyYXRvcnMvc3RhcnRXaXRoXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbYXBwQnViYmxlUGFnaW5hdGlvbl1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQnViYmxlUGFnaW5hdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBPdXRwdXQoKSBwYWdlSW5kZXhDaGFuZ2VFbWl0dGVyOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBASW5wdXQoKSBzaG93Rmlyc3RCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93TGFzdEJ1dHRvbiA9IHRydWU7XG4gIEBJbnB1dCgpIHJlbmRlckJ1dHRvbnNOdW1iZXIgPSAyO1xuICBASW5wdXQoKSBhcHBDdXN0b21MZW5ndGg6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGhpZGVEZWZhdWx0QXJyb3dzID0gZmFsc2U7XG4gIHByaXZhdGUgZG90c0VuZFJlZiE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGRvdHNTdGFydFJlZiE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGJ1YmJsZUNvbnRhaW5lclJlZiE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGJ1dHRvbnNSZWY6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdFBhZzogTWF0UGFnaW5hdG9yLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbjogUmVuZGVyZXIyXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdHlsZURlZmF1bHRQYWdpbmF0aW9uKCk7XG4gICAgdGhpcy5jcmVhdGVCdWJibGVEaXZSZWYoKTtcbiAgICB0aGlzLnJlbmRlckJ1dHRvbnMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZXM/LltcImFwcEN1c3RvbUxlbmd0aFwiXT8uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMucmVtb3ZlQnV0dG9ucygpO1xuICAgICAgdGhpcy5zd2l0Y2hQYWdlKDApO1xuICAgICAgdGhpcy5yZW5kZXJCdXR0b25zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJCdXR0b25zKCk6IHZvaWQge1xuICAgIHRoaXMuYnVpbGRCdXR0b25zKCk7XG5cbiAgICB0aGlzLm1hdFBhZy5wYWdlXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChlKSA9PiBbZS5wcmV2aW91c1BhZ2VJbmRleCA/PyAwLCBlLnBhZ2VJbmRleF0pLFxuICAgICAgICBzdGFydFdpdGgoWzAsIDBdKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3ByZXYsIGN1cnJdKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlQWN0aXZlQnV0dG9uU3R5bGVzKHByZXYsIGN1cnIpO1xuICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvbnNPblBhZ2VFdmVudCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUFjdGl2ZUJ1dHRvblN0eWxlcyhwcmV2aW91c0luZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBwcmV2aW91c2x5QWN0aXZlID0gdGhpcy5idXR0b25zUmVmW3ByZXZpb3VzSW5kZXhdO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmUgPSB0aGlzLmJ1dHRvbnNSZWZbbmV3SW5kZXhdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucmVuLnJlbW92ZUNsYXNzKHByZXZpb3VzbHlBY3RpdmUsIFwiZy1idWJibGVfX2FjdGl2ZVwiKTtcbiAgICAgIHRoaXMucmVuLmFkZENsYXNzKGN1cnJlbnRBY3RpdmUsIFwiZy1idWJibGVfX2FjdGl2ZVwiKTtcbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0aGlzLmJ1dHRvbnNSZWYuZm9yRWFjaCgoYnV0dG9uKSA9PlxuICAgICAgdGhpcy5yZW4uc2V0U3R5bGUoYnV0dG9uLCBcImRpc3BsYXlcIiwgXCJub25lXCIpXG4gICAgKTtcblxuICAgIGNvbnN0IHJlbmRlckVsZW1lbnRzID0gdGhpcy5yZW5kZXJCdXR0b25zTnVtYmVyO1xuICAgIGNvbnN0IGVuZERvdHMgPSBuZXdJbmRleCA8IHRoaXMuYnV0dG9uc1JlZi5sZW5ndGggLSByZW5kZXJFbGVtZW50cyAtIDE7XG4gICAgY29uc3Qgc3RhcnREb3RzID0gbmV3SW5kZXggLSByZW5kZXJFbGVtZW50cyA+IDA7XG5cbiAgICBjb25zdCBmaXJzdEJ1dHRvbiA9IHRoaXMuYnV0dG9uc1JlZlswXTtcbiAgICBjb25zdCBsYXN0QnV0dG9uID0gdGhpcy5idXR0b25zUmVmW3RoaXMuYnV0dG9uc1JlZi5sZW5ndGggLSAxXTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5zaG93TGFzdEJ1dHRvbikge1xuICAgICAgICB0aGlzLnJlbi5zZXRTdHlsZSh0aGlzLmRvdHNFbmRSZWYsIFwiZGlzcGxheVwiLCBlbmREb3RzID8gXCJibG9ja1wiIDogXCJub25lXCIpO1xuICAgICAgICB0aGlzLnJlbi5zZXRTdHlsZShsYXN0QnV0dG9uLCBcImRpc3BsYXlcIiwgZW5kRG90cyA/IFwiZmxleFwiIDogXCJub25lXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge31cblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5zaG93Rmlyc3RCdXR0b24pIHtcbiAgICAgICAgdGhpcy5yZW4uc2V0U3R5bGUoXG4gICAgICAgICAgdGhpcy5kb3RzU3RhcnRSZWYsXG4gICAgICAgICAgXCJkaXNwbGF5XCIsXG4gICAgICAgICAgc3RhcnREb3RzID8gXCJibG9ja1wiIDogXCJub25lXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZW4uc2V0U3R5bGUoZmlyc3RCdXR0b24sIFwiZGlzcGxheVwiLCBzdGFydERvdHMgPyBcImZsZXhcIiA6IFwibm9uZVwiKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG5cbiAgICBjb25zdCBzdGFydGluZ0luZGV4ID0gc3RhcnREb3RzID8gbmV3SW5kZXggLSByZW5kZXJFbGVtZW50cyA6IDA7XG4gICAgY29uc3QgZW5kaW5nSW5kZXggPSBlbmREb3RzXG4gICAgICA/IG5ld0luZGV4ICsgcmVuZGVyRWxlbWVudHNcbiAgICAgIDogdGhpcy5idXR0b25zUmVmLmxlbmd0aCAtIDE7XG5cbiAgICBmb3IgKGxldCBpID0gc3RhcnRpbmdJbmRleDsgaSA8PSBlbmRpbmdJbmRleDsgaSsrKSB7XG4gICAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvbnNSZWZbaV07XG4gICAgICB0aGlzLnJlbi5zZXRTdHlsZShidXR0b24sIFwiZGlzcGxheVwiLCBcImZsZXhcIik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdHlsZURlZmF1bHRQYWdpbmF0aW9uKCkge1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBpdGVtc1BlclBhZ2UgPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBcIi5tYXQtbWRjLXBhZ2luYXRvci1wYWdlLXNpemVcIlxuICAgICk7XG4gICAgY29uc3QgaG93TWFueURpc3BsYXllZEVsID0gbmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgXCIubWF0LW1kYy1wYWdpbmF0b3ItcmFuZ2UtbGFiZWxcIlxuICAgICk7XG4gICAgY29uc3QgcHJldmlvdXNCdXR0b24gPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBcImJ1dHRvbi5tYXQtbWRjLXBhZ2luYXRvci1uYXZpZ2F0aW9uLXByZXZpb3VzXCJcbiAgICApO1xuICAgIGNvbnN0IG5leHRCdXR0b25EZWZhdWx0ID0gbmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgXCJidXR0b24ubWF0LW1kYy1wYWdpbmF0b3ItbmF2aWdhdGlvbi1uZXh0XCJcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuaGlkZURlZmF1bHRBcnJvd3MpIHtcbiAgICAgIHRoaXMucmVuLnNldFN0eWxlKHByZXZpb3VzQnV0dG9uLCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICAgICAgdGhpcy5yZW4uc2V0U3R5bGUobmV4dEJ1dHRvbkRlZmF1bHQsIFwiZGlzcGxheVwiLCBcIm5vbmVcIik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCdWJibGVEaXZSZWYoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIFwiZGl2Lm1hdC1tZGMtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnNcIlxuICAgICk7XG4gICAgY29uc3QgbmV4dEJ1dHRvbkRlZmF1bHQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgXCJidXR0b24ubWF0LW1kYy1wYWdpbmF0b3ItbmF2aWdhdGlvbi1uZXh0XCJcbiAgICApO1xuXG4gICAgdGhpcy5idWJibGVDb250YWluZXJSZWYgPSB0aGlzLnJlbi5jcmVhdGVFbGVtZW50KFwiZGl2XCIpIGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMucmVuLmFkZENsYXNzKHRoaXMuYnViYmxlQ29udGFpbmVyUmVmLCBcImctYnViYmxlLWNvbnRhaW5lclwiKTtcblxuICAgIHRoaXMucmVuLmluc2VydEJlZm9yZShcbiAgICAgIGFjdGlvbkNvbnRhaW5lcixcbiAgICAgIHRoaXMuYnViYmxlQ29udGFpbmVyUmVmLFxuICAgICAgbmV4dEJ1dHRvbkRlZmF1bHRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEJ1dHRvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgbmVlZGVkQnV0dG9ucyA9IE1hdGguY2VpbChcbiAgICAgIHRoaXMuYXBwQ3VzdG9tTGVuZ3RoIC8gdGhpcy5tYXRQYWcucGFnZVNpemVcbiAgICApO1xuXG4gICAgaWYgKG5lZWRlZEJ1dHRvbnMgPT09IDEpIHtcbiAgICAgIHRoaXMucmVuLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnV0dG9uc1JlZiA9IFt0aGlzLmNyZWF0ZUJ1dHRvbigwKV07XG4gICAgdGhpcy5kb3RzU3RhcnRSZWYgPSB0aGlzLmNyZWF0ZURvdHNFbGVtZW50KCk7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgbmVlZGVkQnV0dG9ucyAtIDE7IGluZGV4KyspIHtcbiAgICAgIHRoaXMuYnV0dG9uc1JlZiA9IFsuLi50aGlzLmJ1dHRvbnNSZWYsIHRoaXMuY3JlYXRlQnV0dG9uKGluZGV4KV07XG4gICAgfVxuXG4gICAgdGhpcy5kb3RzRW5kUmVmID0gdGhpcy5jcmVhdGVEb3RzRWxlbWVudCgpO1xuXG4gICAgdGhpcy5idXR0b25zUmVmID0gW1xuICAgICAgLi4udGhpcy5idXR0b25zUmVmLFxuICAgICAgdGhpcy5jcmVhdGVCdXR0b24obmVlZGVkQnV0dG9ucyAtIDEpLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUJ1dHRvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5idWJibGVDb250YWluZXJSZWYuaW5uZXJIVE1MID0gJyc7XG4gICAgdGhpcy5idXR0b25zUmVmLmZvckVhY2goKGJ1dHRvbikgPT4ge1xuICAgICAgdGhpcy5yZW4ucmVtb3ZlQ2hpbGQodGhpcy5idWJibGVDb250YWluZXJSZWYsIGJ1dHRvbik7XG4gICAgfSk7XG4gICAgdGhpcy5idXR0b25zUmVmID0gW107XG4gICAgdGhpcy5idXR0b25zUmVmLmxlbmd0aCA9IDA7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJ1dHRvbihpOiBudW1iZXIpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYnViYmxlQnV0dG9uID0gdGhpcy5yZW4uY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5yZW4uY3JlYXRlVGV4dChTdHJpbmcoaSArIDEpKTtcblxuICAgIHRoaXMucmVuLmFkZENsYXNzKGJ1YmJsZUJ1dHRvbiwgXCJnLWJ1YmJsZVwiKTtcbiAgICB0aGlzLnJlbi5zZXRTdHlsZShidWJibGVCdXR0b24sIFwibWFyZ2luLXJpZ2h0XCIsIFwiOHB4XCIpO1xuICAgIHRoaXMucmVuLmFwcGVuZENoaWxkKGJ1YmJsZUJ1dHRvbiwgdGV4dCk7XG5cbiAgICB0aGlzLnJlbi5saXN0ZW4oYnViYmxlQnV0dG9uLCBcImNsaWNrXCIsICgpID0+IHtcbiAgICAgIHRoaXMuc3dpdGNoUGFnZShpKTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVuLmFwcGVuZENoaWxkKHRoaXMuYnViYmxlQ29udGFpbmVyUmVmLCBidWJibGVCdXR0b24pO1xuICAgIHRoaXMucmVuLnNldFN0eWxlKGJ1YmJsZUJ1dHRvbiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcblxuICAgIHJldHVybiBidWJibGVCdXR0b247XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURvdHNFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBkb3RzRWwgPSB0aGlzLnJlbi5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICBjb25zdCBkb3RzVGV4dCA9IHRoaXMucmVuLmNyZWF0ZVRleHQoXCIuLi4uLlwiKTtcblxuICAgIHRoaXMucmVuLnNldFN0eWxlKGRvdHNFbCwgXCJmb250LXNpemVcIiwgXCIxOHB4XCIpO1xuICAgIHRoaXMucmVuLnNldFN0eWxlKGRvdHNFbCwgXCJtYXJnaW4tcmlnaHRcIiwgXCI4cHhcIik7XG4gICAgdGhpcy5yZW4uc2V0U3R5bGUoZG90c0VsLCBcInBhZGRpbmctdG9wXCIsIFwiNnB4XCIpO1xuICAgIHRoaXMucmVuLnNldFN0eWxlKGRvdHNFbCwgXCJjb2xvclwiLCBcIiM5MTkxOTFcIik7XG5cbiAgICB0aGlzLnJlbi5hcHBlbmRDaGlsZChkb3RzRWwsIGRvdHNUZXh0KTtcbiAgICB0aGlzLnJlbi5hcHBlbmRDaGlsZCh0aGlzLmJ1YmJsZUNvbnRhaW5lclJlZiwgZG90c0VsKTtcbiAgICB0aGlzLnJlbi5zZXRTdHlsZShkb3RzRWwsIFwiZGlzcGxheVwiLCBcIm5vbmVcIik7XG5cbiAgICByZXR1cm4gZG90c0VsO1xuICB9XG5cbiAgcHJpdmF0ZSBzd2l0Y2hQYWdlKGk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHByZXZpb3VzUGFnZUluZGV4ID0gdGhpcy5tYXRQYWcucGFnZUluZGV4O1xuICAgIHRoaXMubWF0UGFnLnBhZ2VJbmRleCA9IGk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubWF0UGFnW1wiX2VtaXRQYWdlRXZlbnRcIl0ocHJldmlvdXNQYWdlSW5kZXgpO1xuICAgIH0gY2F0Y2gge31cblxuICAgIHRoaXMucGFnZUluZGV4Q2hhbmdlRW1pdHRlci5lbWl0KGkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVCdXR0b25zT25QYWdlRXZlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgbmVlZGVkQnV0dG9ucyA9IE1hdGguY2VpbChcbiAgICAgIHRoaXMuYXBwQ3VzdG9tTGVuZ3RoIC8gdGhpcy5tYXRQYWcucGFnZVNpemVcbiAgICApO1xuICAgIGlmIChuZWVkZWRCdXR0b25zID09PSB0aGlzLmJ1dHRvbnNSZWYubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdmVCdXR0b25zKCk7XG4gICAgdGhpcy5idWlsZEJ1dHRvbnMoKTtcbiAgfVxufVxuIl19
@@ -1,184 +0,0 @@
1
- import { Directive, EventEmitter, Input, Output, } from "@angular/core";
2
- import { map } from "rxjs/internal/operators/map";
3
- import { startWith } from "rxjs/internal/operators/startWith";
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/paginator";
6
- export class BubblePaginationDirective {
7
- constructor(matPag, elementRef, ren) {
8
- this.matPag = matPag;
9
- this.elementRef = elementRef;
10
- this.ren = ren;
11
- this.pageIndexChangeEmitter = new EventEmitter();
12
- this.showFirstButton = true;
13
- this.showLastButton = true;
14
- this.renderButtonsNumber = 2;
15
- this.appCustomLength = 0;
16
- this.hideDefaultArrows = false;
17
- this.buttonsRef = [];
18
- }
19
- ngAfterViewInit() {
20
- this.styleDefaultPagination();
21
- this.createBubbleDivRef();
22
- this.renderButtons();
23
- }
24
- ngOnChanges(changes) {
25
- if (!changes?.["appCustomLength"]?.firstChange) {
26
- this.removeButtons();
27
- this.switchPage(0);
28
- this.renderButtons();
29
- }
30
- }
31
- renderButtons() {
32
- this.buildButtons();
33
- this.matPag.page
34
- .pipe(map((e) => [e.previousPageIndex ?? 0, e.pageIndex]), startWith([0, 0]))
35
- .subscribe(([prev, curr]) => {
36
- this.changeActiveButtonStyles(prev, curr);
37
- this.updateButtonsOnPageEvent();
38
- });
39
- }
40
- changeActiveButtonStyles(previousIndex, newIndex) {
41
- const previouslyActive = this.buttonsRef[previousIndex];
42
- const currentActive = this.buttonsRef[newIndex];
43
- try {
44
- this.ren.removeClass(previouslyActive, "g-bubble__active");
45
- this.ren.addClass(currentActive, "g-bubble__active");
46
- }
47
- catch { }
48
- this.buttonsRef.forEach((button) => this.ren.setStyle(button, "display", "none"));
49
- const renderElements = this.renderButtonsNumber;
50
- const endDots = newIndex < this.buttonsRef.length - renderElements - 1;
51
- const startDots = newIndex - renderElements > 0;
52
- const firstButton = this.buttonsRef[0];
53
- const lastButton = this.buttonsRef[this.buttonsRef.length - 1];
54
- try {
55
- if (this.showLastButton) {
56
- this.ren.setStyle(this.dotsEndRef, "display", endDots ? "block" : "none");
57
- this.ren.setStyle(lastButton, "display", endDots ? "flex" : "none");
58
- }
59
- }
60
- catch { }
61
- try {
62
- if (this.showFirstButton) {
63
- this.ren.setStyle(this.dotsStartRef, "display", startDots ? "block" : "none");
64
- this.ren.setStyle(firstButton, "display", startDots ? "flex" : "none");
65
- }
66
- }
67
- catch { }
68
- const startingIndex = startDots ? newIndex - renderElements : 0;
69
- const endingIndex = endDots
70
- ? newIndex + renderElements
71
- : this.buttonsRef.length - 1;
72
- for (let i = startingIndex; i <= endingIndex; i++) {
73
- const button = this.buttonsRef[i];
74
- this.ren.setStyle(button, "display", "flex");
75
- }
76
- }
77
- styleDefaultPagination() {
78
- const nativeElement = this.elementRef.nativeElement;
79
- const itemsPerPage = nativeElement.querySelector(".mat-mdc-paginator-page-size");
80
- const howManyDisplayedEl = nativeElement.querySelector(".mat-mdc-paginator-range-label");
81
- const previousButton = nativeElement.querySelector("button.mat-mdc-paginator-navigation-previous");
82
- const nextButtonDefault = nativeElement.querySelector("button.mat-mdc-paginator-navigation-next");
83
- if (this.hideDefaultArrows) {
84
- this.ren.setStyle(previousButton, "display", "none");
85
- this.ren.setStyle(nextButtonDefault, "display", "none");
86
- }
87
- }
88
- createBubbleDivRef() {
89
- const actionContainer = this.elementRef.nativeElement.querySelector("div.mat-mdc-paginator-range-actions");
90
- const nextButtonDefault = this.elementRef.nativeElement.querySelector("button.mat-mdc-paginator-navigation-next");
91
- this.bubbleContainerRef = this.ren.createElement("div");
92
- this.ren.addClass(this.bubbleContainerRef, "g-bubble-container");
93
- this.ren.insertBefore(actionContainer, this.bubbleContainerRef, nextButtonDefault);
94
- }
95
- buildButtons() {
96
- const neededButtons = Math.ceil(this.appCustomLength / this.matPag.pageSize);
97
- if (neededButtons === 1) {
98
- this.ren.setStyle(this.elementRef.nativeElement, "display", "none");
99
- return;
100
- }
101
- this.buttonsRef = [this.createButton(0)];
102
- this.dotsStartRef = this.createDotsElement();
103
- for (let index = 1; index < neededButtons - 1; index++) {
104
- this.buttonsRef = [...this.buttonsRef, this.createButton(index)];
105
- }
106
- this.dotsEndRef = this.createDotsElement();
107
- this.buttonsRef = [
108
- ...this.buttonsRef,
109
- this.createButton(neededButtons - 1),
110
- ];
111
- }
112
- removeButtons() {
113
- this.bubbleContainerRef.innerHTML = '';
114
- this.buttonsRef.forEach((button) => {
115
- this.ren.removeChild(this.bubbleContainerRef, button);
116
- });
117
- this.buttonsRef = [];
118
- this.buttonsRef.length = 0;
119
- }
120
- createButton(i) {
121
- const bubbleButton = this.ren.createElement("div");
122
- const text = this.ren.createText(String(i + 1));
123
- this.ren.addClass(bubbleButton, "g-bubble");
124
- this.ren.setStyle(bubbleButton, "margin-right", "8px");
125
- this.ren.appendChild(bubbleButton, text);
126
- this.ren.listen(bubbleButton, "click", () => {
127
- this.switchPage(i);
128
- });
129
- this.ren.appendChild(this.bubbleContainerRef, bubbleButton);
130
- this.ren.setStyle(bubbleButton, "display", "none");
131
- return bubbleButton;
132
- }
133
- createDotsElement() {
134
- const dotsEl = this.ren.createElement("span");
135
- const dotsText = this.ren.createText(".....");
136
- this.ren.setStyle(dotsEl, "font-size", "18px");
137
- this.ren.setStyle(dotsEl, "margin-right", "8px");
138
- this.ren.setStyle(dotsEl, "padding-top", "6px");
139
- this.ren.setStyle(dotsEl, "color", "#919191");
140
- this.ren.appendChild(dotsEl, dotsText);
141
- this.ren.appendChild(this.bubbleContainerRef, dotsEl);
142
- this.ren.setStyle(dotsEl, "display", "none");
143
- return dotsEl;
144
- }
145
- switchPage(i) {
146
- const previousPageIndex = this.matPag.pageIndex;
147
- this.matPag.pageIndex = i;
148
- try {
149
- this.matPag["_emitPageEvent"](previousPageIndex);
150
- }
151
- catch { }
152
- this.pageIndexChangeEmitter.emit(i);
153
- }
154
- updateButtonsOnPageEvent() {
155
- const neededButtons = Math.ceil(this.appCustomLength / this.matPag.pageSize);
156
- if (neededButtons === this.buttonsRef.length) {
157
- return;
158
- }
159
- this.removeButtons();
160
- this.buildButtons();
161
- }
162
- }
163
- BubblePaginationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BubblePaginationDirective, deps: [{ token: i1.MatPaginator }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
164
- BubblePaginationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: BubblePaginationDirective, isStandalone: true, selector: "[appBubblePagination]", inputs: { showFirstButton: "showFirstButton", showLastButton: "showLastButton", renderButtonsNumber: "renderButtonsNumber", appCustomLength: "appCustomLength", hideDefaultArrows: "hideDefaultArrows" }, outputs: { pageIndexChangeEmitter: "pageIndexChangeEmitter" }, usesOnChanges: true, ngImport: i0 });
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BubblePaginationDirective, decorators: [{
166
- type: Directive,
167
- args: [{
168
- selector: "[appBubblePagination]",
169
- standalone: true,
170
- }]
171
- }], ctorParameters: function () { return [{ type: i1.MatPaginator }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { pageIndexChangeEmitter: [{
172
- type: Output
173
- }], showFirstButton: [{
174
- type: Input
175
- }], showLastButton: [{
176
- type: Input
177
- }], renderButtonsNumber: [{
178
- type: Input
179
- }], appCustomLength: [{
180
- type: Input
181
- }], hideDefaultArrows: [{
182
- type: Input
183
- }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBhZ2luYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBhLWxpYnJhcnktdWkvc3JjL2xpYi9jb3JlL2RpcmVjdGl2ZXMvY3VzdG9tLXBhZ2luYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7QUFNOUQsTUFBTSxPQUFPLHlCQUF5QjtJQVlwQyxZQUNtQixNQUFvQixFQUM3QixVQUFzQixFQUN0QixHQUFjO1FBRkwsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQVc7UUFkZCwyQkFBc0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzRSxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2QixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0Qix3QkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDeEIsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBSTNCLGVBQVUsR0FBa0IsRUFBRSxDQUFDO0lBTXBDLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGlCQUFp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QkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9pbnRlcm5hbC9vcGVyYXRvcnMvbWFwXCI7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tIFwicnhqcy9pbnRlcm5hbC9vcGVyYXRvcnMvc3RhcnRXaXRoXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbYXBwQnViYmxlUGFnaW5hdGlvbl1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQnViYmxlUGFnaW5hdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBPdXRwdXQoKSBwYWdlSW5kZXhDaGFuZ2VFbWl0dGVyOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBASW5wdXQoKSBzaG93Rmlyc3RCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93TGFzdEJ1dHRvbiA9IHRydWU7XG4gIEBJbnB1dCgpIHJlbmRlckJ1dHRvbnNOdW1iZXIgPSAyO1xuICBASW5wdXQoKSBhcHBDdXN0b21MZW5ndGg6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGhpZGVEZWZhdWx0QXJyb3dzID0gZmFsc2U7XG4gIHByaXZhdGUgZG90c0VuZFJlZiE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGRvdHNTdGFydFJlZiE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGJ1YmJsZUNvbnRhaW5lclJlZiE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGJ1dHRvbnNSZWY6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdFBhZzogTWF0UGFnaW5hdG9yLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbjogUmVuZGVyZXIyXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdHlsZURlZmF1bHRQYWdpbmF0aW9uKCk7XG4gICAgdGhpcy5jcmVhdGVCdWJibGVEaXZSZWYoKTtcbiAgICB0aGlzLnJlbmRlckJ1dHRvbnMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZXM/LltcImFwcEN1c3RvbUxlbmd0aFwiXT8uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMucmVtb3ZlQnV0dG9ucygpO1xuICAgICAgdGhpcy5zd2l0Y2hQYWdlKDApO1xuICAgICAgdGhpcy5yZW5kZXJCdXR0b25zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJCdXR0b25zKCk6IHZvaWQge1xuICAgIHRoaXMuYnVpbGRCdXR0b25zKCk7XG5cbiAgICB0aGlzLm1hdFBhZy5wYWdlXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChlKSA9PiBbZS5wcmV2aW91c1BhZ2VJbmRleCA/PyAwLCBlLnBhZ2VJbmRleF0pLFxuICAgICAgICBzdGFydFdpdGgoWzAsIDBdKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3ByZXYsIGN1cnJdKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlQWN0aXZlQnV0dG9uU3R5bGVzKHByZXYsIGN1cnIpO1xuICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvbnNPblBhZ2VFdmVudCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUFjdGl2ZUJ1dHRvblN0eWxlcyhwcmV2aW91c0luZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBwcmV2aW91c2x5QWN0aXZlID0gdGhpcy5idXR0b25zUmVmW3ByZXZpb3VzSW5kZXhdO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmUgPSB0aGlzLmJ1dHRvbnNSZWZbbmV3SW5kZXhdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucmVuLnJlbW92ZUNsYXNzKHByZXZpb3VzbHlBY3RpdmUsIFwiZy1idWJibGVfX2FjdGl2ZVwiKTtcbiAgICAgIHRoaXMucmVuLmFkZENsYXNzKGN1cnJlbnRBY3RpdmUsIFwiZy1idWJibGVfX2FjdGl2ZVwiKTtcbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0aGlzLmJ1dHRvbnNSZWYuZm9yRWFjaCgoYnV0dG9uKSA9PlxuICAgICAgdGhpcy5yZW4uc2V0U3R5bGUoYnV0dG9uLCBcImRpc3BsYXlcIiwgXCJub25lXCIpXG4gICAgKTtcblxuICAgIGNvbnN0IHJlbmRlckVsZW1lbnRzID0gdGhpcy5yZW5kZXJCdXR0b25zTnVtYmVyO1xuICAgIGNvbnN0IGVuZERvdHMgPSBuZXdJbmRleCA8IHRoaXMuYnV0dG9uc1JlZi5sZW5ndGggLSByZW5kZXJFbGVtZW50cyAtIDE7XG4gICAgY29uc3Qgc3RhcnREb3RzID0gbmV3SW5kZXggLSByZW5kZXJFbGVtZW50cyA+IDA7XG5cbiAgICBjb25zdCBmaXJzdEJ1dHRvbiA9IHRoaXMuYnV0dG9uc1JlZlswXTtcbiAgICBjb25zdCBsYXN0QnV0dG9uID0gdGhpcy5idXR0b25zUmVmW3RoaXMuYnV0dG9uc1JlZi5sZW5ndGggLSAxXTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5zaG93TGFzdEJ1dHRvbikge1xuICAgICAgICB0aGlzLnJlbi5zZXRTdHlsZSh0aGlzLmRvdHNFbmRSZWYsIFwiZGlzcGxheVwiLCBlbmREb3RzID8gXCJibG9ja1wiIDogXCJub25lXCIpO1xuICAgICAgICB0aGlzLnJlbi5zZXRTdHlsZShsYXN0QnV0dG9uLCBcImRpc3BsYXlcIiwgZW5kRG90cyA/IFwiZmxleFwiIDogXCJub25lXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge31cblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5zaG93Rmlyc3RCdXR0b24pIHtcbiAgICAgICAgdGhpcy5yZW4uc2V0U3R5bGUoXG4gICAgICAgICAgdGhpcy5kb3RzU3RhcnRSZWYsXG4gICAgICAgICAgXCJkaXNwbGF5XCIsXG4gICAgICAgICAgc3RhcnREb3RzID8gXCJibG9ja1wiIDogXCJub25lXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZW4uc2V0U3R5bGUoZmlyc3RCdXR0b24sIFwiZGlzcGxheVwiLCBzdGFydERvdHMgPyBcImZsZXhcIiA6IFwibm9uZVwiKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG5cbiAgICBjb25zdCBzdGFydGluZ0luZGV4ID0gc3RhcnREb3RzID8gbmV3SW5kZXggLSByZW5kZXJFbGVtZW50cyA6IDA7XG4gICAgY29uc3QgZW5kaW5nSW5kZXggPSBlbmREb3RzXG4gICAgICA/IG5ld0luZGV4ICsgcmVuZGVyRWxlbWVudHNcbiAgICAgIDogdGhpcy5idXR0b25zUmVmLmxlbmd0aCAtIDE7XG5cbiAgICBmb3IgKGxldCBpID0gc3RhcnRpbmdJbmRleDsgaSA8PSBlbmRpbmdJbmRleDsgaSsrKSB7XG4gICAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvbnNSZWZbaV07XG4gICAgICB0aGlzLnJlbi5zZXRTdHlsZShidXR0b24sIFwiZGlzcGxheVwiLCBcImZsZXhcIik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdHlsZURlZmF1bHRQYWdpbmF0aW9uKCkge1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBpdGVtc1BlclBhZ2UgPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBcIi5tYXQtbWRjLXBhZ2luYXRvci1wYWdlLXNpemVcIlxuICAgICk7XG4gICAgY29uc3QgaG93TWFueURpc3BsYXllZEVsID0gbmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgXCIubWF0LW1kYy1wYWdpbmF0b3ItcmFuZ2UtbGFiZWxcIlxuICAgICk7XG4gICAgY29uc3QgcHJldmlvdXNCdXR0b24gPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBcImJ1dHRvbi5tYXQtbWRjLXBhZ2luYXRvci1uYXZpZ2F0aW9uLXByZXZpb3VzXCJcbiAgICApO1xuICAgIGNvbnN0IG5leHRCdXR0b25EZWZhdWx0ID0gbmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgXCJidXR0b24ubWF0LW1kYy1wYWdpbmF0b3ItbmF2aWdhdGlvbi1uZXh0XCJcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuaGlkZURlZmF1bHRBcnJvd3MpIHtcbiAgICAgIHRoaXMucmVuLnNldFN0eWxlKHByZXZpb3VzQnV0dG9uLCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICAgICAgdGhpcy5yZW4uc2V0U3R5bGUobmV4dEJ1dHRvbkRlZmF1bHQsIFwiZGlzcGxheVwiLCBcIm5vbmVcIik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCdWJibGVEaXZSZWYoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIFwiZGl2Lm1hdC1tZGMtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnNcIlxuICAgICk7XG4gICAgY29uc3QgbmV4dEJ1dHRvbkRlZmF1bHQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgXCJidXR0b24ubWF0LW1kYy1wYWdpbmF0b3ItbmF2aWdhdGlvbi1uZXh0XCJcbiAgICApO1xuXG4gICAgdGhpcy5idWJibGVDb250YWluZXJSZWYgPSB0aGlzLnJlbi5jcmVhdGVFbGVtZW50KFwiZGl2XCIpIGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMucmVuLmFkZENsYXNzKHRoaXMuYnViYmxlQ29udGFpbmVyUmVmLCBcImctYnViYmxlLWNvbnRhaW5lclwiKTtcblxuICAgIHRoaXMucmVuLmluc2VydEJlZm9yZShcbiAgICAgIGFjdGlvbkNvbnRhaW5lcixcbiAgICAgIHRoaXMuYnViYmxlQ29udGFpbmVyUmVmLFxuICAgICAgbmV4dEJ1dHRvbkRlZmF1bHRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEJ1dHRvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgbmVlZGVkQnV0dG9ucyA9IE1hdGguY2VpbChcbiAgICAgIHRoaXMuYXBwQ3VzdG9tTGVuZ3RoIC8gdGhpcy5tYXRQYWcucGFnZVNpemVcbiAgICApO1xuXG4gICAgaWYgKG5lZWRlZEJ1dHRvbnMgPT09IDEpIHtcbiAgICAgIHRoaXMucmVuLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnV0dG9uc1JlZiA9IFt0aGlzLmNyZWF0ZUJ1dHRvbigwKV07XG4gICAgdGhpcy5kb3RzU3RhcnRSZWYgPSB0aGlzLmNyZWF0ZURvdHNFbGVtZW50KCk7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgbmVlZGVkQnV0dG9ucyAtIDE7IGluZGV4KyspIHtcbiAgICAgIHRoaXMuYnV0dG9uc1JlZiA9IFsuLi50aGlzLmJ1dHRvbnNSZWYsIHRoaXMuY3JlYXRlQnV0dG9uKGluZGV4KV07XG4gICAgfVxuXG4gICAgdGhpcy5kb3RzRW5kUmVmID0gdGhpcy5jcmVhdGVEb3RzRWxlbWVudCgpO1xuXG4gICAgdGhpcy5idXR0b25zUmVmID0gW1xuICAgICAgLi4udGhpcy5idXR0b25zUmVmLFxuICAgICAgdGhpcy5jcmVhdGVCdXR0b24obmVlZGVkQnV0dG9ucyAtIDEpLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUJ1dHRvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5idWJibGVDb250YWluZXJSZWYuaW5uZXJIVE1MID0gJyc7XG4gICAgdGhpcy5idXR0b25zUmVmLmZvckVhY2goKGJ1dHRvbikgPT4ge1xuICAgICAgdGhpcy5yZW4ucmVtb3ZlQ2hpbGQodGhpcy5idWJibGVDb250YWluZXJSZWYsIGJ1dHRvbik7XG4gICAgfSk7XG4gICAgdGhpcy5idXR0b25zUmVmID0gW107XG4gICAgdGhpcy5idXR0b25zUmVmLmxlbmd0aCA9IDA7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJ1dHRvbihpOiBudW1iZXIpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYnViYmxlQnV0dG9uID0gdGhpcy5yZW4uY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5yZW4uY3JlYXRlVGV4dChTdHJpbmcoaSArIDEpKTtcblxuICAgIHRoaXMucmVuLmFkZENsYXNzKGJ1YmJsZUJ1dHRvbiwgXCJnLWJ1YmJsZVwiKTtcbiAgICB0aGlzLnJlbi5zZXRTdHlsZShidWJibGVCdXR0b24sIFwibWFyZ2luLXJpZ2h0XCIsIFwiOHB4XCIpO1xuICAgIHRoaXMucmVuLmFwcGVuZENoaWxkKGJ1YmJsZUJ1dHRvbiwgdGV4dCk7XG5cbiAgICB0aGlzLnJlbi5saXN0ZW4oYnViYmxlQnV0dG9uLCBcImNsaWNrXCIsICgpID0+IHtcbiAgICAgIHRoaXMuc3dpdGNoUGFnZShpKTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVuLmFwcGVuZENoaWxkKHRoaXMuYnViYmxlQ29udGFpbmVyUmVmLCBidWJibGVCdXR0b24pO1xuICAgIHRoaXMucmVuLnNldFN0eWxlKGJ1YmJsZUJ1dHRvbiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcblxuICAgIHJldHVybiBidWJibGVCdXR0b247XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURvdHNFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBkb3RzRWwgPSB0aGlzLnJlbi5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICBjb25zdCBkb3RzVGV4dCA9IHRoaXMucmVuLmNyZWF0ZVRleHQoXCIuLi4uLlwiKTtcblxuICAgIHRoaXMucmVuLnNldFN0eWxlKGRvdHNFbCwgXCJmb250LXNpemVcIiwgXCIxOHB4XCIpO1xuICAgIHRoaXMucmVuLnNldFN0eWxlKGRvdHNFbCwgXCJtYXJnaW4tcmlnaHRcIiwgXCI4cHhcIik7XG4gICAgdGhpcy5yZW4uc2V0U3R5bGUoZG90c0VsLCBcInBhZGRpbmctdG9wXCIsIFwiNnB4XCIpO1xuICAgIHRoaXMucmVuLnNldFN0eWxlKGRvdHNFbCwgXCJjb2xvclwiLCBcIiM5MTkxOTFcIik7XG5cbiAgICB0aGlzLnJlbi5hcHBlbmRDaGlsZChkb3RzRWwsIGRvdHNUZXh0KTtcbiAgICB0aGlzLnJlbi5hcHBlbmRDaGlsZCh0aGlzLmJ1YmJsZUNvbnRhaW5lclJlZiwgZG90c0VsKTtcbiAgICB0aGlzLnJlbi5zZXRTdHlsZShkb3RzRWwsIFwiZGlzcGxheVwiLCBcIm5vbmVcIik7XG5cbiAgICByZXR1cm4gZG90c0VsO1xuICB9XG5cbiAgcHJpdmF0ZSBzd2l0Y2hQYWdlKGk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHByZXZpb3VzUGFnZUluZGV4ID0gdGhpcy5tYXRQYWcucGFnZUluZGV4O1xuICAgIHRoaXMubWF0UGFnLnBhZ2VJbmRleCA9IGk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubWF0UGFnW1wiX2VtaXRQYWdlRXZlbnRcIl0ocHJldmlvdXNQYWdlSW5kZXgpO1xuICAgIH0gY2F0Y2gge31cblxuICAgIHRoaXMucGFnZUluZGV4Q2hhbmdlRW1pdHRlci5lbWl0KGkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVCdXR0b25zT25QYWdlRXZlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgbmVlZGVkQnV0dG9ucyA9IE1hdGguY2VpbChcbiAgICAgIHRoaXMuYXBwQ3VzdG9tTGVuZ3RoIC8gdGhpcy5tYXRQYWcucGFnZVNpemVcbiAgICApO1xuICAgIGlmIChuZWVkZWRCdXR0b25zID09PSB0aGlzLmJ1dHRvbnNSZWYubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdmVCdXR0b25zKCk7XG4gICAgdGhpcy5idWlsZEJ1dHRvbnMoKTtcbiAgfVxufVxuIl19
@@ -1,33 +0,0 @@
1
- import { AfterViewInit, ElementRef, EventEmitter, OnChanges, Renderer2, SimpleChanges } from "@angular/core";
2
- import { MatPaginator } from "@angular/material/paginator";
3
- import * as i0 from "@angular/core";
4
- export declare class BubblePaginationDirective implements AfterViewInit, OnChanges {
5
- private readonly matPag;
6
- private elementRef;
7
- private ren;
8
- pageIndexChangeEmitter: EventEmitter<number>;
9
- showFirstButton: boolean;
10
- showLastButton: boolean;
11
- renderButtonsNumber: number;
12
- appCustomLength: number;
13
- hideDefaultArrows: boolean;
14
- private dotsEndRef;
15
- private dotsStartRef;
16
- private bubbleContainerRef;
17
- private buttonsRef;
18
- constructor(matPag: MatPaginator, elementRef: ElementRef, ren: Renderer2);
19
- ngAfterViewInit(): void;
20
- ngOnChanges(changes: SimpleChanges): void;
21
- private renderButtons;
22
- private changeActiveButtonStyles;
23
- private styleDefaultPagination;
24
- private createBubbleDivRef;
25
- private buildButtons;
26
- private removeButtons;
27
- private createButton;
28
- private createDotsElement;
29
- private switchPage;
30
- private updateButtonsOnPageEvent;
31
- static ɵfac: i0.ɵɵFactoryDeclaration<BubblePaginationDirective, never>;
32
- static ɵdir: i0.ɵɵDirectiveDeclaration<BubblePaginationDirective, "[appBubblePagination]", never, { "showFirstButton": "showFirstButton"; "showLastButton": "showLastButton"; "renderButtonsNumber": "renderButtonsNumber"; "appCustomLength": "appCustomLength"; "hideDefaultArrows": "hideDefaultArrows"; }, { "pageIndexChangeEmitter": "pageIndexChangeEmitter"; }, never, never, true, never>;
33
- }
Binary file
@@ -1,33 +0,0 @@
1
- import { AfterViewInit, ElementRef, EventEmitter, OnChanges, Renderer2, SimpleChanges } from "@angular/core";
2
- import { MatPaginator } from "@angular/material/paginator";
3
- import * as i0 from "@angular/core";
4
- export declare class BubblePaginationDirective implements AfterViewInit, OnChanges {
5
- private readonly matPag;
6
- private elementRef;
7
- private ren;
8
- pageIndexChangeEmitter: EventEmitter<number>;
9
- showFirstButton: boolean;
10
- showLastButton: boolean;
11
- renderButtonsNumber: number;
12
- appCustomLength: number;
13
- hideDefaultArrows: boolean;
14
- private dotsEndRef;
15
- private dotsStartRef;
16
- private bubbleContainerRef;
17
- private buttonsRef;
18
- constructor(matPag: MatPaginator, elementRef: ElementRef, ren: Renderer2);
19
- ngAfterViewInit(): void;
20
- ngOnChanges(changes: SimpleChanges): void;
21
- private renderButtons;
22
- private changeActiveButtonStyles;
23
- private styleDefaultPagination;
24
- private createBubbleDivRef;
25
- private buildButtons;
26
- private removeButtons;
27
- private createButton;
28
- private createDotsElement;
29
- private switchPage;
30
- private updateButtonsOnPageEvent;
31
- static ɵfac: i0.ɵɵFactoryDeclaration<BubblePaginationDirective, never>;
32
- static ɵdir: i0.ɵɵDirectiveDeclaration<BubblePaginationDirective, "[appBubblePagination]", never, { "showFirstButton": "showFirstButton"; "showLastButton": "showLastButton"; "renderButtonsNumber": "renderButtonsNumber"; "appCustomLength": "appCustomLength"; "hideDefaultArrows": "hideDefaultArrows"; }, { "pageIndexChangeEmitter": "pageIndexChangeEmitter"; }, never, never, true, never>;
33
- }