UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

198 lines 18.6 kB
/** * @fileoverview added by tsickle * Generated from: checkbox.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewEncapsulation } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; var CheckBoxComponent = /** @class */ (function () { function CheckBoxComponent(changeDetectorRef) { this.changeDetectorRef = changeDetectorRef; this.disabled = false; this.isShowTitle = true; this.halfchecked = false; this.showAnimation = true; this.change = new EventEmitter(); this.animationUnlocked = false; this.onChange = (/** * @param {?} _ * @return {?} */ function (_) { return null; }); this.onTouch = (/** * @return {?} */ function () { return null; }); this.id = CheckBoxComponent.ID_SEED++; } /** * @param {?} checked * @return {?} */ CheckBoxComponent.prototype.writeValue = /** * @param {?} checked * @return {?} */ function (checked) { if (this.animationUnlocked || checked !== null) { this.checked = !!checked; this.changeDetectorRef.markForCheck(); this.unlockAnimation(); } }; /** * @param {?} fn * @return {?} */ CheckBoxComponent.prototype.registerOnChange = /** * @param {?} fn * @return {?} */ function (fn) { this.onChange = fn; }; /** * @param {?} fn * @return {?} */ CheckBoxComponent.prototype.registerOnTouched = /** * @param {?} fn * @return {?} */ function (fn) { this.onTouch = fn; }; /** * @param {?} $event * @return {?} */ CheckBoxComponent.prototype.toggle = /** * @param {?} $event * @return {?} */ function ($event) { if (this.disabled) { return; } this.checked = !this.checked; this.onChange(this.checked); this.change.next(this.checked); this.onTouch(); }; /** * @private * @return {?} */ CheckBoxComponent.prototype.unlockAnimation = /** * @private * @return {?} */ function () { var _this = this; if (!this.animationUnlocked) { setTimeout((/** * @return {?} */ function () { _this.animationUnlocked = true; }), 0); } }; /** * @param {?} changes * @return {?} */ CheckBoxComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes.hasOwnProperty('halfchecked')) { this.unlockAnimation(); } }; CheckBoxComponent.ID_SEED = 0; CheckBoxComponent.decorators = [ { type: Component, args: [{ selector: 'd-checkbox', template: "<div\r\n class=\"devui-checkbox {{ cssClass }}\"\r\n [ngClass]=\"{\r\n active: checked,\r\n halfchecked: halfchecked,\r\n disabled: disabled,\r\n unchecked: !checked\r\n }\"\r\n>\r\n <label title=\"{{ isShowTitle ? label : '' }}\" (click)=\"toggle($event)\">\r\n <input\r\n [name]=\"name || 'checkbox-' + id\"\r\n class=\"devui-checkbox-input\"\r\n type=\"checkbox\"\r\n [attr.checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [attr.indeterminate]=\"halfchecked\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event.stopPropagation()\"\r\n />\r\n <span class=\"devui-checkbox-material\" [ngStyle]=\"{ 'border-color': checked ? color : '' }\" [ngClass]=\"{ 'custom-color': color }\">\r\n <span\r\n class=\"devui-checkbox-bg\"\r\n [ngStyle]=\"{ 'background-color': color ? color : '' }\"\r\n [ngClass]=\"{\r\n 'devui-no-animation': !showAnimation || !animationUnlocked\r\n }\"\r\n ></span>\r\n <svg\r\n class=\"devui-checkbox-tick \"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 20 20\"\r\n xml:space=\"preserve\"\r\n >\r\n <polyline\r\n class=\"devui-tick\"\r\n points=\"2.6,11 6.9,15.2 17.4,4.8\"\r\n [ngClass]=\"{\r\n 'devui-no-animation': !showAnimation || !animationUnlocked\r\n }\"\r\n />\r\n </svg>\r\n </span>\r\n <ng-template [ngIf]=\"!!label && !labelTemplate\">{{ label }}</ng-template>\r\n <ng-template\r\n [ngIf]=\"!!labelTemplate\"\r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: this, checked:checked, halfchecked: halfchecked,\r\n disabled:disabled, label: label}\"\r\n >\r\n </ng-template>\r\n </label>\r\n</div>\r\n", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ function () { return CheckBoxComponent; })), multi: true } ], styles: [":host{display:inline-block}.devui-checkbox{position:relative;display:-webkit-box;display:flex;display:-ms-flexbox;-webkit-box-align:center;align-items:center;-ms-flex-align:center;height:100%;margin:0}.devui-checkbox .devui-checkbox-tick{position:absolute}.devui-checkbox .devui-checkbox-tick .devui-tick{stroke:#fff;stroke-dasharray:50;stroke-width:2;stroke-miterlimit:10;fill:none;stroke-dashoffset:50;opacity:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transition:stroke-dashoffset .2s ease-in-out,opacity .2s ease-in-out,-webkit-transform .2s ease-in-out;transition:stroke-dashoffset .2s ease-in-out,opacity .2s ease-in-out,transform .2s ease-in-out,-webkit-transform .2s ease-in-out}.devui-checkbox.active:not(.halfchecked) .devui-tick{opacity:1;stroke-dashoffset:0;-webkit-transform:scale(1);transform:scale(1);-webkit-transition:stroke-dashoffset .3s cubic-bezier(.755,.05,.855,.06),opacity .2s cubic-bezier(.755,.05,.855,.06);transition:stroke-dashoffset .3s cubic-bezier(.755,.05,.855,.06),opacity .2s cubic-bezier(.755,.05,.855,.06)}.devui-checkbox.active .devui-checkbox-material:not(.custom-color),.devui-checkbox.halfchecked .devui-checkbox-material:not(.custom-color){border-color:#5e7ce0}.devui-checkbox.active .devui-checkbox-material>.devui-checkbox-bg{opacity:1;-webkit-transform:scale(1);transform:scale(1);-webkit-transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out}.devui-checkbox.unchecked .devui-checkbox-material>.devui-checkbox-bg{-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.755,.05,.855,.06),-webkit-transform .15s cubic-bezier(.755,.05,.855,.06);transition:transform .15s cubic-bezier(.755,.05,.855,.06),opacity .2s cubic-bezier(.755,.05,.855,.06),-webkit-transform .15s cubic-bezier(.755,.05,.855,.06)}.devui-checkbox.halfchecked .devui-checkbox-material>.devui-checkbox-bg{opacity:1;-webkit-transform:scale(.57);transform:scale(.57);-webkit-transition:-webkit-transform .2s cubic-bezier(.755,.05,.855,.06);transition:transform .2s cubic-bezier(.755,.05,.855,.06);transition:transform .2s cubic-bezier(.755,.05,.855,.06),-webkit-transform .2s cubic-bezier(.755,.05,.855,.06)}.devui-checkbox .devui-checkbox-material{text-align:initial;height:14px;width:14px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid #adb0b8;border-radius:1px;margin-right:5px;vertical-align:text-top}.devui-checkbox .devui-checkbox-material>.devui-checkbox-bg{display:inline-block;position:absolute;content:'';background-color:#5e7ce0;top:0;left:0;height:100%;width:100%;-webkit-transform:scale(0);transform:scale(0);opacity:0}.devui-checkbox:not(.disabled) .devui-checkbox-material:not(.custom-color):hover{border:1px solid #344899;-webkit-transition:border-color .2s ease-in-out;transition:border-color .2s ease-in-out}.devui-checkbox:not(.disabled) .devui-checkbox-material:not(.custom-color):hover>.devui-checkbox-bg{background-color:#344899}.devui-checkbox:not(.disabled) .devui-checkbox-material:not(.custom-color):active,.devui-checkbox:not(.disabled) .devui-checkbox-material:not(.custom-color):focus{border:1px solid #344899;-webkit-transition:border-color .2s ease-in-out;transition:border-color .2s ease-in-out}.devui-checkbox:not(.disabled) .devui-checkbox-material:not(.custom-color):active>.devui-checkbox-bg,.devui-checkbox:not(.disabled) .devui-checkbox-material:not(.custom-color):focus>.devui-checkbox-bg,.devui-checkbox:not(.disabled) .devui-checkbox-material:not(.custom-color):hover:active>.devui-checkbox-bg,.devui-checkbox:not(.disabled) .devui-checkbox-material:not(.custom-color):hover:focus>.devui-checkbox-bg{background-color:#344899}.devui-checkbox-input{opacity:0;position:absolute;margin:0;z-index:-1;width:0;height:0;overflow:hidden;left:0;pointer-events:none}.devui-checkbox label{display:inline-block;position:relative;font-weight:400;line-height:1;cursor:pointer;color:#252b3a;margin:0}.devui-checkbox label span{display:inline-block;box-sizing:content-box}.devui-checkbox.disabled{opacity:.3}.devui-checkbox.disabled label{cursor:not-allowed}.devui-no-animation{-webkit-transition:none!important;transition:none!important}"] }] } ]; /** @nocollapse */ CheckBoxComponent.ctorParameters = function () { return [ { type: ChangeDetectorRef } ]; }; CheckBoxComponent.propDecorators = { name: [{ type: Input }], label: [{ type: Input }], cssClass: [{ type: Input }], color: [{ type: Input }], disabled: [{ type: Input }], isShowTitle: [{ type: Input }], labelTemplate: [{ type: Input }], halfchecked: [{ type: Input }], showAnimation: [{ type: Input }], change: [{ type: Output }] }; return CheckBoxComponent; }()); export { CheckBoxComponent }; if (false) { /** @type {?} */ CheckBoxComponent.ID_SEED; /** @type {?} */ CheckBoxComponent.prototype.name; /** @type {?} */ CheckBoxComponent.prototype.label; /** @type {?} */ CheckBoxComponent.prototype.cssClass; /** @type {?} */ CheckBoxComponent.prototype.color; /** @type {?} */ CheckBoxComponent.prototype.disabled; /** @type {?} */ CheckBoxComponent.prototype.isShowTitle; /** @type {?} */ CheckBoxComponent.prototype.labelTemplate; /** @type {?} */ CheckBoxComponent.prototype.halfchecked; /** @type {?} */ CheckBoxComponent.prototype.showAnimation; /** @type {?} */ CheckBoxComponent.prototype.change; /** @type {?} */ CheckBoxComponent.prototype.animationUnlocked; /** @type {?} */ CheckBoxComponent.prototype.id; /** @type {?} */ CheckBoxComponent.prototype.checked; /** * @type {?} * @private */ CheckBoxComponent.prototype.onChange; /** * @type {?} * @private */ CheckBoxComponent.prototype.onTouch; /** * @type {?} * @private */ CheckBoxComponent.prototype.changeDetectorRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZGV2dWkvY2hlY2tib3gvIiwic291cmNlcyI6WyJjaGVja2JveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxpQkFBaUIsRUFHbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFO0lBZ0NFLDJCQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVovQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5CLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLFdBQU0sR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHekIsYUFBUTs7OztRQUFHLFVBQUMsQ0FBTSxJQUFLLE9BQUEsSUFBSSxFQUFKLENBQUksRUFBQztRQUM1QixZQUFPOzs7UUFBRyxjQUFNLE9BQUEsSUFBSSxFQUFKLENBQUksRUFBQztRQUczQixJQUFJLENBQUMsRUFBRSxHQUFHLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hDLENBQUM7Ozs7O0lBRUQsc0NBQVU7Ozs7SUFBVixVQUFXLE9BQVk7UUFDckIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtZQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7Ozs7O0lBRUQsNENBQWdCOzs7O0lBQWhCLFVBQWlCLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQzs7Ozs7SUFFRCw2Q0FBaUI7Ozs7SUFBakIsVUFBa0IsRUFBTztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7OztJQUVELGtDQUFNOzs7O0lBQU4sVUFBTyxNQUFNO1FBQ1gsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7Ozs7SUFFTywyQ0FBZTs7OztJQUF2QjtRQUFBLGlCQU1DO1FBTEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixVQUFVOzs7WUFBQztnQkFDVCxLQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztTQUNQO0lBQ0gsQ0FBQzs7Ozs7SUFFRCx1Q0FBVzs7OztJQUFYLFVBQVksT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUEzRE0seUJBQU8sR0FBRyxDQUFDLENBQUM7O2dCQWZwQixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLDg4REFBd0M7b0JBQ3hDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUUvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVOzs7NEJBQUMsY0FBTSxPQUFBLGlCQUFpQixFQUFqQixDQUFpQixFQUFDOzRCQUNoRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs7aUJBQ0Y7Ozs7Z0JBMUJDLGlCQUFpQjs7O3VCQTZCaEIsS0FBSzt3QkFDTCxLQUFLOzJCQUNMLEtBQUs7d0JBQ0wsS0FBSzsyQkFDTCxLQUFLOzhCQUNMLEtBQUs7Z0NBQ0wsS0FBSzs4QkFDTCxLQUFLO2dDQUNMLEtBQUs7eUJBQ0wsTUFBTTs7SUFrRFQsd0JBQUM7Q0FBQSxBQTNFRCxJQTJFQztTQTdEWSxpQkFBaUI7OztJQUM1QiwwQkFBbUI7O0lBQ25CLGlDQUFzQjs7SUFDdEIsa0NBQXVCOztJQUN2QixxQ0FBMEI7O0lBQzFCLGtDQUFlOztJQUNmLHFDQUEwQjs7SUFDMUIsd0NBQTRCOztJQUM1QiwwQ0FBeUM7O0lBQ3pDLHdDQUE2Qjs7SUFDN0IsMENBQThCOztJQUM5QixtQ0FBNkQ7O0lBQzdELDhDQUFpQzs7SUFDakMsK0JBQWtCOztJQUNsQixvQ0FBd0I7Ozs7O0lBQ3hCLHFDQUFvQzs7Ozs7SUFDcEMsb0NBQTZCOzs7OztJQUVqQiw4Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLWNoZWNrYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrQm94Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja0JveENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xyXG4gIHN0YXRpYyBJRF9TRUVEID0gMDtcclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBjc3NDbGFzczogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNTaG93VGl0bGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxhYmVsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgaGFsZmNoZWNrZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93QW5pbWF0aW9uID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcHVibGljIGFuaW1hdGlvblVubG9ja2VkID0gZmFsc2U7XHJcbiAgcHVibGljIGlkOiBudW1iZXI7XHJcbiAgcHVibGljIGNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9IChfOiBhbnkpID0+IG51bGw7XHJcbiAgcHJpdmF0ZSBvblRvdWNoID0gKCkgPT4gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMuaWQgPSBDaGVja0JveENvbXBvbmVudC5JRF9TRUVEKys7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKGNoZWNrZWQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uVW5sb2NrZWQgfHwgY2hlY2tlZCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmNoZWNrZWQgPSAhIWNoZWNrZWQ7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMudW5sb2NrQW5pbWF0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5jaGVja2VkKTtcclxuICAgIHRoaXMuY2hhbmdlLm5leHQodGhpcy5jaGVja2VkKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1bmxvY2tBbmltYXRpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuYW5pbWF0aW9uVW5sb2NrZWQpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hbmltYXRpb25VbmxvY2tlZCA9IHRydWU7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2hhbGZjaGVja2VkJykpIHtcclxuICAgICAgdGhpcy51bmxvY2tBbmltYXRpb24oKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19