mat-table-ext 0.0.7 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +16 -0
- package/.vscode/extensions.json +4 -0
- package/.vscode/launch.json +20 -0
- package/.vscode/tasks.json +42 -0
- package/LICENSE +21 -0
- package/angular.json +150 -0
- package/package.json +46 -58
- package/projects/mat-table-ext/.browserslistrc +16 -0
- package/projects/mat-table-ext/README.md +57 -0
- package/projects/mat-table-ext/karma.conf.js +44 -0
- package/projects/mat-table-ext/ng-package.json +9 -0
- package/projects/mat-table-ext/package.json +38 -0
- package/projects/mat-table-ext/src/lib/components/column-pinning/column-pinning.component.html +7 -0
- package/projects/mat-table-ext/src/lib/components/column-pinning/column-pinning.component.scss +9 -0
- package/projects/mat-table-ext/src/lib/components/column-pinning/column-pinning.component.spec.ts +23 -0
- package/projects/mat-table-ext/src/lib/components/column-pinning/column-pinning.component.ts +48 -0
- package/projects/mat-table-ext/src/lib/components/editing/editing.component.html +55 -0
- package/projects/mat-table-ext/src/lib/components/editing/editing.component.scss +19 -0
- package/projects/mat-table-ext/src/lib/components/editing/editing.component.spec.ts +23 -0
- package/projects/mat-table-ext/src/lib/components/editing/editing.component.ts +110 -0
- package/projects/mat-table-ext/src/lib/components/filter-columns-component/filter-columns-component.component.html +26 -0
- package/projects/mat-table-ext/src/lib/components/filter-columns-component/filter-columns-component.component.scss +0 -0
- package/projects/mat-table-ext/src/lib/components/filter-columns-component/filter-columns-component.component.spec.ts +23 -0
- package/projects/mat-table-ext/src/lib/components/filter-columns-component/filter-columns-component.component.ts +54 -0
- package/projects/mat-table-ext/src/lib/directives/resize-column.directive.ts +103 -0
- package/projects/mat-table-ext/src/lib/mat-table-ext.component.html +285 -0
- package/projects/mat-table-ext/src/lib/mat-table-ext.component.spec.ts +25 -0
- package/projects/mat-table-ext/src/lib/mat-table-ext.component.ts +985 -0
- package/projects/mat-table-ext/src/lib/mat-table-ext.module.ts +127 -0
- package/projects/mat-table-ext/src/lib/mat-table-ext.scss +181 -0
- package/projects/mat-table-ext/src/lib/mat-table-ext.service.spec.ts +16 -0
- package/projects/mat-table-ext/src/lib/mat-table-ext.service.ts +12 -0
- package/projects/mat-table-ext/src/lib/models/tableExtModels.ts +85 -0
- package/{public-api.d.ts → projects/mat-table-ext/src/public-api.ts} +5 -1
- package/projects/mat-table-ext/src/test.ts +27 -0
- package/projects/mat-table-ext/tsconfig.lib.json +15 -0
- package/projects/mat-table-ext/tsconfig.lib.prod.json +10 -0
- package/projects/mat-table-ext/tsconfig.spec.json +17 -0
- package/projects/mat-table-ext-example/.browserslistrc +16 -0
- package/projects/mat-table-ext-example/karma.conf.js +44 -0
- package/projects/mat-table-ext-example/src/app/app.component.html +576 -0
- package/projects/mat-table-ext-example/src/app/app.component.scss +0 -0
- package/projects/mat-table-ext-example/src/app/app.component.spec.ts +31 -0
- package/projects/mat-table-ext-example/src/app/app.component.ts +173 -0
- package/projects/mat-table-ext-example/src/app/app.module.ts +40 -0
- package/projects/mat-table-ext-example/src/app/service/custom-table.service.spec.ts +16 -0
- package/projects/mat-table-ext-example/src/app/service/custom-table.service.ts +18 -0
- package/projects/mat-table-ext-example/src/assets/.gitkeep +0 -0
- package/projects/mat-table-ext-example/src/assets/data.json +100003 -0
- package/projects/mat-table-ext-example/src/environments/environment.prod.ts +3 -0
- package/projects/mat-table-ext-example/src/environments/environment.ts +16 -0
- package/projects/mat-table-ext-example/src/favicon.ico +0 -0
- package/projects/mat-table-ext-example/src/index.html +14 -0
- package/projects/mat-table-ext-example/src/main.ts +12 -0
- package/projects/mat-table-ext-example/src/polyfills.ts +53 -0
- package/projects/mat-table-ext-example/src/styles.scss +23 -0
- package/projects/mat-table-ext-example/src/test.ts +26 -0
- package/projects/mat-table-ext-example/tsconfig.app.json +15 -0
- package/projects/mat-table-ext-example/tsconfig.spec.json +18 -0
- package/tsconfig.json +38 -0
- package/esm2020/lib/components/column-pinning/column-pinning.component.mjs +0 -58
- package/esm2020/lib/components/editing/editing.component.mjs +0 -122
- package/esm2020/lib/components/filter-columns-component/filter-columns-component.component.mjs +0 -68
- package/esm2020/lib/directives/resize-column.directive.mjs +0 -99
- package/esm2020/lib/mat-table-ext.component.mjs +0 -1021
- package/esm2020/lib/mat-table-ext.module.mjs +0 -237
- package/esm2020/lib/mat-table-ext.service.mjs +0 -20
- package/esm2020/lib/models/tableExtModels.mjs +0 -2
- package/esm2020/mat-table-ext.mjs +0 -5
- package/esm2020/public-api.mjs +0 -11
- package/fesm2015/mat-table-ext.mjs +0 -1585
- package/fesm2015/mat-table-ext.mjs.map +0 -1
- package/fesm2020/mat-table-ext.mjs +0 -1582
- package/fesm2020/mat-table-ext.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/components/column-pinning/column-pinning.component.d.ts +0 -27
- package/lib/components/editing/editing.component.d.ts +0 -42
- package/lib/components/filter-columns-component/filter-columns-component.component.d.ts +0 -26
- package/lib/directives/resize-column.directive.d.ts +0 -27
- package/lib/mat-table-ext.component.d.ts +0 -348
- package/lib/mat-table-ext.module.d.ts +0 -58
- package/lib/mat-table-ext.service.d.ts +0 -11
- package/lib/models/tableExtModels.d.ts +0 -76
- /package/{assets → projects/mat-table-ext/assets}/_theming.scss +0 -0
- /package/{assets → projects/mat-table-ext/assets}/pinIcon.svg +0 -0
- /package/{assets → projects/mat-table-ext/assets}/pinLeft.svg +0 -0
- /package/{assets → projects/mat-table-ext/assets}/pinNone.svg +0 -0
- /package/{assets → projects/mat-table-ext/assets}/pinRight.svg +0 -0
- /package/{assets → projects/mat-table-ext/assets}/pinned.svg +0 -0
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { Directive, Input } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ResizeColumnDirective {
|
|
4
|
-
constructor(renderer, el) {
|
|
5
|
-
this.renderer = renderer;
|
|
6
|
-
this.el = el;
|
|
7
|
-
this.columnsResizable$ = false;
|
|
8
|
-
this.onMouseDown = (event) => {
|
|
9
|
-
this.pressed = true;
|
|
10
|
-
this.startX = event.pageX;
|
|
11
|
-
this.startWidth = this.column.offsetWidth;
|
|
12
|
-
};
|
|
13
|
-
this.onMouseMove = (event) => {
|
|
14
|
-
const offset = 5;
|
|
15
|
-
if (this.pressed && event.buttons) {
|
|
16
|
-
this.renderer.addClass(this.table, "resizing");
|
|
17
|
-
// Calculate width of column
|
|
18
|
-
let width = this.startWidth + (event.pageX - this.startX - offset);
|
|
19
|
-
const tableCells = Array.from(this.table.querySelectorAll(".mat-row")).map((row) => row.querySelectorAll(".mat-cell").item(this.index));
|
|
20
|
-
// Set table header width
|
|
21
|
-
this.renderer.setStyle(this.column, "width", `${width}px`);
|
|
22
|
-
// Set table cells width
|
|
23
|
-
for (const cell of tableCells) {
|
|
24
|
-
if (cell && cell !== null)
|
|
25
|
-
this.renderer.setStyle(cell, "width", `${width}px`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
this.onMouseUp = (event) => {
|
|
30
|
-
if (this.pressed) {
|
|
31
|
-
this.pressed = false;
|
|
32
|
-
this.renderer.removeClass(this.table, "resizing");
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
this.column = this.el.nativeElement;
|
|
36
|
-
}
|
|
37
|
-
set columnsResizable(val) {
|
|
38
|
-
this.columnsResizable$ = val;
|
|
39
|
-
}
|
|
40
|
-
get columnsResizable() {
|
|
41
|
-
return this.columnsResizable$;
|
|
42
|
-
}
|
|
43
|
-
ngOnInit() {
|
|
44
|
-
if (this.columnsResizable$) {
|
|
45
|
-
const row = this.renderer.parentNode(this.column);
|
|
46
|
-
const thead = this.renderer.parentNode(row);
|
|
47
|
-
this.table = this.renderer.parentNode(thead);
|
|
48
|
-
const resizer = this.renderer.createElement("span");
|
|
49
|
-
this.renderer.addClass(resizer, "resize-holder");
|
|
50
|
-
this.renderer.setAttribute(resizer, 'id', "resizeHolderSpan");
|
|
51
|
-
this.renderer.appendChild(this.column, resizer);
|
|
52
|
-
this.renderer.listen(resizer, "mousedown", this.onMouseDown);
|
|
53
|
-
this.renderer.listen(this.table, "mousemove", this.onMouseMove);
|
|
54
|
-
this.renderer.listen("document", "mouseup", this.onMouseUp);
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
this.removeDragElementFromDom();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
ngOnChanges() {
|
|
61
|
-
if (this.columnsResizable$) {
|
|
62
|
-
const row = this.renderer.parentNode(this.column);
|
|
63
|
-
const thead = this.renderer.parentNode(row);
|
|
64
|
-
const resizer = this.renderer.createElement("span");
|
|
65
|
-
this.table = this.renderer.parentNode(thead);
|
|
66
|
-
this.renderer.addClass(resizer, "resize-holder");
|
|
67
|
-
this.renderer.setAttribute(resizer, 'id', "resizeHolderSpan");
|
|
68
|
-
this.renderer.appendChild(this.column, resizer);
|
|
69
|
-
this.renderer.listen(resizer, "mousedown", this.onMouseDown);
|
|
70
|
-
this.renderer.listen(this.table, "mousemove", this.onMouseMove);
|
|
71
|
-
this.renderer.listen("document", "mouseup", this.onMouseUp);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
this.removeDragElementFromDom();
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* @description This method is used remove resizing handlers from the table headers when column resizing is disabled.
|
|
79
|
-
*/
|
|
80
|
-
removeDragElementFromDom() {
|
|
81
|
-
let ele = document.getElementById('resizeHolderSpan');
|
|
82
|
-
if (ele && ele !== null && ele !== undefined) {
|
|
83
|
-
this.renderer.removeChild(this.column, ele);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
ResizeColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ResizeColumnDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
88
|
-
ResizeColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ResizeColumnDirective, selector: "[columnsResizable]", inputs: { columnsResizable: "columnsResizable", index: "index" }, usesOnChanges: true, ngImport: i0 });
|
|
89
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ResizeColumnDirective, decorators: [{
|
|
90
|
-
type: Directive,
|
|
91
|
-
args: [{
|
|
92
|
-
selector: "[columnsResizable]"
|
|
93
|
-
}]
|
|
94
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { columnsResizable: [{
|
|
95
|
-
type: Input
|
|
96
|
-
}], index: [{
|
|
97
|
-
type: Input
|
|
98
|
-
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWNvbHVtbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXQtdGFibGUtZXh0L3NyYy9saWIvZGlyZWN0aXZlcy9yZXNpemUtY29sdW1uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDOztBQUszRixNQUFNLE9BQU8scUJBQXFCO0lBZTlCLFlBQW9CLFFBQW1CLEVBQVUsRUFBYztRQUEzQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQWQvRCxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFzRG5DLGdCQUFXLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDOUMsQ0FBQyxDQUFDO1FBRUYsZ0JBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUNoQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQy9DLDRCQUE0QjtnQkFDNUIsSUFBSSxLQUFLLEdBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztnQkFDM0QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFD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QzFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDL0M7SUFDTCxDQUFDOzttSEEvRlEscUJBQXFCO3VHQUFyQixxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2lCQUNqQzt5SEFHZ0IsZ0JBQWdCO3NCQUE1QixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBSZW5kZXJlcjIsIElucHV0LCBFbGVtZW50UmVmLCBPbkNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogXCJbY29sdW1uc1Jlc2l6YWJsZV1cIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzaXplQ29sdW1uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgY29sdW1uc1Jlc2l6YWJsZSQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNldCBjb2x1bW5zUmVzaXphYmxlKHZhbDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuY29sdW1uc1Jlc2l6YWJsZSQgPSB2YWw7XHJcbiAgICB9XHJcbiAgICBnZXQgY29sdW1uc1Jlc2l6YWJsZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zUmVzaXphYmxlJDtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpIGluZGV4ITogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBzdGFydFghOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIHN0YXJ0V2lkdGghOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIGNvbHVtbjogSFRNTEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIHRhYmxlITogSFRNTEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIHByZXNzZWQhOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xyXG4gICAgICAgIHRoaXMuY29sdW1uID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbnNSZXNpemFibGUkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLmNvbHVtbik7XHJcbiAgICAgICAgICAgIGNvbnN0IHRoZWFkID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHJvdyk7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhlYWQpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcmVzaXplciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MocmVzaXplciwgXCJyZXNpemUtaG9sZGVyXCIpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShyZXNpemVyLCAnaWQnLCBcInJlc2l6ZUhvbGRlclNwYW5cIik7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jb2x1bW4sIHJlc2l6ZXIpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihyZXNpemVyLCBcIm1vdXNlZG93blwiLCB0aGlzLm9uTW91c2VEb3duKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy50YWJsZSwgXCJtb3VzZW1vdmVcIiwgdGhpcy5vbk1vdXNlTW92ZSk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKFwiZG9jdW1lbnRcIiwgXCJtb3VzZXVwXCIsIHRoaXMub25Nb3VzZVVwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRHJhZ0VsZW1lbnRGcm9tRG9tKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uc1Jlc2l6YWJsZSQpIHtcclxuICAgICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHRoaXMuY29sdW1uKTtcclxuICAgICAgICAgICAgY29uc3QgdGhlYWQgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUocm93KTtcclxuICAgICAgICAgICAgY29uc3QgcmVzaXplciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhlYWQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHJlc2l6ZXIsIFwicmVzaXplLWhvbGRlclwiKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUocmVzaXplciwgJ2lkJywgXCJyZXNpemVIb2xkZXJTcGFuXCIpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuY29sdW1uLCByZXNpemVyKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4ocmVzaXplciwgXCJtb3VzZWRvd25cIiwgdGhpcy5vbk1vdXNlRG93bik7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMudGFibGUsIFwibW91c2Vtb3ZlXCIsIHRoaXMub25Nb3VzZU1vdmUpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihcImRvY3VtZW50XCIsIFwibW91c2V1cFwiLCB0aGlzLm9uTW91c2VVcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZURyYWdFbGVtZW50RnJvbURvbSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgb25Nb3VzZURvd24gPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLnByZXNzZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3RhcnRYID0gZXZlbnQucGFnZVg7XHJcbiAgICAgICAgdGhpcy5zdGFydFdpZHRoID0gdGhpcy5jb2x1bW4ub2Zmc2V0V2lkdGg7XHJcbiAgICB9O1xyXG5cclxuICAgIG9uTW91c2VNb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gNTtcclxuICAgICAgICBpZiAodGhpcy5wcmVzc2VkICYmIGV2ZW50LmJ1dHRvbnMpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRhYmxlLCBcInJlc2l6aW5nXCIpO1xyXG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgd2lkdGggb2YgY29sdW1uXHJcbiAgICAgICAgICAgIGxldCB3aWR0aCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0V2lkdGggKyAoZXZlbnQucGFnZVggLSB0aGlzLnN0YXJ0WCAtIG9mZnNldCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlQ2VsbHMgPSBBcnJheS5mcm9tKHRoaXMudGFibGUucXVlcnlTZWxlY3RvckFsbChcIi5tYXQtcm93XCIpKS5tYXAoXHJcbiAgICAgICAgICAgICAgICAocm93OiBhbnkpID0+IHJvdy5xdWVyeVNlbGVjdG9yQWxsKFwiLm1hdC1jZWxsXCIpLml0ZW0odGhpcy5pbmRleClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgLy8gU2V0IHRhYmxlIGhlYWRlciB3aWR0aFxyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY29sdW1uLCBcIndpZHRoXCIsIGAke3dpZHRofXB4YCk7XHJcbiAgICAgICAgICAgIC8vIFNldCB0YWJsZSBjZWxscyB3aWR0aFxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNlbGwgb2YgdGFibGVDZWxscykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNlbGwgJiYgY2VsbCAhPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY2VsbCwgXCJ3aWR0aFwiLCBgJHt3aWR0aH1weGApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBvbk1vdXNlVXAgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wcmVzc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc3NlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMudGFibGUsIFwicmVzaXppbmdcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWV0aG9kIGlzIHVzZWQgcmVtb3ZlIHJlc2l6aW5nIGhhbmRsZXJzIGZyb20gdGhlIHRhYmxlIGhlYWRlcnMgd2hlbiBjb2x1bW4gcmVzaXppbmcgaXMgZGlzYWJsZWQuXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZURyYWdFbGVtZW50RnJvbURvbSgpIHtcclxuICAgICAgICBsZXQgZWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc2l6ZUhvbGRlclNwYW4nKVxyXG4gICAgICAgIGlmIChlbGUgJiYgZWxlICE9PSBudWxsICYmIGVsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5jb2x1bW4sIGVsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
|