UNPKG

materialize-angular

Version:
268 lines 18.2 kB
/** * @fileoverview added by tsickle * Generated from: app/completed-components/radio-group/radio-group.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @license * Copyright Workylab. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://raw.githubusercontent.com/workylab/materialize-angular/master/LICENSE */ import { Component, ContentChildren, EventEmitter, forwardRef, Input, Output, QueryList } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { config } from '../../config'; import { RadioComponent } from './radio/radio.component'; var RadioGroupComponent = /** @class */ (function () { function RadioGroupComponent() { this.canUncheck = RadioGroupComponent.defaultProps.canUncheck; this.className = RadioGroupComponent.defaultProps.className; this.disabled = RadioGroupComponent.defaultProps.disabled; this.name = RadioGroupComponent.defaultProps.name; this.required = RadioGroupComponent.defaultProps.required; this.value = RadioGroupComponent.defaultProps.value; this.prefix = config.components.prefix; this.isFocused = false; this.initRadios = this.initRadios.bind(this); this.registerRadios = this.registerRadios.bind(this); this.toggleRadios = this.toggleRadios.bind(this); this.onChangeEmitter = new EventEmitter(); } /** * @return {?} */ RadioGroupComponent.prototype.ngAfterContentInit = /** * @return {?} */ function () { this.initRadios(); this.radiosQueryList.changes.subscribe(this.initRadios); }; /** * @return {?} */ RadioGroupComponent.prototype.initRadios = /** * @return {?} */ function () { this.disableAllRadios(this.disabled); setTimeout(this.registerRadios, 0); }; /** * @return {?} */ RadioGroupComponent.prototype.registerRadios = /** * @return {?} */ function () { var _this = this; this.radiosQueryList.forEach((/** * @param {?} radio * @return {?} */ function (radio) { radio.isActive = (radio.value === _this.value); radio.onClickEmitter.subscribe(_this.toggleRadios); })); }; /** * @param {?} value * @return {?} */ RadioGroupComponent.prototype.toggleRadios = /** * @param {?} value * @return {?} */ function (value) { this.setValueAllRadios(value); /** @type {?} */ var currentRadio = this.radiosQueryList.find((/** * @param {?} radio * @return {?} */ function (radio) { return radio.value === value; })); this.value = currentRadio && currentRadio.isActive ? currentRadio.value : ''; this.onTouched(); this.onChange(this.value); this.onChangeEmitter.emit(this.value); }; /** * @param {?} value * @return {?} */ RadioGroupComponent.prototype.setValueAllRadios = /** * @param {?} value * @return {?} */ function (value) { var _this = this; this.radiosQueryList.forEach((/** * @param {?} radio * @return {?} */ function (radio) { if (radio.value !== value) { radio.isActive = false; } if (radio.value === value && !_this.canUncheck) { radio.isActive = true; } })); }; /** * @param {?} disabled * @return {?} */ RadioGroupComponent.prototype.disableAllRadios = /** * @param {?} disabled * @return {?} */ function (disabled) { this.radiosQueryList.forEach((/** * @param {?} radio * @return {?} */ function (radio) { radio.disabled = disabled; })); }; /** * @param {?} isDisabled * @return {?} */ RadioGroupComponent.prototype.setDisabledState = /** * @param {?} isDisabled * @return {?} */ function (isDisabled) { var _this = this; this.disabled = isDisabled; setTimeout((/** * @return {?} */ function () { _this.disableAllRadios(_this.disabled); }), 0); }; /** * @param {?} value * @return {?} */ RadioGroupComponent.prototype.writeValue = /** * @param {?} value * @return {?} */ function (value) { var _this = this; this.value = value; setTimeout((/** * @return {?} */ function () { _this.setValueAllRadios(_this.value); }), 0); }; /** * @param {?} fn * @return {?} */ RadioGroupComponent.prototype.registerOnChange = /** * @param {?} fn * @return {?} */ function (fn) { this.onChange = fn; }; /** * @param {?} fn * @return {?} */ RadioGroupComponent.prototype.registerOnTouched = /** * @param {?} fn * @return {?} */ function (fn) { this.onTouched = fn; }; /** * @param {?} value * @return {?} */ RadioGroupComponent.prototype.onChange = /** * @param {?} value * @return {?} */ function (value) { }; /** * @return {?} */ RadioGroupComponent.prototype.onTouched = /** * @return {?} */ function () { }; RadioGroupComponent.defaultProps = { canUncheck: false, className: '', disabled: false, name: '', required: false, value: '' }; RadioGroupComponent.decorators = [ { type: Component, args: [{ providers: [{ multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ function () { return RadioGroupComponent; })) }], selector: config.components.prefix + "-radio-group }", template: "<div [ngClass]=\"[prefix + '-radio-group', className]\">\n <ng-content select=\"materialize-radio\"></ng-content>\n</div>\n" }] } ]; /** @nocollapse */ RadioGroupComponent.ctorParameters = function () { return []; }; RadioGroupComponent.propDecorators = { radiosQueryList: [{ type: ContentChildren, args: [RadioComponent,] }], onChangeEmitter: [{ type: Output, args: ['onChange',] }], canUncheck: [{ type: Input }], className: [{ type: Input }], disabled: [{ type: Input }], name: [{ type: Input }], required: [{ type: Input }], value: [{ type: Input }] }; return RadioGroupComponent; }()); export { RadioGroupComponent }; if (false) { /** @type {?} */ RadioGroupComponent.defaultProps; /** @type {?} */ RadioGroupComponent.prototype.radiosQueryList; /** @type {?} */ RadioGroupComponent.prototype.onChangeEmitter; /** @type {?} */ RadioGroupComponent.prototype.canUncheck; /** @type {?} */ RadioGroupComponent.prototype.className; /** @type {?} */ RadioGroupComponent.prototype.disabled; /** @type {?} */ RadioGroupComponent.prototype.name; /** @type {?} */ RadioGroupComponent.prototype.required; /** @type {?} */ RadioGroupComponent.prototype.value; /** @type {?} */ RadioGroupComponent.prototype.prefix; /** @type {?} */ RadioGroupComponent.prototype.isFocused; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbWF0ZXJpYWxpemUtYW5ndWxhci8iLCJzb3VyY2VzIjpbImFwcC9jb21wbGV0ZWQtY29tcG9uZW50cy9yYWRpby1ncm91cC9yYWRpby1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekQ7SUFpQ0U7UUFWUyxlQUFVLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUNsRSxjQUFTLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUMvRCxhQUFRLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM5RCxTQUFJLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUNyRCxhQUFRLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM5RCxVQUFLLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUV6RCxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFJdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7Ozs7SUFFRCxnREFBa0I7OztJQUFsQjtRQUNFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELENBQUM7Ozs7SUFFRCx3Q0FBVTs7O0lBQVY7UUFDRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Ozs7SUFFRCw0Q0FBYzs7O0lBQWQ7UUFBQSxpQkFNQztRQUxDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsS0FBSztZQUNoQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFOUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BELENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFRCwwQ0FBWTs7OztJQUFaLFVBQWEsS0FBYTtRQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7O1lBRXhCLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUk7Ozs7UUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFyQixDQUFxQixFQUFDO1FBRTlFLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxJQUFJLFlBQVksQ0FBQyxRQUFRO1lBQ2hELENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSztZQUNwQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7OztJQUVELCtDQUFpQjs7OztJQUFqQixVQUFrQixLQUFhO1FBQS9CLGlCQVVDO1FBVEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQSxLQUFLO1lBQ2hDLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQ3pCLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2FBQ3hCO1lBRUQsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzdDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVELDhDQUFnQjs7OztJQUFoQixVQUFpQixRQUFpQjtRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLEtBQUs7WUFDaEMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDNUIsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVELDhDQUFnQjs7OztJQUFoQixVQUFpQixVQUFtQjtRQUFwQyxpQkFNQztRQUxDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBRTNCLFVBQVU7OztRQUFDO1lBQ1QsS0FBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOzs7OztJQUVELHdDQUFVOzs7O0lBQVYsVUFBVyxLQUFhO1FBQXhCLGlCQU1DO1FBTEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsVUFBVTs7O1FBQUM7WUFDVCxLQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Ozs7O0lBRUQsOENBQWdCOzs7O0lBQWhCLFVBQWlCLEVBQTJCO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBRUQsK0NBQWlCOzs7O0lBQWpCLFVBQWtCLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7Ozs7SUFFRCxzQ0FBUTs7OztJQUFSLFVBQVMsS0FBYTtJQUN0QixDQUFDOzs7O0lBRUQsdUNBQVM7OztJQUFULGNBQW1CLENBQUM7SUFqSEosZ0NBQVksR0FBb0I7UUFDOUMsVUFBVSxFQUFFLEtBQUs7UUFDakIsU0FBUyxFQUFFLEVBQUU7UUFDYixRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxFQUFFO1FBQ1IsUUFBUSxFQUFFLEtBQUs7UUFDZixLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUM7O2dCQWpCSCxTQUFTLFNBQUM7b0JBQ1QsU0FBUyxFQUFFLENBQUM7NEJBQ1YsS0FBSyxFQUFFLElBQUk7NEJBQ1gsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVU7Ozs0QkFBQyxjQUFNLE9BQUEsbUJBQW1CLEVBQW5CLENBQW1CLEVBQUM7eUJBQ25ELENBQUM7b0JBQ0YsUUFBUSxFQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxtQkFBaUI7b0JBQ3ZELHdJQUEyQztpQkFDNUM7Ozs7O2tDQVdFLGVBQWUsU0FBQyxjQUFjO2tDQUU5QixNQUFNLFNBQUMsVUFBVTs2QkFFakIsS0FBSzs0QkFDTCxLQUFLOzJCQUNMLEtBQUs7dUJBQ0wsS0FBSzsyQkFDTCxLQUFLO3dCQUNMLEtBQUs7O0lBZ0dSLDBCQUFDO0NBQUEsQUE1SEQsSUE0SEM7U0FuSFksbUJBQW1COzs7SUFDOUIsaUNBT0U7O0lBRUYsOENBQTRFOztJQUU1RSw4Q0FBMEQ7O0lBRTFELHlDQUEyRTs7SUFDM0Usd0NBQXdFOztJQUN4RSx1Q0FBdUU7O0lBQ3ZFLG1DQUE4RDs7SUFDOUQsdUNBQXVFOztJQUN2RSxvQ0FBZ0U7O0lBRWhFLHFDQUF5Qzs7SUFDekMsd0NBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IFdvcmt5bGFiLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS93b3JreWxhYi9tYXRlcmlhbGl6ZS1hbmd1bGFyL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFJhZGlvQ29tcG9uZW50IH0gZnJvbSAnLi9yYWRpby9yYWRpby5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmFkaW9Hcm91cE1vZGVsIH0gZnJvbSAnLi9yYWRpby1ncm91cC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBwcm92aWRlcnM6IFt7XG4gICAgbXVsdGk6IHRydWUsXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFkaW9Hcm91cENvbXBvbmVudClcbiAgfV0sXG4gIHNlbGVjdG9yOiBgJHsgY29uZmlnLmNvbXBvbmVudHMucHJlZml4IH0tcmFkaW8tZ3JvdXAgfWAsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9Hcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBSYWRpb0dyb3VwTW9kZWwge1xuICBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdFByb3BzOiBSYWRpb0dyb3VwTW9kZWwgPSB7XG4gICAgY2FuVW5jaGVjazogZmFsc2UsXG4gICAgY2xhc3NOYW1lOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgbmFtZTogJycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHZhbHVlOiAnJ1xuICB9O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oUmFkaW9Db21wb25lbnQpIHJhZGlvc1F1ZXJ5TGlzdDogUXVlcnlMaXN0PFJhZGlvQ29tcG9uZW50PjtcblxuICBAT3V0cHV0KCdvbkNoYW5nZScpIG9uQ2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPHN0cmluZz47XG5cbiAgQElucHV0KCkgY2FuVW5jaGVjazogYm9vbGVhbiA9IFJhZGlvR3JvdXBDb21wb25lbnQuZGVmYXVsdFByb3BzLmNhblVuY2hlY2s7XG4gIEBJbnB1dCgpIGNsYXNzTmFtZTogc3RyaW5nID0gUmFkaW9Hcm91cENvbXBvbmVudC5kZWZhdWx0UHJvcHMuY2xhc3NOYW1lO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IFJhZGlvR3JvdXBDb21wb25lbnQuZGVmYXVsdFByb3BzLmRpc2FibGVkO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSBSYWRpb0dyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5uYW1lO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IFJhZGlvR3JvdXBDb21wb25lbnQuZGVmYXVsdFByb3BzLnJlcXVpcmVkO1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gUmFkaW9Hcm91cENvbXBvbmVudC5kZWZhdWx0UHJvcHMudmFsdWU7XG5cbiAgcHVibGljIHByZWZpeCA9IGNvbmZpZy5jb21wb25lbnRzLnByZWZpeDtcbiAgcHVibGljIGlzRm9jdXNlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5pbml0UmFkaW9zID0gdGhpcy5pbml0UmFkaW9zLmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZWdpc3RlclJhZGlvcyA9IHRoaXMucmVnaXN0ZXJSYWRpb3MuYmluZCh0aGlzKTtcbiAgICB0aGlzLnRvZ2dsZVJhZGlvcyA9IHRoaXMudG9nZ2xlUmFkaW9zLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLm9uQ2hhbmdlRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmluaXRSYWRpb3MoKTtcblxuICAgIHRoaXMucmFkaW9zUXVlcnlMaXN0LmNoYW5nZXMuc3Vic2NyaWJlKHRoaXMuaW5pdFJhZGlvcyk7XG4gIH1cblxuICBpbml0UmFkaW9zKCkge1xuICAgIHRoaXMuZGlzYWJsZUFsbFJhZGlvcyh0aGlzLmRpc2FibGVkKTtcblxuICAgIHNldFRpbWVvdXQodGhpcy5yZWdpc3RlclJhZGlvcywgMCk7XG4gIH1cblxuICByZWdpc3RlclJhZGlvcygpIHtcbiAgICB0aGlzLnJhZGlvc1F1ZXJ5TGlzdC5mb3JFYWNoKHJhZGlvID0+IHtcbiAgICAgIHJhZGlvLmlzQWN0aXZlID0gKHJhZGlvLnZhbHVlID09PSB0aGlzLnZhbHVlKTtcblxuICAgICAgcmFkaW8ub25DbGlja0VtaXR0ZXIuc3Vic2NyaWJlKHRoaXMudG9nZ2xlUmFkaW9zKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZVJhZGlvcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRWYWx1ZUFsbFJhZGlvcyh2YWx1ZSk7XG5cbiAgICBjb25zdCBjdXJyZW50UmFkaW8gPSB0aGlzLnJhZGlvc1F1ZXJ5TGlzdC5maW5kKHJhZGlvID0+IHJhZGlvLnZhbHVlID09PSB2YWx1ZSk7XG5cbiAgICB0aGlzLnZhbHVlID0gY3VycmVudFJhZGlvICYmIGN1cnJlbnRSYWRpby5pc0FjdGl2ZVxuICAgICAgPyBjdXJyZW50UmFkaW8udmFsdWVcbiAgICAgIDogJyc7XG5cbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG5cbiAgICB0aGlzLm9uQ2hhbmdlRW1pdHRlci5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgc2V0VmFsdWVBbGxSYWRpb3ModmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucmFkaW9zUXVlcnlMaXN0LmZvckVhY2gocmFkaW8gPT4ge1xuICAgICAgaWYgKHJhZGlvLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICByYWRpby5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAocmFkaW8udmFsdWUgPT09IHZhbHVlICYmICF0aGlzLmNhblVuY2hlY2spIHtcbiAgICAgICAgcmFkaW8uaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZGlzYWJsZUFsbFJhZGlvcyhkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMucmFkaW9zUXVlcnlMaXN0LmZvckVhY2gocmFkaW8gPT4ge1xuICAgICAgcmFkaW8uZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB9KTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRpc2FibGVBbGxSYWRpb3ModGhpcy5kaXNhYmxlZCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWVBbGxSYWRpb3ModGhpcy52YWx1ZSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIG9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgfVxuXG4gIG9uVG91Y2hlZCgpOiB2b2lkIHt9XG59XG4iXX0=