@alauda/ui 7.3.3-beta.25 → 7.3.3-beta.27

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,13 +1,13 @@
1
1
  import { Directive, ElementRef, inject, Input, Renderer2, } from '@angular/core';
2
- import { fromEvent, map, merge, Subject, switchMap, take, takeUntil, } from 'rxjs';
2
+ import { fromEvent, map, merge, switchMap, take, takeUntil, } from 'rxjs';
3
3
  import { buildBem } from '../utils';
4
4
  import { tableBem, TableColumnDefDirective, TableComponent, TableScrollWrapperDirective, } from './index';
5
5
  import * as i0 from "@angular/core";
6
- let tableColResizableUid = 0;
6
+ let tableColumnResizableID = 0;
7
7
  const resizableBem = buildBem('aui-table-column-resizable');
8
8
  export class TableColumnResizableDirective {
9
- minWidth = '60px';
10
- maxWidth = '100%';
9
+ minWidth = '40px';
10
+ maxWidth = '80%';
11
11
  renderer2 = inject(Renderer2);
12
12
  tableColumnDefDirective = inject(TableColumnDefDirective);
13
13
  tableComponent = inject(TableComponent);
@@ -16,16 +16,16 @@ export class TableColumnResizableDirective {
16
16
  });
17
17
  selfElement = inject(ElementRef).nativeElement;
18
18
  containerElement = (this.tableScrollWrapperDirective || this.tableComponent).elementRef.nativeElement;
19
- destroy$$ = new Subject();
20
- styleEl;
19
+ styleElement;
21
20
  hostAttr;
21
+ resizeSubscription;
22
22
  ngAfterViewInit() {
23
23
  const resizeHandle = this.createResizeHandle();
24
24
  this.bindResizable(resizeHandle);
25
25
  }
26
26
  ngOnDestroy() {
27
- this.destroy$$.next();
28
- this.destroy$$.complete();
27
+ this.resizeSubscription?.unsubscribe();
28
+ this.styleElement?.remove();
29
29
  }
30
30
  bindResizable(resizeHandle) {
31
31
  fromEvent(resizeHandle, 'mousedown')
@@ -33,6 +33,7 @@ export class TableColumnResizableDirective {
33
33
  mouseDownEvent.preventDefault();
34
34
  mouseDownEvent.stopPropagation();
35
35
  this.renderer2.setStyle(resizeHandle, 'visibility', 'hidden');
36
+ const resizeRange = this.getResizeRange();
36
37
  const initialMouseX = mouseDownEvent.clientX;
37
38
  const columnWidth = this.getColumnWidth();
38
39
  const columnOffset = this.getColumnOffset();
@@ -44,9 +45,9 @@ export class TableColumnResizableDirective {
44
45
  this.renderer2.removeStyle(resizeHandle, 'visibility');
45
46
  resizeMarkLine.destroy();
46
47
  resizeOverlay.destroy();
47
- this.renderWidthStyles(columnWidth + mouseUpEvent.clientX - initialMouseX);
48
+ this.renderWidthStyles(this.getWidthInRange(resizeRange, columnWidth + mouseUpEvent.clientX - initialMouseX));
48
49
  })));
49
- }), takeUntil(this.destroy$$))
50
+ }))
50
51
  .subscribe(exec => {
51
52
  exec();
52
53
  });
@@ -90,10 +91,29 @@ export class TableColumnResizableDirective {
90
91
  return (this.selfElement.getBoundingClientRect().left -
91
92
  this.containerElement.getBoundingClientRect().left);
92
93
  }
