@seniorsistemas/angular-components 14.16.24 → 14.16.25

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.
@@ -20,7 +20,9 @@ export declare class TableFrozenPositionDirective implements AfterViewInit, OnDe
20
20
  ngAfterContentChecked(): void;
21
21
  ngOnDestroy(): void;
22
22
  private setUpTableEvents;
23
+ private setUpRowResizeMonitoring;
23
24
  private setUpColumnMonitoring;
25
+ private applyHeightForExpandedRows;
24
26
  private applyStylesForTable;
25
27
  private handleWindowResize;
26
28
  private handleColResize;
@@ -33,6 +33,7 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
33
33
  set sTableFrozenValue(_) {
34
34
  setTimeout(() => {
35
35
  this.synchronizeRowHeight();
36
+ this.setUpRowResizeMonitoring();
36
37
  });
37
38
  }
38
39
  ngAfterViewInit() {
@@ -64,32 +65,26 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
64
65
  this.handleColResize();
65
66
  });
66
67
  this.table.onRowExpand.subscribe(() => {
67
- if (this.rowExpandedObserver) {
68
- this.rowExpandedObserver.disconnect();
69
- }
70
- // The version of Angular/Typescript does not recognize the object ResizeObserver and breaks build
71
- this.rowExpandedObserver = new window.ResizeObserver(() => {
72
- const frozenTDsToAdjust = this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
73
- const unFrozenTDs = this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
74
- frozenTDsToAdjust.forEach((frozenTd, index) => {
75
- const unfrozenTD = unFrozenTDs[index];
76
- const unfrozenHeight = unfrozenTD.getBoundingClientRect().height;
77
- const frozenHeight = frozenTd.getBoundingClientRect().height;
78
- if (Math.abs(unfrozenHeight - frozenHeight) > 1) {
79
- frozenTd.style.height = `${unfrozenHeight}px`;
80
- }
81
- });
82
- });
83
- setTimeout(() => {
84
- const tdsToAdjust = this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
85
- const originalsTds = this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
86
- tdsToAdjust.forEach((td, index) => {
87
- const originalTd = originalsTds[index];
88
- const height = originalTd.getBoundingClientRect().height;
89
- td.innerHTML = `<div style="height: ${height}px"></div>`;
90
- td.style.padding = "0px";
91
- this.rowExpandedObserver.observe(originalTd);
92
- });
68
+ this.setUpRowResizeMonitoring();
69
+ });
70
+ }
71
+ setUpRowResizeMonitoring() {
72
+ if (this.rowExpandedObserver) {
73
+ this.rowExpandedObserver.disconnect();
74
+ }
75
+ // The version of Angular/Typescript does not recognize the object ResizeObserver and breaks build
76
+ this.rowExpandedObserver = new window.ResizeObserver(() => {
77
+ this.applyHeightForExpandedRows();
78
+ });
79
+ setTimeout(() => {
80
+ const tdsToAdjust = this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
81
+ const originalsTds = this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
82
+ tdsToAdjust.forEach((td, index) => {
83
+ const originalTd = originalsTds[index];
84
+ const height = originalTd.getBoundingClientRect().height;
85
+ td.innerHTML = `<div style="height: ${height}px"></div>`;
86
+ td.style.padding = "0px";
87
+ this.rowExpandedObserver.observe(originalTd);
93
88
  });
94
89
  });
95
90
  }
@@ -106,6 +101,19 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
106
101
  });
107
102
  });
108
103
  }
104
+ applyHeightForExpandedRows() {
105
+ const frozenTDsToAdjust = this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
106
+ const unFrozenTDs = this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
107
+ frozenTDsToAdjust.forEach((frozenTd, index) => {
108
+ const unfrozenTD = unFrozenTDs[index];
109
+ const unfrozenHeight = unfrozenTD.getBoundingClientRect().height;
110
+ const frozenHeight = frozenTd.getBoundingClientRect().height;
111
+ if (Math.abs(unfrozenHeight - frozenHeight) > 1) {
112
+ frozenTd.style.height = `${unfrozenHeight}px`;
113
+ frozenTd.innerHTML = `<div></div>`;
114
+ }
115
+ });
116
+ }
109
117
  applyStylesForTable() {
110
118
  const scrollWrapper = this.el.nativeElement.querySelector(".ui-table-scrollable-wrapper");
111
119
  if (!scrollWrapper) {
@@ -197,4 +205,4 @@ TableFrozenPositionDirective = __decorate([
197
205
  })
198
206
  ], TableFrozenPositionDirective);
