@skyux/core 8.0.0-alpha.0 → 8.0.0-alpha.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: "15.1.4", 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: "15.1.4", 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: "15.1.4", 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: "15.1.4", 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: "15.1.4", ngImpor
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, _SkyScrollableHostService_getViewportSize;
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,30 @@ 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 ||
143
+ scrollableHost === __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow) {
144
+ return of('none');
145
+ }
146
+ return concat([
147
+ of(undefined),
148
+ __classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f").observe({ nativeElement: scrollableHost }),
149
+ ]).pipe(debounceTime(0, animationFrameScheduler), map(() => {
150
+ const viewportSize = __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_getViewportSize).call(this);
151
+ const { top, left, width, height } = scrollableHost.getBoundingClientRect();
152
+ const right = Math.max(viewportSize.width - left - width, 0);
153
+ const bottom = Math.max(viewportSize.height - top - height, 0);
154
+ return `inset(${top}px ${right}px ${bottom}px ${left}px)`;
155
+ }));
156
+ }));
157
+ }
133
158
  }
134
- _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
159
+ _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_resizeObserverSvc = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
135
160
  const regex = /(auto|scroll)/;
136
161
  const windowObj = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
137
162
  const bodyObj = windowObj.document.body;
@@ -171,14 +196,23 @@ _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHos
171
196
  subtree: true,
172
197
  });
173
198
  }, _SkyScrollableHostService_isElementVisible = function _SkyScrollableHostService_isElementVisible(elementRef) {
174
- return elementRef.nativeElement.offsetParent;
199
+ return !!elementRef.nativeElement?.offsetParent;
200
+ }, _SkyScrollableHostService_getViewportSize = function _SkyScrollableHostService_getViewportSize() {
201
+ const win = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
202
+ const docElem = win.document.documentElement;
203
+ return {
204
+ width: docElem.clientWidth,
205
+ height: docElem.clientHeight,
206
+ };
175
207
  };
