ng-materialgrammi
Version:
An Angular framework which follows
226 lines • 28.4 kB
JavaScript
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=