@skyux/popovers 5.0.2 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/bundles/skyux-popovers-testing.umd.js +8 -8
- package/bundles/skyux-popovers.umd.js +43 -39
- package/documentation.json +241 -44
- package/esm2015/index.js +23 -0
- package/esm2015/index.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown-button.component.js +14 -0
- package/esm2015/lib/modules/dropdown/dropdown-button.component.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown-extensions.js +14 -0
- package/esm2015/lib/modules/dropdown/dropdown-extensions.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown-item.component.js +72 -0
- package/esm2015/lib/modules/dropdown/dropdown-item.component.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown-menu.component.js +307 -0
- package/esm2015/lib/modules/dropdown/dropdown-menu.component.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown.component.js +360 -0
- package/esm2015/lib/modules/dropdown/dropdown.component.js.map +1 -0
- package/esm2015/lib/modules/dropdown/dropdown.module.js +60 -0
- package/esm2015/lib/modules/dropdown/dropdown.module.js.map +1 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-horizontal-alignment.js +2 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-horizontal-alignment.js.map +1 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-menu-change.js +2 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-menu-change.js.map +1 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-message-type.js +37 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-message-type.js.map +1 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-message.js +2 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-message.js.map +1 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-trigger-type.js +2 -0
- package/esm2015/lib/modules/dropdown/types/dropdown-trigger-type.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-adapter.service.js +74 -0
- package/esm2015/lib/modules/popover/popover-adapter.service.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-animation-state.js +2 -0
- package/esm2015/lib/modules/popover/popover-animation-state.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-animation.js +19 -0
- package/esm2015/lib/modules/popover/popover-animation.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-content.component.js +268 -0
- package/esm2015/lib/modules/popover/popover-content.component.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-context.js +10 -0
- package/esm2015/lib/modules/popover/popover-context.js.map +1 -0
- package/esm2015/lib/modules/popover/popover-extensions.js +29 -0
- package/esm2015/lib/modules/popover/popover-extensions.js.map +1 -0
- package/esm2015/lib/modules/popover/popover.component.js +203 -0
- package/esm2015/lib/modules/popover/popover.component.js.map +1 -0
- package/esm2015/lib/modules/popover/popover.directive.js +176 -0
- package/esm2015/lib/modules/popover/popover.directive.js.map +1 -0
- package/esm2015/lib/modules/popover/popover.module.js +56 -0
- package/esm2015/lib/modules/popover/popover.module.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-adapter-arrow-coordinates.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-adapter-arrow-coordinates.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-adapter-elements.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-adapter-elements.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-alignment.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-alignment.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-message-type.js +24 -0
- package/esm2015/lib/modules/popover/types/popover-message-type.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-message.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-message.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-placement.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-placement.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-position.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-position.js.map +1 -0
- package/esm2015/lib/modules/popover/types/popover-trigger.js +2 -0
- package/esm2015/lib/modules/popover/types/popover-trigger.js.map +1 -0
- package/esm2015/lib/modules/shared/sky-popovers-resources.module.js +47 -0
- package/esm2015/lib/modules/shared/sky-popovers-resources.module.js.map +1 -0
- package/esm2015/skyux-popovers.js +2 -2
- package/esm2015/skyux-popovers.js.map +1 -0
- package/esm2015/testing/dropdown/dropdown-fixture.js +1 -1
- package/esm2015/testing/dropdown/dropdown-fixture.js.map +1 -0
- package/esm2015/testing/dropdown/dropdown-testing.module.js +5 -5
- package/esm2015/testing/dropdown/dropdown-testing.module.js.map +1 -0
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-item.js +1 -1
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-item.js.map +1 -0
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-menu.js +1 -1
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-menu.js.map +1 -0
- package/esm2015/testing/dropdown/popovers-fixture-dropdown.js +1 -1
- package/esm2015/testing/dropdown/popovers-fixture-dropdown.js.map +1 -0
- package/esm2015/testing/popover/popover-fixture.js +1 -1
- package/esm2015/testing/popover/popover-fixture.js.map +1 -0
- package/esm2015/testing/popover/popover-testing.module.js +5 -5
- package/esm2015/testing/popover/popover-testing.module.js.map +1 -0
- package/esm2015/testing/public-api.js +1 -1
- package/esm2015/testing/public-api.js.map +1 -0
- package/esm2015/testing/skyux-popovers-testing.js +1 -1
- package/esm2015/testing/skyux-popovers-testing.js.map +1 -0
- package/fesm2015/skyux-popovers-testing.js +8 -8
- package/fesm2015/skyux-popovers-testing.js.map +1 -1
- package/fesm2015/skyux-popovers.js +53 -49
- package/fesm2015/skyux-popovers.js.map +1 -1
- package/index.d.ts +20 -0
- package/{modules → lib/modules}/dropdown/dropdown-button.component.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/dropdown-extensions.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/dropdown-item.component.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/dropdown-menu.component.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/dropdown.component.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/dropdown.module.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/types/dropdown-horizontal-alignment.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/types/dropdown-menu-change.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/types/dropdown-message-type.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/types/dropdown-message.d.ts +0 -0
- package/{modules → lib/modules}/dropdown/types/dropdown-trigger-type.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-adapter.service.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-animation-state.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-animation.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-content.component.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-context.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover-extensions.d.ts +0 -0
- package/{modules → lib/modules}/popover/popover.component.d.ts +4 -1
- package/{modules → lib/modules}/popover/popover.directive.d.ts +2 -0
- package/{modules → lib/modules}/popover/popover.module.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-adapter-arrow-coordinates.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-adapter-elements.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-alignment.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-message-type.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-message.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-placement.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-position.d.ts +0 -0
- package/{modules → lib/modules}/popover/types/popover-trigger.d.ts +0 -0
- package/{modules → lib/modules}/shared/sky-popovers-resources.module.d.ts +0 -0
- package/package.json +23 -9
- package/skyux-popovers.d.ts +1 -1
- package/LICENSE +0 -21
- package/esm2015/modules/dropdown/dropdown-button.component.js +0 -14
- package/esm2015/modules/dropdown/dropdown-extensions.js +0 -14
- package/esm2015/modules/dropdown/dropdown-item.component.js +0 -72
- package/esm2015/modules/dropdown/dropdown-menu.component.js +0 -306
- package/esm2015/modules/dropdown/dropdown.component.js +0 -357
- package/esm2015/modules/dropdown/dropdown.module.js +0 -60
- package/esm2015/modules/dropdown/types/dropdown-horizontal-alignment.js +0 -2
- package/esm2015/modules/dropdown/types/dropdown-menu-change.js +0 -2
- package/esm2015/modules/dropdown/types/dropdown-message-type.js +0 -37
- package/esm2015/modules/dropdown/types/dropdown-message.js +0 -2
- package/esm2015/modules/dropdown/types/dropdown-trigger-type.js +0 -2
- package/esm2015/modules/popover/popover-adapter.service.js +0 -74
- package/esm2015/modules/popover/popover-animation-state.js +0 -2
- package/esm2015/modules/popover/popover-animation.js +0 -19
- package/esm2015/modules/popover/popover-content.component.js +0 -266
- package/esm2015/modules/popover/popover-context.js +0 -10
- package/esm2015/modules/popover/popover-extensions.js +0 -29
- package/esm2015/modules/popover/popover.component.js +0 -200
- package/esm2015/modules/popover/popover.directive.js +0 -175
- package/esm2015/modules/popover/popover.module.js +0 -56
- package/esm2015/modules/popover/types/popover-adapter-arrow-coordinates.js +0 -2
- package/esm2015/modules/popover/types/popover-adapter-elements.js +0 -2
- package/esm2015/modules/popover/types/popover-alignment.js +0 -2
- package/esm2015/modules/popover/types/popover-message-type.js +0 -24
- package/esm2015/modules/popover/types/popover-message.js +0 -2
- package/esm2015/modules/popover/types/popover-placement.js +0 -2
- package/esm2015/modules/popover/types/popover-position.js +0 -2
- package/esm2015/modules/popover/types/popover-trigger.js +0 -2
- package/esm2015/modules/shared/sky-popovers-resources.module.js +0 -47
- package/esm2015/public-api.js +0 -23
- package/public-api.d.ts +0 -20
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1hbmltYXRpb24tc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wb3BvdmVycy9zcmMvbW9kdWxlcy9wb3BvdmVyL3BvcG92ZXItYW5pbWF0aW9uLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgdHlwZSBTa3lQb3BvdmVyQW5pbWF0aW9uU3RhdGUgPSAnb3BlbicgfCAnY2xvc2VkJztcbiJdfQ==
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { animate, state, style, transition, trigger, } from '@angular/animations';
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export const skyPopoverAnimation = trigger('skyPopoverAnimation', [
|
|
6
|
-
state('void', style({
|
|
7
|
-
opacity: 0,
|
|
8
|
-
})),
|
|
9
|
-
state('open', style({
|
|
10
|
-
opacity: 1,
|
|
11
|
-
})),
|
|
12
|
-
state('closed', style({
|
|
13
|
-
opacity: 0,
|
|
14
|
-
})),
|
|
15
|
-
transition('void => *', [animate('250ms')]),
|
|
16
|
-
transition('open => closed', [animate('150ms')]),
|
|
17
|
-
transition('closed => open', [animate('150ms')]),
|
|
18
|
-
]);
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1hbmltYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wb3BvdmVycy9zcmMvbW9kdWxlcy9wb3BvdmVyL3BvcG92ZXItYW5pbWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBRVAsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFFN0I7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBNkIsT0FBTyxDQUNsRSxxQkFBcUIsRUFDckI7SUFDRSxLQUFLLENBQ0gsTUFBTSxFQUNOLEtBQUssQ0FBQztRQUNKLE9BQU8sRUFBRSxDQUFDO0tBQ1gsQ0FBQyxDQUNIO0lBQ0QsS0FBSyxDQUNILE1BQU0sRUFDTixLQUFLLENBQUM7UUFDSixPQUFPLEVBQUUsQ0FBQztLQUNYLENBQUMsQ0FDSDtJQUNELEtBQUssQ0FDSCxRQUFRLEVBQ1IsS0FBSyxDQUFDO1FBQ0osT0FBTyxFQUFFLENBQUM7S0FDWCxDQUFDLENBQ0g7SUFDRCxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0MsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDaEQsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Q0FDakQsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhLFxuICBzdGF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3Qgc2t5UG9wb3ZlckFuaW1hdGlvbjogQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhID0gdHJpZ2dlcihcbiAgJ3NreVBvcG92ZXJBbmltYXRpb24nLFxuICBbXG4gICAgc3RhdGUoXG4gICAgICAndm9pZCcsXG4gICAgICBzdHlsZSh7XG4gICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICB9KVxuICAgICksXG4gICAgc3RhdGUoXG4gICAgICAnb3BlbicsXG4gICAgICBzdHlsZSh7XG4gICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICB9KVxuICAgICksXG4gICAgc3RhdGUoXG4gICAgICAnY2xvc2VkJyxcbiAgICAgIHN0eWxlKHtcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgIH0pXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbYW5pbWF0ZSgnMjUwbXMnKV0pLFxuICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2VkJywgW2FuaW1hdGUoJzE1MG1zJyldKSxcbiAgICB0cmFuc2l0aW9uKCdjbG9zZWQgPT4gb3BlbicsIFthbmltYXRlKCcxNTBtcycpXSksXG4gIF1cbik7XG4iXX0=
|
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, Optional, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
2
|
-
import { SkyAffixAutoFitContext, } from '@skyux/core';
|
|
3
|
-
import { fromEvent as observableFromEvent, Subject } from 'rxjs';
|
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { SkyPopoverAdapterService } from './popover-adapter.service';
|
|
6
|
-
import { skyPopoverAnimation } from './popover-animation';
|
|
7
|
-
import { parseAffixHorizontalAlignment, parseAffixPlacement, } from './popover-extensions';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@skyux/core";
|
|
10
|
-
import * as i2 from "./popover-adapter.service";
|
|
11
|
-
import * as i3 from "./popover-context";
|
|
12
|
-
import * as i4 from "@skyux/theme";
|
|
13
|
-
import * as i5 from "@angular/common";
|
|
14
|
-
/**
|
|
15
|
-
* @internal
|
|
16
|
-
*/
|
|
17
|
-
export class SkyPopoverContentComponent {
|
|
18
|
-
constructor(changeDetector, elementRef, affixService, coreAdapterService, adapterService, context, themeSvc) {
|
|
19
|
-
this.changeDetector = changeDetector;
|
|
20
|
-
this.elementRef = elementRef;
|
|
21
|
-
this.affixService = affixService;
|
|
22
|
-
this.coreAdapterService = coreAdapterService;
|
|
23
|
-
this.adapterService = adapterService;
|
|
24
|
-
this.context = context;
|
|
25
|
-
this.themeSvc = themeSvc;
|
|
26
|
-
this.dismissOnBlur = true;
|
|
27
|
-
this.enableAnimations = true;
|
|
28
|
-
this.isOpen = false;
|
|
29
|
-
this.popoverType = 'info';
|
|
30
|
-
this.ngUnsubscribe = new Subject();
|
|
31
|
-
this._closed = new Subject();
|
|
32
|
-
this._isMouseEnter = new Subject();
|
|
33
|
-
this._opened = new Subject();
|
|
34
|
-
}
|
|
35
|
-
get animationState() {
|
|
36
|
-
return this.isOpen ? 'open' : 'closed';
|
|
37
|
-
}
|
|
38
|
-
get closed() {
|
|
39
|
-
return this._closed.asObservable();
|
|
40
|
-
}
|
|
41
|
-
get opened() {
|
|
42
|
-
return this._opened.asObservable();
|
|
43
|
-
}
|
|
44
|
-
get isMouseEnter() {
|
|
45
|
-
return this._isMouseEnter.asObservable();
|
|
46
|
-
}
|
|
47
|
-
ngOnInit() {
|
|
48
|
-
var _a;
|
|
49
|
-
/*istanbul ignore next*/
|
|
50
|
-
this.contentTarget.createEmbeddedView((_a = this.context) === null || _a === void 0 ? void 0 : _a.contentTemplateRef);
|
|
51
|
-
this.addEventListeners();
|
|
52
|
-
/*istanbul ignore else*/
|
|
53
|
-
if (this.themeSvc) {
|
|
54
|
-
this.themeSvc.settingsChange
|
|
55
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
56
|
-
.subscribe((themeSettings) => {
|
|
57
|
-
var _a, _b;
|
|
58
|
-
/*istanbul ignore next*/
|
|
59
|
-
this.themeName = (_b = (_a = themeSettings.currentSettings) === null || _a === void 0 ? void 0 : _a.theme) === null || _b === void 0 ? void 0 : _b.name;
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
ngOnDestroy() {
|
|
64
|
-
this.ngUnsubscribe.next();
|
|
65
|
-
this.ngUnsubscribe.complete();
|
|
66
|
-
this._closed.complete();
|
|
67
|
-
this._isMouseEnter.complete();
|
|
68
|
-
this._opened.complete();
|
|
69
|
-
/* istanbul ignore else */
|
|
70
|
-
if (this.affixer) {
|
|
71
|
-
this.affixer.destroy();
|
|
72
|
-
}
|
|
73
|
-
this._closed =
|
|
74
|
-
this._isMouseEnter =
|
|
75
|
-
this._opened =
|
|
76
|
-
this.affixer =
|
|
77
|
-
this.ngUnsubscribe =
|
|
78
|
-
undefined;
|
|
79
|
-
}
|
|
80
|
-
onAnimationEvent(event) {
|
|
81
|
-
var _a, _b;
|
|
82
|
-
if (event.fromState === 'void') {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
if (event.phaseName === 'done') {
|
|
86
|
-
if (event.toState === 'open') {
|
|
87
|
-
/*istanbul ignore next*/
|
|
88
|
-
(_a = this._opened) === null || _a === void 0 ? void 0 : _a.next();
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
/*istanbul ignore next*/
|
|
92
|
-
(_b = this._closed) === null || _b === void 0 ? void 0 : _b.next();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
open(caller, config) {
|
|
97
|
-
this.caller = caller;
|
|
98
|
-
this.dismissOnBlur = config.dismissOnBlur;
|
|
99
|
-
this.enableAnimations = config.enableAnimations;
|
|
100
|
-
this.horizontalAlignment = config.horizontalAlignment;
|
|
101
|
-
this.placement = config.placement;
|
|
102
|
-
this.popoverTitle = config.popoverTitle;
|
|
103
|
-
if (config.popoverType) {
|
|
104
|
-
this.popoverType = config.popoverType;
|
|
105
|
-
}
|
|
106
|
-
this.changeDetector.markForCheck();
|
|
107
|
-
// Indicates if the popover should be displayed statically.
|
|
108
|
-
// Please note: This feature is internal-only and used by the visual tests to capture multiple
|
|
109
|
-
// states simultaneously without the overhead of event listeners.
|
|
110
|
-
/* istanbul ignore if */
|
|
111
|
-
if (config.isStatic) {
|
|
112
|
-
this.isOpen = true;
|
|
113
|
-
this.changeDetector.markForCheck();
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
// Let the styles render before gauging the affix dimensions.
|
|
117
|
-
setTimeout(() => {
|
|
118
|
-
var _a;
|
|
119
|
-
/*istanbul ignore next*/
|
|
120
|
-
if (!((_a = this.popoverRef) === null || _a === void 0 ? void 0 : _a.nativeElement) ||
|
|
121
|
-
!this.ngUnsubscribe ||
|
|
122
|
-
this.ngUnsubscribe.isStopped) {
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
if (!this.affixer) {
|
|
126
|
-
this.setupAffixer();
|
|
127
|
-
}
|
|
128
|
-
const affixOptions = {
|
|
129
|
-
autoFitContext: SkyAffixAutoFitContext.Viewport,
|
|
130
|
-
enableAutoFit: true,
|
|
131
|
-
horizontalAlignment: parseAffixHorizontalAlignment(this.horizontalAlignment),
|
|
132
|
-
isSticky: true,
|
|
133
|
-
placement: parseAffixPlacement(this.placement),
|
|
134
|
-
};
|
|
135
|
-
// Ensure that we are positioning the vertical alginment correctly. These
|
|
136
|
-
// are the default alignments for all popovers but ensure that we are future proof here.
|
|
137
|
-
if (affixOptions.placement === 'left' ||
|
|
138
|
-
affixOptions.placement === 'right') {
|
|
139
|
-
affixOptions.verticalAlignment = 'middle';
|
|
140
|
-
}
|
|
141
|
-
else if (affixOptions.placement === 'above') {
|
|
142
|
-
affixOptions.verticalAlignment = 'bottom';
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
affixOptions.verticalAlignment = 'top';
|
|
146
|
-
}
|
|
147
|
-
this.affixer.affixTo(this.caller.nativeElement, affixOptions);
|
|
148
|
-
this.updateArrowOffset();
|
|
149
|
-
this.isOpen = true;
|
|
150
|
-
this.changeDetector.markForCheck();
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
close() {
|
|
154
|
-
this.isOpen = false;
|
|
155
|
-
this.changeDetector.markForCheck();
|
|
156
|
-
}
|
|
157
|
-
applyFocus() {
|
|
158
|
-
if (this.isOpen) {
|
|
159
|
-
this.coreAdapterService.getFocusableChildrenAndApplyFocus(this.popoverRef, '.sky-popover', true);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
setupAffixer() {
|
|
163
|
-
const affixer = this.affixService.createAffixer(this.popoverRef);
|
|
164
|
-
affixer.offsetChange.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
165
|
-
this.updateArrowOffset();
|
|
166
|
-
this.changeDetector.markForCheck();
|
|
167
|
-
});
|
|
168
|
-
affixer.overflowScroll.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
169
|
-
this.updateArrowOffset();
|
|
170
|
-
this.changeDetector.markForCheck();
|
|
171
|
-
});
|
|
172
|
-
affixer.placementChange
|
|
173
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
174
|
-
.subscribe((change) => {
|
|
175
|
-
this.placement = change.placement;
|
|
176
|
-
this.changeDetector.markForCheck();
|
|
177
|
-
});
|
|
178
|
-
this.affixer = affixer;
|
|
179
|
-
}
|
|
180
|
-
updateArrowOffset() {
|
|
181
|
-
const { top, left } = this.adapterService.getArrowCoordinates({
|
|
182
|
-
caller: this.caller,
|
|
183
|
-
popover: this.popoverRef,
|
|
184
|
-
popoverArrow: this.arrowRef,
|
|
185
|
-
}, this.placement, this.themeName);
|
|
186
|
-
this.arrowTop = top;
|
|
187
|
-
this.arrowLeft = left;
|
|
188
|
-
}
|
|
189
|
-
addEventListeners() {
|
|
190
|
-
const hostElement = this.elementRef.nativeElement;
|
|
191
|
-
observableFromEvent(hostElement, 'mouseenter')
|
|
192
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
193
|
-
.subscribe(() => this._isMouseEnter.next(true));
|
|
194
|
-
observableFromEvent(hostElement, 'mouseleave')
|
|
195
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
196
|
-
.subscribe(() => this._isMouseEnter.next(false));
|
|
197
|
-
observableFromEvent(hostElement, 'keydown')
|
|
198
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
199
|
-
.subscribe((event) => {
|
|
200
|
-
const key = event.key.toLowerCase();
|
|
201
|
-
/* tslint:disable-next-line:switch-default */
|
|
202
|
-
switch (key) {
|
|
203
|
-
case 'escape':
|
|
204
|
-
this.close();
|
|
205
|
-
this.caller.nativeElement.focus();
|
|
206
|
-
event.preventDefault();
|
|
207
|
-
event.stopPropagation();
|
|
208
|
-
break;
|
|
209
|
-
// Since the popover now lives in an overlay at the bottom of the document body, we need
|
|
210
|
-
// to handle the tab key ourselves. Otherwise, focus would be moved to the browser's
|
|
211
|
-
// search bar.
|
|
212
|
-
case 'tab':
|
|
213
|
-
if (!this.dismissOnBlur) {
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
const focusableItems = this.coreAdapterService.getFocusableChildren(hostElement);
|
|
217
|
-
const isFirstItem = focusableItems[0] === event.target && event.shiftKey;
|
|
218
|
-
const isLastItem = focusableItems[focusableItems.length - 1] === event.target &&
|
|
219
|
-
!event.shiftKey;
|
|
220
|
-
/*istanbul ignore else*/
|
|
221
|
-
if (focusableItems.length === 0 || isFirstItem || isLastItem) {
|
|
222
|
-
this.close();
|
|
223
|
-
this.caller.nativeElement.focus();
|
|
224
|
-
event.preventDefault();
|
|
225
|
-
event.stopPropagation();
|
|
226
|
-
}
|
|
227
|
-
break;
|
|
228
|
-
}
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
SkyPopoverContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyPopoverContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyAffixService }, { token: i1.SkyCoreAdapterService }, { token: i2.SkyPopoverAdapterService }, { token: i3.SkyPopoverContext, optional: true }, { token: i4.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
233
|
-
SkyPopoverContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: SkyPopoverContentComponent, selector: "sky-popover-content", providers: [SkyPopoverAdapterService], viewQueries: [{ propertyName: "arrowRef", first: true, predicate: ["arrowRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "popoverRef", first: true, predicate: ["popoverRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "contentTarget", first: true, predicate: ["contentTarget"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-popover-container sky-popover-max-height\"\n [@.disabled]=\"!enableAnimations\"\n [@skyPopoverAnimation]=\"animationState\"\n [class.sky-popover-hidden]=\"!placement\"\n [ngClass]=\"[\n 'sky-popover-alignment-' + horizontalAlignment,\n 'sky-popover-placement-' + placement,\n 'sky-popover-' + popoverType\n ]\"\n (@skyPopoverAnimation.done)=\"onAnimationEvent($event)\"\n (@skyPopoverAnimation.start)=\"onAnimationEvent($event)\"\n #popoverRef\n>\n <div\n class=\"sky-popover\"\n tabindex=\"-1\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n >\n <header\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-header\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg sky-margin-stacked-lg': 'modern'\n }\"\n >\n <h1\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-title\"\n [skyThemeClass]=\"{\n 'sky-emphasized': 'default',\n 'sky-font-emphasized': 'modern'\n }\"\n >\n {{ popoverTitle }}\n </h1>\n </header>\n <div\n class=\"sky-popover-body\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg': 'modern'\n }\"\n >\n <ng-container #contentTarget></ng-container>\n </div>\n <span\n aria-hidden=\"true\"\n class=\"sky-popover-arrow\"\n [style.left.px]=\"arrowLeft\"\n [style.top.px]=\"arrowTop\"\n #arrowRef\n ></span>\n </div>\n</div>\n", styles: [".sky-popover-container{position:fixed;min-width:276px;max-width:276px}.sky-popover-container.sky-popover-hidden{visibility:hidden;opacity:0;pointer-events:none!important}.sky-popover-container.sky-popover-hidden *{pointer-events:none!important}.sky-popover-container.sky-popover-static .sky-popover-arrow{position:absolute}.sky-popover-container:focus{outline:none}@media (max-width: 276px){.sky-popover-container{max-width:100%;min-width:auto}}.sky-popover{background-color:#fff}.sky-popover-header{padding-bottom:0}.sky-popover-header+.sky-popover-body{padding-top:2px}.sky-popover-title{margin:0}.sky-popover-arrow{width:0;height:0;position:fixed;border:10px solid transparent}.sky-popover-placement-above{padding-bottom:10px}.sky-popover-placement-above .sky-popover{border-bottom:10px solid #00b4f1}.sky-popover-placement-above .sky-popover-arrow{border-bottom:0;border-top-color:#00b4f1;bottom:0;left:50%;margin-left:-10px}.sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044}.sky-popover-placement-below{padding-top:10px}.sky-popover-placement-below .sky-popover{border-top:10px solid #00b4f1}.sky-popover-placement-below .sky-popover-arrow{border-top:0;border-bottom-color:#00b4f1;top:0;left:50%;margin-left:-10px}.sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044}.sky-popover-placement-right{padding-left:10px}.sky-popover-placement-right .sky-popover{border-left:10px solid #00b4f1}.sky-popover-placement-right .sky-popover-arrow{border-left:0;border-right-color:#00b4f1;left:0;top:50%;margin-top:-10px}.sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-right-color:#ef4044}.sky-popover-placement-left{padding-right:10px}.sky-popover-placement-left .sky-popover{border-right:10px solid #00b4f1}.sky-popover-placement-left .sky-popover-arrow{border-right:0;border-left-color:#00b4f1;right:0;top:50%;margin-top:-10px}.sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-left-color:#ef4044}.sky-popover-placement-above.sky-popover-alignment-left .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-left .sky-popover-arrow{left:40px;right:auto}.sky-popover-placement-above.sky-popover-alignment-right .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-right .sky-popover-arrow{left:auto;right:40px}.sky-popover-max-height .sky-popover{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}:host-context(.sky-theme-modern) .sky-popover{border-radius:6px}:host-context(.sky-theme-modern) .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-above{padding-bottom:10px}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-below{padding-top:10px}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-right{padding-left:10px}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-left{padding-right:10px}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover{border-radius:6px}.sky-theme-modern .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}.sky-theme-modern .sky-popover-placement-above{padding-bottom:10px}.sky-theme-modern .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover-placement-below{padding-top:10px}.sky-theme-modern .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-right{padding-left:10px}.sky-theme-modern .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-left{padding-right:10px}.sky-theme-modern .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}\n"], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [skyPopoverAnimation] });
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyPopoverContentComponent, decorators: [{
|
|
235
|
-
type: Component,
|
|
236
|
-
args: [{
|
|
237
|
-
selector: 'sky-popover-content',
|
|
238
|
-
templateUrl: './popover-content.component.html',
|
|
239
|
-
styleUrls: ['./popover-content.component.scss'],
|
|
240
|
-
animations: [skyPopoverAnimation],
|
|
241
|
-
providers: [SkyPopoverAdapterService],
|
|
242
|
-
}]
|
|
243
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.SkyAffixService }, { type: i1.SkyCoreAdapterService }, { type: i2.SkyPopoverAdapterService }, { type: i3.SkyPopoverContext, decorators: [{
|
|
244
|
-
type: Optional
|
|
245
|
-
}] }, { type: i4.SkyThemeService, decorators: [{
|
|
246
|
-
type: Optional
|
|
247
|
-
}] }]; }, propDecorators: { arrowRef: [{
|
|
248
|
-
type: ViewChild,
|
|
249
|
-
args: ['arrowRef', {
|
|
250
|
-
read: ElementRef,
|
|
251
|
-
static: true,
|
|
252
|
-
}]
|
|
253
|
-
}], popoverRef: [{
|
|
254
|
-
type: ViewChild,
|
|
255
|
-
args: ['popoverRef', {
|
|
256
|
-
read: ElementRef,
|
|
257
|
-
static: true,
|
|
258
|
-
}]
|
|
259
|
-
}], contentTarget: [{
|
|
260
|
-
type: ViewChild,
|
|
261
|
-
args: ['contentTarget', {
|
|
262
|
-
read: ViewContainerRef,
|
|
263
|
-
static: true,
|
|
264
|
-
}]
|
|
265
|
-
}] } });
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcG92ZXJzL3NyYy9tb2R1bGVzL3BvcG92ZXIvcG9wb3Zlci1jb250ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcG92ZXJzL3NyYy9tb2R1bGVzL3BvcG92ZXIvcG9wb3Zlci1jb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUdWLFFBQVEsRUFDUixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxzQkFBc0IsR0FLdkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLFNBQVMsSUFBSSxtQkFBbUIsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTTNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBTTFELE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFFOUI7O0dBRUc7QUFRSCxNQUFNLE9BQU8sMEJBQTBCO0lBbUVyQyxZQUNVLGNBQWlDLEVBQ2pDLFVBQXNCLEVBQ3RCLFlBQTZCLEVBQzdCLGtCQUF5QyxFQUN6QyxjQUF3QyxFQUM1QixPQUEyQixFQUMzQixRQUEwQjtRQU50QyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF1QjtR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QjtrQkFQdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixXQUFXLEVBQUUsa0NBQWtDO29CQUMvQyxTQUFTLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztvQkFDL0MsVUFBVSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ2pDLFNBQVMsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUN0Qzs7MEJBMEVJLFFBQVE7OzBCQUNSLFFBQVE7NENBL0JILFFBQVE7c0JBSmYsU0FBUzt1QkFBQyxVQUFVLEVBQUU7d0JBQ3JCLElBQUksRUFBRSxVQUFVO3dCQUNoQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxVQUFVO3NCQUpqQixTQUFTO3VCQUFDLFlBQVksRUFBRTt3QkFDdkIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9PLGFBQWE7c0JBSnBCLFNBQVM7dUJBQUMsZUFBZSxFQUFFO3dCQUMxQixJQUFJLEVBQUUsZ0JBQWdCO3dCQUN0QixNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhDb25maWcsXG4gIFNreUFmZml4ZXIsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IGZyb21FdmVudCBhcyBvYnNlcnZhYmxlRnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5UG9wb3ZlckFsaWdubWVudCB9IGZyb20gJy4vdHlwZXMvcG9wb3Zlci1hbGlnbm1lbnQnO1xuXG5pbXBvcnQgeyBTa3lQb3BvdmVyUGxhY2VtZW50IH0gZnJvbSAnLi90eXBlcy9wb3BvdmVyLXBsYWNlbWVudCc7XG5cbmltcG9ydCB7IFNreVBvcG92ZXJBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vcG9wb3Zlci1hZGFwdGVyLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBza3lQb3BvdmVyQW5pbWF0aW9uIH0gZnJvbSAnLi9wb3BvdmVyLWFuaW1hdGlvbic7XG5cbmltcG9ydCB7IFNreVBvcG92ZXJBbmltYXRpb25TdGF0ZSB9IGZyb20gJy4vcG9wb3Zlci1hbmltYXRpb24tc3RhdGUnO1xuXG5pbXBvcnQgeyBTa3lQb3BvdmVyQ29udGV4dCB9IGZyb20gJy4vcG9wb3Zlci1jb250ZXh0JztcblxuaW1wb3J0IHtcbiAgcGFyc2VBZmZpeEhvcml6b250YWxBbGlnbm1lbnQsXG4gIHBhcnNlQWZmaXhQbGFjZW1lbnQsXG59IGZyb20gJy4vcG9wb3Zlci1leHRlbnNpb25zJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXBvcG92ZXItY29udGVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wb3BvdmVyLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW3NreVBvcG92ZXJBbmltYXRpb25dLFxuICBwcm92aWRlcnM6IFtTa3lQb3BvdmVyQWRhcHRlclNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lQb3BvdmVyQ29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGdldCBhbmltYXRpb25TdGF0ZSgpOiBTa3lQb3BvdmVyQW5pbWF0aW9uU3RhdGUge1xuICAgIHJldHVybiB0aGlzLmlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnO1xuICB9XG5cbiAgcHVibGljIGdldCBjbG9zZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlbmVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9vcGVuZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTW91c2VFbnRlcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNNb3VzZUVudGVyLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGFmZml4ZXI6IFNreUFmZml4ZXI7XG5cbiAgcHVibGljIGFycm93TGVmdDogbnVtYmVyO1xuXG4gIHB1YmxpYyBhcnJvd1RvcDogbnVtYmVyO1xuXG4gIHB1YmxpYyBkaXNtaXNzT25CbHVyOiBib29sZWFuID0gdHJ1ZTtcblxuICBwdWJsaWMgZW5hYmxlQW5pbWF0aW9uczogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHVibGljIGhvcml6b250YWxBbGlnbm1lbnQ6IFNreVBvcG92ZXJBbGlnbm1lbnQ7XG5cbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBwbGFjZW1lbnQ6IFNreVBvcG92ZXJQbGFjZW1lbnQ7XG5cbiAgcHVibGljIHBvcG92ZXJUaXRsZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBwb3BvdmVyVHlwZTogJ2RhbmdlcicgfCAnaW5mbycgPSAnaW5mbyc7XG5cbiAgcHVibGljIHRoZW1lTmFtZTogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ2Fycm93UmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIGFycm93UmVmOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXJSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgcG9wb3ZlclJlZjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdjb250ZW50VGFyZ2V0Jywge1xuICAgIHJlYWQ6IFZpZXdDb250YWluZXJSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIGNvbnRlbnRUYXJnZXQ6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSBjYWxsZXI6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9jbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2lzTW91c2VFbnRlciA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgcHJpdmF0ZSBfb3BlbmVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBwcml2YXRlIGNvcmVBZGFwdGVyU2VydmljZTogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWRhcHRlclNlcnZpY2U6IFNreVBvcG92ZXJBZGFwdGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRleHQ/OiBTa3lQb3BvdmVyQ29udGV4dCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCovXG4gICAgdGhpcy5jb250ZW50VGFyZ2V0LmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmNvbnRleHQ/LmNvbnRlbnRUZW1wbGF0ZVJlZik7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMudGhlbWVTdmMpIHtcbiAgICAgIHRoaXMudGhlbWVTdmMuc2V0dGluZ3NDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHRoZW1lU2V0dGluZ3MpID0+IHtcbiAgICAgICAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0Ki9cbiAgICAgICAgICB0aGlzLnRoZW1lTmFtZSA9IHRoZW1lU2V0dGluZ3MuY3VycmVudFNldHRpbmdzPy50aGVtZT8ubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLl9jbG9zZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9pc01vdXNlRW50ZXIuY29tcGxldGUoKTtcbiAgICB0aGlzLl9vcGVuZWQuY29tcGxldGUoKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuYWZmaXhlcikge1xuICAgICAgdGhpcy5hZmZpeGVyLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jbG9zZWQgPVxuICAgICAgdGhpcy5faXNNb3VzZUVudGVyID1cbiAgICAgIHRoaXMuX29wZW5lZCA9XG4gICAgICB0aGlzLmFmZml4ZXIgPVxuICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlID1cbiAgICAgICAgdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIG9uQW5pbWF0aW9uRXZlbnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmZyb21TdGF0ZSA9PT0gJ3ZvaWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnBoYXNlTmFtZSA9PT0gJ2RvbmUnKSB7XG4gICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ29wZW4nKSB7XG4gICAgICAgIC8qaXN0YW5idWwgaWdub3JlIG5leHQqL1xuICAgICAgICB0aGlzLl9vcGVuZWQ/Lm5leHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qaXN0YW5idWwgaWdub3JlIG5leHQqL1xuICAgICAgICB0aGlzLl9jbG9zZWQ/Lm5leHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbihcbiAgICBjYWxsZXI6IEVsZW1lbnRSZWYsXG4gICAgY29uZmlnOiB7XG4gICAgICBkaXNtaXNzT25CbHVyOiBib29sZWFuO1xuICAgICAgZW5hYmxlQW5pbWF0aW9uczogYm9vbGVhbjtcbiAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IFNreVBvcG92ZXJBbGlnbm1lbnQ7XG4gICAgICBpc1N0YXRpYzogYm9vbGVhbjtcbiAgICAgIHBsYWNlbWVudDogU2t5UG9wb3ZlclBsYWNlbWVudDtcbiAgICAgIHBvcG92ZXJUaXRsZTogc3RyaW5nO1xuICAgICAgcG9wb3ZlclR5cGU/OiAnZGFuZ2VyJyB8ICdpbmZvJztcbiAgICB9XG4gICk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGVyID0gY2FsbGVyO1xuICAgIHRoaXMuZGlzbWlzc09uQmx1ciA9IGNvbmZpZy5kaXNtaXNzT25CbHVyO1xuICAgIHRoaXMuZW5hYmxlQW5pbWF0aW9ucyA9IGNvbmZpZy5lbmFibGVBbmltYXRpb25zO1xuICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudCA9IGNvbmZpZy5ob3Jpem9udGFsQWxpZ25tZW50O1xuICAgIHRoaXMucGxhY2VtZW50ID0gY29uZmlnLnBsYWNlbWVudDtcbiAgICB0aGlzLnBvcG92ZXJUaXRsZSA9IGNvbmZpZy5wb3BvdmVyVGl0bGU7XG4gICAgaWYgKGNvbmZpZy5wb3BvdmVyVHlwZSkge1xuICAgICAgdGhpcy5wb3BvdmVyVHlwZSA9IGNvbmZpZy5wb3BvdmVyVHlwZTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgLy8gSW5kaWNhdGVzIGlmIHRoZSBwb3BvdmVyIHNob3VsZCBiZSBkaXNwbGF5ZWQgc3RhdGljYWxseS5cbiAgICAvLyBQbGVhc2Ugbm90ZTogVGhpcyBmZWF0dXJlIGlzIGludGVybmFsLW9ubHkgYW5kIHVzZWQgYnkgdGhlIHZpc3VhbCB0ZXN0cyB0byBjYXB0dXJlIG11bHRpcGxlXG4gICAgLy8gc3RhdGVzIHNpbXVsdGFuZW91c2x5IHdpdGhvdXQgdGhlIG92ZXJoZWFkIG9mIGV2ZW50IGxpc3RlbmVycy5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoY29uZmlnLmlzU3RhdGljKSB7XG4gICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIExldCB0aGUgc3R5bGVzIHJlbmRlciBiZWZvcmUgZ2F1Z2luZyB0aGUgYWZmaXggZGltZW5zaW9ucy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIG5leHQqL1xuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5wb3BvdmVyUmVmPy5uYXRpdmVFbGVtZW50IHx8XG4gICAgICAgICF0aGlzLm5nVW5zdWJzY3JpYmUgfHxcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmlzU3RvcHBlZFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmFmZml4ZXIpIHtcbiAgICAgICAgdGhpcy5zZXR1cEFmZml4ZXIoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWZmaXhPcHRpb25zOiBTa3lBZmZpeENvbmZpZyA9IHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IHBhcnNlQWZmaXhIb3Jpem9udGFsQWxpZ25tZW50KFxuICAgICAgICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudFxuICAgICAgICApLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiBwYXJzZUFmZml4UGxhY2VtZW50KHRoaXMucGxhY2VtZW50KSxcbiAgICAgIH07XG5cbiAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGFyZSBwb3NpdGlvbmluZyB0aGUgdmVydGljYWwgYWxnaW5tZW50IGNvcnJlY3RseS4gVGhlc2VcbiAgICAgIC8vIGFyZSB0aGUgZGVmYXVsdCBhbGlnbm1lbnRzIGZvciBhbGwgcG9wb3ZlcnMgYnV0IGVuc3VyZSB0aGF0IHdlIGFyZSBmdXR1cmUgcHJvb2YgaGVyZS5cbiAgICAgIGlmIChcbiAgICAgICAgYWZmaXhPcHRpb25zLnBsYWNlbWVudCA9PT0gJ2xlZnQnIHx8XG4gICAgICAgIGFmZml4T3B0aW9ucy5wbGFjZW1lbnQgPT09ICdyaWdodCdcbiAgICAgICkge1xuICAgICAgICBhZmZpeE9wdGlvbnMudmVydGljYWxBbGlnbm1lbnQgPSAnbWlkZGxlJztcbiAgICAgIH0gZWxzZSBpZiAoYWZmaXhPcHRpb25zLnBsYWNlbWVudCA9PT0gJ2Fib3ZlJykge1xuICAgICAgICBhZmZpeE9wdGlvbnMudmVydGljYWxBbGlnbm1lbnQgPSAnYm90dG9tJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFmZml4T3B0aW9ucy52ZXJ0aWNhbEFsaWdubWVudCA9ICd0b3AnO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFmZml4ZXIuYWZmaXhUbyh0aGlzLmNhbGxlci5uYXRpdmVFbGVtZW50LCBhZmZpeE9wdGlvbnMpO1xuXG4gICAgICB0aGlzLnVwZGF0ZUFycm93T2Zmc2V0KCk7XG5cbiAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGFwcGx5Rm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLmNvcmVBZGFwdGVyU2VydmljZS5nZXRGb2N1c2FibGVDaGlsZHJlbkFuZEFwcGx5Rm9jdXMoXG4gICAgICAgIHRoaXMucG9wb3ZlclJlZixcbiAgICAgICAgJy5za3ktcG9wb3ZlcicsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEFmZml4ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYWZmaXhlciA9IHRoaXMuYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy5wb3BvdmVyUmVmKTtcblxuICAgIGFmZml4ZXIub2Zmc2V0Q2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUFycm93T2Zmc2V0KCk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgYWZmaXhlci5vdmVyZmxvd1Njcm9sbC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVBcnJvd09mZnNldCgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIGFmZml4ZXIucGxhY2VtZW50Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICB0aGlzLnBsYWNlbWVudCA9IGNoYW5nZS5wbGFjZW1lbnQ7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWZmaXhlciA9IGFmZml4ZXI7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFycm93T2Zmc2V0KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgdG9wLCBsZWZ0IH0gPSB0aGlzLmFkYXB0ZXJTZXJ2aWNlLmdldEFycm93Q29vcmRpbmF0ZXMoXG4gICAgICB7XG4gICAgICAgIGNhbGxlcjogdGhpcy5jYWxsZXIsXG4gICAgICAgIHBvcG92ZXI6IHRoaXMucG9wb3ZlclJlZixcbiAgICAgICAgcG9wb3ZlckFycm93OiB0aGlzLmFycm93UmVmLFxuICAgICAgfSxcbiAgICAgIHRoaXMucGxhY2VtZW50LFxuICAgICAgdGhpcy50aGVtZU5hbWVcbiAgICApO1xuXG4gICAgdGhpcy5hcnJvd1RvcCA9IHRvcDtcbiAgICB0aGlzLmFycm93TGVmdCA9IGxlZnQ7XG4gIH1cblxuICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGhvc3RFbGVtZW50LCAnbW91c2VlbnRlcicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5faXNNb3VzZUVudGVyLm5leHQodHJ1ZSkpO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChob3N0RWxlbWVudCwgJ21vdXNlbGVhdmUnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2lzTW91c2VFbnRlci5uZXh0KGZhbHNlKSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGhvc3RFbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpzd2l0Y2gtZGVmYXVsdCAqL1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgIGNhc2UgJ2VzY2FwZSc6XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLmNhbGxlci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIC8vIFNpbmNlIHRoZSBwb3BvdmVyIG5vdyBsaXZlcyBpbiBhbiBvdmVybGF5IGF0IHRoZSBib3R0b20gb2YgdGhlIGRvY3VtZW50IGJvZHksIHdlIG5lZWRcbiAgICAgICAgICAvLyB0byBoYW5kbGUgdGhlIHRhYiBrZXkgb3Vyc2VsdmVzLiBPdGhlcndpc2UsIGZvY3VzIHdvdWxkIGJlIG1vdmVkIHRvIHRoZSBicm93c2VyJ3NcbiAgICAgICAgICAvLyBzZWFyY2ggYmFyLlxuICAgICAgICAgIGNhc2UgJ3RhYic6XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzbWlzc09uQmx1cikge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZvY3VzYWJsZUl0ZW1zID1cbiAgICAgICAgICAgICAgdGhpcy5jb3JlQWRhcHRlclNlcnZpY2UuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4oaG9zdEVsZW1lbnQpO1xuXG4gICAgICAgICAgICBjb25zdCBpc0ZpcnN0SXRlbSA9XG4gICAgICAgICAgICAgIGZvY3VzYWJsZUl0ZW1zWzBdID09PSBldmVudC50YXJnZXQgJiYgZXZlbnQuc2hpZnRLZXk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzTGFzdEl0ZW0gPVxuICAgICAgICAgICAgICBmb2N1c2FibGVJdGVtc1tmb2N1c2FibGVJdGVtcy5sZW5ndGggLSAxXSA9PT0gZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgICAgICFldmVudC5zaGlmdEtleTtcblxuICAgICAgICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgICAgICAgICBpZiAoZm9jdXNhYmxlSXRlbXMubGVuZ3RoID09PSAwIHx8IGlzRmlyc3RJdGVtIHx8IGlzTGFzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICB0aGlzLmNhbGxlci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LXBvcG92ZXItY29udGFpbmVyIHNreS1wb3BvdmVyLW1heC1oZWlnaHRcIlxuICBbQC5kaXNhYmxlZF09XCIhZW5hYmxlQW5pbWF0aW9uc1wiXG4gIFtAc2t5UG9wb3ZlckFuaW1hdGlvbl09XCJhbmltYXRpb25TdGF0ZVwiXG4gIFtjbGFzcy5za3ktcG9wb3Zlci1oaWRkZW5dPVwiIXBsYWNlbWVudFwiXG4gIFtuZ0NsYXNzXT1cIltcbiAgICAnc2t5LXBvcG92ZXItYWxpZ25tZW50LScgKyBob3Jpem9udGFsQWxpZ25tZW50LFxuICAgICdza3ktcG9wb3Zlci1wbGFjZW1lbnQtJyArIHBsYWNlbWVudCxcbiAgICAnc2t5LXBvcG92ZXItJyArIHBvcG92ZXJUeXBlXG4gIF1cIlxuICAoQHNreVBvcG92ZXJBbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkV2ZW50KCRldmVudClcIlxuICAoQHNreVBvcG92ZXJBbmltYXRpb24uc3RhcnQpPVwib25BbmltYXRpb25FdmVudCgkZXZlbnQpXCJcbiAgI3BvcG92ZXJSZWZcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LXBvcG92ZXJcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICdza3ktcm91bmRlZC1jb3JuZXJzIHNreS1zaGFkb3cnOiAnZGVmYXVsdCcsXG4gICAgICAnc2t5LWVsZXZhdGlvbi00JzogJ21vZGVybidcbiAgICB9XCJcbiAgPlxuICAgIDxoZWFkZXJcbiAgICAgICpuZ0lmPVwicG9wb3ZlclRpdGxlXCJcbiAgICAgIGNsYXNzPVwic2t5LXBvcG92ZXItaGVhZGVyXCJcbiAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgJ3NreS1wYWRkaW5nLWV2ZW4tZGVmYXVsdCc6ICdkZWZhdWx0JyxcbiAgICAgICAgJ3NreS1wYWRkaW5nLWV2ZW4tbGcgc2t5LW1hcmdpbi1zdGFja2VkLWxnJzogJ21vZGVybidcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxoMVxuICAgICAgICAqbmdJZj1cInBvcG92ZXJUaXRsZVwiXG4gICAgICAgIGNsYXNzPVwic2t5LXBvcG92ZXItdGl0bGVcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1lbXBoYXNpemVkJzogJ2RlZmF1bHQnLFxuICAgICAgICAgICdza3ktZm9udC1lbXBoYXNpemVkJzogJ21vZGVybidcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIHt7IHBvcG92ZXJUaXRsZSB9fVxuICAgICAgPC9oMT5cbiAgICA8L2hlYWRlcj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1wb3BvdmVyLWJvZHlcIlxuICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LXBhZGRpbmctZXZlbi1kZWZhdWx0JzogJ2RlZmF1bHQnLFxuICAgICAgICAnc2t5LXBhZGRpbmctZXZlbi1sZyc6ICdtb2Rlcm4nXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICNjb250ZW50VGFyZ2V0PjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxzcGFuXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgY2xhc3M9XCJza3ktcG9wb3Zlci1hcnJvd1wiXG4gICAgICBbc3R5bGUubGVmdC5weF09XCJhcnJvd0xlZnRcIlxuICAgICAgW3N0eWxlLnRvcC5weF09XCJhcnJvd1RvcFwiXG4gICAgICAjYXJyb3dSZWZcbiAgICA+PC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @dynamic
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export class SkyPopoverContext {
|
|
6
|
-
constructor(args) {
|
|
7
|
-
this.contentTemplateRef = args.contentTemplateRef;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvcG9wb3Zlci9wb3BvdmVyLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUFZLElBQThDO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDcEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAZHluYW1pY1xuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lQb3BvdmVyQ29udGV4dCB7XG4gIHB1YmxpYyByZWFkb25seSBjb250ZW50VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IoYXJnczogeyBjb250ZW50VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4gfSkge1xuICAgIHRoaXMuY29udGVudFRlbXBsYXRlUmVmID0gYXJncy5jb250ZW50VGVtcGxhdGVSZWY7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export function parseAffixPlacement(placement) {
|
|
2
|
-
switch (placement) {
|
|
3
|
-
case 'above':
|
|
4
|
-
return 'above';
|
|
5
|
-
case 'below':
|
|
6
|
-
return 'below';
|
|
7
|
-
case 'right':
|
|
8
|
-
return 'right';
|
|
9
|
-
case 'left':
|
|
10
|
-
return 'left';
|
|
11
|
-
/* istanbul ignore next */
|
|
12
|
-
default:
|
|
13
|
-
throw `SkyAffixPlacement does not have a matching value for '${placement}'!`;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export function parseAffixHorizontalAlignment(alignment) {
|
|
17
|
-
switch (alignment) {
|
|
18
|
-
case 'center':
|
|
19
|
-
return 'center';
|
|
20
|
-
case 'left':
|
|
21
|
-
return 'left';
|
|
22
|
-
case 'right':
|
|
23
|
-
return 'right';
|
|
24
|
-
/* istanbul ignore next */
|
|
25
|
-
default:
|
|
26
|
-
throw `SkyAffixHorizontalAlignment does not have a matching value for '${alignment}'!`;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1leHRlbnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvcG9wb3Zlci9wb3BvdmVyLWV4dGVuc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxTQUE4QjtJQUU5QixRQUFRLFNBQVMsRUFBRTtRQUNqQixLQUFLLE9BQU87WUFDVixPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLE9BQU87WUFDVixPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLE9BQU87WUFDVixPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLE1BQU07WUFDVCxPQUFPLE1BQU0sQ0FBQztRQUNoQiwwQkFBMEI7UUFDMUI7WUFDRSxNQUFNLHlEQUF5RCxTQUFTLElBQUksQ0FBQztLQUNoRjtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQzNDLFNBQThCO0lBRTlCLFFBQVEsU0FBUyxFQUFFO1FBQ2pCLEtBQUssUUFBUTtZQUNYLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLEtBQUssTUFBTTtZQUNULE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssT0FBTztZQUNWLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLDBCQUEwQjtRQUMxQjtZQUNFLE1BQU0sbUVBQW1FLFNBQVMsSUFBSSxDQUFDO0tBQzFGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCwgU2t5QWZmaXhQbGFjZW1lbnQgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFNreVBvcG92ZXJBbGlnbm1lbnQgfSBmcm9tICcuL3R5cGVzL3BvcG92ZXItYWxpZ25tZW50JztcblxuaW1wb3J0IHsgU2t5UG9wb3ZlclBsYWNlbWVudCB9IGZyb20gJy4vdHlwZXMvcG9wb3Zlci1wbGFjZW1lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBZmZpeFBsYWNlbWVudChcbiAgcGxhY2VtZW50OiBTa3lQb3BvdmVyUGxhY2VtZW50XG4pOiBTa3lBZmZpeFBsYWNlbWVudCB7XG4gIHN3aXRjaCAocGxhY2VtZW50KSB7XG4gICAgY2FzZSAnYWJvdmUnOlxuICAgICAgcmV0dXJuICdhYm92ZSc7XG4gICAgY2FzZSAnYmVsb3cnOlxuICAgICAgcmV0dXJuICdiZWxvdyc7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICByZXR1cm4gJ2xlZnQnO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IGBTa3lBZmZpeFBsYWNlbWVudCBkb2VzIG5vdCBoYXZlIGEgbWF0Y2hpbmcgdmFsdWUgZm9yICcke3BsYWNlbWVudH0nIWA7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQWZmaXhIb3Jpem9udGFsQWxpZ25tZW50KFxuICBhbGlnbm1lbnQ6IFNreVBvcG92ZXJBbGlnbm1lbnRcbik6IFNreUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCB7XG4gIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgY2FzZSAnY2VudGVyJzpcbiAgICAgIHJldHVybiAnY2VudGVyJztcbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgYFNreUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCBkb2VzIG5vdCBoYXZlIGEgbWF0Y2hpbmcgdmFsdWUgZm9yICcke2FsaWdubWVudH0nIWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { SkyPopoverContentComponent } from './popover-content.component';
|
|
5
|
-
import { SkyPopoverContext } from './popover-context';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@skyux/core";
|
|
8
|
-
export class SkyPopoverComponent {
|
|
9
|
-
constructor(overlayService) {
|
|
10
|
-
this.overlayService = overlayService;
|
|
11
|
-
/**
|
|
12
|
-
* Fires when users close the popover.
|
|
13
|
-
*/
|
|
14
|
-
this.popoverClosed = new EventEmitter();
|
|
15
|
-
/**
|
|
16
|
-
* Fires when users open the popover.
|
|
17
|
-
*/
|
|
18
|
-
this.popoverOpened = new EventEmitter();
|
|
19
|
-
/**
|
|
20
|
-
* Indicates that the popover is in the process of being opened or closed.
|
|
21
|
-
* @internal
|
|
22
|
-
*/
|
|
23
|
-
this.isActive = false;
|
|
24
|
-
/**
|
|
25
|
-
* Used by unit tests to disable animations since the component is injected at the bottom of the
|
|
26
|
-
* document body.
|
|
27
|
-
* @internal
|
|
28
|
-
*/
|
|
29
|
-
this.enableAnimations = true;
|
|
30
|
-
this.isMouseEnter = false;
|
|
31
|
-
this.isMarkedForCloseOnMouseLeave = false;
|
|
32
|
-
this.ngUnsubscribe = new Subject();
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Specifies the horizontal alignment of the popover in relation to the trigger element.
|
|
36
|
-
* The `skyPopoverAlignment` property on the popover directive overwrites this property.
|
|
37
|
-
* @default "center"
|
|
38
|
-
*/
|
|
39
|
-
set alignment(value) {
|
|
40
|
-
this._alignment = value;
|
|
41
|
-
}
|
|
42
|
-
get alignment() {
|
|
43
|
-
return this._alignment || 'center';
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Indicates whether to close the popover when it loses focus.
|
|
47
|
-
* To require users to click a trigger button to close the popover, set this input to false.
|
|
48
|
-
* @default true
|
|
49
|
-
*/
|
|
50
|
-
set dismissOnBlur(value) {
|
|
51
|
-
this._dismissOnBlur = value;
|
|
52
|
-
}
|
|
53
|
-
get dismissOnBlur() {
|
|
54
|
-
if (this._dismissOnBlur === undefined) {
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
return this._dismissOnBlur;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Specifies the placement of the popover in relation to the trigger element.
|
|
61
|
-
* The `skyPopoverPlacement` property on the popover directive overwrites this property.
|
|
62
|
-
* @default "above"
|
|
63
|
-
*/
|
|
64
|
-
set placement(value) {
|
|
65
|
-
this._placement = value;
|
|
66
|
-
}
|
|
67
|
-
get placement() {
|
|
68
|
-
return this._placement || 'above';
|
|
69
|
-
}
|
|
70
|
-
ngOnDestroy() {
|
|
71
|
-
this.ngUnsubscribe.next();
|
|
72
|
-
this.ngUnsubscribe.complete();
|
|
73
|
-
this.ngUnsubscribe = undefined;
|
|
74
|
-
if (this.overlay) {
|
|
75
|
-
this.overlayService.close(this.overlay);
|
|
76
|
-
this.overlay = undefined;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Positions the popover next to a given caller element.
|
|
81
|
-
* @param caller The element that opened the popover.
|
|
82
|
-
* @param placement The placement of the popover.
|
|
83
|
-
* @param alignment The horizontal alignment of the popover.
|
|
84
|
-
* @internal
|
|
85
|
-
*/
|
|
86
|
-
positionNextTo(caller, placement, alignment) {
|
|
87
|
-
if (!this.overlay) {
|
|
88
|
-
this.setupOverlay();
|
|
89
|
-
}
|
|
90
|
-
this.placement = placement;
|
|
91
|
-
this.alignment = alignment;
|
|
92
|
-
this.isActive = true;
|
|
93
|
-
this.contentRef.open(caller, {
|
|
94
|
-
dismissOnBlur: this.dismissOnBlur,
|
|
95
|
-
enableAnimations: this.enableAnimations,
|
|
96
|
-
horizontalAlignment: this.alignment,
|
|
97
|
-
isStatic: false,
|
|
98
|
-
placement: this.placement,
|
|
99
|
-
popoverTitle: this.popoverTitle,
|
|
100
|
-
popoverType: this.popoverType,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Closes the popover.
|
|
105
|
-
* @internal
|
|
106
|
-
*/
|
|
107
|
-
close() {
|
|
108
|
-
var _a;
|
|
109
|
-
/*istanbul ignore next*/
|
|
110
|
-
(_a = this.contentRef) === null || _a === void 0 ? void 0 : _a.close();
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Brings focus to the popover element if its open.
|
|
114
|
-
* @internal
|
|
115
|
-
*/
|
|
116
|
-
applyFocus() {
|
|
117
|
-
var _a;
|
|
118
|
-
/*istanbul ignore next*/
|
|
119
|
-
(_a = this.contentRef) === null || _a === void 0 ? void 0 : _a.applyFocus();
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Adds a flag to the popover to close when the mouse leaves the popover's bounds.
|
|
123
|
-
* @internal
|
|
124
|
-
*/
|
|
125
|
-
markForCloseOnMouseLeave() {
|
|
126
|
-
this.isMarkedForCloseOnMouseLeave = true;
|
|
127
|
-
}
|
|
128
|
-
setupOverlay() {
|
|
129
|
-
const overlay = this.overlayService.create({
|
|
130
|
-
enableScroll: true,
|
|
131
|
-
enablePointerEvents: true,
|
|
132
|
-
});
|
|
133
|
-
overlay.backdropClick.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
134
|
-
if (this.dismissOnBlur) {
|
|
135
|
-
this.close();
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
const contentRef = overlay.attachComponent(SkyPopoverContentComponent, [
|
|
139
|
-
{
|
|
140
|
-
provide: SkyPopoverContext,
|
|
141
|
-
useValue: new SkyPopoverContext({
|
|
142
|
-
contentTemplateRef: this.templateRef,
|
|
143
|
-
}),
|
|
144
|
-
},
|
|
145
|
-
]);
|
|
146
|
-
contentRef.opened.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
147
|
-
this.popoverOpened.emit(this);
|
|
148
|
-
});
|
|
149
|
-
contentRef.closed.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
150
|
-
/*istanbul ignore else*/
|
|
151
|
-
if (this.isActive) {
|
|
152
|
-
this.overlayService.close(this.overlay);
|
|
153
|
-
this.overlay = undefined;
|
|
154
|
-
this.isActive = false;
|
|
155
|
-
this.popoverClosed.emit(this);
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
contentRef.isMouseEnter
|
|
159
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
160
|
-
.subscribe((isMouseEnter) => {
|
|
161
|
-
this.isMouseEnter = isMouseEnter;
|
|
162
|
-
if (this.isMarkedForCloseOnMouseLeave) {
|
|
163
|
-
this.isMarkedForCloseOnMouseLeave = false;
|
|
164
|
-
this.close();
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
this.overlay = overlay;
|
|
168
|
-
this.contentRef = contentRef;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
SkyPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyPopoverComponent, deps: [{ token: i1.SkyOverlayService }], target: i0.ɵɵFactoryTarget.Component });
|
|
172
|
-
SkyPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: SkyPopoverComponent, selector: "sky-popover", inputs: { alignment: "alignment", dismissOnBlur: "dismissOnBlur", placement: "placement", popoverTitle: "popoverTitle", popoverType: "popoverType" }, outputs: { popoverClosed: "popoverClosed", popoverOpened: "popoverOpened" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["templateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-template #templateRef>\n <ng-content></ng-content>\n</ng-template>\n" });
|
|
173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SkyPopoverComponent, decorators: [{
|
|
174
|
-
type: Component,
|
|
175
|
-
args: [{
|
|
176
|
-
selector: 'sky-popover',
|
|
177
|
-
templateUrl: './popover.component.html',
|
|
178
|
-
}]
|
|
179
|
-
}], ctorParameters: function () { return [{ type: i1.SkyOverlayService }]; }, propDecorators: { alignment: [{
|
|
180
|
-
type: Input
|
|
181
|
-
}], dismissOnBlur: [{
|
|
182
|
-
type: Input
|
|
183
|
-
}], placement: [{
|
|
184
|
-
type: Input
|
|
185
|
-
}], popoverTitle: [{
|
|
186
|
-
type: Input
|
|
187
|
-
}], popoverType: [{
|
|
188
|
-
type: Input
|
|
189
|
-
}], popoverClosed: [{
|
|
190
|
-
type: Output
|
|
191
|
-
}], popoverOpened: [{
|
|
192
|
-
type: Output
|
|
193
|
-
}], templateRef: [{
|
|
194
|
-
type: ViewChild,
|
|
195
|
-
args: ['templateRef', {
|
|
196
|
-
read: TemplateRef,
|
|
197
|
-
static: true,
|
|
198
|
-
}]
|
|
199
|
-
}] } });
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wb3BvdmVycy9zcmMvbW9kdWxlcy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU0zQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBTXRELE1BQU0sT0FBTyxtQkFBbUI7SUEyRzlCLFlBQW9CLGNBQWlDO1FBQWpDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQS9DckQ7O1dBRUc7UUFFSSxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRS9EOztXQUVHO1FBRUksa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUUvRDs7O1dBR0c7UUFDSSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRWpDOzs7O1dBSUc7UUFDSSxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFFakMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFVN0IsaUNBQTRCLEdBQVksS0FBSyxDQUFDO1FBRTlDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVVZLENBQUM7SUExR3pEOzs7O09BSUc7SUFDSCxJQUNXLFNBQVMsQ0FBQyxL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LENBQUMsNEJBQTRCLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDOztpSEFoT1UsbUJBQW1CO3FHQUFuQixtQkFBbUIsNldBd0Z0QixXQUFXLDJDQ3JIckIsMkVBR0E7NEZEMEJhLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsV0FBVyxFQUFFLDBCQUEwQjtpQkFDeEM7d0dBUVksU0FBUztzQkFEbkIsS0FBSztnQkFlSyxhQUFhO3NCQUR2QixLQUFLO2dCQW1CSyxTQUFTO3NCQURuQixLQUFLO2dCQWFDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBUUMsV0FBVztzQkFEakIsS0FBSztnQkFPQyxhQUFhO3NCQURuQixNQUFNO2dCQU9BLGFBQWE7c0JBRG5CLE1BQU07Z0JBc0JDLFdBQVc7c0JBSmxCLFNBQVM7dUJBQUMsYUFBYSxFQUFFO3dCQUN4QixJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5T3ZlcmxheUluc3RhbmNlLCBTa3lPdmVybGF5U2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVBvcG92ZXJBbGlnbm1lbnQgfSBmcm9tICcuL3R5cGVzL3BvcG92ZXItYWxpZ25tZW50JztcblxuaW1wb3J0IHsgU2t5UG9wb3ZlclBsYWNlbWVudCB9IGZyb20gJy4vdHlwZXMvcG9wb3Zlci1wbGFjZW1lbnQnO1xuXG5pbXBvcnQgeyBTa3lQb3BvdmVyQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vcG9wb3Zlci1jb250ZW50LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFNreVBvcG92ZXJDb250ZXh0IH0gZnJvbSAnLi9wb3BvdmVyLWNvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcG9wb3ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIHRoZSBwb3BvdmVyIGluIHJlbGF0aW9uIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAqIFRoZSBgc2t5UG9wb3ZlckFsaWdubWVudGAgcHJvcGVydHkgb24gdGhlIHBvcG92ZXIgZGlyZWN0aXZlIG92ZXJ3cml0ZXMgdGhpcyBwcm9wZXJ0eS5cbiAgICogQGRlZmF1bHQgXCJjZW50ZXJcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhbGlnbm1lbnQodmFsdWU6IFNreVBvcG92ZXJBbGlnbm1lbnQpIHtcbiAgICB0aGlzLl9hbGlnbm1lbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWxpZ25tZW50KCk6IFNreVBvcG92ZXJBbGlnbm1lbnQge1xuICAgIHJldHVybiB0aGlzLl9hbGlnbm1lbnQgfHwgJ2NlbnRlcic7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gY2xvc2UgdGhlIHBvcG92ZXIgd2hlbiBpdCBsb3NlcyBmb2N1cy5cbiAgICogVG8gcmVxdWlyZSB1c2VycyB0byBjbGljayBhIHRyaWdnZXIgYnV0dG9uIHRvIGNsb3NlIHRoZSBwb3BvdmVyLCBzZXQgdGhpcyBpbnB1dCB0byBmYWxzZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNtaXNzT25CbHVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzbWlzc09uQmx1ciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNtaXNzT25CbHVyKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9kaXNtaXNzT25CbHVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9kaXNtaXNzT25CbHVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyIGluIHJlbGF0aW9uIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAqIFRoZSBgc2t5UG9wb3ZlclBsYWNlbWVudGAgcHJvcGVydHkgb24gdGhlIHBvcG92ZXIgZGlyZWN0aXZlIG92ZXJ3cml0ZXMgdGhpcyBwcm9wZXJ0eS5cbiAgICogQGRlZmF1bHQgXCJhYm92ZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBsYWNlbWVudCh2YWx1ZTogU2t5UG9wb3ZlclBsYWNlbWVudCkge1xuICAgIHRoaXMuX3BsYWNlbWVudCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBwbGFjZW1lbnQoKTogU2t5UG9wb3ZlclBsYWNlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlbWVudCB8fCAnYWJvdmUnO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHRpdGxlIGZvciB0aGUgcG9wb3Zlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb3BvdmVyVGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIHBvcG92ZXIuXG4gICAqIEBkZWZhdWx0ICdpbmZvJ1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBvcG92ZXJUeXBlOiAnZGFuZ2VyJyB8ICdpbmZvJztcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjbG9zZSB0aGUgcG9wb3Zlci5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcG9wb3ZlckNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5UG9wb3ZlckNvbXBvbmVudD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBvcGVuIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBwb3BvdmVyT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lQb3BvdmVyQ29tcG9uZW50PigpO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgcG9wb3ZlciBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBvcGVuZWQgb3IgY2xvc2VkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBpc0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IHVuaXQgdGVzdHMgdG8gZGlzYWJsZSBhbmltYXRpb25zIHNpbmNlIHRoZSBjb21wb25lbnQgaXMgaW5qZWN0ZWQgYXQgdGhlIGJvdHRvbSBvZiB0aGVcbiAgICogZG9jdW1lbnQgYm9keS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlQW5pbWF0aW9uczogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHVibGljIGlzTW91c2VFbnRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIGNvbnRlbnRSZWY6IFNreVBvcG92ZXJDb250ZW50Q29tcG9uZW50O1xuXG4gIHByaXZhdGUgaXNNYXJrZWRGb3JDbG9zZU9uTW91c2VMZWF2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2U7XG5cbiAgcHJpdmF0ZSBfYWxpZ25tZW50OiBTa3lQb3BvdmVyQWxpZ25tZW50O1xuXG4gIHByaXZhdGUgX2Rpc21pc3NPbkJsdXI6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfcGxhY2VtZW50OiBTa3lQb3BvdmVyUGxhY2VtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZSA9IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy5vdmVybGF5KTtcbiAgICAgIHRoaXMub3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUG9zaXRpb25zIHRoZSBwb3BvdmVyIG5leHQgdG8gYSBnaXZlbiBjYWxsZXIgZWxlbWVudC5cbiAgICogQHBhcmFtIGNhbGxlciBUaGUgZWxlbWVudCB0aGF0IG9wZW5lZCB0aGUgcG9wb3Zlci5cbiAgICogQHBhcmFtIHBsYWNlbWVudCBUaGUgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyLlxuICAgKiBAcGFyYW0gYWxpZ25tZW50IFRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiB0aGUgcG9wb3Zlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgcG9zaXRpb25OZXh0VG8oXG4gICAgY2FsbGVyOiBFbGVtZW50UmVmLFxuICAgIHBsYWNlbWVudD86IFNreVBvcG92ZXJQbGFjZW1lbnQsXG4gICAgYWxpZ25tZW50PzogU2t5UG9wb3ZlckFsaWdubWVudFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheSkge1xuICAgICAgdGhpcy5zZXR1cE92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICB0aGlzLnBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICB0aGlzLmFsaWdubWVudCA9IGFsaWdubWVudDtcbiAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcblxuICAgIHRoaXMuY29udGVudFJlZi5vcGVuKGNhbGxlciwge1xuICAgICAgZGlzbWlzc09uQmx1cjogdGhpcy5kaXNtaXNzT25CbHVyLFxuICAgICAgZW5hYmxlQW5pbWF0aW9uczogdGhpcy5lbmFibGVBbmltYXRpb25zLFxuICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogdGhpcy5hbGlnbm1lbnQsXG4gICAgICBpc1N0YXRpYzogZmFsc2UsXG4gICAgICBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50LFxuICAgICAgcG9wb3ZlclRpdGxlOiB0aGlzLnBvcG92ZXJUaXRsZSxcbiAgICAgIHBvcG92ZXJUeXBlOiB0aGlzLnBvcG92ZXJUeXBlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgcG9wb3Zlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCovXG4gICAgdGhpcy5jb250ZW50UmVmPy5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJyaW5ncyBmb2N1cyB0byB0aGUgcG9wb3ZlciBlbGVtZW50IGlmIGl0cyBvcGVuLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBhcHBseUZvY3VzKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIG5leHQqL1xuICAgIHRoaXMuY29udGVudFJlZj8uYXBwbHlGb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBmbGFnIHRvIHRoZSBwb3BvdmVyIHRvIGNsb3NlIHdoZW4gdGhlIG1vdXNlIGxlYXZlcyB0aGUgcG9wb3ZlcidzIGJvdW5kcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbWFya0ZvckNsb3NlT25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNYXJrZWRGb3JDbG9zZU9uTW91c2VMZWF2ZSA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwT3ZlcmxheSgpOiB2b2lkIHtcbiAgICBjb25zdCBvdmVybGF5ID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoe1xuICAgICAgZW5hYmxlU2Nyb2xsOiB0cnVlLFxuICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICB9KTtcblxuICAgIG92ZXJsYXkuYmFja2Ryb3BDbGljay5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzbWlzc09uQmx1cikge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250ZW50UmVmID0gb3ZlcmxheS5hdHRhY2hDb21wb25lbnQoU2t5UG9wb3ZlckNvbnRlbnRDb21wb25lbnQsIFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogU2t5UG9wb3ZlckNvbnRleHQsXG4gICAgICAgIHVzZVZhbHVlOiBuZXcgU2t5UG9wb3ZlckNvbnRleHQoe1xuICAgICAgICAgIGNvbnRlbnRUZW1wbGF0ZVJlZjogdGhpcy50ZW1wbGF0ZVJlZixcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgY29udGVudFJlZi5vcGVuZWQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucG9wb3Zlck9wZW5lZC5lbWl0KHRoaXMpO1xuICAgIH0pO1xuXG4gICAgY29udGVudFJlZi5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgaWYgKHRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLm92ZXJsYXkpO1xuICAgICAgICB0aGlzLm92ZXJsYXkgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wb3BvdmVyQ2xvc2VkLmVtaXQodGhpcyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250ZW50UmVmLmlzTW91c2VFbnRlclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpc01vdXNlRW50ZXIpID0+IHtcbiAgICAgICAgdGhpcy5pc01vdXNlRW50ZXIgPSBpc01vdXNlRW50ZXI7XG4gICAgICAgIGlmICh0aGlzLmlzTWFya2VkRm9yQ2xvc2VPbk1vdXNlTGVhdmUpIHtcbiAgICAgICAgICB0aGlzLmlzTWFya2VkRm9yQ2xvc2VPbk1vdXNlTGVhdmUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5ID0gb3ZlcmxheTtcbiAgICB0aGlzLmNvbnRlbnRSZWYgPSBjb250ZW50UmVmO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlUmVmPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
|