ngx-form-control
Version:
Form controls for angular 6
164 lines (163 loc) • 16.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input } from '@angular/core';
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
import { BaseControlComponent } from '../../utils/base-control.component';
var FormToggleComponent = /** @class */ (function (_super) {
tslib_1.__extends(FormToggleComponent, _super);
function FormToggleComponent() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = 'checkbox';
_this._innerValue = false;
_this._isTouch = false;
return _this;
}
Object.defineProperty(FormToggleComponent.prototype, "value", {
get: /**
* @return {?}
*/
function () {
return this._innerValue;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._isTouch = true;
this._innerValue = value;
this.triggerChange();
},
enumerable: true,
configurable: true
});
Object.defineProperty(FormToggleComponent.prototype, "invalid", {
get: /**
* @return {?}
*/
function () {
if (this.hasCustomError) {
return true;
}
if (!this._isTouch) {
return false;
}
return this.hasRequiredError;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FormToggleComponent.prototype, "valid", {
get: /**
* @return {?}
*/
function () {
if (this.hasCustomError) {
return false;
}
if (!this._isTouch) {
return false;
}
return !this.hasRequiredError;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FormToggleComponent.prototype, "errorMessages", {
get: /**
* @return {?}
*/
function () {
if (this.hasRequiredError) {
return [this.requiredErrorMessage];
}
if (this.hasCustomError) {
return this.innerCustomErrorMessages;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(FormToggleComponent.prototype, "isCheckboxType", {
get: /**
* @return {?}
*/
function () {
return 'checkbox' === this.type;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FormToggleComponent.prototype, "isToggleType", {
get: /**
* @return {?}
*/
function () {
return !this.isCheckboxType;
},
enumerable: true,
configurable: true
});
/**
* @param {?} value
* @return {?}
*/
FormToggleComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
this._innerValue = value;
};
/**
* @return {?}
*/
FormToggleComponent.prototype.validate = /**
* @return {?}
*/
function () {
/** @type {?} */
var result = {};
if (this.hasRequiredError) {
result['required'] = true;
}
return result;
};
/**
* @return {?}
*/
FormToggleComponent.prototype.reset = /**
* @return {?}
*/
function () {
this._isTouch = false;
};
FormToggleComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-form-toggle',
template: "<div class=\"custom-checkbox\" [ngClass]=\"{'custom-control': isCheckboxType}\">\n <ng-container *ngIf=\"isCheckboxType\">\n <!--suppress HtmlFormInputWithoutLabel -->\n <input class=\"custom-control-input\"\n [title]=\"title\"\n [ngClass]=\"{'is-invalid': invalid, 'is-valid': valid}\"\n type=\"checkbox\"\n [id]=\"id\"\n [required]=\"required\"\n [(ngModel)]=\"value\">\n <label class=\"custom-control-label\" [for]=\"id\">{{label}}</label>\n </ng-container>\n\n <ng-container *ngIf=\"isToggleType\">\n <input class=\"custom-control-input tgl tgl-light\"\n [title]=\"title\"\n [ngClass]=\"{'is-invalid': invalid, 'is-valid': valid}\"\n type=\"checkbox\"\n [id]=\"id\"\n [required]=\"required\"\n [(ngModel)]=\"value\">\n <label class=\"tgl-btn\" [for]=\"id\"></label>\n <label class=\"tgl-label\" [for]=\"id\" *ngIf=\"label\">{{label}}</label>\n </ng-container>\n\n <div class=\"valid-feedback\" *ngIf=\"valid && validMessage\">{{validMessage}}</div>\n\n <div class=\"invalid-feedback\" *ngIf=\"errorMessages && errorMessages.length\">\n <span *ngFor=\"let message of errorMessages; let last = last;\">\n {{message}}<br *ngIf=\"!last\">\n </span>\n </div>\n</div>\n",
styles: [".tgl{display:none}.tgl,.tgl *,.tgl :after,.tgl :before,.tgl+.tgl-btn,.tgl:after,.tgl:before{box-sizing:border-box}.tgl ::-moz-selection,.tgl :after::-moz-selection,.tgl :before::-moz-selection,.tgl+.tgl-btn::-moz-selection,.tgl::-moz-selection,.tgl:after::-moz-selection,.tgl:before::-moz-selection{background:0 0}.tgl ::selection,.tgl :after::selection,.tgl :before::selection,.tgl+.tgl-btn::selection,.tgl::selection,.tgl:after::selection,.tgl:before::selection{background:0 0}.tgl+.tgl-btn{outline:0;display:inline-block;vertical-align:middle;margin-right:15px;width:4em;height:2em;position:relative;cursor:pointer;margin-bottom:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tgl+.tgl-btn:after,.tgl+.tgl-btn:before{position:relative;display:block;content:\"\";width:50%;height:100%}.tgl+.tgl-btn:after{left:0}.tgl+.tgl-btn:before{display:none}.tgl:checked+.tgl-btn:after{left:50%}.tgl-light+.tgl-btn{background:#f0f0f0;border-radius:2em;padding:2px;transition:all .4s ease}.tgl-light+.tgl-btn:after{border-radius:50%;background:#fff;transition:all .2s ease}.tgl-light:checked+.tgl-btn{background:#9fd6ae}.custom-control-input~.tgl-label{margin-bottom:0;vertical-align:middle}.custom-control-input.is-invalid~.tgl-label{color:#dc3545}.custom-control-input.is-valid~.tgl-label{color:#28a745}"],
providers: [
{ provide: NG_VALUE_ACCESSOR, useExisting: FormToggleComponent, multi: true },
{ provide: NG_VALIDATORS, useExisting: FormToggleComponent, multi: true }
]
},] },
];
FormToggleComponent.propDecorators = {
type: [{ type: Input }]
};
return FormToggleComponent;
}(BaseControlComponent));
export { FormToggleComponent };
if (false) {
/** @type {?} */
FormToggleComponent.prototype.type;
/** @type {?} */
FormToggleComponent.prototype._innerValue;
/** @type {?} */
FormToggleComponent.prototype._isTouch;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWZvcm0tY29udHJvbC8iLCJzb3VyY2VzIjpbImxpYi9mb3JtLXRvZ2dsZS9mb3JtLXRvZ2dsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDOztJQTRDL0IsK0NBQW9COzs7cUJBRXBCLFVBQVU7NEJBQzNCLEtBQUs7eUJBQ1IsS0FBSzs7O0lBRXhCLHNCQUFJLHNDQUFLOzs7O1FBQVQ7WUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN6Qjs7Ozs7UUFFRCxVQUFVLEtBQWM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RCOzs7T0FOQTtJQVFELHNCQUFJLHdDQUFPOzs7O1FBQVg7WUFDRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQzthQUNiO1lBRUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNkO1lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUM5Qjs7O09BQUE7SUFFRCxzQkFBSSxzQ0FBSzs7OztRQUFUO1lBQ0UsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDZDtZQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDZDtZQUVELE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUMvQjs7O09BQUE7SUFFRCxzQkFBSSw4Q0FBYTs7OztRQUFqQjtZQUNFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQ3BDO1lBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUM7YUFDdEM7U0FDRjs7O09BQUE7SUFFRCxzQkFBSSwrQ0FBYzs7OztRQUFsQjtZQUNFLE1BQU0sQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztTQUNqQzs7O09BQUE7SUFFRCxzQkFBSSw2Q0FBWTs7OztRQUFoQjtZQUNFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDN0I7OztPQUFBOzs7OztJQUVELHdDQUFVOzs7O0lBQVYsVUFBVyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0tBQzFCOzs7O0lBRUQsc0NBQVE7OztJQUFSOztRQUNFLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVsQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDO0tBQ2Y7Ozs7SUFFRCxtQ0FBSzs7O0lBQUw7UUFDRSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztLQUN2Qjs7Z0JBcEhGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsNnlDQWlDWDtvQkFDQyxNQUFNLEVBQUUsQ0FBQyx3ekNBQXN6QyxDQUFDO29CQUNoMEMsU0FBUyxFQUFFO3dCQUNULEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO3dCQUMzRSxFQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7cUJBQ3hFO2lCQUNGOzs7dUJBR0UsS0FBSzs7OEJBaERSO0VBOEN5QyxvQkFBb0I7U0FBaEQsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdGlvbkVycm9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0Jhc2VDb250cm9sQ29tcG9uZW50fSBmcm9tICcuLi8uLi91dGlscy9iYXNlLWNvbnRyb2wuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LWZvcm0tdG9nZ2xlJyxcclxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJjdXN0b20tY2hlY2tib3hcIiBbbmdDbGFzc109XCJ7J2N1c3RvbS1jb250cm9sJzogaXNDaGVja2JveFR5cGV9XCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ2hlY2tib3hUeXBlXCI+XHJcbiAgICA8IS0tc3VwcHJlc3MgSHRtbEZvcm1JbnB1dFdpdGhvdXRMYWJlbCAtLT5cclxuICAgIDxpbnB1dCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWlucHV0XCJcclxuICAgICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxyXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6IGludmFsaWQsICdpcy12YWxpZCc6IHZhbGlkfVwiXHJcbiAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWxcIiBbZm9yXT1cImlkXCI+e3tsYWJlbH19PC9sYWJlbD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVG9nZ2xlVHlwZVwiPlxyXG4gICAgPGlucHV0IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtaW5wdXQgdGdsIHRnbC1saWdodFwiXHJcbiAgICAgICAgICAgW3RpdGxlXT1cInRpdGxlXCJcclxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOiBpbnZhbGlkLCAnaXMtdmFsaWQnOiB2YWxpZH1cIlxyXG4gICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInRnbC1idG5cIiBbZm9yXT1cImlkXCI+PC9sYWJlbD5cclxuICAgIDxsYWJlbCBjbGFzcz1cInRnbC1sYWJlbFwiIFtmb3JdPVwiaWRcIiAqbmdJZj1cImxhYmVsXCI+e3tsYWJlbH19PC9sYWJlbD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJ2YWxpZCAmJiB2YWxpZE1lc3NhZ2VcIj57e3ZhbGlkTWVzc2FnZX19PC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJlcnJvck1lc3NhZ2VzICYmIGVycm9yTWVzc2FnZXMubGVuZ3RoXCI+XHJcbiAgICA8c3BhbiAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzOyBsZXQgbGFzdCA9IGxhc3Q7XCI+XHJcbiAgICAgIHt7bWVzc2FnZX19PGJyICpuZ0lmPVwiIWxhc3RcIj5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbmAsXHJcbiAgc3R5bGVzOiBbYC50Z2x7ZGlzcGxheTpub25lfS50Z2wsLnRnbCAqLC50Z2wgOmFmdGVyLC50Z2wgOmJlZm9yZSwudGdsKy50Z2wtYnRuLC50Z2w6YWZ0ZXIsLnRnbDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94fS50Z2wgOjotbW96LXNlbGVjdGlvbiwudGdsIDphZnRlcjo6LW1vei1zZWxlY3Rpb24sLnRnbCA6YmVmb3JlOjotbW96LXNlbGVjdGlvbiwudGdsKy50Z2wtYnRuOjotbW96LXNlbGVjdGlvbiwudGdsOjotbW96LXNlbGVjdGlvbiwudGdsOmFmdGVyOjotbW96LXNlbGVjdGlvbiwudGdsOmJlZm9yZTo6LW1vei1zZWxlY3Rpb257YmFja2dyb3VuZDowIDB9LnRnbCA6OnNlbGVjdGlvbiwudGdsIDphZnRlcjo6c2VsZWN0aW9uLC50Z2wgOmJlZm9yZTo6c2VsZWN0aW9uLC50Z2wrLnRnbC1idG46OnNlbGVjdGlvbiwudGdsOjpzZWxlY3Rpb24sLnRnbDphZnRlcjo6c2VsZWN0aW9uLC50Z2w6YmVmb3JlOjpzZWxlY3Rpb257YmFja2dyb3VuZDowIDB9LnRnbCsudGdsLWJ0bntvdXRsaW5lOjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDoxNXB4O3dpZHRoOjRlbTtoZWlnaHQ6MmVtO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO21hcmdpbi1ib3R0b206MDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LnRnbCsudGdsLWJ0bjphZnRlciwudGdsKy50Z2wtYnRuOmJlZm9yZXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2NvbnRlbnQ6XCJcIjt3aWR0aDo1MCU7aGVpZ2h0OjEwMCV9LnRnbCsudGdsLWJ0bjphZnRlcntsZWZ0OjB9LnRnbCsudGdsLWJ0bjpiZWZvcmV7ZGlzcGxheTpub25lfS50Z2w6Y2hlY2tlZCsudGdsLWJ0bjphZnRlcntsZWZ0OjUwJX0udGdsLWxpZ2h0Ky50Z2wtYnRue2JhY2tncm91bmQ6I2YwZjBmMDtib3JkZXItcmFkaXVzOjJlbTtwYWRkaW5nOjJweDt0cmFuc2l0aW9uOmFsbCAuNHMgZWFzZX0udGdsLWxpZ2h0Ky50Z2wtYnRuOmFmdGVye2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2ZmZjt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZX0udGdsLWxpZ2h0OmNoZWNrZWQrLnRnbC1idG57YmFja2dyb3VuZDojOWZkNmFlfS5jdXN0b20tY29udHJvbC1pbnB1dH4udGdsLWxhYmVse21hcmdpbi1ib3R0b206MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWR+LnRnbC1sYWJlbHtjb2xvcjojZGMzNTQ1fS5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZH4udGdsLWxhYmVse2NvbG9yOiMyOGE3NDV9YF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBGb3JtVG9nZ2xlQ29tcG9uZW50LCBtdWx0aTogdHJ1ZX0sXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IEZvcm1Ub2dnbGVDb21wb25lbnQsIG11bHRpOiB0cnVlfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1Ub2dnbGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29udHJvbENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIHR5cGU6ICdjaGVja2JveCcgfCAndG9nZ2xlJyA9ICdjaGVja2JveCc7XHJcbiAgcHJpdmF0ZSBfaW5uZXJWYWx1ZSA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2lzVG91Y2ggPSBmYWxzZTtcclxuXHJcbiAgZ2V0IHZhbHVlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lubmVyVmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lzVG91Y2ggPSB0cnVlO1xyXG4gICAgdGhpcy5faW5uZXJWYWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy50cmlnZ2VyQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmhhc0N1c3RvbUVycm9yKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5faXNUb3VjaCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaGFzUmVxdWlyZWRFcnJvcjtcclxuICB9XHJcblxyXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmhhc0N1c3RvbUVycm9yKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuX2lzVG91Y2gpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAhdGhpcy5oYXNSZXF1aXJlZEVycm9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVycm9yTWVzc2FnZXMoKTogQXJyYXk8c3RyaW5nPiB7XHJcbiAgICBpZiAodGhpcy5oYXNSZXF1aXJlZEVycm9yKSB7XHJcbiAgICAgIHJldHVybiBbdGhpcy5yZXF1aXJlZEVycm9yTWVzc2FnZV07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzQ3VzdG9tRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5uZXJDdXN0b21FcnJvck1lc3NhZ2VzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQ2hlY2tib3hUeXBlKCkge1xyXG4gICAgcmV0dXJuICdjaGVja2JveCcgPT09IHRoaXMudHlwZTtcclxuICB9XHJcblxyXG4gIGdldCBpc1RvZ2dsZVR5cGUoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuaXNDaGVja2JveFR5cGU7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbm5lclZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xyXG5cclxuICAgIGlmICh0aGlzLmhhc1JlcXVpcmVkRXJyb3IpIHtcclxuICAgICAgcmVzdWx0WydyZXF1aXJlZCddID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLl9pc1RvdWNoID0gZmFsc2U7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=