@skyux/core 7.8.0 → 7.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ var _SkyOverlayComponent_instances, _SkyOverlayComponent_backdropClick, _SkyOver
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
3
  import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, Injector, Optional, ViewChild, ViewContainerRef, } from '@angular/core';
4
4
  import { NavigationStart } from '@angular/router';
5
- import { Subject, fromEvent } from 'rxjs';
5
+ import { ReplaySubject, Subject, fromEvent, } from 'rxjs';
6
6
  import { takeUntil } from 'rxjs/operators';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../adapter-service/adapter.service";
@@ -34,6 +34,7 @@ export class SkyOverlayComponent {
34
34
  this.enablePointerEvents = false;
35
35
  this.showBackdrop = false;
36
36
  this.zIndex = `${++uniqueZIndex}`;
37
+ this.clipPath$ = new ReplaySubject(1);
37
38
  _SkyOverlayComponent_backdropClick.set(this, void 0);
38
39
  _SkyOverlayComponent_backdropClickObs.set(this, void 0);
39
40
  _SkyOverlayComponent_changeDetector.set(this, void 0);
@@ -104,6 +105,9 @@ export class SkyOverlayComponent {
104
105
  this.targetRef.clear();
105
106
  return this.targetRef.createEmbeddedView(templateRef, context);
106
107
  }
108
+ updateClipPath(clipPath) {
109
+ this.clipPath$.next(clipPath);
110
+ }
107
111
  }
108
112
  _SkyOverlayComponent_backdropClick = new WeakMap(), _SkyOverlayComponent_backdropClickObs = new WeakMap(), _SkyOverlayComponent_changeDetector = new WeakMap(), _SkyOverlayComponent_closed = new WeakMap(), _SkyOverlayComponent_closedObs = new WeakMap(), _SkyOverlayComponent_context = new WeakMap(), _SkyOverlayComponent_coreAdapter = new WeakMap(), _SkyOverlayComponent_injector = new WeakMap(), _SkyOverlayComponent_ngUnsubscribe = new WeakMap(), _SkyOverlayComponent_router = new WeakMap(), _SkyOverlayComponent_routerSubscription = new WeakMap(), _SkyOverlayComponent_instances = new WeakSet(), _SkyOverlayComponent_applyConfig = function _SkyOverlayComponent_applyConfig(config) {
109
113
  this.wrapperClass = config.wrapperClass || '';
@@ -143,10 +147,10 @@ _SkyOverlayComponent_backdropClick = new WeakMap(), _SkyOverlayComponent_backdro
143
147
  }
144
148
  };
145
149
  SkyOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyOverlayComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.SkyCoreAdapterService }, { token: i2.SkyOverlayContext }, { token: i3.SkyIdService }, { token: i4.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component });
