@seniorsistemas/angular-components 14.15.0 → 14.15.1

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.
@@ -1,4 +1,4 @@
1
- import { AfterViewInit, ElementRef, OnDestroy } from "@angular/core";
1
+ import { AfterViewInit, ElementRef, EventEmitter, OnDestroy } from "@angular/core";
2
2
  import { Table } from "primeng/table";
3
3
  export declare class TableFrozenPositionDirective implements AfterViewInit, OnDestroy {
4
4
  private el;
@@ -10,9 +10,12 @@ export declare class TableFrozenPositionDirective implements AfterViewInit, OnDe
10
10
  private styleFixBodyRowHeight;
11
11
  private fixHeadRowClassName;
12
12
  private styleFixHeadRowHeight;
13
+ tableHeadObservable: MutationObserver;
14
+ onColumnsChanged: EventEmitter<any>;
13
15
  constructor(el: ElementRef, host: Table);
14
16
  ngAfterViewInit(): void;
15
17
  ngOnDestroy(): void;
18
+ private setUpColumnMonitoring;
16
19
  private applyStylesForTable;
17
20
  private handleWindowResize;
18
21
  private handleColResize;
@@ -1,28 +1,30 @@
1
1
  import { __decorate } from "tslib";
2
- import { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from "@angular/core";
2
+ import { AfterViewInit, Directive, ElementRef, EventEmitter, Input, OnDestroy } from "@angular/core";
3
3
  import { Table } from "primeng/table";
4
4
  let TableFrozenPositionDirective = class TableFrozenPositionDirective {
5
5
  constructor(el, host) {
6
6
  this.el = el;
7
7
  this.host = host;
8
8
  this.sTableFrozenPosition = "left";
9
+ this.onColumnsChanged = new EventEmitter();
9
10
  this.host.onColResize.subscribe(() => {
10
11
  this.handleColResize();
11
12
  });
12
13
  window.addEventListener("resize", this.handleWindowResize.bind(this));
13
14
  const componentId = new Date().getTime();
15
+ const htmlHead = document.getElementsByTagName("head")[0];
14
16
  this.resetRowHeightClassName = `resetTableRowsHeight_${componentId}`;
15
17
  const styleReset = document.createElement("style");
16
18
  styleReset.innerHTML = `.${this.resetRowHeightClassName} tbody > tr, .${this.resetRowHeightClassName} thead > tr { height: auto; }`;
17
- document.getElementsByTagName("head")[0].appendChild(styleReset);
19
+ htmlHead.appendChild(styleReset);
18
20
  this.fixBodyRowClassName = `fixTableBodyRowsHeight_${componentId}`;
19
21
  this.styleFixBodyRowHeight = document.createElement("style");
20
22
  this.styleFixBodyRowHeight.innerHTML = `.${this.fixBodyRowClassName} tbody > tr { height: auto; }`;
21
- document.getElementsByTagName("head")[0].appendChild(this.styleFixBodyRowHeight);
23
+ htmlHead.appendChild(this.styleFixBodyRowHeight);
22
24
  this.fixHeadRowClassName = `fixTableHeadRowsHeight_${componentId}`;
23
25
  this.styleFixHeadRowHeight = document.createElement("style");
24
26
  this.styleFixHeadRowHeight.innerHTML = `.${this.fixHeadRowClassName} thead > tr { height: auto; }`;
25
- document.getElementsByTagName("head")[0].appendChild(this.styleFixHeadRowHeight);
27
+ htmlHead.appendChild(this.styleFixHeadRowHeight);
26
28
  }
27
29
  set sTableFrozenValue(_) {
28
30
  setTimeout(() => {
@@ -33,9 +35,26 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
33
35
  if (this.sTableFrozenPosition === "left")
34
36
  return;
35
37
  this.applyStylesForTable();
38
+ this.setUpColumnMonitoring();
36
39
  }
37
40
  ngOnDestroy() {
38
41
  window.removeEventListener("resize", this.handleWindowResize.bind(this));
42
+ if (this.tableHeadObservable) {
43
+ this.tableHeadObservable.disconnect();
44
+ }
45
+ }
46
+ setUpColumnMonitoring() {
47
+ this.tableHeadObservable = new MutationObserver(() => {
48
+ this.synchronizeRowHeight();
49
+ this.onColumnsChanged.emit(null);
50
+ });
51
+ const tableHeads = [...this.el.nativeElement.getElementsByTagName("thead")];
52
+ tableHeads.forEach((tableHead) => {
53
+ this.tableHeadObservable.observe(tableHead, {
54
+ subtree: true,
55
+ childList: true
56
+ });
57
+ });
39
58
  }
40
59
  applyStylesForTable() {
41
60
  const scrollWrapper = this.el.nativeElement.querySelector(".ui-table-scrollable-wrapper");
@@ -126,4 +145,4 @@ TableFrozenPositionDirective = __decorate([
126
145
  })
127
146
  ], TableFrozenPositionDirective);
128
147
  export { TableFrozenPositionDirective };
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3RDLElBQWEsNEJBQTRCLEdBQXpDLE1BQWEsNEJBQTRCO0lBaUJyQyxZQUFvQixFQUFjLEVBQVUsSUFBVztRQUFuQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBTztRQWZ2RCx5QkFBb0IsR0FBRyxNQUFNLENBQUM7UUFnQjFCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV6QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsd0JBQXdCLFdBQVcsRUFBRSxDQUFDO1FBQ3JFLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsaUJBQWlCLElBQUksQ0FBQyx1QkFBdUIsK0JBQStCLENBQUM7UUFDcEksUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsMEJBQTBCLFdBQVcsRUFBRSxDQUFDO1FBQ25FLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLCtCQUErQixDQUFDO1FBQ25HLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFakYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLDBCQUEwQixXQUFXLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLG1CQUFtQiwrQkFBK0IsQ0FBQztRQUNuRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFuQ0QsSUFBSSxpQkFBaUIsQ0FBQyxDQUFRO1FBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFpQ0QsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLE1BQU07WUFBRSxPQUFPO1FBQ2pELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1AsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUdBQWlHLENBQUMsQ0FBQztZQUNoSCxPQUFPO1NBQ1Y7UUFDRCxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDckMsYUFBYSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTFDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLHlGQUF5RixDQUFDLENBQUM7WUFDeEcsT0FBTztTQUNWO1FBQ0QsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQzlCLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUN2QyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQztRQUNuRCxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQztRQUV4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkZBQTJGLENBQUMsQ0FBQztZQUMxRyxPQUFPO1NBQ1Y7UUFDRCxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDM0MsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sZUFBZTtRQUNuQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNuRyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMxSCxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXBDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUN6RyxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN6SCxJQUFJLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sMkJBQTJCLENBQUMsTUFBYTtRQUM3QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtZQUN4QixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNqRCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNqRCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUNyRDtJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxNQUFhLEVBQUUsU0FBa0IsS0FBSztRQUM1RCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7WUFDeEIsS0FBSyxNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUN6QixRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3BEO1NBQ0o7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUV4QyxJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLHlCQUF5QixTQUFTLE9BQU8sQ0FBQztZQUU3RyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtnQkFDeEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3JELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0o7YUFBTTtZQUNILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLHlCQUF5QixTQUFTLE9BQU8sQ0FBQztZQUU3RyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtnQkFDeEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3JELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0o7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUFwSDJCLFVBQVU7WUFBZ0IsS0FBSzs7QUFmdkQ7SUFEQyxLQUFLLEVBQUU7MEVBQ3NCO0FBRzlCO0lBREMsS0FBSyxFQUFFO3FFQUtQO0FBVFEsNEJBQTRCO0lBSHhDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSx3QkFBd0I7S0FDckMsQ0FBQztHQUNXLDRCQUE0QixDQXFJeEM7U0FySVksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiW3NUYWJsZUZyb3plblBvc2l0aW9uXVwiXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRnJvemVuUG9zaXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgc1RhYmxlRnJvemVuUG9zaXRpb24gPSBcImxlZnRcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNUYWJsZUZyb3plblZhbHVlKF86IGFueVtdKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBmaXhCb2R5Um93Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBzdHlsZUZpeEJvZHlSb3dIZWlnaHQ6IGFueTtcbiAgICBwcml2YXRlIGZpeEhlYWRSb3dDbGFzc05hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHN0eWxlRml4SGVhZFJvd0hlaWdodDogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBob3N0OiBUYWJsZSkge1xuICAgICAgICB0aGlzLmhvc3Qub25Db2xSZXNpemUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgdGhpcy5oYW5kbGVDb2xSZXNpemUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50SWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgICAgICB0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lID0gYHJlc2V0VGFibGVSb3dzSGVpZ2h0XyR7Y29tcG9uZW50SWR9YDtcbiAgICAgICAgY29uc3Qgc3R5bGVSZXNldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgc3R5bGVSZXNldC5pbm5lckhUTUwgPSBgLiR7dGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZX0gdGJvZHkgPiB0ciwgLiR7dGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZX0gdGhlYWQgPiB0ciB7IGhlaWdodDogYXV0bzsgfWA7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZChzdHlsZVJlc2V0KTtcblxuICAgICAgICB0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWUgPSBgZml4VGFibGVCb2R5Um93c0hlaWdodF8ke2NvbXBvbmVudElkfWA7XG4gICAgICAgIHRoaXMuc3R5bGVGaXhCb2R5Um93SGVpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICB0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lfSB0Ym9keSA+IHRyIHsgaGVpZ2h0OiBhdXRvOyB9YDtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVGaXhCb2R5Um93SGVpZ2h0KTtcblxuICAgICAgICB0aGlzLmZpeEhlYWRSb3dDbGFzc05hbWUgPSBgZml4VGFibGVIZWFkUm93c0hlaWdodF8ke2NvbXBvbmVudElkfWA7XG4gICAgICAgIHRoaXMuc3R5bGVGaXhIZWFkUm93SGVpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICB0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lfSB0aGVhZCA+IHRyIHsgaGVpZ2h0OiBhdXRvOyB9YDtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVGaXhIZWFkUm93SGVpZ2h0KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNUYWJsZUZyb3plblBvc2l0aW9uID09PSBcImxlZnRcIikgcmV0dXJuO1xuICAgICAgICB0aGlzLmFwcGx5U3R5bGVzRm9yVGFibGUoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVN0eWxlc0ZvclRhYmxlKCkge1xuICAgICAgICBjb25zdCBzY3JvbGxXcmFwcGVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtc2Nyb2xsYWJsZS13cmFwcGVyXCIpO1xuICAgICAgICBpZiAoIXNjcm9sbFdyYXBwZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIHNjcm9sbC13cmFwcGVyIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNjcm9sbFdyYXBwZXIuc3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xuICAgICAgICBzY3JvbGxXcmFwcGVyLnN0eWxlLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiO1xuXG4gICAgICAgIGNvbnN0IGZyb3plblRhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtZnJvemVuLXZpZXdcIik7XG4gICAgICAgIGlmICghZnJvemVuVGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIGZyb3plbiBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5vcmRlciA9IFwiMVwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3JkZXJSaWdodCA9IFwibm9uZVwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3JkZXJMZWZ0ID0gXCIxcHggc29saWQgI2RkZGRkZFwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3hTaGFkb3cgPSBcIi01cHggMCA1cHggLTVweCAjY2NjY2NjXCI7XG5cbiAgICAgICAgY29uc3QgdW5mcm96ZW5UYWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXdcIik7XG4gICAgICAgIGlmICghdW5mcm96ZW5UYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgdW5mcm96ZW4gZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdW5mcm96ZW5UYWJsZS5zdHlsZS5wb3NpdGlvbiA9IFwidW5zZXRcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVdpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ29sUmVzaXplKCkge1xuICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jaHJvbml6ZVJvd0hlaWdodCgpIHtcbiAgICAgICAgY29uc3QgdGFibGVCb2R5V3JhcHBlcnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInVpLXRhYmxlLXNjcm9sbGFibGUtYm9keVwiKTtcbiAgICAgICAgY29uc3QgdGFibGVCb2RpZXMgPSBbLi4udGFibGVCb2R5V3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZUJvZGllcyk7XG4gICAgICAgIHRoaXMuYXBwbHlNYXhSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuXG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZFdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWhlYWRlci1ib3hcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZHMgPSBbLi4udGFibGVIZWFkV3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZUhlYWRzKTtcbiAgICAgICAgdGhpcy5hcHBseU1heFJvd0hlaWdodCh0YWJsZUhlYWRzLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZXM6IGFueVtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseU1heFJvd0hlaWdodCh0YWJsZXM6IGFueVtdLCBpc0hlYWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBjb25zdCByb3dTaXplcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCB0ciBvZiB0YWJsZS5yb3dzKSB7XG4gICAgICAgICAgICAgICAgcm93U2l6ZXMucHVzaCh0ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyb3dTaXplcy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5tYXgoLi4ucm93U2l6ZXMpO1xuXG4gICAgICAgIGlmIChpc0hlYWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVGaXhIZWFkUm93SGVpZ2h0LmlubmVySFRNTCA9IGAuJHt0aGlzLmZpeEhlYWRSb3dDbGFzc05hbWV9IHRoZWFkID4gdHIgeyBoZWlnaHQ6ICR7bWF4SGVpZ2h0fXB4OyB9YDtcblxuICAgICAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5hZGQodGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVGaXhCb2R5Um93SGVpZ2h0LmlubmVySFRNTCA9IGAuJHt0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWV9IHRib2R5ID4gdHIgeyBoZWlnaHQ6ICR7bWF4SGVpZ2h0fXB4OyB9YDtcblxuICAgICAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5hZGQodGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt0QyxJQUFhLDRCQUE0QixHQUF6QyxNQUFhLDRCQUE0QjtJQW1CckMsWUFBb0IsRUFBYyxFQUFVLElBQVc7UUFBbkMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFNBQUksR0FBSixJQUFJLENBQU87UUFqQnZELHlCQUFvQixHQUFHLE1BQU0sQ0FBQztRQWU5QixxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXRFLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyx1QkFBdUIsR0FBRyx3QkFBd0IsV0FBVyxFQUFFLENBQUM7UUFD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Q1AsUUFBUSxFQUFFLHdCQUF3QjtLQUNyQyxDQUFDO0dBQ1csNEJBQTRCLENBMEp4QztTQTFKWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJwcmltZW5nL3RhYmxlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltzVGFibGVGcm96ZW5Qb3NpdGlvbl1cIlxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUZyb3plblBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIHNUYWJsZUZyb3plblBvc2l0aW9uID0gXCJsZWZ0XCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBzVGFibGVGcm96ZW5WYWx1ZShfOiBhbnlbXSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFJvd0hlaWdodENsYXNzTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgZml4Qm9keVJvd0NsYXNzTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgc3R5bGVGaXhCb2R5Um93SGVpZ2h0OiBhbnk7XG4gICAgcHJpdmF0ZSBmaXhIZWFkUm93Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBzdHlsZUZpeEhlYWRSb3dIZWlnaHQ6IGFueTtcbiAgICB0YWJsZUhlYWRPYnNlcnZhYmxlOiBNdXRhdGlvbk9ic2VydmVyO1xuICAgIG9uQ29sdW1uc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBob3N0OiBUYWJsZSkge1xuICAgICAgICB0aGlzLmhvc3Qub25Db2xSZXNpemUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgdGhpcy5oYW5kbGVDb2xSZXNpemUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50SWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgaHRtbEhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF07XG5cbiAgICAgICAgdGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZSA9IGByZXNldFRhYmxlUm93c0hlaWdodF8ke2NvbXBvbmVudElkfWA7XG4gICAgICAgIGNvbnN0IHN0eWxlUmVzZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHN0eWxlUmVzZXQuaW5uZXJIVE1MID0gYC4ke3RoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWV9IHRib2R5ID4gdHIsIC4ke3RoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWV9IHRoZWFkID4gdHIgeyBoZWlnaHQ6IGF1dG87IH1gO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZChzdHlsZVJlc2V0KTtcblxuICAgICAgICB0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWUgPSBgZml4VGFibGVCb2R5Um93c0hlaWdodF8ke2NvbXBvbmVudElkfWA7XG4gICAgICAgIHRoaXMuc3R5bGVGaXhCb2R5Um93SGVpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICB0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lfSB0Ym9keSA+IHRyIHsgaGVpZ2h0OiBhdXRvOyB9YDtcbiAgICAgICAgaHRtbEhlYWQuYXBwZW5kQ2hpbGQodGhpcy5zdHlsZUZpeEJvZHlSb3dIZWlnaHQpO1xuXG4gICAgICAgIHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSA9IGBmaXhUYWJsZUhlYWRSb3dzSGVpZ2h0XyR7Y29tcG9uZW50SWR9YDtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEhlYWRSb3dIZWlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHRoaXMuc3R5bGVGaXhIZWFkUm93SGVpZ2h0LmlubmVySFRNTCA9IGAuJHt0aGlzLmZpeEhlYWRSb3dDbGFzc05hbWV9IHRoZWFkID4gdHIgeyBoZWlnaHQ6IGF1dG87IH1gO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZCh0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zVGFibGVGcm96ZW5Qb3NpdGlvbiA9PT0gXCJsZWZ0XCIpIHJldHVybjtcbiAgICAgICAgdGhpcy5hcHBseVN0eWxlc0ZvclRhYmxlKCk7XG4gICAgICAgIHRoaXMuc2V0VXBDb2x1bW5Nb25pdG9yaW5nKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuICAgICAgICBpZiAodGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlSGVhZE9ic2VydmFibGUuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcENvbHVtbk1vbml0b3JpbmcoKSB7XG4gICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgICAgIHRoaXMub25Db2x1bW5zQ2hhbmdlZC5lbWl0KG51bGwpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGFibGVIZWFkcyA9IFsuLi50aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0aGVhZFwiKV07XG4gICAgICAgIHRhYmxlSGVhZHMuZm9yRWFjaCgodGFibGVIZWFkOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZS5vYnNlcnZlKHRhYmxlSGVhZCwge1xuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVN0eWxlc0ZvclRhYmxlKCkge1xuICAgICAgICBjb25zdCBzY3JvbGxXcmFwcGVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtc2Nyb2xsYWJsZS13cmFwcGVyXCIpO1xuICAgICAgICBpZiAoIXNjcm9sbFdyYXBwZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIHNjcm9sbC13cmFwcGVyIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNjcm9sbFdyYXBwZXIuc3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xuICAgICAgICBzY3JvbGxXcmFwcGVyLnN0eWxlLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiO1xuXG4gICAgICAgIGNvbnN0IGZyb3plblRhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtZnJvemVuLXZpZXdcIik7XG4gICAgICAgIGlmICghZnJvemVuVGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIGZyb3plbiBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5vcmRlciA9IFwiMVwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3JkZXJSaWdodCA9IFwibm9uZVwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3JkZXJMZWZ0ID0gXCIxcHggc29saWQgI2RkZGRkZFwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3hTaGFkb3cgPSBcIi01cHggMCA1cHggLTVweCAjY2NjY2NjXCI7XG5cbiAgICAgICAgY29uc3QgdW5mcm96ZW5UYWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXdcIik7XG4gICAgICAgIGlmICghdW5mcm96ZW5UYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgdW5mcm96ZW4gZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdW5mcm96ZW5UYWJsZS5zdHlsZS5wb3NpdGlvbiA9IFwidW5zZXRcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVdpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ29sUmVzaXplKCkge1xuICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jaHJvbml6ZVJvd0hlaWdodCgpIHtcbiAgICAgICAgY29uc3QgdGFibGVCb2R5V3JhcHBlcnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInVpLXRhYmxlLXNjcm9sbGFibGUtYm9keVwiKTtcbiAgICAgICAgY29uc3QgdGFibGVCb2RpZXMgPSBbLi4udGFibGVCb2R5V3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZUJvZGllcyk7XG4gICAgICAgIHRoaXMuYXBwbHlNYXhSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuXG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZFdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWhlYWRlci1ib3hcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZHMgPSBbLi4udGFibGVIZWFkV3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZUhlYWRzKTtcbiAgICAgICAgdGhpcy5hcHBseU1heFJvd0hlaWdodCh0YWJsZUhlYWRzLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZXM6IGFueVtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseU1heFJvd0hlaWdodCh0YWJsZXM6IGFueVtdLCBpc0hlYWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBjb25zdCByb3dTaXplcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCB0ciBvZiB0YWJsZS5yb3dzKSB7XG4gICAgICAgICAgICAgICAgcm93U2l6ZXMucHVzaCh0ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyb3dTaXplcy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5tYXgoLi4ucm93U2l6ZXMpO1xuXG4gICAgICAgIGlmIChpc0hlYWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVGaXhIZWFkUm93SGVpZ2h0LmlubmVySFRNTCA9IGAuJHt0aGlzLmZpeEhlYWRSb3dDbGFzc05hbWV9IHRoZWFkID4gdHIgeyBoZWlnaHQ6ICR7bWF4SGVpZ2h0fXB4OyB9YDtcblxuICAgICAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5hZGQodGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVGaXhCb2R5Um93SGVpZ2h0LmlubmVySFRNTCA9IGAuJHt0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWV9IHRib2R5ID4gdHIgeyBoZWlnaHQ6ICR7bWF4SGVpZ2h0fXB4OyB9YDtcblxuICAgICAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5hZGQodGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __read, __spread, __values } from "tslib";
2
- import { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from "@angular/core";
2
+ import { AfterViewInit, Directive, ElementRef, EventEmitter, Input, OnDestroy } from "@angular/core";
3
3
  import { Table } from "primeng/table";
4
4
  var TableFrozenPositionDirective = /** @class */ (function () {
5
5
  function TableFrozenPositionDirective(el, host) {
@@ -7,23 +7,25 @@ var TableFrozenPositionDirective = /** @class */ (function () {
7
7
  this.el = el;
8
8
  this.host = host;
9
9
  this.sTableFrozenPosition = "left";
10
+ this.onColumnsChanged = new EventEmitter();
10
11
  this.host.onColResize.subscribe(function () {
11
12
  _this.handleColResize();
12
13
  });
13
14
  window.addEventListener("resize", this.handleWindowResize.bind(this));
14
15
  var componentId = new Date().getTime();
16
+ var htmlHead = document.getElementsByTagName("head")[0];
15
17
  this.resetRowHeightClassName = "resetTableRowsHeight_" + componentId;
16
18
  var styleReset = document.createElement("style");
17
19
  styleReset.innerHTML = "." + this.resetRowHeightClassName + " tbody > tr, ." + this.resetRowHeightClassName + " thead > tr { height: auto; }";
18
- document.getElementsByTagName("head")[0].appendChild(styleReset);
20
+ htmlHead.appendChild(styleReset);
19
21
  this.fixBodyRowClassName = "fixTableBodyRowsHeight_" + componentId;
20
22
  this.styleFixBodyRowHeight = document.createElement("style");
21
23
  this.styleFixBodyRowHeight.innerHTML = "." + this.fixBodyRowClassName + " tbody > tr { height: auto; }";
22
- document.getElementsByTagName("head")[0].appendChild(this.styleFixBodyRowHeight);
24
+ htmlHead.appendChild(this.styleFixBodyRowHeight);
23
25
  this.fixHeadRowClassName = "fixTableHeadRowsHeight_" + componentId;
24
26
  this.styleFixHeadRowHeight = document.createElement("style");
25
27
  this.styleFixHeadRowHeight.innerHTML = "." + this.fixHeadRowClassName + " thead > tr { height: auto; }";
26
- document.getElementsByTagName("head")[0].appendChild(this.styleFixHeadRowHeight);
28
+ htmlHead.appendChild(this.styleFixHeadRowHeight);
27
29
  }
28
30
  Object.defineProperty(TableFrozenPositionDirective.prototype, "sTableFrozenValue", {
29
31
  set: function (_) {
@@ -39,9 +41,27 @@ var TableFrozenPositionDirective = /** @class */ (function () {
39
41
  if (this.sTableFrozenPosition === "left")
40
42
  return;
41
43
  this.applyStylesForTable();
44
+ this.setUpColumnMonitoring();
42
45
  };
43
46
  TableFrozenPositionDirective.prototype.ngOnDestroy = function () {
44
47
  window.removeEventListener("resize", this.handleWindowResize.bind(this));
48
+ if (this.tableHeadObservable) {
49
+ this.tableHeadObservable.disconnect();
50
+ }
51
+ };
52
+ TableFrozenPositionDirective.prototype.setUpColumnMonitoring = function () {
53
+ var _this = this;
54
+ this.tableHeadObservable = new MutationObserver(function () {
55
+ _this.synchronizeRowHeight();
56
+ _this.onColumnsChanged.emit(null);
57
+ });
58
+ var tableHeads = __spread(this.el.nativeElement.getElementsByTagName("thead"));
59
+ tableHeads.forEach(function (tableHead) {
60
+ _this.tableHeadObservable.observe(tableHead, {
61
+ subtree: true,
62
+ childList: true
63
+ });
64
+ });
45
65
  };
46
66
  TableFrozenPositionDirective.prototype.applyStylesForTable = function () {
47
67
  var scrollWrapper = this.el.nativeElement.querySelector(".ui-table-scrollable-wrapper");
@@ -186,4 +206,4 @@ var TableFrozenPositionDirective = /** @class */ (function () {
186
206
  return TableFrozenPositionDirective;
187
207
  }());
188
208
  export { TableFrozenPositionDirective };
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3RDO0lBaUJJLHNDQUFvQixFQUFjLEVBQVUsSUFBVztRQUF2RCxpQkF1QkM7UUF2Qm1CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFPO1FBZnZELHlCQUFvQixHQUFHLE1BQU0sQ0FBQztRQWdCMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1lBQzdCLEtBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXRFLElBQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFekMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLDBCQUF3QixXQUFhLENBQUM7UUFDckUsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxVQUFVLENBQUMsU0FBUyxHQUFHLE1BQUksSUFBSSxDQUFDLHVCQUF1QixzQkFBaUIsSUFBSSxDQUFDLHVCQUF1QixrQ0FBK0IsQ0FBQztRQUNwSSxRQUFRLENBQUMs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LE1BQU0sQ0FBQSw4QkFBQSxrREFBRTtvQkFBdkIsSUFBTSxLQUFLLG1CQUFBO29CQUNaLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO29CQUNyRCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztpQkFDakQ7Ozs7Ozs7OztTQUNKO2FBQU07WUFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxHQUFHLE1BQUksSUFBSSxDQUFDLG1CQUFtQiw4QkFBeUIsU0FBUyxVQUFPLENBQUM7O2dCQUU3RyxLQUFvQixJQUFBLFdBQUEsU0FBQSxNQUFNLENBQUEsOEJBQUEsa0RBQUU7b0JBQXZCLElBQU0sS0FBSyxtQkFBQTtvQkFDWixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztvQkFDckQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7aUJBQ2pEOzs7Ozs7Ozs7U0FDSjtJQUNMLENBQUM7O2dCQW5IdUIsVUFBVTtnQkFBZ0IsS0FBSzs7SUFmdkQ7UUFEQyxLQUFLLEVBQUU7OEVBQ3NCO0lBRzlCO1FBREMsS0FBSyxFQUFFO3lFQUtQO0lBVFEsNEJBQTRCO1FBSHhDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSx3QkFBd0I7U0FDckMsQ0FBQztPQUNXLDRCQUE0QixDQXFJeEM7SUFBRCxtQ0FBQztDQUFBLEFBcklELElBcUlDO1NBcklZLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJwcmltZW5nL3RhYmxlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltzVGFibGVGcm96ZW5Qb3NpdGlvbl1cIlxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUZyb3plblBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIHNUYWJsZUZyb3plblBvc2l0aW9uID0gXCJsZWZ0XCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBzVGFibGVGcm96ZW5WYWx1ZShfOiBhbnlbXSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFJvd0hlaWdodENsYXNzTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgZml4Qm9keVJvd0NsYXNzTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgc3R5bGVGaXhCb2R5Um93SGVpZ2h0OiBhbnk7XG4gICAgcHJpdmF0ZSBmaXhIZWFkUm93Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBzdHlsZUZpeEhlYWRSb3dIZWlnaHQ6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgaG9zdDogVGFibGUpIHtcbiAgICAgICAgdGhpcy5ob3N0Lm9uQ29sUmVzaXplLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgIHRoaXMuaGFuZGxlQ29sUmVzaXplKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudElkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgdGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZSA9IGByZXNldFRhYmxlUm93c0hlaWdodF8ke2NvbXBvbmVudElkfWA7XG4gICAgICAgIGNvbnN0IHN0eWxlUmVzZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHN0eWxlUmVzZXQuaW5uZXJIVE1MID0gYC4ke3RoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWV9IHRib2R5ID4gdHIsIC4ke3RoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWV9IHRoZWFkID4gdHIgeyBoZWlnaHQ6IGF1dG87IH1gO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQoc3R5bGVSZXNldCk7XG5cbiAgICAgICAgdGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lID0gYGZpeFRhYmxlQm9keVJvd3NIZWlnaHRfJHtjb21wb25lbnRJZH1gO1xuICAgICAgICB0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEJvZHlSb3dIZWlnaHQuaW5uZXJIVE1MID0gYC4ke3RoaXMuZml4Qm9keVJvd0NsYXNzTmFtZX0gdGJvZHkgPiB0ciB7IGhlaWdodDogYXV0bzsgfWA7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZCh0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodCk7XG5cbiAgICAgICAgdGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lID0gYGZpeFRhYmxlSGVhZFJvd3NIZWlnaHRfJHtjb21wb25lbnRJZH1gO1xuICAgICAgICB0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEhlYWRSb3dIZWlnaHQuaW5uZXJIVE1MID0gYC4ke3RoaXMuZml4SGVhZFJvd0NsYXNzTmFtZX0gdGhlYWQgPiB0ciB7IGhlaWdodDogYXV0bzsgfWA7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZCh0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zVGFibGVGcm96ZW5Qb3NpdGlvbiA9PT0gXCJsZWZ0XCIpIHJldHVybjtcbiAgICAgICAgdGhpcy5hcHBseVN0eWxlc0ZvclRhYmxlKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlTdHlsZXNGb3JUYWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsV3JhcHBlciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnVpLXRhYmxlLXNjcm9sbGFibGUtd3JhcHBlclwiKTtcbiAgICAgICAgaWYgKCFzY3JvbGxXcmFwcGVyKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gZmluZCBzY3JvbGwtd3JhcHBlciBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzY3JvbGxXcmFwcGVyLnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcbiAgICAgICAgc2Nyb2xsV3JhcHBlci5zdHlsZS5mbGV4RGlyZWN0aW9uID0gXCJyb3dcIjtcblxuICAgICAgICBjb25zdCBmcm96ZW5UYWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnVpLXRhYmxlLWZyb3plbi12aWV3XCIpO1xuICAgICAgICBpZiAoIWZyb3plblRhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gZmluZCBmcm96ZW4gZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUub3JkZXIgPSBcIjFcIjtcbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUuYm9yZGVyUmlnaHQgPSBcIm5vbmVcIjtcbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUuYm9yZGVyTGVmdCA9IFwiMXB4IHNvbGlkICNkZGRkZGRcIjtcbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUuYm94U2hhZG93ID0gXCItNXB4IDAgNXB4IC01cHggI2NjY2NjY1wiO1xuXG4gICAgICAgIGNvbnN0IHVuZnJvemVuVGFibGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi51aS10YWJsZS11bmZyb3plbi12aWV3XCIpO1xuICAgICAgICBpZiAoIXVuZnJvemVuVGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIHVuZnJvemVuIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVuZnJvemVuVGFibGUuc3R5bGUucG9zaXRpb24gPSBcInVuc2V0XCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVXaW5kb3dSZXNpemUoKSB7XG4gICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNvbFJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3luY2hyb25pemVSb3dIZWlnaHQoKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlQm9keVdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWJvZHlcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlQm9kaWVzID0gWy4uLnRhYmxlQm9keVdyYXBwZXJzXS5tYXAoZGl2V3JhcHBlciA9PiBbLi4uZGl2V3JhcHBlci5jaGlsZE5vZGVzXS5maW5kKHAgPT4gcC50YWdOYW1lID09PSBcIlRBQkxFXCIpKTtcbiAgICAgICAgdGhpcy5yZWNhbGN1bGF0ZURlZmF1bHRSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuICAgICAgICB0aGlzLmFwcGx5TWF4Um93SGVpZ2h0KHRhYmxlQm9kaWVzKTtcblxuICAgICAgICBjb25zdCB0YWJsZUhlYWRXcmFwcGVycyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidWktdGFibGUtc2Nyb2xsYWJsZS1oZWFkZXItYm94XCIpO1xuICAgICAgICBjb25zdCB0YWJsZUhlYWRzID0gWy4uLnRhYmxlSGVhZFdyYXBwZXJzXS5tYXAoZGl2V3JhcHBlciA9PiBbLi4uZGl2V3JhcHBlci5jaGlsZE5vZGVzXS5maW5kKHAgPT4gcC50YWdOYW1lID09PSBcIlRBQkxFXCIpKTtcbiAgICAgICAgdGhpcy5yZWNhbGN1bGF0ZURlZmF1bHRSb3dIZWlnaHQodGFibGVIZWFkcyk7XG4gICAgICAgIHRoaXMuYXBwbHlNYXhSb3dIZWlnaHQodGFibGVIZWFkcywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWNhbGN1bGF0ZURlZmF1bHRSb3dIZWlnaHQodGFibGVzOiBhbnlbXSkge1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWUpO1xuICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmZpeEhlYWRSb3dDbGFzc05hbWUpO1xuICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LmFkZCh0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlNYXhSb3dIZWlnaHQodGFibGVzOiBhbnlbXSwgaXNIZWFkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgcm93U2l6ZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdHIgb2YgdGFibGUucm93cykge1xuICAgICAgICAgICAgICAgIHJvd1NpemVzLnB1c2godHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcm93U2l6ZXMubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IE1hdGgubWF4KC4uLnJvd1NpemVzKTtcblxuICAgICAgICBpZiAoaXNIZWFkKSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lfSB0aGVhZCA+IHRyIHsgaGVpZ2h0OiAke21heEhlaWdodH1weDsgfWA7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lfSB0Ym9keSA+IHRyIHsgaGVpZ2h0OiAke21heEhlaWdodH1weDsgfWA7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt0QztJQW1CSSxzQ0FBb0IsRUFBYyxFQUFVLElBQVc7UUFBdkQsaUJBd0JDO1FBeEJtQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBTztRQWpCdkQseUJBQW9CLEdBQUcsTUFBTSxDQUFDO1FBZTlCLHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3JELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUM3QixLQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV0RSxJQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLElBQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsMEJBQXdCLFdBQWEsQ0FBQztRQUNyRSxJQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFB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QUNaLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO29CQUNyRCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztpQkFDakQ7Ozs7Ozs7OztTQUNKO0lBQ0wsQ0FBQzs7Z0JBdEl1QixVQUFVO2dCQUFnQixLQUFLOztJQWpCdkQ7UUFEQyxLQUFLLEVBQUU7OEVBQ3NCO0lBRzlCO1FBREMsS0FBSyxFQUFFO3lFQUtQO0lBVFEsNEJBQTRCO1FBSHhDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSx3QkFBd0I7U0FDckMsQ0FBQztPQUNXLDRCQUE0QixDQTBKeEM7SUFBRCxtQ0FBQztDQUFBLEFBMUpELElBMEpDO1NBMUpZLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiW3NUYWJsZUZyb3plblBvc2l0aW9uXVwiXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRnJvemVuUG9zaXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgc1RhYmxlRnJvemVuUG9zaXRpb24gPSBcImxlZnRcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNUYWJsZUZyb3plblZhbHVlKF86IGFueVtdKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBmaXhCb2R5Um93Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBzdHlsZUZpeEJvZHlSb3dIZWlnaHQ6IGFueTtcbiAgICBwcml2YXRlIGZpeEhlYWRSb3dDbGFzc05hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHN0eWxlRml4SGVhZFJvd0hlaWdodDogYW55O1xuICAgIHRhYmxlSGVhZE9ic2VydmFibGU6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgb25Db2x1bW5zQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIGhvc3Q6IFRhYmxlKSB7XG4gICAgICAgIHRoaXMuaG9zdC5vbkNvbFJlc2l6ZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICB0aGlzLmhhbmRsZUNvbFJlc2l6ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpKTtcblxuICAgICAgICBjb25zdCBjb21wb25lbnRJZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBodG1sSGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtcblxuICAgICAgICB0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lID0gYHJlc2V0VGFibGVSb3dzSGVpZ2h0XyR7Y29tcG9uZW50SWR9YDtcbiAgICAgICAgY29uc3Qgc3R5bGVSZXNldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgc3R5bGVSZXNldC5pbm5lckhUTUwgPSBgLiR7dGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZX0gdGJvZHkgPiB0ciwgLiR7dGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZX0gdGhlYWQgPiB0ciB7IGhlaWdodDogYXV0bzsgfWA7XG4gICAgICAgIGh0bWxIZWFkLmFwcGVuZENoaWxkKHN0eWxlUmVzZXQpO1xuXG4gICAgICAgIHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSA9IGBmaXhUYWJsZUJvZHlSb3dzSGVpZ2h0XyR7Y29tcG9uZW50SWR9YDtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEJvZHlSb3dIZWlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHRoaXMuc3R5bGVGaXhCb2R5Um93SGVpZ2h0LmlubmVySFRNTCA9IGAuJHt0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWV9IHRib2R5ID4gdHIgeyBoZWlnaHQ6IGF1dG87IH1gO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZCh0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodCk7XG5cbiAgICAgICAgdGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lID0gYGZpeFRhYmxlSGVhZFJvd3NIZWlnaHRfJHtjb21wb25lbnRJZH1gO1xuICAgICAgICB0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEhlYWRSb3dIZWlnaHQuaW5uZXJIVE1MID0gYC4ke3RoaXMuZml4SGVhZFJvd0NsYXNzTmFtZX0gdGhlYWQgPiB0ciB7IGhlaWdodDogYXV0bzsgfWA7XG4gICAgICAgIGh0bWxIZWFkLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVGaXhIZWFkUm93SGVpZ2h0KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNUYWJsZUZyb3plblBvc2l0aW9uID09PSBcImxlZnRcIikgcmV0dXJuO1xuICAgICAgICB0aGlzLmFwcGx5U3R5bGVzRm9yVGFibGUoKTtcbiAgICAgICAgdGhpcy5zZXRVcENvbHVtbk1vbml0b3JpbmcoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUuYmluZCh0aGlzKSk7XG4gICAgICAgIGlmICh0aGlzLnRhYmxlSGVhZE9ic2VydmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZS5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwQ29sdW1uTW9uaXRvcmluZygpIHtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5vbkNvbHVtbnNDaGFuZ2VkLmVtaXQobnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0YWJsZUhlYWRzID0gWy4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRoZWFkXCIpXTtcbiAgICAgICAgdGFibGVIZWFkcy5mb3JFYWNoKCh0YWJsZUhlYWQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlLm9ic2VydmUodGFibGVIZWFkLCB7XG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5U3R5bGVzRm9yVGFibGUoKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFdyYXBwZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi51aS10YWJsZS1zY3JvbGxhYmxlLXdyYXBwZXJcIik7XG4gICAgICAgIGlmICghc2Nyb2xsV3JhcHBlcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgc2Nyb2xsLXdyYXBwZXIgZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2Nyb2xsV3JhcHBlci5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgICAgIHNjcm9sbFdyYXBwZXIuc3R5bGUuZmxleERpcmVjdGlvbiA9IFwicm93XCI7XG5cbiAgICAgICAgY29uc3QgZnJvemVuVGFibGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi51aS10YWJsZS1mcm96ZW4tdmlld1wiKTtcbiAgICAgICAgaWYgKCFmcm96ZW5UYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgZnJvemVuIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLm9yZGVyID0gXCIxXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJvcmRlclJpZ2h0ID0gXCJub25lXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJvcmRlckxlZnQgPSBcIjFweCBzb2xpZCAjZGRkZGRkXCI7XG4gICAgICAgIGZyb3plblRhYmxlLnN0eWxlLmJveFNoYWRvdyA9IFwiLTVweCAwIDVweCAtNXB4ICNjY2NjY2NcIjtcblxuICAgICAgICBjb25zdCB1bmZyb3plblRhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtdW5mcm96ZW4tdmlld1wiKTtcbiAgICAgICAgaWYgKCF1bmZyb3plblRhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gZmluZCB1bmZyb3plbiBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB1bmZyb3plblRhYmxlLnN0eWxlLnBvc2l0aW9uID0gXCJ1bnNldFwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlV2luZG93UmVzaXplKCkge1xuICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDb2xSZXNpemUoKSB7XG4gICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNocm9uaXplUm93SGVpZ2h0KCkge1xuICAgICAgICBjb25zdCB0YWJsZUJvZHlXcmFwcGVycyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidWktdGFibGUtc2Nyb2xsYWJsZS1ib2R5XCIpO1xuICAgICAgICBjb25zdCB0YWJsZUJvZGllcyA9IFsuLi50YWJsZUJvZHlXcmFwcGVyc10ubWFwKGRpdldyYXBwZXIgPT4gWy4uLmRpdldyYXBwZXIuY2hpbGROb2Rlc10uZmluZChwID0+IHAudGFnTmFtZSA9PT0gXCJUQUJMRVwiKSk7XG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGVEZWZhdWx0Um93SGVpZ2h0KHRhYmxlQm9kaWVzKTtcbiAgICAgICAgdGhpcy5hcHBseU1heFJvd0hlaWdodCh0YWJsZUJvZGllcyk7XG5cbiAgICAgICAgY29uc3QgdGFibGVIZWFkV3JhcHBlcnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInVpLXRhYmxlLXNjcm9sbGFibGUtaGVhZGVyLWJveFwiKTtcbiAgICAgICAgY29uc3QgdGFibGVIZWFkcyA9IFsuLi50YWJsZUhlYWRXcmFwcGVyc10ubWFwKGRpdldyYXBwZXIgPT4gWy4uLmRpdldyYXBwZXIuY2hpbGROb2Rlc10uZmluZChwID0+IHAudGFnTmFtZSA9PT0gXCJUQUJMRVwiKSk7XG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGVEZWZhdWx0Um93SGVpZ2h0KHRhYmxlSGVhZHMpO1xuICAgICAgICB0aGlzLmFwcGx5TWF4Um93SGVpZ2h0KHRhYmxlSGVhZHMsIHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVjYWxjdWxhdGVEZWZhdWx0Um93SGVpZ2h0KHRhYmxlczogYW55W10pIHtcbiAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5hZGQodGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5TWF4Um93SGVpZ2h0KHRhYmxlczogYW55W10sIGlzSGVhZDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHJvd1NpemVzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRyIG9mIHRhYmxlLnJvd3MpIHtcbiAgICAgICAgICAgICAgICByb3dTaXplcy5wdXNoKHRyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJvd1NpemVzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1heCguLi5yb3dTaXplcyk7XG5cbiAgICAgICAgaWYgKGlzSGVhZCkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZUZpeEhlYWRSb3dIZWlnaHQuaW5uZXJIVE1MID0gYC4ke3RoaXMuZml4SGVhZFJvd0NsYXNzTmFtZX0gdGhlYWQgPiB0ciB7IGhlaWdodDogJHttYXhIZWlnaHR9cHg7IH1gO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LmFkZCh0aGlzLmZpeEhlYWRSb3dDbGFzc05hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdHlsZUZpeEJvZHlSb3dIZWlnaHQuaW5uZXJIVE1MID0gYC4ke3RoaXMuZml4Qm9keVJvd0NsYXNzTmFtZX0gdGJvZHkgPiB0ciB7IGhlaWdodDogJHttYXhIZWlnaHR9cHg7IH1gO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LmFkZCh0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -3510,23 +3510,25 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
3510
3510
  this.el = el;
3511
3511
  this.host = host;
3512
3512
  this.sTableFrozenPosition = "left";
3513
+ this.onColumnsChanged = new EventEmitter();
3513
3514
  this.host.onColResize.subscribe(() => {
3514
3515
  this.handleColResize();
3515
3516
  });
3516
3517
  window.addEventListener("resize", this.handleWindowResize.bind(this));
3517
3518
  const componentId = new Date().getTime();
3519
+ const htmlHead = document.getElementsByTagName("head")[0];
3518
3520
  this.resetRowHeightClassName = `resetTableRowsHeight_${componentId}`;
3519
3521
  const styleReset = document.createElement("style");
3520
3522
  styleReset.innerHTML = `.${this.resetRowHeightClassName} tbody > tr, .${this.resetRowHeightClassName} thead > tr { height: auto; }`;
3521
- document.getElementsByTagName("head")[0].appendChild(styleReset);
3523
+ htmlHead.appendChild(styleReset);
3522
3524
  this.fixBodyRowClassName = `fixTableBodyRowsHeight_${componentId}`;
3523
3525
  this.styleFixBodyRowHeight = document.createElement("style");
3524
3526
  this.styleFixBodyRowHeight.innerHTML = `.${this.fixBodyRowClassName} tbody > tr { height: auto; }`;
3525
- document.getElementsByTagName("head")[0].appendChild(this.styleFixBodyRowHeight);
3527
+ htmlHead.appendChild(this.styleFixBodyRowHeight);
3526
3528
  this.fixHeadRowClassName = `fixTableHeadRowsHeight_${componentId}`;
3527
3529
  this.styleFixHeadRowHeight = document.createElement("style");
3528
3530
  this.styleFixHeadRowHeight.innerHTML = `.${this.fixHeadRowClassName} thead > tr { height: auto; }`;
3529
- document.getElementsByTagName("head")[0].appendChild(this.styleFixHeadRowHeight);
3531
+ htmlHead.appendChild(this.styleFixHeadRowHeight);
3530
3532
  }
3531
3533
  set sTableFrozenValue(_) {
3532
3534
  setTimeout(() => {
@@ -3537,9 +3539,26 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
3537
3539
  if (this.sTableFrozenPosition === "left")
3538
3540
  return;
3539
3541
  this.applyStylesForTable();
3542
+ this.setUpColumnMonitoring();
3540
3543
  }
3541
3544
  ngOnDestroy() {
3542
3545
  window.removeEventListener("resize", this.handleWindowResize.bind(this));
3546
+ if (this.tableHeadObservable) {
3547
+ this.tableHeadObservable.disconnect();
3548
+ }
3549
+ }
3550
+ setUpColumnMonitoring() {
3551
+ this.tableHeadObservable = new MutationObserver(() => {
3552
+ this.synchronizeRowHeight();
3553
+ this.onColumnsChanged.emit(null);
3554
+ });
3555
+ const tableHeads = [...this.el.nativeElement.getElementsByTagName("thead")];
3556
+ tableHeads.forEach((tableHead) => {
3557
+ this.tableHeadObservable.observe(tableHead, {
3558
+ subtree: true,
3559
+ childList: true
3560
+ });
3561
+ });
3543
3562
  }
3544
3563
  applyStylesForTable() {
3545
3564
  const scrollWrapper = this.el.nativeElement.querySelector(".ui-table-scrollable-wrapper");