UNPKG

ngx-slice-kit

Version:

[![npm version](https://badge.fury.io/js/ngx-slice-kit.svg)](https://badge.fury.io/js/ngx-slice-kit)

121 lines 21.5 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "../../buttons/icon/icon.component"; export class PaginationComponent { constructor() { this.changed = new EventEmitter(); this.rightArrowHovered = false; this.leftArrowHovered = false; } pageChange(page) { if (this.page === page) { return; } this.page = page; this.createPageArray(); this.changed.emit(page); } createPageArray() { switch (this.page) { case 1: return [ { value: 1 }, { value: 2 }, { value: 3 }, { value: '...', disabled: true }, { value: this.pageCount } ]; case 2: return [ { value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }, { value: '...', disabled: true }, { value: this.pageCount } ]; case 3: return [ { value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }, { value: '...', disabled: true }, { value: this.pageCount } ]; case this.pageCount - 2: return [ { value: 1 }, { value: '...', disabled: true }, { value: this.pageCount - 3 }, { value: this.pageCount - 2 }, { value: this.pageCount - 1 }, { value: this.pageCount } ]; case this.pageCount - 1: return [ { value: 1 }, { value: '...', disabled: true }, { value: this.pageCount - 3 }, { value: this.pageCount - 2 }, { value: this.pageCount - 1 }, { value: this.pageCount } ]; case this.pageCount: return [ { value: 1 }, { value: '...', disabled: true }, { value: this.pageCount - 2 }, { value: this.pageCount - 1 }, { value: this.pageCount } ]; default: return [ { value: 1 }, { value: '...', disabled: true }, { value: this.page - 1 }, { value: this.page }, { value: this.page + 1 }, { value: '...', disabled: true }, { value: this.pageCount } ]; } } getPageCount() { return Math.ceil(this.count / this.limit); } getPages() { let pages = []; const pageCount = this.getPageCount(); if (pageCount > 5) { pages = this.createPageArray(); } else { for (let i = 1; i <= pageCount; i++) { pages.push({ value: i }); } } return pages; } ngOnInit() { this.pageCount = this.getPageCount(); } } PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: PaginationComponent, selector: "sdk-pagination", inputs: { page: "page", count: "count", limit: "limit", small: "small" }, outputs: { changed: "changed" }, ngImport: i0, template: "<div class=\"sdk-paginator\"\n [class.sdk-paginator--default]=\"!small\"\n [class.sdk-paginator--small]=\"small\">\n <div class=\"sdk-paginator__wrapper\">\n <button class=\"sdk-paginator__btn sdk-paginator__arrow sdk-paginator__arrow--left\"\n (mouseenter)=\"leftArrowHovered = true\"\n (mouseleave)=\"leftArrowHovered = false\"\n [disabled]=\"page <= 1\"\n (click)=\"pageChange(page - 1)\">\n <sdk-icon [icon]=\"'chevron_left'\" size=\"24\"\n [color]=\"leftArrowHovered ? 'var(--primary-opposite)' : 'var(--primary-rgb)'\"></sdk-icon>\n </button>\n <div class=\"sdk-paginator__page\" *ngFor=\"let p of getPages()\">\n <button class=\"sdk-paginator__btn sdk-paginator__page\" [disabled]=\"p.disabled\"\n [class.sdk-paginator__btn--active]=\"p.value === page\"\n (click)=\"pageChange(p.value)\">{{p.value}}\n </button>\n </div>\n <button class=\"sdk-paginator__btn sdk-paginator__arrow sdk-paginator__arrow--right\"\n (mouseenter)=\"rightArrowHovered = true\"\n (mouseleave)=\"rightArrowHovered = false\"\n [disabled]=\"(page + 1) > pageCount\"\n (click)=\"pageChange(page + 1)\">\n <sdk-icon [icon]=\"'chevron_right'\" size=\"24\"\n [color]=\"rightArrowHovered ? 'var(--primary-opposite)' : 'var(--primary-rgb)'\"></sdk-icon>\n </button>\n </div>\n</div>\n", styles: [".sdk-paginator{display:flex}.sdk-paginator__wrapper{margin:auto;display:inline-flex;border:1px solid var(--base-a20);border-radius:6px}.sdk-paginator__btn{color:var(--primary);background-color:transparent;border-right:none;border-right:1px solid var(--base-a20);display:flex;justify-content:center;align-items:center;cursor:pointer;font-family:Inter,sans-serif;font-weight:500;transition:all .4s}.sdk-paginator__btn--active{background-color:var(--primary-a80);color:var(--primary-opposite)}.sdk-paginator__btn:hover{background-color:var(--primary-a100);color:var(--primary-opposite)}.sdk-paginator__arrow--right{border-right:none}.sdk-paginator--default .sdk-paginator__btn{width:44px;height:44px;font-size:17px}.sdk-paginator--small .sdk-paginator__btn{width:32px;height:32px;font-size:15px}.sdk-paginator__page{display:flex}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.IconComponent, selector: "sdk-icon", inputs: ["icon", "image", "inline", "size", "color"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PaginationComponent, decorators: [{ type: Component, args: [{ selector: 'sdk-pagination', template: "<div class=\"sdk-paginator\"\n [class.sdk-paginator--default]=\"!small\"\n [class.sdk-paginator--small]=\"small\">\n <div class=\"sdk-paginator__wrapper\">\n <button class=\"sdk-paginator__btn sdk-paginator__arrow sdk-paginator__arrow--left\"\n (mouseenter)=\"leftArrowHovered = true\"\n (mouseleave)=\"leftArrowHovered = false\"\n [disabled]=\"page <= 1\"\n (click)=\"pageChange(page - 1)\">\n <sdk-icon [icon]=\"'chevron_left'\" size=\"24\"\n [color]=\"leftArrowHovered ? 'var(--primary-opposite)' : 'var(--primary-rgb)'\"></sdk-icon>\n </button>\n <div class=\"sdk-paginator__page\" *ngFor=\"let p of getPages()\">\n <button class=\"sdk-paginator__btn sdk-paginator__page\" [disabled]=\"p.disabled\"\n [class.sdk-paginator__btn--active]=\"p.value === page\"\n (click)=\"pageChange(p.value)\">{{p.value}}\n </button>\n </div>\n <button class=\"sdk-paginator__btn sdk-paginator__arrow sdk-paginator__arrow--right\"\n (mouseenter)=\"rightArrowHovered = true\"\n (mouseleave)=\"rightArrowHovered = false\"\n [disabled]=\"(page + 1) > pageCount\"\n (click)=\"pageChange(page + 1)\">\n <sdk-icon [icon]=\"'chevron_right'\" size=\"24\"\n [color]=\"rightArrowHovered ? 'var(--primary-opposite)' : 'var(--primary-rgb)'\"></sdk-icon>\n </button>\n </div>\n</div>\n", styles: [".sdk-paginator{display:flex}.sdk-paginator__wrapper{margin:auto;display:inline-flex;border:1px solid var(--base-a20);border-radius:6px}.sdk-paginator__btn{color:var(--primary);background-color:transparent;border-right:none;border-right:1px solid var(--base-a20);display:flex;justify-content:center;align-items:center;cursor:pointer;font-family:Inter,sans-serif;font-weight:500;transition:all .4s}.sdk-paginator__btn--active{background-color:var(--primary-a80);color:var(--primary-opposite)}.sdk-paginator__btn:hover{background-color:var(--primary-a100);color:var(--primary-opposite)}.sdk-paginator__arrow--right{border-right:none}.sdk-paginator--default .sdk-paginator__btn{width:44px;height:44px;font-size:17px}.sdk-paginator--small .sdk-paginator__btn{width:32px;height:32px;font-size:15px}.sdk-paginator__page{display:flex}\n"] }] }], ctorParameters: function () { return []; }, propDecorators: { page: [{ type: Input }], count: [{ type: Input }], limit: [{ type: Input }], small: [{ type: Input }], changed: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25neC1zbGljZS1raXQvc3JjL2xpYi9sYXlvdXQvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LXNsaWNlLWtpdC9zcmMvbGliL2xheW91dC9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU8vRSxNQUFNLE9BQU8sbUJBQW1CO0lBYTVCO1FBTmlCLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFJekMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFJO1FBQ2xCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDcEIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxlQUFlO1FBQ2xCLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNmLEtBQUssQ0FBQztnQkFDRixPQUFPO29CQUNILEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBQztvQkFDVixFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUM7b0JBQ1YsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFDO29CQUNWLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDO29C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RSxJQUFJLEVBQUM7b0JBQzlCLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUM7aUJBQzFCLENBQUM7U0FDVDtJQUNMLENBQUM7SUFFTSxZQUFZO1FBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtZQUNmLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDbEM7YUFBTTtZQUNILEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFTLENBQUMsQ0FBQzthQUNsQztTQUNKO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDOztnSEFqSFEsbUJBQW1CO29HQUFuQixtQkFBbUIsaUtDUGhDLHVoREE0QkE7MkZEckJhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDSSxnQkFBZ0I7MEVBTVYsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFFVyxPQUFPO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Nkay1wYWdpbmF0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgcHVibGljIHBhZ2U6IG51bWJlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgY291bnQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgbGltaXQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgc21hbGw6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgcmlnaHRBcnJvd0hvdmVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgbGVmdEFycm93SG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBwYWdlQ291bnQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgIH1cblxuICAgIHB1YmxpYyBwYWdlQ2hhbmdlKHBhZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGFnZSA9PT0gcGFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYWdlID0gcGFnZTtcbiAgICAgICAgdGhpcy5jcmVhdGVQYWdlQXJyYXkoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQocGFnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVBhZ2VBcnJheSgpOiBQYWdlW10ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMucGFnZSkge1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogMn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogM30sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogJy4uLicsIGRpc2FibGVkOiB0cnVlfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiB0aGlzLnBhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogMn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogM30sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogNH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogJy4uLicsIGRpc2FibGVkOiB0cnVlfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiB0aGlzLnBhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogMn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogM30sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogNH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogJy4uLicsIGRpc2FibGVkOiB0cnVlfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiB0aGlzLnBhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgY2FzZSB0aGlzLnBhZ2VDb3VudCAtIDI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiAxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiAnLi4uJywgZGlzYWJsZWQ6IHRydWV9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IHRoaXMucGFnZUNvdW50IC0gM30sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogdGhpcy5wYWdlQ291bnQgLSAyfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiB0aGlzLnBhZ2VDb3VudCAtIDF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IHRoaXMucGFnZUNvdW50fVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlIHRoaXMucGFnZUNvdW50IC0gMTpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IDF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6ICcuLi4nLCBkaXNhYmxlZDogdHJ1ZX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogdGhpcy5wYWdlQ291bnQgLSAzfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiB0aGlzLnBhZ2VDb3VudCAtIDJ9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IHRoaXMucGFnZUNvdW50IC0gMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogdGhpcy5wYWdlQ291bnR9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5wYWdlQ291bnQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiAxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiAnLi4uJywgZGlzYWJsZWQ6IHRydWV9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IHRoaXMucGFnZUNvdW50IC0gMn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogdGhpcy5wYWdlQ291bnQgLSAxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiB0aGlzLnBhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IDF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6ICcuLi4nLCBkaXNhYmxlZDogdHJ1ZX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogdGhpcy5wYWdlIC0gMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogdGhpcy5wYWdlfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiB0aGlzLnBhZ2UgKyAxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiAnLi4uJywgZGlzYWJsZWQ6IHRydWV9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IHRoaXMucGFnZUNvdW50fVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFnZUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5jb3VudCAvIHRoaXMubGltaXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYWdlcygpOiBQYWdlW10ge1xuICAgICAgICBsZXQgcGFnZXMgPSBbXTtcbiAgICAgICAgY29uc3QgcGFnZUNvdW50ID0gdGhpcy5nZXRQYWdlQ291bnQoKTtcbiAgICAgICAgaWYgKHBhZ2VDb3VudCA+IDUpIHtcbiAgICAgICAgICAgIHBhZ2VzID0gdGhpcy5jcmVhdGVQYWdlQXJyYXkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHBhZ2VDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFnZXMucHVzaCh7dmFsdWU6IGl9IGFzIFBhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhZ2VzO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlQ291bnQgPSB0aGlzLmdldFBhZ2VDb3VudCgpO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIFBhZ2Uge1xuICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuIiwiPGRpdiBjbGFzcz1cInNkay1wYWdpbmF0b3JcIlxuICAgICBbY2xhc3Muc2RrLXBhZ2luYXRvci0tZGVmYXVsdF09XCIhc21hbGxcIlxuICAgICBbY2xhc3Muc2RrLXBhZ2luYXRvci0tc21hbGxdPVwic21hbGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2RrLXBhZ2luYXRvcl9fd3JhcHBlclwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2RrLXBhZ2luYXRvcl9fYnRuIHNkay1wYWdpbmF0b3JfX2Fycm93IHNkay1wYWdpbmF0b3JfX2Fycm93LS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJsZWZ0QXJyb3dIb3ZlcmVkID0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwibGVmdEFycm93SG92ZXJlZCA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnZSA8PSAxXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicGFnZUNoYW5nZShwYWdlIC0gMSlcIj5cbiAgICAgICAgICAgIDxzZGstaWNvbiBbaWNvbl09XCInY2hldnJvbl9sZWZ0J1wiIHNpemU9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImxlZnRBcnJvd0hvdmVyZWQgPyAndmFyKC0tcHJpbWFyeS1vcHBvc2l0ZSknIDogJ3ZhcigtLXByaW1hcnktcmdiKSdcIj48L3Nkay1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNkay1wYWdpbmF0b3JfX3BhZ2VcIiAqbmdGb3I9XCJsZXQgcCBvZiBnZXRQYWdlcygpXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2RrLXBhZ2luYXRvcl9fYnRuIHNkay1wYWdpbmF0b3JfX3BhZ2VcIiBbZGlzYWJsZWRdPVwicC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZGstcGFnaW5hdG9yX19idG4tLWFjdGl2ZV09XCJwLnZhbHVlID09PSBwYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBhZ2VDaGFuZ2UocC52YWx1ZSlcIj57e3AudmFsdWV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2RrLXBhZ2luYXRvcl9fYnRuIHNkay1wYWdpbmF0b3JfX2Fycm93IHNkay1wYWdpbmF0b3JfX2Fycm93LS1yaWdodFwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwicmlnaHRBcnJvd0hvdmVyZWQgPSB0cnVlXCJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJyaWdodEFycm93SG92ZXJlZCA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKHBhZ2UgKyAxKSA+IHBhZ2VDb3VudFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBhZ2VDaGFuZ2UocGFnZSArIDEpXCI+XG4gICAgICAgICAgICA8c2RrLWljb24gW2ljb25dPVwiJ2NoZXZyb25fcmlnaHQnXCIgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwicmlnaHRBcnJvd0hvdmVyZWQgPyAndmFyKC0tcHJpbWFyeS1vcHBvc2l0ZSknIDogJ3ZhcigtLXByaW1hcnktcmdiKSdcIj48L3Nkay1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19