UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

245 lines (244 loc) 21 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'; const /** @type {?} */ TYPE_NAME = "phx-notification-container"; const /** @type {?} */ ALIGN_LEFT = "left"; const /** @type {?} */ ALIGN_RIGHT = "right"; /** class... */ export class NotificationContainer extends AbstractHasOptions { /** * @param {?} notifyMgr * @param {?} elementRef * @param {?} observableMgr */ constructor(notifyMgr, elementRef, observableMgr) { super(); 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 {?} */ ngOnInit() { } /** * comment for method * @param {?} notificationModel Notification. * @return {?} number. */ getModelIndex(notificationModel) { if (notificationModel === null || typeof notificationModel === 'undefined') { return -1; } let /** @type {?} */ notifications = this.getNonTimeoutNotifications(); return notifications.indexOf(notificationModel); } /** * comment for method * @param {?} $event * @return {?} */ onNotificationClosed($event) { if (this.notifyMgr !== null && typeof this.notifyMgr !== 'undefined') { let /** @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 {?} */ onNotificationShowActionBar($event) { if (this.notifyMgr !== null && typeof this.notifyMgr !== 'undefined') { let /** @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 {?} */ onNotificationHideActionBar($event) { if (this.notifyMgr !== null && typeof this.notifyMgr !== 'undefined') { let /** @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[]. */ getNonTimeoutNotifications() { let /** @type {?} */ result = []; if (this.notifyMgr !== null && typeof this.notifyMgr !== 'undefined') { let /** @type {?} */ notis = this.notifyMgr.getShowingNotifications(); for (let /** @type {?} */ i = notis.length - 1; i >= 0; i--) { let /** @type {?} */ notify = notis[i]; result.push(notify); } } return result; } /** * @param {?} show * @return {?} */ setShow(show) { if (show) { this.hideNotification = false; } else { this.hideNotification = true; } } /** * @return {?} */ show() { this.setShow(true); } /** * @return {?} */ hide() { this.setShow(false); } /** * @return {?} */ isHideNotification() { return this.hideNotification; } /** * @return {?} */ _isAlignLeft() { if (this.align !== null && this.align !== undefined && this.align !== '') { if (ALIGN_LEFT === this.align.toLowerCase()) { return true; } } return false; } /** * @param {?} align * @return {?} */ setAlign(align) { this.align = align; } /** * @return {?} */ getAlign() { 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()"> <ng-template ngFor let-item [ngForOf]="getNonTimeoutNotifications()" let-i="index"> <phx-toast-notification [model]="item" (closeDone)="onNotificationClosed($event)" (showActionBar)="onNotificationShowActionBar($event)" (hideActionBarDone)="onNotificationHideActionBar($event)"></phx-toast-notification> </ng-template> </div> ` },] }, ]; /** @nocollapse */ NotificationContainer.ctorParameters = () => [ { 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); 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90aWZpY2F0aW9uQ29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9Ob3RpZmljYXRpb25Db250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUlqRSx1QkFBTSxTQUFTLEdBQVcsNEJBQTRCLENBQUM7QUFDdkQsdUJBQU0sVUFBVSxHQUFXLE1BQU0sQ0FBQztBQUNsQyx1QkFBTSxXQUFXLEdBQVcsT0FBTyxDQUFDO0FBRXBDO0FBWUEsTUFBTSw0QkFBNkIsU0FBUSxrQkFBa0I7Ozs7OztJQW9DM0QsWUFBWSxTQUE4QixFQUFFLFVBQXNCLEVBQUUsYUFBZ0M7UUFDbEcsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDO1FBQ3pHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtB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QyxVQUFVLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQzs7Ozs7O0lBR1IsUUFBUSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Ozs7O0lBR2QsUUFBUTtRQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7a0NBakt1QixTQUFTO21DQUNSLFVBQVU7b0NBQ1QsV0FBVzs7WUFoQnpELFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLFFBQVEsRUFBRTs7Ozs7O0NBTVg7YUFDQTs7OztZQXRCUSxtQkFBbUI7WUFGQSxVQUFVO1lBRzdCLGlCQUFpQjs7O3NCQXdEdkIsS0FBSzs7O0lBREwsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuL21vZGVsL05vdGlmaWNhdGlvbic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25NYW5hZ2VyIH0gZnJvbSAnLi4vc2VydmljZS9Ob3RpZmljYXRpb25NYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZU1hbmFnZXIgfSBmcm9tICcuLi9zZXJ2aWNlL09ic2VydmFibGVNYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3ROb3RpZmljYXRpb24gfSBmcm9tICcuL1RvYXN0Tm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBBYnN0cmFjdEhhc09wdGlvbnMgfSBmcm9tICcuLi9zaGFyZS9BYnN0cmFjdEhhc09wdGlvbnMnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtbm90aWZpY2F0aW9uLWNvbnRhaW5lclwiO1xuY29uc3QgQUxJR05fTEVGVDogc3RyaW5nID0gXCJsZWZ0XCI7XG5jb25zdCBBTElHTl9SSUdIVDogc3RyaW5nID0gXCJyaWdodFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6ICdwaHgtbm90aWZpY2F0aW9uLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1ub3RpZmljYXRpb24tY29udGFpbmVyXCIgW2NsYXNzLnNob3ddPVwiIWlzSGlkZU5vdGlmaWNhdGlvbigpXCIgW2NsYXNzLmxlZnRdPVwiX2lzQWxpZ25MZWZ0KClcIj5cblx0PG5nLXRlbXBsYXRlIG5nRm9yIGxldC1pdGVtIFtuZ0Zvck9mXT1cImdldE5vblRpbWVvdXROb3RpZmljYXRpb25zKClcIiBsZXQtaT1cImluZGV4XCI+XG5cdFx0PHBoeC10b2FzdC1ub3RpZmljYXRpb24gW21vZGVsXT1cIml0ZW1cIiAoY2xvc2VEb25lKT1cIm9uTm90aWZpY2F0aW9uQ2xvc2VkKCRldmVudClcIlxuXHRcdChzaG93QWN0aW9uQmFyKT1cIm9uTm90aWZpY2F0aW9uU2hvd0FjdGlvbkJhcigkZXZlbnQpXCIgKGhpZGVBY3Rpb25CYXJEb25lKT1cIm9uTm90aWZpY2F0aW9uSGlkZUFjdGlvbkJhcigkZXZlbnQpXCI+PC9waHgtdG9hc3Qtbm90aWZpY2F0aW9uPlxuXHQ8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5gXG59KVxuLyoqIGNsYXNzLi4uICovXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uQ29udGFpbmVyIGV4dGVuZHMgQWJzdHJhY3RIYXNPcHRpb25zIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFMSUdOX0xFRlQ6IHN0cmluZyA9IEFMSUdOX0xFRlQ7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxJR05fUklHSFQ6IHN0cmluZyA9IEFMSUdOX1JJR0hUO1xuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgZG9jIGNvbW1lbnQgZm9yIFwiREVMQVlfSU5URVJWQUxcIi5cbiAgICovXG4gIHByaXZhdGUgREVMQVlfSU5URVJWQUw6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBkb2MgY29tbWVudCBmb3IgXCJub3RpZnlNZ3JcIi5cbiAgICovXG4gIHByaXZhdGUgbm90aWZ5TWdyOiBOb3RpZmljYXRpb25NYW5hZ2VyO1xuICAvKipcbiAgICogVGhpcyBpcyBhIGRvYyBjb21tZW50IGZvciBcImVsZW1lbnRSZWZcIi5cbiAgICovXG4gIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBkb2MgY29tbWVudCBmb3IgXCJjbG9zZURlbGF5VGltZXJcIi5cbiAgICovXG4gIHByaXZhdGUgY2xvc2VEZWxheVRpbWVyOiBhbnk7XG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgZG9jIGNvbW1lbnQgZm9yIFwib2JzZXJ2YWJsZU1nclwiLlxuICAgKi9cbiAgcHJpdmF0ZSBvYnNlcnZhYmxlTWdyOiBPYnNlcnZhYmxlTWFuYWdlcjtcbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBkb2MgY29tbWVudCBmb3IgXCJoaWRlTm90aWZpY2F0aW9uXCIuXG4gICAqL1xuICBwcml2YXRlIGhpZGVOb3RpZmljYXRpb246IGJvb2xlYW47XG5cbiAgLy8gLS0tIGZyb20gc2VsZlxuICBAT3B0aW9uKClcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBhbGlnbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5vdGlmeU1ncjogTm90aWZpY2F0aW9uTWFuYWdlciwgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgb2JzZXJ2YWJsZU1ncjogT2JzZXJ2YWJsZU1hbmFnZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubm90aWZ5TWdyID0gbm90aWZ5TWdyO1xuICAgIHRoaXMub2JzZXJ2YWJsZU1nciA9IG9ic2VydmFibGVNZ3I7XG4gICAgdGhpcy5lbGVtZW50UmVmID0gZWxlbWVudFJlZjtcbiAgICB0aGlzLkRFTEFZX0lOVEVSVkFMID0gVG9hc3ROb3RpZmljYXRpb24uQU5JTUFURV9PVVRfSU5URVJWQUwgKyBUb2FzdE5vdGlmaWNhdGlvbi5BTklNQVRFX1JFTU9WRV9JTlRFUlZBTDsgLy8gb3V0ICsgcmVtb3ZlXG4gICAgdGhpcy5oaWRlTm90aWZpY2F0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5hbGlnbiA9IEFMSUdOX1JJR0hUO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gIH1cblxuICAvKipcbiAgICogY29tbWVudCBmb3IgbWV0aG9kXG4gICAqIEBwYXJhbSBub3RpZmljYXRpb25Nb2RlbCAgTm90aWZpY2F0aW9uLlxuICAgKiBAcmV0dXJucyAgIG51bWJlci5cbiAgICovXG4gIHByaXZhdGUgZ2V0TW9kZWxJbmRleChub3RpZmljYXRpb25Nb2RlbDogTm90aWZpY2F0aW9uKTogbnVtYmVyIHtcbiAgICBpZiAobm90aWZpY2F0aW9uTW9kZWwgPT09IG51bGwgfHwgdHlwZW9mIG5vdGlmaWNhdGlvbk1vZGVsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBsZXQgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uW10gPSB0aGlzLmdldE5vblRpbWVvdXROb3RpZmljYXRpb25zKCk7XG5cbiAgICByZXR1cm4gbm90aWZpY2F0aW9ucy5pbmRleE9mKG5vdGlmaWNhdGlvbk1vZGVsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb21tZW50IGZvciBtZXRob2RcbiAgICogQHBhcmFtIGV2ZW50ICBDdXN0b21FdmVudFxuICAgKi9cbiAgcHVibGljIG9uTm90aWZpY2F0aW9uQ2xvc2VkKCRldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ub3RpZnlNZ3IgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMubm90aWZ5TWdyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IGV2RGF0YSA9IG51bGw7XG4gICAgICBpZiAoJGV2ZW50LmRldGFpbCAhPT0gbnVsbCAmJiB0eXBlb2YgJGV2ZW50LmRldGFpbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKCRldmVudC5kZXRhaWwuZGF0YSAhPT0gbnVsbCAmJiB0eXBlb2YgJGV2ZW50LmRldGFpbC5kYXRhICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGV2RGF0YSA9ICRldmVudC5kZXRhaWwuZGF0YTtcbiAgICAgICAgICB0aGlzLm5vdGlmeU1nci5jbGVhcihldkRhdGEubW9kZWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNvbW1lbnQgZm9yIG1ldGhvZFxuICAgKiBAcGFyYW0gZXZlbnQgIEN1c3RvbUV2ZW50XG4gICAqL1xuICBwdWJsaWMgb25Ob3RpZmljYXRpb25TaG93QWN0aW9uQmFyKCRldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ub3RpZnlNZ3IgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMubm90aWZ5TWdyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IGV2RGF0YSA9IG51bGw7XG4gICAgICBpZiAoJGV2ZW50LmRldGFpbCAhPT0gbnVsbCAmJiB0eXBlb2YgJGV2ZW50LmRldGFpbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKCRldmVudC5kZXRhaWwuZGF0YSAhPT0gbnVsbCAmJiB0eXBlb2YgJGV2ZW50LmRldGFpbC5kYXRhICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGV2RGF0YSA9ICRldmVudC5kZXRhaWwuZGF0YTtcbiAgICAgICAgICB0aGlzLm5vdGlmeU1nci5waW5Ob3RpZmljYXRpb24oZXZEYXRhLm1vZGVsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjb21tZW50IGZvciBtZXRob2RcbiAgICogQHBhcmFtIGV2ZW50ICBDdXN0b21FdmVudFxuICAgKi9cbiAgcHVibGljIG9uTm90aWZpY2F0aW9uSGlkZUFjdGlvbkJhcigkZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm90aWZ5TWdyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLm5vdGlmeU1nciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxldCBldkRhdGEgPSBudWxsO1xuICAgICAgaWYgKCRldmVudC5kZXRhaWwgIT09IG51bGwgJiYgdHlwZW9mICRldmVudC5kZXRhaWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICgkZXZlbnQuZGV0YWlsLmRhdGEgIT09IG51bGwgJiYgdHlwZW9mICRldmVudC5kZXRhaWwuZGF0YSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBldkRhdGEgPSAkZXZlbnQuZGV0YWlsLmRhdGE7XG4gICAgICAgICAgdGhpcy5ub3RpZnlNZ3IudW5waW5Ob3RpZmljYXRpb24oZXZEYXRhLm1vZGVsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjb21tZW50IGZvciBtZXRob2RcbiAgICogQHJldHVybnMgICBOb3RpZmljYXRpb25bXS5cbiAgICovXG4gIHB1YmxpYyBnZXROb25UaW1lb3V0Tm90aWZpY2F0aW9ucygpOiBOb3RpZmljYXRpb25bXSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIGlmICh0aGlzLm5vdGlmeU1nciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5ub3RpZnlNZ3IgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZXQgbm90aXMgPSB0aGlzLm5vdGlmeU1nci5nZXRTaG93aW5nTm90aWZpY2F0aW9ucygpO1xuICAgICAgZm9yIChsZXQgaSA9IG5vdGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGxldCBub3RpZnkgPSBub3Rpc1tpXTtcbiAgICAgICAgcmVzdWx0LnB1c2gobm90aWZ5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTaG93KHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoc2hvdykge1xuICAgICAgdGhpcy5oaWRlTm90aWZpY2F0aW9uID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTaG93KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGhpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTaG93KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0hpZGVOb3RpZmljYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGlkZU5vdGlmaWNhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBfaXNBbGlnbkxlZnQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuYWxpZ24gIT09IG51bGwgJiYgdGhpcy5hbGlnbiAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYWxpZ24gIT09ICcnKSB7XG4gICAgICBpZiAoQUxJR05fTEVGVCA9PT0gdGhpcy5hbGlnbi50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBbGlnbihhbGlnbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hbGlnbiA9IGFsaWduO1xuICB9XG5cbiAgcHVibGljIGdldEFsaWduKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxpZ247XG4gIH1cbn1cbiJdfQ==