@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
131 lines • 15.8 kB
JavaScript
import { Directive, HostListener, Injector, Input } from '@angular/core';
import { CoreBaseComponent } from '../../../../controls/common/base.component';
import { ActionBarComponent } from './action-bar.component';
import * as i0 from "@angular/core";
export class ActionBarDirective extends CoreBaseComponent {
/**
* Constructs a new instance of the ActionBarDirective
* @param injector The injector for the sme base component
*/
constructor(injector) {
super(injector);
/**
* Indicates if the action bar should appear collapsed (defaults to false).
*/
this.smeActionBarCompact = true;
/**
* Indicates if the action bar should appear at all (defaults to true).
*/
this.smeActionBarAvailable = true;
this.hovered = false;
this.focused = false;
}
/**
* The source name to use for logging
*/
get logSourceName() {
return 'ActionBarDirective';
}
/**
* Callback method that executes after the default change-detector runs.
*/
ngDoCheck() {
super.ngDoCheck();
const offsetLeft = this.hostElement.nativeElement.offsetLeft;
const offsetTop = this.hostElement.nativeElement.offsetTop;
const offsetParent = this.hostElement.nativeElement.offsetParent;
const clientWidth = this.hostElement.nativeElement.clientWidth;
if (this.offsetLeft !== offsetLeft
|| this.offsetTop !== offsetTop
|| this.offsetParent !== offsetParent
|| this.clientWidth !== clientWidth) {
if (this.smeActionBar) {
this.repositionActionBar();
}
}
this.offsetLeft = offsetLeft;
this.offsetTop = offsetTop;
this.offsetParent = offsetParent;
this.clientWidth = clientWidth;
}
/**
* Implementation of angular OnChanges interface.
* On every input change, we recalculate the clamp.
*/
ngOnChanges(changes) {
super.ngOnChanges(changes);
if (changes.smeActionBar && this.smeActionBar) {
this.repositionActionBar();
this.smeActionBar.setVisibility(this.smeActionBarAvailable);
}
if (changes.smeActionBarAvailable) {
this.smeActionBar.setVisibility(this.smeActionBarAvailable);
}
}
repositionActionBar() {
if (this.smeActionBar) {
this.smeActionBar.repositionRelativeTo(this.hostElement.nativeElement, this.smeActionBarCompact);
}
}
showHideActionBar() {
if (this.smeActionBar) {
this.smeActionBar.showHide(this.hovered || this.focused);
}
}
/**
* Host listeners for window resize events.
*/
onWindowResize(event) {
if (this.smeActionBar) {
setTimeout(() => this.repositionActionBar());
}
}
/**
* Host listeners for focus events.
*/
onFocusEvent(event) {
// on focus in/out change focused state
this.focused = event.type === 'focusin' || (this.focused && event.type !== 'focusout');
this.showHideActionBar();
}
/**
* Host listeners for mouse events.
*/
onMouseEvent(event) {
// on mouse enter/leave change hovered state
this.hovered = event.type === 'mouseenter' || (this.hovered && event.type !== 'mouseleave');
this.showHideActionBar();
}
}
/** @nocollapse */ ActionBarDirective.ɵfac = function ActionBarDirective_Factory(t) { return new (t || ActionBarDirective)(i0.ɵɵdirectiveInject(i0.Injector)); };
/** @nocollapse */ ActionBarDirective.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: ActionBarDirective, selectors: [["", "smeActionBar", ""]], hostBindings: function ActionBarDirective_HostBindings(rf, ctx) { if (rf & 1) {
i0.ɵɵlistener("resize", function ActionBarDirective_resize_HostBindingHandler($event) { return ctx.onWindowResize($event); }, false, i0.ɵɵresolveWindow)("focusin", function ActionBarDirective_focusin_HostBindingHandler($event) { return ctx.onFocusEvent($event); })("focusout", function ActionBarDirective_focusout_HostBindingHandler($event) { return ctx.onFocusEvent($event); })("mouseenter", function ActionBarDirective_mouseenter_HostBindingHandler($event) { return ctx.onMouseEvent($event); })("mouseleave", function ActionBarDirective_mouseleave_HostBindingHandler($event) { return ctx.onMouseEvent($event); });
} }, inputs: { smeActionBar: "smeActionBar", smeActionBarCompact: "smeActionBarCompact", smeActionBarAvailable: "smeActionBarAvailable" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature] });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionBarDirective, [{
type: Directive,
args: [{
selector: '[smeActionBar]'
}]
}], function () { return [{ type: i0.Injector }]; }, { smeActionBar: [{
type: Input
}], smeActionBarCompact: [{
type: Input
}], smeActionBarAvailable: [{
type: Input
}], onWindowResize: [{
type: HostListener,
args: ['window:resize', ['$event']]
}], onFocusEvent: [{
type: HostListener,
args: ['focusin', ['$event']]
}, {
type: HostListener,
args: ['focusout', ['$event']]
}], onMouseEvent: [{
type: HostListener,
args: ['mouseenter', ['$event']]
}, {
type: HostListener,
args: ['mouseleave', ['$event']]
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJhci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9hY3Rpb25zL2NvbnRhaW5lcnMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFXLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLNUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQStCckQ7OztPQUdHO0lBQ0gsWUFBWSxRQUFrQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUF0QnBCOztXQUVHO1FBQ2Esd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRTNDOztXQUVHO1FBQ2EsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBRXJDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQVl4QixDQUFDO0lBbkNEOztPQUVHO0lBQ0gsSUFBYyxhQUFhO1FBQ3ZCLE9BQU8sb0JBQW9CLENBQUM7SUFDaEMsQ0FBQztJQWdDRDs7T0FFRztJQUNJLFNBQVM7UUFDWixLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7UUFDakUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQy9ELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVO2VBQzNCLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUztlQUM1QixJQUFJLENBQUMsWUFBWSxLQUFLLFlBQVk7ZUFDbEMsSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNuQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUM5QjtTQUNKO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsSUFBSSxPQUFPLENBQUMscUJBQXFCLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDL0Q7SUFDTCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3BHO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUQ7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFFSSxjQUFjLENBQUMsS0FBSztRQUN2QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7U0FDaEQ7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFHSSxZQUFZLENBQUMsS0FBWTtRQUM1Qix1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFHSSxZQUFZLENBQUMsS0FBWTtRQUM1Qiw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDOzt1R0F2SFEsa0JBQWtCO29HQUFsQixrQkFBa0I7dUdBQWxCLDBCQUFzQixtSEFBdEIsd0JBQW9CLDBGQUFwQix3QkFBb0IsOEZBQXBCLHdCQUFvQiw4RkFBcEIsd0JBQW9COzt1RkFBcEIsa0JBQWtCO2NBSDlCLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2FBQzdCOzJEQWFtQixZQUFZO2tCQUEzQixLQUFLO1lBS1UsbUJBQW1CO2tCQUFsQyxLQUFLO1lBS1UscUJBQXFCO2tCQUFwQyxLQUFLO1lBdUVDLGNBQWM7a0JBRHBCLFlBQVk7bUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBWWxDLFlBQVk7a0JBRmxCLFlBQVk7bUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDOztrQkFDbEMsWUFBWTttQkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFZN0IsWUFBWTtrQkFGbEIsWUFBWTttQkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7O2tCQUNyQyxZQUFZO21CQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRG9DaGVjaywgSG9zdExpc3RlbmVyLCBJbmplY3RvciwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnRyb2xzL2NvbW1vbi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGlvbkJhckNvbXBvbmVudCB9IGZyb20gJy4vYWN0aW9uLWJhci5jb21wb25lbnQnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tzbWVBY3Rpb25CYXJdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aW9uQmFyRGlyZWN0aXZlIGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIERvQ2hlY2sge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGxvZ1NvdXJjZU5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuICdBY3Rpb25CYXJEaXJlY3RpdmUnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIEFjdGlvbkJhckNvbXBvbmVudCB0byBhdHRhY2ggdG8uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzbWVBY3Rpb25CYXI6IEFjdGlvbkJhckNvbXBvbmVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgYWN0aW9uIGJhciBzaG91bGQgYXBwZWFyIGNvbGxhcHNlZCAoZGVmYXVsdHMgdG8gZmFsc2UpLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc21lQWN0aW9uQmFyQ29tcGFjdCA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGFjdGlvbiBiYXIgc2hvdWxkIGFwcGVhciBhdCBhbGwgKGRlZmF1bHRzIHRvIHRydWUpLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc21lQWN0aW9uQmFyQXZhaWxhYmxlID0gdHJ1ZTtcclxuXHJcbiAgICBwcml2YXRlIGhvdmVyZWQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgZm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBvZmZzZXRUb3A6IG51bWJlcjtcclxuICAgIHByaXZhdGUgb2Zmc2V0TGVmdDogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBvZmZzZXRQYXJlbnQ6IEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIGNsaWVudFdpZHRoOiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBBY3Rpb25CYXJEaXJlY3RpdmVcclxuICAgICAqIEBwYXJhbSBpbmplY3RvciBUaGUgaW5qZWN0b3IgZm9yIHRoZSBzbWUgYmFzZSBjb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgbWV0aG9kIHRoYXQgZXhlY3V0ZXMgYWZ0ZXIgdGhlIGRlZmF1bHQgY2hhbmdlLWRldGVjdG9yIHJ1bnMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XHJcbiAgICAgICAgc3VwZXIubmdEb0NoZWNrKCk7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgICAgIGNvbnN0IG9mZnNldFRvcCA9IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0UGFyZW50ID0gdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudDtcclxuICAgICAgICBjb25zdCBjbGllbnRXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcclxuICAgICAgICBpZiAodGhpcy5vZmZzZXRMZWZ0ICE9PSBvZmZzZXRMZWZ0XHJcbiAgICAgICAgICAgIHx8IHRoaXMub2Zmc2V0VG9wICE9PSBvZmZzZXRUb3BcclxuICAgICAgICAgICAgfHwgdGhpcy5vZmZzZXRQYXJlbnQgIT09IG9mZnNldFBhcmVudFxyXG4gICAgICAgICAgICB8fCB0aGlzLmNsaWVudFdpZHRoICE9PSBjbGllbnRXaWR0aCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zbWVBY3Rpb25CYXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVwb3NpdGlvbkFjdGlvbkJhcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub2Zmc2V0TGVmdCA9IG9mZnNldExlZnQ7XHJcbiAgICAgICAgdGhpcy5vZmZzZXRUb3AgPSBvZmZzZXRUb3A7XHJcbiAgICAgICAgdGhpcy5vZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQ7XHJcbiAgICAgICAgdGhpcy5jbGllbnRXaWR0aCA9IGNsaWVudFdpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50YXRpb24gb2YgYW5ndWxhciBPbkNoYW5nZXMgaW50ZXJmYWNlLlxyXG4gICAgICogT24gZXZlcnkgaW5wdXQgY2hhbmdlLCB3ZSByZWNhbGN1bGF0ZSB0aGUgY2xhbXAuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuc21lQWN0aW9uQmFyICYmIHRoaXMuc21lQWN0aW9uQmFyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVwb3NpdGlvbkFjdGlvbkJhcigpO1xyXG4gICAgICAgICAgICB0aGlzLnNtZUFjdGlvbkJhci5zZXRWaXNpYmlsaXR5KHRoaXMuc21lQWN0aW9uQmFyQXZhaWxhYmxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuc21lQWN0aW9uQmFyQXZhaWxhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc21lQWN0aW9uQmFyLnNldFZpc2liaWxpdHkodGhpcy5zbWVBY3Rpb25CYXJBdmFpbGFibGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlcG9zaXRpb25BY3Rpb25CYXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc21lQWN0aW9uQmFyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc21lQWN0aW9uQmFyLnJlcG9zaXRpb25SZWxhdGl2ZVRvKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5zbWVBY3Rpb25CYXJDb21wYWN0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzaG93SGlkZUFjdGlvbkJhcigpIHtcclxuICAgICAgICBpZiAodGhpcy5zbWVBY3Rpb25CYXIpIHtcclxuICAgICAgICAgICAgdGhpcy5zbWVBY3Rpb25CYXIuc2hvd0hpZGUodGhpcy5ob3ZlcmVkIHx8IHRoaXMuZm9jdXNlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9zdCBsaXN0ZW5lcnMgZm9yIHdpbmRvdyByZXNpemUgZXZlbnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbldpbmRvd1Jlc2l6ZShldmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNtZUFjdGlvbkJhcikge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVwb3NpdGlvbkFjdGlvbkJhcigpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb3N0IGxpc3RlbmVycyBmb3IgZm9jdXMgZXZlbnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c2luJywgWyckZXZlbnQnXSlcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbkZvY3VzRXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgLy8gb24gZm9jdXMgaW4vb3V0IGNoYW5nZSBmb2N1c2VkIHN0YXRlXHJcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZXZlbnQudHlwZSA9PT0gJ2ZvY3VzaW4nIHx8ICh0aGlzLmZvY3VzZWQgJiYgZXZlbnQudHlwZSAhPT0gJ2ZvY3Vzb3V0Jyk7XHJcbiAgICAgICAgdGhpcy5zaG93SGlkZUFjdGlvbkJhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9zdCBsaXN0ZW5lcnMgZm9yIG1vdXNlIGV2ZW50cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbk1vdXNlRXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgLy8gb24gbW91c2UgZW50ZXIvbGVhdmUgY2hhbmdlIGhvdmVyZWQgc3RhdGVcclxuICAgICAgICB0aGlzLmhvdmVyZWQgPSBldmVudC50eXBlID09PSAnbW91c2VlbnRlcicgfHwgKHRoaXMuaG92ZXJlZCAmJiBldmVudC50eXBlICE9PSAnbW91c2VsZWF2ZScpO1xyXG4gICAgICAgIHRoaXMuc2hvd0hpZGVBY3Rpb25CYXIoKTtcclxuICAgIH1cclxufVxyXG4iXX0=