@sedeh/into-pipes
Version:
Have you ever wanted to transform data in different parts of your application into interactive objects without writing a single line of code?
109 lines (107 loc) • 15.7 kB
JavaScript
import { Component, ViewChild, Output, EventEmitter } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export class SwitchComponent {
constructor() {
this.disabled = false;
this.active = true;
this.validate = (item, newValue) => true;
this.onIntoComponentChange = new EventEmitter();
}
keyup(event) {
const code = event.which;
if (code === 13 && !this.disabled) {
event.target.click();
}
}
click(event) {
event.stopPropagation();
event.preventDefault();
if (!this.disabled && this.validate(this.data, (this.source === this.ideal ? this.original : this.ideal))) {
if (this.source === this.ideal) {
this.source = this.original;
}
else {
this.source = this.ideal;
}
this.onIntoComponentChange.emit({
id: this.id,
name: this.name,
value: this.source,
type: "switch",
item: this.data
});
setTimeout(() => {
if (this.check) {
this.check.nativeElement.focus();
}
if (this.uncheck) {
this.uncheck.nativeElement.focus();
}
}, 66);
}
}
static settingsPatterns() {
return ['switch:::']; //selected, state, alt state
}
transform(source, data, args) {
this.ideal = args.length ? String(args[0]) : "";
this.onText = args.length > 1 ? (args[1].length ? args[1] : 'ON') : 'ON';
this.offText = args.length > 2 ? (args[2].length ? args[2] : 'OFF') : 'OFF';
this.source = String(source);
this.data = data;
this.original = this.source === this.ideal ? "" : source;
}
}
SwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
SwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SwitchComponent, selector: "switch-component", outputs: { onIntoComponentChange: "onIntoComponentChange" }, viewQueries: [{ propertyName: "check", first: true, predicate: ["check"], descendants: true }, { propertyName: "uncheck", first: true, predicate: ["uncheck"], descendants: true }], ngImport: i0, template: `
<span *ngIf="source === ideal"
#check
tabindex="{{active ? 0 : -1}}"
class="switch fa fa-toggle-on {{disabled ? 'disabled' : ''}}"
aria-checked="true"
role="checkbox"
(keyup)="keyup($event)"
(click)="click($event)"></span>
<span *ngIf="source !== ideal"
#uncheck tabindex="{{active ? 0 : -1}}"
class="switch fa fa-toggle-off {{disabled ? 'disabled' : ''}}"
aria-checked="false"
role="checkbox"
(keyup)="keyup($event)"
(click)="click($event)"></span>
<span class="text {{disabled ? 'disabled' : ''}}" [class.selected]="source === ideal"
[textContent]="source === ideal ? onText : offText"></span>
`, isInline: true, styles: [":host{display:table;float:left;min-height:var(--sedeh-min-height, 25px)}:host .switch{font-size:1.4rem;cursor:pointer;float:left}:host .switch:focus{outline:none;zoom:1.1;right:var(--sedeh-shift-right, 0);position:relative;color:var(--sedeh-focus-color, darkblue)}:host .switch:hover{opacity:var(--sedeh-hover-opacity, .5)}:host .switch.fa-toggle-on{color:var(--sedeh-sected-color, green)}:host .switch.fa-toggle-off{color:var(--sedeh-disapproved-color, red)}:host .switch.disabled{color:var(--sedeh-disabled-color, #888)}:host .switch.disabled.fa-toggle-on{color:var(--sedeh-disabled-color, #888)}:host .switch.disabled.fa-toggle-off{color:var(--sedeh-disabled-color, #888)}:host .text{font-size:1.2rem;text-transform:uppercase;float:left;margin-left:var(--sedeh-margin-left, 5px)}:host .text.selected{color:var(--sedeh-sected-color, green)}:host .text.disabled{color:var(--sedeh-disabled-color, #888)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SwitchComponent, decorators: [{
type: Component,
args: [{ selector: 'switch-component', template: `
<span *ngIf="source === ideal"
#check
tabindex="{{active ? 0 : -1}}"
class="switch fa fa-toggle-on {{disabled ? 'disabled' : ''}}"
aria-checked="true"
role="checkbox"
(keyup)="keyup($event)"
(click)="click($event)"></span>
<span *ngIf="source !== ideal"
#uncheck tabindex="{{active ? 0 : -1}}"
class="switch fa fa-toggle-off {{disabled ? 'disabled' : ''}}"
aria-checked="false"
role="checkbox"
(keyup)="keyup($event)"
(click)="click($event)"></span>
<span class="text {{disabled ? 'disabled' : ''}}" [class.selected]="source === ideal"
[textContent]="source === ideal ? onText : offText"></span>
`, styles: [":host{display:table;float:left;min-height:var(--sedeh-min-height, 25px)}:host .switch{font-size:1.4rem;cursor:pointer;float:left}:host .switch:focus{outline:none;zoom:1.1;right:var(--sedeh-shift-right, 0);position:relative;color:var(--sedeh-focus-color, darkblue)}:host .switch:hover{opacity:var(--sedeh-hover-opacity, .5)}:host .switch.fa-toggle-on{color:var(--sedeh-sected-color, green)}:host .switch.fa-toggle-off{color:var(--sedeh-disapproved-color, red)}:host .switch.disabled{color:var(--sedeh-disabled-color, #888)}:host .switch.disabled.fa-toggle-on{color:var(--sedeh-disabled-color, #888)}:host .switch.disabled.fa-toggle-off{color:var(--sedeh-disabled-color, #888)}:host .text{font-size:1.2rem;text-transform:uppercase;float:left;margin-left:var(--sedeh-margin-left, 5px)}:host .text.selected{color:var(--sedeh-sected-color, green)}:host .text.disabled{color:var(--sedeh-disabled-color, #888)}\n"] }]
}], propDecorators: { check: [{
type: ViewChild,
args: ["check"]
}], uncheck: [{
type: ViewChild,
args: ["uncheck"]
}], onIntoComponentChange: [{
type: Output,
args: ["onIntoComponentChange"]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludG8tcGlwZXMvc3JjL2xpYi9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUEyQzNFLE1BQU0sT0FBTyxlQUFlO0lBeEM1QjtRQWtERSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxhQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQUUsUUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFTOUMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQWdENUM7SUE5Q0MsS0FBSyxDQUFDLEtBQVU7UUFDZCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN4QjtJQUNELENBQUM7SUFFRCxLQUFLLENBQUMsS0FBVTtRQUNkLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN6RyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUMxQjtZQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNsQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1lBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2xDO2dCQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ3BDO1lBQ0gsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ1A7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQjtRQUNyQixPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7SUFDcEQsQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFXLEVBQUUsSUFBUyxFQUFFLElBQVc7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsTUFBTSxHQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN4RSxJQUFJLENBQUMsT0FBTyxHQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRSxJQUFJLENBQUMsTUFBTSxHQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFFLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUQsQ0FBQzs7NkdBcEVVLGVBQWU7aUdBQWYsZUFBZSwwU0F0Q2Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FtQlQ7NEZBbUJRLGVBQWU7a0JBeEMzQixTQUFTOytCQUNJLGtCQUFrQixZQUNsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW1CVDs4QkFrQ0gsS0FBSztzQkFESixTQUFTO3VCQUFDLE9BQU87Z0JBSWxCLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxTQUFTO2dCQUlwQixxQkFBcUI7c0JBRHBCLE1BQU07dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBpcGVDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuLi9jb21tb24vcGlwZS5jb21wb25lbnQuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzd2l0Y2gtY29tcG9uZW50JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxzcGFuICpuZ0lmPVwic291cmNlID09PSBpZGVhbFwiIFxyXG4gICAgICAgICAgI2NoZWNrIFxyXG4gICAgICAgICAgdGFiaW5kZXg9XCJ7e2FjdGl2ZSA/IDAgOiAtMX19XCIgXHJcbiAgICAgICAgICBjbGFzcz1cInN3aXRjaCBmYSBmYS10b2dnbGUtb24ge3tkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJ319XCIgXHJcbiAgICAgICAgICBhcmlhLWNoZWNrZWQ9XCJ0cnVlXCJcclxuICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAoa2V5dXApPVwia2V5dXAoJGV2ZW50KVwiIFxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsaWNrKCRldmVudClcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwic291cmNlICE9PSBpZGVhbFwiXHJcbiAgICAgICAgICAjdW5jaGVjayB0YWJpbmRleD1cInt7YWN0aXZlID8gMCA6IC0xfX1cIiBcclxuICAgICAgICAgIGNsYXNzPVwic3dpdGNoIGZhIGZhLXRvZ2dsZS1vZmYge3tkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJ319XCIgXHJcbiAgICAgICAgICBhcmlhLWNoZWNrZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgKGtleXVwKT1cImtleXVwKCRldmVudClcIiBcclxuICAgICAgICAgIChjbGljayk9XCJjbGljaygkZXZlbnQpXCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQge3tkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJ319XCIgW2NsYXNzLnNlbGVjdGVkXT1cInNvdXJjZSA9PT0gaWRlYWxcIiBcclxuICAgICAgICBbdGV4dENvbnRlbnRdPVwic291cmNlID09PSBpZGVhbCA/IG9uVGV4dCA6IG9mZlRleHRcIj48L3NwYW4+XHJcblxyXG4gICAgYCxcclxuICAgIHN0eWxlczogW1xyXG4gICAgICBgXHJcbiAgICAgIDpob3N0IHtkaXNwbGF5OnRhYmxlO2Zsb2F0OmxlZnQ7bWluLWhlaWdodDogdmFyKC0tc2VkZWgtbWluLWhlaWdodCwgMjVweCl9XHJcbiAgICAgIDpob3N0IC5zd2l0Y2gge2ZvbnQtc2l6ZTogMS40cmVtOyBjdXJzb3I6IHBvaW50ZXI7ZmxvYXQ6IGxlZnR9XHJcbiAgICAgIDpob3N0IC5zd2l0Y2g6Zm9jdXN7b3V0bGluZTogbm9uZTt6b29tOiAxLjE7cmlnaHQ6IHZhcigtLXNlZGVoLXNoaWZ0LXJpZ2h0LCAwKTtwb3NpdGlvbjogcmVsYXRpdmU7Y29sb3I6IHZhcigtLXNlZGVoLWZvY3VzLWNvbG9yLCBkYXJrYmx1ZSk7fVxyXG4gICAgICA6aG9zdCAuc3dpdGNoOmhvdmVye29wYWNpdHk6IHZhcigtLXNlZGVoLWhvdmVyLW9wYWNpdHksIDAuNSk7fVxyXG4gICAgICA6aG9zdCAuc3dpdGNoLmZhLXRvZ2dsZS1vbiB7Y29sb3I6IHZhcigtLXNlZGVoLXNlY3RlZC1jb2xvciwgZ3JlZW4pfVxyXG4gICAgICA6aG9zdCAuc3dpdGNoLmZhLXRvZ2dsZS1vZmYge2NvbG9yOiB2YXIoLS1zZWRlaC1kaXNhcHByb3ZlZC1jb2xvciwgcmVkKX1cclxuICAgICAgOmhvc3QgLnN3aXRjaC5kaXNhYmxlZCB7Y29sb3I6IHZhcigtLXNlZGVoLWRpc2FibGVkLWNvbG9yLCAjODg4KX1cclxuICAgICAgOmhvc3QgLnN3aXRjaC5kaXNhYmxlZC5mYS10b2dnbGUtb24ge2NvbG9yOiB2YXIoLS1zZWRlaC1kaXNhYmxlZC1jb2xvciwgIzg4OCl9XHJcbiAgICAgIDpob3N0IC5zd2l0Y2guZGlzYWJsZWQuZmEtdG9nZ2xlLW9mZiB7Y29sb3I6IHZhcigtLXNlZGVoLWRpc2FibGVkLWNvbG9yLCAjODg4KX1cclxuXHJcbiAgICAgIDpob3N0IC50ZXh0IHtmb250LXNpemU6IDEuMnJlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgZmxvYXQ6IGxlZnQ7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zZWRlaC1tYXJnaW4tbGVmdCwgNXB4KTt9XHJcbiAgICAgIDpob3N0IC50ZXh0LnNlbGVjdGVkIHtjb2xvcjogIHZhcigtLXNlZGVoLXNlY3RlZC1jb2xvciwgZ3JlZW4pfVxyXG4gICAgICA6aG9zdCAudGV4dC5kaXNhYmxlZCB7Y29sb3I6ICB2YXIoLS1zZWRlaC1kaXNhYmxlZC1jb2xvciwgIzg4OCl9XHJcbiAgICAgIGBcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFN3aXRjaENvbXBvbmVudCBpbXBsZW1lbnRzIFBpcGVDb21wb25lbnRJbnRlcmZhY2Uge1xyXG5cclxuICBkYXRhOiBhbnk7XHJcbiAgc291cmNlITogc3RyaW5nO1xyXG4gIG9yaWdpbmFsITogc3RyaW5nO1xyXG4gIGlkZWFsITogc3RyaW5nO1xyXG4gIGlkITogc3RyaW5nO1xyXG4gIG5hbWUhOiBzdHJpbmc7XHJcbiAgb25UZXh0ITogc3RyaW5nO1xyXG4gIG9mZlRleHQhOiBzdHJpbmc7XHJcbiAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBhY3RpdmUgPSB0cnVlO1xyXG4gIHZhbGlkYXRlID0gKGl0ZW06IGFueSwgbmV3VmFsdWU6IGFueSkgPT4gdHJ1ZTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImNoZWNrXCIpXHJcbiAgY2hlY2s6IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInVuY2hlY2tcIilcclxuICB1bmNoZWNrOiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoXCJvbkludG9Db21wb25lbnRDaGFuZ2VcIilcclxuICBvbkludG9Db21wb25lbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGtleXVwKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGNvZGUgPSBldmVudC53aGljaDtcclxuICAgIGlmIChjb2RlID09PSAxMyAmJiAhdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICBldmVudC50YXJnZXQuY2xpY2soKTtcclxuXHRcdH1cclxuICB9XHJcblxyXG4gIGNsaWNrKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy52YWxpZGF0ZSh0aGlzLmRhdGEsICh0aGlzLnNvdXJjZSA9PT0gdGhpcy5pZGVhbCA/IHRoaXMub3JpZ2luYWwgOiB0aGlzLmlkZWFsKSkpIHtcclxuICAgICAgaWYgKHRoaXMuc291cmNlID09PSB0aGlzLmlkZWFsKSB7XHJcbiAgICAgICAgdGhpcy5zb3VyY2UgPSB0aGlzLm9yaWdpbmFsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc291cmNlID0gdGhpcy5pZGVhbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uSW50b0NvbXBvbmVudENoYW5nZS5lbWl0KHtcclxuICAgICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuc291cmNlLFxyXG4gICAgICAgIHR5cGU6IFwic3dpdGNoXCIsXHJcbiAgICAgICAgaXRlbTogdGhpcy5kYXRhXHJcbiAgICAgIH0pO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jaGVjaykge1xyXG4gICAgICAgICAgdGhpcy5jaGVjay5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnVuY2hlY2spIHtcclxuICAgICAgICAgIHRoaXMudW5jaGVjay5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LDY2KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBzZXR0aW5nc1BhdHRlcm5zKCkge1xyXG4gICAgcmV0dXJuIFsnc3dpdGNoOjo6J107IC8vc2VsZWN0ZWQsIHN0YXRlLCBhbHQgc3RhdGVcclxuICB9XHJcbiAgdHJhbnNmb3JtKHNvdXJjZTogYW55LCBkYXRhOiBhbnksIGFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmlkZWFsPSBhcmdzLmxlbmd0aCA/IFN0cmluZyhhcmdzWzBdKSA6IFwiXCI7XHJcbiAgICB0aGlzLm9uVGV4dD0gYXJncy5sZW5ndGggPiAxID8gKGFyZ3NbMV0ubGVuZ3RoID8gYXJnc1sxXSA6ICdPTicpIDogJ09OJztcclxuICAgIHRoaXMub2ZmVGV4dD0gYXJncy5sZW5ndGggPiAyID8gKGFyZ3NbMl0ubGVuZ3RoID8gYXJnc1syXSA6ICdPRkYnKSA6ICdPRkYnO1xyXG4gICAgdGhpcy5zb3VyY2U9IFN0cmluZyhzb3VyY2UpO1xyXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgIHRoaXMub3JpZ2luYWw9IHRoaXMuc291cmNlID09PSB0aGlzLmlkZWFsID8gXCJcIiA6IHNvdXJjZTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==