UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

177 lines (176 loc) 21 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, HostListener, ElementRef } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser'; import { PhloxAppService } from '../service/PhloxAppService.service'; import { AbstractWizardPane } from './AbstractWizardPane'; var /** @type {?} */ TYPE_NAME = "phx-scroll-pagination-wizard-pane"; var /** @type {?} */ INDEX_Y_0 = "INDEX_Y_0"; var /** @type {?} */ UP = "UP"; var /** @type {?} */ DOWN = "DOWN"; var ScrollPaginationWizardPane = /** @class */ (function (_super) { tslib_1.__extends(ScrollPaginationWizardPane, _super); function ScrollPaginationWizardPane(appSvc, sanitizer, elementRef) { var _this = _super.call(this, appSvc, elementRef) || this; _this.sanitizer = sanitizer; return _this; } /** * @return {?} */ ScrollPaginationWizardPane.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); }; /** * @param {?} event * @return {?} */ ScrollPaginationWizardPane.prototype.onmousewheel = /** * @param {?} event * @return {?} */ function (event) { var _this = this; clearTimeout(this.delayMouseWheelTimer); this.delayMouseWheelTimer = null; this.delayMouseWheelTimer = setTimeout(function () { event = window.event || event; var /** @type {?} */ delta = Math.max(-1, Math.min(1, (event.wheelDelta || -event.detail))); if (delta > -1) { // mouseWheel up if (_this.currentStep !== 0) { _this.currentStep -= 1; if (_this.currentStep === 0) { _this.setSafeStyleIndexY(INDEX_Y_0); } else { _this.setSafeStyleIndexY(UP); } } } else { // mouseWheel down if (_this.getModel().steps.length > 0) { var /** @type {?} */ stepsIndex = _this.getModel().steps.length - 1; if (_this.currentStep < stepsIndex) { _this.currentStep += 1; _this.setSafeStyleIndexY(DOWN); } } } event.preventDefault(); }, 250); }; /** * @param {?} mouseWheel * @return {?} */ ScrollPaginationWizardPane.prototype.setSafeStyleIndexY = /** * @param {?} mouseWheel * @return {?} */ function (mouseWheel) { var /** @type {?} */ y; var /** @type {?} */ index = this.currentStep; if (mouseWheel === DOWN || mouseWheel === UP) { // set Style translate3d = (0, -(index * 100), 0); y = -(index * 100); } else if (mouseWheel === INDEX_Y_0) { // set Style translate3d = (0, 0, 0); y = 0; } else { // default set Style translate3d = (0, 0, 0); y = 0; } this.safeStyle = this.sanitizer.bypassSecurityTrustStyle("translate3d( 0, " + y + "%, 0 )"); }; /** * @return {?} */ ScrollPaginationWizardPane.prototype.getSafeStyle = /** * @return {?} */ function () { return this.safeStyle; }; /** * @param {?} index * @return {?} */ ScrollPaginationWizardPane.prototype.showStepContent = /** * @param {?} index * @return {?} */ function (index) { var /** @type {?} */ y; if (index !== 0) { // set Style translate3d = (0, -(index * 100), 0); y = -(index * 100); } else if (index === 0) { // set Style translate3d = (0, 0, 0); y = 0; } else { // default set Style translate3d = (0, 0, 0); y = 0; } this.safeStyle = this.sanitizer.bypassSecurityTrustStyle("translate3d( 0, " + y + "%, 0 )"); }; /** * @param {?} index * @return {?} */ ScrollPaginationWizardPane.prototype.getStepInstance = /** * @param {?} index * @return {?} */ function (index) { }; ScrollPaginationWizardPane.TYPE_NAME = TYPE_NAME; ScrollPaginationWizardPane.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: 'phx-scroll-pagination-wizard-pane', template: "<div class=\"phx-scroll-pagination-wizard-pane\">\n\t<div class=\"left\" [style.padding-top]=\"getHeaderHeight() + 'pt'\" [style.padding-bottom]=\"getFooterHeight() + 'pt'\">\n\t\t<div class=\"header\" [style.height]=\"getHeaderHeight() + 'pt'\">\n\t\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().header !== null\">\n\t\t\t\t<ng-template [ngIf]=\"getModel().header.type === null\">\n\t\t\t\t\t<div *ngIf=\"getModel().header.imageURL !== null && getModel().header.imageURL !== ''\" class=\"header-image\">\n\t\t\t\t\t\t<img src=\"{{getModel().header.imageURL}}\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"header-label\">{{getModel().header.label}}</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template [ngIf]=\"getModel().header.type !== null\">\n\t\t\t\t\t<phx-component-wrapper [type]=\"getModel().header.type\" [data]=\"getModel().header.model\"></phx-component-wrapper>\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<div class=\"body\">\n\t\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().steps !== null\">\n\t\t\t\t<div *ngFor=\"let item of getModel().steps; let i = index;\" class=\"step\" [class.active]=\"isStepSelected(i)\">\n\t\t\t\t\t<ng-template [ngIf]=\"item.type === null\">\n\t\t\t\t\t\t<div (click)=\"stepSelected(i)\"> {{item.label}} </div>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template [ngIf]=\"item.type !== null\">\n\t\t\t\t\t\t<phx-component-wrapper [type]=\"item.type\" [data]=\"item.model\" (click)=\"stepSelected(i)\"></phx-component-wrapper>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<div class=\"footer\" [style.height]=\"getFooterHeight() + 'pt'\">\n\t\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().footer !== null\">\n\t\t\t\t<ng-template [ngIf]=\"getModel().footer.type === null\">\n\t\t\t\t\t{{getModel().footer.label}}\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template [ngIf]=\"getModel().footer.type !== null\">\n\t\t\t\t\t<phx-component-wrapper [type]=\"getModel().footer.type\" [data]=\"getModel().footer.model\"></phx-component-wrapper>\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</div>\n\t</div>\n\t<div class=\"right\">\n\t\t<div class=\"scrollpage\" [style.transform]=\"getSafeStyle()\">\n\t\t\t<div *ngFor=\"let item of getModel().steps; let i = index;\" style=\"height: 100%;\">\n\t\t\t\t<phx-component-wrapper [class.active]=\"isStepSelected(i)\" [type]=\"item.componentType\"\n\t\t\t\t\t[data]=\"getData()\" [model]=\"item.componentModel\" [dataParent]=\"this\" [handler]=\"getStepsComponentHandler()\">\n\t\t\t\t</phx-component-wrapper>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n", },] }, ]; /** @nocollapse */ ScrollPaginationWizardPane.ctorParameters = function () { return [ { type: PhloxAppService, }, { type: DomSanitizer, }, { type: ElementRef, }, ]; }; ScrollPaginationWizardPane.propDecorators = { "onmousewheel": [{ type: HostListener, args: ['mousewheel', ['$event'],] },], }; return ScrollPaginationWizardPane; }(AbstractWizardPane)); export { ScrollPaginationWizardPane }; function ScrollPaginationWizardPane_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ ScrollPaginationWizardPane.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ ScrollPaginationWizardPane.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ ScrollPaginationWizardPane.propDecorators; /** @type {?} */ ScrollPaginationWizardPane.TYPE_NAME; /** @type {?} */ ScrollPaginationWizardPane.prototype.delayMouseWheelTimer; /** @type {?} */ ScrollPaginationWizardPane.prototype.sanitizer; /** @type {?} */ ScrollPaginationWizardPane.prototype.safeStyle; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nyb2xsUGFnaW5hdGlvbldpemFyZFBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L1Njcm9sbFBhZ2luYXRpb25XaXphcmRQYW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSzFELHFCQUFNLFNBQVMsR0FBVyxtQ0FBbUMsQ0FBQztBQUU5RCxxQkFBTSxTQUFTLEdBQVcsV0FBVyxDQUFDO0FBQ3RDLHFCQUFNLEVBQUUsR0FBUSxJQUFJLENBQUM7QUFDckIscUJBQU0sSUFBSSxHQUFRLE1BQU0sQ0FBQzs7SUF5RHVCLHNEQUFrQjtJQVFoRSxvQ0FBWSxNQUF1QixFQUFFLFNBQXVCLEVBQUUsVUFBc0I7UUFBcEYsWUFDRSxrQkFBTSxNQUFNLEVBQUUsVUFBVSxDQUFDLFNBRTFCO1FBREMsS0FBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7O0tBQzVCOzs7O0lBRU0sNkNBQVE7Ozs7UUFDYixpQkFBTSxRQUFRLFdBQUUsQ0FBQzs7Ozs7O0lBSVosaURBQVk7Ozs7Y0FBQyxLQUFVOztRQUM1QixZQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUVqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDO1lBRXJDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztZQUU5QixxQkFB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LENBQUM7Ozs7OztJQUd2RixvREFBZTs7OztjQUFDLEtBQWE7MkNBckZPLFNBQVM7O2dCQXpEckQsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDbkIsUUFBUSxFQUFFLG1DQUFtQztvQkFDN0MsUUFBUSxFQUFFLGtrRkFnRFg7aUJBQ0E7Ozs7Z0JBakVRLGVBQWU7Z0JBRGYsWUFBWTtnQkFEcUIsVUFBVTs7O2lDQXVGakQsWUFBWSxTQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQzs7cUNBdkZ4QztFQXNFZ0Qsa0JBQWtCO1NBQXJELDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlU3R5bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgUGhsb3hBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9QaGxveEFwcFNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IElIYXNNb2RlbCB9IGZyb20gJy4vSUhhc01vZGVsJztcclxuaW1wb3J0IHsgQWJzdHJhY3RXaXphcmRQYW5lIH0gZnJvbSAnLi9BYnN0cmFjdFdpemFyZFBhbmUnO1xyXG5pbXBvcnQgeyBJQ2hhbmdlYWJsZSB9IGZyb20gJy4vSUNoYW5nZWFibGUnO1xyXG5cclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5cclxuY29uc3QgVFlQRV9OQU1FOiBzdHJpbmcgPSBcInBoeC1zY3JvbGwtcGFnaW5hdGlvbi13aXphcmQtcGFuZVwiO1xyXG5cclxuY29uc3QgSU5ERVhfWV8wOiBzdHJpbmcgPSBcIklOREVYX1lfMFwiO1xyXG5jb25zdCBVUDogYW55ID0gXCJVUFwiO1xyXG5jb25zdCBET1dOOiBhbnkgPSBcIkRPV05cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXHJcbiAgc2VsZWN0b3I6ICdwaHgtc2Nyb2xsLXBhZ2luYXRpb24td2l6YXJkLXBhbmUnLFxyXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1zY3JvbGwtcGFnaW5hdGlvbi13aXphcmQtcGFuZVwiPlxyXG5cdDxkaXYgY2xhc3M9XCJsZWZ0XCIgW3N0eWxlLnBhZGRpbmctdG9wXT1cImdldEhlYWRlckhlaWdodCgpICsgJ3B0J1wiIFtzdHlsZS5wYWRkaW5nLWJvdHRvbV09XCJnZXRGb290ZXJIZWlnaHQoKSArICdwdCdcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJoZWFkZXJcIiBbc3R5bGUuaGVpZ2h0XT1cImdldEhlYWRlckhlaWdodCgpICsgJ3B0J1wiPlxyXG5cdFx0XHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiZ2V0TW9kZWwoKSAhPT0gbnVsbCAmJiBnZXRNb2RlbCgpLmhlYWRlciAhPT0gbnVsbFwiPlxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRNb2RlbCgpLmhlYWRlci50eXBlID09PSBudWxsXCI+XHJcblx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiZ2V0TW9kZWwoKS5oZWFkZXIuaW1hZ2VVUkwgIT09IG51bGwgJiYgZ2V0TW9kZWwoKS5oZWFkZXIuaW1hZ2VVUkwgIT09ICcnXCIgY2xhc3M9XCJoZWFkZXItaW1hZ2VcIj5cclxuXHRcdFx0XHRcdFx0PGltZyBzcmM9XCJ7e2dldE1vZGVsKCkuaGVhZGVyLmltYWdlVVJMfX1cIj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImhlYWRlci1sYWJlbFwiPnt7Z2V0TW9kZWwoKS5oZWFkZXIubGFiZWx9fTwvZGl2PlxyXG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkuaGVhZGVyLnR5cGUgIT09IG51bGxcIj5cclxuXHRcdFx0XHRcdDxwaHgtY29tcG9uZW50LXdyYXBwZXIgW3R5cGVdPVwiZ2V0TW9kZWwoKS5oZWFkZXIudHlwZVwiIFtkYXRhXT1cImdldE1vZGVsKCkuaGVhZGVyLm1vZGVsXCI+PC9waHgtY29tcG9uZW50LXdyYXBwZXI+XHJcblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImJvZHlcIj5cclxuXHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkgIT09IG51bGwgJiYgZ2V0TW9kZWwoKS5zdGVwcyAhPT0gbnVsbFwiPlxyXG5cdFx0XHRcdDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0TW9kZWwoKS5zdGVwczsgbGV0IGkgPSBpbmRleDtcIiBjbGFzcz1cInN0ZXBcIiBbY2xhc3MuYWN0aXZlXT1cImlzU3RlcFNlbGVjdGVkKGkpXCI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiaXRlbS50eXBlID09PSBudWxsXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgKGNsaWNrKT1cInN0ZXBTZWxlY3RlZChpKVwiPiB7e2l0ZW0ubGFiZWx9fSA8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiaXRlbS50eXBlICE9PSBudWxsXCI+XHJcblx0XHRcdFx0XHRcdDxwaHgtY29tcG9uZW50LXdyYXBwZXIgW3R5cGVdPVwiaXRlbS50eXBlXCIgW2RhdGFdPVwiaXRlbS5tb2RlbFwiIChjbGljayk9XCJzdGVwU2VsZWN0ZWQoaSlcIj48L3BoeC1jb21wb25lbnQtd3JhcHBlcj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgY2xhc3M9XCJmb290ZXJcIiBbc3R5bGUuaGVpZ2h0XT1cImdldEZvb3RlckhlaWdodCgpICsgJ3B0J1wiPlxyXG5cdFx0XHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiZ2V0TW9kZWwoKSAhPT0gbnVsbCAmJiBnZXRNb2RlbCgpLmZvb3RlciAhPT0gbnVsbFwiPlxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRNb2RlbCgpLmZvb3Rlci50eXBlID09PSBudWxsXCI+XHJcblx0XHRcdFx0XHR7e2dldE1vZGVsKCkuZm9vdGVyLmxhYmVsfX1cclxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRNb2RlbCgpLmZvb3Rlci50eXBlICE9PSBudWxsXCI+XHJcblx0XHRcdFx0XHQ8cGh4LWNvbXBvbmVudC13cmFwcGVyIFt0eXBlXT1cImdldE1vZGVsKCkuZm9vdGVyLnR5cGVcIiBbZGF0YV09XCJnZXRNb2RlbCgpLmZvb3Rlci5tb2RlbFwiPjwvcGh4LWNvbXBvbmVudC13cmFwcGVyPlxyXG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJzY3JvbGxwYWdlXCIgW3N0eWxlLnRyYW5zZm9ybV09XCJnZXRTYWZlU3R5bGUoKVwiPlxyXG5cdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE1vZGVsKCkuc3RlcHM7IGxldCBpID0gaW5kZXg7XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcblx0XHRcdFx0PHBoeC1jb21wb25lbnQtd3JhcHBlciBbY2xhc3MuYWN0aXZlXT1cImlzU3RlcFNlbGVjdGVkKGkpXCIgW3R5cGVdPVwiaXRlbS5jb21wb25lbnRUeXBlXCJcclxuXHRcdFx0XHRcdFtkYXRhXT1cImdldERhdGEoKVwiIFttb2RlbF09XCJpdGVtLmNvbXBvbmVudE1vZGVsXCIgW2RhdGFQYXJlbnRdPVwidGhpc1wiIFtoYW5kbGVyXT1cImdldFN0ZXBzQ29tcG9uZW50SGFuZGxlcigpXCI+XHJcblx0XHRcdFx0PC9waHgtY29tcG9uZW50LXdyYXBwZXI+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5gLFxyXG59KVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBTY3JvbGxQYWdpbmF0aW9uV2l6YXJkUGFuZSBleHRlbmRzIEFic3RyYWN0V2l6YXJkUGFuZSBpbXBsZW1lbnRzIE9uSW5pdCwgSUhhc01vZGVsLCBJQ2hhbmdlYWJsZSB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XHJcblxyXG4gIHByaXZhdGUgZGVsYXlNb3VzZVdoZWVsVGltZXI6IGFueTtcclxuICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyO1xyXG4gIHByaXZhdGUgc2FmZVN0eWxlOiBTYWZlU3R5bGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGFwcFN2YzogUGhsb3hBcHBTZXJ2aWNlLCBzYW5pdGl6ZXI6IERvbVNhbml0aXplciwgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIoYXBwU3ZjLCBlbGVtZW50UmVmKTtcclxuICAgIHRoaXMuc2FuaXRpemVyID0gc2FuaXRpemVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNld2hlZWwnLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBvbm1vdXNld2hlZWwoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXlNb3VzZVdoZWVsVGltZXIpO1xyXG5cclxuICAgIHRoaXMuZGVsYXlNb3VzZVdoZWVsVGltZXIgPSBudWxsO1xyXG5cclxuICAgIHRoaXMuZGVsYXlNb3VzZVdoZWVsVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGV2ZW50ID0gd2luZG93LmV2ZW50IHx8IGV2ZW50O1xyXG5cclxuICAgICAgbGV0IGRlbHRhOiBudW1iZXIgPSBNYXRoLm1heCgtMSwgTWF0aC5taW4oMSwgKGV2ZW50LndoZWVsRGVsdGEgfHwgLWV2ZW50LmRldGFpbCkpKTtcclxuXHJcbiAgICAgIGlmIChkZWx0YSA+IC0xKSB7IC8vIG1vdXNlV2hlZWwgdXBcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50U3RlcCAhPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCAtPSAxO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGVwID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2FmZVN0eWxlSW5kZXhZKElOREVYX1lfMCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldFNhZmVTdHlsZUluZGV4WShVUCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgeyAgIC8vIG1vdXNlV2hlZWwgZG93blxyXG4gICAgICAgIGlmICh0aGlzLmdldE1vZGVsKCkuc3RlcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgbGV0IHN0ZXBzSW5kZXg6IG51bWJlciA9IHRoaXMuZ2V0TW9kZWwoKS5zdGVwcy5sZW5ndGggLSAxO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGVwIDwgc3RlcHNJbmRleCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwICs9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2FmZVN0eWxlSW5kZXhZKERPV04pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH0sIDI1MCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U2FmZVN0eWxlSW5kZXhZKG1vdXNlV2hlZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IHk6IGFueTtcclxuICAgIGxldCBpbmRleCA9IHRoaXMuY3VycmVudFN0ZXA7XHJcblxyXG4gICAgaWYgKG1vdXNlV2hlZWwgPT09IERPV04gfHwgbW91c2VXaGVlbCA9PT0gVVApIHsgLy8gc2V0IFN0eWxlIHRyYW5zbGF0ZTNkID0gICgwLCAtKGluZGV4ICogMTAwKSwgMCk7XHJcbiAgICAgIHkgPSAtKGluZGV4ICogMTAwKTtcclxuICAgIH0gZWxzZSBpZiAobW91c2VXaGVlbCA9PT0gSU5ERVhfWV8wKSB7IC8vIHNldCBTdHlsZSB0cmFuc2xhdGUzZCA9ICAoMCwgMCwgMCk7XHJcbiAgICAgIHkgPSAwO1xyXG4gICAgfSBlbHNlIHsgLy8gZGVmYXVsdCAgc2V0IFN0eWxlIHRyYW5zbGF0ZTNkID0gICgwLCAwLCAwKTtcclxuICAgICAgeSA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zYWZlU3R5bGUgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoXCJ0cmFuc2xhdGUzZCggMCwgXCIgKyB5ICsgXCIlLCAwIClcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2FmZVN0eWxlKCk6IFNhZmVTdHlsZSB7XHJcbiAgICByZXR1cm4gdGhpcy5zYWZlU3R5bGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1N0ZXBDb250ZW50KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGxldCB5OiBhbnk7XHJcblxyXG4gICAgaWYgKGluZGV4ICE9PSAwKSB7IC8vIHNldCBTdHlsZSB0cmFuc2xhdGUzZCA9ICAoMCwgLShpbmRleCAqIDEwMCksIDApO1xyXG4gICAgICB5ID0gLShpbmRleCAqIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGluZGV4ID09PSAwKSB7IC8vIHNldCBTdHlsZSB0cmFuc2xhdGUzZCA9ICAoMCwgMCwgMCk7XHJcbiAgICAgIHkgPSAwO1xyXG4gICAgfSBlbHNlIHsgLy8gZGVmYXVsdCAgc2V0IFN0eWxlIHRyYW5zbGF0ZTNkID0gICgwLCAwLCAwKTtcclxuICAgICAgeSA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zYWZlU3R5bGUgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoXCJ0cmFuc2xhdGUzZCggMCwgXCIgKyB5ICsgXCIlLCAwIClcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3RlcEluc3RhbmNlKGluZGV4OiBudW1iZXIpOiBhbnkgeyB9XHJcbn1cclxuIl19