146
- SkyOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyOverlayComponent, selector: "sky-overlay", host: { properties: { "id": "this.id" } }, viewQueries: [{ propertyName: "overlayContentRef", first: true, predicate: ["overlayContentRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "targetRef", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n [class]=\"wrapperClass\"\n [style.zIndex]=\"zIndex\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
150
+ SkyOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyOverlayComponent, selector: "sky-overlay", host: { properties: { "id": "this.id" } }, viewQueries: [{ propertyName: "overlayContentRef", first: true, predicate: ["overlayContentRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "targetRef", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n [class]=\"wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
147
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyOverlayComponent, decorators: [{
148
152
  type: Component,
149
- args: [{ selector: 'sky-overlay', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [class]=\"wrapperClass\"\n [style.zIndex]=\"zIndex\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"] }]
153
+ args: [{ selector: 'sky-overlay', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [class]=\"wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"] }]
150
154
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i1.SkyCoreAdapterService }, { type: i2.SkyOverlayContext }, { type: i3.SkyIdService }, { type: i4.Router, decorators: [{
151
155
  type: Optional
152
156
  }] }]; }, propDecorators: { id: [{
@@ -171,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
171
175
  static: true,
172
176
  }]
173
177
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBRVYsV0FBVyxFQUNYLFFBQVEsRUFHUixRQUFRLEVBSVIsU0FBUyxFQUNULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFFMUQsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVEzQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7QUFFeEI7O0dBRUc7QUFPSCxNQUFNLE9BQU8sbUJBQW1CO0lBNEQ5QixZQUNFLGNBQWlDLEVBQ2pDLFFBQWtCLEVBQ2xCLFdBQWtDLEVBQ2xDLE9BQTBCLEVBQzFCLEtBQW1CLEVBQ1AsTUFBZTs7UUFqRXRCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBVWxCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUs1QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixXQUFNLEdBQUcsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDO1FBb0JwQyxxREFBOEI7UUFFOUIsd0RBQW9DO1FBRXBDLHNEQUFtQztRQUVuQyw4Q0FBdUI7UUFFdkIsaURBQTZCO1FBRTdC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Q2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9NLFNBQVM7c0JBSmYsU0FBUzt1QkFBQyxRQUFRLEVBQUU7d0JBQ25CLElBQUksRUFBRSxnQkFBZ0I7d0JBQ3RCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU3RhdGljUHJvdmlkZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lDb3JlQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi9hZGFwdGVyLXNlcnZpY2UvYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUlkU2VydmljZSB9IGZyb20gJy4uL2lkL2lkLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTa3lPdmVybGF5Q29uZmlnIH0gZnJvbSAnLi9vdmVybGF5LWNvbmZpZyc7XG5pbXBvcnQgeyBTa3lPdmVybGF5Q29udGV4dCB9IGZyb20gJy4vb3ZlcmxheS1jb250ZXh0JztcblxuLyoqXG4gKiBPbW5pYmFyIGlzIDEwMDAuXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibGFja2JhdWQvYXV0aC1jbGllbnQvYmxvYi9tYXN0ZXIvc3JjL29tbmliYXIvb21uaWJhci50cyNMMTM5XG4gKiAtLS1cbiAqIE1vZGFscyBzdGFydCB0aGVpciB6LWluZGV4ZXMgYXQgMTA0MC4gSG93ZXZlciwgZWFjaCBtb2RhbCdzIHotaW5kZXggaXMgYSBtdWx0aXBsZSBvZiAxMCwgc28gaXRcbiAqIHdpbGwgYmUgZGlmZmljdWx0IHRvIHJlbGlhYmx5IHByZWRpY3QgYSB6LWluZGV4IHRoYXQgd2lsbCBhbHdheXMgYXBwZWFyIGFib3ZlIGFsbCBvdGhlclxuICogbGF5ZXJzLiBTdGFydGluZyB0aGUgei1pbmRleCBmb3Igb3ZlcmxheXMgYXQgYSBudW1iZXIgbXVjaCBncmVhdGVyIHRoYW4gbW9kYWxzIHdpbGwgYWNjb21tb2RhdGVcbiAqIHRoZSBtb3N0IHJlYXNvbmFibGUgb2Ygc2NlbmFyaW9zLlxuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmxhY2tiYXVkL3NreXV4LW1vZGFscy9ibG9iL21hc3Rlci9zcmMvYXBwL3B1YmxpYy9tb2R1bGVzL21vZGFsL21vZGFsLWhvc3Quc2VydmljZS50cyNMMjJcbiAqIChOT1RFOiBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBtb2RhbHMgZG8gbm90IHVzZSB0aGUgb3ZlcmxheSBzZXJ2aWNlLCB3aGljaCBpcyBzb21ldGhpbmcgd2VcbiAqIHNob3VsZCBkbyBpbiB0aGUgbmVhciBmdXR1cmUgdG8gbWFrZSBzdXJlIHotaW5kZXhlcyBhcmUgcHJlZGljdGFibGUgYWNyb3NzIGFsbCBjb21wb25lbnRcbiAqIGxpYnJhcmllcy4pXG4gKi9cbmxldCB1bmlxdWVaSW5kZXggPSA1MDAwO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktb3ZlcmxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vdmVybGF5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3ZlcmxheS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5T3ZlcmxheUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHdyYXBwZXJDbGFzcyA9ICcnO1xuXG4gIHB1YmxpYyBnZXQgYmFja2Ryb3BDbGljaygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2Ryb3BDbGlja09icztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2xvc2VkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNjbG9zZWRPYnM7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlUG9pbnRlckV2ZW50cyA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnaWQnKVxuICBwdWJsaWMgaWQ6IHN0cmluZztcblxuICBwdWJsaWMgc2hvd0JhY2tkcm9wID0gZmFsc2U7XG5cbiAgcHVibGljIHpJbmRleCA9IGAkeysrdW5pcXVlWkluZGV4fWA7XG5cbiAgQFZpZXdDaGlsZCgnb3ZlcmxheUNvbnRlbnRSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBvdmVybGF5Q29udGVudFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdvdmVybGF5UmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgb3ZlcmxheVJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0YXJnZXQnLCB7XG4gICAgcmVhZDogVmlld0NvbnRhaW5lclJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyB0YXJnZXRSZWY6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XG5cbiAgI2JhY2tkcm9wQ2xpY2s6IFN1YmplY3Q8dm9pZD47XG5cbiAgI2JhY2tkcm9wQ2xpY2tPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICAjY2xvc2VkOiBTdWJqZWN0PHZvaWQ+O1xuXG4gICNjbG9zZWRPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgI2NvbnRleHQ6IFNreU92ZXJsYXlDb250ZXh0O1xuXG4gICNjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlO1xuXG4gICNpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNyb3V0ZXI6IFJvdXRlciB8IHVuZGVmaW5lZDtcblxuICAjcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIGNvbnRleHQ6IFNreU92ZXJsYXlDb250ZXh0LFxuICAgIGlkU3ZjOiBTa3lJZFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcm91dGVyPzogUm91dGVyXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jaW5qZWN0b3IgPSBpbmplY3RvcjtcbiAgICB0aGlzLiNjb3JlQWRhcHRlciA9IGNvcmVBZGFwdGVyO1xuICAgIHRoaXMuI2NvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuI3JvdXRlciA9IHJvdXRlcjtcblxuICAgIHRoaXMuaWQgPSBpZFN2Yy5nZW5lcmF0ZUlkKCk7XG5cbiAgICB0aGlzLiNiYWNrZHJvcENsaWNrID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLiNjbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgdGhpcy4jYmFja2Ryb3BDbGlja09icyA9IHRoaXMuI2JhY2tkcm9wQ2xpY2suYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jY2xvc2VkT2JzID0gdGhpcy4jY2xvc2VkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2FwcGx5Q29uZmlnKHRoaXMuI2NvbnRleHQuY29uZmlnKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jYWRkQmFja2Ryb3BDbGlja0xpc3RlbmVyKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy4jY29udGV4dC5jb25maWcuY2xvc2VPbk5hdmlnYXRpb24pIHtcbiAgICAgIHRoaXMuI2FkZFJvdXRlTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlUm91dGVMaXN0ZW5lcigpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblxuICAgIHRoaXMuI2JhY2tkcm9wQ2xpY2suY29tcGxldGUoKTtcblxuICAgIHRoaXMuI2Nsb3NlZC5uZXh0KCk7XG4gICAgdGhpcy4jY2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYXR0YWNoQ29tcG9uZW50PEM+KFxuICAgIGNvbXBvbmVudDogVHlwZTxDPixcbiAgICBwcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXVxuICApOiBDb21wb25lbnRSZWY8Qz4ge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGlmOiB1bnRlc3RhYmxlKi9cbiAgICBpZiAoIXRoaXMudGFyZ2V0UmVmKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdbU2t5T3ZlcmxheUNvbXBvbmVudF0gQ291bGQgbm90IGF0dGFjaCB0aGUgY29tcG9uZW50IGJlY2F1c2UgdGhlIHRhcmdldCBlbGVtZW50IGNvdWxkIG5vdCBiZSBmb3VuZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudGFyZ2V0UmVmLmNsZWFyKCk7XG5cbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnMsXG4gICAgICBwYXJlbnQ6IHRoaXMuI2luamVjdG9yLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy50YXJnZXRSZWYuY3JlYXRlQ29tcG9uZW50PEM+KGNvbXBvbmVudCwge1xuICAgICAgaW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICAvLyBSdW4gYW4gaW5pdGlhbCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIGFmdGVyIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gY3JlYXRlZC5cbiAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIHB1YmxpYyBhdHRhY2hUZW1wbGF0ZTxUPihcbiAgICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8VD4sXG4gICAgY29udGV4dDogVFxuICApOiBFbWJlZGRlZFZpZXdSZWY8VD4ge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGlmOiB1bnRlc3RhYmxlKi9cbiAgICBpZiAoIXRoaXMudGFyZ2V0UmVmKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdbU2t5T3ZlcmxheUNvbXBvbmVudF0gQ291bGQgbm90IGF0dGFjaCB0aGUgdGVtcGxhdGUgYmVjYXVzZSB0aGUgdGFyZ2V0IGVsZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXRSZWYuY2xlYXIoKTtcblxuICAgIHJldHVybiB0aGlzLnRhcmdldFJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGVSZWYsIGNvbnRleHQpO1xuICB9XG5cbiAgI2FwcGx5Q29uZmlnKGNvbmZpZzogU2t5T3ZlcmxheUNvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMud3JhcHBlckNsYXNzID0gY29uZmlnLndyYXBwZXJDbGFzcyB8fCAnJztcbiAgICB0aGlzLnNob3dCYWNrZHJvcCA9ICEhY29uZmlnLnNob3dCYWNrZHJvcDtcbiAgICB0aGlzLmVuYWJsZVBvaW50ZXJFdmVudHMgPSAhIWNvbmZpZy5lbmFibGVQb2ludGVyRXZlbnRzO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI2FkZEJhY2tkcm9wQ2xpY2tMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4od2luZG93LmRvY3VtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAmJiB0aGlzLm92ZXJsYXlDb250ZW50UmVmICYmIHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgIGNvbnN0IGlzQ2hpbGQgPSB0aGlzLm92ZXJsYXlDb250ZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoXG4gICAgICAgICAgICBldmVudC50YXJnZXRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgaXNBYm92ZSA9IHRoaXMuI2NvcmVBZGFwdGVyLmlzVGFyZ2V0QWJvdmVFbGVtZW50KFxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoIWlzQ2hpbGQgJiYgIWlzQWJvdmUpIHtcbiAgICAgICAgICAgIHRoaXMuI2JhY2tkcm9wQ2xpY2submV4dCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuI2NvbnRleHQuY29uZmlnLmVuYWJsZUNsb3NlKSB7XG4gICAgICAgICAgICAgIHRoaXMuI2Nsb3NlZC5uZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gICNhZGRSb3V0ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLiNyb3V0ZXIpIHtcbiAgICAgIHRoaXMuI3JvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMuI3JvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLiNjbG9zZWQubmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjcmVtb3ZlUm91dGVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jcm91dGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLiNyb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuI3JvdXRlclN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgW2NsYXNzXT1cIndyYXBwZXJDbGFzc1wiXG4gIFtzdHlsZS56SW5kZXhdPVwiekluZGV4XCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdlbmFibGUtcG9pbnRlci1ldmVudHMtcGFzcy10aHJvdWdoJzogZW5hYmxlUG9pbnRlckV2ZW50cyxcbiAgICAnc2t5LW92ZXJsYXknOiB0cnVlXG4gIH1cIlxuICAjb3ZlcmxheVJlZlxuPlxuICA8ZGl2IGNsYXNzPVwic2t5LW92ZXJsYXktY29udGVudFwiICNvdmVybGF5Q29udGVudFJlZj5cbiAgICA8bmctdGVtcGxhdGUgI3RhcmdldD4gPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJzaG93QmFja2Ryb3BcIiBjbGFzcz1cInNreS1vdmVybGF5LWJhY2tkcm9wXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBRVYsV0FBVyxFQUNYLFFBQVEsRUFHUixRQUFRLEVBSVIsU0FBUyxFQUNULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFFMUQsT0FBTyxFQUVMLGFBQWEsRUFDYixPQUFPLEVBRVAsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBUTNDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILElBQUksWUFBWSxHQUFHLElBQUksQ0FBQztBQUV4Qjs7R0FFRztBQU9ILE1BQU0sT0FBTyxtQkFBbUI7SUE4RDlCLFlBQ0UsY0FBaUMsRUFDakMsUUFBa0IsRUFDbEIsV0FBa0MsRUFDbEMsT0FBMEIsRUFDMUIsS0FBbUIsRUFDUCxNQUFlOztRQW5FdEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFVbEIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBSzVCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLFdBQU0sR0FBRyxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUM7UUFFMUIsY0FBUyxHQUFHLElBQUksYUFBYSxDQUFxQixDQUFDLENBQUMsQ0FBQztRQW9CL0QscURBQThCO1FB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LFNBQVM7dUJBQUMsbUJBQW1CLEVBQUU7d0JBQzlCLElBQUksRUFBRSxVQUFVO3dCQUNoQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTSxVQUFVO3NCQUpoQixTQUFTO3VCQUFDLFlBQVksRUFBRTt3QkFDdkIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9NLFNBQVM7c0JBSmYsU0FBUzt1QkFBQyxRQUFRLEVBQUU7d0JBQ25CLElBQUksRUFBRSxnQkFBZ0I7d0JBQ3RCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU3RhdGljUHJvdmlkZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIGZyb21FdmVudCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUNvcmVBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uL2FkYXB0ZXItc2VydmljZS9hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnLi4vaWQvaWQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreU92ZXJsYXlDb25maWcgfSBmcm9tICcuL292ZXJsYXktY29uZmlnJztcbmltcG9ydCB7IFNreU92ZXJsYXlDb250ZXh0IH0gZnJvbSAnLi9vdmVybGF5LWNvbnRleHQnO1xuXG4vKipcbiAqIE9tbmliYXIgaXMgMTAwMC5cbiAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JsYWNrYmF1ZC9hdXRoLWNsaWVudC9ibG9iL21hc3Rlci9zcmMvb21uaWJhci9vbW5pYmFyLnRzI0wxMzlcbiAqIC0tLVxuICogTW9kYWxzIHN0YXJ0IHRoZWlyIHotaW5kZXhlcyBhdCAxMDQwLiBIb3dldmVyLCBlYWNoIG1vZGFsJ3Mgei1pbmRleCBpcyBhIG11bHRpcGxlIG9mIDEwLCBzbyBpdFxuICogd2lsbCBiZSBkaWZmaWN1bHQgdG8gcmVsaWFibHkgcHJlZGljdCBhIHotaW5kZXggdGhhdCB3aWxsIGFsd2F5cyBhcHBlYXIgYWJvdmUgYWxsIG90aGVyXG4gKiBsYXllcnMuIFN0YXJ0aW5nIHRoZSB6LWluZGV4IGZvciBvdmVybGF5cyBhdCBhIG51bWJlciBtdWNoIGdyZWF0ZXIgdGhhbiBtb2RhbHMgd2lsbCBhY2NvbW1vZGF0ZVxuICogdGhlIG1vc3QgcmVhc29uYWJsZSBvZiBzY2VuYXJpb3MuXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibGFja2JhdWQvc2t5dXgtbW9kYWxzL2Jsb2IvbWFzdGVyL3NyYy9hcHAvcHVibGljL21vZHVsZXMvbW9kYWwvbW9kYWwtaG9zdC5zZXJ2aWNlLnRzI0wyMlxuICogKE5PVEU6IEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG1vZGFscyBkbyBub3QgdXNlIHRoZSBvdmVybGF5IHNlcnZpY2UsIHdoaWNoIGlzIHNvbWV0aGluZyB3ZVxuICogc2hvdWxkIGRvIGluIHRoZSBuZWFyIGZ1dHVyZSB0byBtYWtlIHN1cmUgei1pbmRleGVzIGFyZSBwcmVkaWN0YWJsZSBhY3Jvc3MgYWxsIGNvbXBvbmVudFxuICogbGlicmFyaWVzLilcbiAqL1xubGV0IHVuaXF1ZVpJbmRleCA9IDUwMDA7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1vdmVybGF5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL292ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vdmVybGF5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lPdmVybGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgd3JhcHBlckNsYXNzID0gJyc7XG5cbiAgcHVibGljIGdldCBiYWNrZHJvcENsaWNrKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZHJvcENsaWNrT2JzO1xuICB9XG5cbiAgcHVibGljIGdldCBjbG9zZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI2Nsb3NlZE9icztcbiAgfVxuXG4gIHB1YmxpYyBlbmFibGVQb2ludGVyRXZlbnRzID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdpZCcpXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBzaG93QmFja2Ryb3AgPSBmYWxzZTtcblxuICBwdWJsaWMgekluZGV4ID0gYCR7Kyt1bmlxdWVaSW5kZXh9YDtcblxuICBwcm90ZWN0ZWQgY2xpcFBhdGgkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPigxKTtcblxuICBAVmlld0NoaWxkKCdvdmVybGF5Q29udGVudFJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIG92ZXJsYXlDb250ZW50UmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBvdmVybGF5UmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhcmdldCcsIHtcbiAgICByZWFkOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHRhcmdldFJlZjogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcblxuICAjYmFja2Ryb3BDbGljazogU3ViamVjdDx2b2lkPjtcblxuICAjYmFja2Ryb3BDbGlja09iczogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gICNjbG9zZWQ6IFN1YmplY3Q8dm9pZD47XG5cbiAgI2Nsb3NlZE9iczogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAjY29udGV4dDogU2t5T3ZlcmxheUNvbnRleHQ7XG5cbiAgI2NvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG5cbiAgI2luamVjdG9yOiBJbmplY3RvcjtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI3JvdXRlcjogUm91dGVyIHwgdW5kZWZpbmVkO1xuXG4gICNyb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgY29udGV4dDogU2t5T3ZlcmxheUNvbnRleHQsXG4gICAgaWRTdmM6IFNreUlkU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSByb3V0ZXI/OiBSb3V0ZXJcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNpbmplY3RvciA9IGluamVjdG9yO1xuICAgIHRoaXMuI2NvcmVBZGFwdGVyID0gY29yZUFkYXB0ZXI7XG4gICAgdGhpcy4jY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy4jcm91dGVyID0gcm91dGVyO1xuXG4gICAgdGhpcy5pZCA9IGlkU3ZjLmdlbmVyYXRlSWQoKTtcblxuICAgIHRoaXMuI2JhY2tkcm9wQ2xpY2sgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuI2Nsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICB0aGlzLiNiYWNrZHJvcENsaWNrT2JzID0gdGhpcy4jYmFja2Ryb3BDbGljay5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLiNjbG9zZWRPYnMgPSB0aGlzLiNjbG9zZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jYXBwbHlDb25maWcodGhpcy4jY29udGV4dC5jb25maWcpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNhZGRCYWNrZHJvcENsaWNrTGlzdGVuZXIoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLiNjb250ZXh0LmNvbmZpZy5jbG9zZU9uTmF2aWdhdGlvbikge1xuICAgICAgdGhpcy4jYWRkUm91dGVMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVSb3V0ZUxpc3RlbmVyKCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy4jYmFja2Ryb3BDbGljay5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy4jY2xvc2VkLm5leHQoKTtcbiAgICB0aGlzLiNjbG9zZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhdHRhY2hDb21wb25lbnQ8Qz4oXG4gICAgY29tcG9uZW50OiBUeXBlPEM+LFxuICAgIHByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtdXG4gICk6IENvbXBvbmVudFJlZjxDPiB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgaWY6IHVudGVzdGFibGUqL1xuICAgIGlmICghdGhpcy50YXJnZXRSZWYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1tTa3lPdmVybGF5Q29tcG9uZW50XSBDb3VsZCBub3QgYXR0YWNoIHRoZSBjb21wb25lbnQgYmVjYXVzZSB0aGUgdGFyZ2V0IGVsZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXRSZWYuY2xlYXIoKTtcblxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVycyxcbiAgICAgIHBhcmVudDogdGhpcy4jaW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnRhcmdldFJlZi5jcmVhdGVDb21wb25lbnQ8Qz4oY29tcG9uZW50LCB7XG4gICAgICBpbmplY3RvcixcbiAgICB9KTtcblxuICAgIC8vIFJ1biBhbiBpbml0aWFsIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgYWZ0ZXIgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBjcmVhdGVkLlxuICAgIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICB9XG5cbiAgcHVibGljIGF0dGFjaFRlbXBsYXRlPFQ+KFxuICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxUPixcbiAgICBjb250ZXh0OiBUXG4gICk6IEVtYmVkZGVkVmlld1JlZjxUPiB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgaWY6IHVudGVzdGFibGUqL1xuICAgIGlmICghdGhpcy50YXJnZXRSZWYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1tTa3lPdmVybGF5Q29tcG9uZW50XSBDb3VsZCBub3QgYXR0YWNoIHRoZSB0ZW1wbGF0ZSBiZWNhdXNlIHRoZSB0YXJnZXQgZWxlbWVudCBjb3VsZCBub3QgYmUgZm91bmQuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnRhcmdldFJlZi5jbGVhcigpO1xuXG4gICAgcmV0dXJuIHRoaXMudGFyZ2V0UmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZVJlZiwgY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ2xpcFBhdGgoY2xpcFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuY2xpcFBhdGgkLm5leHQoY2xpcFBhdGgpO1xuICB9XG5cbiAgI2FwcGx5Q29uZmlnKGNvbmZpZzogU2t5T3ZlcmxheUNvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMud3JhcHBlckNsYXNzID0gY29uZmlnLndyYXBwZXJDbGFzcyB8fCAnJztcbiAgICB0aGlzLnNob3dCYWNrZHJvcCA9ICEhY29uZmlnLnNob3dCYWNrZHJvcDtcbiAgICB0aGlzLmVuYWJsZVBvaW50ZXJFdmVudHMgPSAhIWNvbmZpZy5lbmFibGVQb2ludGVyRXZlbnRzO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI2FkZEJhY2tkcm9wQ2xpY2tMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4od2luZG93LmRvY3VtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAmJiB0aGlzLm92ZXJsYXlDb250ZW50UmVmICYmIHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgIGNvbnN0IGlzQ2hpbGQgPSB0aGlzLm92ZXJsYXlDb250ZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoXG4gICAgICAgICAgICBldmVudC50YXJnZXRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgaXNBYm92ZSA9IHRoaXMuI2NvcmVBZGFwdGVyLmlzVGFyZ2V0QWJvdmVFbGVtZW50KFxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoIWlzQ2hpbGQgJiYgIWlzQWJvdmUpIHtcbiAgICAgICAgICAgIHRoaXMuI2JhY2tkcm9wQ2xpY2submV4dCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuI2NvbnRleHQuY29uZmlnLmVuYWJsZUNsb3NlKSB7XG4gICAgICAgICAgICAgIHRoaXMuI2Nsb3NlZC5uZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gICNhZGRSb3V0ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLiNyb3V0ZXIpIHtcbiAgICAgIHRoaXMuI3JvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMuI3JvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLiNjbG9zZWQubmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjcmVtb3ZlUm91dGVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jcm91dGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLiNyb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuI3JvdXRlclN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgW2NsYXNzXT1cIndyYXBwZXJDbGFzc1wiXG4gIFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiXG4gIFtzdHlsZS5jbGlwLXBhdGhdPVwiY2xpcFBhdGgkIHwgYXN5bmNcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ2VuYWJsZS1wb2ludGVyLWV2ZW50cy1wYXNzLXRocm91Z2gnOiBlbmFibGVQb2ludGVyRXZlbnRzLFxuICAgICdza3ktb3ZlcmxheSc6IHRydWVcbiAgfVwiXG4gICNvdmVybGF5UmVmXG4+XG4gIDxkaXYgY2xhc3M9XCJza3ktb3ZlcmxheS1jb250ZW50XCIgI292ZXJsYXlDb250ZW50UmVmPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGFyZ2V0PiA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInNob3dCYWNrZHJvcFwiIGNsYXNzPVwic2t5LW92ZXJsYXktYmFja2Ryb3BcIj48L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,22 +1,25 @@
1
- var _SkyScrollableHostService_instances, _SkyScrollableHostService_mutationObserverSvc, _SkyScrollableHostService_windowRef, _SkyScrollableHostService_findScrollableHost, _SkyScrollableHostService_observeDocumentHiddenElementChanges, _SkyScrollableHostService_observeForScrollableHostChanges, _SkyScrollableHostService_isElementVisible;
1
+ var _SkyScrollableHostService_instances, _SkyScrollableHostService_mutationObserverSvc, _SkyScrollableHostService_windowRef, _SkyScrollableHostService_resizeObserverSvc, _SkyScrollableHostService_findScrollableHost, _SkyScrollableHostService_observeDocumentHiddenElementChanges, _SkyScrollableHostService_observeForScrollableHostChanges, _SkyScrollableHostService_isElementVisible;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { Injectable } from '@angular/core';
4
- import { Observable, Subject, fromEvent } from 'rxjs';
5
- import { takeUntil } from 'rxjs/operators';
3
+ import { Injectable, Optional } from '@angular/core';
4
+ import { Observable, Subject, animationFrameScheduler, concat, fromEvent, of, } from 'rxjs';
5
+ import { debounceTime, map, switchMap, takeUntil } from 'rxjs/operators';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "../mutation/mutation-observer-service";
8
8
  import * as i2 from "../window/window-ref";
9
+ import * as i3 from "../resize-observer/resize-observer.service";
9
10
  function notifySubscribers(subscribers, item) {
10
11
  for (const subscriber of subscribers) {
11
12
  subscriber.next(item);
12
13
  }
13
14
  }
14
15
  export class SkyScrollableHostService {
15
- constructor(mutationObserverSvc, windowRef) {
16
+ constructor(mutationObserverSvc, windowRef, resizeObserverSvc) {
16
17
  _SkyScrollableHostService_instances.add(this);
17
18
  _SkyScrollableHostService_mutationObserverSvc.set(this, void 0);
18
19
  _SkyScrollableHostService_windowRef.set(this, void 0);
20
+ _SkyScrollableHostService_resizeObserverSvc.set(this, void 0);
19
21
  __classPrivateFieldSet(this, _SkyScrollableHostService_mutationObserverSvc, mutationObserverSvc, "f");
22
+ __classPrivateFieldSet(this, _SkyScrollableHostService_resizeObserverSvc, resizeObserverSvc, "f");
20
23
  __classPrivateFieldSet(this, _SkyScrollableHostService_windowRef, windowRef, "f");
21
24
  }
22
25
  /**
@@ -130,8 +133,29 @@ export class SkyScrollableHostService {
130
133
  });
131
134
  });
132
135
  }
136
+ watchScrollableHostClipPathChanges(elementRef) {
137
+ if (!__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f")) {
138
+ return of('none');
139
+ }
140
+ return this.watchScrollableHost(elementRef).pipe(switchMap((scrollableHost) => {
141
+ if (!__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f") ||
142
+ scrollableHost === __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow) {
143
+ return of('none');
144
+ }
145
+ return concat([
146
+ of(undefined),
147
+ __classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f").observe({ nativeElement: scrollableHost }),
148
+ ]).pipe(debounceTime(0, animationFrameScheduler), map(() => {
149
+ const { top, left, width, height } = scrollableHost.getBoundingClientRect();
150
+ const win = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
151
+ const right = Math.max(win.visualViewport.width - left - width, 0);
152
+ const bottom = Math.max(win.visualViewport.height - top - height, 0);
153
+ return `inset(${top}px ${right}px ${bottom}px ${left}px)`;
154
+ }));
155
+ }));
156
+ }
133
157
  }
134
- _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
158
+ _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_resizeObserverSvc = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
135
159
  const regex = /(auto|scroll)/;
136
160
  const windowObj = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
137
161
  const bodyObj = windowObj.document.body;
@@ -173,12 +197,14 @@ _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHos
173
197
  }, _SkyScrollableHostService_isElementVisible = function _SkyScrollableHostService_isElementVisible(elementRef) {
174
198
  return elementRef.nativeElement.offsetParent;
175
199
  };
176
- SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: i1.SkyMutationObserverService }, { token: i2.SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable });
200
+ SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: i1.SkyMutationObserverService }, { token: i2.SkyAppWindowRef }, { token: i3.SkyResizeObserverService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
177
201
  SkyScrollableHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' });
178
202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyScrollableHostService, decorators: [{
179
203
  type: Injectable,
180
204
  args: [{
181
205
  providedIn: 'root',
182
206
  }]
183
- }], ctorParameters: function () { return [{ type: i1.SkyMutationObserverService }, { type: i2.SkyAppWindowRef }]; } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBNEIsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUszQyxTQUFTLGlCQUFpQixDQUFDLFdBQWtDLEVBQUUsSUFBYztJQUMzRSxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRTtRQUNwQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0FBQ0gsQ0FBQztBQUtELE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFDRSxtQkFBK0MsRUFDL0MsU0FBMEI7O1FBTjVCLGdFQUFpRDtRQUVqRCxzREFBNEI7UUFNMUIsdUJBQUEsSUFBSSxpREFBd0IsbUJBQW1CLE1BQUEsQ0FBQztRQUNoRCx1QkFBQSxJQUFJLHVDQUFjLFNBQVMsTUFBQSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsVUFBc0I7UUFDN0MsT0FBTyx1QkFBQSxJQUFJLHlGQUFvQixNQUF4QixJQUFJLEVBQXFCLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxtQkFBbUIsQ0FDeEIsVUFBc0I7UUFFdEIsTUFBTSxXQUFXLEdBQXVDLEVBQUUsQ0FBQztRQUUzRCxJQUFJLHNCQUF3QyxDQUFDO1FBQzdDLElBQUkscUNBQXVELENBQUM7UUFFNUQsT0FB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SUFBSTtRQUNoQixlQUFlLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQztRQUM3QyxTQUFTLEVBQUUsSUFBSTtRQUNmLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxpSUFHQyxPQUF5QyxFQUN6QyxnQkFBa0M7SUFFbEMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFOUIsTUFBTSxNQUFNLEdBQ1YsT0FBTyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBRXRFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDL0IsVUFBVSxFQUFFLElBQUk7UUFDaEIsZUFBZSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUNuQyxTQUFTLEVBQUUsSUFBSTtRQUNmLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxtR0FNaUIsVUFBc0I7SUFDdEMsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztBQUMvQyxDQUFDO3NIQWpQVSx3QkFBd0I7MEhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmliZXIsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5pbXBvcnQgeyBTa3lBcHBXaW5kb3dSZWYgfSBmcm9tICcuLi93aW5kb3cvd2luZG93LXJlZic7XG5cbmZ1bmN0aW9uIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyPHVua25vd24+W10sIGl0ZW0/OiB1bmtub3duKSB7XG4gIGZvciAoY29uc3Qgc3Vic2NyaWJlciBvZiBzdWJzY3JpYmVycykge1xuICAgIHN1YnNjcmliZXIubmV4dChpdGVtKTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2Nyb2xsYWJsZUhvc3RTZXJ2aWNlIHtcbiAgI211dGF0aW9uT2JzZXJ2ZXJTdmM6IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlO1xuXG4gICN3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtdXRhdGlvbk9ic2VydmVyU3ZjOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZSxcbiAgICB3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZlxuICApIHtcbiAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjID0gbXV0YXRpb25PYnNlcnZlclN2YztcbiAgICB0aGlzLiN3aW5kb3dSZWYgPSB3aW5kb3dSZWY7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZ2l2ZW4gZWxlbWVudCdzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFRoZSBlbGVtZW50IHdob3NlIHNjcm9sbGFibGUgaG9zdCBpcyBiZWluZyByZXF1ZXN0ZWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqL1xuICBwdWJsaWMgZ2V0U2Nyb2xsYWJsZUhvc3QoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IEhUTUxFbGVtZW50IHwgV2luZG93IHtcbiAgICByZXR1cm4gdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBnaXZlbiBlbGVtZW50J3MgY3VycmVudCBzY3JvbGxhYmxlIGhvc3RcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgVGhlIGVsZW1lbnQgd2hvc2Ugc2Nyb2xsYWJsZSBob3N0IGlzIGJlaW5nIHJlcXVlc3RlZFxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBjdXJyZW50IHNjcm9sbGFibGUgaG9zdCBlbGVtZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0KFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudCB8IFdpbmRvdz4ge1xuICAgIGNvbnN0IHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyPEhUTUxFbGVtZW50IHwgV2luZG93PltdID0gW107XG5cbiAgICBsZXQgcGFyZW50TXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcbiAgICBsZXQgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcblxuICAgICAgbGV0IHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IFdpbmRvdyB8IHVuZGVmaW5lZCA9XG4gICAgICAgIHRoaXMuI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAvLyBTZXR1cCBtdXRhdGlvbiBvYnNlcnZlcnMgb25seSBvbmNlLCBmb3IgYWxsIHN1YnNjcmliZXJzLlxuICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyID0gdGhpcy4jbXV0YXRpb25PYnNlcnZlclN2Yy5jcmVhdGUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1Njcm9sbGFibGVIb3N0ID0gdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KFxuICAgICAgICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIFJlc2V0IG9ic2VydmVyIGlmIHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0ICE9PSBzY3JvbGxhYmxlSG9zdCAmJlxuICAgICAgICAgICAgdGhpcy4jaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcblxuICAgICAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNvYnNlcnZlRm9yU2Nyb2xsYWJsZUhvc3RDaGFuZ2VzKFxuICAgICAgICAgIHNjcm9sbGFibGVIb3N0LFxuICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgKTtcblxuICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyID1cbiAgICAgICAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgIXRoaXMuI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZikpIHtcbiAgICAgICAgICAgICAgLy8gSWYgdGhlIHNjcm9sbGFibGUgaG9zdCBpcyBub3QgdmlzaWJsZSwgc2V0IGl0IHRvIHVuZGVmaW5lZCBhbmQgdW5zdWJzY3JpYmUgZnJvbSBpdHMgbXV0YXRpb24gY2hhbmdlcy5cbiAgICAgICAgICAgICAgLy8gVGhlbiwgb2JzZXJ2ZSB0aGUgZG9jdW1lbnQgZWxlbWVudCBzbyB0aGF0IGEgbmV3IHNjcm9sbGFibGUgaG9zdCBjYW4gYmUgZm91bmQuXG4gICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgIHRoaXMuI29ic2VydmVGb3JTY3JvbGxhYmxlSG9zdENoYW5nZXMoXG4gICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgICAgcGFyZW50TXV0YXRpb25PYnNlcnZlclxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb2JzZXJ2ZURvY3VtZW50SGlkZGVuRWxlbWVudENoYW5nZXMoXG4gICAgICAgICAgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlclxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBFbWl0IHRoZSBzY3JvbGxhYmxlIGhvc3QgdG8gdGhlIHN1YnNjcmliZXIuXG4gICAgICBzdWJzY3JpYmVyLm5leHQoc2Nyb2xsYWJsZUhvc3QpO1xuXG4gICAgICAvLyBUZWFyZG93biBjYWxsYmFjayBmb3IgdGhlIHN1YnNjcmlwdGlvbi5cbiAgICAgIHN1YnNjcmliZXIuYWRkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViSW5kZXggPSBzdWJzY3JpYmVycy5pbmRleE9mKHN1YnNjcmliZXIpO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChzdWJJbmRleCA+PSAwKSB7XG4gICAgICAgICAgc3Vic2NyaWJlcnMuc3BsaWNlKHN1YkluZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHdoZW5ldmVyIHRoZSBlbGVtZW50J3Mgc2Nyb2xsYWJsZSBob3N0IGVtaXRzIGEgc2Nyb2xsIGV2ZW50LiBUaGUgb2JzZXJ2YWJsZSB3aWxsIGFsd2F5cyBlbWl0IHRoZSBzY3JvbGwgZXZlbnRzIGZyb20gdGhlIGVsZW1lbnRzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0IGFuZCB3aWxsIHVwZGF0ZSBiYXNlZCBvbiBhbnkgc2Nyb2xsYWJsZSBob3N0IGNoYW5nZXMuIFRoZSBvYnNlcnZhYmxlIHdpbGwgYWxzbyBlbWl0IG9uY2Ugd2hlbmV2ZXIgdGhlIHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiBUaGUgZWxlbWVudCB3aG9zZSBzY3JvbGxhYmxlIGhvc3Qgc2Nyb2xsIGV2ZW50cyBhcmUgYmVpbmcgcmVxdWVzdGVkXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbiB0aGUgZWxlbWVudHMgc2Nyb2xsYWJsZSBob3N0IGlzIHNjcm9sbGVkIG9yIGlzIGNoYW5nZWRcbiAgICovXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0U2Nyb2xsRXZlbnRzKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3Qgc3Vic2NyaWJlcnM6IFN1YnNjcmliZXI8dm9pZD5bXSA9IFtdO1xuXG4gICAgbGV0IHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IFdpbmRvdztcblxuICAgIGxldCBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIGxldCBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIGxldCBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBzdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpO1xuXG4gICAgICAvLyBTZXR1cCBtdXRhdGlvbiBvYnNlcnZlcnMgb25seSBvbmNlLCBmb3IgYWxsIHN1YnNjcmliZXJzLlxuICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbiA9IHRoaXMud2F0Y2hTY3JvbGxhYmxlSG9zdChcbiAgICAgICAgICBlbGVtZW50UmVmXG4gICAgICAgICkuc3Vic2NyaWJlKChuZXdTY3JvbGxhYmxlSG9zdCkgPT4ge1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5uZXh0KCk7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgc2Nyb2xsYWJsZUhvc3QgIT09IG5ld1Njcm9sbGFibGVIb3N0KSB7XG4gICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgICAgICAgLy8gT25seSBzdWJzY3JpYmUgdG8gc2Nyb2xsIGV2ZW50cyBpZiB0aGUgaG9zdCBlbGVtZW50IGlzIGRlZmluZWQuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAobmV3U2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgICAgICAgIHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KG5ld1Njcm9sbGFibGVIb3N0LCAnc2Nyb2xsJylcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZSkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGVhcmRvd24gY2FsbGJhY2sgZm9yIHRoZSBzdWJzY3JpcHRpb24uXG4gICAgICBzdWJzY3JpYmVyLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YkluZGV4ID0gc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoc3ViSW5kZXggPj0gMCkge1xuICAgICAgICAgIHN1YnNjcmliZXJzLnNwbGljZShzdWJJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3RTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gICNmaW5kU2Nyb2xsYWJsZUhvc3QoZWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQpOiBIVE1MRWxlbWVudCB8IFdpbmRvdyB7XG4gICAgY29uc3QgcmVnZXggPSAvKGF1dG98c2Nyb2xsKS87XG4gICAgY29uc3Qgd2luZG93T2JqID0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdztcbiAgICBjb25zdCBib2R5T2JqID0gd2luZG93T2JqLmRvY3VtZW50LmJvZHk7XG5cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgfVxuXG4gICAgbGV0IHN0eWxlID0gd2luZG93T2JqLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgbGV0IHBhcmVudCA9IGVsZW1lbnQ7XG5cbiAgICBkbyB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgLy8gUmV0dXJuIGB3aW5kb3dgIGlmIHRoZSBwYXJlbnQgZWxlbWVudCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTS5cbiAgICAgIGlmICghKHBhcmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gd2luZG93T2JqO1xuICAgICAgfVxuXG4gICAgICBzdHlsZSA9IHdpbmRvd09iai5nZXRDb21wdXRlZFN0eWxlKHBhcmVudCk7XG4gICAgfSB3aGlsZSAoXG4gICAgICAhcmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdykgJiZcbiAgICAgICFyZWdleC50ZXN0KHN0eWxlLm92ZXJmbG93WSkgJiZcbiAgICAgIHBhcmVudCAhPT0gYm9keU9ialxuICAgICk7XG5cbiAgICBpZiAocGFyZW50ID09PSBib2R5T2JqKSB7XG4gICAgICByZXR1cm4gd2luZG93T2JqO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnQ7XG4gIH1cblxuICAjb2JzZXJ2ZURvY3VtZW50SGlkZGVuRWxlbWVudENoYW5nZXMobXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcikge1xuICAgIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnLCAnc3R5bGUnLCAnaGlkZGVuJ10sXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgI29ic2VydmVGb3JTY3JvbGxhYmxlSG9zdENoYW5nZXMoXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBXaW5kb3cgfCB1bmRlZmluZWQsXG4gICAgbXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlclxuICApIHtcbiAgICBtdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblxuICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICBlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBlbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRhcmdldCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcycsICdzdHlsZSddLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGFuIGVsZW1lbnQgaXMgXCJ2aXNpYmxlXCIgaW4gdGhlIERPTS5cbiAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTE2Mzk2NjQvNjE3ODg4NVxuICAgKi9cbiAgI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50O1xuICB9XG59XG4iXX0=
207
+ }], ctorParameters: function () { return [{ type: i1.SkyMutationObserverService }, { type: i2.SkyAppWindowRef }, { type: i3.SkyResizeObserverService, decorators: [{
208
+ type: Optional
209
+ }] }]; } });
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBR1AsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixTQUFTLEVBQ1QsRUFBRSxHQUNILE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU16RSxTQUFTLGlCQUFpQixDQUFDLFdBQWtDLEVBQUUsSUFBYztJQUMzRSxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRTtRQUNwQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0FBQ0gsQ0FBQztBQUtELE1BQU0sT0FBTyx3QkFBd0I7SUFPbkMsWUFDRSxtQkFBK0MsRUFDL0MsU0FBMEIsRUFDZCxpQkFBNEM7O1FBVDFELGdFQUFpRDtRQUVqRCxzREFBNEI7UUFFNUIsOERBQXlEO1FBT3ZELHVCQUFBLElBQUksaURBQXdCLG1CQUFtQixNQUFBLENBQUM7UUFDaEQsdUJBQUEsSUFBSSwrQ0FBc0IsaUJBQWlCLE1BQUEsQ0FBQztRQUM1Qyx1QkFBQSxJQUFJLHVDQUFjLFNBQVMsTUFBQSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsVUFBc0I7UUFDN0MsT0FBTyx1QkFBQSxJQUFJLHlGQUFvQixNQUF4QixJQUFJLEVBQXFCLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FB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LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpYmVyLFxuICBTdWJzY3JpcHRpb24sXG4gIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLFxuICBjb25jYXQsXG4gIGZyb21FdmVudCxcbiAgb2YsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uL211dGF0aW9uL211dGF0aW9uLW9ic2VydmVyLXNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzaXplLW9ic2VydmVyL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUFwcFdpbmRvd1JlZiB9IGZyb20gJy4uL3dpbmRvdy93aW5kb3ctcmVmJztcblxuZnVuY3Rpb24gbm90aWZ5U3Vic2NyaWJlcnMoc3Vic2NyaWJlcnM6IFN1YnNjcmliZXI8dW5rbm93bj5bXSwgaXRlbT86IHVua25vd24pIHtcbiAgZm9yIChjb25zdCBzdWJzY3JpYmVyIG9mIHN1YnNjcmliZXJzKSB7XG4gICAgc3Vic2NyaWJlci5uZXh0KGl0ZW0pO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lTY3JvbGxhYmxlSG9zdFNlcnZpY2Uge1xuICAjbXV0YXRpb25PYnNlcnZlclN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2U7XG5cbiAgI3dpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmO1xuXG4gICNyZXNpemVPYnNlcnZlclN2YzogU2t5UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG11dGF0aW9uT2JzZXJ2ZXJTdmM6IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHdpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmLFxuICAgIEBPcHRpb25hbCgpIHJlc2l6ZU9ic2VydmVyU3ZjPzogU2t5UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI211dGF0aW9uT2JzZXJ2ZXJTdmMgPSBtdXRhdGlvbk9ic2VydmVyU3ZjO1xuICAgIHRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjID0gcmVzaXplT2JzZXJ2ZXJTdmM7XG4gICAgdGhpcy4jd2luZG93UmVmID0gd2luZG93UmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGdpdmVuIGVsZW1lbnQncyBjdXJyZW50IHNjcm9sbGFibGUgaG9zdFxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiBUaGUgZWxlbWVudCB3aG9zZSBzY3JvbGxhYmxlIGhvc3QgaXMgYmVpbmcgcmVxdWVzdGVkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHNjcm9sbGFibGUgaG9zdFxuICAgKi9cbiAgcHVibGljIGdldFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiBIVE1MRWxlbWVudCB8IFdpbmRvdyB7XG4gICAgcmV0dXJuIHRoaXMuI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB0aGUgZ2l2ZW4gZWxlbWVudCdzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFRoZSBlbGVtZW50IHdob3NlIHNjcm9sbGFibGUgaG9zdCBpcyBiZWluZyByZXF1ZXN0ZWRcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB0aGUgY3VycmVudCBzY3JvbGxhYmxlIGhvc3QgZWxlbWVudC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hTY3JvbGxhYmxlSG9zdChcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICk6IE9ic2VydmFibGU8SFRNTEVsZW1lbnQgfCBXaW5kb3c+IHtcbiAgICBjb25zdCBzdWJzY3JpYmVyczogU3Vic2NyaWJlcjxIVE1MRWxlbWVudCB8IFdpbmRvdz5bXSA9IFtdO1xuXG4gICAgbGV0IHBhcmVudE11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgbGV0IGRvY3VtZW50SGlkZGVuRWxlbWVudE11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIHN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG5cbiAgICAgIGxldCBzY3JvbGxhYmxlSG9zdDogSFRNTEVsZW1lbnQgfCBXaW5kb3cgfCB1bmRlZmluZWQgPVxuICAgICAgICB0aGlzLiNmaW5kU2Nyb2xsYWJsZUhvc3QoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgLy8gU2V0dXAgbXV0YXRpb24gb2JzZXJ2ZXJzIG9ubHkgb25jZSwgZm9yIGFsbCBzdWJzY3JpYmVycy5cbiAgICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcGFyZW50TXV0YXRpb25PYnNlcnZlciA9IHRoaXMuI211dGF0aW9uT2JzZXJ2ZXJTdmMuY3JlYXRlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTY3JvbGxhYmxlSG9zdCA9IHRoaXMuI2ZpbmRTY3JvbGxhYmxlSG9zdChcbiAgICAgICAgICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBSZXNldCBvYnNlcnZlciBpZiBzY3JvbGxhYmxlIGhvc3QgY2hhbmdlcy5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdCAhPT0gc2Nyb2xsYWJsZUhvc3QgJiZcbiAgICAgICAgICAgIHRoaXMuI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0ID0gbmV3U2Nyb2xsYWJsZUhvc3Q7XG5cbiAgICAgICAgICAgIHRoaXMuI29ic2VydmVGb3JTY3JvbGxhYmxlSG9zdENoYW5nZXMoXG4gICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0LFxuICAgICAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycywgc2Nyb2xsYWJsZUhvc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICBzY3JvbGxhYmxlSG9zdCxcbiAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyXG4gICAgICAgICk7XG5cbiAgICAgICAgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlciA9XG4gICAgICAgICAgdGhpcy4jbXV0YXRpb25PYnNlcnZlclN2Yy5jcmVhdGUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHNjcm9sbGFibGVIb3N0ICYmICF0aGlzLiNpc0VsZW1lbnRWaXNpYmxlKGVsZW1lbnRSZWYpKSB7XG4gICAgICAgICAgICAgIC8vIElmIHRoZSBzY3JvbGxhYmxlIGhvc3QgaXMgbm90IHZpc2libGUsIHNldCBpdCB0byB1bmRlZmluZWQgYW5kIHVuc3Vic2NyaWJlIGZyb20gaXRzIG11dGF0aW9uIGNoYW5nZXMuXG4gICAgICAgICAgICAgIC8vIFRoZW4sIG9ic2VydmUgdGhlIGRvY3VtZW50IGVsZW1lbnQgc28gdGhhdCBhIG5ldyBzY3JvbGxhYmxlIGhvc3QgY2FuIGJlIGZvdW5kLlxuICAgICAgICAgICAgICBzY3JvbGxhYmxlSG9zdCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICB0aGlzLiNvYnNlcnZlRm9yU2Nyb2xsYWJsZUhvc3RDaGFuZ2VzKFxuICAgICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0LFxuICAgICAgICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycywgc2Nyb2xsYWJsZUhvc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuI29ic2VydmVEb2N1bWVudEhpZGRlbkVsZW1lbnRDaGFuZ2VzKFxuICAgICAgICAgIGRvY3VtZW50SGlkZGVuRWxlbWVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gRW1pdCB0aGUgc2Nyb2xsYWJsZSBob3N0IHRvIHRoZSBzdWJzY3JpYmVyLlxuICAgICAgc3Vic2NyaWJlci5uZXh0KHNjcm9sbGFibGVIb3N0KTtcblxuICAgICAgLy8gVGVhcmRvd24gY2FsbGJhY2sgZm9yIHRoZSBzdWJzY3JpcHRpb24uXG4gICAgICBzdWJzY3JpYmVyLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YkluZGV4ID0gc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoc3ViSW5kZXggPj0gMCkge1xuICAgICAgICAgIHN1YnNjcmliZXJzLnNwbGljZShzdWJJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgcGFyZW50TXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB3aGVuZXZlciB0aGUgZWxlbWVudCdzIHNjcm9sbGFibGUgaG9zdCBlbWl0cyBhIHNjcm9sbCBldmVudC4gVGhlIG9ic2VydmFibGUgd2lsbCBhbHdheXMgZW1pdCB0aGUgc2Nyb2xsIGV2ZW50cyBmcm9tIHRoZSBlbGVtZW50cyBjdXJyZW50IHNjcm9sbGFibGUgaG9zdCBhbmQgd2lsbCB1cGRhdGUgYmFzZWQgb24gYW55IHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLiBUaGUgb2JzZXJ2YWJsZSB3aWxsIGFsc28gZW1pdCBvbmNlIHdoZW5ldmVyIHRoZSBzY3JvbGxhYmxlIGhvc3QgY2hhbmdlcy5cbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgVGhlIGVsZW1lbnQgd2hvc2Ugc2Nyb2xsYWJsZSBob3N0IHNjcm9sbCBldmVudHMgYXJlIGJlaW5nIHJlcXVlc3RlZFxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHdoZW4gdGhlIGVsZW1lbnRzIHNjcm9sbGFibGUgaG9zdCBpcyBzY3JvbGxlZCBvciBpcyBjaGFuZ2VkXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hTY3JvbGxhYmxlSG9zdFNjcm9sbEV2ZW50cyhcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyPHZvaWQ+W10gPSBbXTtcblxuICAgIGxldCBzY3JvbGxhYmxlSG9zdDogSFRNTEVsZW1lbnQgfCBXaW5kb3c7XG5cbiAgICBsZXQgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBsZXQgc2Nyb2xsYWJsZUhvc3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBsZXQgc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcblxuICAgICAgLy8gU2V0dXAgbXV0YXRpb24gb2JzZXJ2ZXJzIG9ubHkgb25jZSwgZm9yIGFsbCBzdWJzY3JpYmVycy5cbiAgICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgc2Nyb2xsYWJsZUhvc3RTdWJzY3JpcHRpb24gPSB0aGlzLndhdGNoU2Nyb2xsYWJsZUhvc3QoXG4gICAgICAgICAgZWxlbWVudFJlZlxuICAgICAgICApLnN1YnNjcmliZSgobmV3U2Nyb2xsYWJsZUhvc3QpID0+IHtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUubmV4dCgpO1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5jb21wbGV0ZSgpO1xuXG4gICAgICAgICAgaWYgKHNjcm9sbGFibGVIb3N0ICYmIHNjcm9sbGFibGVIb3N0ICE9PSBuZXdTY3JvbGxhYmxlSG9zdCkge1xuICAgICAgICAgICAgbm90aWZ5U3Vic2NyaWJlcnMoc3Vic2NyaWJlcnMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNjcm9sbGFibGVIb3N0ID0gbmV3U2Nyb2xsYWJsZUhvc3Q7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlID0gbmV3IFN1YmplY3QoKTtcblxuICAgICAgICAgIC8vIE9ubHkgc3Vic2NyaWJlIHRvIHNjcm9sbCBldmVudHMgaWYgdGhlIGhvc3QgZWxlbWVudCBpcyBkZWZpbmVkLlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKG5ld1Njcm9sbGFibGVIb3N0KSB7XG4gICAgICAgICAgICBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChuZXdTY3JvbGxhYmxlSG9zdCwgJ3Njcm9sbCcpXG4gICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFRlYXJkb3duIGNhbGxiYWNrIGZvciB0aGUgc3Vic2NyaXB0aW9uLlxuICAgICAgc3Vic2NyaWJlci5hZGQoKCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJJbmRleCA9IHN1YnNjcmliZXJzLmluZGV4T2Yoc3Vic2NyaWJlcik7XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHN1YkluZGV4ID49IDApIHtcbiAgICAgICAgICBzdWJzY3JpYmVycy5zcGxpY2Uoc3ViSW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHNjcm9sbGFibGVIb3N0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgd2F0Y2hTY3JvbGxhYmxlSG9zdENsaXBQYXRoQ2hhbmdlcyhcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCF0aGlzLiNyZXNpemVPYnNlcnZlclN2Yykge1xuICAgICAgcmV0dXJuIG9mKCdub25lJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMud2F0Y2hTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChzY3JvbGxhYmxlSG9zdCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjIHx8XG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPT09IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3dcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKCdub25lJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uY2F0KFtcbiAgICAgICAgICBvZih1bmRlZmluZWQpLFxuICAgICAgICAgIHRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjLm9ic2VydmUoeyBuYXRpdmVFbGVtZW50OiBzY3JvbGxhYmxlSG9zdCB9KSxcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHRvcCwgbGVmdCwgd2lkdGgsIGhlaWdodCB9ID0gKFxuICAgICAgICAgICAgICBzY3JvbGxhYmxlSG9zdCBhcyBIVE1MRWxlbWVudFxuICAgICAgICAgICAgKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHdpbjogV2luZG93ID0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdztcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5tYXgod2luLnZpc3VhbFZpZXdwb3J0LndpZHRoIC0gbGVmdCAtIHdpZHRoLCAwKTtcbiAgICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICB3aW4udmlzdWFsVmlld3BvcnQuaGVpZ2h0IC0gdG9wIC0gaGVpZ2h0LFxuICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGBpbnNldCgke3RvcH1weCAke3JpZ2h0fXB4ICR7Ym90dG9tfXB4ICR7bGVmdH1weClgO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAjZmluZFNjcm9sbGFibGVIb3N0KGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkKTogSFRNTEVsZW1lbnQgfCBXaW5kb3cge1xuICAgIGNvbnN0IHJlZ2V4ID0gLyhhdXRvfHNjcm9sbCkvO1xuICAgIGNvbnN0IHdpbmRvd09iaiA9IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3c7XG4gICAgY29uc3QgYm9keU9iaiA9IHdpbmRvd09iai5kb2N1bWVudC5ib2R5O1xuXG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm4gd2luZG93T2JqO1xuICAgIH1cblxuICAgIGxldCBzdHlsZSA9IHdpbmRvd09iai5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAgIGxldCBwYXJlbnQgPSBlbGVtZW50O1xuXG4gICAgZG8ge1xuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIC8vIFJldHVybiBgd2luZG93YCBpZiB0aGUgcGFyZW50IGVsZW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00uXG4gICAgICBpZiAoIShwYXJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvd09iajtcbiAgICAgIH1cblxuICAgICAgc3R5bGUgPSB3aW5kb3dPYmouZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQpO1xuICAgIH0gd2hpbGUgKFxuICAgICAgIXJlZ2V4LnRlc3Qoc3R5bGUub3ZlcmZsb3cpICYmXG4gICAgICAhcmVnZXgudGVzdChzdHlsZS5vdmVyZmxvd1kpICYmXG4gICAgICBwYXJlbnQgIT09IGJvZHlPYmpcbiAgICApO1xuXG4gICAgaWYgKHBhcmVudCA9PT0gYm9keU9iaikge1xuICAgICAgcmV0dXJuIHdpbmRvd09iajtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50O1xuICB9XG5cbiAgI29ic2VydmVEb2N1bWVudEhpZGRlbkVsZW1lbnRDaGFuZ2VzKG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIpIHtcbiAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJywgJ3N0eWxlJywgJ2hpZGRlbiddLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gICNvYnNlcnZlRm9yU2Nyb2xsYWJsZUhvc3RDaGFuZ2VzKFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgV2luZG93IHwgdW5kZWZpbmVkLFxuICAgIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXJcbiAgKSB7XG4gICAgbXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG5cbiAgICBjb25zdCB0YXJnZXQgPVxuICAgICAgZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gZWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAgIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnLCAnc3R5bGUnXSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhbiBlbGVtZW50IGlzIFwidmlzaWJsZVwiIGluIHRoZSBET00uXG4gICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzExNjM5NjY0LzYxNzg4ODVcbiAgICovXG4gICNpc0VsZW1lbnRWaXNpYmxlKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudDtcbiAgfVxufVxuIl19
@@ -3,8 +3,8 @@ import { NgModule, Injectable, EventEmitter, Directive, Input, Output, Injector,
3
3
  import { __classPrivateFieldSet, __classPrivateFieldGet, __awaiter } from 'tslib';
4
4
  import * as i5 from '@angular/common';
5
5
  import { CommonModule } from '@angular/common';
6
- import { Subject, fromEvent, BehaviorSubject, ReplaySubject, Observable, of } from 'rxjs';
7
- import { takeUntil, debounceTime, finalize } from 'rxjs/operators';
6
+ import { Subject, fromEvent, BehaviorSubject, ReplaySubject, Observable, of, concat, animationFrameScheduler } from 'rxjs';
7
+ import { takeUntil, debounceTime, finalize, switchMap, map } from 'rxjs/operators';
8
8
  import * as i1 from '@skyux/i18n';
9
9
  import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS, SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';
10
10
  import * as i4 from '@angular/router';
@@ -2252,6 +2252,7 @@ class SkyOverlayComponent {
2252
2252
  this.enablePointerEvents = false;
2253
2253
  this.showBackdrop = false;
2254
2254
  this.zIndex = `${++uniqueZIndex}`;
2255
+ this.clipPath$ = new ReplaySubject(1);
2255
2256
  _SkyOverlayComponent_backdropClick.set(this, void 0);
2256
2257
  _SkyOverlayComponent_backdropClickObs.set(this, void 0);
2257
2258
  _SkyOverlayComponent_changeDetector.set(this, void 0);
@@ -2322,6 +2323,9 @@ class SkyOverlayComponent {
2322
2323
  this.targetRef.clear();
2323
2324
  return this.targetRef.createEmbeddedView(templateRef, context);
2324
2325
  }
2326
+ updateClipPath(clipPath) {
2327
+ this.clipPath$.next(clipPath);
2328
+ }
2325
2329
  }
2326
2330
  _SkyOverlayComponent_backdropClick = new WeakMap(), _SkyOverlayComponent_backdropClickObs = new WeakMap(), _SkyOverlayComponent_changeDetector = new WeakMap(), _SkyOverlayComponent_closed = new WeakMap(), _SkyOverlayComponent_closedObs = new WeakMap(), _SkyOverlayComponent_context = new WeakMap(), _SkyOverlayComponent_coreAdapter = new WeakMap(), _SkyOverlayComponent_injector = new WeakMap(), _SkyOverlayComponent_ngUnsubscribe = new WeakMap(), _SkyOverlayComponent_router = new WeakMap(), _SkyOverlayComponent_routerSubscription = new WeakMap(), _SkyOverlayComponent_instances = new WeakSet(), _SkyOverlayComponent_applyConfig = function _SkyOverlayComponent_applyConfig(config) {
2327
2331
  this.wrapperClass = config.wrapperClass || '';
@@ -2361,10 +2365,10 @@ _SkyOverlayComponent_backdropClick = new WeakMap(), _SkyOverlayComponent_backdro
2361
2365
  }
2362
2366
  };
2363
2367
  SkyOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyOverlayComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: SkyCoreAdapterService }, { token: SkyOverlayContext }, { token: SkyIdService }, { token: i4.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2364
- SkyOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyOverlayComponent, selector: "sky-overlay", host: { properties: { "id": "this.id" } }, viewQueries: [{ propertyName: "overlayContentRef", first: true, predicate: ["overlayContentRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "targetRef", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n [class]=\"wrapperClass\"\n [style.zIndex]=\"zIndex\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2368
+ SkyOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyOverlayComponent, selector: "sky-overlay", host: { properties: { "id": "this.id" } }, viewQueries: [{ propertyName: "overlayContentRef", first: true, predicate: ["overlayContentRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "targetRef", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n [class]=\"wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2365
2369
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyOverlayComponent, decorators: [{
2366
2370
  type: Component,
2367
- args: [{ selector: 'sky-overlay', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [class]=\"wrapperClass\"\n [style.zIndex]=\"zIndex\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"] }]
2371
+ args: [{ selector: 'sky-overlay', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [class]=\"wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"] }]
2368
2372
  }], ctorParameters: function () {
2369
2373
  return [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: SkyCoreAdapterService }, { type: SkyOverlayContext }, { type: SkyIdService }, { type: i4.Router, decorators: [{
2370
2374
  type: Optional
@@ -2821,18 +2825,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
2821
2825
  }]
2822
2826
  }], ctorParameters: function () { return [{ type: SkyResizeObserverService }]; } });
2823
2827
 
2824
- var _SkyScrollableHostService_instances, _SkyScrollableHostService_mutationObserverSvc, _SkyScrollableHostService_windowRef, _SkyScrollableHostService_findScrollableHost, _SkyScrollableHostService_observeDocumentHiddenElementChanges, _SkyScrollableHostService_observeForScrollableHostChanges, _SkyScrollableHostService_isElementVisible;
2828
+ var _SkyScrollableHostService_instances, _SkyScrollableHostService_mutationObserverSvc, _SkyScrollableHostService_windowRef, _SkyScrollableHostService_resizeObserverSvc, _SkyScrollableHostService_findScrollableHost, _SkyScrollableHostService_observeDocumentHiddenElementChanges, _SkyScrollableHostService_observeForScrollableHostChanges, _SkyScrollableHostService_isElementVisible;
2825
2829
  function notifySubscribers(subscribers, item) {
2826
2830
  for (const subscriber of subscribers) {
2827
2831
  subscriber.next(item);
2828
2832
  }
2829
2833
  }
2830
2834
  class SkyScrollableHostService {
2831
- constructor(mutationObserverSvc, windowRef) {
2835
+ constructor(mutationObserverSvc, windowRef, resizeObserverSvc) {
2832
2836
  _SkyScrollableHostService_instances.add(this);
2833
2837
  _SkyScrollableHostService_mutationObserverSvc.set(this, void 0);
2834
2838
  _SkyScrollableHostService_windowRef.set(this, void 0);
2839
+ _SkyScrollableHostService_resizeObserverSvc.set(this, void 0);
2835
2840
  __classPrivateFieldSet(this, _SkyScrollableHostService_mutationObserverSvc, mutationObserverSvc, "f");
2841
+ __classPrivateFieldSet(this, _SkyScrollableHostService_resizeObserverSvc, resizeObserverSvc, "f");
2836
2842
  __classPrivateFieldSet(this, _SkyScrollableHostService_windowRef, windowRef, "f");
2837
2843
  }
2838
2844
  /**
@@ -2946,8 +2952,29 @@ class SkyScrollableHostService {
2946
2952
  });
2947
2953
  });
2948
2954
  }
2949
- }
2950
- _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
2955
+ watchScrollableHostClipPathChanges(elementRef) {
2956
+ if (!__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f")) {
2957
+ return of('none');
2958
+ }
2959
+ return this.watchScrollableHost(elementRef).pipe(switchMap((scrollableHost) => {
2960
+ if (!__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f") ||
2961
+ scrollableHost === __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow) {
2962
+ return of('none');
2963
+ }
2964
+ return concat([
2965
+ of(undefined),
2966
+ __classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f").observe({ nativeElement: scrollableHost }),
2967
+ ]).pipe(debounceTime(0, animationFrameScheduler), map(() => {
2968
+ const { top, left, width, height } = scrollableHost.getBoundingClientRect();
2969
+ const win = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
2970
+ const right = Math.max(win.visualViewport.width - left - width, 0);
2971
+ const bottom = Math.max(win.visualViewport.height - top - height, 0);
2972
+ return `inset(${top}px ${right}px ${bottom}px ${left}px)`;
2973
+ }));
2974
+ }));
2975
+ }
2976
+ }
2977
+ _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_resizeObserverSvc = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
2951
2978
  const regex = /(auto|scroll)/;
2952
2979
  const windowObj = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
2953
2980
  const bodyObj = windowObj.document.body;
@@ -2989,14 +3016,18 @@ _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHos
2989
3016
  }, _SkyScrollableHostService_isElementVisible = function _SkyScrollableHostService_isElementVisible(elementRef) {
2990
3017
  return elementRef.nativeElement.offsetParent;
2991
3018
  };
2992
- SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: SkyMutationObserverService }, { token: SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable });
3019
+ SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: SkyMutationObserverService }, { token: SkyAppWindowRef }, { token: SkyResizeObserverService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
2993
3020
  SkyScrollableHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' });
2994
3021
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyScrollableHostService, decorators: [{
2995
3022
  type: Injectable,
2996
3023
  args: [{
2997
3024
  providedIn: 'root',
2998
3025
  }]
2999
- }], ctorParameters: function () { return [{ type: SkyMutationObserverService }, { type: SkyAppWindowRef }]; } });
3026
+ }], ctorParameters: function () {
3027
+ return [{ type: SkyMutationObserverService }, { type: SkyAppWindowRef }, { type: SkyResizeObserverService, decorators: [{
3028
+ type: Optional
3029
+ }] }];
3030
+ } });
3000
3031
 
3001
3032
  var _SkyAppTitleService_title;
3002
3033
  /**