94
+ getWidthInRange([minWidth, maxWidth], width) {
95
+ return Math.min(Math.max(width, minWidth), maxWidth);
96
+ }
97
+ getResizeRange() {
98
+ const minWidth = this.getActualWidth(this.minWidth);
99
+ const maxWidth = this.getActualWidth(this.maxWidth);
100
+ return [minWidth, maxWidth];
101
+ }
102
+ getActualWidth(width) {
103
+ if (typeof width === 'number') {
104
+ return width;
105
+ }
106
+ else if (width.endsWith('px')) {
107
+ return parseInt(width.slice(0, -2));
108
+ }
109
+ else if (width.endsWith('%')) {
110
+ return ((this.containerElement.clientWidth * parseInt(width.slice(0, -1))) / 100);
111
+ }
112
+ }
93
113
  renderWidthStyles(width) {
94
114
  const className = tableBem.element(`column-${this.tableColumnDefDirective.cssClassFriendlyName}`);
95
115
  if (!this.hostAttr) {
96
- this.hostAttr = `table-resizable-${tableColResizableUid++}`;
116
+ this.hostAttr = `table-resizable-${tableColumnResizableID++}`;
97
117
  this.containerElement.setAttribute(this.hostAttr, '');
98
118
  }
99
119
  const styleString = `
@@ -104,13 +124,13 @@ export class TableColumnResizableDirective {
104
124
  max-width: ${width}px !important;
105
125
  }
106
126
  `;
107
- if (this.styleEl) {
108
- this.styleEl.innerHTML = styleString;
127
+ if (this.styleElement) {
128
+ this.styleElement.innerHTML = styleString;
109
129
  }
110
130
  else {
111
- this.styleEl = this.renderer2.createElement('style');
112
- this.styleEl.innerHTML = styleString;
113
- this.renderer2.appendChild(this.containerElement, this.styleEl);
131
+ this.styleElement = this.renderer2.createElement('style');
132
+ this.styleElement.innerHTML = styleString;
133
+ this.renderer2.appendChild(document.querySelector('head'), this.styleElement);
114
134
  }
115
135
  this.tableComponent.updateStickyColumnStyles();
116
136
  }
@@ -128,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImpor
128
148
  }], maxWidth: [{
129
149
  type: Input
130
150
  }] } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLXJlc2l6YWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFibGUvdGFibGUtY29sdW1uLXJlc2l6YWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFNBQVMsRUFDVCxHQUFHLEVBQ0gsS0FBSyxFQUNMLE9BQU8sRUFDUCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUNMLFFBQVEsRUFDUix1QkFBdUIsRUFDdkIsY0FBYyxFQUNkLDJCQUEyQixHQUM1QixNQUFNLFNBQVMsQ0FBQzs7QUFFakIsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFFN0IsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFNNUQsTUFBTSxPQUFPLDZCQUE2QjtJQUV4QyxRQUFRLEdBQUcsTUFBTSxDQUFDO0lBR2xCLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFFRCxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzFELGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsMkJBQTJCLEdBQUcsTUFBTSxDQUNuRCwyQkFBMkIsRUFDM0I7UUFDRSxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQ0YsQ0FBQztJQUVlLFdBQVcsR0FBZ0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUM1RCxnQkFBZ0IsR0FBZ0IsQ0FDL0Ms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QUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDakU7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDakQsQ0FBQzt1R0FyS1UsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7OzJGQUE3Qiw2QkFBNkI7a0JBSnpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQUdDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBmcm9tRXZlbnQsXG4gIG1hcCxcbiAgbWVyZ2UsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgYnVpbGRCZW0gfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIHRhYmxlQmVtLFxuICBUYWJsZUNvbHVtbkRlZkRpcmVjdGl2ZSxcbiAgVGFibGVDb21wb25lbnQsXG4gIFRhYmxlU2Nyb2xsV3JhcHBlckRpcmVjdGl2ZSxcbn0gZnJvbSAnLi9pbmRleCc7XG5cbmxldCB0YWJsZUNvbFJlc2l6YWJsZVVpZCA9IDA7XG5cbmNvbnN0IHJlc2l6YWJsZUJlbSA9IGJ1aWxkQmVtKCdhdWktdGFibGUtY29sdW1uLXJlc2l6YWJsZScpO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXVpVGFibGVDb2x1bW5SZXNpemFibGVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5SZXNpemFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KClcbiAgbWluV2lkdGggPSAnNjBweCc7XG5cbiAgQElucHV0KClcbiAgbWF4V2lkdGggPSAnMTAwJSc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWJsZUNvbHVtbkRlZkRpcmVjdGl2ZSA9IGluamVjdChUYWJsZUNvbHVtbkRlZkRpcmVjdGl2ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFibGVDb21wb25lbnQgPSBpbmplY3QoVGFibGVDb21wb25lbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhYmxlU2Nyb2xsV3JhcHBlckRpcmVjdGl2ZSA9IGluamVjdChcbiAgICBUYWJsZVNjcm9sbFdyYXBwZXJEaXJlY3RpdmUsXG4gICAge1xuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlbGZFbGVtZW50OiBIVE1MRWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gKFxuICAgIHRoaXMudGFibGVTY3JvbGxXcmFwcGVyRGlyZWN0aXZlIHx8IHRoaXMudGFibGVDb21wb25lbnRcbiAgKS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgc3R5bGVFbDogSFRNTFN0eWxlRWxlbWVudDtcbiAgcHJpdmF0ZSBob3N0QXR0cjogc3RyaW5nO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCByZXNpemVIYW5kbGUgPSB0aGlzLmNyZWF0ZVJlc2l6ZUhhbmRsZSgpO1xuICAgIHRoaXMuYmluZFJlc2l6YWJsZShyZXNpemVIYW5kbGUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGJpbmRSZXNpemFibGUocmVzaXplSGFuZGxlOiBIVE1MRWxlbWVudCkge1xuICAgIGZyb21FdmVudDxNb3VzZUV2ZW50PihyZXNpemVIYW5kbGUsICdtb3VzZWRvd24nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChtb3VzZURvd25FdmVudCA9PiB7XG4gICAgICAgICAgbW91c2VEb3duRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBtb3VzZURvd25FdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHJlc2l6ZUhhbmRsZSwgJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7XG4gICAgICAgICAgY29uc3QgaW5pdGlhbE1vdXNlWCA9IG1vdXNlRG93bkV2ZW50LmNsaWVudFg7XG4gICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSB0aGlzLmdldENvbHVtbldpZHRoKCk7XG4gICAgICAgICAgY29uc3QgY29sdW1uT2Zmc2V0ID0gdGhpcy5nZXRDb2x1bW5PZmZzZXQoKTtcbiAgICAgICAgICBjb25zdCByZXNpemVNYXJrTGluZSA9IHRoaXMuY3JlYXRlUmVzaXplTWFya0xpbmUoXG4gICAgICAgICAgICBjb2x1bW5XaWR0aCArIGNvbHVtbk9mZnNldCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IHJlc2l6ZU92ZXJsYXkgPSB0aGlzLmNyZWF0ZVJlc2l6ZU92ZXJsYXkoKTtcblxuICAgICAgICAgIGNvbnN0IG1vdXNlVXAkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2V1cCcpLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgbW91c2VNb3ZlJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNlbW92ZScpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwobW91c2VVcCQpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICBtb3VzZU1vdmUkLnBpcGUoXG4gICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICBtb3VzZU1vdmVFdmVudCA9PiAoKSA9PlxuICAgICAgICAgICAgICAgICAgcmVzaXplTWFya0xpbmUudXBkYXRlT2Zmc2V0KFxuICAgICAgICAgICAgICAgICAgICBtb3VzZU1vdmVFdmVudC5jbGllbnRYIC0gaW5pdGlhbE1vdXNlWCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbW91c2VVcCQucGlwZShcbiAgICAgICAgICAgICAgbWFwKG1vdXNlVXBFdmVudCA9PiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlU3R5bGUocmVzaXplSGFuZGxlLCAndmlzaWJpbGl0eScpO1xuICAgICAgICAgICAgICAgIHJlc2l6ZU1hcmtMaW5lLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICByZXNpemVPdmVybGF5LmRlc3Ryb3koKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyV2lkdGhTdHlsZXMoXG4gICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aCArIG1vdXNlVXBFdmVudC5jbGllbnRYIC0gaW5pdGlhbE1vdXNlWCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGV4ZWMgPT4ge1xuICAgICAgICBleGVjKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmVzaXplSGFuZGxlKCkge1xuICAgIGNvbnN0IHJlc2l6ZUhhbmRsZTogSFRNTERpdkVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyMi5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnJlbmRlcmVyMi5hZGRDbGFzcyhyZXNpemVIYW5kbGUsIHJlc2l6YWJsZUJlbS5lbGVtZW50KCdoYW5kbGUnKSk7XG4gICAgdGhpcy5yZW5kZXJlcjIuYXBwZW5kQ2hpbGQodGhpcy5zZWxmRWxlbWVudCwgcmVzaXplSGFuZGxlKTtcblxuICAgIHJldHVybiByZXNpemVIYW5kbGU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJlc2l6ZU1hcmtMaW5lKGluaXRpYWxPZmZzZXQ6IG51bWJlcikge1xuICAgIGNvbnN0IG1hcmtMaW5lOiBIVE1MRWxlbWVudCA9IHRoaXMucmVuZGVyZXIyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMucmVuZGVyZXIyLmFkZENsYXNzKG1hcmtMaW5lLCByZXNpemFibGVCZW0uZWxlbWVudCgnbWFyay1saW5lJykpO1xuICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKG1hcmtMaW5lLCAnbGVmdCcsIGluaXRpYWxPZmZzZXQgKyAncHgnKTtcbiAgICB0aGlzLnJlbmRlcmVyMi5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lckVsZW1lbnQsIG1hcmtMaW5lKTtcbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudDogbWFya0xpbmUsXG4gICAgICB1cGRhdGVPZmZzZXQ6IChvZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZShcbiAgICAgICAgICBtYXJrTGluZSxcbiAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgaW5pdGlhbE9mZnNldCArIG9mZnNldCArICdweCcsXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lckVsZW1lbnQsIG1hcmtMaW5lKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmVzaXplT3ZlcmxheSgpIHtcbiAgICBjb25zdCByZXNpemVPdmVybGF5ID0gdGhpcy5yZW5kZXJlcjIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlcjIuYWRkQ2xhc3MocmVzaXplT3ZlcmxheSwgcmVzaXphYmxlQmVtLmVsZW1lbnQoJ292ZXJsYXknKSk7XG4gICAgdGhpcy5yZW5kZXJlcjIuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXJFbGVtZW50LCByZXNpemVPdmVybGF5KTtcbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudDogcmVzaXplT3ZlcmxheSxcbiAgICAgIGRlc3Ryb3k6ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXJFbGVtZW50LCByZXNpemVPdmVybGF5KTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sdW1uV2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZkVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cblxuICBwcml2YXRlIGdldENvbHVtbk9mZnNldCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zZWxmRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC1cbiAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyV2lkdGhTdHlsZXMod2lkdGg6IG51bWJlcikge1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRhYmxlQmVtLmVsZW1lbnQoXG4gICAgICBgY29sdW1uLSR7dGhpcy50YWJsZUNvbHVtbkRlZkRpcmVjdGl2ZS5jc3NDbGFzc0ZyaWVuZGx5TmFtZX1gLFxuICAgICk7XG4gICAgaWYgKCF0aGlzLmhvc3RBdHRyKSB7XG4gICAgICB0aGlzLmhvc3RBdHRyID0gYHRhYmxlLXJlc2l6YWJsZS0ke3RhYmxlQ29sUmVzaXphYmxlVWlkKyt9YDtcbiAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5ob3N0QXR0ciwgJycpO1xuICAgIH1cbiAgICBjb25zdCBzdHlsZVN0cmluZyA9IGBcbiAgICAgWyR7dGhpcy5ob3N0QXR0cn1dIC4ke2NsYXNzTmFtZX0ge1xuICAgICAgZmxleDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgd2lkdGg6ICR7d2lkdGh9cHggIWltcG9ydGFudDtcbiAgICAgIG1pbi13aWR0aDogJHt3aWR0aH1weCAhaW1wb3J0YW50O1xuICAgICAgbWF4LXdpZHRoOiAke3dpZHRofXB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIGA7XG4gICAgaWYgKHRoaXMuc3R5bGVFbCkge1xuICAgICAgdGhpcy5zdHlsZUVsLmlubmVySFRNTCA9IHN0eWxlU3RyaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0eWxlRWwgPSB0aGlzLnJlbmRlcmVyMi5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgdGhpcy5zdHlsZUVsLmlubmVySFRNTCA9IHN0eWxlU3RyaW5nO1xuICAgICAgdGhpcy5yZW5kZXJlcjIuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXJFbGVtZW50LCB0aGlzLnN0eWxlRWwpO1xuICAgIH1cblxuICAgIHRoaXMudGFibGVDb21wb25lbnQudXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCk7XG4gIH1cbn1cbiJdfQ==
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLXJlc2l6YWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFibGUvdGFibGUtY29sdW1uLXJlc2l6YWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFNBQVMsRUFDVCxHQUFHLEVBQ0gsS0FBSyxFQUVMLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsMkJBQTJCLEdBQzVCLE1BQU0sU0FBUyxDQUFDOztBQUVqQixJQUFJLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUUvQixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQU01RCxNQUFNLE9BQU8sNkJBQTZCO0lBRXhDLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFHbEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVBLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDMUQsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QywyQkFBMkIsR0FBRyxNQUFNLENBQ25ELDJCQUEyQixFQUMzQjtRQUNFLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FDRixDQUFDO0lBRWUsV0FBVyxHQUFnQixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQzVELGdCQUFnQixHQUFnQixDQUMvQyxJQUFJLENBQUMs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UUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2pELENBQUM7dUdBbk1VLDZCQUE2QjsyRkFBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFHQyxRQUFRO3NCQURQLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgZnJvbUV2ZW50LFxuICBtYXAsXG4gIG1lcmdlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgYnVpbGRCZW0gfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIHRhYmxlQmVtLFxuICBUYWJsZUNvbHVtbkRlZkRpcmVjdGl2ZSxcbiAgVGFibGVDb21wb25lbnQsXG4gIFRhYmxlU2Nyb2xsV3JhcHBlckRpcmVjdGl2ZSxcbn0gZnJvbSAnLi9pbmRleCc7XG5cbmxldCB0YWJsZUNvbHVtblJlc2l6YWJsZUlEID0gMDtcblxuY29uc3QgcmVzaXphYmxlQmVtID0gYnVpbGRCZW0oJ2F1aS10YWJsZS1jb2x1bW4tcmVzaXphYmxlJyk7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thdWlUYWJsZUNvbHVtblJlc2l6YWJsZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtblJlc2l6YWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKVxuICBtaW5XaWR0aCA9ICc0MHB4JztcblxuICBASW5wdXQoKVxuICBtYXhXaWR0aCA9ICc4MCUnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFibGVDb2x1bW5EZWZEaXJlY3RpdmUgPSBpbmplY3QoVGFibGVDb2x1bW5EZWZEaXJlY3RpdmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhYmxlQ29tcG9uZW50ID0gaW5qZWN0KFRhYmxlQ29tcG9uZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWJsZVNjcm9sbFdyYXBwZXJEaXJlY3RpdmUgPSBpbmplY3QoXG4gICAgVGFibGVTY3JvbGxXcmFwcGVyRGlyZWN0aXZlLFxuICAgIHtcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxmRWxlbWVudDogSFRNTEVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBjb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudCA9IChcbiAgICB0aGlzLnRhYmxlU2Nyb2xsV3JhcHBlckRpcmVjdGl2ZSB8fCB0aGlzLnRhYmxlQ29tcG9uZW50XG4gICkuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gIHByaXZhdGUgc3R5bGVFbGVtZW50OiBIVE1MU3R5bGVFbGVtZW50O1xuICBwcml2YXRlIGhvc3RBdHRyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IHJlc2l6ZUhhbmRsZSA9IHRoaXMuY3JlYXRlUmVzaXplSGFuZGxlKCk7XG4gICAgdGhpcy5iaW5kUmVzaXphYmxlKHJlc2l6ZUhhbmRsZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN0eWxlRWxlbWVudD8ucmVtb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIGJpbmRSZXNpemFibGUocmVzaXplSGFuZGxlOiBIVE1MRWxlbWVudCkge1xuICAgIGZyb21FdmVudDxNb3VzZUV2ZW50PihyZXNpemVIYW5kbGUsICdtb3VzZWRvd24nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChtb3VzZURvd25FdmVudCA9PiB7XG4gICAgICAgICAgbW91c2VEb3duRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBtb3VzZURvd25FdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHJlc2l6ZUhhbmRsZSwgJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7XG4gICAgICAgICAgY29uc3QgcmVzaXplUmFuZ2UgPSB0aGlzLmdldFJlc2l6ZVJhbmdlKCk7XG4gICAgICAgICAgY29uc3QgaW5pdGlhbE1vdXNlWCA9IG1vdXNlRG93bkV2ZW50LmNsaWVudFg7XG4gICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSB0aGlzLmdldENvbHVtbldpZHRoKCk7XG4gICAgICAgICAgY29uc3QgY29sdW1uT2Zmc2V0ID0gdGhpcy5nZXRDb2x1bW5PZmZzZXQoKTtcbiAgICAgICAgICBjb25zdCByZXNpemVNYXJrTGluZSA9IHRoaXMuY3JlYXRlUmVzaXplTWFya0xpbmUoXG4gICAgICAgICAgICBjb2x1bW5XaWR0aCArIGNvbHVtbk9mZnNldCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IHJlc2l6ZU92ZXJsYXkgPSB0aGlzLmNyZWF0ZVJlc2l6ZU92ZXJsYXkoKTtcblxuICAgICAgICAgIGNvbnN0IG1vdXNlVXAkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2V1cCcpLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgbW91c2VNb3ZlJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNlbW92ZScpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwobW91c2VVcCQpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICBtb3VzZU1vdmUkLnBpcGUoXG4gICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICBtb3VzZU1vdmVFdmVudCA9PiAoKSA9PlxuICAgICAgICAgICAgICAgICAgcmVzaXplTWFya0xpbmUudXBkYXRlT2Zmc2V0KFxuICAgICAgICAgICAgICAgICAgICBtb3VzZU1vdmVFdmVudC5jbGllbnRYIC0gaW5pdGlhbE1vdXNlWCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbW91c2VVcCQucGlwZShcbiAgICAgICAgICAgICAgbWFwKG1vdXNlVXBFdmVudCA9PiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlU3R5bGUocmVzaXplSGFuZGxlLCAndmlzaWJpbGl0eScpO1xuICAgICAgICAgICAgICAgIHJlc2l6ZU1hcmtMaW5lLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICByZXNpemVPdmVybGF5LmRlc3Ryb3koKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyV2lkdGhTdHlsZXMoXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldFdpZHRoSW5SYW5nZShcbiAgICAgICAgICAgICAgICAgICAgcmVzaXplUmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoICsgbW91c2VVcEV2ZW50LmNsaWVudFggLSBpbml0aWFsTW91c2VYLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGV4ZWMgPT4ge1xuICAgICAgICBleGVjKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmVzaXplSGFuZGxlKCkge1xuICAgIGNvbnN0IHJlc2l6ZUhhbmRsZTogSFRNTERpdkVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyMi5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnJlbmRlcmVyMi5hZGRDbGFzcyhyZXNpemVIYW5kbGUsIHJlc2l6YWJsZUJlbS5lbGVtZW50KCdoYW5kbGUnKSk7XG4gICAgdGhpcy5yZW5kZXJlcjIuYXBwZW5kQ2hpbGQodGhpcy5zZWxmRWxlbWVudCwgcmVzaXplSGFuZGxlKTtcblxuICAgIHJldHVybiByZXNpemVIYW5kbGU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJlc2l6ZU1hcmtMaW5lKGluaXRpYWxPZmZzZXQ6IG51bWJlcikge1xuICAgIGNvbnN0IG1hcmtMaW5lOiBIVE1MRWxlbWVudCA9IHRoaXMucmVuZGVyZXIyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMucmVuZGVyZXIyLmFkZENsYXNzKG1hcmtMaW5lLCByZXNpemFibGVCZW0uZWxlbWVudCgnbWFyay1saW5lJykpO1xuICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKG1hcmtMaW5lLCAnbGVmdCcsIGluaXRpYWxPZmZzZXQgKyAncHgnKTtcbiAgICB0aGlzLnJlbmRlcmVyMi5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lckVsZW1lbnQsIG1hcmtMaW5lKTtcbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudDogbWFya0xpbmUsXG4gICAgICB1cGRhdGVPZmZzZXQ6IChvZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZShcbiAgICAgICAgICBtYXJrTGluZSxcbiAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgaW5pdGlhbE9mZnNldCArIG9mZnNldCArICdweCcsXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lckVsZW1lbnQsIG1hcmtMaW5lKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmVzaXplT3ZlcmxheSgpIHtcbiAgICBjb25zdCByZXNpemVPdmVybGF5ID0gdGhpcy5yZW5kZXJlcjIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlcjIuYWRkQ2xhc3MocmVzaXplT3ZlcmxheSwgcmVzaXphYmxlQmVtLmVsZW1lbnQoJ292ZXJsYXknKSk7XG4gICAgdGhpcy5yZW5kZXJlcjIuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXJFbGVtZW50LCByZXNpemVPdmVybGF5KTtcbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudDogcmVzaXplT3ZlcmxheSxcbiAgICAgIGRlc3Ryb3k6ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXJFbGVtZW50LCByZXNpemVPdmVybGF5KTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sdW1uV2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZkVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cblxuICBwcml2YXRlIGdldENvbHVtbk9mZnNldCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zZWxmRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC1cbiAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2lkdGhJblJhbmdlKFxuICAgIFttaW5XaWR0aCwgbWF4V2lkdGhdOiBbbnVtYmVyLCBudW1iZXJdLFxuICAgIHdpZHRoOiBudW1iZXIsXG4gICk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHdpZHRoLCBtaW5XaWR0aCksIG1heFdpZHRoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVzaXplUmFuZ2UoKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgY29uc3QgbWluV2lkdGggPSB0aGlzLmdldEFjdHVhbFdpZHRoKHRoaXMubWluV2lkdGgpO1xuICAgIGNvbnN0IG1heFdpZHRoID0gdGhpcy5nZXRBY3R1YWxXaWR0aCh0aGlzLm1heFdpZHRoKTtcbiAgICByZXR1cm4gW21pbldpZHRoLCBtYXhXaWR0aF07XG4gIH1cblxuICBwcml2YXRlIGdldEFjdHVhbFdpZHRoKHdpZHRoOiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmICh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gd2lkdGg7XG4gICAgfSBlbHNlIGlmICh3aWR0aC5lbmRzV2l0aCgncHgnKSkge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KHdpZHRoLnNsaWNlKDAsIC0yKSk7XG4gICAgfSBlbHNlIGlmICh3aWR0aC5lbmRzV2l0aCgnJScpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAodGhpcy5jb250YWluZXJFbGVtZW50LmNsaWVudFdpZHRoICogcGFyc2VJbnQod2lkdGguc2xpY2UoMCwgLTEpKSkgLyAxMDBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJXaWR0aFN0eWxlcyh3aWR0aDogbnVtYmVyKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gdGFibGVCZW0uZWxlbWVudChcbiAgICAgIGBjb2x1bW4tJHt0aGlzLnRhYmxlQ29sdW1uRGVmRGlyZWN0aXZlLmNzc0NsYXNzRnJpZW5kbHlOYW1lfWAsXG4gICAgKTtcbiAgICBpZiAoIXRoaXMuaG9zdEF0dHIpIHtcbiAgICAgIHRoaXMuaG9zdEF0dHIgPSBgdGFibGUtcmVzaXphYmxlLSR7dGFibGVDb2x1bW5SZXNpemFibGVJRCsrfWA7XG4gICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMuaG9zdEF0dHIsICcnKTtcbiAgICB9XG4gICAgY29uc3Qgc3R5bGVTdHJpbmcgPSBgXG4gICAgIFske3RoaXMuaG9zdEF0dHJ9XSAuJHtjbGFzc05hbWV9IHtcbiAgICAgIGZsZXg6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4ICFpbXBvcnRhbnQ7XG4gICAgICBtaW4td2lkdGg6ICR7d2lkdGh9cHggIWltcG9ydGFudDtcbiAgICAgIG1heC13aWR0aDogJHt3aWR0aH1weCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICBgO1xuICAgIGlmICh0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgdGhpcy5zdHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gc3R5bGVTdHJpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gdGhpcy5yZW5kZXJlcjIuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgIHRoaXMuc3R5bGVFbGVtZW50LmlubmVySFRNTCA9IHN0eWxlU3RyaW5nO1xuICAgICAgdGhpcy5yZW5kZXJlcjIuYXBwZW5kQ2hpbGQoXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKSxcbiAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudGFibGVDb21wb25lbnQudXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCk7XG4gIH1cbn1cbiJdfQ==
@@ -10380,11 +10380,11 @@ const TABLE_MODULE = [
10380
10380
  TableScrollWrapperDirective,
10381
10381
  ];
