@porscheinformatik/clr-addons 15.2.0 → 15.2.2

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,6 +1,6 @@
1
- import { AfterContentInit, ElementRef, OnDestroy } from '@angular/core';
1
+ import { AfterContentChecked, ElementRef, OnDestroy } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class ClrDropdownOverflowDirective implements AfterContentInit, OnDestroy {
3
+ export declare class ClrDropdownOverflowDirective implements AfterContentChecked, OnDestroy {
4
4
  private elRef;
5
5
  clrDropdownMenuMaxHeight: string | number;
6
6
  clrDropdownMenuItemMinHeight: string | number;
@@ -8,8 +8,10 @@ export declare class ClrDropdownOverflowDirective implements AfterContentInit, O
8
8
  readonly defaultItemMinHeightRem = 1.5;
9
9
  readonly marginBottomRem = 0.1;
10
10
  private destroy$;
11
+ private alreadyChecked;
12
+ private heightFix;
11
13
  constructor(elRef: ElementRef);
12
- ngAfterContentInit(): void;
14
+ ngAfterContentChecked(): void;
13
15
  ngOnDestroy(): void;
14
16
  private applyDropdownOverflowStyles;
15
17
  private removeDropdownOverflowStyles;
@@ -1,9 +1,9 @@
1
1
  /*
2
- * Copyright (c) 2018-2022 Porsche Informatik. All Rights Reserved.
2
+ * Copyright (c) 2018-2023 Porsche Informatik. All Rights Reserved.
3
3
  * This software is released under MIT license.
4
4
  * The full license information can be found in LICENSE in the root directory of this project.
5
5
  */
6
- import { ContentChildren, Directive, ElementRef, Input, QueryList } from '@angular/core';
6
+ import { ContentChildren, Directive, ElementRef, Input, QueryList, } from '@angular/core';
7
7
  import { ClrDropdown } from '@clr/angular';
8
8
  import { Subject } from 'rxjs';
9
9
  import { takeUntil } from 'rxjs/operators';
@@ -14,8 +14,10 @@ export class ClrDropdownOverflowDirective {
14
14
  this.defaultItemMinHeightRem = 1.5;
15
15
  this.marginBottomRem = 0.1;
16
16
  this.destroy$ = new Subject();
17
+ this.alreadyChecked = false;
18
+ this.heightFix = 27;
17
19
  }
18
- ngAfterContentInit() {
20
+ ngAfterContentChecked() {
19
21
  // first trigger manually because the subscription lower only triggers after first change
20
22
  if (!this.nestedDropdownChildren?.length) {
21
23
  this.applyDropdownOverflowStyles();
@@ -37,14 +39,25 @@ export class ClrDropdownOverflowDirective {
37
39
  applyDropdownOverflowStyles() {
38
40
  // the vertical position of our element in the current window
39
41
  const y = this.elRef.nativeElement.getBoundingClientRect().y;
40
- const itemMinHeightPx = this.getItemMinHeight(this.clrDropdownMenuItemMinHeight);
41
- // see https://stackoverflow.com/questions/22754315/for-loop-for-htmlcollection-elements
42
- for (const item of this.getAllChildDropdownMenuItems()) {
43
- item.style.minHeight = itemMinHeightPx + 'px';
42
+ if (y !== 0 && !this.alreadyChecked) {
43
+ const itemMinHeightPx = this.getItemMinHeight(this.clrDropdownMenuItemMinHeight);
44
+ // see https://stackoverflow.com/questions/22754315/for-loop-for-htmlcollection-elements
45
+ for (const item of this.getAllChildDropdownMenuItems()) {
46
+ item.style.minHeight = itemMinHeightPx + 'px';
47
+ }
48
+ let height = 0;
49
+ if (y + this.heightFix < window.innerHeight - y) {
50
+ height = window.innerHeight - y - this.heightFix;
51
+ }
52
+ else {
53
+ height = window.innerHeight - y;
54
+ }
55
+ this.elRef.nativeElement.style.maxHeight =
56
+ this.getMenuMaxHeight(this.clrDropdownMenuMaxHeight, height - this.convertRemToPixels(this.marginBottomRem)) +
57
+ 'px';
58
+ this.elRef.nativeElement.style.overflowY = 'auto';
59
+ this.alreadyChecked = true;
44
60
  }
45
- this.elRef.nativeElement.style.maxHeight =
46
- this.getMenuMaxHeight(this.clrDropdownMenuMaxHeight, window.innerHeight - y - this.convertRemToPixels(this.marginBottomRem)) + 'px';
47
- this.elRef.nativeElement.style.overflowY = 'auto';
48
61
  }
49
62
  removeDropdownOverflowStyles() {
50
63
  for (const item of this.getAllChildDropdownMenuItems()) {
@@ -105,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
105
118
  type: ContentChildren,
106
119
  args: [ClrDropdown, { descendants: true }]
107
120
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xyLWRyb3Bkb3duLW92ZXJmbG93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2Ryb3Bkb3duL2Nsci1kcm9wZG93bi1vdmVyZmxvdy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBb0IsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUczQyxNQUFNLE9BQU8sNEJBQTRCO0lBV3ZDLFlBQTJCLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFMNUIsNEJBQXVCLEdBQUcsR0FBRyxDQUFDO1FBQzlCLG9CQUFlLEdBQUcsR0FBRyxDQUFDO1FBRTlCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRVEsQ0FBQztJQUVoRCxrQkFBa0I7UUFDaEIseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFO1lBQ3hDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWdDLEVBQUUsRUFBRTtZQUNoSCwwR0FBMEc7WUFDMUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO2FBQ3BDO2lCQUFNLElBQUks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S0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0RTtpQkFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEU7WUFDRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEdBQVc7UUFDcEMsT0FBTyxHQUFHLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU8saUJBQWlCLENBQUMsRUFBVTtRQUNsQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUM3QyxPQUFPLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDMUIsQ0FBQzs7eUhBckdVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLGdPQUl0QixXQUFXOzJGQUpqQiw0QkFBNEI7a0JBRHhDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7aUdBRWpDLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBRXVELHNCQUFzQjtzQkFBbEYsZUFBZTt1QkFBQyxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFBvcnNjaGUgSW5mb3JtYXRpay4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xyRHJvcGRvd24gfSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdjbHItZHJvcGRvd24tbWVudScgfSlcbmV4cG9ydCBjbGFzcyBDbHJEcm9wZG93bk92ZXJmbG93RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY2xyRHJvcGRvd25NZW51TWF4SGVpZ2h0OiBzdHJpbmcgfCBudW1iZXI7IC8vIGNhbiBiZSBvZiBweCwgcmVtLCB2aCwgb3IgYSBudW1iZXIgKHdoaWNoIHRoZW4gaXMgY29uc2lkZXJlZCBhcyBweCB2YWx1ZSlcbiAgQElucHV0KCkgY2xyRHJvcGRvd25NZW51SXRlbU1pbkhlaWdodDogc3RyaW5nIHwgbnVtYmVyOyAvLyBjYW4gYmUgb2YgcHgsIHJlbSwgdmgsIG9yIGEgbnVtYmVyICh3aGljaCB0aGVuIGlzIGNvbnNpZGVyZWQgYXMgcHggdmFsdWUpXG5cbiAgQENvbnRlbnRDaGlsZHJlbihDbHJEcm9wZG93biwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBwcml2YXRlIG5lc3RlZERyb3Bkb3duQ2hpbGRyZW46IFF1ZXJ5TGlzdDxDbHJEcm9wZG93bj47XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRJdGVtTWluSGVpZ2h0UmVtID0gMS41O1xuICBwdWJsaWMgcmVhZG9ubHkgbWFyZ2luQm90dG9tUmVtID0gMC4xO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBmaXJzdCB0cmlnZ2VyIG1hbnVhbGx5IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiBsb3dlciBvbmx5IHRyaWdnZXJzIGFmdGVyIGZpcnN0IGNoYW5nZVxuICAgIGlmICghdGhpcy5uZXN0ZWREcm9wZG93bkNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYXBwbHlEcm9wZG93bk92ZXJmbG93U3R5bGVzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5uZXN0ZWREcm9wZG93bkNoaWxkcmVuLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoY2hpbGRyZW46IFF1ZXJ5TGlzdDxDbHJEcm9wZG93bj4pID0+IHtcbiAgICAgIC8vIGlmIHRoZXJlIGFyZSBhbnkgbmVzdGVkIGRyb3Bkb3ducywgb3VyIG92ZXJmbG93IGZpeCBwcmV2ZW50cyB0aG9zZSBmcm9tIHNob3dpbmcgYW5kIG5lZWRzIHRvIGJlIHJlbW92ZWRcbiAgICAgIGlmICghY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmFwcGx5RHJvcGRvd25PdmVyZmxvd1N0eWxlcygpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRHJvcGRvd25PdmVyZmxvd1N0eWxlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURyb3Bkb3duT3ZlcmZsb3dTdHlsZXMoKTogdm9pZCB7XG4gICAgLy8gdGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIG91ciBlbGVtZW50IGluIHRoZSBjdXJyZW50IHdpbmRvd1xuICAgIGNvbnN0IHkgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueTtcblxuICAgIGNvbnN0IGl0ZW1NaW5IZWlnaHRQeCA9IHRoaXMuZ2V0SXRlbU1pbkhlaWdodCh0aGlzLmNsckRyb3Bkb3duTWVudUl0ZW1NaW5IZWlnaHQpO1xuICAgIC8vIHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMjc1NDMxNS9mb3ItbG9vcC1mb3ItaHRtbGNvbGxlY3Rpb24tZWxlbWVudHNcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5nZXRBbGxDaGlsZERyb3Bkb3duTWVudUl0ZW1zKCkpIHtcbiAgICAgIGl0ZW0uc3R5bGUubWluSGVpZ2h0ID0gaXRlbU1pbkhlaWdodFB4ICsgJ3B4JztcbiAgICB9XG5cbiAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID1cbiAgICAgIHRoaXMuZ2V0TWVudU1heEhlaWdodChcbiAgICAgICAgdGhpcy5jbHJEcm9wZG93bk1lbnVNYXhIZWlnaHQsXG4gICAgICAgIHdpbmRvdy5pbm5lckhlaWdodCAtIHkgLSB0aGlzLmNvbnZlcnRSZW1Ub1BpeGVscyh0aGlzLm1hcmdpbkJvdHRvbVJlbSlcbiAgICAgICkgKyAncHgnO1xuICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5vdmVyZmxvd1kgPSAnYXV0byc7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURyb3Bkb3duT3ZlcmZsb3dTdHlsZXMoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZ2V0QWxsQ2hpbGREcm9wZG93bk1lbnVJdGVtcygpKSB7XG4gICAgICBpdGVtLnN0eWxlLm1pbkhlaWdodCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IG51bGw7XG4gICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLm92ZXJmbG93WSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldEFsbENoaWxkRHJvcGRvd25NZW51SXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcm9wZG93bi1pdGVtJyk7XG4gIH1cblxuICBwcml2YXRlIGdldE1lbnVNYXhIZWlnaHQobWVudU1heEhlaWdodFByb3ZpZGVkOiBzdHJpbmcgfCBudW1iZXIsIG1lbnVNYXhIZWlnaHRQeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAobWVudU1heEhlaWdodFByb3ZpZGVkKSB7XG4gICAgICBjb25zdCBtYXhIZWlnaHRQeCA9IHRoaXMuY29udmVydFRvUGl4ZWxzKG1lbnVNYXhIZWlnaHRQcm92aWRlZCk7XG4gICAgICByZXR1cm4gbWF4SGVpZ2h0UHggPiBtZW51TWF4SGVpZ2h0UHggPyBtZW51TWF4SGVpZ2h0UHggOiBtYXhIZWlnaHRQeDtcbiAgICB9XG4gICAgcmV0dXJuIG1lbnVNYXhIZWlnaHRQeDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbU1pbkhlaWdodChpdGVtTWluSGVpZ2h0UHJvdmlkZWQ6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKGl0ZW1NaW5IZWlnaHRQcm92aWRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvUGl4ZWxzKGl0ZW1NaW5IZWlnaHRQcm92aWRlZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRSZW1Ub1BpeGVscyh0aGlzLmRlZmF1bHRJdGVtTWluSGVpZ2h0UmVtKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFRvUGl4ZWxzKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodmFsdWUuZW5kc1dpdGgoJ3B4JykpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUucmVwbGFjZSgncHgnLCAnJykpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZS5lbmRzV2l0aCgncmVtJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFJlbVRvUGl4ZWxzKHBhcnNlRmxvYXQodmFsdWUucmVwbGFjZSgncmVtJywgJycpKSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmVuZHNXaXRoKCd2aCcpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRWaFRvUGl4ZWxzKHBhcnNlRmxvYXQodmFsdWUucmVwbGFjZSgndmgnLCAnJykpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UmVtVG9QaXhlbHMocmVtOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiByZW0gKiBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5mb250U2l6ZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRWaFRvUGl4ZWxzKHZoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHB4UGVyVmhVbml0ID0gd2luZG93LmlubmVySGVpZ2h0IC8gMTAwO1xuICAgIHJldHVybiB2aCAqIHB4UGVyVmhVbml0O1xuICB9XG59XG4iXX0=
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xyLWRyb3Bkb3duLW92ZXJmbG93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2Ryb3Bkb3duL2Nsci1kcm9wZG93bi1vdmVyZmxvdy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFFTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzNDLE1BQU0sT0FBTyw0QkFBNEI7SUFhdkMsWUFBMkIsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQVA1Qiw0QkFBdUIsR0FBRyxHQUFHLENBQUM7UUFDOUIsb0JBQWUsR0FBRyxHQUFHLENBQUM7UUFFOUIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsY0FBUyxHQUFHLEVBQUUsQ0FBQztJQUV3QixDQUFDO0lBRWhELHFCQUFxQjtRQUNuQix5RkFBeUY7UUFDekYsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLEVBQUU7WUFDeEMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7U0FDcEM7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBZ0MsRUFBRSxFQUFFO1lBQ2hILDBHQUEwRztZQUMxRyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDckIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7YUFDcEM7aUJBQU0sSUFBSSxRQUFRLEVBQUUsTUFBTSxFQUFFO2dCQUMzQixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyw2REFBNkQ7UUFDN0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDakYsd0ZBQXdGO1lBQ3hGLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLEVBQUU7Z0JBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUM7YUFDL0M7WUFDRCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFO2dCQUMvQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUNsRDtpQkFBTTtnQkFDTCxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7YUFDakM7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUztnQkFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDNUcsSUFBSSxDQUFDO1lBRVAsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQzdCO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDbEQsQ0FBQztJQUVPLDRCQUE0QjtRQUNsQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxxQkFBc0MsRUFBRSxlQUF1QjtRQUN0RixJQUFJLHFCQUFxQixFQUFFO1lBQ3pCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNoRSxPQUFPLFdBQVcsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1NBQ3RFO1FBQ0QsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLHFCQUFzQztRQUM3RCxJQUFJLHFCQUFxQixFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFzQjtRQUM1QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDNUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RFO2lCQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwRTtZQUNELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sa0JBQWtCLENBQUMsR0FBVztRQUNwQyxPQUFPLEdBQUcsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxFQUFVO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQzdDLE9BQU8sRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUMxQixDQUFDOzt5SEE5R1UsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsZ09BSXRCLFdBQVc7MkZBSmpCLDRCQUE0QjtrQkFEeEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRTtpR0FFakMsd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFFdUQsc0JBQXNCO3NCQUFsRixlQUFlO3VCQUFDLFdBQVcsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgUG9yc2NoZSBJbmZvcm1hdGlrLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsckRyb3Bkb3duIH0gZnJvbSAnQGNsci9hbmd1bGFyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnY2xyLWRyb3Bkb3duLW1lbnUnIH0pXG5leHBvcnQgY2xhc3MgQ2xyRHJvcGRvd25PdmVyZmxvd0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNsckRyb3Bkb3duTWVudU1heEhlaWdodDogc3RyaW5nIHwgbnVtYmVyOyAvLyBjYW4gYmUgb2YgcHgsIHJlbSwgdmgsIG9yIGEgbnVtYmVyICh3aGljaCB0aGVuIGlzIGNvbnNpZGVyZWQgYXMgcHggdmFsdWUpXG4gIEBJbnB1dCgpIGNsckRyb3Bkb3duTWVudUl0ZW1NaW5IZWlnaHQ6IHN0cmluZyB8IG51bWJlcjsgLy8gY2FuIGJlIG9mIHB4LCByZW0sIHZoLCBvciBhIG51bWJlciAod2hpY2ggdGhlbiBpcyBjb25zaWRlcmVkIGFzIHB4IHZhbHVlKVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oQ2xyRHJvcGRvd24sIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHJpdmF0ZSBuZXN0ZWREcm9wZG93bkNoaWxkcmVuOiBRdWVyeUxpc3Q8Q2xyRHJvcGRvd24+O1xuXG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0SXRlbU1pbkhlaWdodFJlbSA9IDEuNTtcbiAgcHVibGljIHJlYWRvbmx5IG1hcmdpbkJvdHRvbVJlbSA9IDAuMTtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBhbHJlYWR5Q2hlY2tlZCA9IGZhbHNlO1xuICBwcml2YXRlIGhlaWdodEZpeCA9IDI3O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAvLyBmaXJzdCB0cmlnZ2VyIG1hbnVhbGx5IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiBsb3dlciBvbmx5IHRyaWdnZXJzIGFmdGVyIGZpcnN0IGNoYW5nZVxuICAgIGlmICghdGhpcy5uZXN0ZWREcm9wZG93bkNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYXBwbHlEcm9wZG93bk92ZXJmbG93U3R5bGVzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5uZXN0ZWREcm9wZG93bkNoaWxkcmVuLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoY2hpbGRyZW46IFF1ZXJ5TGlzdDxDbHJEcm9wZG93bj4pID0+IHtcbiAgICAgIC8vIGlmIHRoZXJlIGFyZSBhbnkgbmVzdGVkIGRyb3Bkb3ducywgb3VyIG92ZXJmbG93IGZpeCBwcmV2ZW50cyB0aG9zZSBmcm9tIHNob3dpbmcgYW5kIG5lZWRzIHRvIGJlIHJlbW92ZWRcbiAgICAgIGlmICghY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmFwcGx5RHJvcGRvd25PdmVyZmxvd1N0eWxlcygpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRHJvcGRvd25PdmVyZmxvd1N0eWxlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURyb3Bkb3duT3ZlcmZsb3dTdHlsZXMoKTogdm9pZCB7XG4gICAgLy8gdGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIG91ciBlbGVtZW50IGluIHRoZSBjdXJyZW50IHdpbmRvd1xuICAgIGNvbnN0IHkgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueTtcbiAgICBpZiAoeSAhPT0gMCAmJiAhdGhpcy5hbHJlYWR5Q2hlY2tlZCkge1xuICAgICAgY29uc3QgaXRlbU1pbkhlaWdodFB4ID0gdGhpcy5nZXRJdGVtTWluSGVpZ2h0KHRoaXMuY2xyRHJvcGRvd25NZW51SXRlbU1pbkhlaWdodCk7XG4gICAgICAvLyBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjI3NTQzMTUvZm9yLWxvb3AtZm9yLWh0bWxjb2xsZWN0aW9uLWVsZW1lbnRzXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5nZXRBbGxDaGlsZERyb3Bkb3duTWVudUl0ZW1zKCkpIHtcbiAgICAgICAgaXRlbS5zdHlsZS5taW5IZWlnaHQgPSBpdGVtTWluSGVpZ2h0UHggKyAncHgnO1xuICAgICAgfVxuICAgICAgbGV0IGhlaWdodCA9IDA7XG4gICAgICBpZiAoeSArIHRoaXMuaGVpZ2h0Rml4IDwgd2luZG93LmlubmVySGVpZ2h0IC0geSkge1xuICAgICAgICBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB5IC0gdGhpcy5oZWlnaHRGaXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB5O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID1cbiAgICAgICAgdGhpcy5nZXRNZW51TWF4SGVpZ2h0KHRoaXMuY2xyRHJvcGRvd25NZW51TWF4SGVpZ2h0LCBoZWlnaHQgLSB0aGlzLmNvbnZlcnRSZW1Ub1BpeGVscyh0aGlzLm1hcmdpbkJvdHRvbVJlbSkpICtcbiAgICAgICAgJ3B4JztcblxuICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLm92ZXJmbG93WSA9ICdhdXRvJztcbiAgICAgIHRoaXMuYWxyZWFkeUNoZWNrZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRHJvcGRvd25PdmVyZmxvd1N0eWxlcygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5nZXRBbGxDaGlsZERyb3Bkb3duTWVudUl0ZW1zKCkpIHtcbiAgICAgIGl0ZW0uc3R5bGUubWluSGVpZ2h0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDtcbiAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsQ2hpbGREcm9wZG93bk1lbnVJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duLWl0ZW0nKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWVudU1heEhlaWdodChtZW51TWF4SGVpZ2h0UHJvdmlkZWQ6IHN0cmluZyB8IG51bWJlciwgbWVudU1heEhlaWdodFB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChtZW51TWF4SGVpZ2h0UHJvdmlkZWQpIHtcbiAgICAgIGNvbnN0IG1heEhlaWdodFB4ID0gdGhpcy5jb252ZXJ0VG9QaXhlbHMobWVudU1heEhlaWdodFByb3ZpZGVkKTtcbiAgICAgIHJldHVybiBtYXhIZWlnaHRQeCA+IG1lbnVNYXhIZWlnaHRQeCA/IG1lbnVNYXhIZWlnaHRQeCA6IG1heEhlaWdodFB4O1xuICAgIH1cbiAgICByZXR1cm4gbWVudU1heEhlaWdodFB4O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJdGVtTWluSGVpZ2h0KGl0ZW1NaW5IZWlnaHRQcm92aWRlZDogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoaXRlbU1pbkhlaWdodFByb3ZpZGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9QaXhlbHMoaXRlbU1pbkhlaWdodFByb3ZpZGVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udmVydFJlbVRvUGl4ZWxzKHRoaXMuZGVmYXVsdEl0ZW1NaW5IZWlnaHRSZW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VG9QaXhlbHModmFsdWU6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgncHgnKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKCdweCcsICcnKSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmVuZHNXaXRoKCdyZW0nKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0UmVtVG9QaXhlbHMocGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKCdyZW0nLCAnJykpKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUuZW5kc1dpdGgoJ3ZoJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFZoVG9QaXhlbHMocGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKCd2aCcsICcnKSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRSZW1Ub1BpeGVscyhyZW06IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHJlbSAqIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFZoVG9QaXhlbHModmg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcHhQZXJWaFVuaXQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLyAxMDA7XG4gICAgcmV0dXJuIHZoICogcHhQZXJWaFVuaXQ7XG4gIH1cbn1cbiJdfQ==
@@ -636,7 +636,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
636
636
  }] });
637
637
 
638
638
  /*
639
- * Copyright (c) 2018-2022 Porsche Informatik. All Rights Reserved.
639
+ * Copyright (c) 2018-2023 Porsche Informatik. All Rights Reserved.
640
640
  * This software is released under MIT license.
641
641
  * The full license information can be found in LICENSE in the root directory of this project.
642
642
  */
@@ -646,8 +646,10 @@ class ClrDropdownOverflowDirective {
646
646
  this.defaultItemMinHeightRem = 1.5;
647
647
  this.marginBottomRem = 0.1;
648
648
  this.destroy$ = new Subject();
649
+ this.alreadyChecked = false;
650
+ this.heightFix = 27;
649
651
  }
650
- ngAfterContentInit() {
652
+ ngAfterContentChecked() {
651
653
  var _a;
652
654
  // first trigger manually because the subscription lower only triggers after first change
653
655
  if (!((_a = this.nestedDropdownChildren) === null || _a === void 0 ? void 0 : _a.length)) {
@@ -670,14 +672,25 @@ class ClrDropdownOverflowDirective {
670
672
  applyDropdownOverflowStyles() {
671
673
  // the vertical position of our element in the current window
672
674
  const y = this.elRef.nativeElement.getBoundingClientRect().y;
673
- const itemMinHeightPx = this.getItemMinHeight(this.clrDropdownMenuItemMinHeight);
674
- // see https://stackoverflow.com/questions/22754315/for-loop-for-htmlcollection-elements
675
- for (const item of this.getAllChildDropdownMenuItems()) {
676
- item.style.minHeight = itemMinHeightPx + 'px';
675
+ if (y !== 0 && !this.alreadyChecked) {
676
+ const itemMinHeightPx = this.getItemMinHeight(this.clrDropdownMenuItemMinHeight);
677
+ // see https://stackoverflow.com/questions/22754315/for-loop-for-htmlcollection-elements
678
+ for (const item of this.getAllChildDropdownMenuItems()) {
679
+ item.style.minHeight = itemMinHeightPx + 'px';
680
+ }
681
+ let height = 0;
682
+ if (y + this.heightFix < window.innerHeight - y) {
683
+ height = window.innerHeight - y - this.heightFix;
684
+ }
685
+ else {
686
+ height = window.innerHeight - y;
687
+ }
688
+ this.elRef.nativeElement.style.maxHeight =
689
+ this.getMenuMaxHeight(this.clrDropdownMenuMaxHeight, height - this.convertRemToPixels(this.marginBottomRem)) +
690
+ 'px';
691
+ this.elRef.nativeElement.style.overflowY = 'auto';
692
+ this.alreadyChecked = true;
677
693
  }
678
- this.elRef.nativeElement.style.maxHeight =
679
- this.getMenuMaxHeight(this.clrDropdownMenuMaxHeight, window.innerHeight - y - this.convertRemToPixels(this.marginBottomRem)) + 'px';
680
- this.elRef.nativeElement.style.overflowY = 'auto';
681
694
  }
682
695
  removeDropdownOverflowStyles() {
683
696
  for (const item of this.getAllChildDropdownMenuItems()) {