199
207
  export { TableFrozenPositionDirective };
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt0QyxJQUFhLDRCQUE0QixHQUF6QyxNQUFhLDRCQUE0QjtJQXVCckMsWUFBb0IsRUFBYyxFQUFVLElBQVc7UUFBbkMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFNBQUksR0FBSixJQUFJLENBQU87UUFyQnZELHlCQUFvQixHQUFHLE1BQU0sQ0FBQztRQVV0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQVMvQixxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdyRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxHQUFHLDBCQUEwQixDQUFDO1FBQ25GLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXRFLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsUUFBUSxD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QyxxQkFBcUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLHlCQUF5QixTQUFTLE9BQU8sQ0FBQztZQUU3RyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtnQkFDeEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3JELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0o7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUFqTTJCLFVBQVU7WUFBZ0IsS0FBSzs7QUFyQnZEO0lBREMsS0FBSyxFQUFFOzBFQUNzQjtBQUc5QjtJQURDLEtBQUssRUFBRTtxRUFLUDtBQVRRLDRCQUE0QjtJQUh4QyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsd0JBQXdCO0tBQ3JDLENBQUM7R0FDVyw0QkFBNEIsQ0F3TnhDO1NBeE5ZLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiW3NUYWJsZUZyb3plblBvc2l0aW9uXVwiXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRnJvemVuUG9zaXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudENoZWNrZWQge1xuICAgIEBJbnB1dCgpXG4gICAgc1RhYmxlRnJvemVuUG9zaXRpb24gPSBcImxlZnRcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNUYWJsZUZyb3plblZhbHVlKF86IGFueVtdKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRhYmxlOiBUYWJsZTtcbiAgICBwcml2YXRlIGlzVGFibGVWaXNpYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXNldFJvd0hlaWdodENsYXNzTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgZml4Qm9keVJvd0NsYXNzTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgc3R5bGVGaXhCb2R5Um93SGVpZ2h0OiBhbnk7XG4gICAgcHJpdmF0ZSBmaXhIZWFkUm93Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBzdHlsZUZpeEhlYWRSb3dIZWlnaHQ6IGFueTtcblxuICAgIHRhYmxlSGVhZE9ic2VydmFibGU6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgcm93RXhwYW5kZWRPYnNlcnZlcjogYW55O1xuICAgIG9uQ29sdW1uc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBob3N0OiBUYWJsZSkge1xuICAgICAgICB0aGlzLnRhYmxlID0gaG9zdDtcbiAgICAgICAgdGhpcy50YWJsZS5zdHlsZUNsYXNzID0gKHRoaXMudGFibGUuc3R5bGVDbGFzcyB8fCBcIlwiKSArIFwiIHMtdGFibGUtZnJvemVuLXBvc2l0aW9uXCI7XG4gICAgICAgIHRoaXMuc2V0VXBUYWJsZUV2ZW50cygpO1xuXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudElkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIGNvbnN0IGh0bWxIZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO1xuXG4gICAgICAgIHRoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWUgPSBgcmVzZXRUYWJsZVJvd3NIZWlnaHRfJHtjb21wb25lbnRJZH1gO1xuICAgICAgICBjb25zdCBzdHlsZVJlc2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICBzdHlsZVJlc2V0LmlubmVySFRNTCA9IGAuJHt0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lfSB0Ym9keSA+IHRyLCAuJHt0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lfSB0aGVhZCA+IHRyIHsgaGVpZ2h0OiBhdXRvOyB9YDtcbiAgICAgICAgaHRtbEhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVSZXNldCk7XG5cbiAgICAgICAgdGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lID0gYGZpeFRhYmxlQm9keVJvd3NIZWlnaHRfJHtjb21wb25lbnRJZH1gO1xuICAgICAgICB0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEJvZHlSb3dIZWlnaHQuaW5uZXJIVE1MID0gYC4ke3RoaXMuZml4Qm9keVJvd0NsYXNzTmFtZX0gdGJvZHkgPiB0ciB7IGhlaWdodDogYXV0bzsgfWA7XG4gICAgICAgIGh0bWxIZWFkLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVGaXhCb2R5Um93SGVpZ2h0KTtcblxuICAgICAgICB0aGlzLmZpeEhlYWRSb3dDbGFzc05hbWUgPSBgZml4VGFibGVIZWFkUm93c0hlaWdodF8ke2NvbXBvbmVudElkfWA7XG4gICAgICAgIHRoaXMuc3R5bGVGaXhIZWFkUm93SGVpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICB0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lfSB0aGVhZCA+IHRyIHsgaGVpZ2h0OiBhdXRvOyB9YDtcbiAgICAgICAgaHRtbEhlYWQuYXBwZW5kQ2hpbGQodGhpcy5zdHlsZUZpeEhlYWRSb3dIZWlnaHQpO1xuXG4gICAgICAgIGNvbnN0IGV4cGFuZEZyb3plblN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICBleHBhbmRGcm96ZW5TdHlsZS5pbm5lckhUTUwgPSBcIi5zLXRhYmxlLWZyb3plbi1wb3NpdGlvbiAudWktdGFibGUtZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZCB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfVwiO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZChleHBhbmRGcm96ZW5TdHlsZSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zVGFibGVGcm96ZW5Qb3NpdGlvbiA9PT0gXCJsZWZ0XCIpIHJldHVybjtcbiAgICAgICAgdGhpcy5hcHBseVN0eWxlc0ZvclRhYmxlKCk7XG4gICAgICAgIHRoaXMuc2V0VXBDb2x1bW5Nb25pdG9yaW5nKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNUYWJsZVZpc2libGUgJiYgISF0aGlzLnRhYmxlLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlzVGFibGVWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNUYWJsZVZpc2libGUgJiYgIXRoaXMudGFibGUuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNUYWJsZVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgaWYgKHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucm93RXhwYW5kZWRPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwVGFibGVFdmVudHMoKSB7XG4gICAgICAgIHRoaXMudGFibGUub25Db2xSZXNpemUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29sUmVzaXplKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudGFibGUub25Sb3dFeHBhbmQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUaGUgdmVyc2lvbiBvZiBBbmd1bGFyL1R5cGVzY3JpcHQgZG9lcyBub3QgcmVjb2duaXplIHRoZSBvYmplY3QgUmVzaXplT2JzZXJ2ZXIgYW5kIGJyZWFrcyBidWlsZFxuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyID0gbmV3ICh3aW5kb3cgYXMgYW55KS5SZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnJvemVuVERzVG9BZGp1c3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS1mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVuRnJvemVuVERzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtdW5mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICAgICAgICAgIGZyb3plblREc1RvQWRqdXN0LmZvckVhY2goKGZyb3plblRkOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmZyb3plblREOiBIVE1MRWxlbWVudCA9IHVuRnJvemVuVERzW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5mcm96ZW5IZWlnaHQgPSB1bmZyb3plblRELmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnJvemVuSGVpZ2h0ID0gZnJvemVuVGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnModW5mcm96ZW5IZWlnaHQgLSBmcm96ZW5IZWlnaHQpID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJvemVuVGQuc3R5bGUuaGVpZ2h0ID0gYCR7dW5mcm96ZW5IZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGRzVG9BZGp1c3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS1mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsc1RkcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgICAgICAgICB0ZHNUb0FkanVzdC5mb3JFYWNoKCh0ZDogSFRNTEVsZW1lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxUZDogSFRNTEVsZW1lbnQgPSBvcmlnaW5hbHNUZHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBvcmlnaW5hbFRkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgdGQuaW5uZXJIVE1MID0gYDxkaXYgc3R5bGU9XCJoZWlnaHQ6ICR7aGVpZ2h0fXB4XCI+PC9kaXY+YDtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUucGFkZGluZyA9IFwiMHB4XCI7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyLm9ic2VydmUob3JpZ2luYWxUZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcENvbHVtbk1vbml0b3JpbmcoKSB7XG4gICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgICAgIHRoaXMub25Db2x1bW5zQ2hhbmdlZC5lbWl0KG51bGwpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGFibGVIZWFkcyA9IFsuLi50aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0aGVhZFwiKV07XG4gICAgICAgIHRhYmxlSGVhZHMuZm9yRWFjaCgodGFibGVIZWFkOiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlSGVhZE9ic2VydmFibGUub2JzZXJ2ZSh0YWJsZUhlYWQsIHtcbiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlTdHlsZXNGb3JUYWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsV3JhcHBlciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnVpLXRhYmxlLXNjcm9sbGFibGUtd3JhcHBlclwiKTtcbiAgICAgICAgaWYgKCFzY3JvbGxXcmFwcGVyKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gZmluZCBzY3JvbGwtd3JhcHBlciBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzY3JvbGxXcmFwcGVyLnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcbiAgICAgICAgc2Nyb2xsV3JhcHBlci5zdHlsZS5mbGV4RGlyZWN0aW9uID0gXCJyb3dcIjtcblxuICAgICAgICBjb25zdCBmcm96ZW5UYWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnVpLXRhYmxlLWZyb3plbi12aWV3XCIpO1xuICAgICAgICBpZiAoIWZyb3plblRhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gZmluZCBmcm96ZW4gZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUub3JkZXIgPSBcIjFcIjtcbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUuYm9yZGVyUmlnaHQgPSBcIm5vbmVcIjtcbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUuYm9yZGVyTGVmdCA9IFwiMXB4IHNvbGlkICNkZGRkZGRcIjtcbiAgICAgICAgZnJvemVuVGFibGUuc3R5bGUuYm94U2hhZG93ID0gXCItNXB4IDAgNXB4IC01cHggI2NjY2NjY1wiO1xuXG4gICAgICAgIGNvbnN0IHVuZnJvemVuVGFibGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi51aS10YWJsZS11bmZyb3plbi12aWV3XCIpO1xuICAgICAgICBpZiAoIXVuZnJvemVuVGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIHVuZnJvemVuIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVuZnJvemVuVGFibGUuc3R5bGUucG9zaXRpb24gPSBcInVuc2V0XCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVXaW5kb3dSZXNpemUoKSB7XG4gICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNvbFJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3luY2hyb25pemVSb3dIZWlnaHQoKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlQm9keVdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWJvZHlcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlQm9kaWVzID0gWy4uLnRhYmxlQm9keVdyYXBwZXJzXS5tYXAoZGl2V3JhcHBlciA9PiBbLi4uZGl2V3JhcHBlci5jaGlsZE5vZGVzXS5maW5kKHAgPT4gcC50YWdOYW1lID09PSBcIlRBQkxFXCIpKTtcbiAgICAgICAgdGhpcy5yZWNhbGN1bGF0ZURlZmF1bHRSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuICAgICAgICB0aGlzLmFwcGx5TWF4Um93SGVpZ2h0KHRhYmxlQm9kaWVzKTtcblxuICAgICAgICBjb25zdCB0YWJsZUhlYWRXcmFwcGVycyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidWktdGFibGUtc2Nyb2xsYWJsZS1oZWFkZXItYm94XCIpO1xuICAgICAgICBjb25zdCB0YWJsZUhlYWRzID0gWy4uLnRhYmxlSGVhZFdyYXBwZXJzXS5tYXAoZGl2V3JhcHBlciA9PiBbLi4uZGl2V3JhcHBlci5jaGlsZE5vZGVzXS5maW5kKHAgPT4gcC50YWdOYW1lID09PSBcIlRBQkxFXCIpKTtcbiAgICAgICAgdGhpcy5yZWNhbGN1bGF0ZURlZmF1bHRSb3dIZWlnaHQodGFibGVIZWFkcyk7XG4gICAgICAgIHRoaXMuYXBwbHlNYXhSb3dIZWlnaHQodGFibGVIZWFkcywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWNhbGN1bGF0ZURlZmF1bHRSb3dIZWlnaHQodGFibGVzOiBhbnlbXSkge1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWUpO1xuICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmZpeEhlYWRSb3dDbGFzc05hbWUpO1xuICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LmFkZCh0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlNYXhSb3dIZWlnaHQodGFibGVzOiBhbnlbXSwgaXNIZWFkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgcm93U2l6ZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdHIgb2YgdGFibGUucm93cykge1xuICAgICAgICAgICAgICAgIGlmICh0ci5jbGFzc0xpc3QuY29udGFpbnMoXCJzZHMtZXhwYW5kZWQtcm93XCIpKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICByb3dTaXplcy5wdXNoKHRyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJvd1NpemVzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1heCguLi5yb3dTaXplcyk7XG5cbiAgICAgICAgaWYgKGlzSGVhZCkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZUZpeEhlYWRSb3dIZWlnaHQuaW5uZXJIVE1MID0gYC4ke3RoaXMuZml4SGVhZFJvd0NsYXNzTmFtZX0gdGhlYWQgPiB0ciB7IGhlaWdodDogJHttYXhIZWlnaHR9cHg7IH1gO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LmFkZCh0aGlzLmZpeEhlYWRSb3dDbGFzc05hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdHlsZUZpeEJvZHlSb3dIZWlnaHQuaW5uZXJIVE1MID0gYC4ke3RoaXMuZml4Qm9keVJvd0NsYXNzTmFtZX0gdGJvZHkgPiB0ciB7IGhlaWdodDogJHttYXhIZWlnaHR9cHg7IH1gO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgICAgIHRhYmxlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LmFkZCh0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt0QyxJQUFhLDRCQUE0QixHQUF6QyxNQUFhLDRCQUE0QjtJQXdCckMsWUFBb0IsRUFBYyxFQUFVLElBQVc7UUFBbkMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFNBQUksR0FBSixJQUFJLENBQU87UUF0QnZELHlCQUFvQixHQUFHLE1BQU0sQ0FBQztRQVd0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQVMvQixxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdyRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxHQUFHLDBCQUEwQixDQUFDO1FBQ25GLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXRFLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsUUFBUSxD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LE1BQU0sRUFBRTtnQkFDeEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3JELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0o7YUFBTTtZQUNILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLHlCQUF5QixTQUFTLE9BQU8sQ0FBQztZQUU3RyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtnQkFDeEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3JELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0o7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUExTTJCLFVBQVU7WUFBZ0IsS0FBSzs7QUF0QnZEO0lBREMsS0FBSyxFQUFFOzBFQUNzQjtBQUc5QjtJQURDLEtBQUssRUFBRTtxRUFNUDtBQVZRLDRCQUE0QjtJQUh4QyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsd0JBQXdCO0tBQ3JDLENBQUM7R0FDVyw0QkFBNEIsQ0FrT3hDO1NBbE9ZLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiW3NUYWJsZUZyb3plblBvc2l0aW9uXVwiXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRnJvemVuUG9zaXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudENoZWNrZWQge1xuICAgIEBJbnB1dCgpXG4gICAgc1RhYmxlRnJvemVuUG9zaXRpb24gPSBcImxlZnRcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNUYWJsZUZyb3plblZhbHVlKF86IGFueVtdKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRVcFJvd1Jlc2l6ZU1vbml0b3JpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0YWJsZTogVGFibGU7XG4gICAgcHJpdmF0ZSBpc1RhYmxlVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVzZXRSb3dIZWlnaHRDbGFzc05hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIGZpeEJvZHlSb3dDbGFzc05hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHN0eWxlRml4Qm9keVJvd0hlaWdodDogYW55O1xuICAgIHByaXZhdGUgZml4SGVhZFJvd0NsYXNzTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgc3R5bGVGaXhIZWFkUm93SGVpZ2h0OiBhbnk7XG5cbiAgICB0YWJsZUhlYWRPYnNlcnZhYmxlOiBNdXRhdGlvbk9ic2VydmVyO1xuICAgIHJvd0V4cGFuZGVkT2JzZXJ2ZXI6IGFueTtcbiAgICBvbkNvbHVtbnNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgaG9zdDogVGFibGUpIHtcbiAgICAgICAgdGhpcy50YWJsZSA9IGhvc3Q7XG4gICAgICAgIHRoaXMudGFibGUuc3R5bGVDbGFzcyA9ICh0aGlzLnRhYmxlLnN0eWxlQ2xhc3MgfHwgXCJcIikgKyBcIiBzLXRhYmxlLWZyb3plbi1wb3NpdGlvblwiO1xuICAgICAgICB0aGlzLnNldFVwVGFibGVFdmVudHMoKTtcblxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpKTtcblxuICAgICAgICBjb25zdCBjb21wb25lbnRJZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBodG1sSGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtcblxuICAgICAgICB0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lID0gYHJlc2V0VGFibGVSb3dzSGVpZ2h0XyR7Y29tcG9uZW50SWR9YDtcbiAgICAgICAgY29uc3Qgc3R5bGVSZXNldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgc3R5bGVSZXNldC5pbm5lckhUTUwgPSBgLiR7dGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZX0gdGJvZHkgPiB0ciwgLiR7dGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZX0gdGhlYWQgPiB0ciB7IGhlaWdodDogYXV0bzsgfWA7XG4gICAgICAgIGh0bWxIZWFkLmFwcGVuZENoaWxkKHN0eWxlUmVzZXQpO1xuXG4gICAgICAgIHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSA9IGBmaXhUYWJsZUJvZHlSb3dzSGVpZ2h0XyR7Y29tcG9uZW50SWR9YDtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEJvZHlSb3dIZWlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHRoaXMuc3R5bGVGaXhCb2R5Um93SGVpZ2h0LmlubmVySFRNTCA9IGAuJHt0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWV9IHRib2R5ID4gdHIgeyBoZWlnaHQ6IGF1dG87IH1gO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZCh0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodCk7XG5cbiAgICAgICAgdGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lID0gYGZpeFRhYmxlSGVhZFJvd3NIZWlnaHRfJHtjb21wb25lbnRJZH1gO1xuICAgICAgICB0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEhlYWRSb3dIZWlnaHQuaW5uZXJIVE1MID0gYC4ke3RoaXMuZml4SGVhZFJvd0NsYXNzTmFtZX0gdGhlYWQgPiB0ciB7IGhlaWdodDogYXV0bzsgfWA7XG4gICAgICAgIGh0bWxIZWFkLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVGaXhIZWFkUm93SGVpZ2h0KTtcblxuICAgICAgICBjb25zdCBleHBhbmRGcm96ZW5TdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgZXhwYW5kRnJvemVuU3R5bGUuaW5uZXJIVE1MID0gXCIucy10YWJsZS1mcm96ZW4tcG9zaXRpb24gLnVpLXRhYmxlLWZyb3plbi12aWV3IC5zZHMtZXhwYW5kZWQtcm93ID4gdGQgeyB2aXNpYmlsaXR5OiBoaWRkZW47IH1cIjtcbiAgICAgICAgaHRtbEhlYWQuYXBwZW5kQ2hpbGQoZXhwYW5kRnJvemVuU3R5bGUpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc1RhYmxlRnJvemVuUG9zaXRpb24gPT09IFwibGVmdFwiKSByZXR1cm47XG4gICAgICAgIHRoaXMuYXBwbHlTdHlsZXNGb3JUYWJsZSgpO1xuICAgICAgICB0aGlzLnNldFVwQ29sdW1uTW9uaXRvcmluZygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVGFibGVWaXNpYmxlICYmICEhdGhpcy50YWJsZS5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5pc1RhYmxlVmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVGFibGVWaXNpYmxlICYmICF0aGlzLnRhYmxlLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlzVGFibGVWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUuYmluZCh0aGlzKSk7XG4gICAgICAgIGlmICh0aGlzLnRhYmxlSGVhZE9ic2VydmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZS5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcFRhYmxlRXZlbnRzKCkge1xuICAgICAgICB0aGlzLnRhYmxlLm9uQ29sUmVzaXplLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNvbFJlc2l6ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRhYmxlLm9uUm93RXhwYW5kLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFVwUm93UmVzaXplTW9uaXRvcmluZygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwUm93UmVzaXplTW9uaXRvcmluZygpIHtcbiAgICAgICAgaWYgKHRoaXMucm93RXhwYW5kZWRPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSB2ZXJzaW9uIG9mIEFuZ3VsYXIvVHlwZXNjcmlwdCBkb2VzIG5vdCByZWNvZ25pemUgdGhlIG9iamVjdCBSZXNpemVPYnNlcnZlciBhbmQgYnJlYWtzIGJ1aWxkXG4gICAgICAgIHRoaXMucm93RXhwYW5kZWRPYnNlcnZlciA9IG5ldyAod2luZG93IGFzIGFueSkuUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcHBseUhlaWdodEZvckV4cGFuZGVkUm93cygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRkc1RvQWRqdXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsc1RkcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgICAgIHRkc1RvQWRqdXN0LmZvckVhY2goKHRkOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGQ6IEhUTUxFbGVtZW50ID0gb3JpZ2luYWxzVGRzW2luZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBvcmlnaW5hbFRkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgICAgICAgICB0ZC5pbm5lckhUTUwgPSBgPGRpdiBzdHlsZT1cImhlaWdodDogJHtoZWlnaHR9cHhcIj48L2Rpdj5gO1xuICAgICAgICAgICAgICAgIHRkLnN0eWxlLnBhZGRpbmcgPSBcIjBweFwiO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyLm9ic2VydmUob3JpZ2luYWxUZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcENvbHVtbk1vbml0b3JpbmcoKSB7XG4gICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgICAgIHRoaXMub25Db2x1bW5zQ2hhbmdlZC5lbWl0KG51bGwpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGFibGVIZWFkcyA9IFsuLi50aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0aGVhZFwiKV07XG4gICAgICAgIHRhYmxlSGVhZHMuZm9yRWFjaCgodGFibGVIZWFkOiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlSGVhZE9ic2VydmFibGUub2JzZXJ2ZSh0YWJsZUhlYWQsIHtcbiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlIZWlnaHRGb3JFeHBhbmRlZFJvd3MoKSB7XG4gICAgICAgIGNvbnN0IGZyb3plblREc1RvQWRqdXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgY29uc3QgdW5Gcm96ZW5URHMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS11bmZyb3plbi12aWV3IC5zZHMtZXhwYW5kZWQtcm93ID4gdGRcIik7XG4gICAgICAgIGZyb3plblREc1RvQWRqdXN0LmZvckVhY2goKGZyb3plblRkOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdW5mcm96ZW5URDogSFRNTEVsZW1lbnQgPSB1bkZyb3plblREc1tpbmRleF07XG4gICAgICAgICAgICBjb25zdCB1bmZyb3plbkhlaWdodCA9IHVuZnJvemVuVEQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgZnJvemVuSGVpZ2h0ID0gZnJvemVuVGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKHVuZnJvemVuSGVpZ2h0IC0gZnJvemVuSGVpZ2h0KSA+IDEpIHtcbiAgICAgICAgICAgICAgICBmcm96ZW5UZC5zdHlsZS5oZWlnaHQgPSBgJHt1bmZyb3plbkhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgZnJvemVuVGQuaW5uZXJIVE1MID0gYDxkaXY+PC9kaXY+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVN0eWxlc0ZvclRhYmxlKCkge1xuICAgICAgICBjb25zdCBzY3JvbGxXcmFwcGVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtc2Nyb2xsYWJsZS13cmFwcGVyXCIpO1xuICAgICAgICBpZiAoIXNjcm9sbFdyYXBwZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIHNjcm9sbC13cmFwcGVyIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNjcm9sbFdyYXBwZXIuc3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xuICAgICAgICBzY3JvbGxXcmFwcGVyLnN0eWxlLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiO1xuXG4gICAgICAgIGNvbnN0IGZyb3plblRhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtZnJvemVuLXZpZXdcIik7XG4gICAgICAgIGlmICghZnJvemVuVGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIGZyb3plbiBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5vcmRlciA9IFwiMVwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3JkZXJSaWdodCA9IFwibm9uZVwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3JkZXJMZWZ0ID0gXCIxcHggc29saWQgI2RkZGRkZFwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3hTaGFkb3cgPSBcIi01cHggMCA1cHggLTVweCAjY2NjY2NjXCI7XG5cbiAgICAgICAgY29uc3QgdW5mcm96ZW5UYWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXdcIik7XG4gICAgICAgIGlmICghdW5mcm96ZW5UYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgdW5mcm96ZW4gZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdW5mcm96ZW5UYWJsZS5zdHlsZS5wb3NpdGlvbiA9IFwidW5zZXRcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVdpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ29sUmVzaXplKCkge1xuICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jaHJvbml6ZVJvd0hlaWdodCgpIHtcbiAgICAgICAgY29uc3QgdGFibGVCb2R5V3JhcHBlcnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInVpLXRhYmxlLXNjcm9sbGFibGUtYm9keVwiKTtcbiAgICAgICAgY29uc3QgdGFibGVCb2RpZXMgPSBbLi4udGFibGVCb2R5V3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZUJvZGllcyk7XG4gICAgICAgIHRoaXMuYXBwbHlNYXhSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuXG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZFdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWhlYWRlci1ib3hcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZHMgPSBbLi4udGFibGVIZWFkV3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZUhlYWRzKTtcbiAgICAgICAgdGhpcy5hcHBseU1heFJvd0hlaWdodCh0YWJsZUhlYWRzLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZXM6IGFueVtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseU1heFJvd0hlaWdodCh0YWJsZXM6IGFueVtdLCBpc0hlYWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBjb25zdCByb3dTaXplcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCB0ciBvZiB0YWJsZS5yb3dzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRyLmNsYXNzTGlzdC5jb250YWlucyhcInNkcy1leHBhbmRlZC1yb3dcIikpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHJvd1NpemVzLnB1c2godHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcm93U2l6ZXMubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IE1hdGgubWF4KC4uLnJvd1NpemVzKTtcblxuICAgICAgICBpZiAoaXNIZWFkKSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lfSB0aGVhZCA+IHRyIHsgaGVpZ2h0OiAke21heEhlaWdodH1weDsgfWA7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lfSB0Ym9keSA+IHRyIHsgaGVpZ2h0OiAke21heEhlaWdodH1weDsgfWA7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -35,6 +35,7 @@ var TableFrozenPositionDirective = /** @class */ (function () {
35
35
  var _this = this;
36
36
  setTimeout(function () {
37
37
  _this.synchronizeRowHeight();
38
+ _this.setUpRowResizeMonitoring();
38
39
  });
39
40
  },
40
41
  enumerable: true,
@@ -70,32 +71,27 @@ var TableFrozenPositionDirective = /** @class */ (function () {
70
71
  _this.handleColResize();
71
72
  });
72
73
  this.table.onRowExpand.subscribe(function () {
73
- if (_this.rowExpandedObserver) {
74
- _this.rowExpandedObserver.disconnect();
75
- }
76
- // The version of Angular/Typescript does not recognize the object ResizeObserver and breaks build
77
- _this.rowExpandedObserver = new window.ResizeObserver(function () {
78
- var frozenTDsToAdjust = _this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
79
- var unFrozenTDs = _this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
80
- frozenTDsToAdjust.forEach(function (frozenTd, index) {
81
- var unfrozenTD = unFrozenTDs[index];
82
- var unfrozenHeight = unfrozenTD.getBoundingClientRect().height;
83
- var frozenHeight = frozenTd.getBoundingClientRect().height;
84
- if (Math.abs(unfrozenHeight - frozenHeight) > 1) {
85
- frozenTd.style.height = unfrozenHeight + "px";
86
- }
87
- });
88
- });
89
- setTimeout(function () {
90
- var tdsToAdjust = _this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
91
- var originalsTds = _this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
92
- tdsToAdjust.forEach(function (td, index) {
93
- var originalTd = originalsTds[index];
94
- var height = originalTd.getBoundingClientRect().height;
95
- td.innerHTML = "<div style=\"height: " + height + "px\"></div>";
96
- td.style.padding = "0px";
97
- _this.rowExpandedObserver.observe(originalTd);
98
- });
74
+ _this.setUpRowResizeMonitoring();
75
+ });
76
+ };
77
+ TableFrozenPositionDirective.prototype.setUpRowResizeMonitoring = function () {
78
+ var _this = this;
79
+ if (this.rowExpandedObserver) {
80
+ this.rowExpandedObserver.disconnect();
81
+ }
82
+ // The version of Angular/Typescript does not recognize the object ResizeObserver and breaks build
83
+ this.rowExpandedObserver = new window.ResizeObserver(function () {
84
+ _this.applyHeightForExpandedRows();
85
+ });
86
+ setTimeout(function () {
87
+ var tdsToAdjust = _this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
88
+ var originalsTds = _this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
89
+ tdsToAdjust.forEach(function (td, index) {
90
+ var originalTd = originalsTds[index];
91
+ var height = originalTd.getBoundingClientRect().height;
92
+ td.innerHTML = "<div style=\"height: " + height + "px\"></div>";
93
+ td.style.padding = "0px";
94
+ _this.rowExpandedObserver.observe(originalTd);
99
95
  });
100
96
  });
101
97
  };
@@ -113,6 +109,19 @@ var TableFrozenPositionDirective = /** @class */ (function () {
113
109
  });
114
110
  });
