UNPKG

ngx-materialize

Version:

An Angular wrap around Materialize library

175 lines (174 loc) 15.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, EventEmitter, Input, Output } from '@angular/core'; import { HandlePropChanges } from '../shared/index'; var MzPaginationComponent = /** @class */ (function (_super) { tslib_1.__extends(MzPaginationComponent, _super); function MzPaginationComponent() { var _this = _super.call(this) || this; _this.currentPage = 1; _this.enableFirstAndLastPageButtons = false; _this.maxPageButtons = 5; _this.pageChange = new EventEmitter(); return _this; } Object.defineProperty(MzPaginationComponent.prototype, "totalPages", { get: /** * @return {?} */ function () { return Math.ceil(this.totalItems / this.itemsPerPage); }, enumerable: true, configurable: true }); /** * @return {?} */ MzPaginationComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.initHandlers(); this.renderButtons(); }; /** * @param {?} pageNumber * @return {?} */ MzPaginationComponent.prototype.changeCurrentPage = /** * @param {?} pageNumber * @return {?} */ function (pageNumber) { this.currentPage = pageNumber; this.pageChange.emit(pageNumber); this.renderButtons(); }; /** * @return {?} */ MzPaginationComponent.prototype.firstPage = /** * @return {?} */ function () { this.changeCurrentPage(1); }; /** * @return {?} */ MzPaginationComponent.prototype.initHandlers = /** * @return {?} */ function () { var _this = this; this.handlers = { currentPage: function () { return _this.renderButtons(); }, itemsPerPage: function () { return _this.renderButtons(); }, maxPageButtons: function () { return _this.renderButtons(); }, totalItems: function () { return _this.renderButtons(); }, }; }; /** * @return {?} */ MzPaginationComponent.prototype.lastPage = /** * @return {?} */ function () { this.changeCurrentPage(this.totalPages); }; /** * @return {?} */ MzPaginationComponent.prototype.nextPage = /** * @return {?} */ function () { if (this.currentPage < this.totalPages) { var /** @type {?} */ nextPage = this.currentPage + 1; this.changeCurrentPage(nextPage); } }; /** * @return {?} */ MzPaginationComponent.prototype.previousPage = /** * @return {?} */ function () { if (this.currentPage !== 1) { var /** @type {?} */ previousPage = this.currentPage - 1; this.changeCurrentPage(previousPage); } }; /** * @return {?} */ MzPaginationComponent.prototype.renderButtons = /** * @return {?} */ function () { var /** @type {?} */ buttonsCount = Math.min(this.maxPageButtons, this.totalPages); var /** @type {?} */ maxPosition = this.totalPages - buttonsCount; var /** @type {?} */ halfButtons = Math.floor(buttonsCount / 2); var /** @type {?} */ hiddenPagesBefore = (this.currentPage - halfButtons); if (hiddenPagesBefore > maxPosition) { hiddenPagesBefore = maxPosition + 1; } var /** @type {?} */ from = Math.max(hiddenPagesBefore, 1); var /** @type {?} */ to = Math.min(this.totalPages, from + this.maxPageButtons - 1); this.pages = Array(buttonsCount).fill(0).map(function (x, i) { return from + i; }); if (this.currentPage > this.totalPages) { this.currentPage = this.pages[0]; } }; MzPaginationComponent.decorators = [ { type: Component, args: [{ selector: 'mz-pagination', template: "\n <ul class=\"pagination\">\n <mz-pagination-page-button [disabled]=\"currentPage === 1\" *ngIf=\"enableFirstAndLastPageButtons\">\n <a (click)=\"firstPage()\"><i mz-icon [icon]=\"'first_page'\"></i></a>\n </mz-pagination-page-button>\n <mz-pagination-page-button [disabled]=\"currentPage === 1\">\n <a (click)=\"previousPage()\"><i mz-icon [icon]=\"'chevron_left'\"></i></a>\n </mz-pagination-page-button>\n <mz-pagination-page-button *ngFor=\"let page of pages\"\n [active]=\"page === currentPage\"\n >\n <a (click)=\"changeCurrentPage(page)\">{{ page }}</a>\n </mz-pagination-page-button>\n <mz-pagination-page-button [disabled]=\"currentPage === totalPages\">\n <a (click)=\"nextPage()\"><i mz-icon [icon]=\"'chevron_right'\"></i></a>\n </mz-pagination-page-button>\n <mz-pagination-page-button [disabled]=\"currentPage === totalPages\" *ngIf=\"enableFirstAndLastPageButtons\">\n <a (click)=\"lastPage()\"><i mz-icon [icon]=\"'last_page'\"></i></a>\n </mz-pagination-page-button>\n </ul>", styles: [""], },] }, ]; /** @nocollapse */ MzPaginationComponent.ctorParameters = function () { return []; }; MzPaginationComponent.propDecorators = { "currentPage": [{ type: Input },], "enableFirstAndLastPageButtons": [{ type: Input },], "itemsPerPage": [{ type: Input },], "maxPageButtons": [{ type: Input },], "totalItems": [{ type: Input },], "pageChange": [{ type: Output },], }; return MzPaginationComponent; }(HandlePropChanges)); export { MzPaginationComponent }; function MzPaginationComponent_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ MzPaginationComponent.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ MzPaginationComponent.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ MzPaginationComponent.propDecorators; /** @type {?} */ MzPaginationComponent.prototype.currentPage; /** @type {?} */ MzPaginationComponent.prototype.enableFirstAndLastPageButtons; /** @type {?} */ MzPaginationComponent.prototype.itemsPerPage; /** @type {?} */ MzPaginationComponent.prototype.maxPageButtons; /** @type {?} */ MzPaginationComponent.prototype.totalItems; /** @type {?} */ MzPaginationComponent.prototype.pageChange; /** @type {?} */ MzPaginationComponent.prototype.pages; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtbWF0ZXJpYWxpemUvIiwic291cmNlcyI6WyJzcmMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0lBMkJULGlEQUFpQjtJQWExRDtRQUFBLFlBQ0UsaUJBQU8sU0FDUjs0QkFkc0IsQ0FBQzs4Q0FDaUIsS0FBSzsrQkFFcEIsQ0FBQzsyQkFFSixJQUFJLFlBQVksRUFBVTs7S0FTaEQ7SUFORCxzQkFBSSw2Q0FBVTs7OztRQUFkO1lBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDdkQ7OztPQUFBOzs7O0lBTUQsd0NBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztLQUN0Qjs7Ozs7SUFFRCxpREFBaUI7Ozs7SUFBakIsVUFBa0IsVUFBa0I7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0tBQ3RCOzs7O0lBRUQseUNBQVM7OztJQUFUO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzNCOzs7O0lBRUQsNENBQVk7OztJQUFaO1FBQUEsaUJBT0M7UUFOQyxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsV0FBVyxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsYUFBYSxFQUFFLEVBQXBCLENBQW9CO1lBQ3ZDLFlBQVksRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLGFBQWEsRUFBRSxFQUFwQixDQUFvQjtZQUN4QyxjQUFjLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxhQUFhLEVBQUUsRUFBcEIsQ0FBb0I7WUFDMUMsVUFBVSxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsYUFBYSxFQUFFLEVBQXBCLENBQW9CO1NBQ3ZDLENBQUM7S0FDSDs7OztJQUVELHdDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDekM7Ozs7SUFFRCx3Q0FBUTs7O0lBQVI7UUFDRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLHFCQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEM7S0FDRjs7OztJQUVELDRDQUFZOzs7SUFBWjtRQUNFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixxQkFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3RDO0tBQ0Y7Ozs7SUFFRCw2Q0FBYTs7O0lBQWI7UUFDRSxxQkFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxxQkFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7UUFDbkQscUJBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWpELHFCQUFJLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsQ0FBQztRQUN6RCxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLGlCQUFpQixHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7U0FDckM7UUFFRCxxQkFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxxQkFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQyxDQUFDLEVBQUUsQ0FBQyxJQUFLLE9BQUEsSUFBSSxHQUFHLENBQUMsRUFBUixDQUFRLENBQUMsQ0FBQztRQUVqRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQztLQUNGOztnQkFyR0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixRQUFRLEVBQUUsbWlDQW1CSjtvQkFDTixNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7aUJBQ2I7Ozs7O2dDQUVFLEtBQUs7a0RBQ0wsS0FBSztpQ0FDTCxLQUFLO21DQUNMLEtBQUs7K0JBQ0wsS0FBSzsrQkFDTCxNQUFNOztnQ0FuQ1Q7RUE2QjJDLGlCQUFpQjtTQUEvQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBIYW5kbGVQcm9wQ2hhbmdlcyB9IGZyb20gJy4uL3NoYXJlZC9pbmRleCc7XHJcbmltcG9ydCB7IE16UGFnaW5hdGlvblBhZ2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3BhZ2luYXRpb24tcGFnZS1idXR0b24vaW5kZXgnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtei1wYWdpbmF0aW9uJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gIDx1bCBjbGFzcz1cInBhZ2luYXRpb25cIj5cclxuICAgIDxtei1wYWdpbmF0aW9uLXBhZ2UtYnV0dG9uIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiICpuZ0lmPVwiZW5hYmxlRmlyc3RBbmRMYXN0UGFnZUJ1dHRvbnNcIj5cclxuICAgICAgPGEgKGNsaWNrKT1cImZpcnN0UGFnZSgpXCI+PGkgbXotaWNvbiBbaWNvbl09XCInZmlyc3RfcGFnZSdcIj48L2k+PC9hPlxyXG4gICAgPC9tei1wYWdpbmF0aW9uLXBhZ2UtYnV0dG9uPlxyXG4gICAgPG16LXBhZ2luYXRpb24tcGFnZS1idXR0b24gW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCI+XHJcbiAgICAgIDxhIChjbGljayk9XCJwcmV2aW91c1BhZ2UoKVwiPjxpIG16LWljb24gW2ljb25dPVwiJ2NoZXZyb25fbGVmdCdcIj48L2k+PC9hPlxyXG4gICAgPC9tei1wYWdpbmF0aW9uLXBhZ2UtYnV0dG9uPlxyXG4gICAgPG16LXBhZ2luYXRpb24tcGFnZS1idXR0b24gKm5nRm9yPVwibGV0IHBhZ2Ugb2YgcGFnZXNcIlxyXG4gICAgICBbYWN0aXZlXT1cInBhZ2UgPT09IGN1cnJlbnRQYWdlXCJcclxuICAgID5cclxuICAgICAgPGEgKGNsaWNrKT1cImNoYW5nZUN1cnJlbnRQYWdlKHBhZ2UpXCI+e3sgcGFnZSB9fTwvYT5cclxuICAgIDwvbXotcGFnaW5hdGlvbi1wYWdlLWJ1dHRvbj5cclxuICAgIDxtei1wYWdpbmF0aW9uLXBhZ2UtYnV0dG9uIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlc1wiPlxyXG4gICAgICA8YSAoY2xpY2spPVwibmV4dFBhZ2UoKVwiPjxpIG16LWljb24gW2ljb25dPVwiJ2NoZXZyb25fcmlnaHQnXCI+PC9pPjwvYT5cclxuICAgIDwvbXotcGFnaW5hdGlvbi1wYWdlLWJ1dHRvbj5cclxuICAgIDxtei1wYWdpbmF0aW9uLXBhZ2UtYnV0dG9uIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlc1wiICpuZ0lmPVwiZW5hYmxlRmlyc3RBbmRMYXN0UGFnZUJ1dHRvbnNcIj5cclxuICAgICAgPGEgKGNsaWNrKT1cImxhc3RQYWdlKClcIj48aSBtei1pY29uIFtpY29uXT1cIidsYXN0X3BhZ2UnXCI+PC9pPjwvYT5cclxuICAgIDwvbXotcGFnaW5hdGlvbi1wYWdlLWJ1dHRvbj5cclxuICA8L3VsPmAsXHJcbiAgc3R5bGVzOiBbYGBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXpQYWdpbmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgSGFuZGxlUHJvcENoYW5nZXMgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlID0gMTtcclxuICBASW5wdXQoKSBlbmFibGVGaXJzdEFuZExhc3RQYWdlQnV0dG9ucyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG1heFBhZ2VCdXR0b25zID0gNTtcclxuICBASW5wdXQoKSB0b3RhbEl0ZW1zOiBudW1iZXI7XHJcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgcGFnZXM6IG51bWJlcltdO1xyXG4gIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcyAvIHRoaXMuaXRlbXNQZXJQYWdlKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0SGFuZGxlcnMoKTtcclxuICAgIHRoaXMucmVuZGVyQnV0dG9ucygpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlQ3VycmVudFBhZ2UocGFnZU51bWJlcjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZU51bWJlcjtcclxuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHBhZ2VOdW1iZXIpO1xyXG4gICAgdGhpcy5yZW5kZXJCdXR0b25zKCk7XHJcbiAgfVxyXG5cclxuICBmaXJzdFBhZ2UoKSB7XHJcbiAgICB0aGlzLmNoYW5nZUN1cnJlbnRQYWdlKDEpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEhhbmRsZXJzKCkge1xyXG4gICAgdGhpcy5oYW5kbGVycyA9IHtcclxuICAgICAgY3VycmVudFBhZ2U6ICgpID0+IHRoaXMucmVuZGVyQnV0dG9ucygpLFxyXG4gICAgICBpdGVtc1BlclBhZ2U6ICgpID0+IHRoaXMucmVuZGVyQnV0dG9ucygpLFxyXG4gICAgICBtYXhQYWdlQnV0dG9uczogKCkgPT4gdGhpcy5yZW5kZXJCdXR0b25zKCksXHJcbiAgICAgIHRvdGFsSXRlbXM6ICgpID0+IHRoaXMucmVuZGVyQnV0dG9ucygpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGxhc3RQYWdlKCkge1xyXG4gICAgdGhpcy5jaGFuZ2VDdXJyZW50UGFnZSh0aGlzLnRvdGFsUGFnZXMpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA8IHRoaXMudG90YWxQYWdlcykge1xyXG4gICAgICBjb25zdCBuZXh0UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UgKyAxO1xyXG4gICAgICB0aGlzLmNoYW5nZUN1cnJlbnRQYWdlKG5leHRQYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXZpb3VzUGFnZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlICE9PSAxKSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzUGFnZSA9IHRoaXMuY3VycmVudFBhZ2UgLSAxO1xyXG4gICAgICB0aGlzLmNoYW5nZUN1cnJlbnRQYWdlKHByZXZpb3VzUGFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJCdXR0b25zKCkge1xyXG4gICAgY29uc3QgYnV0dG9uc0NvdW50ID0gTWF0aC5taW4odGhpcy5tYXhQYWdlQnV0dG9ucywgdGhpcy50b3RhbFBhZ2VzKTtcclxuICAgIGNvbnN0IG1heFBvc2l0aW9uID0gdGhpcy50b3RhbFBhZ2VzIC0gYnV0dG9uc0NvdW50O1xyXG4gICAgY29uc3QgaGFsZkJ1dHRvbnMgPSBNYXRoLmZsb29yKGJ1dHRvbnNDb3VudCAvIDIpO1xyXG5cclxuICAgIGxldCBoaWRkZW5QYWdlc0JlZm9yZSA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gaGFsZkJ1dHRvbnMpO1xyXG4gICAgaWYgKGhpZGRlblBhZ2VzQmVmb3JlID4gbWF4UG9zaXRpb24pIHtcclxuICAgICAgaGlkZGVuUGFnZXNCZWZvcmUgPSBtYXhQb3NpdGlvbiArIDE7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZnJvbSA9IE1hdGgubWF4KGhpZGRlblBhZ2VzQmVmb3JlLCAxKTtcclxuICAgIGNvbnN0IHRvID0gTWF0aC5taW4odGhpcy50b3RhbFBhZ2VzLCBmcm9tICsgdGhpcy5tYXhQYWdlQnV0dG9ucyAtIDEpO1xyXG5cclxuICAgIHRoaXMucGFnZXMgPSBBcnJheShidXR0b25zQ291bnQpLmZpbGwoMCkubWFwKCh4LCBpKSA9PiBmcm9tICsgaSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiB0aGlzLnRvdGFsUGFnZXMpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZXNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==