176
- SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: i1.SkyMutationObserverService }, { token: i2.SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable });
208
+ SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: i1.SkyMutationObserverService }, { token: i2.SkyAppWindowRef }, { token: i3.SkyResizeObserverService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
177
209
  SkyScrollableHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' });
178
210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, decorators: [{
179
211
  type: Injectable,
180
212
  args: [{
181
213
  providedIn: 'root',
182
214
  }]
183
- }], ctorParameters: function () { return [{ type: i1.SkyMutationObserverService }, { type: i2.SkyAppWindowRef }]; } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBNEIsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUszQyxTQUFTLGlCQUFpQixDQUFDLFdBQWtDLEVBQUUsSUFBYztJQUMzRSxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRTtRQUNwQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0FBQ0gsQ0FBQztBQUtELE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFDRSxtQkFBK0MsRUFDL0MsU0FBMEI7O1FBTjVCLGdFQUFpRDtRQUVqRCxzREFBNEI7UUFNMUIsdUJBQUEsSUFBSSxpREFBd0IsbUJBQW1CLE1BQUEsQ0FBQztRQUNoRCx1QkFBQSxJQUFJLHVDQUFjLFNBQVMsTUFBQSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsVUFBc0I7UUFDN0MsT0FBTyx1QkFBQSxJQUFJLHlGQUFvQixNQUF4QixJQUFJLEVBQXFCLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxtQkFBbUIsQ0FDeEIsVUFBc0I7UUFFdEIsTUFBTSxXQUFXLEdBQXVDLEVBQUUsQ0FBQztRQUUzRCxJQUFJLHNCQUF3QyxDQUFDO1FBQzdDLElBQUkscUNBQXVELENBQUM7UUFFNUQsT0FB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SUFBSTtRQUNoQixlQUFlLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQztRQUM3QyxTQUFTLEVBQUUsSUFBSTtRQUNmLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxpSUFHQyxPQUF5QyxFQUN6QyxnQkFBa0M7SUFFbEMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFOUIsTUFBTSxNQUFNLEdBQ1YsT0FBTyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBRXRFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDL0IsVUFBVSxFQUFFLElBQUk7UUFDaEIsZUFBZSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUNuQyxTQUFTLEVBQUUsSUFBSTtRQUNmLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxtR0FNaUIsVUFBc0I7SUFDdEMsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztBQUMvQyxDQUFDO3FIQWpQVSx3QkFBd0I7eUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmliZXIsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5pbXBvcnQgeyBTa3lBcHBXaW5kb3dSZWYgfSBmcm9tICcuLi93aW5kb3cvd2luZG93LXJlZic7XG5cbmZ1bmN0aW9uIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyPHVua25vd24+W10sIGl0ZW0/OiB1bmtub3duKSB7XG4gIGZvciAoY29uc3Qgc3Vic2NyaWJlciBvZiBzdWJzY3JpYmVycykge1xuICAgIHN1YnNjcmliZXIubmV4dChpdGVtKTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2Nyb2xsYWJsZUhvc3RTZXJ2aWNlIHtcbiAgI211dGF0aW9uT2JzZXJ2ZXJTdmM6IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlO1xuXG4gICN3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtdXRhdGlvbk9ic2VydmVyU3ZjOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZSxcbiAgICB3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZlxuICApIHtcbiAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjID0gbXV0YXRpb25PYnNlcnZlclN2YztcbiAgICB0aGlzLiN3aW5kb3dSZWYgPSB3aW5kb3dSZWY7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZ2l2ZW4gZWxlbWVudCdzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFRoZSBlbGVtZW50IHdob3NlIHNjcm9sbGFibGUgaG9zdCBpcyBiZWluZyByZXF1ZXN0ZWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqL1xuICBwdWJsaWMgZ2V0U2Nyb2xsYWJsZUhvc3QoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IEhUTUxFbGVtZW50IHwgV2luZG93IHtcbiAgICByZXR1cm4gdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBnaXZlbiBlbGVtZW50J3MgY3VycmVudCBzY3JvbGxhYmxlIGhvc3RcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgVGhlIGVsZW1lbnQgd2hvc2Ugc2Nyb2xsYWJsZSBob3N0IGlzIGJlaW5nIHJlcXVlc3RlZFxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBjdXJyZW50IHNjcm9sbGFibGUgaG9zdCBlbGVtZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0KFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudCB8IFdpbmRvdz4ge1xuICAgIGNvbnN0IHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyPEhUTUxFbGVtZW50IHwgV2luZG93PltdID0gW107XG5cbiAgICBsZXQgcGFyZW50TXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcbiAgICBsZXQgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcblxuICAgICAgbGV0IHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IFdpbmRvdyB8IHVuZGVmaW5lZCA9XG4gICAgICAgIHRoaXMuI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAvLyBTZXR1cCBtdXRhdGlvbiBvYnNlcnZlcnMgb25seSBvbmNlLCBmb3IgYWxsIHN1YnNjcmliZXJzLlxuICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyID0gdGhpcy4jbXV0YXRpb25PYnNlcnZlclN2Yy5jcmVhdGUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1Njcm9sbGFibGVIb3N0ID0gdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KFxuICAgICAgICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIFJlc2V0IG9ic2VydmVyIGlmIHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0ICE9PSBzY3JvbGxhYmxlSG9zdCAmJlxuICAgICAgICAgICAgdGhpcy4jaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcblxuICAgICAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNvYnNlcnZlRm9yU2Nyb2xsYWJsZUhvc3RDaGFuZ2VzKFxuICAgICAgICAgIHNjcm9sbGFibGVIb3N0LFxuICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgKTtcblxuICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyID1cbiAgICAgICAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgIXRoaXMuI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZikpIHtcbiAgICAgICAgICAgICAgLy8gSWYgdGhlIHNjcm9sbGFibGUgaG9zdCBpcyBub3QgdmlzaWJsZSwgc2V0IGl0IHRvIHVuZGVmaW5lZCBhbmQgdW5zdWJzY3JpYmUgZnJvbSBpdHMgbXV0YXRpb24gY2hhbmdlcy5cbiAgICAgICAgICAgICAgLy8gVGhlbiwgb2JzZXJ2ZSB0aGUgZG9jdW1lbnQgZWxlbWVudCBzbyB0aGF0IGEgbmV3IHNjcm9sbGFibGUgaG9zdCBjYW4gYmUgZm91bmQuXG4gICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgIHRoaXMuI29ic2VydmVGb3JTY3JvbGxhYmxlSG9zdENoYW5nZXMoXG4gICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgICAgcGFyZW50TXV0YXRpb25PYnNlcnZlclxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb2JzZXJ2ZURvY3VtZW50SGlkZGVuRWxlbWVudENoYW5nZXMoXG4gICAgICAgICAgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlclxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBFbWl0IHRoZSBzY3JvbGxhYmxlIGhvc3QgdG8gdGhlIHN1YnNjcmliZXIuXG4gICAgICBzdWJzY3JpYmVyLm5leHQoc2Nyb2xsYWJsZUhvc3QpO1xuXG4gICAgICAvLyBUZWFyZG93biBjYWxsYmFjayBmb3IgdGhlIHN1YnNjcmlwdGlvbi5cbiAgICAgIHN1YnNjcmliZXIuYWRkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViSW5kZXggPSBzdWJzY3JpYmVycy5pbmRleE9mKHN1YnNjcmliZXIpO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChzdWJJbmRleCA+PSAwKSB7XG4gICAgICAgICAgc3Vic2NyaWJlcnMuc3BsaWNlKHN1YkluZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHdoZW5ldmVyIHRoZSBlbGVtZW50J3Mgc2Nyb2xsYWJsZSBob3N0IGVtaXRzIGEgc2Nyb2xsIGV2ZW50LiBUaGUgb2JzZXJ2YWJsZSB3aWxsIGFsd2F5cyBlbWl0IHRoZSBzY3JvbGwgZXZlbnRzIGZyb20gdGhlIGVsZW1lbnRzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0IGFuZCB3aWxsIHVwZGF0ZSBiYXNlZCBvbiBhbnkgc2Nyb2xsYWJsZSBob3N0IGNoYW5nZXMuIFRoZSBvYnNlcnZhYmxlIHdpbGwgYWxzbyBlbWl0IG9uY2Ugd2hlbmV2ZXIgdGhlIHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiBUaGUgZWxlbWVudCB3aG9zZSBzY3JvbGxhYmxlIGhvc3Qgc2Nyb2xsIGV2ZW50cyBhcmUgYmVpbmcgcmVxdWVzdGVkXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbiB0aGUgZWxlbWVudHMgc2Nyb2xsYWJsZSBob3N0IGlzIHNjcm9sbGVkIG9yIGlzIGNoYW5nZWRcbiAgICovXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0U2Nyb2xsRXZlbnRzKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3Qgc3Vic2NyaWJlcnM6IFN1YnNjcmliZXI8dm9pZD5bXSA9IFtdO1xuXG4gICAgbGV0IHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IFdpbmRvdztcblxuICAgIGxldCBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIGxldCBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIGxldCBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBzdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpO1xuXG4gICAgICAvLyBTZXR1cCBtdXRhdGlvbiBvYnNlcnZlcnMgb25seSBvbmNlLCBmb3IgYWxsIHN1YnNjcmliZXJzLlxuICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbiA9IHRoaXMud2F0Y2hTY3JvbGxhYmxlSG9zdChcbiAgICAgICAgICBlbGVtZW50UmVmXG4gICAgICAgICkuc3Vic2NyaWJlKChuZXdTY3JvbGxhYmxlSG9zdCkgPT4ge1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5uZXh0KCk7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgc2Nyb2xsYWJsZUhvc3QgIT09IG5ld1Njcm9sbGFibGVIb3N0KSB7XG4gICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgICAgICAgLy8gT25seSBzdWJzY3JpYmUgdG8gc2Nyb2xsIGV2ZW50cyBpZiB0aGUgaG9zdCBlbGVtZW50IGlzIGRlZmluZWQuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAobmV3U2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgICAgICAgIHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KG5ld1Njcm9sbGFibGVIb3N0LCAnc2Nyb2xsJylcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZSkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGVhcmRvd24gY2FsbGJhY2sgZm9yIHRoZSBzdWJzY3JpcHRpb24uXG4gICAgICBzdWJzY3JpYmVyLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YkluZGV4ID0gc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoc3ViSW5kZXggPj0gMCkge1xuICAgICAgICAgIHN1YnNjcmliZXJzLnNwbGljZShzdWJJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3RTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gICNmaW5kU2Nyb2xsYWJsZUhvc3QoZWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQpOiBIVE1MRWxlbWVudCB8IFdpbmRvdyB7XG4gICAgY29uc3QgcmVnZXggPSAvKGF1dG98c2Nyb2xsKS87XG4gICAgY29uc3Qgd2luZG93T2JqID0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdztcbiAgICBjb25zdCBib2R5T2JqID0gd2luZG93T2JqLmRvY3VtZW50LmJvZHk7XG5cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgfVxuXG4gICAgbGV0IHN0eWxlID0gd2luZG93T2JqLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgbGV0IHBhcmVudCA9IGVsZW1lbnQ7XG5cbiAgICBkbyB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgLy8gUmV0dXJuIGB3aW5kb3dgIGlmIHRoZSBwYXJlbnQgZWxlbWVudCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTS5cbiAgICAgIGlmICghKHBhcmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gd2luZG93T2JqO1xuICAgICAgfVxuXG4gICAgICBzdHlsZSA9IHdpbmRvd09iai5nZXRDb21wdXRlZFN0eWxlKHBhcmVudCk7XG4gICAgfSB3aGlsZSAoXG4gICAgICAhcmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdykgJiZcbiAgICAgICFyZWdleC50ZXN0KHN0eWxlLm92ZXJmbG93WSkgJiZcbiAgICAgIHBhcmVudCAhPT0gYm9keU9ialxuICAgICk7XG5cbiAgICBpZiAocGFyZW50ID09PSBib2R5T2JqKSB7XG4gICAgICByZXR1cm4gd2luZG93T2JqO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnQ7XG4gIH1cblxuICAjb2JzZXJ2ZURvY3VtZW50SGlkZGVuRWxlbWVudENoYW5nZXMobXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcikge1xuICAgIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnLCAnc3R5bGUnLCAnaGlkZGVuJ10sXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgI29ic2VydmVGb3JTY3JvbGxhYmxlSG9zdENoYW5nZXMoXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBXaW5kb3cgfCB1bmRlZmluZWQsXG4gICAgbXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlclxuICApIHtcbiAgICBtdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblxuICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICBlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBlbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRhcmdldCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcycsICdzdHlsZSddLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGFuIGVsZW1lbnQgaXMgXCJ2aXNpYmxlXCIgaW4gdGhlIERPTS5cbiAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTE2Mzk2NjQvNjE3ODg4NVxuICAgKi9cbiAgI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50O1xuICB9XG59XG4iXX0=
215
+ }], ctorParameters: function () { return [{ type: i1.SkyMutationObserverService }, { type: i2.SkyAppWindowRef }, { type: i3.SkyResizeObserverService, decorators: [{
216
+ type: Optional
217
+ }] }]; } });
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBR1AsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixTQUFTLEVBQ1QsRUFBRSxHQUNILE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU16RSxTQUFTLGlCQUFpQixDQUFDLFdBQWtDLEVBQUUsSUFBYztJQUMzRSxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRTtRQUNwQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0FBQ0gsQ0FBQztBQUtELE1BQU0sT0FBTyx3QkFBd0I7SUFPbkMsWUFDRSxtQkFBK0MsRUFDL0MsU0FBMEIsRUFDZCxpQkFBNEM7O1FBVDFELGdFQUFpRDtRQUVqRCxzREFBNEI7UUFFNUIsOERBQXlEO1FBT3ZELHVCQUFBLElBQUksaURBQXdCLG1CQUFtQixNQUFBLENBQUM7UUFDaEQsdUJBQUEsSUFBSSwrQ0FBc0IsaUJBQWlCLE1BQUEsQ0FBQztRQUM1Qyx1QkFBQSxJQUFJLHVDQUFjLFNBQVMsTUFBQSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsVUFBc0I7UUFDN0MsT0FBTyx1QkFBQSxJQUFJLHlGQUFvQixNQUF4QixJQUFJLEVBQXFCLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FB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QixNQUFNLEVBQUUsT0FBTyxDQUFDLFlBQVk7S0FDN0IsQ0FBQztBQUNKLENBQUM7cUhBblNVLHdCQUF3Qjt5SEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBV0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmliZXIsXG4gIFN1YnNjcmlwdGlvbixcbiAgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsXG4gIGNvbmNhdCxcbiAgZnJvbUV2ZW50LFxuICBvZixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5QXBwV2luZG93UmVmIH0gZnJvbSAnLi4vd2luZG93L3dpbmRvdy1yZWYnO1xuXG5mdW5jdGlvbiBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVyczogU3Vic2NyaWJlcjx1bmtub3duPltdLCBpdGVtPzogdW5rbm93bikge1xuICBmb3IgKGNvbnN0IHN1YnNjcmliZXIgb2Ygc3Vic2NyaWJlcnMpIHtcbiAgICBzdWJzY3JpYmVyLm5leHQoaXRlbSk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVNjcm9sbGFibGVIb3N0U2VydmljZSB7XG4gICNtdXRhdGlvbk9ic2VydmVyU3ZjOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZTtcblxuICAjd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWY7XG5cbiAgI3Jlc2l6ZU9ic2VydmVyU3ZjOiBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbXV0YXRpb25PYnNlcnZlclN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2UsXG4gICAgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgQE9wdGlvbmFsKCkgcmVzaXplT2JzZXJ2ZXJTdmM/OiBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jbXV0YXRpb25PYnNlcnZlclN2YyA9IG11dGF0aW9uT2JzZXJ2ZXJTdmM7XG4gICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXJTdmMgPSByZXNpemVPYnNlcnZlclN2YztcbiAgICB0aGlzLiN3aW5kb3dSZWYgPSB3aW5kb3dSZWY7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZ2l2ZW4gZWxlbWVudCdzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFRoZSBlbGVtZW50IHdob3NlIHNjcm9sbGFibGUgaG9zdCBpcyBiZWluZyByZXF1ZXN0ZWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqL1xuICBwdWJsaWMgZ2V0U2Nyb2xsYWJsZUhvc3QoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IEhUTUxFbGVtZW50IHwgV2luZG93IHtcbiAgICByZXR1cm4gdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBnaXZlbiBlbGVtZW50J3MgY3VycmVudCBzY3JvbGxhYmxlIGhvc3RcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgVGhlIGVsZW1lbnQgd2hvc2Ugc2Nyb2xsYWJsZSBob3N0IGlzIGJlaW5nIHJlcXVlc3RlZFxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBjdXJyZW50IHNjcm9sbGFibGUgaG9zdCBlbGVtZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0KFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudCB8IFdpbmRvdz4ge1xuICAgIGNvbnN0IHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyPEhUTUxFbGVtZW50IHwgV2luZG93PltdID0gW107XG5cbiAgICBsZXQgcGFyZW50TXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcbiAgICBsZXQgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcblxuICAgICAgbGV0IHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IFdpbmRvdyB8IHVuZGVmaW5lZCA9XG4gICAgICAgIHRoaXMuI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAvLyBTZXR1cCBtdXRhdGlvbiBvYnNlcnZlcnMgb25seSBvbmNlLCBmb3IgYWxsIHN1YnNjcmliZXJzLlxuICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyID0gdGhpcy4jbXV0YXRpb25PYnNlcnZlclN2Yy5jcmVhdGUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1Njcm9sbGFibGVIb3N0ID0gdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KFxuICAgICAgICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIFJlc2V0IG9ic2VydmVyIGlmIHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0ICE9PSBzY3JvbGxhYmxlSG9zdCAmJlxuICAgICAgICAgICAgdGhpcy4jaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcblxuICAgICAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNvYnNlcnZlRm9yU2Nyb2xsYWJsZUhvc3RDaGFuZ2VzKFxuICAgICAgICAgIHNjcm9sbGFibGVIb3N0LFxuICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgKTtcblxuICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyID1cbiAgICAgICAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgIXRoaXMuI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZikpIHtcbiAgICAgICAgICAgICAgLy8gSWYgdGhlIHNjcm9sbGFibGUgaG9zdCBpcyBub3QgdmlzaWJsZSwgc2V0IGl0IHRvIHVuZGVmaW5lZCBhbmQgdW5zdWJzY3JpYmUgZnJvbSBpdHMgbXV0YXRpb24gY2hhbmdlcy5cbiAgICAgICAgICAgICAgLy8gVGhlbiwgb2JzZXJ2ZSB0aGUgZG9jdW1lbnQgZWxlbWVudCBzbyB0aGF0IGEgbmV3IHNjcm9sbGFibGUgaG9zdCBjYW4gYmUgZm91bmQuXG4gICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgIHRoaXMuI29ic2VydmVGb3JTY3JvbGxhYmxlSG9zdENoYW5nZXMoXG4gICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgICAgcGFyZW50TXV0YXRpb25PYnNlcnZlclxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb2JzZXJ2ZURvY3VtZW50SGlkZGVuRWxlbWVudENoYW5nZXMoXG4gICAgICAgICAgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlclxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBFbWl0IHRoZSBzY3JvbGxhYmxlIGhvc3QgdG8gdGhlIHN1YnNjcmliZXIuXG4gICAgICBzdWJzY3JpYmVyLm5leHQoc2Nyb2xsYWJsZUhvc3QpO1xuXG4gICAgICAvLyBUZWFyZG93biBjYWxsYmFjayBmb3IgdGhlIHN1YnNjcmlwdGlvbi5cbiAgICAgIHN1YnNjcmliZXIuYWRkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViSW5kZXggPSBzdWJzY3JpYmVycy5pbmRleE9mKHN1YnNjcmliZXIpO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChzdWJJbmRleCA+PSAwKSB7XG4gICAgICAgICAgc3Vic2NyaWJlcnMuc3BsaWNlKHN1YkluZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHdoZW5ldmVyIHRoZSBlbGVtZW50J3Mgc2Nyb2xsYWJsZSBob3N0IGVtaXRzIGEgc2Nyb2xsIGV2ZW50LiBUaGUgb2JzZXJ2YWJsZSB3aWxsIGFsd2F5cyBlbWl0IHRoZSBzY3JvbGwgZXZlbnRzIGZyb20gdGhlIGVsZW1lbnRzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0IGFuZCB3aWxsIHVwZGF0ZSBiYXNlZCBvbiBhbnkgc2Nyb2xsYWJsZSBob3N0IGNoYW5nZXMuIFRoZSBvYnNlcnZhYmxlIHdpbGwgYWxzbyBlbWl0IG9uY2Ugd2hlbmV2ZXIgdGhlIHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiBUaGUgZWxlbWVudCB3aG9zZSBzY3JvbGxhYmxlIGhvc3Qgc2Nyb2xsIGV2ZW50cyBhcmUgYmVpbmcgcmVxdWVzdGVkXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbiB0aGUgZWxlbWVudHMgc2Nyb2xsYWJsZSBob3N0IGlzIHNjcm9sbGVkIG9yIGlzIGNoYW5nZWRcbiAgICovXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0U2Nyb2xsRXZlbnRzKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3Qgc3Vic2NyaWJlcnM6IFN1YnNjcmliZXI8dm9pZD5bXSA9IFtdO1xuXG4gICAgbGV0IHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IFdpbmRvdztcblxuICAgIGxldCBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIGxldCBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIGxldCBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBzdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpO1xuXG4gICAgICAvLyBTZXR1cCBtdXRhdGlvbiBvYnNlcnZlcnMgb25seSBvbmNlLCBmb3IgYWxsIHN1YnNjcmliZXJzLlxuICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbiA9IHRoaXMud2F0Y2hTY3JvbGxhYmxlSG9zdChcbiAgICAgICAgICBlbGVtZW50UmVmXG4gICAgICAgICkuc3Vic2NyaWJlKChuZXdTY3JvbGxhYmxlSG9zdCkgPT4ge1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5uZXh0KCk7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgc2Nyb2xsYWJsZUhvc3QgIT09IG5ld1Njcm9sbGFibGVIb3N0KSB7XG4gICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgICAgICAgLy8gT25seSBzdWJzY3JpYmUgdG8gc2Nyb2xsIGV2ZW50cyBpZiB0aGUgaG9zdCBlbGVtZW50IGlzIGRlZmluZWQuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAobmV3U2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgICAgICAgIHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KG5ld1Njcm9sbGFibGVIb3N0LCAnc2Nyb2xsJylcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZSkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGVhcmRvd24gY2FsbGJhY2sgZm9yIHRoZSBzdWJzY3JpcHRpb24uXG4gICAgICBzdWJzY3JpYmVyLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YkluZGV4ID0gc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoc3ViSW5kZXggPj0gMCkge1xuICAgICAgICAgIHN1YnNjcmliZXJzLnNwbGljZShzdWJJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3RTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0Q2xpcFBhdGhDaGFuZ2VzKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjKSB7XG4gICAgICByZXR1cm4gb2YoJ25vbmUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy53YXRjaFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWYpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHNjcm9sbGFibGVIb3N0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy4jcmVzaXplT2JzZXJ2ZXJTdmMgfHxcbiAgICAgICAgICAhc2Nyb2xsYWJsZUhvc3QgfHxcbiAgICAgICAgICBzY3JvbGxhYmxlSG9zdCA9PT0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvd1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gb2YoJ25vbmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25jYXQoW1xuICAgICAgICAgIG9mKHVuZGVmaW5lZCksXG4gICAgICAgICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXJTdmMub2JzZXJ2ZSh7IG5hdGl2ZUVsZW1lbnQ6IHNjcm9sbGFibGVIb3N0IH0pLFxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgwLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciksXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0U2l6ZSA9IHRoaXMuI2dldFZpZXdwb3J0U2l6ZSgpO1xuICAgICAgICAgICAgY29uc3QgeyB0b3AsIGxlZnQsIHdpZHRoLCBoZWlnaHQgfSA9IChcbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IE1hdGgubWF4KHZpZXdwb3J0U2l6ZS53aWR0aCAtIGxlZnQgLSB3aWR0aCwgMCk7XG4gICAgICAgICAgICBjb25zdCBib3R0b20gPSBNYXRoLm1heCh2aWV3cG9ydFNpemUuaGVpZ2h0IC0gdG9wIC0gaGVpZ2h0LCAwKTtcbiAgICAgICAgICAgIHJldHVybiBgaW5zZXQoJHt0b3B9cHggJHtyaWdodH1weCAke2JvdHRvbX1weCAke2xlZnR9cHgpYDtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk6IEhUTUxFbGVtZW50IHwgV2luZG93IHtcbiAgICBjb25zdCByZWdleCA9IC8oYXV0b3xzY3JvbGwpLztcbiAgICBjb25zdCB3aW5kb3dPYmogPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93O1xuICAgIGNvbnN0IGJvZHlPYmogPSB3aW5kb3dPYmouZG9jdW1lbnQuYm9keTtcblxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIHdpbmRvd09iajtcbiAgICB9XG5cbiAgICBsZXQgc3R5bGUgPSB3aW5kb3dPYmouZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICBsZXQgcGFyZW50ID0gZWxlbWVudDtcblxuICAgIGRvIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAvLyBSZXR1cm4gYHdpbmRvd2AgaWYgdGhlIHBhcmVudCBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLlxuICAgICAgaWYgKCEocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlID0gd2luZG93T2JqLmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICB9IHdoaWxlIChcbiAgICAgICFyZWdleC50ZXN0KHN0eWxlLm92ZXJmbG93KSAmJlxuICAgICAgIXJlZ2V4LnRlc3Qoc3R5bGUub3ZlcmZsb3dZKSAmJlxuICAgICAgcGFyZW50ICE9PSBib2R5T2JqXG4gICAgKTtcblxuICAgIGlmIChwYXJlbnQgPT09IGJvZHlPYmopIHtcbiAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudDtcbiAgfVxuXG4gICNvYnNlcnZlRG9jdW1lbnRIaWRkZW5FbGVtZW50Q2hhbmdlcyhtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcycsICdzdHlsZScsICdoaWRkZW4nXSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAjb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IFdpbmRvdyB8IHVuZGVmaW5lZCxcbiAgICBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyXG4gICkge1xuICAgIG11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXG4gICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgIGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJywgJ3N0eWxlJ10sXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYW4gZWxlbWVudCBpcyBcInZpc2libGVcIiBpbiB0aGUgRE9NLlxuICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xMTYzOTY2NC82MTc4ODg1XG4gICAqL1xuICAjaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Py5vZmZzZXRQYXJlbnQ7XG4gIH1cblxuICAjZ2V0Vmlld3BvcnRTaXplKCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgY29uc3Qgd2luID0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdztcbiAgICBjb25zdCBkb2NFbGVtID0gd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogZG9jRWxlbS5jbGllbnRXaWR0aCxcbiAgICAgIGhlaWdodDogZG9jRWxlbS5jbGllbnRIZWlnaHQsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -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: "15.1.4", 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: "15.1.4", 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: "15.1.4", 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: "15.1.4", 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: "15.1.4", ngImpor
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, _SkyScrollableHostService_getViewportSize;
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,30 @@ 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 ||
2962
+ scrollableHost === __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow) {
2963
+ return of('none');
2964
+ }
2965
+ return concat([
2966
+ of(undefined),
2967
+ __classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f").observe({ nativeElement: scrollableHost }),
2968
+ ]).pipe(debounceTime(0, animationFrameScheduler), map(() => {
2969
+ const viewportSize = __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_getViewportSize).call(this);
2970
+ const { top, left, width, height } = scrollableHost.getBoundingClientRect();
2971
+ const right = Math.max(viewportSize.width - left - width, 0);
2972
+ const bottom = Math.max(viewportSize.height - top - height, 0);
2973
+ return `inset(${top}px ${right}px ${bottom}px ${left}px)`;
2974
+ }));
2975
+ }));
2976
+ }
2977
+ }
2978
+ _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_resizeObserverSvc = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
2951
2979
  const regex = /(auto|scroll)/;
