@skyux/modals 10.37.4 → 10.38.0
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.
- package/documentation.json +571 -570
- package/esm2022/lib/modules/modal/modal.component.mjs +21 -6
- package/fesm2022/skyux-modals.mjs +20 -126
- package/fesm2022/skyux-modals.mjs.map +1 -1
- package/lib/modules/modal/modal.component.d.ts +4 -3
- package/package.json +7 -7
- package/esm2022/lib/modules/modal/modal-scroll-shadow-event-args.mjs +0 -2
- package/esm2022/lib/modules/modal/modal-scroll-shadow.directive.mjs +0 -127
- package/lib/modules/modal/modal-scroll-shadow-event-args.d.ts +0 -7
- package/lib/modules/modal/modal-scroll-shadow.directive.d.ts +0 -18
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Input, ViewChild, inject, } from '@angular/core';
|
|
3
|
-
import { SkyAppWindowRef, SkyCoreAdapterService, SkyDockLocation, SkyDockService, SkyIdModule, SkyLiveAnnouncerService, SkyResizeObserverMediaQueryService, } from '@skyux/core';
|
|
3
|
+
import { SkyAppWindowRef, SkyCoreAdapterService, SkyDockLocation, SkyDockService, SkyIdModule, SkyLiveAnnouncerService, SkyResizeObserverMediaQueryService, SkyScrollShadowDirective, } from '@skyux/core';
|
|
4
4
|
import { SkyHelpInlineModule } from '@skyux/help-inline';
|
|
5
5
|
import { SkyIconModule } from '@skyux/icon';
|
|
6
|
+
import { SkyTheme, SkyThemeService } from '@skyux/theme';
|
|
6
7
|
import { Subject } from 'rxjs';
|
|
7
8
|
import { takeUntil } from 'rxjs/operators';
|
|
8
9
|
import { SkyModalsResourcesModule } from '../shared/sky-modals-resources.module';
|
|
@@ -11,7 +12,6 @@ import { SkyModalConfiguration } from './modal-configuration';
|
|
|
11
12
|
import { SkyModalErrorsService } from './modal-errors.service';
|
|
12
13
|
import { SkyModalHeaderComponent } from './modal-header.component';
|
|
13
14
|
import { SkyModalHostService } from './modal-host.service';
|
|
14
|
-
import { SkyModalScrollShadowDirective } from './modal-scroll-shadow.directive';
|
|
15
15
|
import * as i0 from "@angular/core";
|
|
16
16
|
import * as i1 from "@angular/common";
|
|
17
17
|
import * as i2 from "@skyux/help-inline";
|
|
@@ -80,10 +80,16 @@ export class SkyModalComponent {
|
|
|
80
80
|
* the modal service before executing assertions.
|
|
81
81
|
*/
|
|
82
82
|
#config;
|
|
83
|
+
#themeSvc;
|
|
83
84
|
constructor() {
|
|
84
85
|
this.ariaRoleOrDefault = ARIA_ROLE_DEFAULT;
|
|
85
86
|
this.ariaOwns = null;
|
|
86
87
|
this.modalState = 'in';
|
|
88
|
+
this.scrollShadow = {
|
|
89
|
+
bottomShadow: 'none',
|
|
90
|
+
topShadow: 'none',
|
|
91
|
+
};
|
|
92
|
+
this.scrollShadowEnabled = false;
|
|
87
93
|
this.#ngUnsubscribe = new Subject();
|
|
88
94
|
this.#changeDetector = inject(ChangeDetectorRef);
|
|
89
95
|
this.#componentAdapter = inject(SkyModalComponentAdapterService);
|
|
@@ -105,6 +111,7 @@ export class SkyModalComponent {
|
|
|
105
111
|
*/
|
|
106
112
|
this.#config = inject(SkyModalConfiguration, { optional: true }) ??
|
|
107
113
|
new SkyModalConfiguration();
|
|
114
|
+
this.#themeSvc = inject(SkyThemeService, { optional: true });
|
|
108
115
|
this.ariaDescribedBy = this.#config.ariaDescribedBy;
|
|
109
116
|
this.ariaLabelledBy = this.#config.ariaLabelledBy;
|
|
110
117
|
this.ariaRole = this.#config.ariaRole;
|
|
@@ -168,6 +175,14 @@ export class SkyModalComponent {
|
|
|
168
175
|
this.#changeDetector.markForCheck();
|
|
169
176
|
}
|
|
170
177
|
});
|
|
178
|
+
if (this.#themeSvc) {
|
|
179
|
+
this.#themeSvc.settingsChange
|
|
180
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
181
|
+
.subscribe((themeSettings) => {
|
|
182
|
+
this.scrollShadowEnabled =
|
|
183
|
+
themeSettings.currentSettings.theme === SkyTheme.presets.modern;
|
|
184
|
+
});
|
|
185
|
+
}
|
|
171
186
|
}
|
|
172
187
|
ngAfterViewInit() {
|
|
173
188
|
this.#componentAdapter.handleWindowChange(this.#elRef);
|
|
@@ -221,7 +236,7 @@ export class SkyModalComponent {
|
|
|
221
236
|
SkyModalComponentAdapterService,
|
|
222
237
|
SkyModalErrorsService,
|
|
223
238
|
SkyDockService,
|
|
224
|
-
], viewQueries: [{ propertyName: "modalContentWrapperElement", first: true, predicate: ["modalContentWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sky-modal-dialog\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"ariaDescribedBy || modalContentId.id\"\n [attr.aria-labelledby]=\"ariaLabelledBy || headerId.id\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.role]=\"ariaRoleOrDefault\"\n (window:resize)=\"windowResize()\"\n>\n <div\n class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n tabindex=\"-1\"\n [ngClass]=\"{\n 'sky-modal-tiled': tiledBody,\n 'sky-modal-viewkeeper': viewkeeperEnabled()\n }\"\n [ngStyle]=\"{\n zIndex: modalZIndex\n }\"\n >\n <div\n class=\"sky-modal-header\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.topShadow\n }\"\n >\n <div\n class=\"sky-modal-header-content\"\n skyId\n [ngClass]=\"{\n 'sky-font-heading-2': size === 'full-page'\n }\"\n #headerId=\"skyId\"\n >\n @if (headingText) {\n <sky-modal-header>\n {{ headingText }}\n @if (helpKey || helpPopoverContent) {\n <sky-help-inline\n class=\"sky-control-help\"\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n </sky-modal-header>\n } @else {\n <ng-content select=\"sky-modal-header\" />\n }\n </div>\n <div class=\"sky-modal-header-buttons\">\n <button\n *ngIf=\"legacyHelpKey\"\n class=\"sky-btn sky-modal-btn-help\"\n name=\"help-button\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n (click)=\"helpButtonClick()\"\n >\n <sky-icon icon=\"question-circle\" />\n </button>\n\n <button\n type=\"button\"\n class=\"sky-btn sky-modal-btn-close\"\n [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n (click)=\"closeButtonClick()\"\n >\n <sky-icon icon=\"close\" />\n </button>\n </div>\n </div>\n <div\n class=\"sky-modal-content sky-padding-even-large\"\n role=\"region\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"headerId.id\"\n (
|
|
239
|
+
], viewQueries: [{ propertyName: "modalContentWrapperElement", first: true, predicate: ["modalContentWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sky-modal-dialog\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"ariaDescribedBy || modalContentId.id\"\n [attr.aria-labelledby]=\"ariaLabelledBy || headerId.id\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.role]=\"ariaRoleOrDefault\"\n (window:resize)=\"windowResize()\"\n>\n <div\n class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n tabindex=\"-1\"\n [ngClass]=\"{\n 'sky-modal-tiled': tiledBody,\n 'sky-modal-viewkeeper': viewkeeperEnabled()\n }\"\n [ngStyle]=\"{\n zIndex: modalZIndex\n }\"\n >\n <div\n class=\"sky-modal-header\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.topShadow\n }\"\n >\n <div\n class=\"sky-modal-header-content\"\n skyId\n [ngClass]=\"{\n 'sky-font-heading-2': size === 'full-page'\n }\"\n #headerId=\"skyId\"\n >\n @if (headingText) {\n <sky-modal-header>\n {{ headingText }}\n @if (helpKey || helpPopoverContent) {\n <sky-help-inline\n class=\"sky-control-help\"\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n </sky-modal-header>\n } @else {\n <ng-content select=\"sky-modal-header\" />\n }\n </div>\n <div class=\"sky-modal-header-buttons\">\n <button\n *ngIf=\"legacyHelpKey\"\n class=\"sky-btn sky-modal-btn-help\"\n name=\"help-button\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n (click)=\"helpButtonClick()\"\n >\n <sky-icon icon=\"question-circle\" />\n </button>\n\n <button\n type=\"button\"\n class=\"sky-btn sky-modal-btn-close\"\n [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n (click)=\"closeButtonClick()\"\n >\n <sky-icon icon=\"close\" />\n </button>\n </div>\n </div>\n <div\n class=\"sky-modal-content sky-padding-even-large\"\n role=\"region\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"headerId.id\"\n (skyScrollShadow)=\"scrollShadowChange($event)\"\n [skyScrollShadowEnabled]=\"scrollShadowEnabled\"\n #modalContentId=\"skyId\"\n #modalContentWrapper\n >\n <ng-content select=\"sky-modal-content\" />\n </div>\n <div\n class=\"sky-modal-footer\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.bottomShadow\n }\"\n >\n <ng-content select=\"sky-modal-footer\" />\n </div>\n </div>\n</div>\n", styles: [".sky-modal{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;position:fixed;width:auto;left:0;right:0;top:20px;margin:10px;display:flex;flex-direction:column;overflow:hidden}.sky-modal:focus{outline:none}.sky-modal-header:has(.sky-modal-header-content:empty){display:none}@media (min-width: 768px){.sky-modal:not(.sky-modal-large){margin:0 auto}.sky-modal-small{width:300px}.sky-modal-small .sky-modal-content,.sky-modal-small .sky-modal-header,.sky-modal-small .sky-modal-footer{max-width:300px}.sky-modal-medium{width:600px}.sky-modal-medium .sky-modal-content,.sky-modal-medium .sky-modal-header,.sky-modal-medium .sky-modal-footer{max-width:600px}}@media (min-width: 920px){.sky-modal-large{margin:0 auto;width:900px}.sky-modal-large .sky-modal-content,.sky-modal-large .sky-modal-header,.sky-modal-large .sky-modal-footer{max-width:900px}}.sky-modal-content{background-color:#fff;--sky-background-color-page-default: #fff}.sky-modal-content:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-tiled .sky-modal-content{background-color:#eeeeef;--sky-background-color-page-default: $sky-background-color-neutral-light}.sky-modal-tiled .sky-modal-content ::ng-deep .sky-tile-title{font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:var(--sky-text-color-deemphasized);font-weight:300;font-size:19px}.sky-modal-header{padding:9px 3px 9px 15px;background-color:#fff;display:flex;align-items:baseline;border-bottom:1px solid #e2e3e4}.sky-modal-header-buttons{flex-shrink:.0001}.sky-modal-header-buttons .sky-btn{border:none;color:#cdcfd2;cursor:pointer}.sky-modal-header-buttons .sky-btn:hover{color:#979ba2;transition:color .15s}.sky-modal-header-content{flex-grow:1}.sky-modal-header{flex-shrink:0;z-index:2}.sky-modal-content{overflow-y:auto}.sky-modal-footer{flex-shrink:0;z-index:2}.sky-modal-full-page{width:100%;top:0;margin:0}.sky-modal-full-page .sky-modal-header-buttons sky-icon[icon=close]{font-size:20px}.sky-modal-full-page .sky-modal-content{flex-grow:1}.sky-modal-content>::ng-deep sky-dock{bottom:-15px;margin-left:-15px;margin-bottom:-15px;padding-top:15px;width:calc(100% + 30px)}:host-context(.sky-theme-modern) .sky-modal-header{border:none;padding:20px 30px}:host-context(.sky-theme-modern) .sky-modal-btn-help,:host-context(.sky-theme-modern) .sky-modal-btn-close{display:none}:host-context(.sky-theme-modern) .sky-modal-content{padding:0}:host-context(.sky-theme-modern) .sky-modal-full-page{width:calc(100% - 60px);margin:30px}:host-context(.sky-theme-modern) .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;--sky-background-color-page-default: #fff;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-modal-header{border:none;padding:20px 30px}.sky-theme-modern .sky-modal-btn-help,.sky-theme-modern .sky-modal-btn-close{display:none}.sky-theme-modern .sky-modal-content{padding:0}.sky-theme-modern .sky-modal-full-page{width:calc(100% - 60px);margin:30px}.sky-theme-modern .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;--sky-background-color-page-default: #fff;padding-left:30px;padding-right:30px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal{border-color:#121212}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header{color:#fbfcfe}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-content{background-color:transparent;--sky-background-color-page-default: $sky-theme-modern-mode-dark-background-color-page-default}.sky-theme-modern.sky-theme-mode-dark .sky-modal{border-color:#121212}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header,.sky-theme-modern.sky-theme-mode-dark .sky-modal-content{background-color:transparent;--sky-background-color-page-default: $sky-theme-modern-mode-dark-background-color-page-default}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SkyHelpInlineModule }, { kind: "component", type: i2.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "ngmodule", type: SkyIconModule }, { kind: "component", type: i3.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "directive", type: i4.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: SkyModalHeaderComponent, selector: "sky-modal-header" }, { kind: "directive", type: SkyScrollShadowDirective, selector: "[skyScrollShadow]", inputs: ["skyScrollShadowEnabled"], outputs: ["skyScrollShadow"] }, { kind: "ngmodule", type: SkyModalsResourcesModule }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }] }); }
|
|
225
240
|
}
|
|
226
241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyModalComponent, decorators: [{
|
|
227
242
|
type: Component,
|
|
@@ -235,9 +250,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
235
250
|
SkyIconModule,
|
|
236
251
|
SkyIdModule,
|
|
237
252
|
SkyModalHeaderComponent,
|
|
238
|
-
|
|
253
|
+
SkyScrollShadowDirective,
|
|
239
254
|
SkyModalsResourcesModule,
|
|
240
|
-
], template: "<div\n class=\"sky-modal-dialog\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"ariaDescribedBy || modalContentId.id\"\n [attr.aria-labelledby]=\"ariaLabelledBy || headerId.id\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.role]=\"ariaRoleOrDefault\"\n (window:resize)=\"windowResize()\"\n>\n <div\n class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n tabindex=\"-1\"\n [ngClass]=\"{\n 'sky-modal-tiled': tiledBody,\n 'sky-modal-viewkeeper': viewkeeperEnabled()\n }\"\n [ngStyle]=\"{\n zIndex: modalZIndex\n }\"\n >\n <div\n class=\"sky-modal-header\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.topShadow\n }\"\n >\n <div\n class=\"sky-modal-header-content\"\n skyId\n [ngClass]=\"{\n 'sky-font-heading-2': size === 'full-page'\n }\"\n #headerId=\"skyId\"\n >\n @if (headingText) {\n <sky-modal-header>\n {{ headingText }}\n @if (helpKey || helpPopoverContent) {\n <sky-help-inline\n class=\"sky-control-help\"\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n </sky-modal-header>\n } @else {\n <ng-content select=\"sky-modal-header\" />\n }\n </div>\n <div class=\"sky-modal-header-buttons\">\n <button\n *ngIf=\"legacyHelpKey\"\n class=\"sky-btn sky-modal-btn-help\"\n name=\"help-button\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n (click)=\"helpButtonClick()\"\n >\n <sky-icon icon=\"question-circle\" />\n </button>\n\n <button\n type=\"button\"\n class=\"sky-btn sky-modal-btn-close\"\n [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n (click)=\"closeButtonClick()\"\n >\n <sky-icon icon=\"close\" />\n </button>\n </div>\n </div>\n <div\n class=\"sky-modal-content sky-padding-even-large\"\n role=\"region\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"headerId.id\"\n (
|
|
255
|
+
], template: "<div\n class=\"sky-modal-dialog\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"ariaDescribedBy || modalContentId.id\"\n [attr.aria-labelledby]=\"ariaLabelledBy || headerId.id\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.role]=\"ariaRoleOrDefault\"\n (window:resize)=\"windowResize()\"\n>\n <div\n class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n tabindex=\"-1\"\n [ngClass]=\"{\n 'sky-modal-tiled': tiledBody,\n 'sky-modal-viewkeeper': viewkeeperEnabled()\n }\"\n [ngStyle]=\"{\n zIndex: modalZIndex\n }\"\n >\n <div\n class=\"sky-modal-header\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.topShadow\n }\"\n >\n <div\n class=\"sky-modal-header-content\"\n skyId\n [ngClass]=\"{\n 'sky-font-heading-2': size === 'full-page'\n }\"\n #headerId=\"skyId\"\n >\n @if (headingText) {\n <sky-modal-header>\n {{ headingText }}\n @if (helpKey || helpPopoverContent) {\n <sky-help-inline\n class=\"sky-control-help\"\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n </sky-modal-header>\n } @else {\n <ng-content select=\"sky-modal-header\" />\n }\n </div>\n <div class=\"sky-modal-header-buttons\">\n <button\n *ngIf=\"legacyHelpKey\"\n class=\"sky-btn sky-modal-btn-help\"\n name=\"help-button\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n (click)=\"helpButtonClick()\"\n >\n <sky-icon icon=\"question-circle\" />\n </button>\n\n <button\n type=\"button\"\n class=\"sky-btn sky-modal-btn-close\"\n [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n (click)=\"closeButtonClick()\"\n >\n <sky-icon icon=\"close\" />\n </button>\n </div>\n </div>\n <div\n class=\"sky-modal-content sky-padding-even-large\"\n role=\"region\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"headerId.id\"\n (skyScrollShadow)=\"scrollShadowChange($event)\"\n [skyScrollShadowEnabled]=\"scrollShadowEnabled\"\n #modalContentId=\"skyId\"\n #modalContentWrapper\n >\n <ng-content select=\"sky-modal-content\" />\n </div>\n <div\n class=\"sky-modal-footer\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.bottomShadow\n }\"\n >\n <ng-content select=\"sky-modal-footer\" />\n </div>\n </div>\n</div>\n", styles: [".sky-modal{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;position:fixed;width:auto;left:0;right:0;top:20px;margin:10px;display:flex;flex-direction:column;overflow:hidden}.sky-modal:focus{outline:none}.sky-modal-header:has(.sky-modal-header-content:empty){display:none}@media (min-width: 768px){.sky-modal:not(.sky-modal-large){margin:0 auto}.sky-modal-small{width:300px}.sky-modal-small .sky-modal-content,.sky-modal-small .sky-modal-header,.sky-modal-small .sky-modal-footer{max-width:300px}.sky-modal-medium{width:600px}.sky-modal-medium .sky-modal-content,.sky-modal-medium .sky-modal-header,.sky-modal-medium .sky-modal-footer{max-width:600px}}@media (min-width: 920px){.sky-modal-large{margin:0 auto;width:900px}.sky-modal-large .sky-modal-content,.sky-modal-large .sky-modal-header,.sky-modal-large .sky-modal-footer{max-width:900px}}.sky-modal-content{background-color:#fff;--sky-background-color-page-default: #fff}.sky-modal-content:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-tiled .sky-modal-content{background-color:#eeeeef;--sky-background-color-page-default: $sky-background-color-neutral-light}.sky-modal-tiled .sky-modal-content ::ng-deep .sky-tile-title{font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:var(--sky-text-color-deemphasized);font-weight:300;font-size:19px}.sky-modal-header{padding:9px 3px 9px 15px;background-color:#fff;display:flex;align-items:baseline;border-bottom:1px solid #e2e3e4}.sky-modal-header-buttons{flex-shrink:.0001}.sky-modal-header-buttons .sky-btn{border:none;color:#cdcfd2;cursor:pointer}.sky-modal-header-buttons .sky-btn:hover{color:#979ba2;transition:color .15s}.sky-modal-header-content{flex-grow:1}.sky-modal-header{flex-shrink:0;z-index:2}.sky-modal-content{overflow-y:auto}.sky-modal-footer{flex-shrink:0;z-index:2}.sky-modal-full-page{width:100%;top:0;margin:0}.sky-modal-full-page .sky-modal-header-buttons sky-icon[icon=close]{font-size:20px}.sky-modal-full-page .sky-modal-content{flex-grow:1}.sky-modal-content>::ng-deep sky-dock{bottom:-15px;margin-left:-15px;margin-bottom:-15px;padding-top:15px;width:calc(100% + 30px)}:host-context(.sky-theme-modern) .sky-modal-header{border:none;padding:20px 30px}:host-context(.sky-theme-modern) .sky-modal-btn-help,:host-context(.sky-theme-modern) .sky-modal-btn-close{display:none}:host-context(.sky-theme-modern) .sky-modal-content{padding:0}:host-context(.sky-theme-modern) .sky-modal-full-page{width:calc(100% - 60px);margin:30px}:host-context(.sky-theme-modern) .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;--sky-background-color-page-default: #fff;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-modal-header{border:none;padding:20px 30px}.sky-theme-modern .sky-modal-btn-help,.sky-theme-modern .sky-modal-btn-close{display:none}.sky-theme-modern .sky-modal-content{padding:0}.sky-theme-modern .sky-modal-full-page{width:calc(100% - 60px);margin:30px}.sky-theme-modern .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;--sky-background-color-page-default: #fff;padding-left:30px;padding-right:30px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal{border-color:#121212}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header{color:#fbfcfe}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-content{background-color:transparent;--sky-background-color-page-default: $sky-theme-modern-mode-dark-background-color-page-default}.sky-theme-modern.sky-theme-mode-dark .sky-modal{border-color:#121212}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header,.sky-theme-modern.sky-theme-mode-dark .sky-modal-content{background-color:transparent;--sky-background-color-page-default: $sky-theme-modern-mode-dark-background-color-page-default}\n"] }]
|
|
241
256
|
}], ctorParameters: () => [], propDecorators: { wrapperClass: [{
|
|
242
257
|
type: HostBinding,
|
|
243
258
|
args: ['class']
|
|
@@ -269,4 +284,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
269
284
|
type: HostListener,
|
|
270
285
|
args: ['document:keydown', ['$event']]
|
|
271
286
|
}] } });
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixjQUFjLEVBQ2QsV0FBVyxFQUNYLHVCQUF1QixFQUN2QixrQ0FBa0MsR0FDbkMsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVqRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFP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YUFBYTt3QkFDYixXQUFXO3dCQUNYLHVCQUF1Qjt3QkFDdkIsNkJBQTZCO3dCQUM3Qix3QkFBd0I7cUJBQ3pCO3dEQUlNLFlBQVk7c0JBRGxCLFdBQVc7dUJBQUMsT0FBTztnQkFPVCxVQUFVO3NCQURwQixLQUFLO2dCQVNDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBUUMsT0FBTztzQkFEYixLQUFLO2dCQVNDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFRQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkFZQyxTQUFTO3NCQURmLEtBQUs7Z0JBU0ssZUFBZTtzQkFEekIsS0FBSztnQkFlSyxjQUFjO3NCQUR4QixLQUFLO2dCQXlCQywwQkFBMEI7c0JBRGhDLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQStDL0MsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpQm5DLGlCQUFpQjtzQkFEdkIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTa3lBcHBXaW5kb3dSZWYsXG4gIFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgU2t5RG9ja0xvY2F0aW9uLFxuICBTa3lEb2NrU2VydmljZSxcbiAgU2t5SWRNb2R1bGUsXG4gIFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlLFxuICBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lTW9kdWxlIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5TW9kYWxzUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1tb2RhbHMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreU1vZGFsQ29tcG9uZW50QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL21vZGFsLWNvbXBvbmVudC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5TW9kYWxDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9tb2RhbC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IFNreU1vZGFsRXJyb3IgfSBmcm9tICcuL21vZGFsLWVycm9yJztcbmltcG9ydCB7IFNreU1vZGFsRXJyb3JzU2VydmljZSB9IGZyb20gJy4vbW9kYWwtZXJyb3JzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5TW9kYWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TW9kYWxIb3N0U2VydmljZSB9IGZyb20gJy4vbW9kYWwtaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreU1vZGFsU2Nyb2xsU2hhZG93RXZlbnRBcmdzIH0gZnJvbSAnLi9tb2RhbC1zY3JvbGwtc2hhZG93LWV2ZW50LWFyZ3MnO1xuaW1wb3J0IHsgU2t5TW9kYWxTY3JvbGxTaGFkb3dEaXJlY3RpdmUgfSBmcm9tICcuL21vZGFsLXNjcm9sbC1zaGFkb3cuZGlyZWN0aXZlJztcblxuY29uc3QgQVJJQV9ST0xFX0RFRkFVTFQgPSAnZGlhbG9nJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIGNvbW1vbiBsb29rLWFuZC1mZWVsIGZvciBtb2RhbCBjb250ZW50IHdpdGggb3B0aW9ucyB0byBkaXNwbGF5XG4gKiBhIGNvbW1vbiBtb2RhbCBoZWFkZXIsIHNwZWNpZnkgYm9keSBjb250ZW50LCBhbmQgZGlzcGxheSBhIGNvbW1vbiBtb2RhbCBmb290ZXJcbiAqIGFuZCBidXR0b25zLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdza3ktbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lNb2RhbENvbXBvbmVudEFkYXB0ZXJTZXJ2aWNlLFxuICAgIFNreU1vZGFsRXJyb3JzU2VydmljZSxcbiAgICBTa3lEb2NrU2VydmljZSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lIZWxwSW5saW5lTW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5TW9kYWxIZWFkZXJDb21wb25lbnQsXG4gICAgU2t5TW9kYWxTY3JvbGxTaGFkb3dEaXJlY3RpdmUsXG4gICAgU2t5TW9kYWxzUmVzb3VyY2VzTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHB1YmxpYyB3cmFwcGVyQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGZvcm0tbGV2ZWwgZXJyb3JzIHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvcm1FcnJvcnModmFsdWU6IFNreU1vZGFsRXJyb3JbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2Vycm9yc1N2Yy51cGRhdGVFcnJvcnModmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIG1vZGFsJ3MgaGVhZGluZy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWFkaW5nVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSkgYnV0dG9uIGlzXG4gICAqIGFkZGVkIHRvIHRoZSBtb2RhbCBoZWFkZXIuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBnbG9iYWwgaGVscCBhcyBjb25maWd1cmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBoZWxwIHBvcG92ZXIuIFdoZW4gc3BlY2lmaWVkLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gdGhlIG1vZGFsIGhlYWRlci4gVGhlIGhlbHAgaW5saW5lIGJ1dHRvbiBkaXNwbGF5cyBhIFtwb3BvdmVyXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvcG9wb3ZlcilcbiAgICogd2hlbiBjbGlja2VkIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29udGVudCBhbmQgb3B0aW9uYWwgdGl0bGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJDb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBoZWxwIHBvcG92ZXIuIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGhlbHBQb3BvdmVyQ29udGVudGAgaXNcbiAgICogYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJUaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IHRoZSBjb25maXJtIGNvbXBvbmVudCB0byBzZXQgYSBkaWZmZXJlbnQgcm9sZSBmb3IgdGhlIG1vZGFsLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYXJpYVJvbGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuYXJpYVJvbGVPckRlZmF1bHQgPSB2YWx1ZSB8fCBBUklBX1JPTEVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBhcmlhUm9sZU9yRGVmYXVsdCA9IEFSSUFfUk9MRV9ERUZBVUxUO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aWxlZEJvZHk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgdGhlIGNvbmZpcm0gY29tcG9uZW50IHRvIHNldCBkZXNjcmlwdGl2ZSB0ZXh0IHdpdGhvdXQgdXNpbmcgYVxuICAgKiBtb2RhbCBoZWFkZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhRGVzY3JpYmVkQnkoaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19hcmlhRGVzY3JpYmVkQnkgPSBpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYURlc2NyaWJlZEJ5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19hcmlhRGVzY3JpYmVkQnk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSB0aGUgY29uZmlybSBjb21wb25lbnQgdG8gc2V0IGRlc2NyaXB0aXZlIHRleHQgd2l0aG91dCB1c2luZyBhXG4gICAqIG1vZGFsIGhlYWRlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFyaWFMYWJlbGxlZEJ5KGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfYXJpYUxhYmVsbGVkQnkgPSBpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYUxhYmVsbGVkQnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2FyaWFMYWJlbGxlZEJ5O1xuICB9XG5cbiAgcHVibGljIGFyaWFPd25zOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBsZWdhY3lIZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIG1vZGFsU3RhdGUgPSAnaW4nO1xuXG4gIHB1YmxpYyBtb2RhbFpJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBzY3JvbGxTaGFkb3c6IFNreU1vZGFsU2Nyb2xsU2hhZG93RXZlbnRBcmdzIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBzaXplOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnbW9kYWxDb250ZW50V3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwdWJsaWMgbW9kYWxDb250ZW50V3JhcHBlckVsZW1lbnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfYXJpYURlc2NyaWJlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICByZWFkb25seSAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSAjY29tcG9uZW50QWRhcHRlciA9IGluamVjdChTa3lNb2RhbENvbXBvbmVudEFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2NvcmVBZGFwdGVyID0gaW5qZWN0KFNreUNvcmVBZGFwdGVyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNkb2NrU2VydmljZSA9IGluamVjdChTa3lEb2NrU2VydmljZSwgeyBob3N0OiB0cnVlIH0pO1xuICByZWFkb25seSAjZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5ICNlcnJvcnNTdmMgPSBpbmplY3QoU2t5TW9kYWxFcnJvcnNTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2hvc3RTZXJ2aWNlID0gaW5qZWN0KFNreU1vZGFsSG9zdFNlcnZpY2UpO1xuICByZWFkb25seSAjbGl2ZUFubm91bmNlclN2YyA9IGluamVjdChTa3lMaXZlQW5ub3VuY2VyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNtZWRpYVF1ZXJ5U2VydmljZSA9IGluamVjdChTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuICByZWFkb25seSAjd2luZG93UmVmID0gaW5qZWN0KFNreUFwcFdpbmRvd1JlZik7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvdmlkZXIgaXMgb3B0aW9uYWwgdG8gYWNjb3VudCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBhIG1vZGFsIGNvbXBvbmVudFxuICAgKiBpcyBpbXBsZW1lbnRlZCB3aXRob3V0IHRoZSBtb2RhbCBzZXJ2aWNlLiBGb3IgZXhhbXBsZSwgd2hlbiBhIGNvbnN1bWVyIHRlc3RzXG4gICAqIGEgY29tcG9uZW50IHRoYXQgdXNlcyB0aGUgbW9kYWwgY29tcG9uZW50IGJ1dCBkb2Vzbid0IGxhdW5jaCB0aGUgbW9kYWwgZnJvbVxuICAgKiB0aGUgbW9kYWwgc2VydmljZSBiZWZvcmUgZXhlY3V0aW5nIGFzc2VydGlvbnMuXG4gICAqL1xuICByZWFkb25seSAjY29uZmlnID1cbiAgICBpbmplY3QoU2t5TW9kYWxDb25maWd1cmF0aW9uLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/XG4gICAgbmV3IFNreU1vZGFsQ29uZmlndXJhdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYXJpYURlc2NyaWJlZEJ5ID0gdGhpcy4jY29uZmlnLmFyaWFEZXNjcmliZWRCeTtcbiAgICB0aGlzLmFyaWFMYWJlbGxlZEJ5ID0gdGhpcy4jY29uZmlnLmFyaWFMYWJlbGxlZEJ5O1xuICAgIHRoaXMuYXJpYVJvbGUgPSB0aGlzLiNjb25maWcuYXJpYVJvbGU7XG4gICAgdGhpcy5sZWdhY3lIZWxwS2V5ID0gdGhpcy4jY29uZmlnLmhlbHBLZXk7XG4gICAgdGhpcy50aWxlZEJvZHkgPSB0aGlzLiNjb25maWcudGlsZWRCb2R5O1xuICAgIHRoaXMud3JhcHBlckNsYXNzID0gdGhpcy4jY29uZmlnLndyYXBwZXJDbGFzcztcblxuICAgIHRoaXMuc2l6ZSA9IHRoaXMuI2NvbmZpZy5mdWxsUGFnZVxuICAgICAgPyAnZnVsbC1wYWdlJ1xuICAgICAgOiB0aGlzLiNjb25maWcuc2l6ZT8udG9Mb3dlckNhc2UoKSB8fCAnbWVkaXVtJztcblxuICAgIHRoaXMubW9kYWxaSW5kZXggPSB0aGlzLiNob3N0U2VydmljZS56SW5kZXg7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cCcsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkRvY3VtZW50S2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID4gMCkge1xuICAgICAgY29uc3QgdG9wTW9kYWwgPSBTa3lNb2RhbEhvc3RTZXJ2aWNlLnRvcE1vZGFsO1xuICAgICAgaWYgKHRvcE1vZGFsICYmIHRvcE1vZGFsID09PSB0aGlzLiNob3N0U2VydmljZSkge1xuICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT09IDI3KSB7XG4gICAgICAgICAgLy8gRXNjYXBlIGtleSB1cFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZUJ1dHRvbkNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRG9jdW1lbnRLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoU2t5TW9kYWxIb3N0U2VydmljZS5vcGVuTW9kYWxDb3VudCA+IDApIHtcbiAgICAgIGNvbnN0IHRvcE1vZGFsID0gU2t5TW9kYWxIb3N0U2VydmljZS50b3BNb2RhbDtcbiAgICAgIGlmICh0b3BNb2RhbCAmJiB0b3BNb2RhbCA9PT0gdGhpcy4jaG9zdFNlcnZpY2UpIHtcbiAgICAgICAgaWYgKGV2ZW50LndoaWNoID09PSA5KSB7XG4gICAgICAgICAgLy8gVGFiIHByZXNzZWRcbiAgICAgICAgICBsZXQgZm9jdXNDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBmb2N1c0VsZW1lbnRMaXN0ID0gdGhpcy4jY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4oXG4gICAgICAgICAgICB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudC5zaGlmdEtleSAmJlxuICAgICAgICAgICAgKHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIuaXNGb2N1c0luRmlyc3RJdGVtKFxuICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgZm9jdXNFbGVtZW50TGlzdCxcbiAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgdGhpcy4jY29tcG9uZW50QWRhcHRlci5pc01vZGFsRm9jdXNlZChldmVudCwgdGhpcy4jZWxSZWYpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZm9jdXNDaGFuZ2VkID1cbiAgICAgICAgICAgICAgdGhpcy4jY29tcG9uZW50QWRhcHRlci5mb2N1c0xhc3RFbGVtZW50KGZvY3VzRWxlbWVudExpc3QpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAhZXZlbnQuc2hpZnRLZXkgJiZcbiAgICAgICAgICAgIHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIuaXNGb2N1c0luTGFzdEl0ZW0oZXZlbnQsIGZvY3VzRWxlbWVudExpc3QpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBmb2N1c0NoYW5nZWQgPVxuICAgICAgICAgICAgICB0aGlzLiNjb21wb25lbnRBZGFwdGVyLmZvY3VzRmlyc3RFbGVtZW50KGZvY3VzRWxlbWVudExpc3QpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmb2N1c0NoYW5nZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jbGl2ZUFubm91bmNlclN2Yy5hbm5vdW5jZXJFbGVtZW50Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudD8uaWQpIHtcbiAgICAgICAgICB0aGlzLmFyaWFPd25zID0gZWxlbWVudC5pZDtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIuaGFuZGxlV2luZG93Q2hhbmdlKHRoaXMuI2VsUmVmKTtcblxuICAgIC8vIEFkZGluZyBhIHRpbWVvdXQgdG8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvci5cbiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MDU2Mjg0NVxuICAgIHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNjb21wb25lbnRBZGFwdGVyLm1vZGFsT3BlbmVkKHRoaXMuI2VsUmVmKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2RvY2tTZXJ2aWNlLnNldERvY2tPcHRpb25zKHtcbiAgICAgIGxvY2F0aW9uOiBTa3lEb2NrTG9jYXRpb24uRWxlbWVudEJvdHRvbSxcbiAgICAgIHJlZmVyZW5jZUVsOiB0aGlzLm1vZGFsQ29udGVudFdyYXBwZXJFbGVtZW50IS5uYXRpdmVFbGVtZW50LFxuICAgICAgekluZGV4OiA1LFxuICAgIH0pO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodGhpcy4jbWVkaWFRdWVyeVNlcnZpY2UpIHtcbiAgICAgIHRoaXMuI21lZGlhUXVlcnlTZXJ2aWNlLm9ic2VydmUodGhpcy5tb2RhbENvbnRlbnRXcmFwcGVyRWxlbWVudCEsIHtcbiAgICAgICAgdXBkYXRlUmVzcG9uc2l2ZUNsYXNzZXM6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodGhpcy4jbWVkaWFRdWVyeVNlcnZpY2UpIHtcbiAgICAgIHRoaXMuI21lZGlhUXVlcnlTZXJ2aWNlLnVub2JzZXJ2ZSgpO1xuICAgIH1cbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBoZWxwQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGVnYWN5SGVscEtleSkge1xuICAgICAgdGhpcy4jaG9zdFNlcnZpY2Uub25PcGVuSGVscCh0aGlzLmxlZ2FjeUhlbHBLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI2hvc3RTZXJ2aWNlLm9uQ2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyB3aW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy4jY29tcG9uZW50QWRhcHRlci5oYW5kbGVXaW5kb3dDaGFuZ2UodGhpcy4jZWxSZWYpO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFNoYWRvd0NoYW5nZShhcmdzOiBTa3lNb2RhbFNjcm9sbFNoYWRvd0V2ZW50QXJncyk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsU2hhZG93ID0gYXJncztcbiAgfVxuXG4gIHB1YmxpYyB2aWV3a2VlcGVyRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jY29tcG9uZW50QWRhcHRlci5tb2RhbENvbnRlbnRIYXNEaXJlY3RDaGlsZFZpZXdrZWVwZXIoXG4gICAgICB0aGlzLiNlbFJlZixcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LW1vZGFsLWRpYWxvZ1wiXG4gIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgfHwgbW9kYWxDb250ZW50SWQuaWRcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnkgfHwgaGVhZGVySWQuaWRcIlxuICBbYXR0ci5hcmlhLW93bnNdPVwiYXJpYU93bnNcIlxuICBbYXR0ci5yb2xlXT1cImFyaWFSb2xlT3JEZWZhdWx0XCJcbiAgKHdpbmRvdzpyZXNpemUpPVwid2luZG93UmVzaXplKClcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktbW9kYWwgc2t5LXNoYWRvdyBza3ktYm94IHNreS1lbGV2YXRpb24tMTYgc2t5LW1vZGFsLXt7IHNpemUgfX1cIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktbW9kYWwtdGlsZWQnOiB0aWxlZEJvZHksXG4gICAgICAnc2t5LW1vZGFsLXZpZXdrZWVwZXInOiB2aWV3a2VlcGVyRW5hYmxlZCgpXG4gICAgfVwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgekluZGV4OiBtb2RhbFpJbmRleFxuICAgIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktbW9kYWwtaGVhZGVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgJ2JveC1zaGFkb3cnOiBzY3JvbGxTaGFkb3c/LnRvcFNoYWRvd1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1tb2RhbC1oZWFkZXItY29udGVudFwiXG4gICAgICAgIHNreUlkXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LWZvbnQtaGVhZGluZy0yJzogc2l6ZSA9PT0gJ2Z1bGwtcGFnZSdcbiAgICAgICAgfVwiXG4gICAgICAgICNoZWFkZXJJZD1cInNreUlkXCJcbiAgICAgID5cbiAgICAgICAgQGlmIChoZWFkaW5nVGV4dCkge1xuICAgICAgICAgIDxza3ktbW9kYWwtaGVhZGVyPlxuICAgICAgICAgICAge3sgaGVhZGluZ1RleHQgfX1cbiAgICAgICAgICAgIEBpZiAoaGVscEtleSB8fCBoZWxwUG9wb3ZlckNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgPHNreS1oZWxwLWlubGluZVxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscFwiXG4gICAgICAgICAgICAgICAgW2hlbHBLZXldPVwiaGVscEtleVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsVGV4dF09XCJoZWFkaW5nVGV4dFwiXG4gICAgICAgICAgICAgICAgW3BvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgICAgICAgICAgICAgW3BvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NreS1tb2RhbC1oZWFkZXI+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1tb2RhbC1oZWFkZXJcIiAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktbW9kYWwtaGVhZGVyLWJ1dHRvbnNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwibGVnYWN5SGVscEtleVwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1tb2RhbC1idG4taGVscFwiXG4gICAgICAgICAgbmFtZT1cImhlbHAtYnV0dG9uXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9tb2RhbF9vcGVuX2hlbHAnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGVscEJ1dHRvbkNsaWNrKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uIGljb249XCJxdWVzdGlvbi1jaXJjbGVcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1tb2RhbC1idG4tY2xvc2VcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X21vZGFsX2Nsb3NlJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgKGNsaWNrKT1cImNsb3NlQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gaWNvbj1cImNsb3NlXCIgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1tb2RhbC1jb250ZW50IHNreS1wYWRkaW5nLWV2ZW4tbGFyZ2VcIlxuICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgc2t5SWRcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJoZWFkZXJJZC5pZFwiXG4gICAgICAoc2t5TW9kYWxTY3JvbGxTaGFkb3cpPVwic2Nyb2xsU2hhZG93Q2hhbmdlKCRldmVudClcIlxuICAgICAgI21vZGFsQ29udGVudElkPVwic2t5SWRcIlxuICAgICAgI21vZGFsQ29udGVudFdyYXBwZXJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbW9kYWwtY29udGVudFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktbW9kYWwtZm9vdGVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgJ2JveC1zaGFkb3cnOiBzY3JvbGxTaGFkb3c/LmJvdHRvbVNoYWRvd1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LW1vZGFsLWZvb3RlclwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixjQUFjLEVBQ2QsV0FBVyxFQUNYLHVCQUF1QixFQUN2QixrQ0FBa0MsRUFDbEMsd0JBQXdCLEdBRXpCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFFM0QsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUM7QUFFbkM7Ozs7R0FJRztBQXFCSCxNQUFNLE9BQU8saUJBQWlCO0lBSTVCOztPQUVHO0lBQ0gsSUFDVyxVQUFVLENBQUMsS0FBa0M7UUFDdEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQThCRDs7O09BR0c7SUFDSCxJQUNXLFFBQVEsQ0FBQyxLQUF5QjtRQUMzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxJQUFJLGlCQUFpQixDQUFDO0lBQ3RELENBQUM7SUFXRDs7OztPQUlHO0lBQ0gsSUFDVyxlQUFlLENBQUMsRUFBc0I7UUFDL0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFDVyxjQUFjLENBQUMsRUFBc0I7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUF5QkQsY0FBYyxDQUF1QjtJQUVyQyxpQkFBaUIsQ0FBcUI7SUFDdEMsZ0JBQWdCLENBQXFCO0lBRTVCLGVBQWUsQ0FBNkI7SUFDNUMsaUJBQWlCLENBQTJDO0lBQzVELFlBQVksQ0FBaUM7SUFDN0MsWUFBWSxDQUEwQztJQUN0RCxNQUFNLENBQXNCO0lBQzVCLFVBQVUsQ0FBaUM7SUFDM0MsWUFBWSxDQUErQjtJQUMzQyxpQkFBaUIsQ0FBbUM7SUFDcEQsa0JBQWtCLENBRXhCO0lBQ00sVUFBVSxDQUEyQjtJQUU5Qzs7Ozs7T0FLRztJQUNNLE9BQU8sQ0FFYztJQUNyQixTQUFTLENBQStDO0lBRWpFO1FBekZPLHNCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBcUN0QyxhQUFRLEdBQWtCLElBQUksQ0FBQztRQU8vQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBSWxCLGlCQUFZLEdBQTZCO1lBQzlDLFlBQVksRUFBRSxNQUFNO1lBQ3BCLFNBQVMsRUFBRSxNQUFNO1NBQ2xCLENBQUM7UUFPUSx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFdEMsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBSzVCLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDNUQsaUJBQVksR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM3QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RCxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3BELHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsRUFBRTtZQUN2RSxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQUNNLGVBQVUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFOUM7Ozs7O1dBS0c7UUFDTSxZQUFPLEdBQ2QsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2pELElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUNyQixjQUFTLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRy9ELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDcEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBRTlDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQy9CLENBQUMsQ0FBQyxXQUFXO1lBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLFFBQVEsQ0FBQztRQUVqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQzlDLENBQUM7SUFHTSxlQUFlLENBQUMsS0FBb0I7UUFDekMsMEJBQTBCO1FBQzFCLGtCQUFrQjtRQUNsQixJQUFJLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7WUFDOUMsSUFBSSxRQUFRLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUN2QixnQkFBZ0I7b0JBQ2hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFHTSxpQkFBaUIsQ0FBQyxLQUFvQjtRQUMzQywwQkFBMEI7UUFDMUIsa0JBQWtCO1FBQ2xCLElBQUksbUJBQW1CLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztZQUM5QyxJQUFJLFFBQVEsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMvQyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3RCLGNBQWM7b0JBQ2QsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO29CQUV6QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQzdELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUMxQixDQUFDO29CQUVGLElBQ0UsS0FBSyxDQUFDLFFBQVE7d0JBQ2QsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQ3hDLEtBQUssRUFDTCxnQkFBZ0IsQ0FDakI7NEJBQ0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzVELENBQUM7d0JBQ0QsWUFBWTs0QkFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDOUQsQ0FBQzt5QkFBTSxJQUNMLENBQUMsS0FBSyxDQUFDLFFBQVE7d0JBQ2YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxFQUNqRSxDQUFDO3dCQUNELFlBQVk7NEJBQ1YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQy9ELENBQUM7b0JBRUQsSUFBSSxZQUFZLEVBQUUsQ0FBQzt3QkFDakIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCO2FBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JCLElBQUksT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjO2lCQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDcEMsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxtQkFBbUI7b0JBQ3RCLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3BFLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkQseUVBQXlFO1FBQ3pFLCtDQUErQztRQUMvQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7WUFDL0IsUUFBUSxFQUFFLGVBQWUsQ0FBQyxhQUFhO1lBQ3ZDLFdBQVcsRUFBRSxJQUFJLENBQUMsMEJBQTJCLENBQUMsYUFBYTtZQUMzRCxNQUFNLEVBQUUsQ0FBQztTQUNWLENBQUMsQ0FBQztRQUVILDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEyQixFQUFFO2dCQUNoRSx1QkFBdUIsRUFBRSxJQUFJO2FBQzlCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQiwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ3BCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLGtCQUFrQixDQUFDLElBQThCO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0NBQW9DLENBQ2hFLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztJQUNKLENBQUM7OEdBaFNVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHVmQWZqQjtZQUNULCtCQUErQjtZQUMvQixxQkFBcUI7WUFDckIsY0FBYztTQUNmLHdJQW1IeUMsVUFBVSw2QkM3S3RELHN3RkFnR0EsKzNKRHBDSSxZQUFZLHFUQUNaLG1CQUFtQix3UEFDbkIsYUFBYSxtS0FDYixXQUFXLDZHQUNYLHVCQUF1Qiw2REFDdkIsd0JBQXdCLCtIQUN4Qix3QkFBd0I7OzJGQUdmLGlCQUFpQjtrQkFwQjdCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFdBQVcsYUFHVjt3QkFDVCwrQkFBK0I7d0JBQy9CLHFCQUFxQjt3QkFDckIsY0FBYztxQkFDZixXQUNRO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHdCQUF3QjtxQkFDekI7d0RBSU0sWUFBWTtzQkFEbEIsV0FBVzt1QkFBQyxPQUFPO2dCQU9ULFVBQVU7c0JBRHBCLEtBQUs7Z0JBU0MsV0FBVztzQkFEakIsS0FBSztnQkFRQyxPQUFPO3NCQURiLEtBQUs7Z0JBU0Msa0JBQWtCO3NCQUR4QixLQUFLO2dCQVFDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQVlDLFNBQVM7c0JBRGYsS0FBSztnQkFTSyxlQUFlO3NCQUR6QixLQUFLO2dCQWVLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBNEJDLDBCQUEwQjtzQkFEaEMsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBa0QvQyxlQUFlO3NCQURyQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlCbkMsaUJBQWlCO3NCQUR2QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUFwcFdpbmRvd1JlZixcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lEb2NrTG9jYXRpb24sXG4gIFNreURvY2tTZXJ2aWNlLFxuICBTa3lJZE1vZHVsZSxcbiAgU2t5TGl2ZUFubm91bmNlclNlcnZpY2UsXG4gIFNreVJlc2l6ZU9ic2VydmVyTWVkaWFRdWVyeVNlcnZpY2UsXG4gIFNreVNjcm9sbFNoYWRvd0RpcmVjdGl2ZSxcbiAgU2t5U2Nyb2xsU2hhZG93RXZlbnRBcmdzLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lTW9kdWxlIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lUaGVtZSwgU2t5VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lNb2RhbHNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LW1vZGFscy1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5TW9kYWxDb21wb25lbnRBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vbW9kYWwtY29tcG9uZW50LWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lNb2RhbENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL21vZGFsLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgU2t5TW9kYWxFcnJvciB9IGZyb20gJy4vbW9kYWwtZXJyb3InO1xuaW1wb3J0IHsgU2t5TW9kYWxFcnJvcnNTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1lcnJvcnMuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lNb2RhbEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lNb2RhbEhvc3RTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1ob3N0LnNlcnZpY2UnO1xuXG5jb25zdCBBUklBX1JPTEVfREVGQVVMVCA9ICdkaWFsb2cnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgY29tbW9uIGxvb2stYW5kLWZlZWwgZm9yIG1vZGFsIGNvbnRlbnQgd2l0aCBvcHRpb25zIHRvIGRpc3BsYXlcbiAqIGEgY29tbW9uIG1vZGFsIGhlYWRlciwgc3BlY2lmeSBib2R5IGNvbnRlbnQsIGFuZCBkaXNwbGF5IGEgY29tbW9uIG1vZGFsIGZvb3RlclxuICogYW5kIGJ1dHRvbnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3NreS1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIFNreU1vZGFsQ29tcG9uZW50QWRhcHRlclNlcnZpY2UsXG4gICAgU2t5TW9kYWxFcnJvcnNTZXJ2aWNlLFxuICAgIFNreURvY2tTZXJ2aWNlLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUhlbHBJbmxpbmVNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lJZE1vZHVsZSxcbiAgICBTa3lNb2RhbEhlYWRlckNvbXBvbmVudCxcbiAgICBTa3lTY3JvbGxTaGFkb3dEaXJlY3RpdmUsXG4gICAgU2t5TW9kYWxzUmVzb3VyY2VzTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHB1YmxpYyB3cmFwcGVyQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGZvcm0tbGV2ZWwgZXJyb3JzIHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvcm1FcnJvcnModmFsdWU6IFNreU1vZGFsRXJyb3JbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2Vycm9yc1N2Yy51cGRhdGVFcnJvcnModmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIG1vZGFsJ3MgaGVhZGluZy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWFkaW5nVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSkgYnV0dG9uIGlzXG4gICAqIGFkZGVkIHRvIHRoZSBtb2RhbCBoZWFkZXIuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBnbG9iYWwgaGVscCBhcyBjb25maWd1cmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBoZWxwIHBvcG92ZXIuIFdoZW4gc3BlY2lmaWVkLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gdGhlIG1vZGFsIGhlYWRlci4gVGhlIGhlbHAgaW5saW5lIGJ1dHRvbiBkaXNwbGF5cyBhIFtwb3BvdmVyXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvcG9wb3ZlcilcbiAgICogd2hlbiBjbGlja2VkIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29udGVudCBhbmQgb3B0aW9uYWwgdGl0bGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJDb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBoZWxwIHBvcG92ZXIuIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGhlbHBQb3BvdmVyQ29udGVudGAgaXNcbiAgICogYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJUaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IHRoZSBjb25maXJtIGNvbXBvbmVudCB0byBzZXQgYSBkaWZmZXJlbnQgcm9sZSBmb3IgdGhlIG1vZGFsLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYXJpYVJvbGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuYXJpYVJvbGVPckRlZmF1bHQgPSB2YWx1ZSB8fCBBUklBX1JPTEVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBhcmlhUm9sZU9yRGVmYXVsdCA9IEFSSUFfUk9MRV9ERUZBVUxUO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aWxlZEJvZHk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgdGhlIGNvbmZpcm0gY29tcG9uZW50IHRvIHNldCBkZXNjcmlwdGl2ZSB0ZXh0IHdpdGhvdXQgdXNpbmcgYVxuICAgKiBtb2RhbCBoZWFkZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhRGVzY3JpYmVkQnkoaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19hcmlhRGVzY3JpYmVkQnkgPSBpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYURlc2NyaWJlZEJ5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19hcmlhRGVzY3JpYmVkQnk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSB0aGUgY29uZmlybSBjb21wb25lbnQgdG8gc2V0IGRlc2NyaXB0aXZlIHRleHQgd2l0aG91dCB1c2luZyBhXG4gICAqIG1vZGFsIGhlYWRlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFyaWFMYWJlbGxlZEJ5KGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfYXJpYUxhYmVsbGVkQnkgPSBpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYUxhYmVsbGVkQnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2FyaWFMYWJlbGxlZEJ5O1xuICB9XG5cbiAgcHVibGljIGFyaWFPd25zOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBsZWdhY3lIZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIG1vZGFsU3RhdGUgPSAnaW4nO1xuXG4gIHB1YmxpYyBtb2RhbFpJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBzY3JvbGxTaGFkb3c6IFNreVNjcm9sbFNoYWRvd0V2ZW50QXJncyA9IHtcbiAgICBib3R0b21TaGFkb3c6ICdub25lJyxcbiAgICB0b3BTaGFkb3c6ICdub25lJyxcbiAgfTtcblxuICBwdWJsaWMgc2l6ZTogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ21vZGFsQ29udGVudFdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIG1vZGFsQ29udGVudFdyYXBwZXJFbGVtZW50OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBzY3JvbGxTaGFkb3dFbmFibGVkID0gZmFsc2U7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfYXJpYURlc2NyaWJlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICByZWFkb25seSAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSAjY29tcG9uZW50QWRhcHRlciA9IGluamVjdChTa3lNb2RhbENvbXBvbmVudEFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2NvcmVBZGFwdGVyID0gaW5qZWN0KFNreUNvcmVBZGFwdGVyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNkb2NrU2VydmljZSA9IGluamVjdChTa3lEb2NrU2VydmljZSwgeyBob3N0OiB0cnVlIH0pO1xuICByZWFkb25seSAjZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5ICNlcnJvcnNTdmMgPSBpbmplY3QoU2t5TW9kYWxFcnJvcnNTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2hvc3RTZXJ2aWNlID0gaW5qZWN0KFNreU1vZGFsSG9zdFNlcnZpY2UpO1xuICByZWFkb25seSAjbGl2ZUFubm91bmNlclN2YyA9IGluamVjdChTa3lMaXZlQW5ub3VuY2VyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNtZWRpYVF1ZXJ5U2VydmljZSA9IGluamVjdChTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuICByZWFkb25seSAjd2luZG93UmVmID0gaW5qZWN0KFNreUFwcFdpbmRvd1JlZik7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvdmlkZXIgaXMgb3B0aW9uYWwgdG8gYWNjb3VudCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBhIG1vZGFsIGNvbXBvbmVudFxuICAgKiBpcyBpbXBsZW1lbnRlZCB3aXRob3V0IHRoZSBtb2RhbCBzZXJ2aWNlLiBGb3IgZXhhbXBsZSwgd2hlbiBhIGNvbnN1bWVyIHRlc3RzXG4gICAqIGEgY29tcG9uZW50IHRoYXQgdXNlcyB0aGUgbW9kYWwgY29tcG9uZW50IGJ1dCBkb2Vzbid0IGxhdW5jaCB0aGUgbW9kYWwgZnJvbVxuICAgKiB0aGUgbW9kYWwgc2VydmljZSBiZWZvcmUgZXhlY3V0aW5nIGFzc2VydGlvbnMuXG4gICAqL1xuICByZWFkb25seSAjY29uZmlnID1cbiAgICBpbmplY3QoU2t5TW9kYWxDb25maWd1cmF0aW9uLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/XG4gICAgbmV3IFNreU1vZGFsQ29uZmlndXJhdGlvbigpO1xuICByZWFkb25seSAjdGhlbWVTdmMgPSBpbmplY3QoU2t5VGhlbWVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYXJpYURlc2NyaWJlZEJ5ID0gdGhpcy4jY29uZmlnLmFyaWFEZXNjcmliZWRCeTtcbiAgICB0aGlzLmFyaWFMYWJlbGxlZEJ5ID0gdGhpcy4jY29uZmlnLmFyaWFMYWJlbGxlZEJ5O1xuICAgIHRoaXMuYXJpYVJvbGUgPSB0aGlzLiNjb25maWcuYXJpYVJvbGU7XG4gICAgdGhpcy5sZWdhY3lIZWxwS2V5ID0gdGhpcy4jY29uZmlnLmhlbHBLZXk7XG4gICAgdGhpcy50aWxlZEJvZHkgPSB0aGlzLiNjb25maWcudGlsZWRCb2R5O1xuICAgIHRoaXMud3JhcHBlckNsYXNzID0gdGhpcy4jY29uZmlnLndyYXBwZXJDbGFzcztcblxuICAgIHRoaXMuc2l6ZSA9IHRoaXMuI2NvbmZpZy5mdWxsUGFnZVxuICAgICAgPyAnZnVsbC1wYWdlJ1xuICAgICAgOiB0aGlzLiNjb25maWcuc2l6ZT8udG9Mb3dlckNhc2UoKSB8fCAnbWVkaXVtJztcblxuICAgIHRoaXMubW9kYWxaSW5kZXggPSB0aGlzLiNob3N0U2VydmljZS56SW5kZXg7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cCcsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkRvY3VtZW50S2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID4gMCkge1xuICAgICAgY29uc3QgdG9wTW9kYWwgPSBTa3lNb2RhbEhvc3RTZXJ2aWNlLnRvcE1vZGFsO1xuICAgICAgaWYgKHRvcE1vZGFsICYmIHRvcE1vZGFsID09PSB0aGlzLiNob3N0U2VydmljZSkge1xuICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT09IDI3KSB7XG4gICAgICAgICAgLy8gRXNjYXBlIGtleSB1cFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZUJ1dHRvbkNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRG9jdW1lbnRLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoU2t5TW9kYWxIb3N0U2VydmljZS5vcGVuTW9kYWxDb3VudCA+IDApIHtcbiAgICAgIGNvbnN0IHRvcE1vZGFsID0gU2t5TW9kYWxIb3N0U2VydmljZS50b3BNb2RhbDtcbiAgICAgIGlmICh0b3BNb2RhbCAmJiB0b3BNb2RhbCA9PT0gdGhpcy4jaG9zdFNlcnZpY2UpIHtcbiAgICAgICAgaWYgKGV2ZW50LndoaWNoID09PSA5KSB7XG4gICAgICAgICAgLy8gVGFiIHByZXNzZWRcbiAgICAgICAgICBsZXQgZm9jdXNDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBmb2N1c0VsZW1lbnRMaXN0ID0gdGhpcy4jY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4oXG4gICAgICAgICAgICB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudC5zaGlmdEtleSAmJlxuICAgICAgICAgICAgKHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIuaXNGb2N1c0luRmlyc3RJdGVtKFxuICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgZm9jdXNFbGVtZW50TGlzdCxcbiAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgdGhpcy4jY29tcG9uZW50QWRhcHRlci5pc01vZGFsRm9jdXNlZChldmVudCwgdGhpcy4jZWxSZWYpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZm9jdXNDaGFuZ2VkID1cbiAgICAgICAgICAgICAgdGhpcy4jY29tcG9uZW50QWRhcHRlci5mb2N1c0xhc3RFbGVtZW50KGZvY3VzRWxlbWVudExpc3QpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAhZXZlbnQuc2hpZnRLZXkgJiZcbiAgICAgICAgICAgIHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIuaXNGb2N1c0luTGFzdEl0ZW0oZXZlbnQsIGZvY3VzRWxlbWVudExpc3QpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBmb2N1c0NoYW5nZWQgPVxuICAgICAgICAgICAgICB0aGlzLiNjb21wb25lbnRBZGFwdGVyLmZvY3VzRmlyc3RFbGVtZW50KGZvY3VzRWxlbWVudExpc3QpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmb2N1c0NoYW5nZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jbGl2ZUFubm91bmNlclN2Yy5hbm5vdW5jZXJFbGVtZW50Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudD8uaWQpIHtcbiAgICAgICAgICB0aGlzLmFyaWFPd25zID0gZWxlbWVudC5pZDtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy4jdGhlbWVTdmMpIHtcbiAgICAgIHRoaXMuI3RoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodGhlbWVTZXR0aW5ncykgPT4ge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsU2hhZG93RW5hYmxlZCA9XG4gICAgICAgICAgICB0aGVtZVNldHRpbmdzLmN1cnJlbnRTZXR0aW5ncy50aGVtZSA9PT0gU2t5VGhlbWUucHJlc2V0cy5tb2Rlcm47XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jY29tcG9uZW50QWRhcHRlci5oYW5kbGVXaW5kb3dDaGFuZ2UodGhpcy4jZWxSZWYpO1xuXG4gICAgLy8gQWRkaW5nIGEgdGltZW91dCB0byBhdm9pZCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yLlxuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQwNTYyODQ1XG4gICAgdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIubW9kYWxPcGVuZWQodGhpcy4jZWxSZWYpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4jZG9ja1NlcnZpY2Uuc2V0RG9ja09wdGlvbnMoe1xuICAgICAgbG9jYXRpb246IFNreURvY2tMb2NhdGlvbi5FbGVtZW50Qm90dG9tLFxuICAgICAgcmVmZXJlbmNlRWw6IHRoaXMubW9kYWxDb250ZW50V3JhcHBlckVsZW1lbnQhLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB6SW5kZXg6IDUsXG4gICAgfSk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZSkge1xuICAgICAgdGhpcy4jbWVkaWFRdWVyeVNlcnZpY2Uub2JzZXJ2ZSh0aGlzLm1vZGFsQ29udGVudFdyYXBwZXJFbGVtZW50ISwge1xuICAgICAgICB1cGRhdGVSZXNwb25zaXZlQ2xhc3NlczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZSkge1xuICAgICAgdGhpcy4jbWVkaWFRdWVyeVNlcnZpY2UudW5vYnNlcnZlKCk7XG4gICAgfVxuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGhlbHBCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sZWdhY3lIZWxwS2V5KSB7XG4gICAgICB0aGlzLiNob3N0U2VydmljZS5vbk9wZW5IZWxwKHRoaXMubGVnYWN5SGVscEtleSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy4jaG9zdFNlcnZpY2Uub25DbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIHdpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNjb21wb25lbnRBZGFwdGVyLmhhbmRsZVdpbmRvd0NoYW5nZSh0aGlzLiNlbFJlZik7XG4gIH1cblxuICBwdWJsaWMgc2Nyb2xsU2hhZG93Q2hhbmdlKGFyZ3M6IFNreVNjcm9sbFNoYWRvd0V2ZW50QXJncyk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsU2hhZG93ID0gYXJncztcbiAgfVxuXG4gIHB1YmxpYyB2aWV3a2VlcGVyRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jY29tcG9uZW50QWRhcHRlci5tb2RhbENvbnRlbnRIYXNEaXJlY3RDaGlsZFZpZXdrZWVwZXIoXG4gICAgICB0aGlzLiNlbFJlZixcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LW1vZGFsLWRpYWxvZ1wiXG4gIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgfHwgbW9kYWxDb250ZW50SWQuaWRcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnkgfHwgaGVhZGVySWQuaWRcIlxuICBbYXR0ci5hcmlhLW93bnNdPVwiYXJpYU93bnNcIlxuICBbYXR0ci5yb2xlXT1cImFyaWFSb2xlT3JEZWZhdWx0XCJcbiAgKHdpbmRvdzpyZXNpemUpPVwid2luZG93UmVzaXplKClcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktbW9kYWwgc2t5LXNoYWRvdyBza3ktYm94IHNreS1lbGV2YXRpb24tMTYgc2t5LW1vZGFsLXt7IHNpemUgfX1cIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktbW9kYWwtdGlsZWQnOiB0aWxlZEJvZHksXG4gICAgICAnc2t5LW1vZGFsLXZpZXdrZWVwZXInOiB2aWV3a2VlcGVyRW5hYmxlZCgpXG4gICAgfVwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgekluZGV4OiBtb2RhbFpJbmRleFxuICAgIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktbW9kYWwtaGVhZGVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgJ2JveC1zaGFkb3cnOiBzY3JvbGxTaGFkb3c/LnRvcFNoYWRvd1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1tb2RhbC1oZWFkZXItY29udGVudFwiXG4gICAgICAgIHNreUlkXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LWZvbnQtaGVhZGluZy0yJzogc2l6ZSA9PT0gJ2Z1bGwtcGFnZSdcbiAgICAgICAgfVwiXG4gICAgICAgICNoZWFkZXJJZD1cInNreUlkXCJcbiAgICAgID5cbiAgICAgICAgQGlmIChoZWFkaW5nVGV4dCkge1xuICAgICAgICAgIDxza3ktbW9kYWwtaGVhZGVyPlxuICAgICAgICAgICAge3sgaGVhZGluZ1RleHQgfX1cbiAgICAgICAgICAgIEBpZiAoaGVscEtleSB8fCBoZWxwUG9wb3ZlckNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgPHNreS1oZWxwLWlubGluZVxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscFwiXG4gICAgICAgICAgICAgICAgW2hlbHBLZXldPVwiaGVscEtleVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsVGV4dF09XCJoZWFkaW5nVGV4dFwiXG4gICAgICAgICAgICAgICAgW3BvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgICAgICAgICAgICAgW3BvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NreS1tb2RhbC1oZWFkZXI+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1tb2RhbC1oZWFkZXJcIiAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktbW9kYWwtaGVhZGVyLWJ1dHRvbnNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwibGVnYWN5SGVscEtleVwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1tb2RhbC1idG4taGVscFwiXG4gICAgICAgICAgbmFtZT1cImhlbHAtYnV0dG9uXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9tb2RhbF9vcGVuX2hlbHAnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGVscEJ1dHRvbkNsaWNrKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uIGljb249XCJxdWVzdGlvbi1jaXJjbGVcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1tb2RhbC1idG4tY2xvc2VcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X21vZGFsX2Nsb3NlJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgKGNsaWNrKT1cImNsb3NlQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gaWNvbj1cImNsb3NlXCIgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1tb2RhbC1jb250ZW50IHNreS1wYWRkaW5nLWV2ZW4tbGFyZ2VcIlxuICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgc2t5SWRcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJoZWFkZXJJZC5pZFwiXG4gICAgICAoc2t5U2Nyb2xsU2hhZG93KT1cInNjcm9sbFNoYWRvd0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtza3lTY3JvbGxTaGFkb3dFbmFibGVkXT1cInNjcm9sbFNoYWRvd0VuYWJsZWRcIlxuICAgICAgI21vZGFsQ29udGVudElkPVwic2t5SWRcIlxuICAgICAgI21vZGFsQ29udGVudFdyYXBwZXJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbW9kYWwtY29udGVudFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktbW9kYWwtZm9vdGVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgJ2JveC1zaGFkb3cnOiBzY3JvbGxTaGFkb3c/LmJvdHRvbVNoYWRvd1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LW1vZGFsLWZvb3RlclwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ReplaySubject, Subject, BehaviorSubject } from 'rxjs';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { NgModule, InjectionToken, Component, ViewEncapsulation, Injectable,
|
|
3
|
+
import { NgModule, InjectionToken, Component, ViewEncapsulation, Injectable, inject, ChangeDetectorRef, ElementRef, HostBinding, Input, ViewChild, HostListener, Inject, EnvironmentInjector, ViewContainerRef, Directive } from '@angular/core';
|
|
4
4
|
import * as i1$2 from '@angular/common';
|
|
5
5
|
import { CommonModule } from '@angular/common';
|
|
6
6
|
import * as i1 from '@skyux/core';
|
|
7
|
-
import { SkyTrimModule,
|
|
7
|
+
import { SkyTrimModule, SkyCoreAdapterService, SkyDockService, SkyLiveAnnouncerService, SkyResizeObserverMediaQueryService, SkyAppWindowRef, SkyDockLocation, SkyIdModule, SkyScrollShadowDirective, SkyIdService, SkyDynamicComponentService, SkyMediaQueryService, SKY_STACKING_CONTEXT } from '@skyux/core';
|
|
8
8
|
import * as i5 from '@skyux/i18n';
|
|
9
9
|
import { SkyLibResourcesService, getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
|
|
10
10
|
import * as i1$1 from '@skyux/theme';
|
|
@@ -503,127 +503,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
503
503
|
}]
|
|
504
504
|
}], ctorParameters: () => [] });
|
|
505
505
|
|
|
506
|
-
/**
|
|
507
|
-
* Raises an event when the box shadow for the modal header or footer should be adjusted
|
|
508
|
-
* based on the scroll position of the host element.
|
|
509
|
-
* @internal
|
|
510
|
-
*/
|
|
511
|
-
class SkyModalScrollShadowDirective {
|
|
512
|
-
constructor() {
|
|
513
|
-
this.skyModalScrollShadow = new EventEmitter();
|
|
514
|
-
this.#ngUnsubscribe = new Subject();
|
|
515
|
-
this.#elRef = inject(ElementRef);
|
|
516
|
-
this.#mutationObserverSvc = inject(SkyMutationObserverService);
|
|
517
|
-
this.#ngZone = inject(NgZone);
|
|
518
|
-
this.#themeSvc = inject(SkyThemeService, { optional: true });
|
|
519
|
-
}
|
|
520
|
-
#currentShadow;
|
|
521
|
-
#currentTheme;
|
|
522
|
-
#mutationObserver;
|
|
523
|
-
#ngUnsubscribe;
|
|
524
|
-
#elRef;
|
|
525
|
-
#mutationObserverSvc;
|
|
526
|
-
#ngZone;
|
|
527
|
-
#themeSvc;
|
|
528
|
-
windowResize() {
|
|
529
|
-
this.#checkForShadow();
|
|
530
|
-
}
|
|
531
|
-
scroll() {
|
|
532
|
-
this.#checkForShadow();
|
|
533
|
-
}
|
|
534
|
-
ngOnInit() {
|
|
535
|
-
if (this.#themeSvc) {
|
|
536
|
-
this.#themeSvc.settingsChange
|
|
537
|
-
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
538
|
-
.subscribe((themeSettings) => {
|
|
539
|
-
this.#currentTheme = themeSettings.currentSettings.theme;
|
|
540
|
-
if (this.#currentTheme === SkyTheme.presets.modern) {
|
|
541
|
-
this.#initMutationObserver();
|
|
542
|
-
}
|
|
543
|
-
else {
|
|
544
|
-
this.#emitShadow({
|
|
545
|
-
bottomShadow: 'none',
|
|
546
|
-
topShadow: 'none',
|
|
547
|
-
});
|
|
548
|
-
this.#destroyMutationObserver();
|
|
549
|
-
}
|
|
550
|
-
});
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
ngOnDestroy() {
|
|
554
|
-
this.#ngUnsubscribe.next();
|
|
555
|
-
this.#ngUnsubscribe.complete();
|
|
556
|
-
this.#destroyMutationObserver();
|
|
557
|
-
}
|
|
558
|
-
#initMutationObserver() {
|
|
559
|
-
if (!this.#mutationObserver) {
|
|
560
|
-
const el = this.#elRef.nativeElement;
|
|
561
|
-
// MutationObserver is patched by Zone.js and therefore becomes part of the
|
|
562
|
-
// Angular change detection cycle, but this can lead to infinite loops in some
|
|
563
|
-
// scenarios. This will keep MutationObserver from triggering change detection.
|
|
564
|
-
this.#ngZone.runOutsideAngular(() => {
|
|
565
|
-
this.#mutationObserver = this.#mutationObserverSvc.create(() => {
|
|
566
|
-
this.#checkForShadow();
|
|
567
|
-
});
|
|
568
|
-
this.#mutationObserver.observe(el, {
|
|
569
|
-
attributes: true,
|
|
570
|
-
characterData: true,
|
|
571
|
-
childList: true,
|
|
572
|
-
subtree: true,
|
|
573
|
-
});
|
|
574
|
-
});
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
#destroyMutationObserver() {
|
|
578
|
-
if (this.#mutationObserver) {
|
|
579
|
-
this.#mutationObserver.disconnect();
|
|
580
|
-
this.#mutationObserver = undefined;
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
#checkForShadow() {
|
|
584
|
-
if (this.#currentTheme === SkyTheme.presets.modern) {
|
|
585
|
-
const el = this.#elRef.nativeElement;
|
|
586
|
-
const topShadow = this.#buildShadowStyle(el.scrollTop);
|
|
587
|
-
const bottomShadow = this.#buildShadowStyle(el.scrollHeight - el.scrollTop - el.clientHeight);
|
|
588
|
-
this.#emitShadow({
|
|
589
|
-
bottomShadow,
|
|
590
|
-
topShadow,
|
|
591
|
-
});
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
#buildShadowStyle(pixelsFromEnd) {
|
|
595
|
-
// Progressively darken the shadow until the user scrolls 30 pixels from the top or bottom
|
|
596
|
-
// of the scrollable element, with a max opacity of 0.3.
|
|
597
|
-
const opacity = Math.min(pixelsFromEnd / 30, 1) * 0.3;
|
|
598
|
-
return opacity > 0 ? `0px 1px 8px 0px rgba(0, 0, 0, ${opacity})` : 'none';
|
|
599
|
-
}
|
|
600
|
-
#emitShadow(shadow) {
|
|
601
|
-
if (!this.#currentShadow ||
|
|
602
|
-
this.#currentShadow.bottomShadow !== shadow.bottomShadow ||
|
|
603
|
-
this.#currentShadow.topShadow !== shadow.topShadow) {
|
|
604
|
-
this.skyModalScrollShadow.emit(shadow);
|
|
605
|
-
this.#currentShadow = shadow;
|
|
606
|
-
}
|
|
607
|
-
}
|
|
608
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyModalScrollShadowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
609
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: SkyModalScrollShadowDirective, isStandalone: true, selector: "[skyModalScrollShadow]", outputs: { skyModalScrollShadow: "skyModalScrollShadow" }, host: { listeners: { "window:resize": "windowResize()", "scroll": "scroll()" } }, ngImport: i0 }); }
|
|
610
|
-
}
|
|
611
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyModalScrollShadowDirective, decorators: [{
|
|
612
|
-
type: Directive,
|
|
613
|
-
args: [{
|
|
614
|
-
standalone: true,
|
|
615
|
-
selector: '[skyModalScrollShadow]',
|
|
616
|
-
}]
|
|
617
|
-
}], propDecorators: { skyModalScrollShadow: [{
|
|
618
|
-
type: Output
|
|
619
|
-
}], windowResize: [{
|
|
620
|
-
type: HostListener,
|
|
621
|
-
args: ['window:resize']
|
|
622
|
-
}], scroll: [{
|
|
623
|
-
type: HostListener,
|
|
624
|
-
args: ['scroll']
|
|
625
|
-
}] } });
|
|
626
|
-
|
|
627
506
|
const ARIA_ROLE_DEFAULT = 'dialog';
|
|
628
507
|
/**
|
|
629
508
|
* Provides a common look-and-feel for modal content with options to display
|
|
@@ -686,10 +565,16 @@ class SkyModalComponent {
|
|
|
686
565
|
* the modal service before executing assertions.
|
|
687
566
|
*/
|
|
688
567
|
#config;
|
|
568
|
+
#themeSvc;
|
|
689
569
|
constructor() {
|
|
690
570
|
this.ariaRoleOrDefault = ARIA_ROLE_DEFAULT;
|
|
691
571
|
this.ariaOwns = null;
|
|
692
572
|
this.modalState = 'in';
|
|
573
|
+
this.scrollShadow = {
|
|
574
|
+
bottomShadow: 'none',
|
|
575
|
+
topShadow: 'none',
|
|
576
|
+
};
|
|
577
|
+
this.scrollShadowEnabled = false;
|
|
693
578
|
this.#ngUnsubscribe = new Subject();
|
|
694
579
|
this.#changeDetector = inject(ChangeDetectorRef);
|
|
695
580
|
this.#componentAdapter = inject(SkyModalComponentAdapterService);
|
|
@@ -711,6 +596,7 @@ class SkyModalComponent {
|
|
|
711
596
|
*/
|
|
712
597
|
this.#config = inject(SkyModalConfiguration, { optional: true }) ??
|
|
713
598
|
new SkyModalConfiguration();
|
|
599
|
+
this.#themeSvc = inject(SkyThemeService, { optional: true });
|
|
714
600
|
this.ariaDescribedBy = this.#config.ariaDescribedBy;
|
|
715
601
|
this.ariaLabelledBy = this.#config.ariaLabelledBy;
|
|
716
602
|
this.ariaRole = this.#config.ariaRole;
|
|
@@ -774,6 +660,14 @@ class SkyModalComponent {
|
|
|
774
660
|
this.#changeDetector.markForCheck();
|
|
775
661
|
}
|
|
776
662
|
});
|
|
663
|
+
if (this.#themeSvc) {
|
|
664
|
+
this.#themeSvc.settingsChange
|
|
665
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
666
|
+
.subscribe((themeSettings) => {
|
|
667
|
+
this.scrollShadowEnabled =
|
|
668
|
+
themeSettings.currentSettings.theme === SkyTheme.presets.modern;
|
|
669
|
+
});
|
|
670
|
+
}
|
|
777
671
|
}
|
|
778
672
|
ngAfterViewInit() {
|
|
779
673
|
this.#componentAdapter.handleWindowChange(this.#elRef);
|
|
@@ -827,7 +721,7 @@ class SkyModalComponent {
|
|
|
827
721
|
SkyModalComponentAdapterService,
|
|
828
722
|
SkyModalErrorsService,
|
|
829
723
|
SkyDockService,
|
|
830
|
-
], viewQueries: [{ propertyName: "modalContentWrapperElement", first: true, predicate: ["modalContentWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sky-modal-dialog\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"ariaDescribedBy || modalContentId.id\"\n [attr.aria-labelledby]=\"ariaLabelledBy || headerId.id\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.role]=\"ariaRoleOrDefault\"\n (window:resize)=\"windowResize()\"\n>\n <div\n class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n tabindex=\"-1\"\n [ngClass]=\"{\n 'sky-modal-tiled': tiledBody,\n 'sky-modal-viewkeeper': viewkeeperEnabled()\n }\"\n [ngStyle]=\"{\n zIndex: modalZIndex\n }\"\n >\n <div\n class=\"sky-modal-header\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.topShadow\n }\"\n >\n <div\n class=\"sky-modal-header-content\"\n skyId\n [ngClass]=\"{\n 'sky-font-heading-2': size === 'full-page'\n }\"\n #headerId=\"skyId\"\n >\n @if (headingText) {\n <sky-modal-header>\n {{ headingText }}\n @if (helpKey || helpPopoverContent) {\n <sky-help-inline\n class=\"sky-control-help\"\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n </sky-modal-header>\n } @else {\n <ng-content select=\"sky-modal-header\" />\n }\n </div>\n <div class=\"sky-modal-header-buttons\">\n <button\n *ngIf=\"legacyHelpKey\"\n class=\"sky-btn sky-modal-btn-help\"\n name=\"help-button\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n (click)=\"helpButtonClick()\"\n >\n <sky-icon icon=\"question-circle\" />\n </button>\n\n <button\n type=\"button\"\n class=\"sky-btn sky-modal-btn-close\"\n [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n (click)=\"closeButtonClick()\"\n >\n <sky-icon icon=\"close\" />\n </button>\n </div>\n </div>\n <div\n class=\"sky-modal-content sky-padding-even-large\"\n role=\"region\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"headerId.id\"\n (
|
|
724
|
+
], viewQueries: [{ propertyName: "modalContentWrapperElement", first: true, predicate: ["modalContentWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sky-modal-dialog\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"ariaDescribedBy || modalContentId.id\"\n [attr.aria-labelledby]=\"ariaLabelledBy || headerId.id\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.role]=\"ariaRoleOrDefault\"\n (window:resize)=\"windowResize()\"\n>\n <div\n class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n tabindex=\"-1\"\n [ngClass]=\"{\n 'sky-modal-tiled': tiledBody,\n 'sky-modal-viewkeeper': viewkeeperEnabled()\n }\"\n [ngStyle]=\"{\n zIndex: modalZIndex\n }\"\n >\n <div\n class=\"sky-modal-header\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.topShadow\n }\"\n >\n <div\n class=\"sky-modal-header-content\"\n skyId\n [ngClass]=\"{\n 'sky-font-heading-2': size === 'full-page'\n }\"\n #headerId=\"skyId\"\n >\n @if (headingText) {\n <sky-modal-header>\n {{ headingText }}\n @if (helpKey || helpPopoverContent) {\n <sky-help-inline\n class=\"sky-control-help\"\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n </sky-modal-header>\n } @else {\n <ng-content select=\"sky-modal-header\" />\n }\n </div>\n <div class=\"sky-modal-header-buttons\">\n <button\n *ngIf=\"legacyHelpKey\"\n class=\"sky-btn sky-modal-btn-help\"\n name=\"help-button\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n (click)=\"helpButtonClick()\"\n >\n <sky-icon icon=\"question-circle\" />\n </button>\n\n <button\n type=\"button\"\n class=\"sky-btn sky-modal-btn-close\"\n [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n (click)=\"closeButtonClick()\"\n >\n <sky-icon icon=\"close\" />\n </button>\n </div>\n </div>\n <div\n class=\"sky-modal-content sky-padding-even-large\"\n role=\"region\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"headerId.id\"\n (skyScrollShadow)=\"scrollShadowChange($event)\"\n [skyScrollShadowEnabled]=\"scrollShadowEnabled\"\n #modalContentId=\"skyId\"\n #modalContentWrapper\n >\n <ng-content select=\"sky-modal-content\" />\n </div>\n <div\n class=\"sky-modal-footer\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.bottomShadow\n }\"\n >\n <ng-content select=\"sky-modal-footer\" />\n </div>\n </div>\n</div>\n", styles: [".sky-modal{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;position:fixed;width:auto;left:0;right:0;top:20px;margin:10px;display:flex;flex-direction:column;overflow:hidden}.sky-modal:focus{outline:none}.sky-modal-header:has(.sky-modal-header-content:empty){display:none}@media (min-width: 768px){.sky-modal:not(.sky-modal-large){margin:0 auto}.sky-modal-small{width:300px}.sky-modal-small .sky-modal-content,.sky-modal-small .sky-modal-header,.sky-modal-small .sky-modal-footer{max-width:300px}.sky-modal-medium{width:600px}.sky-modal-medium .sky-modal-content,.sky-modal-medium .sky-modal-header,.sky-modal-medium .sky-modal-footer{max-width:600px}}@media (min-width: 920px){.sky-modal-large{margin:0 auto;width:900px}.sky-modal-large .sky-modal-content,.sky-modal-large .sky-modal-header,.sky-modal-large .sky-modal-footer{max-width:900px}}.sky-modal-content{background-color:#fff;--sky-background-color-page-default: #fff}.sky-modal-content:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-tiled .sky-modal-content{background-color:#eeeeef;--sky-background-color-page-default: $sky-background-color-neutral-light}.sky-modal-tiled .sky-modal-content ::ng-deep .sky-tile-title{font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:var(--sky-text-color-deemphasized);font-weight:300;font-size:19px}.sky-modal-header{padding:9px 3px 9px 15px;background-color:#fff;display:flex;align-items:baseline;border-bottom:1px solid #e2e3e4}.sky-modal-header-buttons{flex-shrink:.0001}.sky-modal-header-buttons .sky-btn{border:none;color:#cdcfd2;cursor:pointer}.sky-modal-header-buttons .sky-btn:hover{color:#979ba2;transition:color .15s}.sky-modal-header-content{flex-grow:1}.sky-modal-header{flex-shrink:0;z-index:2}.sky-modal-content{overflow-y:auto}.sky-modal-footer{flex-shrink:0;z-index:2}.sky-modal-full-page{width:100%;top:0;margin:0}.sky-modal-full-page .sky-modal-header-buttons sky-icon[icon=close]{font-size:20px}.sky-modal-full-page .sky-modal-content{flex-grow:1}.sky-modal-content>::ng-deep sky-dock{bottom:-15px;margin-left:-15px;margin-bottom:-15px;padding-top:15px;width:calc(100% + 30px)}:host-context(.sky-theme-modern) .sky-modal-header{border:none;padding:20px 30px}:host-context(.sky-theme-modern) .sky-modal-btn-help,:host-context(.sky-theme-modern) .sky-modal-btn-close{display:none}:host-context(.sky-theme-modern) .sky-modal-content{padding:0}:host-context(.sky-theme-modern) .sky-modal-full-page{width:calc(100% - 60px);margin:30px}:host-context(.sky-theme-modern) .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;--sky-background-color-page-default: #fff;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-modal-header{border:none;padding:20px 30px}.sky-theme-modern .sky-modal-btn-help,.sky-theme-modern .sky-modal-btn-close{display:none}.sky-theme-modern .sky-modal-content{padding:0}.sky-theme-modern .sky-modal-full-page{width:calc(100% - 60px);margin:30px}.sky-theme-modern .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;--sky-background-color-page-default: #fff;padding-left:30px;padding-right:30px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal{border-color:#121212}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header{color:#fbfcfe}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-content{background-color:transparent;--sky-background-color-page-default: $sky-theme-modern-mode-dark-background-color-page-default}.sky-theme-modern.sky-theme-mode-dark .sky-modal{border-color:#121212}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header,.sky-theme-modern.sky-theme-mode-dark .sky-modal-content{background-color:transparent;--sky-background-color-page-default: $sky-theme-modern-mode-dark-background-color-page-default}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SkyHelpInlineModule }, { kind: "component", type: i2.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "ngmodule", type: SkyIconModule }, { kind: "component", type: i3.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "directive", type: i1.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: SkyModalHeaderComponent, selector: "sky-modal-header" }, { kind: "directive", type: SkyScrollShadowDirective, selector: "[skyScrollShadow]", inputs: ["skyScrollShadowEnabled"], outputs: ["skyScrollShadow"] }, { kind: "ngmodule", type: SkyModalsResourcesModule }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }] }); }
|
|
831
725
|
}
|
|
832
726
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyModalComponent, decorators: [{
|
|
833
727
|
type: Component,
|
|
@@ -841,9 +735,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
841
735
|
SkyIconModule,
|
|
842
736
|
SkyIdModule,
|
|
843
737
|
SkyModalHeaderComponent,
|
|
844
|
-
|
|
738
|
+
SkyScrollShadowDirective,
|
|
845
739
|
SkyModalsResourcesModule,
|
|
846
|
-
], template: "<div\n class=\"sky-modal-dialog\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"ariaDescribedBy || modalContentId.id\"\n [attr.aria-labelledby]=\"ariaLabelledBy || headerId.id\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.role]=\"ariaRoleOrDefault\"\n (window:resize)=\"windowResize()\"\n>\n <div\n class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n tabindex=\"-1\"\n [ngClass]=\"{\n 'sky-modal-tiled': tiledBody,\n 'sky-modal-viewkeeper': viewkeeperEnabled()\n }\"\n [ngStyle]=\"{\n zIndex: modalZIndex\n }\"\n >\n <div\n class=\"sky-modal-header\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.topShadow\n }\"\n >\n <div\n class=\"sky-modal-header-content\"\n skyId\n [ngClass]=\"{\n 'sky-font-heading-2': size === 'full-page'\n }\"\n #headerId=\"skyId\"\n >\n @if (headingText) {\n <sky-modal-header>\n {{ headingText }}\n @if (helpKey || helpPopoverContent) {\n <sky-help-inline\n class=\"sky-control-help\"\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n </sky-modal-header>\n } @else {\n <ng-content select=\"sky-modal-header\" />\n }\n </div>\n <div class=\"sky-modal-header-buttons\">\n <button\n *ngIf=\"legacyHelpKey\"\n class=\"sky-btn sky-modal-btn-help\"\n name=\"help-button\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n (click)=\"helpButtonClick()\"\n >\n <sky-icon icon=\"question-circle\" />\n </button>\n\n <button\n type=\"button\"\n class=\"sky-btn sky-modal-btn-close\"\n [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n (click)=\"closeButtonClick()\"\n >\n <sky-icon icon=\"close\" />\n </button>\n </div>\n </div>\n <div\n class=\"sky-modal-content sky-padding-even-large\"\n role=\"region\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"headerId.id\"\n (
|
|
740
|
+
], template: "<div\n class=\"sky-modal-dialog\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"ariaDescribedBy || modalContentId.id\"\n [attr.aria-labelledby]=\"ariaLabelledBy || headerId.id\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.role]=\"ariaRoleOrDefault\"\n (window:resize)=\"windowResize()\"\n>\n <div\n class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n tabindex=\"-1\"\n [ngClass]=\"{\n 'sky-modal-tiled': tiledBody,\n 'sky-modal-viewkeeper': viewkeeperEnabled()\n }\"\n [ngStyle]=\"{\n zIndex: modalZIndex\n }\"\n >\n <div\n class=\"sky-modal-header\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.topShadow\n }\"\n >\n <div\n class=\"sky-modal-header-content\"\n skyId\n [ngClass]=\"{\n 'sky-font-heading-2': size === 'full-page'\n }\"\n #headerId=\"skyId\"\n >\n @if (headingText) {\n <sky-modal-header>\n {{ headingText }}\n @if (helpKey || helpPopoverContent) {\n <sky-help-inline\n class=\"sky-control-help\"\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n </sky-modal-header>\n } @else {\n <ng-content select=\"sky-modal-header\" />\n }\n </div>\n <div class=\"sky-modal-header-buttons\">\n <button\n *ngIf=\"legacyHelpKey\"\n class=\"sky-btn sky-modal-btn-help\"\n name=\"help-button\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n (click)=\"helpButtonClick()\"\n >\n <sky-icon icon=\"question-circle\" />\n </button>\n\n <button\n type=\"button\"\n class=\"sky-btn sky-modal-btn-close\"\n [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n (click)=\"closeButtonClick()\"\n >\n <sky-icon icon=\"close\" />\n </button>\n </div>\n </div>\n <div\n class=\"sky-modal-content sky-padding-even-large\"\n role=\"region\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"headerId.id\"\n (skyScrollShadow)=\"scrollShadowChange($event)\"\n [skyScrollShadowEnabled]=\"scrollShadowEnabled\"\n #modalContentId=\"skyId\"\n #modalContentWrapper\n >\n <ng-content select=\"sky-modal-content\" />\n </div>\n <div\n class=\"sky-modal-footer\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.bottomShadow\n }\"\n >\n <ng-content select=\"sky-modal-footer\" />\n </div>\n </div>\n</div>\n", styles: [".sky-modal{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;position:fixed;width:auto;left:0;right:0;top:20px;margin:10px;display:flex;flex-direction:column;overflow:hidden}.sky-modal:focus{outline:none}.sky-modal-header:has(.sky-modal-header-content:empty){display:none}@media (min-width: 768px){.sky-modal:not(.sky-modal-large){margin:0 auto}.sky-modal-small{width:300px}.sky-modal-small .sky-modal-content,.sky-modal-small .sky-modal-header,.sky-modal-small .sky-modal-footer{max-width:300px}.sky-modal-medium{width:600px}.sky-modal-medium .sky-modal-content,.sky-modal-medium .sky-modal-header,.sky-modal-medium .sky-modal-footer{max-width:600px}}@media (min-width: 920px){.sky-modal-large{margin:0 auto;width:900px}.sky-modal-large .sky-modal-content,.sky-modal-large .sky-modal-header,.sky-modal-large .sky-modal-footer{max-width:900px}}.sky-modal-content{background-color:#fff;--sky-background-color-page-default: #fff}.sky-modal-content:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-tiled .sky-modal-content{background-color:#eeeeef;--sky-background-color-page-default: $sky-background-color-neutral-light}.sky-modal-tiled .sky-modal-content ::ng-deep .sky-tile-title{font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:var(--sky-text-color-deemphasized);font-weight:300;font-size:19px}.sky-modal-header{padding:9px 3px 9px 15px;background-color:#fff;display:flex;align-items:baseline;border-bottom:1px solid #e2e3e4}.sky-modal-header-buttons{flex-shrink:.0001}.sky-modal-header-buttons .sky-btn{border:none;color:#cdcfd2;cursor:pointer}.sky-modal-header-buttons .sky-btn:hover{color:#979ba2;transition:color .15s}.sky-modal-header-content{flex-grow:1}.sky-modal-header{flex-shrink:0;z-index:2}.sky-modal-content{overflow-y:auto}.sky-modal-footer{flex-shrink:0;z-index:2}.sky-modal-full-page{width:100%;top:0;margin:0}.sky-modal-full-page .sky-modal-header-buttons sky-icon[icon=close]{font-size:20px}.sky-modal-full-page .sky-modal-content{flex-grow:1}.sky-modal-content>::ng-deep sky-dock{bottom:-15px;margin-left:-15px;margin-bottom:-15px;padding-top:15px;width:calc(100% + 30px)}:host-context(.sky-theme-modern) .sky-modal-header{border:none;padding:20px 30px}:host-context(.sky-theme-modern) .sky-modal-btn-help,:host-context(.sky-theme-modern) .sky-modal-btn-close{display:none}:host-context(.sky-theme-modern) .sky-modal-content{padding:0}:host-context(.sky-theme-modern) .sky-modal-full-page{width:calc(100% - 60px);margin:30px}:host-context(.sky-theme-modern) .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;--sky-background-color-page-default: #fff;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-modal-header{border:none;padding:20px 30px}.sky-theme-modern .sky-modal-btn-help,.sky-theme-modern .sky-modal-btn-close{display:none}.sky-theme-modern .sky-modal-content{padding:0}.sky-theme-modern .sky-modal-full-page{width:calc(100% - 60px);margin:30px}.sky-theme-modern .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;--sky-background-color-page-default: #fff;padding-left:30px;padding-right:30px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal{border-color:#121212}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header{color:#fbfcfe}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-content{background-color:transparent;--sky-background-color-page-default: $sky-theme-modern-mode-dark-background-color-page-default}.sky-theme-modern.sky-theme-mode-dark .sky-modal{border-color:#121212}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header,.sky-theme-modern.sky-theme-mode-dark .sky-modal-content{background-color:transparent;--sky-background-color-page-default: $sky-theme-modern-mode-dark-background-color-page-default}\n"] }]
|
|
847
741
|
}], ctorParameters: () => [], propDecorators: { wrapperClass: [{
|
|
848
742
|
type: HostBinding,
|
|
849
743
|
args: ['class']
|