UNPKG

ng-materialgrammi

Version:

An Angular framework which follows

226 lines 28.4 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "../../materialgrammi.service"; import * as i2 from "@angular/common"; import * as i3 from "@angular/router"; export class ButtonComponent { constructor(service) { this.service = service; this.clicked = new EventEmitter(); this.taskType = "none"; this.btnStyle = "solid"; this.task = "open"; this.target = "/"; this.theme = "primary"; this.class = ""; this.btnSize = "md"; this.isBlock = false; this.round = false; this.allowMargin = true; this.allowShrink = true; this.options = {}; this.isExternalLink = false; this.newTab = false; this.active = new EventEmitter(); this.route = [""]; this.buttonType = "none"; this.buttonClasses = ""; this.shrink = false; } ngOnInit() { if (this.taskType != "link") { this.route = [""]; } else { this.route = this.target; } if (this.isExternalLink && this.taskType == "link") { this.buttonType = "external"; } else if (!this.isExternalLink && this.taskType == "link") { this.buttonType = "internal"; } else { this.buttonType = "widget"; } } isClicked() { this.clicked.emit(true); if (this.taskType == "modal") { this.modal(); } else if (this.taskType == "offCanvas") { this.offCanvas(); } else if (this.taskType == "slideShow") { this.slideShow(); } else if (this.taskType == "wizard") { this.wizard(); } else if (this.taskType == "collapse") { this.collapse(); } else if (this.taskType == "overlay") { this.overlay(); } else if (this.taskType == "slideshowV2") { this.slideshowV2(); } } btnClasses() { this.buttonClasses = this.class + " " + this.theme; this.buttonClasses += ` ${this.btnSize}`; this.buttonClasses += this.shrink ? " shrink" : ""; this.buttonClasses += this.isBlock ? ` btn-block` : ``; this.buttonClasses += this.btnStyle == "link" ? " link" : (this.btnStyle == "outline" ? " btn-outline" : ""); this.buttonClasses += this.round ? " radius-5" : ""; this.buttonClasses += this.allowMargin ? " marginR-5" : ""; return this.buttonClasses; } collapse() { if (this.task == "open") { this.service.openCollapse(this.target); this.active.emit(true); } else if (this.task == "close") { this.service.closeCollapse(this.target); this.active.emit(false); } } wizard() { if (this.task == "next") { this.buttonClasses += this.options.next && !this.buttonClasses.includes("disable") ? " disable" : ""; if (this.options.next) { this.service.wizardNextStep(this.target); } } else if (this.task == "previous") { this.buttonClasses += this.options.previous && !this.buttonClasses.includes("disable") ? " disable" : ""; if (this.options.previous) { this.service.WizardPreviousStep(this.target); } } } mouseEnter() { if (this.taskType == "dropdown") { console.log("to trigger dropdown"); this.service.openDropDown(this.target); } } mouseLeave() { this.mouseup(); if (this.taskType == "dropdown") { this.service.closeDropDown(this.target); } } slideShow() { if (this.task == "play") { this.service.playSlideShow(this.target); // this.slideShowService.play(this.target); } else if (this.task == "next") { this.service.nextSlide(this.target); // this.slideShowService.next(this.target); } else if (this.task == "previous") { this.service.previousSlide(this.target); // this.slideShowService.previous(this.target); } else { this.service.pauseSlideshow(this.target); // this.slideShowService.pause(this.target); } } slideshowV2() { if (this.task === "next") { this.service.nextSlideV2(this.target); } else if (this.task === "previous" || this.task === "prev") { this.service.prevSlideV2(this.target); } } modal() { if (this.task == "open") { this.service.openModal(this.target); this.active.emit(true); } else { this.service.closeModal(this.target); this.active.emit(false); } } overlay() { if (this.task == "open") { console.log("opening target", this.target); this.service.openOverlay(this.target); this.active.emit(true); } else { this.service.closeOverlay(this.target); this.active.emit(false); } } offCanvas() { console.log("Task type is offcanvas"); if (this.task == "open") { console.log("opening target", this.target); this.service.openCanvas(this.target); this.active.emit(true); } else { console.log("Closing the canvas"); this.service.closeCanvas(this.target); this.active.emit(false); } } mousedown() { if (this.allowShrink) { this.shrink = true; } } mouseup() { if (this.allowShrink) { this.shrink = false; } } } ButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ButtonComponent, deps: [{ token: i1.MaterialgrammiService }], target: i0.ɵɵFactoryTarget.Component }); ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ButtonComponent, selector: "mg-button", inputs: { taskType: "taskType", btnStyle: "btnStyle", task: "task", target: "target", theme: "theme", class: "class", btnSize: "btnSize", isBlock: "isBlock", round: "round", allowMargin: "allowMargin", allowShrink: "allowShrink", options: "options", isExternalLink: "isExternalLink", newTab: "newTab" }, outputs: { clicked: "clicked", active: "active" }, ngImport: i0, template: "<ng-container *ngIf=\"buttonType == 'external'\">\n <a class=\"btn\" (click)=\"isClicked()\" (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\"\n [ngClass]=\"btnClasses()\" [href]=\"route\" [target]=\"newTab ? '_blank' : '_self'\"\n (mousedown)=\"mousedown()\" (mouseup)=\"mouseup()\">\n <ng-container *ngTemplateOutlet=\"mycontent\"></ng-container>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"buttonType == 'internal'\">\n <a class=\"btn\" (click)=\"isClicked()\" (mouseenter)=\"mouseEnter()\"\n (mouseleave)=\"mouseLeave()\" [ngClass]=\"btnClasses()\" [routerLink]=\"route\"\n (mousedown)=\"mousedown()\" (mouseup)=\"mouseup()\">\n <ng-container *ngTemplateOutlet=\"mycontent\"></ng-container>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"buttonType == 'widget'\">\n <a class=\"btn\" (click)=\"isClicked()\" (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\"\n [ngClass]=\"btnClasses()\"\n (mousedown)=\"mousedown()\" (mouseup)=\"mouseup()\">\n <ng-container *ngTemplateOutlet=\"mycontent\"></ng-container>\n </a>\n</ng-container>\n\n<ng-template #mycontent>\n <ng-content></ng-content>\n</ng-template>\n", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ButtonComponent, decorators: [{ type: Component, args: [{ selector: 'mg-button', template: "<ng-container *ngIf=\"buttonType == 'external'\">\n <a class=\"btn\" (click)=\"isClicked()\" (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\"\n [ngClass]=\"btnClasses()\" [href]=\"route\" [target]=\"newTab ? '_blank' : '_self'\"\n (mousedown)=\"mousedown()\" (mouseup)=\"mouseup()\">\n <ng-container *ngTemplateOutlet=\"mycontent\"></ng-container>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"buttonType == 'internal'\">\n <a class=\"btn\" (click)=\"isClicked()\" (mouseenter)=\"mouseEnter()\"\n (mouseleave)=\"mouseLeave()\" [ngClass]=\"btnClasses()\" [routerLink]=\"route\"\n (mousedown)=\"mousedown()\" (mouseup)=\"mouseup()\">\n <ng-container *ngTemplateOutlet=\"mycontent\"></ng-container>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"buttonType == 'widget'\">\n <a class=\"btn\" (click)=\"isClicked()\" (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\"\n [ngClass]=\"btnClasses()\"\n (mousedown)=\"mousedown()\" (mouseup)=\"mouseup()\">\n <ng-container *ngTemplateOutlet=\"mycontent\"></ng-container>\n </a>\n</ng-container>\n\n<ng-template #mycontent>\n <ng-content></ng-content>\n</ng-template>\n", styles: [""] }] }], ctorParameters: function () { return [{ type: i1.MaterialgrammiService }]; }, propDecorators: { clicked: [{ type: Output }], taskType: [{ type: Input }], btnStyle: [{ type: Input }], task: [{ type: Input }], target: [{ type: Input }], theme: [{ type: Input }], class: [{ type: Input }], btnSize: [{ type: Input }], isBlock: [{ type: Input }], round: [{ type: Input }], allowMargin: [{ type: Input }], allowShrink: [{ type: Input }], options: [{ type: Input }], isExternalLink: [{ type: Input }], newTab: [{ type: Input }], active: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsZ3JhbW1pL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsZ3JhbW1pL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUy9FLE1BQU0sT0FBTyxlQUFlO0lBdUIxQixZQUFvQixPQUE4QjtRQUE5QixZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQXRCeEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDOUIsYUFBUSxHQUFHLE1BQU0sQ0FBQztRQUNsQixhQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ25CLFNBQUksR0FBRyxNQUFNLENBQUM7UUFDZCxXQUFNLEdBQVEsR0FBRyxDQUFDO1FBQ2xCLFVBQUssR0FBVSxTQUFTLENBQUM7UUFDekIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0QyxVQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNiLGVBQVUsR0FB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WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3ZDO2FBQU0sSUFBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hCO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUU7WUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hCO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3BCO0lBRUgsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7U0FDckI7SUFDSCxDQUFDOzs0R0ExTFUsZUFBZTtnR0FBZixlQUFlLG9aQ1Q1Qixxb0NBMkJBOzJGRGxCYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFdBQVc7NEdBS1gsT0FBTztzQkFBaEIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0ZXJpYWxncmFtbWlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWF0ZXJpYWxncmFtbWkuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVtZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWctYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2J1dHRvbi5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIGNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHRhc2tUeXBlID0gXCJub25lXCI7XG4gIEBJbnB1dCgpIGJ0blN0eWxlID0gXCJzb2xpZFwiO1xuICBASW5wdXQoKSB0YXNrID0gXCJvcGVuXCI7XG4gIEBJbnB1dCgpIHRhcmdldDogYW55ID0gXCIvXCI7XG4gIEBJbnB1dCgpIHRoZW1lOiBUaGVtZSA9IFwicHJpbWFyeVwiO1xuICBASW5wdXQoKSBjbGFzcyA9IFwiXCI7XG4gIEBJbnB1dCgpIGJ0blNpemUgPSBcIm1kXCI7XG4gIEBJbnB1dCgpIGlzQmxvY2sgPSBmYWxzZTtcbiAgQElucHV0KCkgcm91bmQgPSBmYWxzZTtcbiAgQElucHV0KCkgYWxsb3dNYXJnaW4gPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd1NocmluayA9IHRydWU7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IGFueSA9IHt9O1xuICBASW5wdXQoKSBpc0V4dGVybmFsTGluayA9IGZhbHNlO1xuICBASW5wdXQoKSBuZXdUYWIgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgYWN0aXZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHJvdXRlID0gW1wiXCJdO1xuICBidXR0b25UeXBlID0gXCJub25lXCI7XG4gIGJ1dHRvbkNsYXNzZXMgPSBcIlwiO1xuICBzaHJpbmsgPSBmYWxzZTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBNYXRlcmlhbGdyYW1taVNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgaWYgKHRoaXMudGFza1R5cGUgIT0gXCJsaW5rXCIpIHtcbiAgICAgIHRoaXMucm91dGUgPSBbXCJcIl07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGUgPSB0aGlzLnRhcmdldDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0V4dGVybmFsTGluayAmJiB0aGlzLnRhc2tUeXBlID09IFwibGlua1wiKSB7XG4gICAgICB0aGlzLmJ1dHRvblR5cGUgPSBcImV4dGVybmFsXCI7XG4gICAgfSBlbHNlIGlmICghdGhpcy5pc0V4dGVybmFsTGluayAmJiB0aGlzLnRhc2tUeXBlID09IFwibGlua1wiKSB7XG4gICAgICB0aGlzLmJ1dHRvblR5cGUgPSBcImludGVybmFsXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnV0dG9uVHlwZSA9IFwid2lkZ2V0XCI7XG4gICAgfVxuXG4gIH1cblxuICBpc0NsaWNrZWQoKSB7XG4gICAgdGhpcy5jbGlja2VkLmVtaXQodHJ1ZSk7XG4gICAgaWYgKHRoaXMudGFza1R5cGUgPT0gXCJtb2RhbFwiKSB7XG4gICAgICB0aGlzLm1vZGFsKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRhc2tUeXBlID09IFwib2ZmQ2FudmFzXCIpIHtcbiAgICAgIHRoaXMub2ZmQ2FudmFzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRhc2tUeXBlID09IFwic2xpZGVTaG93XCIpIHtcbiAgICAgIHRoaXMuc2xpZGVTaG93KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRhc2tUeXBlID09IFwid2l6YXJkXCIpIHtcbiAgICAgIHRoaXMud2l6YXJkKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRhc2tUeXBlID09IFwiY29sbGFwc2VcIikge1xuICAgICAgdGhpcy5jb2xsYXBzZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50YXNrVHlwZSA9PSBcIm92ZXJsYXlcIikge1xuICAgICAgdGhpcy5vdmVybGF5KCk7XG4gICAgfWVsc2UgaWYodGhpcy50YXNrVHlwZSA9PSBcInNsaWRlc2hvd1YyXCIpIHtcbiAgICAgIHRoaXMuc2xpZGVzaG93VjIoKTtcbiAgICB9XG4gIH1cblxuICBidG5DbGFzc2VzKCkge1xuICAgIHRoaXMuYnV0dG9uQ2xhc3NlcyA9IHRoaXMuY2xhc3MgKyBcIiBcIiArIHRoaXMudGhlbWU7XG5cbiAgICB0aGlzLmJ1dHRvbkNsYXNzZXMgKz0gYCAke3RoaXMuYnRuU2l6ZX1gO1xuXG4gICAgdGhpcy5idXR0b25DbGFzc2VzICs9IHRoaXMuc2hyaW5rID8gXCIgc2hyaW5rXCIgOiBcIlwiXG5cbiAgICB0aGlzLmJ1dHRvbkNsYXNzZXMgKz0gdGhpcy5pc0Jsb2NrID8gYCBidG4tYmxvY2tgIDogYGA7XG5cbiAgICB0aGlzLmJ1dHRvbkNsYXNzZXMgKz0gdGhpcy5idG5TdHlsZSA9PSBcImxpbmtcIiA/IFwiIGxpbmtcIiA6ICh0aGlzLmJ0blN0eWxlID09IFwib3V0bGluZVwiID8gXCIgYnRuLW91dGxpbmVcIiA6IFwiXCIpO1xuXG4gICAgdGhpcy5idXR0b25DbGFzc2VzICs9IHRoaXMucm91bmQgPyBcIiByYWRpdXMtNVwiIDogXCJcIjtcbiAgICB0aGlzLmJ1dHRvbkNsYXNzZXMgKz0gdGhpcy5hbGxvd01hcmdpbiA/IFwiIG1hcmdpblItNVwiIDogXCJcIjtcblxuICAgIHJldHVybiB0aGlzLmJ1dHRvbkNsYXNzZXM7XG4gIH1cblxuICBjb2xsYXBzZSgpIHtcbiAgICBpZiAodGhpcy50YXNrID09IFwib3BlblwiKSB7XG4gICAgICB0aGlzLnNlcnZpY2Uub3BlbkNvbGxhcHNlKHRoaXMudGFyZ2V0KTtcbiAgICAgIHRoaXMuYWN0aXZlLmVtaXQodHJ1ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRhc2sgPT0gXCJjbG9zZVwiKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuY2xvc2VDb2xsYXBzZSh0aGlzLnRhcmdldCk7XG4gICAgICB0aGlzLmFjdGl2ZS5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB3aXphcmQoKSB7XG4gICAgaWYgKHRoaXMudGFzayA9PSBcIm5leHRcIikge1xuICAgICAgdGhpcy5idXR0b25DbGFzc2VzICs9IHRoaXMub3B0aW9ucy5uZXh0ICYmICF0aGlzLmJ1dHRvbkNsYXNzZXMuaW5jbHVkZXMoXCJkaXNhYmxlXCIpID8gXCIgZGlzYWJsZVwiIDogXCJcIjtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubmV4dCkge1xuICAgICAgICB0aGlzLnNlcnZpY2Uud2l6YXJkTmV4dFN0ZXAodGhpcy50YXJnZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy50YXNrID09IFwicHJldmlvdXNcIikge1xuICAgICAgdGhpcy5idXR0b25DbGFzc2VzICs9IHRoaXMub3B0aW9ucy5wcmV2aW91cyAmJiAhdGhpcy5idXR0b25DbGFzc2VzLmluY2x1ZGVzKFwiZGlzYWJsZVwiKSA/IFwiIGRpc2FibGVcIiA6IFwiXCI7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnByZXZpb3VzKSB7XG4gICAgICAgIHRoaXMuc2VydmljZS5XaXphcmRQcmV2aW91c1N0ZXAodGhpcy50YXJnZXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1vdXNlRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMudGFza1R5cGUgPT0gXCJkcm9wZG93blwiKSB7XG4gICAgICBjb25zb2xlLmxvZyhcInRvIHRyaWdnZXIgZHJvcGRvd25cIik7XG4gICAgICB0aGlzLnNlcnZpY2Uub3BlbkRyb3BEb3duKHRoaXMudGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBtb3VzZUxlYXZlKCkge1xuICAgIHRoaXMubW91c2V1cCgpO1xuICAgIGlmICh0aGlzLnRhc2tUeXBlID09IFwiZHJvcGRvd25cIikge1xuICAgICAgdGhpcy5zZXJ2aWNlLmNsb3NlRHJvcERvd24odGhpcy50YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIHNsaWRlU2hvdygpIHtcbiAgICBpZiAodGhpcy50YXNrID09IFwicGxheVwiKSB7XG4gICAgICB0aGlzLnNlcnZpY2UucGxheVNsaWRlU2hvdyh0aGlzLnRhcmdldCk7XG4gICAgICAvLyB0aGlzLnNsaWRlU2hvd1NlcnZpY2UucGxheSh0aGlzLnRhcmdldCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRhc2sgPT0gXCJuZXh0XCIpIHtcbiAgICAgIHRoaXMuc2VydmljZS5uZXh0U2xpZGUodGhpcy50YXJnZXQpO1xuICAgICAgLy8gdGhpcy5zbGlkZVNob3dTZXJ2aWNlLm5leHQodGhpcy50YXJnZXQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50YXNrID09IFwicHJldmlvdXNcIikge1xuICAgICAgdGhpcy5zZXJ2aWNlLnByZXZpb3VzU2xpZGUodGhpcy50YXJnZXQpO1xuICAgICAgLy8gdGhpcy5zbGlkZVNob3dTZXJ2aWNlLnByZXZpb3VzKHRoaXMudGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXJ2aWNlLnBhdXNlU2xpZGVzaG93KHRoaXMudGFyZ2V0KTtcbiAgICAgIC8vIHRoaXMuc2xpZGVTaG93U2VydmljZS5wYXVzZSh0aGlzLnRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgc2xpZGVzaG93VjIoKXtcbiAgICBpZiAodGhpcy50YXNrID09PSBcIm5leHRcIikge1xuICAgICAgdGhpcy5zZXJ2aWNlLm5leHRTbGlkZVYyKHRoaXMudGFyZ2V0KTtcbiAgICB9IGVsc2UgaWYodGhpcy50YXNrID09PSBcInByZXZpb3VzXCIgfHwgdGhpcy50YXNrID09PSBcInByZXZcIikge1xuICAgICAgdGhpcy5zZXJ2aWNlLnByZXZTbGlkZVYyKHRoaXMudGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBtb2RhbCgpIHtcbiAgICBpZiAodGhpcy50YXNrID09IFwib3BlblwiKSB7XG4gICAgICB0aGlzLnNlcnZpY2Uub3Blbk1vZGFsKHRoaXMudGFyZ2V0KTtcbiAgICAgIHRoaXMuYWN0aXZlLmVtaXQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VydmljZS5jbG9zZU1vZGFsKHRoaXMudGFyZ2V0KTtcbiAgICAgIHRoaXMuYWN0aXZlLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJsYXkoKSB7XG4gICAgaWYgKHRoaXMudGFzayA9PSBcIm9wZW5cIikge1xuICAgICAgY29uc29sZS5sb2coXCJvcGVuaW5nIHRhcmdldFwiLCB0aGlzLnRhcmdldCk7XG4gICAgICB0aGlzLnNlcnZpY2Uub3Blbk92ZXJsYXkodGhpcy50YXJnZXQpO1xuICAgICAgdGhpcy5hY3RpdmUuZW1pdCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXJ2aWNlLmNsb3NlT3ZlcmxheSh0aGlzLnRhcmdldCk7XG4gICAgICB0aGlzLmFjdGl2ZS5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvZmZDYW52YXMoKSB7XG4gICAgY29uc29sZS5sb2coXCJUYXNrIHR5cGUgaXMgb2ZmY2FudmFzXCIpO1xuICAgIGlmICh0aGlzLnRhc2sgPT0gXCJvcGVuXCIpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwib3BlbmluZyB0YXJnZXRcIiwgdGhpcy50YXJnZXQpO1xuICAgICAgdGhpcy5zZXJ2aWNlLm9wZW5DYW52YXModGhpcy50YXJnZXQpO1xuICAgICAgdGhpcy5hY3RpdmUuZW1pdCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXCJDbG9zaW5nIHRoZSBjYW52YXNcIik7XG4gICAgICB0aGlzLnNlcnZpY2UuY2xvc2VDYW52YXModGhpcy50YXJnZXQpO1xuICAgICAgdGhpcy5hY3RpdmUuZW1pdChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgbW91c2Vkb3duKCkge1xuICAgIGlmICh0aGlzLmFsbG93U2hyaW5rKSB7XG4gICAgICB0aGlzLnNocmluayA9IHRydWU7XG4gICAgfVxuXG4gIH1cblxuICBtb3VzZXVwKCkge1xuICAgIGlmICh0aGlzLmFsbG93U2hyaW5rKSB7XG4gICAgICB0aGlzLnNocmluayA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uVHlwZSA9PSAnZXh0ZXJuYWwnXCI+XG4gIDxhIGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cImlzQ2xpY2tlZCgpXCIgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlcigpXCIgKG1vdXNlbGVhdmUpPVwibW91c2VMZWF2ZSgpXCJcbiAgW25nQ2xhc3NdPVwiYnRuQ2xhc3NlcygpXCIgW2hyZWZdPVwicm91dGVcIiBbdGFyZ2V0XT1cIm5ld1RhYiA/ICdfYmxhbmsnIDogJ19zZWxmJ1wiXG4gIChtb3VzZWRvd24pPVwibW91c2Vkb3duKClcIiAobW91c2V1cCk9XCJtb3VzZXVwKClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibXljb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvYT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uVHlwZSA9PSAnaW50ZXJuYWwnXCI+XG4gIDxhIGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cImlzQ2xpY2tlZCgpXCIgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlcigpXCJcbiAgKG1vdXNlbGVhdmUpPVwibW91c2VMZWF2ZSgpXCIgW25nQ2xhc3NdPVwiYnRuQ2xhc3NlcygpXCIgW3JvdXRlckxpbmtdPVwicm91dGVcIlxuICAobW91c2Vkb3duKT1cIm1vdXNlZG93bigpXCIgKG1vdXNldXApPVwibW91c2V1cCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm15Y29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8L2E+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImJ1dHRvblR5cGUgPT0gJ3dpZGdldCdcIj5cbiAgPGEgY2xhc3M9XCJidG5cIiAoY2xpY2spPVwiaXNDbGlja2VkKClcIiAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlKClcIlxuICBbbmdDbGFzc109XCJidG5DbGFzc2VzKClcIlxuICAobW91c2Vkb3duKT1cIm1vdXNlZG93bigpXCIgKG1vdXNldXApPVwibW91c2V1cCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm15Y29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8L2E+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNteWNvbnRlbnQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=