2952
2980
  const windowObj = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
2953
2981
  const bodyObj = windowObj.document.body;
@@ -2987,16 +3015,28 @@ _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHos
2987
3015
  subtree: true,
2988
3016
  });
2989
3017
  }, _SkyScrollableHostService_isElementVisible = function _SkyScrollableHostService_isElementVisible(elementRef) {
2990
- return elementRef.nativeElement.offsetParent;
3018
+ var _a;
3019
+ return !!((_a = elementRef.nativeElement) === null || _a === void 0 ? void 0 : _a.offsetParent);
3020
+ }, _SkyScrollableHostService_getViewportSize = function _SkyScrollableHostService_getViewportSize() {
3021
+ const win = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
3022
+ const docElem = win.document.documentElement;
3023
+ return {
3024
+ width: docElem.clientWidth,
3025
+ height: docElem.clientHeight,
3026
+ };
2991
3027
  };
2992
- SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: SkyMutationObserverService }, { token: SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable });
3028
+ SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: SkyMutationObserverService }, { token: SkyAppWindowRef }, { token: SkyResizeObserverService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
2993
3029
  SkyScrollableHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' });
2994
3030
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, decorators: [{
2995
3031
  type: Injectable,
2996
3032
  args: [{
2997
3033
  providedIn: 'root',
2998
3034
  }]
2999
- }], ctorParameters: function () { return [{ type: SkyMutationObserverService }, { type: SkyAppWindowRef }]; } });
3035
+ }], ctorParameters: function () {
3036
+ return [{ type: SkyMutationObserverService }, { type: SkyAppWindowRef }, { type: SkyResizeObserverService, decorators: [{
3037
+ type: Optional
3038
+ }] }];
3039
+ } });
3000
3040
 
3001
3041
  var _SkyAppTitleService_title;
3002
3042
  /**