10382
10382
 
10383
- let tableColResizableUid = 0;
10383
+ let tableColumnResizableID = 0;
10384
10384
  const resizableBem = buildBem('aui-table-column-resizable');
10385
10385
  class TableColumnResizableDirective {
10386
- minWidth = '60px';
10387
- maxWidth = '100%';
10386
+ minWidth = '40px';
10387
+ maxWidth = '80%';
10388
10388
  renderer2 = inject(Renderer2);
10389
10389
  tableColumnDefDirective = inject(TableColumnDefDirective);
10390
10390
  tableComponent = inject(TableComponent);
@@ -10393,16 +10393,16 @@ class TableColumnResizableDirective {
10393
10393
  });
10394
10394
  selfElement = inject(ElementRef).nativeElement;
10395
10395
  containerElement = (this.tableScrollWrapperDirective || this.tableComponent).elementRef.nativeElement;
10396
- destroy$$ = new Subject();
10397
- styleEl;
10396
+ styleElement;
10398
10397
  hostAttr;
10398
+ resizeSubscription;
10399
10399
  ngAfterViewInit() {
10400
10400
  const resizeHandle = this.createResizeHandle();
10401
10401
  this.bindResizable(resizeHandle);
10402
10402
  }
10403
10403
  ngOnDestroy() {
10404
- this.destroy$$.next();
10405
- this.destroy$$.complete();
10404
+ this.resizeSubscription?.unsubscribe();
10405
+ this.styleElement?.remove();
10406
10406
  }
