@ifsworld/granite-components 13.2.5 → 13.2.7
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/esm2022/lib/card-list/card-list.component.mjs +4 -3
- package/esm2022/lib/card-list/card-list.module.mjs +5 -4
- package/esm2022/lib/core/core.module.mjs +5 -2
- package/esm2022/lib/core/overlay-base.mjs +18 -0
- package/esm2022/lib/core/overlay-position-config.mjs +2 -0
- package/esm2022/lib/core/overlay-trigger-for-base.directive.mjs +121 -0
- package/esm2022/lib/core/overlay.service.mjs +90 -0
- package/esm2022/lib/menu/menu-base.mjs +5 -2
- package/esm2022/lib/menu/menu-trigger-for.directive.mjs +26 -4
- package/esm2022/lib/progress-bar/progress-bar-legend/progress-bar-legend.component.mjs +2 -2
- package/esm2022/lib/progress-bar/progress-bar-legend-base.mjs +10 -13
- package/esm2022/lib/progress-bar/progress-bar-legend-trigger-for.directive.mjs +30 -167
- package/fesm2022/ifsworld-granite-components.mjs +271 -161
- package/fesm2022/ifsworld-granite-components.mjs.map +1 -1
- package/lib/card-list/card-list.module.d.ts +2 -1
- package/lib/core/core.module.d.ts +2 -1
- package/lib/core/overlay-base.d.ts +16 -0
- package/lib/core/overlay-position-config.d.ts +12 -0
- package/lib/core/overlay-trigger-for-base.directive.d.ts +32 -0
- package/lib/core/overlay.service.d.ts +21 -0
- package/lib/menu/menu-base.d.ts +2 -1
- package/lib/menu/menu-trigger-for.directive.d.ts +8 -0
- package/lib/progress-bar/progress-bar-legend-base.d.ts +3 -12
- package/lib/progress-bar/progress-bar-legend-trigger-for.directive.d.ts +14 -37
- package/package.json +7 -7
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/cdk/scrolling";
|
|
3
4
|
export class GraniteCardListComponent {
|
|
4
5
|
constructor() {
|
|
5
6
|
/**Present cards in vertically or horizontally */
|
|
@@ -8,11 +9,11 @@ export class GraniteCardListComponent {
|
|
|
8
9
|
this.gap = 'small';
|
|
9
10
|
}
|
|
10
11
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: GraniteCardListComponent, selector: "granite-card-list", inputs: { orientation: "orientation", wrap: "wrap", gap: "gap" }, ngImport: i0, template: "<div\n class=\"card-list-wrapper\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.wrap]=\"wrap === 'wrap'\"\n [class.nowrap]=\"wrap === 'nowrap'\"\n [class.small]=\"gap === 'small'\"\n [class.medium]=\"gap === 'medium'\"\n [class.large]=\"gap === 'large'\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%}.card-list-wrapper{display:flex;flex-direction:row;padding:var(--granite-spacing-4)}.card-list-wrapper.horizontal.nowrap{overflow-x:auto}.card-list-wrapper.horizontal.wrap{overflow-y:auto}.card-list-wrapper.vertical{flex-direction:column}.card-list-wrapper.vertical.nowrap{overflow-y:auto}.card-list-wrapper.vertical.wrap{overflow-x:auto}.card-list-wrapper.small{gap:var(--granite-spacing-2)}.card-list-wrapper.medium{gap:var(--granite-spacing-4)}.card-list-wrapper.large{gap:var(--granite-spacing-8)}.card-list-wrapper.wrap{flex-wrap:wrap}.card-list-wrapper.nowrap{flex-wrap:nowrap}.card-list-wrapper::-webkit-scrollbar{width:calc(var(--granite-size-base-rem) * .25);height:calc(var(--granite-size-base-rem) * .25);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-thumb{background:var(--granite-color-border-hard);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-track{background:var(--granite-color-background-page)}\n"] }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: GraniteCardListComponent, selector: "granite-card-list", inputs: { orientation: "orientation", wrap: "wrap", gap: "gap" }, ngImport: i0, template: "<div\n class=\"card-list-wrapper\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.wrap]=\"wrap === 'wrap'\"\n [class.nowrap]=\"wrap === 'nowrap'\"\n [class.small]=\"gap === 'small'\"\n [class.medium]=\"gap === 'medium'\"\n [class.large]=\"gap === 'large'\"\n cdkScrollable\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%}.card-list-wrapper{display:flex;flex-direction:row;padding:var(--granite-spacing-4)}.card-list-wrapper.horizontal.nowrap{overflow-x:auto}.card-list-wrapper.horizontal.wrap{overflow-y:auto}.card-list-wrapper.vertical{flex-direction:column}.card-list-wrapper.vertical.nowrap{overflow-y:auto}.card-list-wrapper.vertical.wrap{overflow-x:auto}.card-list-wrapper.small{gap:var(--granite-spacing-2)}.card-list-wrapper.medium{gap:var(--granite-spacing-4)}.card-list-wrapper.large{gap:var(--granite-spacing-8)}.card-list-wrapper.wrap{flex-wrap:wrap}.card-list-wrapper.nowrap{flex-wrap:nowrap}.card-list-wrapper::-webkit-scrollbar{width:calc(var(--granite-size-base-rem) * .25);height:calc(var(--granite-size-base-rem) * .25);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-thumb{background:var(--granite-color-border-hard);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-track{background:var(--granite-color-background-page)}\n"], dependencies: [{ kind: "directive", type: i1.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }] }); }
|
|
12
13
|
}
|
|
13
14
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListComponent, decorators: [{
|
|
14
15
|
type: Component,
|
|
15
|
-
args: [{ selector: 'granite-card-list', template: "<div\n class=\"card-list-wrapper\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.wrap]=\"wrap === 'wrap'\"\n [class.nowrap]=\"wrap === 'nowrap'\"\n [class.small]=\"gap === 'small'\"\n [class.medium]=\"gap === 'medium'\"\n [class.large]=\"gap === 'large'\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%}.card-list-wrapper{display:flex;flex-direction:row;padding:var(--granite-spacing-4)}.card-list-wrapper.horizontal.nowrap{overflow-x:auto}.card-list-wrapper.horizontal.wrap{overflow-y:auto}.card-list-wrapper.vertical{flex-direction:column}.card-list-wrapper.vertical.nowrap{overflow-y:auto}.card-list-wrapper.vertical.wrap{overflow-x:auto}.card-list-wrapper.small{gap:var(--granite-spacing-2)}.card-list-wrapper.medium{gap:var(--granite-spacing-4)}.card-list-wrapper.large{gap:var(--granite-spacing-8)}.card-list-wrapper.wrap{flex-wrap:wrap}.card-list-wrapper.nowrap{flex-wrap:nowrap}.card-list-wrapper::-webkit-scrollbar{width:calc(var(--granite-size-base-rem) * .25);height:calc(var(--granite-size-base-rem) * .25);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-thumb{background:var(--granite-color-border-hard);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-track{background:var(--granite-color-background-page)}\n"] }]
|
|
16
|
+
args: [{ selector: 'granite-card-list', template: "<div\n class=\"card-list-wrapper\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.wrap]=\"wrap === 'wrap'\"\n [class.nowrap]=\"wrap === 'nowrap'\"\n [class.small]=\"gap === 'small'\"\n [class.medium]=\"gap === 'medium'\"\n [class.large]=\"gap === 'large'\"\n cdkScrollable\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%}.card-list-wrapper{display:flex;flex-direction:row;padding:var(--granite-spacing-4)}.card-list-wrapper.horizontal.nowrap{overflow-x:auto}.card-list-wrapper.horizontal.wrap{overflow-y:auto}.card-list-wrapper.vertical{flex-direction:column}.card-list-wrapper.vertical.nowrap{overflow-y:auto}.card-list-wrapper.vertical.wrap{overflow-x:auto}.card-list-wrapper.small{gap:var(--granite-spacing-2)}.card-list-wrapper.medium{gap:var(--granite-spacing-4)}.card-list-wrapper.large{gap:var(--granite-spacing-8)}.card-list-wrapper.wrap{flex-wrap:wrap}.card-list-wrapper.nowrap{flex-wrap:nowrap}.card-list-wrapper::-webkit-scrollbar{width:calc(var(--granite-size-base-rem) * .25);height:calc(var(--granite-size-base-rem) * .25);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-thumb{background:var(--granite-color-border-hard);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-track{background:var(--granite-color-background-page)}\n"] }]
|
|
16
17
|
}], propDecorators: { orientation: [{
|
|
17
18
|
type: Input
|
|
18
19
|
}], wrap: [{
|
|
@@ -20,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
20
21
|
}], gap: [{
|
|
21
22
|
type: Input
|
|
22
23
|
}] } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvY2FyZC1saXN0L2NhcmQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2NhcmQtbGlzdC9jYXJkLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU1qRCxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBTUUsaURBQWlEO1FBRWpELGdCQUFXLEdBQThCLFlBQVksQ0FBQztRQUd0RCxTQUFJLEdBQXNCLFFBQVEsQ0FBQztRQUduQyxRQUFHLEdBQWlDLE9BQU8sQ0FBQztLQUM3Qzs4R0FWWSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwySENOckMsdVlBYUE7OzJGRFBhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxtQkFBbUI7OEJBTzdCLFdBQVc7c0JBRFYsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhbml0ZS1jYXJkLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJ2NhcmQtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydjYXJkLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNhcmRMaXN0Q29tcG9uZW50IHtcbiAgLyoqUHJlc2VudCBjYXJkcyBpbiB2ZXJ0aWNhbGx5IG9yIGhvcml6b250YWxseSAqL1xuICBASW5wdXQoKVxuICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcblxuICBASW5wdXQoKVxuICB3cmFwOiAnd3JhcCcgfCAnbm93cmFwJyA9ICdub3dyYXAnO1xuXG4gIEBJbnB1dCgpXG4gIGdhcDogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdzbWFsbCc7XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiY2FyZC1saXN0LXdyYXBwZXJcIlxuICBbY2xhc3MudmVydGljYWxdPVwib3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCdcIlxuICBbY2xhc3MuaG9yaXpvbnRhbF09XCJvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnXCJcbiAgW2NsYXNzLndyYXBdPVwid3JhcCA9PT0gJ3dyYXAnXCJcbiAgW2NsYXNzLm5vd3JhcF09XCJ3cmFwID09PSAnbm93cmFwJ1wiXG4gIFtjbGFzcy5zbWFsbF09XCJnYXAgPT09ICdzbWFsbCdcIlxuICBbY2xhc3MubWVkaXVtXT1cImdhcCA9PT0gJ21lZGl1bSdcIlxuICBbY2xhc3MubGFyZ2VdPVwiZ2FwID09PSAnbGFyZ2UnXCJcbiAgY2RrU2Nyb2xsYWJsZVxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -10,6 +10,7 @@ import { GraniteCardFooterComponent } from './card/card-content/card-footer.comp
|
|
|
10
10
|
import { GraniteCardAvatarComponent } from './card/card-avatar.component';
|
|
11
11
|
import { GraniteCardHeaderTitleComponent } from './card/card-content/card-header-title.component';
|
|
12
12
|
import { GraniteCardHeaderSubTitleComponent } from './card/card-content/card-header-subtitle.component';
|
|
13
|
+
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
15
|
export class GraniteCardListModule {
|
|
15
16
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -22,7 +23,7 @@ export class GraniteCardListModule {
|
|
|
22
23
|
GraniteCardFooterComponent,
|
|
23
24
|
GraniteCardAvatarComponent,
|
|
24
25
|
GraniteCardHeaderTitleComponent,
|
|
25
|
-
GraniteCardHeaderSubTitleComponent], imports: [CommonModule], exports: [GraniteCardComponent,
|
|
26
|
+
GraniteCardHeaderSubTitleComponent], imports: [CommonModule, ScrollingModule], exports: [GraniteCardComponent,
|
|
26
27
|
GraniteCardListComponent,
|
|
27
28
|
GraniteCardContentComponent,
|
|
28
29
|
GraniteCardHeaderComponent,
|
|
@@ -32,7 +33,7 @@ export class GraniteCardListModule {
|
|
|
32
33
|
GraniteCardAvatarComponent,
|
|
33
34
|
GraniteCardHeaderTitleComponent,
|
|
34
35
|
GraniteCardHeaderSubTitleComponent] }); }
|
|
35
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListModule, imports: [CommonModule] }); }
|
|
36
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListModule, imports: [CommonModule, ScrollingModule] }); }
|
|
36
37
|
}
|
|
37
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListModule, decorators: [{
|
|
38
39
|
type: NgModule,
|
|
@@ -49,7 +50,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
49
50
|
GraniteCardHeaderTitleComponent,
|
|
50
51
|
GraniteCardHeaderSubTitleComponent,
|
|
51
52
|
],
|
|
52
|
-
imports: [CommonModule],
|
|
53
|
+
imports: [CommonModule, ScrollingModule],
|
|
53
54
|
exports: [
|
|
54
55
|
GraniteCardComponent,
|
|
55
56
|
GraniteCardListComponent,
|
|
@@ -64,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
64
65
|
],
|
|
65
66
|
}]
|
|
66
67
|
}] });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvY2FyZC1saXN0L2NhcmQtbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbEcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQTZCekQsTUFBTSxPQUFPLHFCQUFxQjs4R0FBckIscUJBQXFCOytHQUFyQixxQkFBcUIsaUJBekI5QixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLDJCQUEyQjtZQUMzQiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLHdCQUF3QjtZQUN4QiwwQkFBMEI7WUFDMUIsMEJBQTBCO1lBQzFCLCtCQUErQjtZQUMvQixrQ0FBa0MsYUFFMUIsWUFBWSxFQUFFLGVBQWUsYUFFckMsb0JBQW9CO1lBQ3BCLHdCQUF3QjtZQUN4QiwyQkFBMkI7WUFDM0IsMEJBQTBCO1lBQzFCLHdCQUF3QjtZQUN4QiwyQkFBMkI7WUFDM0IsMEJBQTBCO1lBQzFCLDBCQUEwQjtZQUMxQiwrQkFBK0I7WUFDL0Isa0NBQWtDOytHQUd6QixxQkFBcUIsWUFkdEIsWUFBWSxFQUFFLGVBQWU7OzJGQWM1QixxQkFBcUI7a0JBM0JqQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQiwwQkFBMEI7d0JBQzFCLDJCQUEyQjt3QkFDM0Isd0JBQXdCO3dCQUN4QiwwQkFBMEI7d0JBQzFCLDBCQUEwQjt3QkFDMUIsK0JBQStCO3dCQUMvQixrQ0FBa0M7cUJBQ25DO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQiwwQkFBMEI7d0JBQzFCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQiwwQkFBMEI7d0JBQzFCLDBCQUEwQjt3QkFDMUIsK0JBQStCO3dCQUMvQixrQ0FBa0M7cUJBQ25DO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHcmFuaXRlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vY2FyZC9jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlQ2FyZExpc3RDb21wb25lbnQgfSBmcm9tICcuL2NhcmQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jhbml0ZUNhcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQtY29udGVudC9jYXJkLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEdyYW5pdGVDYXJkSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQtY29udGVudC9jYXJkLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jhbml0ZUNhcmRBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQtY29udGVudC9jYXJkLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IEdyYW5pdGVDYXJkQm9keUNvbXBvbmVudCB9IGZyb20gJy4vY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlQ2FyZEZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdyYW5pdGVDYXJkQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQtYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlQ2FyZEhlYWRlclRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQtY29udGVudC9jYXJkLWhlYWRlci10aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jhbml0ZUNhcmRIZWFkZXJTdWJUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1oZWFkZXItc3VidGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBHcmFuaXRlQ2FyZENvbXBvbmVudCxcbiAgICBHcmFuaXRlQ2FyZExpc3RDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRDb250ZW50Q29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkSGVhZGVyQ29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkQWN0aW9uc0NvbXBvbmVudCxcbiAgICBHcmFuaXRlQ2FyZEJvZHlDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRGb290ZXJDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRBdmF0YXJDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRIZWFkZXJUaXRsZUNvbXBvbmVudCxcbiAgICBHcmFuaXRlQ2FyZEhlYWRlclN1YlRpdGxlQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTY3JvbGxpbmdNb2R1bGVdLFxuICBleHBvcnRzOiBbXG4gICAgR3Jhbml0ZUNhcmRDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRMaXN0Q29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkQ29udGVudENvbXBvbmVudCxcbiAgICBHcmFuaXRlQ2FyZEhlYWRlckNvbXBvbmVudCxcbiAgICBHcmFuaXRlQ2FyZEJvZHlDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRBY3Rpb25zQ29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkRm9vdGVyQ29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkQXZhdGFyQ29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkSGVhZGVyVGl0bGVDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRIZWFkZXJTdWJUaXRsZUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNhcmRMaXN0TW9kdWxlIHt9XG4iXX0=
|
|
@@ -4,6 +4,7 @@ import { ClientOutputTouchDirective } from './devices/client-output-touch.direct
|
|
|
4
4
|
import { ClientInputDesktopDirective } from './devices/client-input-desktop.directive';
|
|
5
5
|
import { ClientInputTouchDirective } from './devices/client-input-touch.directive';
|
|
6
6
|
import { GraniteHideOnOverflowDirective } from './hide-on-overflow.directive';
|
|
7
|
+
import { GraniteOverlayTriggerForBaseDirective } from './overlay-trigger-for-base.directive';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
// TODO: Move client devices into a separate module
|
|
9
10
|
export class GraniteCoreModule {
|
|
@@ -12,7 +13,8 @@ export class GraniteCoreModule {
|
|
|
12
13
|
ClientOutputTouchDirective,
|
|
13
14
|
ClientInputDesktopDirective,
|
|
14
15
|
ClientInputTouchDirective,
|
|
15
|
-
GraniteHideOnOverflowDirective
|
|
16
|
+
GraniteHideOnOverflowDirective,
|
|
17
|
+
GraniteOverlayTriggerForBaseDirective], exports: [ClientOutputDesktopDirective,
|
|
16
18
|
ClientOutputTouchDirective,
|
|
17
19
|
ClientInputDesktopDirective,
|
|
18
20
|
ClientInputTouchDirective,
|
|
@@ -28,6 +30,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
28
30
|
ClientInputDesktopDirective,
|
|
29
31
|
ClientInputTouchDirective,
|
|
30
32
|
GraniteHideOnOverflowDirective,
|
|
33
|
+
GraniteOverlayTriggerForBaseDirective,
|
|
31
34
|
],
|
|
32
35
|
exports: [
|
|
33
36
|
ClientOutputDesktopDirective,
|
|
@@ -38,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
38
41
|
],
|
|
39
42
|
}]
|
|
40
43
|
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2NvcmUvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFFN0YsbURBQW1EO0FBbUJuRCxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFmMUIsNEJBQTRCO1lBQzVCLDBCQUEwQjtZQUMxQiwyQkFBMkI7WUFDM0IseUJBQXlCO1lBQ3pCLDhCQUE4QjtZQUM5QixxQ0FBcUMsYUFHckMsNEJBQTRCO1lBQzVCLDBCQUEwQjtZQUMxQiwyQkFBMkI7WUFDM0IseUJBQXlCO1lBQ3pCLDhCQUE4QjsrR0FHckIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQWpCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osNEJBQTRCO3dCQUM1QiwwQkFBMEI7d0JBQzFCLDJCQUEyQjt3QkFDM0IseUJBQXlCO3dCQUN6Qiw4QkFBOEI7d0JBQzlCLHFDQUFxQztxQkFDdEM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDRCQUE0Qjt3QkFDNUIsMEJBQTBCO3dCQUMxQiwyQkFBMkI7d0JBQzNCLHlCQUF5Qjt3QkFDekIsOEJBQThCO3FCQUMvQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbGllbnRPdXRwdXREZXNrdG9wRGlyZWN0aXZlIH0gZnJvbSAnLi9kZXZpY2VzL2NsaWVudC1vdXRwdXQtZGVza3RvcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2xpZW50T3V0cHV0VG91Y2hEaXJlY3RpdmUgfSBmcm9tICcuL2RldmljZXMvY2xpZW50LW91dHB1dC10b3VjaC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2xpZW50SW5wdXREZXNrdG9wRGlyZWN0aXZlIH0gZnJvbSAnLi9kZXZpY2VzL2NsaWVudC1pbnB1dC1kZXNrdG9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDbGllbnRJbnB1dFRvdWNoRGlyZWN0aXZlIH0gZnJvbSAnLi9kZXZpY2VzL2NsaWVudC1pbnB1dC10b3VjaC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgR3Jhbml0ZUhpZGVPbk92ZXJmbG93RGlyZWN0aXZlIH0gZnJvbSAnLi9oaWRlLW9uLW92ZXJmbG93LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBHcmFuaXRlT3ZlcmxheVRyaWdnZXJGb3JCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9vdmVybGF5LXRyaWdnZXItZm9yLWJhc2UuZGlyZWN0aXZlJztcblxuLy8gVE9ETzogTW92ZSBjbGllbnQgZGV2aWNlcyBpbnRvIGEgc2VwYXJhdGUgbW9kdWxlXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENsaWVudE91dHB1dERlc2t0b3BEaXJlY3RpdmUsXG4gICAgQ2xpZW50T3V0cHV0VG91Y2hEaXJlY3RpdmUsXG4gICAgQ2xpZW50SW5wdXREZXNrdG9wRGlyZWN0aXZlLFxuICAgIENsaWVudElucHV0VG91Y2hEaXJlY3RpdmUsXG4gICAgR3Jhbml0ZUhpZGVPbk92ZXJmbG93RGlyZWN0aXZlLFxuICAgIEdyYW5pdGVPdmVybGF5VHJpZ2dlckZvckJhc2VEaXJlY3RpdmUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBDbGllbnRPdXRwdXREZXNrdG9wRGlyZWN0aXZlLFxuICAgIENsaWVudE91dHB1dFRvdWNoRGlyZWN0aXZlLFxuICAgIENsaWVudElucHV0RGVza3RvcERpcmVjdGl2ZSxcbiAgICBDbGllbnRJbnB1dFRvdWNoRGlyZWN0aXZlLFxuICAgIEdyYW5pdGVIaWRlT25PdmVyZmxvd0RpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNvcmVNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Directive, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class OverlayBaseComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.xPosition = 'after';
|
|
6
|
+
this.yPosition = 'below';
|
|
7
|
+
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: OverlayBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
9
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: OverlayBaseComponent, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: OverlayBaseComponent, decorators: [{
|
|
12
|
+
type: Directive,
|
|
13
|
+
args: [{}]
|
|
14
|
+
}], propDecorators: { templateRef: [{
|
|
15
|
+
type: ViewChild,
|
|
16
|
+
args: [TemplateRef]
|
|
17
|
+
}] } });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9jb3JlL292ZXJsYXktYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVWxFLE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFJRSxjQUFTLEdBQWMsT0FBTyxDQUFDO1FBRS9CLGNBQVMsR0FBYyxPQUFPLENBQUM7S0FPaEM7OEdBWlksb0JBQW9CO2tHQUFwQixvQkFBb0IsdUVBQ3BCLFdBQVc7OzJGQURYLG9CQUFvQjtrQkFEaEMsU0FBUzttQkFBQyxFQUFFOzhCQUVhLFdBQVc7c0JBQWxDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2xpZW50SW5wdXRJbnRlcmZhY2UsXG4gIENsaWVudE91dHB1dEludGVyZmFjZSxcbn0gZnJvbSAnLi9jbGllbnQtZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvblggPSAnYmVmb3JlJyB8ICdhZnRlcic7XG5leHBvcnQgdHlwZSBQb3NpdGlvblkgPSAnYWJvdmUnIHwgJ2JlbG93JztcblxuQERpcmVjdGl2ZSh7fSlcbmV4cG9ydCBjbGFzcyBPdmVybGF5QmFzZUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHhQb3NpdGlvbjogUG9zaXRpb25YID0gJ2FmdGVyJztcblxuICB5UG9zaXRpb246IFBvc2l0aW9uWSA9ICdiZWxvdyc7XG5cbiAgZGlyZWN0aW9uOiBEaXJlY3Rpb247XG5cbiAgY2xpZW50SW5wdXQ6IENsaWVudElucHV0SW50ZXJmYWNlO1xuXG4gIGNsaWVudE91dHB1dDogQ2xpZW50T3V0cHV0SW50ZXJmYWNlO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2NvcmUvb3ZlcmxheS1wb3NpdGlvbi1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheVBvc2l0aW9uQ29uZmlnIHtcbiAgb3JpZ2luWD86ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBvcmlnaW5GYWxsYmFja1g/OiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJztcbiAgb3JpZ2luWT86ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJztcbiAgb3JpZ2luRmFsbGJhY2tZPzogJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nO1xuICBvdmVybGF5WD86ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBvdmVybGF5RmFsbGJhY2tYPzogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIG92ZXJsYXlZPzogJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nO1xuICBvdmVybGF5RmFsbGJhY2tZPzogJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nO1xuICBvZmZzZXRYPzogbnVtYmVyO1xuICBvZmZzZXRZPzogbnVtYmVyO1xufVxuIl19
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { Overlay, OverlayConfig, } from '@angular/cdk/overlay';
|
|
2
|
+
import { Directive, ElementRef, inject, Optional, ViewContainerRef, } from '@angular/core';
|
|
3
|
+
import { GRANITE_CLIENT_INPUT, GRANITE_CLIENT_OUTPUT, } from './client-environment';
|
|
4
|
+
import { Directionality } from '@angular/cdk/bidi';
|
|
5
|
+
import { OverlayService } from './overlay.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class GraniteOverlayTriggerForBaseDirective {
|
|
8
|
+
constructor() {
|
|
9
|
+
/** Client output device information */
|
|
10
|
+
this._clientOutput = inject(GRANITE_CLIENT_OUTPUT);
|
|
11
|
+
/** Client input device information */
|
|
12
|
+
this._clientInput = inject(GRANITE_CLIENT_INPUT);
|
|
13
|
+
this._dir = inject(Directionality);
|
|
14
|
+
this.offsetX = 0;
|
|
15
|
+
this.offsetY = 0;
|
|
16
|
+
this._overlayRef = null;
|
|
17
|
+
this._overlay = inject(Overlay);
|
|
18
|
+
this._element = inject((ElementRef));
|
|
19
|
+
this._viewContainerRef = inject(ViewContainerRef);
|
|
20
|
+
this._overlayService = inject(OverlayService);
|
|
21
|
+
}
|
|
22
|
+
ngOnDestroy() {
|
|
23
|
+
if (this._overlayRef) {
|
|
24
|
+
this._overlayRef.dispose();
|
|
25
|
+
this._overlayRef = null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
getPositionConfig() {
|
|
29
|
+
const [originX, originFallbackX] = this.componentRef.xPosition === 'before'
|
|
30
|
+
? ['end', 'start']
|
|
31
|
+
: ['start', 'end'];
|
|
32
|
+
const [overlayY, overlayFallbackY] = this.componentRef.yPosition === 'above'
|
|
33
|
+
? ['bottom', 'top']
|
|
34
|
+
: ['top', 'bottom'];
|
|
35
|
+
let [originY, originFallbackY] = [overlayY, overlayFallbackY];
|
|
36
|
+
const [overlayX, overlayFallbackX] = [originX, originFallbackX];
|
|
37
|
+
originY = overlayY === 'top' ? 'bottom' : 'top';
|
|
38
|
+
originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';
|
|
39
|
+
return {
|
|
40
|
+
originX,
|
|
41
|
+
originFallbackX,
|
|
42
|
+
originY,
|
|
43
|
+
originFallbackY,
|
|
44
|
+
overlayX,
|
|
45
|
+
overlayFallbackX,
|
|
46
|
+
overlayY,
|
|
47
|
+
overlayFallbackY,
|
|
48
|
+
offsetX: this.offsetX,
|
|
49
|
+
offsetY: this.offsetY,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
getPositionStrategy() {
|
|
53
|
+
let positionStrategy = this._overlayService.desktopPositionStrategy(this._element, this.selector);
|
|
54
|
+
const positionConfig = this.getPositionConfig();
|
|
55
|
+
positionStrategy = this._overlayService.setPosition(positionStrategy, positionConfig);
|
|
56
|
+
return positionStrategy;
|
|
57
|
+
}
|
|
58
|
+
getScrollStrategy() {
|
|
59
|
+
return this.setScrollStrategy('close');
|
|
60
|
+
}
|
|
61
|
+
setScrollStrategy(scrollStrategy) {
|
|
62
|
+
switch (scrollStrategy) {
|
|
63
|
+
case 'reposition':
|
|
64
|
+
return this._overlay.scrollStrategies.reposition();
|
|
65
|
+
case 'block':
|
|
66
|
+
return this._overlay.scrollStrategies.block();
|
|
67
|
+
case 'close':
|
|
68
|
+
return this._overlay.scrollStrategies.close();
|
|
69
|
+
default:
|
|
70
|
+
return this._overlay.scrollStrategies.close();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
toggleOverlay(isOpen) {
|
|
74
|
+
isOpen ? this._closeOverlay() : this._openOverlay();
|
|
75
|
+
return !isOpen;
|
|
76
|
+
}
|
|
77
|
+
onOutsideClick() {
|
|
78
|
+
this._closeOverlay();
|
|
79
|
+
}
|
|
80
|
+
_openOverlay() {
|
|
81
|
+
this.componentRef.direction = this._dir.value === 'rtl' ? 'rtl' : 'ltr';
|
|
82
|
+
this.componentRef.clientInput = this._clientInput;
|
|
83
|
+
this.componentRef.clientOutput = this._clientOutput;
|
|
84
|
+
const panelClass = [];
|
|
85
|
+
if (this._clientOutput?.device === 'touch') {
|
|
86
|
+
panelClass.push('granite-overlay-pane-center');
|
|
87
|
+
}
|
|
88
|
+
const hasBackdrop = this._clientOutput?.device === 'touch';
|
|
89
|
+
const config = new OverlayConfig({
|
|
90
|
+
positionStrategy: this.getPositionStrategy(),
|
|
91
|
+
backdropClass: 'granite-overlay-dark-glass-backdrop',
|
|
92
|
+
scrollStrategy: this.getScrollStrategy(),
|
|
93
|
+
direction: this._dir,
|
|
94
|
+
panelClass,
|
|
95
|
+
hasBackdrop,
|
|
96
|
+
});
|
|
97
|
+
this._overlayRef = this._overlayService.createOverlay(config, this.componentRef, this._viewContainerRef);
|
|
98
|
+
this._overlayService.subscribeOutsideClick(this._overlayRef, () => this.onOutsideClick());
|
|
99
|
+
}
|
|
100
|
+
_closeOverlay() {
|
|
101
|
+
if (!this._overlayRef) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
this._overlayService.closeOverlay(this._overlayRef, this._element);
|
|
105
|
+
}
|
|
106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteOverlayTriggerForBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
107
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: GraniteOverlayTriggerForBaseDirective, selector: "[graniteOverlayTriggerForBase]", ngImport: i0 }); }
|
|
108
|
+
}
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteOverlayTriggerForBaseDirective, decorators: [{
|
|
110
|
+
type: Directive,
|
|
111
|
+
args: [{
|
|
112
|
+
selector: '[graniteOverlayTriggerForBase]',
|
|
113
|
+
}]
|
|
114
|
+
}], propDecorators: { _clientOutput: [{
|
|
115
|
+
type: Optional
|
|
116
|
+
}], _clientInput: [{
|
|
117
|
+
type: Optional
|
|
118
|
+
}], _dir: [{
|
|
119
|
+
type: Optional
|
|
120
|
+
}] } });
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS10cmlnZ2VyLWZvci1iYXNlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvY29yZS9vdmVybGF5LXRyaWdnZXItZm9yLWJhc2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTCxPQUFPLEVBQ1AsYUFBYSxHQUtkLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUVOLFFBQVEsRUFDUixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixxQkFBcUIsR0FDdEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU9uRCxNQUFNLE9BQU8scUNBQXFDO0lBSGxEO1FBSUUsdUNBQXVDO1FBRS9CLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFdEQsc0NBQXNDO1FBRTlCLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFHNUMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUk1QixZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFFdEIsZ0JBQVcsR0FBc0IsSUFBSSxDQUFDO1FBRXRDLGFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsYUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBQzNDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLG9CQUFl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QUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUNoRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQ3RCLENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckUsQ0FBQzs4R0EvSVUscUNBQXFDO2tHQUFyQyxxQ0FBcUM7OzJGQUFyQyxxQ0FBcUM7a0JBSGpELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztpQkFDM0M7OEJBSVMsYUFBYTtzQkFEcEIsUUFBUTtnQkFLRCxZQUFZO3NCQURuQixRQUFRO2dCQUlELElBQUk7c0JBRFgsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJsb2NrU2Nyb2xsU3RyYXRlZ3ksXG4gIENsb3NlU2Nyb2xsU3RyYXRlZ3ksXG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3MsXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlSZWYsXG4gIFBvc2l0aW9uU3RyYXRlZ3ksXG4gIFJlcG9zaXRpb25TY3JvbGxTdHJhdGVneSxcbiAgVmVydGljYWxDb25uZWN0aW9uUG9zLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBHUkFOSVRFX0NMSUVOVF9JTlBVVCxcbiAgR1JBTklURV9DTElFTlRfT1VUUFVULFxufSBmcm9tICcuL2NsaWVudC1lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi9vdmVybGF5LnNlcnZpY2UnO1xuaW1wb3J0IHsgT3ZlcmxheVBvc2l0aW9uQ29uZmlnIH0gZnJvbSAnLi9vdmVybGF5LXBvc2l0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBPdmVybGF5QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vb3ZlcmxheS1iYXNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2dyYW5pdGVPdmVybGF5VHJpZ2dlckZvckJhc2VdJyxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZU92ZXJsYXlUcmlnZ2VyRm9yQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKiBDbGllbnQgb3V0cHV0IGRldmljZSBpbmZvcm1hdGlvbiAqL1xuICBAT3B0aW9uYWwoKVxuICBwcml2YXRlIF9jbGllbnRPdXRwdXQgPSBpbmplY3QoR1JBTklURV9DTElFTlRfT1VUUFVUKTtcblxuICAvKiogQ2xpZW50IGlucHV0IGRldmljZSBpbmZvcm1hdGlvbiAqL1xuICBAT3B0aW9uYWwoKVxuICBwcml2YXRlIF9jbGllbnRJbnB1dCA9IGluamVjdChHUkFOSVRFX0NMSUVOVF9JTlBVVCk7XG5cbiAgQE9wdGlvbmFsKClcbiAgcHJpdmF0ZSBfZGlyID0gaW5qZWN0KERpcmVjdGlvbmFsaXR5KTtcblxuICBwcm90ZWN0ZWQgY29tcG9uZW50UmVmOiBPdmVybGF5QmFzZUNvbXBvbmVudDtcbiAgcHJvdGVjdGVkIHNlbGVjdG9yOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBvZmZzZXRYOiBudW1iZXIgPSAwO1xuICBwcm90ZWN0ZWQgb2Zmc2V0WTogbnVtYmVyID0gMDtcblxuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSBfZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgX292ZXJsYXlTZXJ2aWNlID0gaW5qZWN0KE92ZXJsYXlTZXJ2aWNlKTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UG9zaXRpb25Db25maWcoKTogT3ZlcmxheVBvc2l0aW9uQ29uZmlnIHtcbiAgICBjb25zdCBbb3JpZ2luWCwgb3JpZ2luRmFsbGJhY2tYXTogSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3NbXSA9XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi54UG9zaXRpb24gPT09ICdiZWZvcmUnXG4gICAgICAgID8gWydlbmQnLCAnc3RhcnQnXVxuICAgICAgICA6IFsnc3RhcnQnLCAnZW5kJ107XG5cbiAgICBjb25zdCBbb3ZlcmxheVksIG92ZXJsYXlGYWxsYmFja1ldOiBWZXJ0aWNhbENvbm5lY3Rpb25Qb3NbXSA9XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi55UG9zaXRpb24gPT09ICdhYm92ZSdcbiAgICAgICAgPyBbJ2JvdHRvbScsICd0b3AnXVxuICAgICAgICA6IFsndG9wJywgJ2JvdHRvbSddO1xuXG4gICAgbGV0IFtvcmlnaW5ZLCBvcmlnaW5GYWxsYmFja1ldID0gW292ZXJsYXlZLCBvdmVybGF5RmFsbGJhY2tZXTtcbiAgICBjb25zdCBbb3ZlcmxheVgsIG92ZXJsYXlGYWxsYmFja1hdID0gW29yaWdpblgsIG9yaWdpbkZhbGxiYWNrWF07XG5cbiAgICBvcmlnaW5ZID0gb3ZlcmxheVkgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICBvcmlnaW5GYWxsYmFja1kgPSBvdmVybGF5RmFsbGJhY2tZID09PSAndG9wJyA/ICdib3R0b20nIDogJ3RvcCc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3JpZ2luWCxcbiAgICAgIG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgIG9yaWdpblksXG4gICAgICBvcmlnaW5GYWxsYmFja1ksXG4gICAgICBvdmVybGF5WCxcbiAgICAgIG92ZXJsYXlGYWxsYmFja1gsXG4gICAgICBvdmVybGF5WSxcbiAgICAgIG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICBvZmZzZXRYOiB0aGlzLm9mZnNldFgsXG4gICAgICBvZmZzZXRZOiB0aGlzLm9mZnNldFksXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRQb3NpdGlvblN0cmF0ZWd5KCk6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGxldCBwb3NpdGlvblN0cmF0ZWd5OiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kgPVxuICAgICAgdGhpcy5fb3ZlcmxheVNlcnZpY2UuZGVza3RvcFBvc2l0aW9uU3RyYXRlZ3koXG4gICAgICAgIHRoaXMuX2VsZW1lbnQsXG4gICAgICAgIHRoaXMuc2VsZWN0b3JcbiAgICAgICk7XG4gICAgY29uc3QgcG9zaXRpb25Db25maWc6IE92ZXJsYXlQb3NpdGlvbkNvbmZpZyA9IHRoaXMuZ2V0UG9zaXRpb25Db25maWcoKTtcbiAgICBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVNlcnZpY2Uuc2V0UG9zaXRpb24oXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgcG9zaXRpb25Db25maWdcbiAgICApO1xuICAgIHJldHVybiBwb3NpdGlvblN0cmF0ZWd5O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFNjcm9sbFN0cmF0ZWd5KCk6XG4gICAgfCBSZXBvc2l0aW9uU2Nyb2xsU3RyYXRlZ3lcbiAgICB8IEJsb2NrU2Nyb2xsU3RyYXRlZ3lcbiAgICB8IENsb3NlU2Nyb2xsU3RyYXRlZ3kge1xuICAgIHJldHVybiB0aGlzLnNldFNjcm9sbFN0cmF0ZWd5KCdjbG9zZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFNjcm9sbFN0cmF0ZWd5KFxuICAgIHNjcm9sbFN0cmF0ZWd5OiAncmVwb3NpdGlvbicgfCAnYmxvY2snIHwgJ2Nsb3NlJ1xuICApOiBSZXBvc2l0aW9uU2Nyb2xsU3RyYXRlZ3kgfCBCbG9ja1Njcm9sbFN0cmF0ZWd5IHwgQ2xvc2VTY3JvbGxTdHJhdGVneSB7XG4gICAgc3dpdGNoIChzY3JvbGxTdHJhdGVneSkge1xuICAgICAgY2FzZSAncmVwb3NpdGlvbic6XG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICAgICAgY2FzZSAnYmxvY2snOlxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCk7XG4gICAgICBjYXNlICdjbG9zZSc6XG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlT3ZlcmxheShpc09wZW46IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpc09wZW4gPyB0aGlzLl9jbG9zZU92ZXJsYXkoKSA6IHRoaXMuX29wZW5PdmVybGF5KCk7XG4gICAgcmV0dXJuICFpc09wZW47XG4gIH1cblxuICBwcm90ZWN0ZWQgb25PdXRzaWRlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvc2VPdmVybGF5KCk7XG4gIH1cblxuICBwcml2YXRlIF9vcGVuT3ZlcmxheSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5kaXJlY3Rpb24gPSB0aGlzLl9kaXIudmFsdWUgPT09ICdydGwnID8gJ3J0bCcgOiAnbHRyJztcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5jbGllbnRJbnB1dCA9IHRoaXMuX2NsaWVudElucHV0O1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmNsaWVudE91dHB1dCA9IHRoaXMuX2NsaWVudE91dHB1dDtcblxuICAgIGNvbnN0IHBhbmVsQ2xhc3M6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuX2NsaWVudE91dHB1dD8uZGV2aWNlID09PSAndG91Y2gnKSB7XG4gICAgICBwYW5lbENsYXNzLnB1c2goJ2dyYW5pdGUtb3ZlcmxheS1wYW5lLWNlbnRlcicpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0JhY2tkcm9wID0gdGhpcy5fY2xpZW50T3V0cHV0Py5kZXZpY2UgPT09ICd0b3VjaCc7XG5cbiAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLmdldFBvc2l0aW9uU3RyYXRlZ3koKSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdncmFuaXRlLW92ZXJsYXktZGFyay1nbGFzcy1iYWNrZHJvcCcsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5nZXRTY3JvbGxTdHJhdGVneSgpLFxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIsXG4gICAgICBwYW5lbENsYXNzLFxuICAgICAgaGFzQmFja2Ryb3AsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheVNlcnZpY2UuY3JlYXRlT3ZlcmxheShcbiAgICAgIGNvbmZpZyxcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLFxuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZlxuICAgICk7XG4gICAgdGhpcy5fb3ZlcmxheVNlcnZpY2Uuc3Vic2NyaWJlT3V0c2lkZUNsaWNrKHRoaXMuX292ZXJsYXlSZWYsICgpID0+XG4gICAgICB0aGlzLm9uT3V0c2lkZUNsaWNrKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vdmVybGF5U2VydmljZS5jbG9zZU92ZXJsYXkodGhpcy5fb3ZlcmxheVJlZiwgdGhpcy5fZWxlbWVudCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Overlay, OverlayOutsideClickDispatcher, } from '@angular/cdk/overlay';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
4
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
7
|
+
import * as i2 from "@angular/cdk/a11y";
|
|
8
|
+
export class OverlayService {
|
|
9
|
+
constructor(_overlay, _focusMonitor, _outsideClickDispatcher) {
|
|
10
|
+
this._overlay = _overlay;
|
|
11
|
+
this._focusMonitor = _focusMonitor;
|
|
12
|
+
this._outsideClickDispatcher = _outsideClickDispatcher;
|
|
13
|
+
}
|
|
14
|
+
createOverlay(config, component, viewContainerRef) {
|
|
15
|
+
const overlayRef = this._overlay.create(config);
|
|
16
|
+
const portal = new TemplatePortal(component.templateRef, viewContainerRef);
|
|
17
|
+
overlayRef.attach(portal);
|
|
18
|
+
return overlayRef;
|
|
19
|
+
}
|
|
20
|
+
closeOverlay(overlayRef, element) {
|
|
21
|
+
this._outsideClickDispatcher.remove(overlayRef);
|
|
22
|
+
overlayRef.detach();
|
|
23
|
+
this.restoreFocus(element);
|
|
24
|
+
}
|
|
25
|
+
restoreFocus(element, origin = 'program', options) {
|
|
26
|
+
if (this._focusMonitor) {
|
|
27
|
+
this._focusMonitor.focusVia(element, origin, options);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
element.nativeElement.focus(options);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
desktopPositionStrategy(element, selector) {
|
|
34
|
+
return this._overlay
|
|
35
|
+
.position()
|
|
36
|
+
.flexibleConnectedTo(element)
|
|
37
|
+
.withLockedPosition()
|
|
38
|
+
.withTransformOriginOn(selector)
|
|
39
|
+
.withPush(false);
|
|
40
|
+
}
|
|
41
|
+
touchPositionStrategy() {
|
|
42
|
+
return this._overlay.position().global();
|
|
43
|
+
}
|
|
44
|
+
setPosition(positionStrategy, positionConfig) {
|
|
45
|
+
const { originX, originFallbackX, originY, originFallbackY, overlayX, overlayFallbackX, overlayY, overlayFallbackY, offsetX, offsetY, } = positionConfig;
|
|
46
|
+
positionStrategy.withPositions([
|
|
47
|
+
{ originX, originY, overlayX, overlayY, offsetY },
|
|
48
|
+
{
|
|
49
|
+
originX: originFallbackX,
|
|
50
|
+
originY,
|
|
51
|
+
overlayX: overlayFallbackX,
|
|
52
|
+
overlayY,
|
|
53
|
+
offsetY,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
originX,
|
|
57
|
+
originY: originFallbackY,
|
|
58
|
+
overlayX,
|
|
59
|
+
overlayY: overlayFallbackY,
|
|
60
|
+
offsetY: -offsetY,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
originX: originFallbackX,
|
|
64
|
+
originY: originFallbackY,
|
|
65
|
+
overlayX: overlayFallbackX,
|
|
66
|
+
overlayY: overlayFallbackY,
|
|
67
|
+
offsetY: -offsetY,
|
|
68
|
+
},
|
|
69
|
+
]);
|
|
70
|
+
return positionStrategy;
|
|
71
|
+
}
|
|
72
|
+
subscribeOutsideClick(overlayRef, callback) {
|
|
73
|
+
this._outsideClickDispatcher.add(overlayRef);
|
|
74
|
+
overlayRef.outsidePointerEvents().subscribe((event) => {
|
|
75
|
+
event.stopPropagation();
|
|
76
|
+
if (callback) {
|
|
77
|
+
callback();
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: OverlayService, deps: [{ token: i1.Overlay }, { token: i2.FocusMonitor }, { token: i1.OverlayOutsideClickDispatcher }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
82
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: OverlayService, providedIn: 'root' }); }
|
|
83
|
+
}
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: OverlayService, decorators: [{
|
|
85
|
+
type: Injectable,
|
|
86
|
+
args: [{
|
|
87
|
+
providedIn: 'root',
|
|
88
|
+
}]
|
|
89
|
+
}], ctorParameters: () => [{ type: i1.Overlay }, { type: i2.FocusMonitor }, { type: i1.OverlayOutsideClickDispatcher }] });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9jb3JlL292ZXJsYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsT0FBTyxFQUVQLDZCQUE2QixHQUc5QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBYyxVQUFVLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFLckQsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDVSxRQUFpQixFQUNqQixhQUEyQixFQUMzQix1QkFBc0Q7UUFGdEQsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQStCO0lBQzdELENBQUM7SUFFSixhQUFhLENBQ1gsTUFBcUIsRUFDckIsU0FBK0IsRUFDL0IsZ0JBQWtDO1FBRWxDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxZQUFZLENBQUMsVUFBc0IsRUFBRSxPQUFnQztRQUNuRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFZLENBQ1YsT0FBZ0MsRUFDaEMsU0FBc0IsU0FBUyxFQUMvQixPQUFzQjtRQUV0QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FDckIsT0FBZ0MsRUFDaEMsUUFBZ0I7UUFFaEIsT0FBTyxJQUFJLENBQUMsUUFBUTthQUNqQixRQUFRLEVBQUU7YUFDVixtQkFBbUIsQ0FBQyxPQUFPLENBQUM7YUFDNUIsa0JBQWtCLEVBQUU7YUFDcEIscUJBQXFCLENBQUMsUUFBUSxDQUFDO2FBQy9CLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVyxDQUNULGdCQUFtRCxFQUNuRCxjQUFxQztRQUVyQyxNQUFNLEVBQ0osT0FBTyxFQUNQLGVBQWUsRUFDZixPQUFPLEVBQ1AsZUFBZSxFQUNmLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsT0FBTyxHQUNSLEdBQUcsY0FBYyxDQUFDO1FBRW5CLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztZQUM3QixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7WUFDakQ7Z0JBQ0UsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE9BQU87Z0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUTtnQkFDUixPQUFPO2FBQ1I7WUFDRDtnQkFDRSxPQUFPO2dCQUNQLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixRQUFRO2dCQUNSLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLE9BQU8sRUFBRSxDQUFDLE9BQU87YUFDbEI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLE9BQU8sRUFBRSxDQUFDLE9BQU87YUFDbEI7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxVQUFzQixFQUFFLFFBQXFCO1FBQ2pFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBaUIsRUFBRSxFQUFFO1lBQ2hFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLFFBQVEsRUFBRSxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F6R1UsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlPdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLFxuICBPdmVybGF5UmVmLFxuICBQb3NpdGlvblN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgT3ZlcmxheVBvc2l0aW9uQ29uZmlnIH0gZnJvbSAnLi9vdmVybGF5LXBvc2l0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBPdmVybGF5QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vb3ZlcmxheS1iYXNlJztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBPdmVybGF5U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgcHJpdmF0ZSBfb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcjogT3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXJcbiAgKSB7fVxuXG4gIGNyZWF0ZU92ZXJsYXkoXG4gICAgY29uZmlnOiBPdmVybGF5Q29uZmlnLFxuICAgIGNvbXBvbmVudDogT3ZlcmxheUJhc2VDb21wb25lbnQsXG4gICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApOiBPdmVybGF5UmVmIHtcbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoY29tcG9uZW50LnRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcbiAgICBvdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuICAgIHJldHVybiBvdmVybGF5UmVmO1xuICB9XG5cbiAgY2xvc2VPdmVybGF5KG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogdm9pZCB7XG4gICAgdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5yZW1vdmUob3ZlcmxheVJlZik7XG4gICAgb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICB0aGlzLnJlc3RvcmVGb2N1cyhlbGVtZW50KTtcbiAgfVxuXG4gIHJlc3RvcmVGb2N1cyhcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBvcmlnaW46IEZvY3VzT3JpZ2luID0gJ3Byb2dyYW0nLFxuICAgIG9wdGlvbnM/OiBGb2N1c09wdGlvbnNcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZvY3VzTW9uaXRvcikge1xuICAgICAgdGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKGVsZW1lbnQsIG9yaWdpbiwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cyhvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBkZXNrdG9wUG9zaXRpb25TdHJhdGVneShcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBzZWxlY3Rvcjogc3RyaW5nXG4gICk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhlbGVtZW50KVxuICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpXG4gICAgICAud2l0aFRyYW5zZm9ybU9yaWdpbk9uKHNlbGVjdG9yKVxuICAgICAgLndpdGhQdXNoKGZhbHNlKTtcbiAgfVxuXG4gIHRvdWNoUG9zaXRpb25TdHJhdGVneSgpOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpO1xuICB9XG5cbiAgc2V0UG9zaXRpb24oXG4gICAgcG9zaXRpb25TdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICAgIHBvc2l0aW9uQ29uZmlnOiBPdmVybGF5UG9zaXRpb25Db25maWdcbiAgKTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICBjb25zdCB7XG4gICAgICBvcmlnaW5YLFxuICAgICAgb3JpZ2luRmFsbGJhY2tYLFxuICAgICAgb3JpZ2luWSxcbiAgICAgIG9yaWdpbkZhbGxiYWNrWSxcbiAgICAgIG92ZXJsYXlYLFxuICAgICAgb3ZlcmxheUZhbGxiYWNrWCxcbiAgICAgIG92ZXJsYXlZLFxuICAgICAgb3ZlcmxheUZhbGxiYWNrWSxcbiAgICAgIG9mZnNldFgsXG4gICAgICBvZmZzZXRZLFxuICAgIH0gPSBwb3NpdGlvbkNvbmZpZztcblxuICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aFBvc2l0aW9ucyhbXG4gICAgICB7IG9yaWdpblgsIG9yaWdpblksIG92ZXJsYXlYLCBvdmVybGF5WSwgb2Zmc2V0WSB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiBvcmlnaW5GYWxsYmFja1gsXG4gICAgICAgIG9yaWdpblksXG4gICAgICAgIG92ZXJsYXlYOiBvdmVybGF5RmFsbGJhY2tYLFxuICAgICAgICBvdmVybGF5WSxcbiAgICAgICAgb2Zmc2V0WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblgsXG4gICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcbiAgICAgICAgb3ZlcmxheVgsXG4gICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxuICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxuICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcbiAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICAgIG9mZnNldFk6IC1vZmZzZXRZLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIHJldHVybiBwb3NpdGlvblN0cmF0ZWd5O1xuICB9XG5cbiAgc3Vic2NyaWJlT3V0c2lkZUNsaWNrKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIGNhbGxiYWNrPzogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXIuYWRkKG92ZXJsYXlSZWYpO1xuICAgIG92ZXJsYXlSZWYub3V0c2lkZVBvaW50ZXJFdmVudHMoKS5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -48,6 +48,7 @@ export class _MenuBaseComponent {
|
|
|
48
48
|
constructor(_changeDetectorRef) {
|
|
49
49
|
this._changeDetectorRef = _changeDetectorRef;
|
|
50
50
|
this.openOnHover = true;
|
|
51
|
+
this.scrollStrategy = 'reposition';
|
|
51
52
|
/**
|
|
52
53
|
* Event emitted when the menu is closed
|
|
53
54
|
*/
|
|
@@ -325,7 +326,7 @@ export class _MenuBaseComponent {
|
|
|
325
326
|
});
|
|
326
327
|
}
|
|
327
328
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: _MenuBaseComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
328
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: _MenuBaseComponent, inputs: { xPosition: "xPosition", yPosition: "yPosition", title: "title", closeLabel: "closeLabel", openOnHover: "openOnHover" }, outputs: { closed: "closed", opened: "opened" }, queries: [{ propertyName: "_allItems", predicate: GraniteMenuItemComponent, descendants: true }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 }); }
|
|
329
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: _MenuBaseComponent, inputs: { xPosition: "xPosition", yPosition: "yPosition", title: "title", closeLabel: "closeLabel", openOnHover: "openOnHover", scrollStrategy: "scrollStrategy" }, outputs: { closed: "closed", opened: "opened" }, queries: [{ propertyName: "_allItems", predicate: GraniteMenuItemComponent, descendants: true }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 }); }
|
|
329
330
|
}
|
|
330
331
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: _MenuBaseComponent, decorators: [{
|
|
331
332
|
type: Directive
|
|
@@ -339,6 +340,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
339
340
|
type: Input
|
|
340
341
|
}], openOnHover: [{
|
|
341
342
|
type: Input
|
|
343
|
+
}], scrollStrategy: [{
|
|
344
|
+
type: Input
|
|
342
345
|
}], templateRef: [{
|
|
343
346
|
type: ViewChild,
|
|
344
347
|
args: [TemplateRef]
|
|
@@ -350,4 +353,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
350
353
|
}], opened: [{
|
|
351
354
|
type: Output
|
|
352
355
|
}] } });
|
|
353
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9tZW51L21lbnUtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixLQUFLLEVBRUwsT0FBTyxFQUNQLFlBQVksR0FDYixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU1uRSxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxHQUNqQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFRakUsc0NBQXNDO0FBQ3RDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQTJCckIsb0RBQW9EO0FBQ3BELE1BQU0sb0JBQW9CLEdBQWtCO0lBQzFDLEtBQUssRUFBRSxNQUFNO0lBQ2IsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLENBQUM7S0FDWDtDQUNGLENBQUM7QUFFRixxREFBcUQ7QUFFckQsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsMENBQTBDO0lBQzFDLElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFB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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBoYXNNb2RpZmllcktleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBtZXJnZSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgQ2xpZW50SW5wdXRJbnRlcmZhY2UsXG4gIENsaWVudE91dHB1dEludGVyZmFjZSxcbn0gZnJvbSAnLi4vY29yZS9jbGllbnQtZW52aXJvbm1lbnQnO1xuaW1wb3J0IHtcbiAgdGhyb3dHcmFuaXRlTWVudUludmFsaWRQb3NpdGlvblgsXG4gIHRocm93R3Jhbml0ZU1lbnVJbnZhbGlkUG9zaXRpb25ZLFxufSBmcm9tICcuL21lbnUtZXJyb3JzJztcbmltcG9ydCB7IEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDbG9zZWRFdmVudFR5cGUsXG4gIE9wZW5lZEV2ZW50VHlwZSxcbiAgR3Jhbml0ZU1lbnVQYW5lbEludGVyZmFjZSxcbn0gZnJvbSAnLi9tZW51LXBhbmVsJztcbmltcG9ydCB7IE1lbnVQb3NpdGlvblgsIE1lbnVQb3NpdGlvblkgfSBmcm9tICcuL21lbnUtcG9zaXRpb25zJztcblxuLyoqIENvdW50ZXIgZm9yIHBhbmVsIElEIGdlbmVyYXRpb24gKi9cbmxldCBtZW51UGFuZWxVaWQgPSAwO1xuXG4vKiogTWVudSBwYW5lbCBhbmltYXRpb24gc3RhdGVzICovXG50eXBlIFRyYW5zZm9ybU1lbnVTdGF0ZXMgPVxuICAvLyBUb3VjaCBkZXZpY2VcbiAgfCAndm9pZCdcbiAgfCAnZW50ZXInXG4gIHwgJ2VudGVyLWZyb20tYmVsb3cnXG4gIHwgJ2JlbG93LXdpdGgtZGVsYXknXG4gIHwgJ2JlbG93J1xuICB8ICdwYW4nXG4gIHwgJ2hpZGUnXG4gIHwgJ3Bhbi1oaWRkZW4nO1xuXG4vKipcbiAqIE1lbnUgcGFuZWwgYW5pbWF0aW9uIHRyYW5zZm9ybS9zdGF0ZSBvYmplY3QuIEhhcyB0byBiZSBhbiBvYmplY3QgYXMgd2Ugc3VwcGx5XG4gKiB0aGUgYHhPZmZzZXRgIHBhcmFtZXRlciBhbmQgbm90IGp1c3QgdGhlIHN0YXRlIG5hbWUuXG4gKi9cbnR5cGUgVHJhbnNmb3JtTWVudSA9IHtcbiAgLyoqIEN1cnJlbnQgYW5pbWF0aW9uIHN0YXRlIG5hbWUgKi9cbiAgdmFsdWU6IFRyYW5zZm9ybU1lbnVTdGF0ZXM7XG4gIHBhcmFtczoge1xuICAgIC8qKiBIb3cgZmFyIHRoZSBtZW51IGhhcyBiZWVuIHBhbm5lZC9zd2lwZWQgYnkgdGhlIHVzZXIgKi9cbiAgICB4T2Zmc2V0OiBudW1iZXI7XG4gIH07XG59O1xuXG4vKiogTWVudSBwYW5lbCBhbmltYXRpb24gZGVmYXVsdCB0cmFuc2Zvcm0gdmFsdWVzICovXG5jb25zdCB0cmFuc2Zvcm1NZW51RGVmYXVsdDogVHJhbnNmb3JtTWVudSA9IHtcbiAgdmFsdWU6ICd2b2lkJyxcbiAgcGFyYW1zOiB7XG4gICAgeE9mZnNldDogMCxcbiAgfSxcbn07XG5cbi8qKiBCYXNlIGNsYXNzIHdpdGggYWxsIG9mIHRoZSBtZW51IGZ1bmN0aW9uYWxpdHkuICovXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIF9NZW51QmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgICBHcmFuaXRlTWVudVBhbmVsSW50ZXJmYWNlXG57XG4gIC8qKiBQb3NpdGlvbiBvZiB0aGUgbWVudSBpbiB0aGUgWCBheGlzLiAqL1xuICBASW5wdXQoKVxuICBnZXQgeFBvc2l0aW9uKCk6IE1lbnVQb3NpdGlvblgge1xuICAgIHJldHVybiB0aGlzLl94UG9zaXRpb247XG4gIH1cbiAgc2V0IHhQb3NpdGlvbih2YWx1ZTogTWVudVBvc2l0aW9uWCkge1xuICAgIGlmICh2YWx1ZSAhPT0gJ2JlZm9yZScgJiYgdmFsdWUgIT09ICdhZnRlcicpIHtcbiAgICAgIHRocm93R3Jhbml0ZU1lbnVJbnZhbGlkUG9zaXRpb25YKCk7XG4gICAgfVxuICAgIHRoaXMuX3hQb3NpdGlvbiA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIFBvc2l0aW9uIG9mIHRoZSBtZW51IGluIHRoZSBZIGF4aXMuICovXG4gIEBJbnB1dCgpXG4gIGdldCB5UG9zaXRpb24oKTogTWVudVBvc2l0aW9uWSB7XG4gICAgcmV0dXJuIHRoaXMuX3lQb3NpdGlvbjtcbiAgfVxuICBzZXQgeVBvc2l0aW9uKHZhbHVlOiBNZW51UG9zaXRpb25ZKSB7XG4gICAgaWYgKHZhbHVlICE9PSAnYWJvdmUnICYmIHZhbHVlICE9PSAnYmVsb3cnKSB7XG4gICAgICB0aHJvd0dyYW5pdGVNZW51SW52YWxpZFBvc2l0aW9uWSgpO1xuICAgIH1cbiAgICB0aGlzLl95UG9zaXRpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBPcHRpb25hbCB0b3VjaCBtZW51IHBhbmVsIHRpdGxlICovXG4gIEBJbnB1dCgpXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvdWNoIG1lbnUgY2xvc2UgYnV0dG9uIGxhYmVsLiBJZiBub3Qgc2V0LCBhbnkgbGFiZWwgc2V0IGJ5IHBhcmVudCB3aWxsXG4gICAqIGJlIHVzZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBjbG9zZUxhYmVsOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgb3Blbk9uSG92ZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKiBBbGwgaXRlbXMgaW5zaWRlIHRoZSBtZW51LiBJbmNsdWRlcyBpdGVtcyBuZXN0ZWQgaW5zaWRlIGFub3RoZXIgbWVudS4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgX2FsbEl0ZW1zOiBRdWVyeUxpc3Q8R3Jhbml0ZU1lbnVJdGVtQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZFxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZDogRXZlbnRFbWl0dGVyPENsb3NlZEV2ZW50VHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWRcbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBvcGVuZWQ6IEV2ZW50RW1pdHRlcjxPcGVuZWRFdmVudFR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBsb2NhdGluZyB0aGUgcGFuZWwgaW4gdGVzdHMgYW5kIHNldHRpbmcgdGhlIGFyaWEtY29udHJvbCBhdHRyaWJ1dGVcbiAgICogZm9yIHRoZSBtZW51IHRyaWdnZXIuXG4gICAqL1xuICByZWFkb25seSBwYW5lbElkID0gYGdyYW5pdGUtbWVudS1wYW5lbC0ke21lbnVQYW5lbFVpZCsrfWA7XG5cbiAgLyoqIFBhcmVudCBtZW51IG9mIHRoZSBjdXJyZW50IG1lbnUgcGFuZWwuICovXG4gIHBhcmVudE1lbnU6IEdyYW5pdGVNZW51UGFuZWxJbnRlcmZhY2UgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIExheW91dCBkaXJlY3Rpb24gb2YgdGhlIG1lbnUuICovXG4gIGRpcmVjdGlvbjogRGlyZWN0aW9uO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgYmFjayBidXR0b24gaW4gdG91Y2ggbWVudSB0aXRsZSBiYXIgKi9cbiAgc2hvd0JhY2tCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0byBzaG93IHRvdWNoIG1lbnUgdGl0bGUgYmFyICovXG4gIHNob3dUaXRsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFkZCBhIGNsb3NlIGJ1dHRvbiBiZWxvdyB0aGUgbWVudSAqL1xuICBzaG93Q2xvc2VCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogT2JzZXJ2YWJsZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBwYW5lbCBhbmltYXRpb24uICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzL25vLWV4cG9zZWQtc3ViamVjdHNcbiAgX3RyYW5zZm9ybU1lbnU6IEJlaGF2aW9yU3ViamVjdDxUcmFuc2Zvcm1NZW51PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXG4gICAgdHJhbnNmb3JtTWVudURlZmF1bHRcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gYW5pbWF0aW9uIG9uIHRoZSBtZW51IGNvbXBsZXRlcy4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8tZXhwb3NlZC1zdWJqZWN0c1xuICBfYW5pbWF0aW9uRG9uZSA9IG5ldyBTdWJqZWN0PEFuaW1hdGlvbkV2ZW50PigpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtZW51IGlzIGFuaW1hdGluZy4gKi9cbiAgX2lzQW5pbWF0aW5nOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtZW51IGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gKi9cbiAgX2lzQ2xvc2luZzogYm9vbGVhbjtcblxuICAvKiogQ2xpZW50IGlucHV0IGRldmljZSBpbmZvcm1hdGlvbiAqL1xuICBfY2xpZW50SW5wdXQ6IENsaWVudElucHV0SW50ZXJmYWNlO1xuXG4gIC8qKiBDbGllbnQgb3V0cHV0IGRldmljZSBpbmZvcm1hdGlvbiAqL1xuICBfY2xpZW50T3V0cHV0OiBDbGllbnRPdXRwdXRJbnRlcmZhY2U7XG5cbiAgcHJpdmF0ZSBfbWVudUVtcHR5JDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIF9pc01lbnVFbXB0eSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9tZW51RW1wdHkkLFxuICAgIHRoaXMuX2FuaW1hdGlvbkRvbmUsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbbSwgYV0pID0+IG0gJiYgYSAhPSBudWxsKSxcbiAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgKTtcblxuICAvKiogT25seSB0aGUgZGlyZWN0IGRlc2NlbmRhbnQgbWVudSBpdGVtcy4gKi9cbiAgcHJpdmF0ZSBfZGlyZWN0RGVzY2VuZGFudEl0ZW1zID0gbmV3IFF1ZXJ5TGlzdDxHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfa2V5TWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD47XG5cbiAgLyoqIFN1YnNjcmlwdGlvbiB0byB0YWIgZXZlbnRzIG9uIHRoZSBtZW51IHBhbmVsICovXG4gIHByaXZhdGUgX3RhYlN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBwcml2YXRlIF94UG9zaXRpb246IE1lbnVQb3NpdGlvblggPSAnYWZ0ZXInO1xuICBwcml2YXRlIF95UG9zaXRpb246IE1lbnVQb3NpdGlvblkgPSAnYmVsb3cnO1xuXG4gIC8qKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBwYW5lbCBhbmltYXRpb24uICovXG4gIHNldCBfcGFuZWxBbmltYXRpb25TdGF0ZShzdGF0ZTogVHJhbnNmb3JtTWVudVN0YXRlcykge1xuICAgIHRoaXMuX3RyYW5zZm9ybU1lbnUubmV4dCh7XG4gICAgICB2YWx1ZTogc3RhdGUsXG4gICAgICBwYXJhbXM6IHsgeE9mZnNldDogdGhpcy54T2Zmc2V0IH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3VycmVudCBob3Jpem9udGFsIG9mZnNldC4gVXNlZCB3aXRoIGBwYW5gIGFuZCBgcGFuLWhpZGRlbmBcbiAgICogYW5pbWF0aW9uIHN0YXRlcy5cbiAgICovXG4gIHByaXZhdGUgeE9mZnNldDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuX21lbnVFbXB0eSQubmV4dCh0aGlzLl9hbGxJdGVtcy5sZW5ndGggPCAxID8gdHJ1ZSA6IGZhbHNlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVEaXJlY3REZXNjZW5kYW50cygpO1xuICAgIHRoaXMuX2tleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcylcbiAgICAgIC53aXRoV3JhcCgpXG4gICAgICAuc2tpcFByZWRpY2F0ZSgobWVudUl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gbWVudUl0ZW0uX2dldEhvc3RFbGVtZW50KCk7XG4gICAgICAgIHJldHVybiBob3N0RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxCdXR0b25FbGVtZW50XG4gICAgICAgICAgPyBob3N0RWxlbWVudC5kaXNhYmxlZFxuICAgICAgICAgIDogaG9zdEVsZW1lbnQuaGFzQXR0cmlidXRlKCdncmFuaXRlVGl0bGUnKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuX3RhYlN1YnNjcmlwdGlvbiA9IHRoaXMuX2tleU1hbmFnZXIudGFiT3V0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KCd0YWInKTtcbiAgICB9KTtcblxuICAgIC8vIElmIGEgdXNlciBtYW51YWxseSAocHJvZ3JhbWF0aWNhbGx5KSBmb2N1c2VzIGEgbWVudSBpdGVtLCB3ZSBuZWVkIHRvIHJlZmxlY3QgdGhhdCBmb2N1c1xuICAgIC8vIGNoYW5nZSBiYWNrIHRvIHRoZSBrZXkgbWFuYWdlci4gTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gdW5zdWJzY3JpYmUgaGVyZSBiZWNhdXNlIF9mb2N1c2VkXG4gICAgLy8gaXMgaW50ZXJuYWwgYW5kIHdlIGtub3cgdGhhdCBpdCBnZXRzIGNvbXBsZXRlZCBvbiBkZXN0cm95LlxuICAgIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcyksXG4gICAgICAgIHN3aXRjaE1hcCgoaXRlbXMpID0+XG4gICAgICAgICAgbWVyZ2UoLi4uaXRlbXMubWFwKChpdGVtOiBHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQpID0+IGl0ZW0uX2ZvY3VzZWQpKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChmb2N1c2VkSXRlbTogR3Jhbml0ZU1lbnVJdGVtQ29tcG9uZW50KSA9PlxuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oZm9jdXNlZEl0ZW0pXG4gICAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmRlc3Ryb3koKTtcbiAgICB0aGlzLl90YWJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNsb3NlZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSB0aGF0IGNvbWJpbmVzIHRoZSBgX2hvdmVyZWRgIG9ic2VydmFibGVzIG9mIGFsbCB0aGUgbWVudSdzIGl0ZW1zXG4gICAqIGludG8gYSBzaW5nbGUgb2JzZXJ2YWJsZS4gRW1pdHMgd2hlbmV2ZXIgdGhlIGhvdmVyZWQgbWVudSBpdGVtIGNoYW5nZXMuXG4gICAqL1xuICBfaG92ZXJlZCgpOiBPYnNlcnZhYmxlPEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD4ge1xuICAgIC8vIENvZXJjZSB0aGUgYGNoYW5nZXNgIHByb3BlcnR5IGJlY2F1c2UgQW5ndWxhciB0eXBlcyBpdCBhcyBgT2JzZXJ2YWJsZTxhbnk+YFxuICAgIGNvbnN0IGl0ZW1DaGFuZ2VzID0gdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmNoYW5nZXMgYXMgT2JzZXJ2YWJsZTxcbiAgICAgIFF1ZXJ5TGlzdDxHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQ+XG4gICAgPjtcblxuICAgIHJldHVybiBpdGVtQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcyksXG4gICAgICAvLyBIb3ZlcmluZyBpcyBub3QgYXBwbGljYWJsZSB3aGVuIHByb2R1Y2luZyB0b3VjaCBvdXRwdXRcbiAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGllbnRPdXRwdXQ/LmRldmljZSAhPT0gJ3RvdWNoJztcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKChpdGVtcykgPT5cbiAgICAgICAgbWVyZ2UoLi4uaXRlbXMubWFwKChpdGVtOiBHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQpID0+IGl0ZW0uX2hvdmVyZWQpKVxuICAgICAgKVxuICAgICkgYXMgT2JzZXJ2YWJsZTxHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQ+O1xuICB9XG5cbiAgLyoqIEhhbmRsZSBhIGtleWJvYXJkIGV2ZW50IGZyb20gdGhlIG1lbnUsIGRlbGVnYXRpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIGFjdGlvbi4gKi9cbiAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG4gICAgY29uc3QgbWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXI7XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgaWYgKCFoYXNNb2RpZmllcktleShldmVudCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoJ2tleWRvd24nKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmICh0aGlzLnBhcmVudE1lbnUgJiYgdGhpcy5kaXJlY3Rpb24gPT09ICdsdHInKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIGlmICh0aGlzLnBhcmVudE1lbnUgJiYgdGhpcy5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGtleSA9PT0gJ0hvbWUnXG4gICAgICAgICAgICA/IG1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKClcbiAgICAgICAgICAgIDogbWFuYWdlci5zZXRMYXN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoa2V5ID09PSAnQXJyb3dVcCcgfHwga2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgIG1hbmFnZXIuc2V0Rm9jdXNPcmlnaW4oJ2tleWJvYXJkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBtYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBtZW51LlxuICAgKiBAcGFyYW0gb3JpZ2luIEFjdGlvbiBmcm9tIHdoaWNoIHRoZSBmb2N1cyBvcmlnaW5hdGVkLiBVc2VkIHRvIHNldCB0aGUgY29ycmVjdCBzdHlsaW5nLlxuICAgKi9cbiAgZm9jdXNGaXJzdEl0ZW0ob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJyk6IHZvaWQge1xuICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0Rm9jdXNPcmlnaW4ob3JpZ2luKS5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgfVxuXG4gIC8qKiBVcGRhdGVzIHRoZSBgc2hvd1RpdGxlYCBwcm9wZXJ0eSBmb3IgdG91Y2ggZGV2aWNlIFVJICovXG4gIF91cGRhdGVTaG93VGl0bGUoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93VGl0bGUgPSAhIXRoaXMudGl0bGUgfHwgdGhpcy5zaG93QmFja0J1dHRvbjtcbiAgfVxuXG4gIC8qKiBTdGFydHMgdGhlIGVudGVyIGFuaW1hdGlvbiAqL1xuICBfc3RhcnRBbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gIH1cblxuICAvKiogUmVzZXRzIHRoZSBwYW5lbCBhbmltYXRpb24gdG8gaXRzIGluaXRpYWwgc3RhdGUuICovXG4gIF9yZXNldEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ3ZvaWQnO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgJ2JlbG93JyBhbmltYXRpb24sIG1vdmluZyBhIG1lbnUgZG93biwgb3V0IG9mIHZpZXcgYmVsb3cgdGhlXG4gICAqIHZpZXdwb3J0LiBVc2VkIHRvIGNsb3NlIHRoZSB3aG9sZSBtZW51LCBmb3IgZXhhbXBsZSB3aGVuIGNsaWNraW5nXG4gICAqIHRoZSBiYWNrZHJvcC5cbiAgICovXG4gIF9zdGFydFRvdWNoQ2xvc2VEb3duQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGUgPSAnYmVsb3cnO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgJ2JlbG93LXdpdGgtZGVsYXknIGFuaW1hdGlvbiwgbW92aW5nIGEgbWVudSBkb3duLCBvdXQgb2YgdmlldyBiZWxvdyB0aGVcbiAgICogdmlld3BvcnQuIFVzZWQgdG8gY2xvc2UgdGhlIHdob2xlIG1lbnUgYXMgYSByZXNwb25zZSB0byB0aGUgdXNlciB0YXBwaW5nXG4gICAqIGEgbWVudSBpdGVtLiBUaGVyZSBpcyBhIHNob3J0IGRlbGF5IGJlZm9yZSB0aGUgYW5pbWF0aW9uIHN0YXJ0cywgdG8gdGhhdFxuICAgKiB0aGUgdXNlciBnZXRzIGEgdmlzdWFsIGZlZWRiYWNrIG9uIHdoYXQgaXRlbSB3YXMgc2VsZWN0ZWQuXG4gICAqL1xuICBfc3RhcnRUb3VjaENsb3NlRG93bkFuaW1hdGlvbldpdGhEZWxheSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2JlbG93LXdpdGgtZGVsYXknO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgJ3ZvaWQnIGFuaW1hdGlvbiwgbW92aW5nIGEgKHN1YikgbWVudSBvdXQgb2YgdmlldyB0byB0aGUgc2lkZVxuICAgKiBvZiB0aGUgdmlld3BvcnQuIFVzZWQgd2hlbiBnb2luZyBcImJhY2tcIiBmcm9tIGEgc3ViIG1lbnUuXG4gICAqL1xuICBfc3RhcnRUb3VjaENsb3NlU2lkZUFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNldEFuaW1hdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgZW50ZXItZnJvbS1iZWxvdyBhbmltYXRpb24sIG1vdmluZyBhIChyb290KSBtZW51IGludG8gdmlldyxcbiAgICogQW5pbWF0ZXMgdXB3YXJkcyBmcm9tIGEgc3RhcnRpbmcgcG9zaXRpb24gYmVsb3cgdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgX3N0YXJ0VG91Y2hSb290RW50ZXJBbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdlbnRlci1mcm9tLWJlbG93JztcbiAgICB0aGlzLnhPZmZzZXQgPSAwO1xuICB9XG5cbiAgLyoqIFN0YXJ0cyB0aGUgZW50ZXIgYW5pbWF0aW9uLCBtb3ZpbmcgYSAoc3ViKSBtZW51IGludG8gdmlldy4gKi9cbiAgX3N0YXJ0VG91Y2hTdWJtZW51RW50ZXJBbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gICAgdGhpcy54T2Zmc2V0ID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIHBhbiBhbmltYXRpb24sIHRvIHBvc2l0aW9uIGEgc3VibWVudSBpbiBhIHJlc3BvbnNlXG4gICAqIHRvIHVzZXIgZHJhZ2dpbmcgc2lkZXdheXMgKHBhbm5pbmcpLlxuICAgKi9cbiAgX3N0YXJ0VG91Y2hQYW5BbmltYXRpb24oeE9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdwYW4nO1xuICAgIHRoaXMueE9mZnNldCA9IHhPZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSBwYW4taGlkZGVuIGFuaW1hdGlvbiwgdG8gcG9zaXRpb24gYSBwYXJlbnQgbWVudSBuZXh0IHRvIGFuXG4gICAqIGFjdGl2ZSBzdWJtZW51IHRoYXQgdGhlIHVzZXIgaXMgZHJhZ2dpbmcgc2lkZXdheXMgKHBhbm5pbmcpLlxuICAgKi9cbiAgX3N0YXJ0VG91Y2hIaWRlUGFuQW5pbWF0aW9uKHhPZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGUgPSAncGFuLWhpZGRlbic7XG4gICAgdGhpcy54T2Zmc2V0ID0geE9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIGhpZGUgYW5pbWF0aW9uLCB0byBtYWtlIGEgcGFyZW50IG1lbnUgc2xpZGUgb3V0IHRvIGxlYXZlXG4gICAqIHNwYWNlIGZvciBhIHN1Ym1lbnUuXG4gICAqL1xuICBfc3RhcnRUb3VjaEhpZGVBbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdoaWRlJztcbiAgICB0aGlzLnhPZmZzZXQgPSAwO1xuICB9XG5cbiAgLyoqIENhbGxiYWNrIHRoYXQgaXMgaW52b2tlZCB3aGVuIHRoZSBwYW5lbCBhbmltYXRpb24gY29tcGxldGVzLiAqL1xuICBfb25BbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2FuaW1hdGlvbkRvbmUubmV4dChldmVudCk7XG4gICAgdGhpcy5faXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIF9vbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2lzQW5pbWF0aW5nID0gdHJ1ZTtcblxuICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBlbGVtZW50IHRvIHRoZSB0b3AgYXMgc29vbiBhcyB0aGUgYW5pbWF0aW9uIHN0YXJ0cy4gVGhpcyBpcyBuZWNlc3NhcnksXG4gICAgLy8gYmVjYXVzZSB3ZSBtb3ZlIGZvY3VzIHRvIHRoZSBmaXJzdCBpdGVtIHdoaWxlIGl0J3Mgc3RpbGwgYmVpbmcgYW5pbWF0ZWQsIHdoaWNoIGNhbiB0aHJvd1xuICAgIC8vIHRoZSBicm93c2VyIG9mZiB3aGVuIGl0IGRldGVybWluZXMgdGhlIHNjcm9sbCBwb3NpdGlvbi4gQWx0ZXJuYXRpdmVseSB3ZSBjYW4gbW92ZSBmb2N1c1xuICAgIC8vIHdoZW4gdGhlIGFuaW1hdGlvbiBpcyBkb25lLCBob3dldmVyIG1vdmluZyBmb2N1cyBhc3luY2hyb25vdXNseSB3aWxsIGludGVycnVwdCBzY3JlZW5cbiAgICAvLyByZWFkZXJzIHdoaWNoIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiByZWFkaW5nIG91dCB0aGUgbWVudSBhbHJlYWR5LiBXZSB0YWtlIHRoZSBgZWxlbWVudGBcbiAgICAvLyBmcm9tIHRoZSBgZXZlbnRgIHNpbmNlIHdlIGNhbid0IHVzZSBhIGBWaWV3Q2hpbGRgIHRvIGFjY2VzcyB0aGUgcGFuZS5cbiAgICBpZiAoXG4gICAgICAoZXZlbnQudG9TdGF0ZSA9PT0gJ2VudGVyJyB8fCBldmVudC50b1N0YXRlID09PSAnZW50ZXItZnJvbS1iZWxvdycpICYmXG4gICAgICB0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCA9PT0gMFxuICAgICkge1xuICAgICAgZXZlbnQuZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgY2xpY2sgb24gdGhlIG1lbnUgYnkgZW1pdHRpbmcgb24gdGhlIGBjbG9zZWRgIGVtaXR0ZXJcbiAgICogd2l0aCBhIGBjbGlja2AgcmVhc29uXG4gICAqL1xuICBfaGFuZGxlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgnY2xpY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgY2xpY2sgb24gdGhlIGNsb3NlIGJ1dHRvbiBieSBlbWl0dGluZyBvbiB0aGUgYGNsb3NlZGAgZW1pdHRlclxuICAgKiB3aXRob3V0IGFueSBwYXJ0aWN1bGFyIHJlYXNvblxuICAgKi9cbiAgX2hhbmRsZUNsb3NlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjbGljayBvbiB0aGUgYmFjayBpY29uIGJ5IGVtaXR0aW5nIG9uIHRoZSBgY2xpY2tlZGAgZW1pdHRlclxuICAgKi9cbiAgX2hhbmRsZUJhY2tDbGljayhlOiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvd0JhY2tCdXR0b24pIHtcbiAgICAgIC8vIENsb3NlIHN1Ym1lbnUga2V5ZG93bi1zdHlsZTogY2xvc2Ugb25seSB0aGlzIG1lbnUgYW5kIGxlYXZlIHBhcmVudHMgb3BlblxuICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgIH1cbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjbGllbnQgZGV2aWNlIGluZm9ybWF0aW9uIGZvciB0aGUgbWVudSBhbmQgaXRzIG1lbnUgaXRlbXMuXG4gICAqL1xuICBfc2V0RGV2aWNlKFxuICAgIGNsaWVudElucHV0OiBDbGllbnRJbnB1dEludGVyZmFjZSxcbiAgICBjbGllbnRPdXRwdXQ6IENsaWVudE91dHB1dEludGVyZmFjZVxuICApOiB2b2lkIHtcbiAgICB0aGlzLl9jbGllbnRJbnB1dCA9IGNsaWVudElucHV0O1xuICAgIHRoaXMuX2NsaWVudE91dHB1dCA9IGNsaWVudE91dHB1dDtcblxuICAgIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLl9jbGllbnRJbnB1dCA9IGNsaWVudElucHV0O1xuICAgICAgaXRlbS5fY2xpZW50T3V0cHV0ID0gY2xpZW50T3V0cHV0O1xuICAgIH0pO1xuXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBhY3RpdmUgaXRlbSBpbiB0aGUgbWVudS4gVGhpcyBpcyB1c2VkIHdoZW4gdGhlIG1lbnUgaXMgb3BlbmVkLCBhbGxvd2luZ1xuICAgKiB0aGUgdXNlciB0byBzdGFydCBmcm9tIHRoZSBmaXJzdCBvcHRpb24gd2hlbiBwcmVzc2luZyB0aGUgZG93biBhcnJvdy5cbiAgICovXG4gIHJlc2V0QWN0aXZlSXRlbSgpOiB2b2lkIHtcbiAgICB0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgYSBzdHJlYW0gdGhhdCB3aWxsIGtlZXAgdHJhY2sgb2YgYW55IG5ld2x5LWFkZGVkIG1lbnUgaXRlbXMgYW5kIHdpbGwgdXBkYXRlIHRoZSBsaXN0XG4gICAqIG9mIGRpcmVjdCBkZXNjZW5kYW50cy4gV2UgY29sbGVjdCB0aGUgZGVzY2VuZGFudHMgdGhpcyB3YXksIGJlY2F1c2UgYF9hbGxJdGVtc2AgY2FuIGluY2x1ZGVcbiAgICogaXRlbXMgdGhhdCBhcmUgcGFydCBvZiBjaGlsZCBtZW51cywgYW5kIHVzaW5nIGEgY3VzdG9tIHdheSBvZiByZWdpc3RlcmluZyBpdGVtcyBpcyB1bnJlbGlhYmxlXG4gICAqIHdoZW4gaXQgY29tZXMgdG8gbWFpbnRhaW5pbmcgdGhlIGl0ZW0gb3JkZXIuXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVEaXJlY3REZXNjZW5kYW50cygpIHtcbiAgICB0aGlzLl9hbGxJdGVtcy5jaGFuZ2VzXG4gICAgICAucGlwZShzdGFydFdpdGgodGhpcy5fYWxsSXRlbXMpKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbXM6IFF1ZXJ5TGlzdDxHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQ+KSA9PiB7XG4gICAgICAgIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5yZXNldChcbiAgICAgICAgICBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uX3BhcmVudE1lbnUgPT09IHRoaXMpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5ub3RpZnlPbkNoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9tZW51L21lbnUtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixLQUFLLEVBRUwsT0FBTyxFQUNQLFlBQVksR0FDYixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU1uRSxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxHQUNqQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFRakUsc0NBQXNDO0FBQ3RDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQTJCckIsb0RBQW9EO0FBQ3BELE1BQU0sb0JBQW9CLEdBQWtCO0lBQzFDLEtBQUssRUFBRSxNQUFNO0lBQ2IsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLENBQUM7S0FDWDtDQUNGLENBQUM7QUFFRixxREFBcUQ7QUFFckQsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsMENBQTBDO0lBQzFDLElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFB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O2dCQU03QyxNQUFNO3NCQUF4QixNQUFNO2dCQUtZLE1BQU07c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1lcmdlLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBDbGllbnRJbnB1dEludGVyZmFjZSxcbiAgQ2xpZW50T3V0cHV0SW50ZXJmYWNlLFxufSBmcm9tICcuLi9jb3JlL2NsaWVudC1lbnZpcm9ubWVudCc7XG5pbXBvcnQge1xuICB0aHJvd0dyYW5pdGVNZW51SW52YWxpZFBvc2l0aW9uWCxcbiAgdGhyb3dHcmFuaXRlTWVudUludmFsaWRQb3NpdGlvblksXG59IGZyb20gJy4vbWVudS1lcnJvcnMnO1xuaW1wb3J0IHsgR3Jhbml0ZU1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENsb3NlZEV2ZW50VHlwZSxcbiAgT3BlbmVkRXZlbnRUeXBlLFxuICBHcmFuaXRlTWVudVBhbmVsSW50ZXJmYWNlLFxufSBmcm9tICcuL21lbnUtcGFuZWwnO1xuaW1wb3J0IHsgTWVudVBvc2l0aW9uWCwgTWVudVBvc2l0aW9uWSB9IGZyb20gJy4vbWVudS1wb3NpdGlvbnMnO1xuXG4vKiogQ291bnRlciBmb3IgcGFuZWwgSUQgZ2VuZXJhdGlvbiAqL1xubGV0IG1lbnVQYW5lbFVpZCA9IDA7XG5cbi8qKiBNZW51IHBhbmVsIGFuaW1hdGlvbiBzdGF0ZXMgKi9cbnR5cGUgVHJhbnNmb3JtTWVudVN0YXRlcyA9XG4gIC8vIFRvdWNoIGRldmljZVxuICB8ICd2b2lkJ1xuICB8ICdlbnRlcidcbiAgfCAnZW50ZXItZnJvbS1iZWxvdydcbiAgfCAnYmVsb3ctd2l0aC1kZWxheSdcbiAgfCAnYmVsb3cnXG4gIHwgJ3BhbidcbiAgfCAnaGlkZSdcbiAgfCAncGFuLWhpZGRlbic7XG5cbi8qKlxuICogTWVudSBwYW5lbCBhbmltYXRpb24gdHJhbnNmb3JtL3N0YXRlIG9iamVjdC4gSGFzIHRvIGJlIGFuIG9iamVjdCBhcyB3ZSBzdXBwbHlcbiAqIHRoZSBgeE9mZnNldGAgcGFyYW1ldGVyIGFuZCBub3QganVzdCB0aGUgc3RhdGUgbmFtZS5cbiAqL1xudHlwZSBUcmFuc2Zvcm1NZW51ID0ge1xuICAvKiogQ3VycmVudCBhbmltYXRpb24gc3RhdGUgbmFtZSAqL1xuICB2YWx1ZTogVHJhbnNmb3JtTWVudVN0YXRlcztcbiAgcGFyYW1zOiB7XG4gICAgLyoqIEhvdyBmYXIgdGhlIG1lbnUgaGFzIGJlZW4gcGFubmVkL3N3aXBlZCBieSB0aGUgdXNlciAqL1xuICAgIHhPZmZzZXQ6IG51bWJlcjtcbiAgfTtcbn07XG5cbi8qKiBNZW51IHBhbmVsIGFuaW1hdGlvbiBkZWZhdWx0IHRyYW5zZm9ybSB2YWx1ZXMgKi9cbmNvbnN0IHRyYW5zZm9ybU1lbnVEZWZhdWx0OiBUcmFuc2Zvcm1NZW51ID0ge1xuICB2YWx1ZTogJ3ZvaWQnLFxuICBwYXJhbXM6IHtcbiAgICB4T2Zmc2V0OiAwLFxuICB9LFxufTtcblxuLyoqIEJhc2UgY2xhc3Mgd2l0aCBhbGwgb2YgdGhlIG1lbnUgZnVuY3Rpb25hbGl0eS4gKi9cbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgX01lbnVCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHNcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICAgIEdyYW5pdGVNZW51UGFuZWxJbnRlcmZhY2VcbntcbiAgLyoqIFBvc2l0aW9uIG9mIHRoZSBtZW51IGluIHRoZSBYIGF4aXMuICovXG4gIEBJbnB1dCgpXG4gIGdldCB4UG9zaXRpb24oKTogTWVudVBvc2l0aW9uWCB7XG4gICAgcmV0dXJuIHRoaXMuX3hQb3NpdGlvbjtcbiAgfVxuICBzZXQgeFBvc2l0aW9uKHZhbHVlOiBNZW51UG9zaXRpb25YKSB7XG4gICAgaWYgKHZhbHVlICE9PSAnYmVmb3JlJyAmJiB2YWx1ZSAhPT0gJ2FmdGVyJykge1xuICAgICAgdGhyb3dHcmFuaXRlTWVudUludmFsaWRQb3NpdGlvblgoKTtcbiAgICB9XG4gICAgdGhpcy5feFBvc2l0aW9uID0gdmFsdWU7XG4gIH1cblxuICAvKiogUG9zaXRpb24gb2YgdGhlIG1lbnUgaW4gdGhlIFkgYXhpcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHlQb3NpdGlvbigpOiBNZW51UG9zaXRpb25ZIHtcbiAgICByZXR1cm4gdGhpcy5feVBvc2l0aW9uO1xuICB9XG4gIHNldCB5UG9zaXRpb24odmFsdWU6IE1lbnVQb3NpdGlvblkpIHtcbiAgICBpZiAodmFsdWUgIT09ICdhYm92ZScgJiYgdmFsdWUgIT09ICdiZWxvdycpIHtcbiAgICAgIHRocm93R3Jhbml0ZU1lbnVJbnZhbGlkUG9zaXRpb25ZKCk7XG4gICAgfVxuICAgIHRoaXMuX3lQb3NpdGlvbiA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIE9wdGlvbmFsIHRvdWNoIG1lbnUgcGFuZWwgdGl0bGUgKi9cbiAgQElucHV0KClcbiAgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogVG91Y2ggbWVudSBjbG9zZSBidXR0b24gbGFiZWwuIElmIG5vdCBzZXQsIGFueSBsYWJlbCBzZXQgYnkgcGFyZW50IHdpbGxcbiAgICogYmUgdXNlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNsb3NlTGFiZWw6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBvcGVuT25Ib3ZlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2Nyb2xsU3RyYXRlZ3k6ICdyZXBvc2l0aW9uJyB8ICdjbG9zZScgPSAncmVwb3NpdGlvbic7XG5cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqIEFsbCBpdGVtcyBpbnNpZGUgdGhlIG1lbnUuIEluY2x1ZGVzIGl0ZW1zIG5lc3RlZCBpbnNpZGUgYW5vdGhlciBtZW51LiAqL1xuICBAQ29udGVudENoaWxkcmVuKEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBfYWxsSXRlbXM6IFF1ZXJ5TGlzdDxHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xvc2VkOiBFdmVudEVtaXR0ZXI8Q2xvc2VkRXZlbnRUeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBtZW51IGlzIG9wZW5lZFxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IG9wZW5lZDogRXZlbnRFbWl0dGVyPE9wZW5lZEV2ZW50VHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFVzZWQgZm9yIGxvY2F0aW5nIHRoZSBwYW5lbCBpbiB0ZXN0cyBhbmQgc2V0dGluZyB0aGUgYXJpYS1jb250cm9sIGF0dHJpYnV0ZVxuICAgKiBmb3IgdGhlIG1lbnUgdHJpZ2dlci5cbiAgICovXG4gIHJlYWRvbmx5IHBhbmVsSWQgPSBgZ3Jhbml0ZS1tZW51LXBhbmVsLSR7bWVudVBhbmVsVWlkKyt9YDtcblxuICAvKiogUGFyZW50IG1lbnUgb2YgdGhlIGN1cnJlbnQgbWVudSBwYW5lbC4gKi9cbiAgcGFyZW50TWVudTogR3Jhbml0ZU1lbnVQYW5lbEludGVyZmFjZSB8IHVuZGVmaW5lZDtcblxuICAvKiogTGF5b3V0IGRpcmVjdGlvbiBvZiB0aGUgbWVudS4gKi9cbiAgZGlyZWN0aW9uOiBEaXJlY3Rpb247XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyBiYWNrIGJ1dHRvbiBpbiB0b3VjaCBtZW51IHRpdGxlIGJhciAqL1xuICBzaG93QmFja0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdG91Y2ggbWVudSB0aXRsZSBiYXIgKi9cbiAgc2hvd1RpdGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdG8gYWRkIGEgY2xvc2UgYnV0dG9uIGJlbG93IHRoZSBtZW51ICovXG4gIHNob3dDbG9zZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBPYnNlcnZhYmxlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbmVsIGFuaW1hdGlvbi4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8tZXhwb3NlZC1zdWJqZWN0c1xuICBfdHJhbnNmb3JtTWVudTogQmVoYXZpb3JTdWJqZWN0PFRyYW5zZm9ybU1lbnU+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChcbiAgICB0cmFuc2Zvcm1NZW51RGVmYXVsdFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciBhbiBhbmltYXRpb24gb24gdGhlIG1lbnUgY29tcGxldGVzLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1leHBvc2VkLXN1YmplY3RzXG4gIF9hbmltYXRpb25Eb25lID0gbmV3IFN1YmplY3Q8QW5pbWF0aW9uRXZlbnQ+KCk7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG1lbnUgaXMgYW5pbWF0aW5nLiAqL1xuICBfaXNBbmltYXRpbmc6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG1lbnUgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAqL1xuICBfaXNDbG9zaW5nOiBib29sZWFuO1xuXG4gIC8qKiBDbGllbnQgaW5wdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gIF9jbGllbnRJbnB1dDogQ2xpZW50SW5wdXRJbnRlcmZhY2U7XG5cbiAgLyoqIENsaWVudCBvdXRwdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gIF9jbGllbnRPdXRwdXQ6IENsaWVudE91dHB1dEludGVyZmFjZTtcblxuICBwcml2YXRlIF9tZW51RW1wdHkkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgX2lzTWVudUVtcHR5JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX21lbnVFbXB0eSQsXG4gICAgdGhpcy5fYW5pbWF0aW9uRG9uZSxcbiAgXSkucGlwZShcbiAgICBmaWx0ZXIoKFttLCBhXSkgPT4gbSAmJiBhICE9IG51bGwpLFxuICAgIG1hcCgoKSA9PiB0cnVlKVxuICApO1xuXG4gIC8qKiBPbmx5IHRoZSBkaXJlY3QgZGVzY2VuZGFudCBtZW51IGl0ZW1zLiAqL1xuICBwcml2YXRlIF9kaXJlY3REZXNjZW5kYW50SXRlbXMgPSBuZXcgUXVlcnlMaXN0PEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD4oKTtcblxuICBwcml2YXRlIF9rZXlNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8R3Jhbml0ZU1lbnVJdGVtQ29tcG9uZW50PjtcblxuICAvKiogU3Vic2NyaXB0aW9uIHRvIHRhYiBldmVudHMgb24gdGhlIG1lbnUgcGFuZWwgKi9cbiAgcHJpdmF0ZSBfdGFiU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIHByaXZhdGUgX3hQb3NpdGlvbjogTWVudVBvc2l0aW9uWCA9ICdhZnRlcic7XG4gIHByaXZhdGUgX3lQb3NpdGlvbjogTWVudVBvc2l0aW9uWSA9ICdiZWxvdyc7XG5cbiAgLyoqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbmVsIGFuaW1hdGlvbi4gKi9cbiAgc2V0IF9wYW5lbEFuaW1hdGlvblN0YXRlKHN0YXRlOiBUcmFuc2Zvcm1NZW51U3RhdGVzKSB7XG4gICAgdGhpcy5fdHJhbnNmb3JtTWVudS5uZXh0KHtcbiAgICAgIHZhbHVlOiBzdGF0ZSxcbiAgICAgIHBhcmFtczogeyB4T2Zmc2V0OiB0aGlzLnhPZmZzZXQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDdXJyZW50IGhvcml6b250YWwgb2Zmc2V0LiBVc2VkIHdpdGggYHBhbmAgYW5kIGBwYW4taGlkZGVuYFxuICAgKiBhbmltYXRpb24gc3RhdGVzLlxuICAgKi9cbiAgcHJpdmF0ZSB4T2Zmc2V0OiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVudUVtcHR5JC5uZXh0KHRoaXMuX2FsbEl0ZW1zLmxlbmd0aCA8IDEgPyB0cnVlIDogZmFsc2UpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCk7XG4gICAgdGhpcy5fa2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKVxuICAgICAgLndpdGhXcmFwKClcbiAgICAgIC5za2lwUHJlZGljYXRlKChtZW51SXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBob3N0RWxlbWVudDogSFRNTEVsZW1lbnQgPSBtZW51SXRlbS5fZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgcmV0dXJuIGhvc3RFbGVtZW50IGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgICAgICAgICA/IGhvc3RFbGVtZW50LmRpc2FibGVkXG4gICAgICAgICAgOiBob3N0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2dyYW5pdGVUaXRsZScpO1xuICAgICAgfSk7XG4gICAgdGhpcy5fdGFiU3Vic2NyaXB0aW9uID0gdGhpcy5fa2V5TWFuYWdlci50YWJPdXQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VkLmVtaXQoJ3RhYicpO1xuICAgIH0pO1xuXG4gICAgLy8gSWYgYSB1c2VyIG1hbnVhbGx5IChwcm9ncmFtYXRpY2FsbHkpIGZvY3VzZXMgYSBtZW51IGl0ZW0sIHdlIG5lZWQgdG8gcmVmbGVjdCB0aGF0IGZvY3VzXG4gICAgLy8gY2hhbmdlIGJhY2sgdG8gdGhlIGtleSBtYW5hZ2VyLiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB1bnN1YnNjcmliZSBoZXJlIGJlY2F1c2UgX2ZvY3VzZWRcbiAgICAvLyBpcyBpbnRlcm5hbCBhbmQgd2Uga25vdyB0aGF0IGl0IGdldHMgY29tcGxldGVkIG9uIGRlc3Ryb3kuXG4gICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxcbiAgICAgICAgc3dpdGNoTWFwKChpdGVtcykgPT5cbiAgICAgICAgICBtZXJnZSguLi5pdGVtcy5tYXAoKGl0ZW06IEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudCkgPT4gaXRlbS5fZm9jdXNlZCkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGZvY3VzZWRJdGVtOiBHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQpID0+XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShmb2N1c2VkSXRlbSlcbiAgICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuZGVzdHJveSgpO1xuICAgIHRoaXMuX3RhYlN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RyZWFtIHRoYXQgY29tYmluZXMgdGhlIGBfaG92ZXJlZGAgb2JzZXJ2YWJsZXMgb2YgYWxsIHRoZSBtZW51J3MgaXRlbXNcbiAgICogaW50byBhIHNpbmdsZSBvYnNlcnZhYmxlLiBFbWl0cyB3aGVuZXZlciB0aGUgaG92ZXJlZCBtZW51IGl0ZW0gY2hhbmdlcy5cbiAgICovXG4gIF9ob3ZlcmVkKCk6IE9ic2VydmFibGU8R3Jhbml0ZU1lbnVJdGVtQ29tcG9uZW50PiB7XG4gICAgLy8gQ29lcmNlIHRoZSBgY2hhbmdlc2AgcHJvcGVydHkgYmVjYXVzZSBBbmd1bGFyIHR5cGVzIGl0IGFzIGBPYnNlcnZhYmxlPGFueT5gXG4gICAgY29uc3QgaXRlbUNoYW5nZXMgPSB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuY2hhbmdlcyBhcyBPYnNlcnZhYmxlPFxuICAgICAgUXVlcnlMaXN0PEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD5cbiAgICA+O1xuXG4gICAgcmV0dXJuIGl0ZW1DaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxcbiAgICAgIC8vIEhvdmVyaW5nIGlzIG5vdCBhcHBsaWNhYmxlIHdoZW4gcHJvZHVjaW5nIHRvdWNoIG91dHB1dFxuICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsaWVudE91dHB1dD8uZGV2aWNlICE9PSAndG91Y2gnO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKGl0ZW1zKSA9PlxuICAgICAgICBtZXJnZSguLi5pdGVtcy5tYXAoKGl0ZW06IEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudCkgPT4gaXRlbS5faG92ZXJlZCkpXG4gICAgICApXG4gICAgKSBhcyBPYnNlcnZhYmxlPEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD47XG4gIH1cblxuICAvKiogSGFuZGxlIGEga2V5Ym9hcmQgZXZlbnQgZnJvbSB0aGUgbWVudSwgZGVsZWdhdGluZyB0byB0aGUgYXBwcm9wcmlhdGUgYWN0aW9uLiAqL1xuICBfaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcbiAgICBjb25zdCBtYW5hZ2VyID0gdGhpcy5fa2V5TWFuYWdlcjtcblxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgaWYgKHRoaXMucGFyZW50TWVudSAmJiB0aGlzLmRpcmVjdGlvbiA9PT0gJ2x0cicpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCdrZXlkb3duJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgaWYgKHRoaXMucGFyZW50TWVudSAmJiB0aGlzLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCdrZXlkb3duJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAga2V5ID09PSAnSG9tZSdcbiAgICAgICAgICAgID8gbWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKVxuICAgICAgICAgICAgOiBtYW5hZ2VyLnNldExhc3RJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChrZXkgPT09ICdBcnJvd1VwJyB8fCBrZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgICAgbWFuYWdlci5zZXRGb2N1c09yaWdpbigna2V5Ym9hcmQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUuXG4gICAqIEBwYXJhbSBvcmlnaW4gQWN0aW9uIGZyb20gd2hpY2ggdGhlIGZvY3VzIG9yaWdpbmF0ZWQuIFVzZWQgdG8gc2V0IHRoZSBjb3JyZWN0IHN0eWxpbmcuXG4gICAqL1xuICBmb2N1c0ZpcnN0SXRlbShvcmlnaW46IEZvY3VzT3JpZ2luID0gJ3Byb2dyYW0nKTogdm9pZCB7XG4gICAgdGhpcy5fa2V5TWFuYWdlci5zZXRGb2N1c09yaWdpbihvcmlnaW4pLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICB9XG5cbiAgLyoqIFVwZGF0ZXMgdGhlIGBzaG93VGl0bGVgIHByb3BlcnR5IGZvciB0b3VjaCBkZXZpY2UgVUkgKi9cbiAgX3VwZGF0ZVNob3dUaXRsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dUaXRsZSA9ICEhdGhpcy50aXRsZSB8fCB0aGlzLnNob3dCYWNrQnV0dG9uO1xuICB9XG5cbiAgLyoqIFN0YXJ0cyB0aGUgZW50ZXIgYW5pbWF0aW9uICovXG4gIF9zdGFydEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2VudGVyJztcbiAgfVxuXG4gIC8qKiBSZXNldHMgdGhlIHBhbmVsIGFuaW1hdGlvbiB0byBpdHMgaW5pdGlhbCBzdGF0ZS4gKi9cbiAgX3Jlc2V0QW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGUgPSAndm9pZCc7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSAnYmVsb3cnIGFuaW1hdGlvbiwgbW92aW5nIGEgbWVudSBkb3duLCBvdXQgb2YgdmlldyBiZWxvdyB0aGVcbiAgICogdmlld3BvcnQuIFVzZWQgdG8gY2xvc2UgdGhlIHdob2xlIG1lbnUsIGZvciBleGFtcGxlIHdoZW4gY2xpY2tpbmdcbiAgICogdGhlIGJhY2tkcm9wLlxuICAgKi9cbiAgX3N0YXJ0VG91Y2hDbG9zZURvd25BbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdiZWxvdyc7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSAnYmVsb3ctd2l0aC1kZWxheScgYW5pbWF0aW9uLCBtb3ZpbmcgYSBtZW51IGRvd24sIG91dCBvZiB2aWV3IGJlbG93IHRoZVxuICAgKiB2aWV3cG9ydC4gVXNlZCB0byBjbG9zZSB0aGUgd2hvbGUgbWVudSBhcyBhIHJlc3BvbnNlIHRvIHRoZSB1c2VyIHRhcHBpbmdcbiAgICogYSBtZW51IGl0ZW0uIFRoZXJlIGlzIGEgc2hvcnQgZGVsYXkgYmVmb3JlIHRoZSBhbmltYXRpb24gc3RhcnRzLCB0byB0aGF0XG4gICAqIHRoZSB1c2VyIGdldHMgYSB2aXN1YWwgZmVlZGJhY2sgb24gd2hhdCBpdGVtIHdhcyBzZWxlY3RlZC5cbiAgICovXG4gIF9zdGFydFRvdWNoQ2xvc2VEb3duQW5pbWF0aW9uV2l0aERlbGF5KCk6IHZvaWQge1xuICAgIHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGUgPSAnYmVsb3ctd2l0aC1kZWxheSc7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSAndm9pZCcgYW5pbWF0aW9uLCBtb3ZpbmcgYSAoc3ViKSBtZW51IG91dCBvZiB2aWV3IHRvIHRoZSBzaWRlXG4gICAqIG9mIHRoZSB2aWV3cG9ydC4gVXNlZCB3aGVuIGdvaW5nIFwiYmFja1wiIGZyb20gYSBzdWIgbWVudS5cbiAgICovXG4gIF9zdGFydFRvdWNoQ2xvc2VTaWRlQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0QW5pbWF0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSBlbnRlci1mcm9tLWJlbG93IGFuaW1hdGlvbiwgbW92aW5nIGEgKHJvb3QpIG1lbnUgaW50byB2aWV3LFxuICAgKiBBbmltYXRlcyB1cHdhcmRzIGZyb20gYSBzdGFydGluZyBwb3NpdGlvbiBiZWxvdyB0aGUgdmlld3BvcnQuXG4gICAqL1xuICBfc3RhcnRUb3VjaFJvb3RFbnRlckFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2VudGVyLWZyb20tYmVsb3cnO1xuICAgIHRoaXMueE9mZnNldCA9IDA7XG4gIH1cblxuICAvKiogU3RhcnRzIHRoZSBlbnRlciBhbmltYXRpb24sIG1vdmluZyBhIChzdWIpIG1lbnUgaW50byB2aWV3LiAqL1xuICBfc3RhcnRUb3VjaFN1Ym1lbnVFbnRlckFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2VudGVyJztcbiAgICB0aGlzLnhPZmZzZXQgPSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgcGFuIGFuaW1hdGlvbiwgdG8gcG9zaXRpb24gYSBzdWJtZW51IGluIGEgcmVzcG9uc2VcbiAgICogdG8gdXNlciBkcmFnZ2luZyBzaWRld2F5cyAocGFubmluZykuXG4gICAqL1xuICBfc3RhcnRUb3VjaFBhbkFuaW1hdGlvbih4T2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ3Bhbic7XG4gICAgdGhpcy54T2Zmc2V0ID0geE9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIHBhbi1oaWRkZW4gYW5pbWF0aW9uLCB0byBwb3NpdGlvbiBhIHBhcmVudCBtZW51IG5leHQgdG8gYW5cbiAgICogYWN0aXZlIHN1Ym1lbnUgdGhhdCB0aGUgdXNlciBpcyBkcmFnZ2luZyBzaWRld2F5cyAocGFubmluZykuXG4gICAqL1xuICBfc3RhcnRUb3VjaEhpZGVQYW5BbmltYXRpb24oeE9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdwYW4taGlkZGVuJztcbiAgICB0aGlzLnhPZmZzZXQgPSB4T2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgaGlkZSBhbmltYXRpb24sIHRvIG1ha2UgYSBwYXJlbnQgbWVudSBzbGlkZSBvdXQgdG8gbGVhdmVcbiAgICogc3BhY2UgZm9yIGEgc3VibWVudS5cbiAgICovXG4gIF9zdGFydFRvdWNoSGlkZUFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2hpZGUnO1xuICAgIHRoaXMueE9mZnNldCA9IDA7XG4gIH1cblxuICAvKiogQ2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIHBhbmVsIGFuaW1hdGlvbiBjb21wbGV0ZXMuICovXG4gIF9vbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fYW5pbWF0aW9uRG9uZS5uZXh0KGV2ZW50KTtcbiAgICB0aGlzLl9pc0FuaW1hdGluZyA9IGZhbHNlO1xuICB9XG5cbiAgX29uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5faXNBbmltYXRpbmcgPSB0cnVlO1xuXG4gICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGVsZW1lbnQgdG8gdGhlIHRvcCBhcyBzb29uIGFzIHRoZSBhbmltYXRpb24gc3RhcnRzLiBUaGlzIGlzIG5lY2Vzc2FyeSxcbiAgICAvLyBiZWNhdXNlIHdlIG1vdmUgZm9jdXMgdG8gdGhlIGZpcnN0IGl0ZW0gd2hpbGUgaXQncyBzdGlsbCBiZWluZyBhbmltYXRlZCwgd2hpY2ggY2FuIHRocm93XG4gICAgLy8gdGhlIGJyb3dzZXIgb2ZmIHdoZW4gaXQgZGV0ZXJtaW5lcyB0aGUgc2Nyb2xsIHBvc2l0aW9uLiBBbHRlcm5hdGl2ZWx5IHdlIGNhbiBtb3ZlIGZvY3VzXG4gICAgLy8gd2hlbiB0aGUgYW5pbWF0aW9uIGlzIGRvbmUsIGhvd2V2ZXIgbW92aW5nIGZvY3VzIGFzeW5jaHJvbm91c2x5IHdpbGwgaW50ZXJydXB0IHNjcmVlblxuICAgIC8vIHJlYWRlcnMgd2hpY2ggYXJlIGluIHRoZSBwcm9jZXNzIG9mIHJlYWRpbmcgb3V0IHRoZSBtZW51IGFscmVhZHkuIFdlIHRha2UgdGhlIGBlbGVtZW50YFxuICAgIC8vIGZyb20gdGhlIGBldmVudGAgc2luY2Ugd2UgY2FuJ3QgdXNlIGEgYFZpZXdDaGlsZGAgdG8gYWNjZXNzIHRoZSBwYW5lLlxuICAgIGlmIChcbiAgICAgIChldmVudC50b1N0YXRlID09PSAnZW50ZXInIHx8IGV2ZW50LnRvU3RhdGUgPT09ICdlbnRlci1mcm9tLWJlbG93JykgJiZcbiAgICAgIHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4ID09PSAwXG4gICAgKSB7XG4gICAgICBldmVudC5lbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjbGljayBvbiB0aGUgbWVudSBieSBlbWl0dGluZyBvbiB0aGUgYGNsb3NlZGAgZW1pdHRlclxuICAgKiB3aXRoIGEgYGNsaWNrYCByZWFzb25cbiAgICovXG4gIF9oYW5kbGVDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCdjbGljaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjbGljayBvbiB0aGUgY2xvc2UgYnV0dG9uIGJ5IGVtaXR0aW5nIG9uIHRoZSBgY2xvc2VkYCBlbWl0dGVyXG4gICAqIHdpdGhvdXQgYW55IHBhcnRpY3VsYXIgcmVhc29uXG4gICAqL1xuICBfaGFuZGxlQ2xvc2VDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGNsaWNrIG9uIHRoZSBiYWNrIGljb24gYnkgZW1pdHRpbmcgb24gdGhlIGBjbGlja2VkYCBlbWl0dGVyXG4gICAqL1xuICBfaGFuZGxlQmFja0NsaWNrKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG93QmFja0J1dHRvbikge1xuICAgICAgLy8gQ2xvc2Ugc3VibWVudSBrZXlkb3duLXN0eWxlOiBjbG9zZSBvbmx5IHRoaXMgbWVudSBhbmQgbGVhdmUgcGFyZW50cyBvcGVuXG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KCdrZXlkb3duJyk7XG4gICAgfVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNsaWVudCBkZXZpY2UgaW5mb3JtYXRpb24gZm9yIHRoZSBtZW51IGFuZCBpdHMgbWVudSBpdGVtcy5cbiAgICovXG4gIF9zZXREZXZpY2UoXG4gICAgY2xpZW50SW5wdXQ6IENsaWVudElucHV0SW50ZXJmYWNlLFxuICAgIGNsaWVudE91dHB1dDogQ2xpZW50T3V0cHV0SW50ZXJmYWNlXG4gICk6IHZvaWQge1xuICAgIHRoaXMuX2NsaWVudElucHV0ID0gY2xpZW50SW5wdXQ7XG4gICAgdGhpcy5fY2xpZW50T3V0cHV0ID0gY2xpZW50T3V0cHV0O1xuXG4gICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uX2NsaWVudElucHV0ID0gY2xpZW50SW5wdXQ7XG4gICAgICBpdGVtLl9jbGllbnRPdXRwdXQgPSBjbGllbnRPdXRwdXQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGFjdGl2ZSBpdGVtIGluIHRoZSBtZW51LiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWQsIGFsbG93aW5nXG4gICAqIHRoZSB1c2VyIHRvIHN0YXJ0IGZyb20gdGhlIGZpcnN0IG9wdGlvbiB3aGVuIHByZXNzaW5nIHRoZSBkb3duIGFycm93LlxuICAgKi9cbiAgcmVzZXRBY3RpdmVJdGVtKCk6IHZvaWQge1xuICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBhIHN0cmVhbSB0aGF0IHdpbGwga2VlcCB0cmFjayBvZiBhbnkgbmV3bHktYWRkZWQgbWVudSBpdGVtcyBhbmQgd2lsbCB1cGRhdGUgdGhlIGxpc3RcbiAgICogb2YgZGlyZWN0IGRlc2NlbmRhbnRzLiBXZSBjb2xsZWN0IHRoZSBkZXNjZW5kYW50cyB0aGlzIHdheSwgYmVjYXVzZSBgX2FsbEl0ZW1zYCBjYW4gaW5jbHVkZVxuICAgKiBpdGVtcyB0aGF0IGFyZSBwYXJ0IG9mIGNoaWxkIG1lbnVzLCBhbmQgdXNpbmcgYSBjdXN0b20gd2F5IG9mIHJlZ2lzdGVyaW5nIGl0ZW1zIGlzIHVucmVsaWFibGVcbiAgICogd2hlbiBpdCBjb21lcyB0byBtYWludGFpbmluZyB0aGUgaXRlbSBvcmRlci5cbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCkge1xuICAgIHRoaXMuX2FsbEl0ZW1zLmNoYW5nZXNcbiAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLl9hbGxJdGVtcykpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtczogUXVlcnlMaXN0PEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD4pID0+IHtcbiAgICAgICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLnJlc2V0KFxuICAgICAgICAgIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5fcGFyZW50TWVudSA9PT0gdGhpcylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLm5vdGlmeU9uQ2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
|