115
111
  };
112
+ TableFrozenPositionDirective.prototype.applyHeightForExpandedRows = function () {
113
+ var frozenTDsToAdjust = this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
114
+ var unFrozenTDs = this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
115
+ frozenTDsToAdjust.forEach(function (frozenTd, index) {
116
+ var unfrozenTD = unFrozenTDs[index];
117
+ var unfrozenHeight = unfrozenTD.getBoundingClientRect().height;
118
+ var frozenHeight = frozenTd.getBoundingClientRect().height;
119
+ if (Math.abs(unfrozenHeight - frozenHeight) > 1) {
120
+ frozenTd.style.height = unfrozenHeight + "px";
121
+ frozenTd.innerHTML = "<div></div>";
122
+ }
123
+ });
124
+ };
116
125
  TableFrozenPositionDirective.prototype.applyStylesForTable = function () {
117
126
  var scrollWrapper = this.el.nativeElement.querySelector(".ui-table-scrollable-wrapper");
118
127
  if (!scrollWrapper) {
@@ -258,4 +267,4 @@ var TableFrozenPositionDirective = /** @class */ (function () {
258
267
  return TableFrozenPositionDirective;
259
268
  }());
260
269
  export { TableFrozenPositionDirective };
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt0QztJQXVCSSxzQ0FBb0IsRUFBYyxFQUFVLElBQVc7UUFBbkMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFNBQUksR0FBSixJQUFJLENBQU87UUFyQnZELHlCQUFvQixHQUFHLE1BQU0sQ0FBQztRQVV0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQVMvQixxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdyRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxHQUFHLDBCQUEwQixDQUFDO1FBQ25GLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXRFLElBQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsSUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFD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QXZCLElBQU0sS0FBSyxtQkFBQTtvQkFDWixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztvQkFDckQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7aUJBQ2pEOzs7Ozs7Ozs7U0FDSjthQUFNO1lBQ0gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsR0FBRyxNQUFJLElBQUksQ0FBQyxtQkFBbUIsOEJBQXlCLFNBQVMsVUFBTyxDQUFDOztnQkFFN0csS0FBb0IsSUFBQSxXQUFBLFNBQUEsTUFBTSxDQUFBLDhCQUFBLGtEQUFFO29CQUF2QixJQUFNLEtBQUssbUJBQUE7b0JBQ1osS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7b0JBQ3JELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2lCQUNqRDs7Ozs7Ozs7O1NBQ0o7SUFDTCxDQUFDOztnQkFoTXVCLFVBQVU7Z0JBQWdCLEtBQUs7O0lBckJ2RDtRQURDLEtBQUssRUFBRTs4RUFDc0I7SUFHOUI7UUFEQyxLQUFLLEVBQUU7eUVBS1A7SUFUUSw0QkFBNEI7UUFIeEMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLHdCQUF3QjtTQUNyQyxDQUFDO09BQ1csNEJBQTRCLENBd054QztJQUFELG1DQUFDO0NBQUEsQUF4TkQsSUF3TkM7U0F4TlksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwicHJpbWVuZy90YWJsZVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogXCJbc1RhYmxlRnJvemVuUG9zaXRpb25dXCJcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVGcm96ZW5Qb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gICAgQElucHV0KClcbiAgICBzVGFibGVGcm96ZW5Qb3NpdGlvbiA9IFwibGVmdFwiO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgc1RhYmxlRnJvemVuVmFsdWUoXzogYW55W10pIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdGFibGU6IFRhYmxlO1xuICAgIHByaXZhdGUgaXNUYWJsZVZpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBmaXhCb2R5Um93Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBzdHlsZUZpeEJvZHlSb3dIZWlnaHQ6IGFueTtcbiAgICBwcml2YXRlIGZpeEhlYWRSb3dDbGFzc05hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHN0eWxlRml4SGVhZFJvd0hlaWdodDogYW55O1xuXG4gICAgdGFibGVIZWFkT2JzZXJ2YWJsZTogTXV0YXRpb25PYnNlcnZlcjtcbiAgICByb3dFeHBhbmRlZE9ic2VydmVyOiBhbnk7XG4gICAgb25Db2x1bW5zQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIGhvc3Q6IFRhYmxlKSB7XG4gICAgICAgIHRoaXMudGFibGUgPSBob3N0O1xuICAgICAgICB0aGlzLnRhYmxlLnN0eWxlQ2xhc3MgPSAodGhpcy50YWJsZS5zdHlsZUNsYXNzIHx8IFwiXCIpICsgXCIgcy10YWJsZS1mcm96ZW4tcG9zaXRpb25cIjtcbiAgICAgICAgdGhpcy5zZXRVcFRhYmxlRXZlbnRzKCk7XG5cbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50SWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgaHRtbEhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF07XG5cbiAgICAgICAgdGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZSA9IGByZXNldFRhYmxlUm93c0hlaWdodF8ke2NvbXBvbmVudElkfWA7XG4gICAgICAgIGNvbnN0IHN0eWxlUmVzZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHN0eWxlUmVzZXQuaW5uZXJIVE1MID0gYC4ke3RoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWV9IHRib2R5ID4gdHIsIC4ke3RoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWV9IHRoZWFkID4gdHIgeyBoZWlnaHQ6IGF1dG87IH1gO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZChzdHlsZVJlc2V0KTtcblxuICAgICAgICB0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWUgPSBgZml4VGFibGVCb2R5Um93c0hlaWdodF8ke2NvbXBvbmVudElkfWA7XG4gICAgICAgIHRoaXMuc3R5bGVGaXhCb2R5Um93SGVpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICB0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lfSB0Ym9keSA+IHRyIHsgaGVpZ2h0OiBhdXRvOyB9YDtcbiAgICAgICAgaHRtbEhlYWQuYXBwZW5kQ2hpbGQodGhpcy5zdHlsZUZpeEJvZHlSb3dIZWlnaHQpO1xuXG4gICAgICAgIHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSA9IGBmaXhUYWJsZUhlYWRSb3dzSGVpZ2h0XyR7Y29tcG9uZW50SWR9YDtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEhlYWRSb3dIZWlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHRoaXMuc3R5bGVGaXhIZWFkUm93SGVpZ2h0LmlubmVySFRNTCA9IGAuJHt0aGlzLmZpeEhlYWRSb3dDbGFzc05hbWV9IHRoZWFkID4gdHIgeyBoZWlnaHQ6IGF1dG87IH1gO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZCh0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodCk7XG5cbiAgICAgICAgY29uc3QgZXhwYW5kRnJvemVuU3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIGV4cGFuZEZyb3plblN0eWxlLmlubmVySFRNTCA9IFwiLnMtdGFibGUtZnJvemVuLXBvc2l0aW9uIC51aS10YWJsZS1mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkIHsgdmlzaWJpbGl0eTogaGlkZGVuOyB9XCI7XG4gICAgICAgIGh0bWxIZWFkLmFwcGVuZENoaWxkKGV4cGFuZEZyb3plblN0eWxlKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNUYWJsZUZyb3plblBvc2l0aW9uID09PSBcImxlZnRcIikgcmV0dXJuO1xuICAgICAgICB0aGlzLmFwcGx5U3R5bGVzRm9yVGFibGUoKTtcbiAgICAgICAgdGhpcy5zZXRVcENvbHVtbk1vbml0b3JpbmcoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc1RhYmxlVmlzaWJsZSAmJiAhIXRoaXMudGFibGUuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNUYWJsZVZpc2libGUgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1RhYmxlVmlzaWJsZSAmJiAhdGhpcy50YWJsZS5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5pc1RhYmxlVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuICAgICAgICBpZiAodGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlSGVhZE9ic2VydmFibGUuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucm93RXhwYW5kZWRPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VXBUYWJsZUV2ZW50cygpIHtcbiAgICAgICAgdGhpcy50YWJsZS5vbkNvbFJlc2l6ZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDb2xSZXNpemUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50YWJsZS5vblJvd0V4cGFuZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucm93RXhwYW5kZWRPYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIHRoaXMucm93RXhwYW5kZWRPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRoZSB2ZXJzaW9uIG9mIEFuZ3VsYXIvVHlwZXNjcmlwdCBkb2VzIG5vdCByZWNvZ25pemUgdGhlIG9iamVjdCBSZXNpemVPYnNlcnZlciBhbmQgYnJlYWtzIGJ1aWxkXG4gICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIgPSBuZXcgKHdpbmRvdyBhcyBhbnkpLlJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmcm96ZW5URHNUb0FkanVzdCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnVpLXRhYmxlLWZyb3plbi12aWV3IC5zZHMtZXhwYW5kZWQtcm93ID4gdGRcIik7XG4gICAgICAgICAgICAgICAgY29uc3QgdW5Gcm96ZW5URHMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS11bmZyb3plbi12aWV3IC5zZHMtZXhwYW5kZWQtcm93ID4gdGRcIik7XG4gICAgICAgICAgICAgICAgZnJvemVuVERzVG9BZGp1c3QuZm9yRWFjaCgoZnJvemVuVGQ6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuZnJvemVuVEQ6IEhUTUxFbGVtZW50ID0gdW5Gcm96ZW5URHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmZyb3plbkhlaWdodCA9IHVuZnJvemVuVEQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmcm96ZW5IZWlnaHQgPSBmcm96ZW5UZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyh1bmZyb3plbkhlaWdodCAtIGZyb3plbkhlaWdodCkgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmcm96ZW5UZC5zdHlsZS5oZWlnaHQgPSBgJHt1bmZyb3plbkhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZHNUb0FkanVzdCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnVpLXRhYmxlLWZyb3plbi12aWV3IC5zZHMtZXhwYW5kZWQtcm93ID4gdGRcIik7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxzVGRzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtdW5mcm96ZW4tdmlldyAuc2RzLWV4cGFuZGVkLXJvdyA+IHRkXCIpO1xuICAgICAgICAgICAgICAgIHRkc1RvQWRqdXN0LmZvckVhY2goKHRkOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFRkOiBIVE1MRWxlbWVudCA9IG9yaWdpbmFsc1Rkc1tpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IG9yaWdpbmFsVGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB0ZC5pbm5lckhUTUwgPSBgPGRpdiBzdHlsZT1cImhlaWdodDogJHtoZWlnaHR9cHhcIj48L2Rpdj5gO1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5wYWRkaW5nID0gXCIwcHhcIjtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIub2JzZXJ2ZShvcmlnaW5hbFRkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwQ29sdW1uTW9uaXRvcmluZygpIHtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRPYnNlcnZhYmxlID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5vbkNvbHVtbnNDaGFuZ2VkLmVtaXQobnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0YWJsZUhlYWRzID0gWy4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRoZWFkXCIpXTtcbiAgICAgICAgdGFibGVIZWFkcy5mb3JFYWNoKCh0YWJsZUhlYWQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZS5vYnNlcnZlKHRhYmxlSGVhZCwge1xuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVN0eWxlc0ZvclRhYmxlKCkge1xuICAgICAgICBjb25zdCBzY3JvbGxXcmFwcGVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtc2Nyb2xsYWJsZS13cmFwcGVyXCIpO1xuICAgICAgICBpZiAoIXNjcm9sbFdyYXBwZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIHNjcm9sbC13cmFwcGVyIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNjcm9sbFdyYXBwZXIuc3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xuICAgICAgICBzY3JvbGxXcmFwcGVyLnN0eWxlLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiO1xuXG4gICAgICAgIGNvbnN0IGZyb3plblRhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtZnJvemVuLXZpZXdcIik7XG4gICAgICAgIGlmICghZnJvemVuVGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIGZyb3plbiBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5vcmRlciA9IFwiMVwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3JkZXJSaWdodCA9IFwibm9uZVwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3JkZXJMZWZ0ID0gXCIxcHggc29saWQgI2RkZGRkZFwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3hTaGFkb3cgPSBcIi01cHggMCA1cHggLTVweCAjY2NjY2NjXCI7XG5cbiAgICAgICAgY29uc3QgdW5mcm96ZW5UYWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXdcIik7XG4gICAgICAgIGlmICghdW5mcm96ZW5UYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgdW5mcm96ZW4gZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdW5mcm96ZW5UYWJsZS5zdHlsZS5wb3NpdGlvbiA9IFwidW5zZXRcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVdpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ29sUmVzaXplKCkge1xuICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jaHJvbml6ZVJvd0hlaWdodCgpIHtcbiAgICAgICAgY29uc3QgdGFibGVCb2R5V3JhcHBlcnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInVpLXRhYmxlLXNjcm9sbGFibGUtYm9keVwiKTtcbiAgICAgICAgY29uc3QgdGFibGVCb2RpZXMgPSBbLi4udGFibGVCb2R5V3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZUJvZGllcyk7XG4gICAgICAgIHRoaXMuYXBwbHlNYXhSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuXG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZFdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWhlYWRlci1ib3hcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZHMgPSBbLi4udGFibGVIZWFkV3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZUhlYWRzKTtcbiAgICAgICAgdGhpcy5hcHBseU1heFJvd0hlaWdodCh0YWJsZUhlYWRzLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZXM6IGFueVtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseU1heFJvd0hlaWdodCh0YWJsZXM6IGFueVtdLCBpc0hlYWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBjb25zdCByb3dTaXplcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCB0ciBvZiB0YWJsZS5yb3dzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRyLmNsYXNzTGlzdC5jb250YWlucyhcInNkcy1leHBhbmRlZC1yb3dcIikpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHJvd1NpemVzLnB1c2godHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcm93U2l6ZXMubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IE1hdGgubWF4KC4uLnJvd1NpemVzKTtcblxuICAgICAgICBpZiAoaXNIZWFkKSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lfSB0aGVhZCA+IHRyIHsgaGVpZ2h0OiAke21heEhlaWdodH1weDsgfWA7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lfSB0Ym9keSA+IHRyIHsgaGVpZ2h0OiAke21heEhlaWdodH1weDsgfWA7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RhYmxlL2Zyb3plbi1wb3NpdGlvbi9mcm96ZW4tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt0QztJQXdCSSxzQ0FBb0IsRUFBYyxFQUFVLElBQVc7UUFBbkMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFNBQUksR0FBSixJQUFJLENBQU87UUF0QnZELHlCQUFvQixHQUFHLE1BQU0sQ0FBQztRQVd0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQVMvQixxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdyRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxHQUFHLDBCQUEwQixDQUFDO1FBQ25GLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXRFLElBQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsSUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFD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cG9ydCB7IEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiW3NUYWJsZUZyb3plblBvc2l0aW9uXVwiXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRnJvemVuUG9zaXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudENoZWNrZWQge1xuICAgIEBJbnB1dCgpXG4gICAgc1RhYmxlRnJvemVuUG9zaXRpb24gPSBcImxlZnRcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNUYWJsZUZyb3plblZhbHVlKF86IGFueVtdKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRVcFJvd1Jlc2l6ZU1vbml0b3JpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0YWJsZTogVGFibGU7XG4gICAgcHJpdmF0ZSBpc1RhYmxlVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVzZXRSb3dIZWlnaHRDbGFzc05hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIGZpeEJvZHlSb3dDbGFzc05hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHN0eWxlRml4Qm9keVJvd0hlaWdodDogYW55O1xuICAgIHByaXZhdGUgZml4SGVhZFJvd0NsYXNzTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgc3R5bGVGaXhIZWFkUm93SGVpZ2h0OiBhbnk7XG5cbiAgICB0YWJsZUhlYWRPYnNlcnZhYmxlOiBNdXRhdGlvbk9ic2VydmVyO1xuICAgIHJvd0V4cGFuZGVkT2JzZXJ2ZXI6IGFueTtcbiAgICBvbkNvbHVtbnNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgaG9zdDogVGFibGUpIHtcbiAgICAgICAgdGhpcy50YWJsZSA9IGhvc3Q7XG4gICAgICAgIHRoaXMudGFibGUuc3R5bGVDbGFzcyA9ICh0aGlzLnRhYmxlLnN0eWxlQ2xhc3MgfHwgXCJcIikgKyBcIiBzLXRhYmxlLWZyb3plbi1wb3NpdGlvblwiO1xuICAgICAgICB0aGlzLnNldFVwVGFibGVFdmVudHMoKTtcblxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpKTtcblxuICAgICAgICBjb25zdCBjb21wb25lbnRJZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBodG1sSGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtcblxuICAgICAgICB0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lID0gYHJlc2V0VGFibGVSb3dzSGVpZ2h0XyR7Y29tcG9uZW50SWR9YDtcbiAgICAgICAgY29uc3Qgc3R5bGVSZXNldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgc3R5bGVSZXNldC5pbm5lckhUTUwgPSBgLiR7dGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZX0gdGJvZHkgPiB0ciwgLiR7dGhpcy5yZXNldFJvd0hlaWdodENsYXNzTmFtZX0gdGhlYWQgPiB0ciB7IGhlaWdodDogYXV0bzsgfWA7XG4gICAgICAgIGh0bWxIZWFkLmFwcGVuZENoaWxkKHN0eWxlUmVzZXQpO1xuXG4gICAgICAgIHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSA9IGBmaXhUYWJsZUJvZHlSb3dzSGVpZ2h0XyR7Y29tcG9uZW50SWR9YDtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEJvZHlSb3dIZWlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHRoaXMuc3R5bGVGaXhCb2R5Um93SGVpZ2h0LmlubmVySFRNTCA9IGAuJHt0aGlzLmZpeEJvZHlSb3dDbGFzc05hbWV9IHRib2R5ID4gdHIgeyBoZWlnaHQ6IGF1dG87IH1gO1xuICAgICAgICBodG1sSGVhZC5hcHBlbmRDaGlsZCh0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodCk7XG5cbiAgICAgICAgdGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lID0gYGZpeFRhYmxlSGVhZFJvd3NIZWlnaHRfJHtjb21wb25lbnRJZH1gO1xuICAgICAgICB0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgdGhpcy5zdHlsZUZpeEhlYWRSb3dIZWlnaHQuaW5uZXJIVE1MID0gYC4ke3RoaXMuZml4SGVhZFJvd0NsYXNzTmFtZX0gdGhlYWQgPiB0ciB7IGhlaWdodDogYXV0bzsgfWA7XG4gICAgICAgIGh0bWxIZWFkLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVGaXhIZWFkUm93SGVpZ2h0KTtcblxuICAgICAgICBjb25zdCBleHBhbmRGcm96ZW5TdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgZXhwYW5kRnJvemVuU3R5bGUuaW5uZXJIVE1MID0gXCIucy10YWJsZS1mcm96ZW4tcG9zaXRpb24gLnVpLXRhYmxlLWZyb3plbi12aWV3IC5zZHMtZXhwYW5kZWQtcm93ID4gdGQgeyB2aXNpYmlsaXR5OiBoaWRkZW47IH1cIjtcbiAgICAgICAgaHRtbEhlYWQuYXBwZW5kQ2hpbGQoZXhwYW5kRnJvemVuU3R5bGUpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc1RhYmxlRnJvemVuUG9zaXRpb24gPT09IFwibGVmdFwiKSByZXR1cm47XG4gICAgICAgIHRoaXMuYXBwbHlTdHlsZXNGb3JUYWJsZSgpO1xuICAgICAgICB0aGlzLnNldFVwQ29sdW1uTW9uaXRvcmluZygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVGFibGVWaXNpYmxlICYmICEhdGhpcy50YWJsZS5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5pc1RhYmxlVmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVGFibGVWaXNpYmxlICYmICF0aGlzLnRhYmxlLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlzVGFibGVWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUuYmluZCh0aGlzKSk7XG4gICAgICAgIGlmICh0aGlzLnRhYmxlSGVhZE9ic2VydmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZS5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcFRhYmxlRXZlbnRzKCkge1xuICAgICAgICB0aGlzLnRhYmxlLm9uQ29sUmVzaXplLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNvbFJlc2l6ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRhYmxlLm9uUm93RXhwYW5kLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFVwUm93UmVzaXplTW9uaXRvcmluZygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwUm93UmVzaXplTW9uaXRvcmluZygpIHtcbiAgICAgICAgaWYgKHRoaXMucm93RXhwYW5kZWRPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSB2ZXJzaW9uIG9mIEFuZ3VsYXIvVHlwZXNjcmlwdCBkb2VzIG5vdCByZWNvZ25pemUgdGhlIG9iamVjdCBSZXNpemVPYnNlcnZlciBhbmQgYnJlYWtzIGJ1aWxkXG4gICAgICAgIHRoaXMucm93RXhwYW5kZWRPYnNlcnZlciA9IG5ldyAod2luZG93IGFzIGFueSkuUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcHBseUhlaWdodEZvckV4cGFuZGVkUm93cygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRkc1RvQWRqdXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsc1RkcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgICAgIHRkc1RvQWRqdXN0LmZvckVhY2goKHRkOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGQ6IEhUTUxFbGVtZW50ID0gb3JpZ2luYWxzVGRzW2luZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBvcmlnaW5hbFRkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgICAgICAgICB0ZC5pbm5lckhUTUwgPSBgPGRpdiBzdHlsZT1cImhlaWdodDogJHtoZWlnaHR9cHhcIj48L2Rpdj5gO1xuICAgICAgICAgICAgICAgIHRkLnN0eWxlLnBhZGRpbmcgPSBcIjBweFwiO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZE9ic2VydmVyLm9ic2VydmUob3JpZ2luYWxUZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcENvbHVtbk1vbml0b3JpbmcoKSB7XG4gICAgICAgIHRoaXMudGFibGVIZWFkT2JzZXJ2YWJsZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVSb3dIZWlnaHQoKTtcbiAgICAgICAgICAgIHRoaXMub25Db2x1bW5zQ2hhbmdlZC5lbWl0KG51bGwpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGFibGVIZWFkcyA9IFsuLi50aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0aGVhZFwiKV07XG4gICAgICAgIHRhYmxlSGVhZHMuZm9yRWFjaCgodGFibGVIZWFkOiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlSGVhZE9ic2VydmFibGUub2JzZXJ2ZSh0YWJsZUhlYWQsIHtcbiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlIZWlnaHRGb3JFeHBhbmRlZFJvd3MoKSB7XG4gICAgICAgIGNvbnN0IGZyb3plblREc1RvQWRqdXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktdGFibGUtZnJvemVuLXZpZXcgLnNkcy1leHBhbmRlZC1yb3cgPiB0ZFwiKTtcbiAgICAgICAgY29uc3QgdW5Gcm96ZW5URHMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi51aS10YWJsZS11bmZyb3plbi12aWV3IC5zZHMtZXhwYW5kZWQtcm93ID4gdGRcIik7XG4gICAgICAgIGZyb3plblREc1RvQWRqdXN0LmZvckVhY2goKGZyb3plblRkOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdW5mcm96ZW5URDogSFRNTEVsZW1lbnQgPSB1bkZyb3plblREc1tpbmRleF07XG4gICAgICAgICAgICBjb25zdCB1bmZyb3plbkhlaWdodCA9IHVuZnJvemVuVEQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgZnJvemVuSGVpZ2h0ID0gZnJvemVuVGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKHVuZnJvemVuSGVpZ2h0IC0gZnJvemVuSGVpZ2h0KSA+IDEpIHtcbiAgICAgICAgICAgICAgICBmcm96ZW5UZC5zdHlsZS5oZWlnaHQgPSBgJHt1bmZyb3plbkhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgZnJvemVuVGQuaW5uZXJIVE1MID0gYDxkaXY+PC9kaXY+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVN0eWxlc0ZvclRhYmxlKCkge1xuICAgICAgICBjb25zdCBzY3JvbGxXcmFwcGVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtc2Nyb2xsYWJsZS13cmFwcGVyXCIpO1xuICAgICAgICBpZiAoIXNjcm9sbFdyYXBwZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIHNjcm9sbC13cmFwcGVyIGVsZW1lbnQgZnJvbSB0YWJsZS4gSXMgdGhlIHRhYmxlIGNvbmZpZ3VyZWQgd2l0aCBmcm96ZW4gdGVtcGxhdGU/XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNjcm9sbFdyYXBwZXIuc3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xuICAgICAgICBzY3JvbGxXcmFwcGVyLnN0eWxlLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiO1xuXG4gICAgICAgIGNvbnN0IGZyb3plblRhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIudWktdGFibGUtZnJvemVuLXZpZXdcIik7XG4gICAgICAgIGlmICghZnJvemVuVGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuYWJsZSB0byBmaW5kIGZyb3plbiBlbGVtZW50IGZyb20gdGFibGUuIElzIHRoZSB0YWJsZSBjb25maWd1cmVkIHdpdGggZnJvemVuIHRlbXBsYXRlP1wiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5vcmRlciA9IFwiMVwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3JkZXJSaWdodCA9IFwibm9uZVwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3JkZXJMZWZ0ID0gXCIxcHggc29saWQgI2RkZGRkZFwiO1xuICAgICAgICBmcm96ZW5UYWJsZS5zdHlsZS5ib3hTaGFkb3cgPSBcIi01cHggMCA1cHggLTVweCAjY2NjY2NjXCI7XG5cbiAgICAgICAgY29uc3QgdW5mcm96ZW5UYWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnVpLXRhYmxlLXVuZnJvemVuLXZpZXdcIik7XG4gICAgICAgIGlmICghdW5mcm96ZW5UYWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIGZpbmQgdW5mcm96ZW4gZWxlbWVudCBmcm9tIHRhYmxlLiBJcyB0aGUgdGFibGUgY29uZmlndXJlZCB3aXRoIGZyb3plbiB0ZW1wbGF0ZT9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdW5mcm96ZW5UYWJsZS5zdHlsZS5wb3NpdGlvbiA9IFwidW5zZXRcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVdpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVJvd0hlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ29sUmVzaXplKCkge1xuICAgICAgICB0aGlzLnN5bmNocm9uaXplUm93SGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jaHJvbml6ZVJvd0hlaWdodCgpIHtcbiAgICAgICAgY29uc3QgdGFibGVCb2R5V3JhcHBlcnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInVpLXRhYmxlLXNjcm9sbGFibGUtYm9keVwiKTtcbiAgICAgICAgY29uc3QgdGFibGVCb2RpZXMgPSBbLi4udGFibGVCb2R5V3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZUJvZGllcyk7XG4gICAgICAgIHRoaXMuYXBwbHlNYXhSb3dIZWlnaHQodGFibGVCb2RpZXMpO1xuXG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZFdyYXBwZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ1aS10YWJsZS1zY3JvbGxhYmxlLWhlYWRlci1ib3hcIik7XG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZHMgPSBbLi4udGFibGVIZWFkV3JhcHBlcnNdLm1hcChkaXZXcmFwcGVyID0+IFsuLi5kaXZXcmFwcGVyLmNoaWxkTm9kZXNdLmZpbmQocCA9PiBwLnRhZ05hbWUgPT09IFwiVEFCTEVcIikpO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZUhlYWRzKTtcbiAgICAgICAgdGhpcy5hcHBseU1heFJvd0hlaWdodCh0YWJsZUhlYWRzLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlY2FsY3VsYXRlRGVmYXVsdFJvd0hlaWdodCh0YWJsZXM6IGFueVtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMucmVzZXRSb3dIZWlnaHRDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseU1heFJvd0hlaWdodCh0YWJsZXM6IGFueVtdLCBpc0hlYWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBjb25zdCByb3dTaXplcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCB0ciBvZiB0YWJsZS5yb3dzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRyLmNsYXNzTGlzdC5jb250YWlucyhcInNkcy1leHBhbmRlZC1yb3dcIikpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHJvd1NpemVzLnB1c2godHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcm93U2l6ZXMubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IE1hdGgubWF4KC4uLnJvd1NpemVzKTtcblxuICAgICAgICBpZiAoaXNIZWFkKSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRml4SGVhZFJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhIZWFkUm93Q2xhc3NOYW1lfSB0aGVhZCA+IHRyIHsgaGVpZ2h0OiAke21heEhlaWdodH1weDsgfWA7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMuZml4SGVhZFJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRml4Qm9keVJvd0hlaWdodC5pbm5lckhUTUwgPSBgLiR7dGhpcy5maXhCb2R5Um93Q2xhc3NOYW1lfSB0Ym9keSA+IHRyIHsgaGVpZ2h0OiAke21heEhlaWdodH1weDsgfWA7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGFibGVzKSB7XG4gICAgICAgICAgICAgICAgdGFibGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnJlc2V0Um93SGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKHRoaXMuZml4Qm9keVJvd0NsYXNzTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -3583,6 +3583,7 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
3583
3583
  set sTableFrozenValue(_) {
3584
3584
  setTimeout(() => {
3585
3585
  this.synchronizeRowHeight();
3586
+ this.setUpRowResizeMonitoring();
3586
3587
  });
3587
3588
  }
3588
3589
  ngAfterViewInit() {
@@ -3614,32 +3615,26 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
3614
3615
  this.handleColResize();
3615
3616
  });
3616
3617
  this.table.onRowExpand.subscribe(() => {
3617
- if (this.rowExpandedObserver) {
3618
- this.rowExpandedObserver.disconnect();
3619
- }
3620
- // The version of Angular/Typescript does not recognize the object ResizeObserver and breaks build
3621
- this.rowExpandedObserver = new window.ResizeObserver(() => {
3622
- const frozenTDsToAdjust = this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
3623
- const unFrozenTDs = this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
3624
- frozenTDsToAdjust.forEach((frozenTd, index) => {
3625
- const unfrozenTD = unFrozenTDs[index];
3626
- const unfrozenHeight = unfrozenTD.getBoundingClientRect().height;
3627
- const frozenHeight = frozenTd.getBoundingClientRect().height;
3628
- if (Math.abs(unfrozenHeight - frozenHeight) > 1) {
3629
- frozenTd.style.height = `${unfrozenHeight}px`;
3630
- }
3631
- });
3632
- });
3633
- setTimeout(() => {
3634
- const tdsToAdjust = this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
3635
- const originalsTds = this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
3636
- tdsToAdjust.forEach((td, index) => {
3637
- const originalTd = originalsTds[index];
3638
- const height = originalTd.getBoundingClientRect().height;
3639
- td.innerHTML = `<div style="height: ${height}px"></div>`;
3640
- td.style.padding = "0px";
3641
- this.rowExpandedObserver.observe(originalTd);
3642
- });
3618
+ this.setUpRowResizeMonitoring();
3619
+ });
3620
+ }
3621
+ setUpRowResizeMonitoring() {
3622
+ if (this.rowExpandedObserver) {
3623
+ this.rowExpandedObserver.disconnect();
3624
+ }
3625
+ // The version of Angular/Typescript does not recognize the object ResizeObserver and breaks build
3626
+ this.rowExpandedObserver = new window.ResizeObserver(() => {
3627
+ this.applyHeightForExpandedRows();
3628
+ });
3629
+ setTimeout(() => {
3630
+ const tdsToAdjust = this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
3631
+ const originalsTds = this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
3632
+ tdsToAdjust.forEach((td, index) => {
3633
+ const originalTd = originalsTds[index];
3634
+ const height = originalTd.getBoundingClientRect().height;
3635
+ td.innerHTML = `<div style="height: ${height}px"></div>`;
3636
+ td.style.padding = "0px";
3637
+ this.rowExpandedObserver.observe(originalTd);
3643
3638
  });
3644
3639
  });
3645
3640
  }
@@ -3656,6 +3651,19 @@ let TableFrozenPositionDirective = class TableFrozenPositionDirective {
3656
3651
  });
3657
3652
  });
3658
3653
  }
3654
+ applyHeightForExpandedRows() {
3655
+ const frozenTDsToAdjust = this.el.nativeElement.querySelectorAll(".ui-table-frozen-view .sds-expanded-row > td");
3656
+ const unFrozenTDs = this.el.nativeElement.querySelectorAll(".ui-table-unfrozen-view .sds-expanded-row > td");
3657
+ frozenTDsToAdjust.forEach((frozenTd, index) => {
3658
+ const unfrozenTD = unFrozenTDs[index];
3659
+ const unfrozenHeight = unfrozenTD.getBoundingClientRect().height;
3660
+ const frozenHeight = frozenTd.getBoundingClientRect().height;
3661
+ if (Math.abs(unfrozenHeight - frozenHeight) > 1) {
3662
+ frozenTd.style.height = `${unfrozenHeight}px`;
3663
+ frozenTd.innerHTML = `<div></div>`;
3664
+ }
3665
+ });
3666
+ }
3659
3667
  applyStylesForTable() {
3660
3668
  const scrollWrapper = this.el.nativeElement.querySelector(".ui-table-scrollable-wrapper");
3661
3669
  if (!scrollWrapper) {