UNPKG

ngx-form-control

Version:
164 lines (163 loc) 16.6 kB
/** * @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=