ng-devui
Version:
DevUI components based on Angular
130 lines • 25 kB
JavaScript
import { Component, EventEmitter, forwardRef, HostListener, Input, Output, TemplateRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { AnimationNumberDuration } from 'ng-devui/utils';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "ng-devui/utils";
export class ToggleComponent {
constructor() {
this.content = '';
this.size = '';
this.change = new EventEmitter();
this.onTouchedCallback = () => { };
this.onChangeCallback = (v) => { };
this.isMousedown = false;
}
get customTemplate() {
const result = this.checked ? this.checkedContent : this.uncheckedContent;
if (result instanceof TemplateRef) {
this.content = '';
return result;
}
else {
this.content = result || '';
return null;
}
}
set checked(v) {
this._checked = v === true;
}
get checked() {
return this._checked;
}
set disabled(v) {
this._disabled = v === true;
}
get disabled() {
return this._disabled;
}
onToggle() {
if (this.disabled) {
return;
}
this.canChange().then((change) => {
if (!change) {
return;
}
this.checked = !this.checked;
this.change.emit(this.checked);
this.onChangeCallback(this.checked);
this.onTouchedCallback();
});
}
onMousedown() {
this.isMousedown = true;
}
onMouseup() {
setTimeout(() => {
this.isMousedown = false;
}, AnimationNumberDuration.SLOW / 2);
}
canChange() {
let changeResult = Promise.resolve(true);
if (this.beforeChange) {
const result = this.beforeChange(this.checked);
if (typeof result !== 'undefined') {
if (result.then) {
changeResult = result;
}
else if (result.subscribe) {
changeResult = result.toPromise();
}
else {
changeResult = Promise.resolve(result);
}
}
}
return changeResult;
}
writeValue(obj) {
if (obj !== this.checked) {
this.checked = !!obj;
}
}
registerOnChange(fn) {
this.onChangeCallback = fn;
}
registerOnTouched(fn) {
this.onTouchedCallback = fn;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ToggleComponent, selector: "d-toggle", inputs: { size: "size", color: "color", beforeChange: "beforeChange", checkedContent: "checkedContent", uncheckedContent: "uncheckedContent", checked: "checked", disabled: "disabled" }, outputs: { change: "change" }, host: { listeners: { "click": "onToggle()", "mousedown": "onMousedown()", "mouseup": "onMouseup()" } }, providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => ToggleComponent),
multi: true
}], exportAs: ["toggle"], ngImport: i0, template: "<span\n class=\"devui-toggle {{ size ? 'devui-toggle-' + size : '' }}\"\n [ngClass]=\"{ 'devui-checked': checked, 'devui-disabled': disabled }\"\n [style.background]=\"checked && !disabled ? color : ''\"\n [style.border-color]=\"checked && !disabled ? color : ''\"\n>\n <span class=\"devui-toggle-inner-wrapper\">\n <ng-template [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"></ng-template>\n </span>\n <small [class.mouseDown]=\"isMousedown && !disabled\"></small>\n</span>\n\n<ng-template #defaultTemplate>\n <div class=\"devui-toggle-inner\" [innerHTML]=\"content | safe: 'html'\"></div>\n</ng-template>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{display:inline-block;width:fit-content;font-size:0;line-height:1;vertical-align:middle}.devui-toggle{width:36px;height:18px;border-radius:var(--devui-border-radius-full, 100px);background:var(--devui-line, #dbdbdb);border:1px solid var(--devui-line, #dbdbdb);position:relative;display:inline-block;box-sizing:content-box;overflow:visible;padding:0;margin:0;cursor:pointer;transition:var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)) all}.devui-toggle:not(.devui-checked):hover{background-color:#939393;border-color:#939393}.devui-toggle .devui-toggle-inner-wrapper{display:inline-block;width:100%;height:100%;font-size:var(--devui-font-size-sm, 12px);line-height:18px;padding-left:14px}.devui-toggle .devui-toggle-inner-wrapper .devui-toggle-inner{width:100%;height:100%;text-align:center;color:var(--devui-light-text, #ffffff)}.devui-toggle.devui-checked .devui-toggle-inner-wrapper{padding-left:unset;padding-right:14px}.devui-toggle small{width:12px;height:12px;background:var(--devui-light-text, #ffffff);border-radius:var(--devui-border-radius-full, 100px);position:absolute;top:3px;left:3px;transition:var(--devui-animation-duration-base, .2s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)) all}.devui-toggle small.mouseDown{width:15px}.devui-toggle.devui-checked small{left:21px}.devui-toggle.devui-checked small.mouseDown{left:18px}.devui-toggle.devui-toggle-lg{width:58px;height:30px}.devui-toggle.devui-toggle-lg .devui-toggle-inner-wrapper{font-size:var(--devui-font-size-modal-title, 18px);line-height:30px;padding-left:24px}.devui-toggle.devui-toggle-lg.devui-checked .devui-toggle-inner-wrapper{padding-left:unset;padding-right:24px}.devui-toggle.devui-toggle-lg small{width:22px;height:22px;top:4px;left:4px}.devui-toggle.devui-toggle-lg small.mouseDown{width:26px}.devui-toggle.devui-toggle-lg.devui-checked small{background:var(--devui-light-text, #ffffff);left:32px}.devui-toggle.devui-toggle-lg.devui-checked small.mouseDown{left:28px}.devui-toggle.devui-toggle-sm{width:30px;height:14px}.devui-toggle.devui-toggle-sm .devui-toggle-inner-wrapper{font-size:var(--devui-font-size-sm, 12px);line-height:14px;padding-left:12px}.devui-toggle.devui-toggle-sm.devui-checked .devui-toggle-inner-wrapper{padding-left:unset;padding-right:12px}.devui-toggle.devui-toggle-sm small{width:10px;height:10px;position:absolute;top:2px;left:3px}.devui-toggle.devui-toggle-sm small.mouseDown{width:12px}.devui-toggle.devui-toggle-sm.devui-checked small{left:17px}.devui-toggle.devui-toggle-sm.devui-checked small.mouseDown{left:15px}.devui-toggle.devui-checked{background:var(--devui-brand, #0a59f7);border-color:var(--devui-brand, #0a59f7)}.devui-toggle.devui-checked:hover,.devui-toggle.devui-checked:active{background:var(--devui-primary-hover, #3979f9);border-color:var(--devui-primary-hover, #3979f9)}.devui-toggle.devui-disabled,.devui-toggle.devui-disabled:hover,.devui-toggle.devui-disabled:active,.devui-toggle.devui-disabled.devui-checked{cursor:not-allowed}.devui-toggle.devui-disabled,.devui-toggle.devui-disabled:hover,.devui-toggle.devui-disabled:active{background-color:var(--devui-disabled-line, #e6e6e6);border-color:var(--devui-disabled-line, #e6e6e6)}.devui-toggle.devui-disabled small,.devui-toggle.devui-disabled:hover small,.devui-toggle.devui-disabled:active small{background-color:var(--devui-unavailable, #f3f3f3)}.devui-toggle.devui-disabled.devui-checked{background-color:var(--devui-icon-fill-active-disabled, #9dbdfc);border-color:var(--devui-icon-fill-active-disabled, #9dbdfc)}.devui-toggle.devui-disabled.devui-checked small{background-color:var(--devui-light-text, #ffffff)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.SafePipe, name: "safe" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleComponent, decorators: [{
type: Component,
args: [{ selector: 'd-toggle', exportAs: 'toggle', providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => ToggleComponent),
multi: true
}], preserveWhitespaces: false, template: "<span\n class=\"devui-toggle {{ size ? 'devui-toggle-' + size : '' }}\"\n [ngClass]=\"{ 'devui-checked': checked, 'devui-disabled': disabled }\"\n [style.background]=\"checked && !disabled ? color : ''\"\n [style.border-color]=\"checked && !disabled ? color : ''\"\n>\n <span class=\"devui-toggle-inner-wrapper\">\n <ng-template [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"></ng-template>\n </span>\n <small [class.mouseDown]=\"isMousedown && !disabled\"></small>\n</span>\n\n<ng-template #defaultTemplate>\n <div class=\"devui-toggle-inner\" [innerHTML]=\"content | safe: 'html'\"></div>\n</ng-template>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{display:inline-block;width:fit-content;font-size:0;line-height:1;vertical-align:middle}.devui-toggle{width:36px;height:18px;border-radius:var(--devui-border-radius-full, 100px);background:var(--devui-line, #dbdbdb);border:1px solid var(--devui-line, #dbdbdb);position:relative;display:inline-block;box-sizing:content-box;overflow:visible;padding:0;margin:0;cursor:pointer;transition:var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)) all}.devui-toggle:not(.devui-checked):hover{background-color:#939393;border-color:#939393}.devui-toggle .devui-toggle-inner-wrapper{display:inline-block;width:100%;height:100%;font-size:var(--devui-font-size-sm, 12px);line-height:18px;padding-left:14px}.devui-toggle .devui-toggle-inner-wrapper .devui-toggle-inner{width:100%;height:100%;text-align:center;color:var(--devui-light-text, #ffffff)}.devui-toggle.devui-checked .devui-toggle-inner-wrapper{padding-left:unset;padding-right:14px}.devui-toggle small{width:12px;height:12px;background:var(--devui-light-text, #ffffff);border-radius:var(--devui-border-radius-full, 100px);position:absolute;top:3px;left:3px;transition:var(--devui-animation-duration-base, .2s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)) all}.devui-toggle small.mouseDown{width:15px}.devui-toggle.devui-checked small{left:21px}.devui-toggle.devui-checked small.mouseDown{left:18px}.devui-toggle.devui-toggle-lg{width:58px;height:30px}.devui-toggle.devui-toggle-lg .devui-toggle-inner-wrapper{font-size:var(--devui-font-size-modal-title, 18px);line-height:30px;padding-left:24px}.devui-toggle.devui-toggle-lg.devui-checked .devui-toggle-inner-wrapper{padding-left:unset;padding-right:24px}.devui-toggle.devui-toggle-lg small{width:22px;height:22px;top:4px;left:4px}.devui-toggle.devui-toggle-lg small.mouseDown{width:26px}.devui-toggle.devui-toggle-lg.devui-checked small{background:var(--devui-light-text, #ffffff);left:32px}.devui-toggle.devui-toggle-lg.devui-checked small.mouseDown{left:28px}.devui-toggle.devui-toggle-sm{width:30px;height:14px}.devui-toggle.devui-toggle-sm .devui-toggle-inner-wrapper{font-size:var(--devui-font-size-sm, 12px);line-height:14px;padding-left:12px}.devui-toggle.devui-toggle-sm.devui-checked .devui-toggle-inner-wrapper{padding-left:unset;padding-right:12px}.devui-toggle.devui-toggle-sm small{width:10px;height:10px;position:absolute;top:2px;left:3px}.devui-toggle.devui-toggle-sm small.mouseDown{width:12px}.devui-toggle.devui-toggle-sm.devui-checked small{left:17px}.devui-toggle.devui-toggle-sm.devui-checked small.mouseDown{left:15px}.devui-toggle.devui-checked{background:var(--devui-brand, #0a59f7);border-color:var(--devui-brand, #0a59f7)}.devui-toggle.devui-checked:hover,.devui-toggle.devui-checked:active{background:var(--devui-primary-hover, #3979f9);border-color:var(--devui-primary-hover, #3979f9)}.devui-toggle.devui-disabled,.devui-toggle.devui-disabled:hover,.devui-toggle.devui-disabled:active,.devui-toggle.devui-disabled.devui-checked{cursor:not-allowed}.devui-toggle.devui-disabled,.devui-toggle.devui-disabled:hover,.devui-toggle.devui-disabled:active{background-color:var(--devui-disabled-line, #e6e6e6);border-color:var(--devui-disabled-line, #e6e6e6)}.devui-toggle.devui-disabled small,.devui-toggle.devui-disabled:hover small,.devui-toggle.devui-disabled:active small{background-color:var(--devui-unavailable, #f3f3f3)}.devui-toggle.devui-disabled.devui-checked{background-color:var(--devui-icon-fill-active-disabled, #9dbdfc);border-color:var(--devui-icon-fill-active-disabled, #9dbdfc)}.devui-toggle.devui-disabled.devui-checked small{background-color:var(--devui-light-text, #ffffff)}\n"] }]
}], propDecorators: { size: [{
type: Input
}], color: [{
type: Input
}], beforeChange: [{
type: Input
}], checkedContent: [{
type: Input
}], uncheckedContent: [{
type: Input
}], checked: [{
type: Input
}], disabled: [{
type: Input
}], change: [{
type: Output
}], onToggle: [{
type: HostListener,
args: ['click']
}], onMousedown: [{
type: HostListener,
args: ['mousedown']
}], onMouseup: [{
type: HostListener,
args: ['mouseup']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldnVpL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGV2dWkvdG9nZ2xlL3RvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFDeEQsTUFBTSxFQUFFLFdBQVcsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBZXpELE1BQU0sT0FBTyxlQUFlO0lBWjVCO1FBZUUsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUVKLFNBQUksR0FBcUIsRUFBRSxDQUFDO1FBaUMzQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUV2QyxzQkFBaUIsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDN0IscUJBQWdCLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUMxQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztLQThEckI7SUE3RkMsSUFBSSxjQUFjO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMxRSxJQUFJLE1BQU0sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNsQixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FB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QkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLGdEQ2pCSix1bkJBZUE7OzRGREthLGVBQWU7a0JBWjNCLFNBQVM7K0JBQ0UsVUFBVSxZQUdWLFFBQVEsYUFDUCxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDLHVCQUNtQixLQUFLOzhCQU9qQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBYU8sT0FBTztzQkFBbkIsS0FBSztnQkFRTyxRQUFRO3NCQUFwQixLQUFLO2dCQVFJLE1BQU07c0JBQWYsTUFBTTtnQkFPUCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsT0FBTztnQkFpQnJCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXO2dCQU16QixTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LFxuICBPdXRwdXQsIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQW5pbWF0aW9uTnVtYmVyRHVyYXRpb24gfSBmcm9tICduZy1kZXZ1aS91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2QtdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW2AuL3RvZ2dsZS5jb21wb25lbnQuc2Nzc2BdLFxuICBleHBvcnRBczogJ3RvZ2dsZScsXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUb2dnbGVDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG4gIH1dLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgVG9nZ2xlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcml2YXRlIF9jaGVja2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcbiAgY29udGVudCA9ICcnO1xuXG4gIEBJbnB1dCgpIHNpemU6ICdzbScgfCAnJyB8ICdsZycgPSAnJztcbiAgQElucHV0KCkgY29sb3I6IHN0cmluZztcbiAgQElucHV0KCkgYmVmb3JlQ2hhbmdlOiAodmFsdWUpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgY2hlY2tlZENvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIHVuY2hlY2tlZENvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgZ2V0IGN1c3RvbVRlbXBsYXRlKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY2hlY2tlZCA/IHRoaXMuY2hlY2tlZENvbnRlbnQgOiB0aGlzLnVuY2hlY2tlZENvbnRlbnQ7XG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLmNvbnRlbnQgPSAnJztcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udGVudCA9IHJlc3VsdCB8fCAnJztcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBjaGVja2VkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jaGVja2VkID0gdiA9PT0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBjaGVja2VkKCkge1xuICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHYgPT09IHRydWU7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjayA9ICh2OiBhbnkpID0+IHt9O1xuICBpc01vdXNlZG93biA9IGZhbHNlO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgb25Ub2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYW5DaGFuZ2UoKS50aGVuKChjaGFuZ2UpID0+IHtcbiAgICAgIGlmICghY2hhbmdlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hlY2tlZCA9ICF0aGlzLmNoZWNrZWQ7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuY2hlY2tlZCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5jaGVja2VkKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicpXG4gIG9uTW91c2Vkb3duKCkge1xuICAgIHRoaXMuaXNNb3VzZWRvd24gPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcpXG4gIG9uTW91c2V1cCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNNb3VzZWRvd24gPSBmYWxzZTtcbiAgICB9LCBBbmltYXRpb25OdW1iZXJEdXJhdGlvbi5TTE9XIC8gMik7XG4gIH1cblxuICBjYW5DaGFuZ2UoKSB7XG4gICAgbGV0IGNoYW5nZVJlc3VsdCA9IFByb21pc2UucmVzb2x2ZSh0cnVlKTtcblxuICAgIGlmICh0aGlzLmJlZm9yZUNoYW5nZSkge1xuICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB0aGlzLmJlZm9yZUNoYW5nZSh0aGlzLmNoZWNrZWQpO1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmIChyZXN1bHQudGhlbikge1xuICAgICAgICAgIGNoYW5nZVJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgY2hhbmdlUmVzdWx0ID0gKHJlc3VsdCBhcyBPYnNlcnZhYmxlPGJvb2xlYW4+KS50b1Byb21pc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGFuZ2VSZXN1bHQgPSBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaGFuZ2VSZXN1bHQ7XG4gIH1cblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgaWYgKG9iaiAhPT0gdGhpcy5jaGVja2VkKSB7XG4gICAgICB0aGlzLmNoZWNrZWQgPSAhIW9iajtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cbn1cbiIsIjxzcGFuXG4gIGNsYXNzPVwiZGV2dWktdG9nZ2xlIHt7IHNpemUgPyAnZGV2dWktdG9nZ2xlLScgKyBzaXplIDogJycgfX1cIlxuICBbbmdDbGFzc109XCJ7ICdkZXZ1aS1jaGVja2VkJzogY2hlY2tlZCwgJ2RldnVpLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNoZWNrZWQgJiYgIWRpc2FibGVkID8gY29sb3IgOiAnJ1wiXG4gIFtzdHlsZS5ib3JkZXItY29sb3JdPVwiY2hlY2tlZCAmJiAhZGlzYWJsZWQgPyBjb2xvciA6ICcnXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJkZXZ1aS10b2dnbGUtaW5uZXItd3JhcHBlclwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21UZW1wbGF0ZSB8fCBkZWZhdWx0VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICA8L3NwYW4+XG4gIDxzbWFsbCBbY2xhc3MubW91c2VEb3duXT1cImlzTW91c2Vkb3duICYmICFkaXNhYmxlZFwiPjwvc21hbGw+XG48L3NwYW4+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZGV2dWktdG9nZ2xlLWlubmVyXCIgW2lubmVySFRNTF09XCJjb250ZW50IHwgc2FmZTogJ2h0bWwnXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19