10407
10407
  bindResizable(resizeHandle) {
10408
10408
  fromEvent(resizeHandle, 'mousedown')
@@ -10410,6 +10410,7 @@ class TableColumnResizableDirective {
10410
10410
  mouseDownEvent.preventDefault();
10411
10411
  mouseDownEvent.stopPropagation();
10412
10412
  this.renderer2.setStyle(resizeHandle, 'visibility', 'hidden');
10413
+ const resizeRange = this.getResizeRange();
10413
10414
  const initialMouseX = mouseDownEvent.clientX;
10414
10415
  const columnWidth = this.getColumnWidth();
10415
10416
  const columnOffset = this.getColumnOffset();
@@ -10421,9 +10422,9 @@ class TableColumnResizableDirective {
10421
10422
  this.renderer2.removeStyle(resizeHandle, 'visibility');
10422
10423
  resizeMarkLine.destroy();
10423
10424
  resizeOverlay.destroy();
10424
- this.renderWidthStyles(columnWidth + mouseUpEvent.clientX - initialMouseX);
10425
+ this.renderWidthStyles(this.getWidthInRange(resizeRange, columnWidth + mouseUpEvent.clientX - initialMouseX));
10425
10426
  })));
10426
- }), takeUntil(this.destroy$$))
10427
+ }))
10427
10428
  .subscribe(exec => {
10428
10429
  exec();
10429
10430
  });
