ad-custom-lib
Version:
This is an UI custom library based on Adminlte library with purpose for personal use, if you need a full template of Primeng please visit https://github.com/mledour/angular-admin-lte
305 lines • 23.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, ElementRef, EventEmitter, Input, NgZone, Output, Renderer2 } from '@angular/core';
/*
*
*/
var CollapseAnimationDirective = /** @class */ (function () {
/**
* @method constructor
* @param elementRef [description]
* @param ngZone [description]
* @param renderer2 [description]
*/
function CollapseAnimationDirective(elementRef, ngZone, renderer2) {
this.elementRef = elementRef;
this.ngZone = ngZone;
this.renderer2 = renderer2;
this.firstStart = true;
this.collapseAnimationDuration = 350;
this.startEventEmitter = new EventEmitter();
this.doneEventEmitter = new EventEmitter();
}
Object.defineProperty(CollapseAnimationDirective.prototype, "_isCollapsed", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.lastIsCollapsed = this.isCollapsed;
this.isCollapsed = value;
if (!this.firstStart) {
this.emit('start');
if (value) {
this.collapse();
}
else if (value === false) {
this.unCollapse();
}
}
},
enumerable: true,
configurable: true
});
/**
* @method ngOnInit
*/
/**
* \@method ngOnInit
* @return {?}
*/
CollapseAnimationDirective.prototype.ngOnInit = /**
* \@method ngOnInit
* @return {?}
*/
function () {
if (this.collapseAnimationDuration && this.collapseAnimationDuration !== 350) {
this.renderer2.setStyle(this.elementRef.nativeElement, 'transition-duration', this.collapseAnimationDuration + "ms");
}
if (this.collapseAnimationTiming) {
this.renderer2.setStyle(this.elementRef.nativeElement, 'transition-timing-function', this.collapseAnimationTiming);
}
};
/**
* @method ngAfterContentInit
*/
/**
* \@method ngAfterContentInit
* @return {?}
*/
CollapseAnimationDirective.prototype.ngAfterContentInit = /**
* \@method ngAfterContentInit
* @return {?}
*/
function () {
this.emit('start');
if (this.isCollapsed) {
this.renderer2.setStyle(this.elementRef.nativeElement, 'display', 'none');
this.renderer2.addClass(this.elementRef.nativeElement, 'collapsing');
}
this.emit('done');
this.firstStart = false;
this.subscriptions();
};
/**
* [ngOnDestroy description]
* @method ngOnDestroy
* @return [description]
*/
/**
* [ngOnDestroy description]
* \@method ngOnDestroy
* @return {?} [description]
*/
CollapseAnimationDirective.prototype.ngOnDestroy = /**
* [ngOnDestroy description]
* \@method ngOnDestroy
* @return {?} [description]
*/
function () {
if (this.listener) {
this.listener();
}
};
/**
* [subscriptions description]
* @method subscriptions
*/
/**
* [subscriptions description]
* \@method subscriptions
* @private
* @return {?}
*/
CollapseAnimationDirective.prototype.subscriptions = /**
* [subscriptions description]
* \@method subscriptions
* @private
* @return {?}
*/
function () {
var _this = this;
this.ngZone.runOutsideAngular((/**
* @return {?}
*/
function () {
_this.listener = _this.renderer2.listen(_this.elementRef.nativeElement, 'transitionend', (/**
* @return {?}
*/
function () {
if (!_this.isCollapsed) {
_this.renderer2.removeClass(_this.elementRef.nativeElement, 'un-collapse');
_this.renderer2.removeClass(_this.elementRef.nativeElement, 'collapsing');
}
else {
_this.renderer2.setStyle(_this.elementRef.nativeElement, 'display', 'none');
}
requestAnimationFrame((/**
* @return {?}
*/
function () {
_this.renderer2.removeStyle(_this.elementRef.nativeElement, 'height');
_this.emit('done');
_this.transitioning = false;
}));
}));
}));
};
/**
* [unCollapse description]
* @method unCollapse
*/
/**
* [unCollapse description]
* \@method unCollapse
* @private
* @return {?}
*/
CollapseAnimationDirective.prototype.unCollapse = /**
* [unCollapse description]
* \@method unCollapse
* @private
* @return {?}
*/
function () {
this.transitioning = true;
this.renderer2.addClass(this.elementRef.nativeElement, 'un-collapse');
this.renderer2.removeStyle(this.elementRef.nativeElement, 'display');
this.renderer2.setStyle(this.elementRef.nativeElement, 'height', this.elementRef.nativeElement.scrollHeight + "px");
};
/**
* [collapse description]
* @method collapse
*/
/**
* [collapse description]
* \@method collapse
* @private
* @return {?}
*/
CollapseAnimationDirective.prototype.collapse = /**
* [collapse description]
* \@method collapse
* @private
* @return {?}
*/
function () {
var _this = this;
requestAnimationFrame((/**
* @return {?}
*/
function () {
if (!_this.transitioning) {
_this.renderer2.setStyle(_this.elementRef.nativeElement, 'height', _this.elementRef.nativeElement.offsetHeight + "px");
_this.renderer2.addClass(_this.elementRef.nativeElement, 'collapsing');
}
_this.transitioning = true;
requestAnimationFrame((/**
* @return {?}
*/
function () {
_this.renderer2.setStyle(_this.elementRef.nativeElement, 'height', "0px");
}));
}));
};
/**
* @private
* @param {?} phaseName
* @return {?}
*/
CollapseAnimationDirective.prototype.emit = /**
* @private
* @param {?} phaseName
* @return {?}
*/
function (phaseName) {
/** @type {?} */
var event = {
element: this.elementRef.nativeElement,
fromState: this.lastIsCollapsed === undefined ? 'void' : this.lastIsCollapsed ? '1' : '0',
phaseName: phaseName,
toState: this.isCollapsed === undefined ? 'void' : this.isCollapsed ? '1' : '0',
totalTime: this.collapseAnimationDuration,
triggerName: 'mkCollapseAnimation'
};
if (phaseName === 'done') {
this.doneEventEmitter.emit(event);
}
else if (phaseName === 'start') {
this.startEventEmitter.emit(event);
}
};
CollapseAnimationDirective.decorators = [
{ type: Directive, args: [{
selector: '[mkCollapseAnimation]'
},] }
];
/** @nocollapse */
CollapseAnimationDirective.ctorParameters = function () { return [
{ type: ElementRef },
{ type: NgZone },
{ type: Renderer2 }
]; };
CollapseAnimationDirective.propDecorators = {
collapseAnimationDuration: [{ type: Input }],
collapseAnimationTiming: [{ type: Input }],
_isCollapsed: [{ type: Input, args: ['mkCollapseAnimation',] }],
startEventEmitter: [{ type: Output, args: ['mkCollapseAnimation.start',] }],
doneEventEmitter: [{ type: Output, args: ['mkCollapseAnimation.done',] }]
};
return CollapseAnimationDirective;
}());
export { CollapseAnimationDirective };
if (false) {
/**
* @type {?}
* @private
*/
CollapseAnimationDirective.prototype.firstStart;
/**
* @type {?}
* @private
*/
CollapseAnimationDirective.prototype.isCollapsed;
/**
* @type {?}
* @private
*/
CollapseAnimationDirective.prototype.lastIsCollapsed;
/**
* @type {?}
* @private
*/
CollapseAnimationDirective.prototype.transitioning;
/**
* @type {?}
* @private
*/
CollapseAnimationDirective.prototype.listener;
/** @type {?} */
CollapseAnimationDirective.prototype.collapseAnimationDuration;
/** @type {?} */
CollapseAnimationDirective.prototype.collapseAnimationTiming;
/** @type {?} */
CollapseAnimationDirective.prototype.startEventEmitter;
/** @type {?} */
CollapseAnimationDirective.prototype.doneEventEmitter;
/**
* @type {?}
* @private
*/
CollapseAnimationDirective.prototype.elementRef;
/**
* @type {?}
* @private
*/
CollapseAnimationDirective.prototype.ngZone;
/**
* @type {?}
* @private
*/
CollapseAnimationDirective.prototype.renderer2;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hZC1jdXN0b20tbGliLyIsInNvdXJjZXMiOlsibGliL2FuaW1hdGlvbnMvYW5pbWF0aW9ucy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDZSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQy9GLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQzs7OztBQU92QjtJQTZCSTs7Ozs7T0FLRztJQUNILG9DQUNZLFVBQXNCLEVBQ3RCLE1BQWMsRUFDZCxTQUFvQjtRQUZwQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBbEN4QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBTVYsOEJBQXlCLEdBQUcsR0FBRyxDQUFDO1FBZUosc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBYTdFLENBQUM7SUEzQkwsc0JBQXlDLG9EQUFZOzs7OztRQUFyRCxVQUFzRCxLQUFjO1lBQ2hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxLQUFLLEVBQUU7b0JBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNuQjtxQkFBTSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztpQkFDckI7YUFDSjtRQUNMLENBQUM7OztPQUFBO0lBa0JE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cnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnLi9hbmltYXRpb25zLmludGVyZmFjZSc7XHJcblxyXG4vKlxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tta0NvbGxhcHNlQW5pbWF0aW9uXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbGxhcHNlQW5pbWF0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSBmaXJzdFN0YXJ0ID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIGxhc3RJc0NvbGxhcHNlZDogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgdHJhbnNpdGlvbmluZzogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgbGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBjb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9uID0gMzUwO1xyXG4gICAgQElucHV0KCkgcHVibGljIGNvbGxhcHNlQW5pbWF0aW9uVGltaW5nOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoJ21rQ29sbGFwc2VBbmltYXRpb24nKSBwdWJsaWMgc2V0IF9pc0NvbGxhcHNlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMubGFzdElzQ29sbGFwc2VkID0gdGhpcy5pc0NvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0U3RhcnQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0KCdzdGFydCcpO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2UoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5Db2xsYXBzZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoJ21rQ29sbGFwc2VBbmltYXRpb24uc3RhcnQnKSBwdWJsaWMgc3RhcnRFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCdta0NvbGxhcHNlQW5pbWF0aW9uLmRvbmUnKSBwdWJsaWMgZG9uZUV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIGNvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gZWxlbWVudFJlZiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAcGFyYW0gbmdab25lICAgICBbZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIyICBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXIyOiBSZW5kZXJlcjJcclxuICAgICkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIG5nT25Jbml0XHJcbiAgICAgKi9cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlQW5pbWF0aW9uRHVyYXRpb24gJiYgdGhpcy5jb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9uICE9PSAzNTApIHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uLWR1cmF0aW9uJywgYCR7dGhpcy5jb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9ufW1zYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlQW5pbWF0aW9uVGltaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLCB0aGlzLmNvbGxhcHNlQW5pbWF0aW9uVGltaW5nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIG5nQWZ0ZXJDb250ZW50SW5pdFxyXG4gICAgICovXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdzdGFydCcpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sbGFwc2luZycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2RvbmUnKTtcclxuICAgICAgICB0aGlzLmZpcnN0U3RhcnQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbbmdPbkRlc3Ryb3kgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIG5nT25EZXN0cm95XHJcbiAgICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzdWJzY3JpcHRpb25zIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzdWJzY3JpcHRpb25zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd1bi1jb2xsYXBzZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sbGFwc2luZycpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZG9uZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFt1bkNvbGxhcHNlIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCB1bkNvbGxhcHNlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdW5Db2xsYXBzZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndW4tY29sbGFwc2UnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodH1weGApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2NvbGxhcHNlIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBjb2xsYXBzZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy50cmFuc2l0aW9uaW5nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodH1weGApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2xsYXBzaW5nJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYDBweGApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVtaXQocGhhc2VOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBldmVudDogQW5pbWF0aW9uRXZlbnQgPSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgICAgICBmcm9tU3RhdGU6IHRoaXMubGFzdElzQ29sbGFwc2VkID09PSB1bmRlZmluZWQgPyAndm9pZCcgOiB0aGlzLmxhc3RJc0NvbGxhcHNlZCA/ICcxJyA6ICcwJyxcclxuICAgICAgICAgICAgcGhhc2VOYW1lOiBwaGFzZU5hbWUsXHJcbiAgICAgICAgICAgIHRvU3RhdGU6IHRoaXMuaXNDb2xsYXBzZWQgPT09IHVuZGVmaW5lZCA/ICd2b2lkJyA6IHRoaXMuaXNDb2xsYXBzZWQgPyAnMScgOiAnMCcsXHJcbiAgICAgICAgICAgIHRvdGFsVGltZTogdGhpcy5jb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9uLFxyXG4gICAgICAgICAgICB0cmlnZ2VyTmFtZTogJ21rQ29sbGFwc2VBbmltYXRpb24nXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHBoYXNlTmFtZSA9PT0gJ2RvbmUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9uZUV2ZW50RW1pdHRlci5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHBoYXNlTmFtZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RXZlbnRFbWl0dGVyLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=