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
238 lines • 21 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';
/*
*
*/
export class CollapseAnimationDirective {
/**
* \@method constructor
* @param {?} elementRef [description]
* @param {?} ngZone [description]
* @param {?} renderer2 [description]
*/
constructor(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();
}
/**
* @param {?} value
* @return {?}
*/
set _isCollapsed(value) {
this.lastIsCollapsed = this.isCollapsed;
this.isCollapsed = value;
if (!this.firstStart) {
this.emit('start');
if (value) {
this.collapse();
}
else if (value === false) {
this.unCollapse();
}
}
}
/**
* \@method ngOnInit
* @return {?}
*/
ngOnInit() {
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
* @return {?}
*/
ngAfterContentInit() {
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() {
if (this.listener) {
this.listener();
}
}
/**
* [subscriptions description]
* \@method subscriptions
* @private
* @return {?}
*/
subscriptions() {
this.ngZone.runOutsideAngular((/**
* @return {?}
*/
() => {
this.listener = this.renderer2.listen(this.elementRef.nativeElement, 'transitionend', (/**
* @return {?}
*/
() => {
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 {?}
*/
() => {
this.renderer2.removeStyle(this.elementRef.nativeElement, 'height');
this.emit('done');
this.transitioning = false;
}));
}));
}));
}
/**
* [unCollapse description]
* \@method unCollapse
* @private
* @return {?}
*/
unCollapse() {
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
* @private
* @return {?}
*/
collapse() {
requestAnimationFrame((/**
* @return {?}
*/
() => {
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 {?}
*/
() => {
this.renderer2.setStyle(this.elementRef.nativeElement, 'height', `0px`);
}));
}));
}
/**
* @private
* @param {?} phaseName
* @return {?}
*/
emit(phaseName) {
/** @type {?} */
const 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 = () => [
{ 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',] }]
};
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hZC1jdXN0b20tbGliLyIsInNvdXJjZXMiOlsibGliL2FuaW1hdGlvbnMvYW5pbWF0aW9ucy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDZSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQy9GLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQzs7OztBQVV2QixNQUFNLE9BQU8sMEJBQTBCOzs7Ozs7O0lBZ0NuQyxZQUNZLFVBQXNCLEVBQ3RCLE1BQWMsRUFDZCxTQUFvQjtRQUZwQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBbEN4QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBTVYsOEJBQXlCLEdBQUcsR0FBRyxDQUFDO1FBZUosc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBYTdFLENBQUM7Ozs7O0lBM0JMLElBQXlDLFlBQVksQ0FBQyxLQUFjO1FBQ2hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25CLElBQUksS0FBSyxFQUFFO2dCQUNQLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNuQjtpQkFBTSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNyQjtTQUNKO0lBQ0wsQ0FBQzs7Ozs7SUFxQkQsUUFBUTtR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QVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDL0UsU0FBUyxFQUFFLElBQUksQ0FBQyx5QkFBeUI7WUFDekMsV0FBVyxFQUFFLHFCQUFxQjtTQUNyQztRQUVELElBQUksU0FBUyxLQUFLLE1BQU0sRUFBRTtZQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxTQUFTLEtBQUssT0FBTyxFQUFFO1lBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEM7SUFDTCxDQUFDOzs7WUFqSkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx1QkFBdUI7YUFDcEM7Ozs7WUFYZ0MsVUFBVTtZQUF1QixNQUFNO1lBQ3BFLFNBQVM7Ozt3Q0FrQlIsS0FBSztzQ0FDTCxLQUFLOzJCQUNMLEtBQUssU0FBQyxxQkFBcUI7Z0NBYTNCLE1BQU0sU0FBQywyQkFBMkI7K0JBQ2xDLE1BQU0sU0FBQywwQkFBMEI7Ozs7Ozs7SUF0QmxDLGdEQUEwQjs7Ozs7SUFDMUIsaURBQTZCOzs7OztJQUM3QixxREFBaUM7Ozs7O0lBQ2pDLG1EQUErQjs7Ozs7SUFDL0IsOENBQTJCOztJQUUzQiwrREFBZ0Q7O0lBQ2hELDZEQUFnRDs7SUFjaEQsdURBQW1GOztJQUNuRixzREFBaUY7Ozs7O0lBVTdFLGdEQUE4Qjs7Ozs7SUFDOUIsNENBQXNCOzs7OztJQUN0QiwrQ0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnLi9hbmltYXRpb25zLmludGVyZmFjZSc7XHJcblxyXG4vKlxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tta0NvbGxhcHNlQW5pbWF0aW9uXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbGxhcHNlQW5pbWF0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSBmaXJzdFN0YXJ0ID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIGxhc3RJc0NvbGxhcHNlZDogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgdHJhbnNpdGlvbmluZzogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgbGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBjb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9uID0gMzUwO1xyXG4gICAgQElucHV0KCkgcHVibGljIGNvbGxhcHNlQW5pbWF0aW9uVGltaW5nOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoJ21rQ29sbGFwc2VBbmltYXRpb24nKSBwdWJsaWMgc2V0IF9pc0NvbGxhcHNlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMubGFzdElzQ29sbGFwc2VkID0gdGhpcy5pc0NvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0U3RhcnQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0KCdzdGFydCcpO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2UoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5Db2xsYXBzZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoJ21rQ29sbGFwc2VBbmltYXRpb24uc3RhcnQnKSBwdWJsaWMgc3RhcnRFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCdta0NvbGxhcHNlQW5pbWF0aW9uLmRvbmUnKSBwdWJsaWMgZG9uZUV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIGNvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gZWxlbWVudFJlZiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAcGFyYW0gbmdab25lICAgICBbZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIyICBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXIyOiBSZW5kZXJlcjJcclxuICAgICkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIG5nT25Jbml0XHJcbiAgICAgKi9cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlQW5pbWF0aW9uRHVyYXRpb24gJiYgdGhpcy5jb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9uICE9PSAzNTApIHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uLWR1cmF0aW9uJywgYCR7dGhpcy5jb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9ufW1zYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlQW5pbWF0aW9uVGltaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLCB0aGlzLmNvbGxhcHNlQW5pbWF0aW9uVGltaW5nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIG5nQWZ0ZXJDb250ZW50SW5pdFxyXG4gICAgICovXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdzdGFydCcpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sbGFwc2luZycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2RvbmUnKTtcclxuICAgICAgICB0aGlzLmZpcnN0U3RhcnQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbbmdPbkRlc3Ryb3kgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIG5nT25EZXN0cm95XHJcbiAgICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzdWJzY3JpcHRpb25zIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzdWJzY3JpcHRpb25zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd1bi1jb2xsYXBzZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sbGFwc2luZycpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZG9uZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFt1bkNvbGxhcHNlIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCB1bkNvbGxhcHNlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdW5Db2xsYXBzZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndW4tY29sbGFwc2UnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodH1weGApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2NvbGxhcHNlIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBjb2xsYXBzZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy50cmFuc2l0aW9uaW5nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodH1weGApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2xsYXBzaW5nJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYDBweGApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVtaXQocGhhc2VOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBldmVudDogQW5pbWF0aW9uRXZlbnQgPSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgICAgICBmcm9tU3RhdGU6IHRoaXMubGFzdElzQ29sbGFwc2VkID09PSB1bmRlZmluZWQgPyAndm9pZCcgOiB0aGlzLmxhc3RJc0NvbGxhcHNlZCA/ICcxJyA6ICcwJyxcclxuICAgICAgICAgICAgcGhhc2VOYW1lOiBwaGFzZU5hbWUsXHJcbiAgICAgICAgICAgIHRvU3RhdGU6IHRoaXMuaXNDb2xsYXBzZWQgPT09IHVuZGVmaW5lZCA/ICd2b2lkJyA6IHRoaXMuaXNDb2xsYXBzZWQgPyAnMScgOiAnMCcsXHJcbiAgICAgICAgICAgIHRvdGFsVGltZTogdGhpcy5jb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9uLFxyXG4gICAgICAgICAgICB0cmlnZ2VyTmFtZTogJ21rQ29sbGFwc2VBbmltYXRpb24nXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHBoYXNlTmFtZSA9PT0gJ2RvbmUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9uZUV2ZW50RW1pdHRlci5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHBoYXNlTmFtZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RXZlbnRFbWl0dGVyLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=