@@ -10467,10 +10468,29 @@ class TableColumnResizableDirective {
10467
10468
  return (this.selfElement.getBoundingClientRect().left -
10468
10469
  this.containerElement.getBoundingClientRect().left);
10469
10470
  }
10471
+ getWidthInRange([minWidth, maxWidth], width) {
10472
+ return Math.min(Math.max(width, minWidth), maxWidth);
10473
+ }
10474
+ getResizeRange() {
10475
+ const minWidth = this.getActualWidth(this.minWidth);
10476
+ const maxWidth = this.getActualWidth(this.maxWidth);
10477
+ return [minWidth, maxWidth];
10478
+ }
10479
+ getActualWidth(width) {
10480
+ if (typeof width === 'number') {
10481
+ return width;
10482
+ }
10483
+ else if (width.endsWith('px')) {
10484
+ return parseInt(width.slice(0, -2));
10485
+ }
10486
+ else if (width.endsWith('%')) {
10487
+ return ((this.containerElement.clientWidth * parseInt(width.slice(0, -1))) / 100);
10488
+ }
10489
+ }
10470
10490
  renderWidthStyles(width) {
10471
10491
  const className = tableBem.element(`column-${this.tableColumnDefDirective.cssClassFriendlyName}`);
10472
10492
  if (!this.hostAttr) {
10473
- this.hostAttr = `table-resizable-${tableColResizableUid++}`;
10493
+ this.hostAttr = `table-resizable-${tableColumnResizableID++}`;
10474
10494
  this.containerElement.setAttribute(this.hostAttr, '');
10475
10495
  }
10476
10496
  const styleString = `
@@ -10481,13 +10501,13 @@ class TableColumnResizableDirective {
10481
10501
  max-width: ${width}px !important;
10482
10502
  }
10483
10503
  `;
10484
- if (this.styleEl) {
10485
- this.styleEl.innerHTML = styleString;
10504
+ if (this.styleElement) {
10505
+ this.styleElement.innerHTML = styleString;
10486
10506
  }
10487
10507
  else {
10488
- this.styleEl = this.renderer2.createElement('style');
10489
- this.styleEl.innerHTML = styleString;
10490
- this.renderer2.appendChild(this.containerElement, this.styleEl);
10508
+ this.styleElement = this.renderer2.createElement('style');
10509
+ this.styleElement.innerHTML = styleString;
10510
+ this.renderer2.appendChild(document.querySelector('head'), this.styleElement);
10491
10511
  }
10492
10512
  this.tableComponent.updateStickyColumnStyles();
10493
10513
  }