UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

287 lines (286 loc) 22.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input } from '@angular/core'; import { NotificationManager } from '../service/NotificationManager.service'; import { ObservableManager } from '../service/ObservableManager.service'; import { ToastNotification } from './ToastNotification.component'; import { Option } from '../decorator/Option.decorator'; import { AbstractHasOptions } from '../share/AbstractHasOptions'; var /** @type {?} */ TYPE_NAME = "phx-notification-container"; var /** @type {?} */ ALIGN_LEFT = "left"; var /** @type {?} */ ALIGN_RIGHT = "right"; var NotificationContainer = /** @class */ (function (_super) { tslib_1.__extends(NotificationContainer, _super); function NotificationContainer(notifyMgr, elementRef, observableMgr) { var _this = _super.call(this) || this; _this.notifyMgr = notifyMgr; _this.observableMgr = observableMgr; _this.elementRef = elementRef; _this.DELAY_INTERVAL = ToastNotification.ANIMATE_OUT_INTERVAL + ToastNotification.ANIMATE_REMOVE_INTERVAL; // out + remove _this.hideNotification = false; _this.align = ALIGN_RIGHT; return _this; } /** * @return {?} */ NotificationContainer.prototype.ngOnInit = /** * @return {?} */ function () { }; /** * comment for method * @param {?} notificationModel Notification. * @return {?} number. */ NotificationContainer.prototype.getModelIndex = /** * comment for method * @param {?} notificationModel Notification. * @return {?} number. */ function (notificationModel) { if (notificationModel === null || typeof notificationModel === 'undefined') { return -1; } var /** @type {?} */ notifications = this.getNonTimeoutNotifications(); return notifications.indexOf(notificationModel); }; /** * comment for method * @param {?} $event * @return {?} */ NotificationContainer.prototype.onNotificationClosed = /** * comment for method * @param {?} $event * @return {?} */ function ($event) { if (this.notifyMgr !== null && typeof this.notifyMgr !== 'undefined') { var /** @type {?} */ evData = null; if ($event.detail !== null && typeof $event.detail !== 'undefined') { if ($event.detail.data !== null && typeof $event.detail.data !== 'undefined') { evData = $event.detail.data; this.notifyMgr.clear(evData.model); } } } }; /** * comment for method * @param {?} $event * @return {?} */ NotificationContainer.prototype.onNotificationShowActionBar = /** * comment for method * @param {?} $event * @return {?} */ function ($event) { if (this.notifyMgr !== null && typeof this.notifyMgr !== 'undefined') { var /** @type {?} */ evData = null; if ($event.detail !== null && typeof $event.detail !== 'undefined') { if ($event.detail.data !== null && typeof $event.detail.data !== 'undefined') { evData = $event.detail.data; this.notifyMgr.pinNotification(evData.model); } } } }; /** * comment for method * @param {?} $event * @return {?} */ NotificationContainer.prototype.onNotificationHideActionBar = /** * comment for method * @param {?} $event * @return {?} */ function ($event) { if (this.notifyMgr !== null && typeof this.notifyMgr !== 'undefined') { var /** @type {?} */ evData = null; if ($event.detail !== null && typeof $event.detail !== 'undefined') { if ($event.detail.data !== null && typeof $event.detail.data !== 'undefined') { evData = $event.detail.data; this.notifyMgr.unpinNotification(evData.model); } } } }; /** * comment for method * @return {?} Notification[]. */ NotificationContainer.prototype.getNonTimeoutNotifications = /** * comment for method * @return {?} Notification[]. */ function () { var /** @type {?} */ result = []; if (this.notifyMgr !== null && typeof this.notifyMgr !== 'undefined') { var /** @type {?} */ notis = this.notifyMgr.getShowingNotifications(); for (var /** @type {?} */ i = notis.length - 1; i >= 0; i--) { var /** @type {?} */ notify = notis[i]; result.push(notify); } } return result; }; /** * @param {?} show * @return {?} */ NotificationContainer.prototype.setShow = /** * @param {?} show * @return {?} */ function (show) { if (show) { this.hideNotification = false; } else { this.hideNotification = true; } }; /** * @return {?} */ NotificationContainer.prototype.show = /** * @return {?} */ function () { this.setShow(true); }; /** * @return {?} */ NotificationContainer.prototype.hide = /** * @return {?} */ function () { this.setShow(false); }; /** * @return {?} */ NotificationContainer.prototype.isHideNotification = /** * @return {?} */ function () { return this.hideNotification; }; /** * @return {?} */ NotificationContainer.prototype._isAlignLeft = /** * @return {?} */ function () { if (this.align !== null && this.align !== undefined && this.align !== '') { if (ALIGN_LEFT === this.align.toLowerCase()) { return true; } } return false; }; /** * @param {?} align * @return {?} */ NotificationContainer.prototype.setAlign = /** * @param {?} align * @return {?} */ function (align) { this.align = align; }; /** * @return {?} */ NotificationContainer.prototype.getAlign = /** * @return {?} */ function () { return this.align; }; NotificationContainer.TYPE_NAME = TYPE_NAME; NotificationContainer.ALIGN_LEFT = ALIGN_LEFT; NotificationContainer.ALIGN_RIGHT = ALIGN_RIGHT; NotificationContainer.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: 'phx-notification-container', template: "<div class=\"phx-notification-container\" [class.show]=\"!isHideNotification()\" [class.left]=\"_isAlignLeft()\">\n\t<ng-template ngFor let-item [ngForOf]=\"getNonTimeoutNotifications()\" let-i=\"index\">\n\t\t<phx-toast-notification [model]=\"item\" (closeDone)=\"onNotificationClosed($event)\"\n\t\t(showActionBar)=\"onNotificationShowActionBar($event)\" (hideActionBarDone)=\"onNotificationHideActionBar($event)\"></phx-toast-notification>\n\t</ng-template>\n</div>\n" },] }, ]; /** @nocollapse */ NotificationContainer.ctorParameters = function () { return [ { type: NotificationManager, }, { type: ElementRef, }, { type: ObservableManager, }, ]; }; NotificationContainer.propDecorators = { "align": [{ type: Input },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], NotificationContainer.prototype, "align", void 0); return NotificationContainer; }(AbstractHasOptions)); export { NotificationContainer }; function NotificationContainer_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ NotificationContainer.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ NotificationContainer.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ NotificationContainer.propDecorators; /** @type {?} */ NotificationContainer.TYPE_NAME; /** @type {?} */ NotificationContainer.ALIGN_LEFT; /** @type {?} */ NotificationContainer.ALIGN_RIGHT; /** * This is a doc comment for "DELAY_INTERVAL". * @type {?} */ NotificationContainer.prototype.DELAY_INTERVAL; /** * This is a doc comment for "notifyMgr". * @type {?} */ NotificationContainer.prototype.notifyMgr; /** * This is a doc comment for "elementRef". * @type {?} */ NotificationContainer.prototype.elementRef; /** * This is a doc comment for "closeDelayTimer". * @type {?} */ NotificationContainer.prototype.closeDelayTimer; /** * This is a doc comment for "observableMgr". * @type {?} */ NotificationContainer.prototype.observableMgr; /** * This is a doc comment for "hideNotification". * @type {?} */ NotificationContainer.prototype.hideNotification; /** @type {?} */ NotificationContainer.prototype.align; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90aWZpY2F0aW9uQ29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9Ob3RpZmljYXRpb25Db250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUlqRSxxQkFBTSxTQUFTLEdBQVcsNEJBQTRCLENBQUM7QUFDdkQscUJBQU0sVUFBVSxHQUFXLE1BQU0sQ0FBQztBQUNsQyxxQkFBTSxXQUFXLEdBQVcsT0FBTyxDQUFDOztJQWNPLGlEQUFrQjtJQW9DM0QsK0JBQVksU0FBOEIsRUFBRSxVQUFzQixFQUFFLGFBQWdDO1FBQXBHLFlBQ0UsaUJBQU8sU0FPUjtRQU5DLEtBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLEtBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLEtBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLEtBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsb0JBQW9CLEdBQUcsaUJBQWlCLENBQUMsdUJBQXVCLENBQUM7UUFDekcsS0FBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixLQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQzs7S0FDMUI7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O1lBQ3pFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxDQUFDLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDOzs7Ozs7SUFHUix3Q0FBUTs7OztjQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Ozs7O0lBR2Qsd0NBQVE7Ozs7UUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzs7c0NBakt1QixTQUFTO3VDQUNSLFVBQVU7d0NBQ1QsV0FBVzs7Z0JBaEJ6RCxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO29CQUNuQixRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxRQUFRLEVBQUUsd2RBTVg7aUJBQ0E7Ozs7Z0JBdEJRLG1CQUFtQjtnQkFGQSxVQUFVO2dCQUc3QixpQkFBaUI7OzswQkF3RHZCLEtBQUs7OztRQURMLE1BQU0sRUFBRTs7O2dDQTFEWDtFQTBCMkMsa0JBQWtCO1NBQWhELHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uIH0gZnJvbSAnLi9tb2RlbC9Ob3RpZmljYXRpb24nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uTWFuYWdlciB9IGZyb20gJy4uL3NlcnZpY2UvTm90aWZpY2F0aW9uTWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGVNYW5hZ2VyIH0gZnJvbSAnLi4vc2VydmljZS9PYnNlcnZhYmxlTWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0Tm90aWZpY2F0aW9uIH0gZnJvbSAnLi9Ub2FzdE5vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgQWJzdHJhY3RIYXNPcHRpb25zIH0gZnJvbSAnLi4vc2hhcmUvQWJzdHJhY3RIYXNPcHRpb25zJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGh4LW5vdGlmaWNhdGlvbi1jb250YWluZXJcIjtcbmNvbnN0IEFMSUdOX0xFRlQ6IHN0cmluZyA9IFwibGVmdFwiO1xuY29uc3QgQUxJR05fUklHSFQ6IHN0cmluZyA9IFwicmlnaHRcIjtcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiAncGh4LW5vdGlmaWNhdGlvbi1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJwaHgtbm90aWZpY2F0aW9uLWNvbnRhaW5lclwiIFtjbGFzcy5zaG93XT1cIiFpc0hpZGVOb3RpZmljYXRpb24oKVwiIFtjbGFzcy5sZWZ0XT1cIl9pc0FsaWduTGVmdCgpXCI+XG5cdDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtaXRlbSBbbmdGb3JPZl09XCJnZXROb25UaW1lb3V0Tm90aWZpY2F0aW9ucygpXCIgbGV0LWk9XCJpbmRleFwiPlxuXHRcdDxwaHgtdG9hc3Qtbm90aWZpY2F0aW9uIFttb2RlbF09XCJpdGVtXCIgKGNsb3NlRG9uZSk9XCJvbk5vdGlmaWNhdGlvbkNsb3NlZCgkZXZlbnQpXCJcblx0XHQoc2hvd0FjdGlvbkJhcik9XCJvbk5vdGlmaWNhdGlvblNob3dBY3Rpb25CYXIoJGV2ZW50KVwiIChoaWRlQWN0aW9uQmFyRG9uZSk9XCJvbk5vdGlmaWNhdGlvbkhpZGVBY3Rpb25CYXIoJGV2ZW50KVwiPjwvcGh4LXRvYXN0LW5vdGlmaWNhdGlvbj5cblx0PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuYFxufSlcbi8qKiBjbGFzcy4uLiAqL1xuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkNvbnRhaW5lciBleHRlbmRzIEFic3RyYWN0SGFzT3B0aW9ucyBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTElHTl9MRUZUOiBzdHJpbmcgPSBBTElHTl9MRUZUO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFMSUdOX1JJR0hUOiBzdHJpbmcgPSBBTElHTl9SSUdIVDtcblxuICAvKipcbiAgICogVGhpcyBpcyBhIGRvYyBjb21tZW50IGZvciBcIkRFTEFZX0lOVEVSVkFMXCIuXG4gICAqL1xuICBwcml2YXRlIERFTEFZX0lOVEVSVkFMOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgZG9jIGNvbW1lbnQgZm9yIFwibm90aWZ5TWdyXCIuXG4gICAqL1xuICBwcml2YXRlIG5vdGlmeU1ncjogTm90aWZpY2F0aW9uTWFuYWdlcjtcbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBkb2MgY29tbWVudCBmb3IgXCJlbGVtZW50UmVmXCIuXG4gICAqL1xuICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgZG9jIGNvbW1lbnQgZm9yIFwiY2xvc2VEZWxheVRpbWVyXCIuXG4gICAqL1xuICBwcml2YXRlIGNsb3NlRGVsYXlUaW1lcjogYW55O1xuICAvKipcbiAgICogVGhpcyBpcyBhIGRvYyBjb21tZW50IGZvciBcIm9ic2VydmFibGVNZ3JcIi5cbiAgICovXG4gIHByaXZhdGUgb2JzZXJ2YWJsZU1ncjogT2JzZXJ2YWJsZU1hbmFnZXI7XG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgZG9jIGNvbW1lbnQgZm9yIFwiaGlkZU5vdGlmaWNhdGlvblwiLlxuICAgKi9cbiAgcHJpdmF0ZSBoaWRlTm90aWZpY2F0aW9uOiBib29sZWFuO1xuXG4gIC8vIC0tLSBmcm9tIHNlbGZcbiAgQE9wdGlvbigpXG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgYWxpZ246IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihub3RpZnlNZ3I6IE5vdGlmaWNhdGlvbk1hbmFnZXIsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIG9ic2VydmFibGVNZ3I6IE9ic2VydmFibGVNYW5hZ2VyKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5vdGlmeU1nciA9IG5vdGlmeU1ncjtcbiAgICB0aGlzLm9ic2VydmFibGVNZ3IgPSBvYnNlcnZhYmxlTWdyO1xuICAgIHRoaXMuZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgdGhpcy5ERUxBWV9JTlRFUlZBTCA9IFRvYXN0Tm90aWZpY2F0aW9uLkFOSU1BVEVfT1VUX0lOVEVSVkFMICsgVG9hc3ROb3RpZmljYXRpb24uQU5JTUFURV9SRU1PVkVfSU5URVJWQUw7IC8vIG91dCArIHJlbW92ZVxuICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuYWxpZ24gPSBBTElHTl9SSUdIVDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cbiAgLyoqXG4gICAqIGNvbW1lbnQgZm9yIG1ldGhvZFxuICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uTW9kZWwgIE5vdGlmaWNhdGlvbi5cbiAgICogQHJldHVybnMgICBudW1iZXIuXG4gICAqL1xuICBwcml2YXRlIGdldE1vZGVsSW5kZXgobm90aWZpY2F0aW9uTW9kZWw6IE5vdGlmaWNhdGlvbik6IG51bWJlciB7XG4gICAgaWYgKG5vdGlmaWNhdGlvbk1vZGVsID09PSBudWxsIHx8IHR5cGVvZiBub3RpZmljYXRpb25Nb2RlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgbGV0IG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbltdID0gdGhpcy5nZXROb25UaW1lb3V0Tm90aWZpY2F0aW9ucygpO1xuXG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMuaW5kZXhPZihub3RpZmljYXRpb25Nb2RlbCk7XG4gIH1cblxuICAvKipcbiAgICogY29tbWVudCBmb3IgbWV0aG9kXG4gICAqIEBwYXJhbSBldmVudCAgQ3VzdG9tRXZlbnRcbiAgICovXG4gIHB1YmxpYyBvbk5vdGlmaWNhdGlvbkNsb3NlZCgkZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm90aWZ5TWdyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLm5vdGlmeU1nciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxldCBldkRhdGEgPSBudWxsO1xuICAgICAgaWYgKCRldmVudC5kZXRhaWwgIT09IG51bGwgJiYgdHlwZW9mICRldmVudC5kZXRhaWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICgkZXZlbnQuZGV0YWlsLmRhdGEgIT09IG51bGwgJiYgdHlwZW9mICRldmVudC5kZXRhaWwuZGF0YSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBldkRhdGEgPSAkZXZlbnQuZGV0YWlsLmRhdGE7XG4gICAgICAgICAgdGhpcy5ub3RpZnlNZ3IuY2xlYXIoZXZEYXRhLm1vZGVsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjb21tZW50IGZvciBtZXRob2RcbiAgICogQHBhcmFtIGV2ZW50ICBDdXN0b21FdmVudFxuICAgKi9cbiAgcHVibGljIG9uTm90aWZpY2F0aW9uU2hvd0FjdGlvbkJhcigkZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm90aWZ5TWdyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLm5vdGlmeU1nciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxldCBldkRhdGEgPSBudWxsO1xuICAgICAgaWYgKCRldmVudC5kZXRhaWwgIT09IG51bGwgJiYgdHlwZW9mICRldmVudC5kZXRhaWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICgkZXZlbnQuZGV0YWlsLmRhdGEgIT09IG51bGwgJiYgdHlwZW9mICRldmVudC5kZXRhaWwuZGF0YSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBldkRhdGEgPSAkZXZlbnQuZGV0YWlsLmRhdGE7XG4gICAgICAgICAgdGhpcy5ub3RpZnlNZ3IucGluTm90aWZpY2F0aW9uKGV2RGF0YS5tb2RlbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY29tbWVudCBmb3IgbWV0aG9kXG4gICAqIEBwYXJhbSBldmVudCAgQ3VzdG9tRXZlbnRcbiAgICovXG4gIHB1YmxpYyBvbk5vdGlmaWNhdGlvbkhpZGVBY3Rpb25CYXIoJGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5vdGlmeU1nciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5ub3RpZnlNZ3IgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZXQgZXZEYXRhID0gbnVsbDtcbiAgICAgIGlmICgkZXZlbnQuZGV0YWlsICE9PSBudWxsICYmIHR5cGVvZiAkZXZlbnQuZGV0YWlsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAoJGV2ZW50LmRldGFpbC5kYXRhICE9PSBudWxsICYmIHR5cGVvZiAkZXZlbnQuZGV0YWlsLmRhdGEgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgZXZEYXRhID0gJGV2ZW50LmRldGFpbC5kYXRhO1xuICAgICAgICAgIHRoaXMubm90aWZ5TWdyLnVucGluTm90aWZpY2F0aW9uKGV2RGF0YS5tb2RlbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY29tbWVudCBmb3IgbWV0aG9kXG4gICAqIEByZXR1cm5zICAgTm90aWZpY2F0aW9uW10uXG4gICAqL1xuICBwdWJsaWMgZ2V0Tm9uVGltZW91dE5vdGlmaWNhdGlvbnMoKTogTm90aWZpY2F0aW9uW10ge1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5ub3RpZnlNZ3IgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMubm90aWZ5TWdyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IG5vdGlzID0gdGhpcy5ub3RpZnlNZ3IuZ2V0U2hvd2luZ05vdGlmaWNhdGlvbnMoKTtcbiAgICAgIGZvciAobGV0IGkgPSBub3Rpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBsZXQgbm90aWZ5ID0gbm90aXNbaV07XG4gICAgICAgIHJlc3VsdC5wdXNoKG5vdGlmeSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0U2hvdyhzaG93OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHNob3cpIHtcbiAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGVOb3RpZmljYXRpb24gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2hvdyh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2hvdyhmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgaXNIaWRlTm90aWZpY2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhpZGVOb3RpZmljYXRpb247XG4gIH1cblxuICBwdWJsaWMgX2lzQWxpZ25MZWZ0KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmFsaWduICE9PSBudWxsICYmIHRoaXMuYWxpZ24gIT09IHVuZGVmaW5lZCAmJiB0aGlzLmFsaWduICE9PSAnJykge1xuICAgICAgaWYgKEFMSUdOX0xFRlQgPT09IHRoaXMuYWxpZ24udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2V0QWxpZ24oYWxpZ246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYWxpZ24gPSBhbGlnbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGlnbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsaWduO1xuICB9XG59XG4iXX0=