UNPKG

@asi-ngtools/lib

Version:

This project is a little components library, simple to use, which will help you to simplify your project.

264 lines (263 loc) 21.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { DefaultControlValueAccessor } from './../common/default-control-value-accessor'; import { AsiRadioButtonComponent } from './asi-radio-button/asi-radio-button.component'; import { Input, Component, TemplateRef, ViewChild, ContentChildren, QueryList, forwardRef, ElementRef, Renderer2 } from '@angular/core'; import * as nh from '../../native-helper'; var AsiRadioButtonGroupComponent = /** @class */ (function (_super) { tslib_1.__extends(AsiRadioButtonGroupComponent, _super); function AsiRadioButtonGroupComponent(renderer, elementRef) { var _this = _super.call(this) || this; _this.renderer = renderer; _this.elementRef = elementRef; /** * Label position */ _this.labelPosition = 'top'; /** * Vertical / Horizontal */ _this.vertical = false; /** * Allow you to select multiple value */ _this.multiple = false; /** * Track data base on a sub attribute rather than reference */ _this.trackBy = null; _this.radios = new Array(); return _this; } /** * @return {?} */ AsiRadioButtonGroupComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.renderer.addClass(this.elementRef.nativeElement, 'label-' + this.labelPosition); if (this.vertical) { this.renderer.addClass(this.elementRef.nativeElement, 'asi-vertical'); } }; /** * @return {?} */ AsiRadioButtonGroupComponent.prototype.getRadios = /** * @return {?} */ function () { return this.radios; }; /** * @param {?} radioEvent * @return {?} */ AsiRadioButtonGroupComponent.prototype.onRadioChecked = /** * @param {?} radioEvent * @return {?} */ function (radioEvent) { var _this = this; /** @type {?} */ var radio = this.getRadioForIndex(radioEvent.index); if (radioEvent.value) { if (this.multiple) { if (this.value == null) { this._value = []; } this._value.push(radio.value); } else { this._value = radio.value; } } else { if (this.multiple) { nh.remove(this._value, function (value) { if (_this.trackBy != null) { return radio.value[_this.trackBy] === value[_this.trackBy]; } else { return radio.value === value; } }); } else { this._value = null; } } // fire model change this.value = this._value; this.initRadioButton(this.value); }; /** * @param {?} index * @return {?} */ AsiRadioButtonGroupComponent.prototype.getRadioForIndex = /** * @param {?} index * @return {?} */ function (index) { return nh.find(this.radios, function (radio) { return radio.index === index; }); }; /** * @return {?} */ AsiRadioButtonGroupComponent.prototype.ngAfterContentInit = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var index = -1; this.queryRadios.forEach(function (radio) { radio.index = ++index; _this.radios.push(radio); }); this.queryRadios.changes.subscribe(function (items) { _this.radios = []; index = -1; items.forEach(function (radio) { radio.index = ++index; _this.radios.push(radio); }); }); this.initRadioButton(this.value); }; /** * @param {?} value * @return {?} */ AsiRadioButtonGroupComponent.prototype.writeValue = /** * @param {?} value * @return {?} */ function (value) { if (this.multiple && !nh.isArray(value) && value != null) { value = [value]; } this._value = value; this.initRadioButton(value); }; /** * @param {?} value * @return {?} */ AsiRadioButtonGroupComponent.prototype.initRadioButton = /** * @param {?} value * @return {?} */ function (value) { var _this = this; if (nh.isEmpty(value)) { this.radios.forEach(function (radio) { radio.active = false; }); } else { if (nh.isArray(value)) { this.radios.forEach(function (radio) { if (_this.trackBy != null) { radio.active = nh.find(_this.value, function (val) { return radio.value[_this.trackBy] === val[_this.trackBy]; }) != null; } else { radio.active = nh.find(_this.value, function (val) { return radio.value === val; }) != null; } }); } else { if (this.trackBy != null) { this.radios.forEach(function (radio) { radio.active = radio.value[_this.trackBy] === value[_this.trackBy]; }); } else { this.radios.forEach(function (radio) { radio.active = (radio.value === value); }); } } } }; AsiRadioButtonGroupComponent.decorators = [ { type: Component, args: [{ selector: 'asi-radio-button-group', template: "<label class=\"input-label\" *ngIf=\"label != null\">{{label | translate}}</label>\n<div class=\"asi-radio-button-container\">\n <asi-radio-button-element *ngFor=\"let radio of getRadios()\"\n [radio]=\"radio\"\n [disabled]=\"disabled\"\n [value]=\"radio.active\"\n (onValueChange)=\"onRadioChecked($event)\">\n </asi-radio-button-element>\n</div>\n", host: { 'class': 'asi-component asi-radio-button-group' }, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(function () { return AsiRadioButtonGroupComponent; }), multi: true } ] }] } ]; /** @nocollapse */ AsiRadioButtonGroupComponent.ctorParameters = function () { return [ { type: Renderer2 }, { type: ElementRef } ]; }; AsiRadioButtonGroupComponent.propDecorators = { label: [{ type: Input }], labelPosition: [{ type: Input }], vertical: [{ type: Input }], multiple: [{ type: Input }], trackBy: [{ type: Input }], queryRadios: [{ type: ContentChildren, args: [AsiRadioButtonComponent,] }], contentTemplate: [{ type: ViewChild, args: [TemplateRef,] }] }; return AsiRadioButtonGroupComponent; }(DefaultControlValueAccessor)); export { AsiRadioButtonGroupComponent }; if (false) { /** * Label to display (is translated) * @type {?} */ AsiRadioButtonGroupComponent.prototype.label; /** * Label position * @type {?} */ AsiRadioButtonGroupComponent.prototype.labelPosition; /** * Vertical / Horizontal * @type {?} */ AsiRadioButtonGroupComponent.prototype.vertical; /** * Allow you to select multiple value * @type {?} */ AsiRadioButtonGroupComponent.prototype.multiple; /** * Track data base on a sub attribute rather than reference * @type {?} */ AsiRadioButtonGroupComponent.prototype.trackBy; /** @type {?} */ AsiRadioButtonGroupComponent.prototype.queryRadios; /** @type {?} */ AsiRadioButtonGroupComponent.prototype.contentTemplate; /** @type {?} */ AsiRadioButtonGroupComponent.prototype.radios; /** @type {?} */ AsiRadioButtonGroupComponent.prototype.renderer; /** @type {?} */ AsiRadioButtonGroupComponent.prototype.elementRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLXJhZGlvLWJ1dHRvbi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYXNpLW5ndG9vbHMvbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYXNpLXJhZGlvLWJ1dHRvbi1ncm91cC9hc2ktcmFkaW8tYnV0dG9uLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3hGLE9BQU8sRUFDTCxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFDcEUsVUFBVSxFQUE0QixVQUFVLEVBQUUsU0FBUyxFQUM1RCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBOztJQWNTLHdEQUEyQjtJQXNCM0Usc0NBQW9CLFFBQW1CLEVBQzdCO1FBRFYsWUFFRSxpQkFBTyxTQUNSO1FBSG1CLGNBQVEsR0FBUixRQUFRLENBQVc7UUFDN0IsZ0JBQVUsR0FBVixVQUFVOzs7OzhCQWxCMkUsS0FBSzs7Ozt5QkFHaEYsS0FBSzs7Ozt5QkFHTCxLQUFLOzs7O3dCQUdFLElBQUk7dUJBTXRCLElBQUksS0FBSyxFQUEyQjs7S0FLNUM7Ozs7SUFFRCwrQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JGLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQ3ZFO0tBQ0Y7Ozs7SUFFRCxnREFBUzs7O0lBQVQ7UUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjs7Ozs7SUFFRCxxREFBYzs7OztJQUFkLFVBQWUsVUFBNkM7UUFBNUQsaUJBNEJDOztRQTNCQyxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2lCQUNsQjtnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDL0I7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7YUFDM0I7U0FDRjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFDLEtBQUs7b0JBQzNCLEVBQUUsQ0FBQyxDQUFDLEtBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQzFEO29CQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNOLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQztxQkFDOUI7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzthQUNwQjtTQUNGOztRQUdELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQzs7Ozs7SUFFTyx1REFBZ0I7Ozs7Y0FBQyxLQUFhO1FBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBQyxLQUFLO1lBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQztTQUM5QixDQUFDLENBQUM7Ozs7O0lBR0wseURBQWtCOzs7SUFBbEI7UUFBQSxpQkFpQkM7O1FBaEJDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBQSxLQUFLO1lBQzVCLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxLQUFLLENBQUM7WUFDdEIsS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDeEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQUMsS0FBSztZQUN2QyxLQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDWCxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQUEsS0FBSztnQkFDakIsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLEtBQUssQ0FBQztnQkFDdEIsS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7YUFDeEIsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDbEM7Ozs7O0lBRUQsaURBQVU7Ozs7SUFBVixVQUFXLEtBQVU7UUFDbkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekQsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakI7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzdCOzs7OztJQUVPLHNEQUFlOzs7O2NBQUMsS0FBVTs7UUFDaEMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBQyxLQUFLO2dCQUN4QixLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzthQUN0QixDQUFDLENBQUM7U0FDSjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUMsS0FBSztvQkFDeEIsRUFBRSxDQUFDLENBQUMsS0FBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUN6QixLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLEtBQUssRUFBRSxVQUFDLEdBQUc7NEJBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUN4RCxDQUFDLElBQUksSUFBSSxDQUFDO3FCQUNaO29CQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNOLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsS0FBSyxFQUFFLFVBQUMsR0FBRzs0QkFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDO3lCQUM1QixDQUFDLElBQUksSUFBSSxDQUFDO3FCQUNaO2lCQUNGLENBQUMsQ0FBQzthQUNKO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFDLEtBQUs7d0JBQ3hCLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxDQUFDLEtBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDbEUsQ0FBQyxDQUFDO2lCQUNKO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUMsS0FBSzt3QkFDeEIsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUE7cUJBQ3ZDLENBQUMsQ0FBQztpQkFDSjthQUNGO1NBQ0Y7OztnQkE5SUosU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLCtXQUFvRDtvQkFDcEQsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFO29CQUN6RCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEsNEJBQTRCLEVBQTVCLENBQTRCLENBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzs7O2dCQWhCbUQsU0FBUztnQkFBckIsVUFBVTs7O3dCQW9CL0MsS0FBSztnQ0FFTCxLQUFLOzJCQUdMLEtBQUs7MkJBR0wsS0FBSzswQkFHTCxLQUFLOzhCQUVMLGVBQWUsU0FBQyx1QkFBdUI7a0NBRXZDLFNBQVMsU0FBQyxXQUFXOzt1Q0F4Q3hCO0VBc0JrRCwyQkFBMkI7U0FBaEUsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERlZmF1bHRDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4vLi4vY29tbW9uL2RlZmF1bHQtY29udHJvbC12YWx1ZS1hY2Nlc3Nvcic7XHJcbmltcG9ydCB7IEFzaVJhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9hc2ktcmFkaW8tYnV0dG9uL2FzaS1yYWRpby1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBJbnB1dCwgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCxcclxuICBmb3J3YXJkUmVmLCBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0ICogYXMgbmggZnJvbSAnLi4vLi4vbmF0aXZlLWhlbHBlcidcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXNpLXJhZGlvLWJ1dHRvbi1ncm91cCcsXHJcbiAgdGVtcGxhdGVVcmw6ICdhc2ktcmFkaW8tYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcclxuICBob3N0OiB7ICdjbGFzcyc6ICdhc2ktY29tcG9uZW50IGFzaS1yYWRpby1idXR0b24tZ3JvdXAnIH0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBc2lSYWRpb0J1dHRvbkdyb3VwQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc2lSYWRpb0J1dHRvbkdyb3VwQ29tcG9uZW50IGV4dGVuZHMgRGVmYXVsdENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcclxuXHJcbiAgLyoqIExhYmVsIHRvIGRpc3BsYXkgKGlzIHRyYW5zbGF0ZWQpICovXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICAvKiogTGFiZWwgcG9zaXRpb24gKi9cclxuICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdib3R0b20tY2VudGVyJyB8ICd0b3AtY2VudGVyJyA9ICd0b3AnO1xyXG5cclxuICAvKiogVmVydGljYWwgLyBIb3Jpem9udGFsICovXHJcbiAgQElucHV0KCkgdmVydGljYWwgPSBmYWxzZTtcclxuXHJcbiAgLyoqIEFsbG93IHlvdSB0byBzZWxlY3QgbXVsdGlwbGUgdmFsdWUgKi9cclxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG5cclxuICAvKiogVHJhY2sgZGF0YSBiYXNlIG9uIGEgc3ViIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiByZWZlcmVuY2UgICovXHJcbiAgQElucHV0KCkgdHJhY2tCeTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihBc2lSYWRpb0J1dHRvbkNvbXBvbmVudCkgcXVlcnlSYWRpb3M6IFF1ZXJ5TGlzdDxBc2lSYWRpb0J1dHRvbkNvbXBvbmVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgcmFkaW9zID0gbmV3IEFycmF5PEFzaVJhZGlvQnV0dG9uQ29tcG9uZW50PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdsYWJlbC0nICsgdGhpcy5sYWJlbFBvc2l0aW9uKTtcclxuICAgIGlmICh0aGlzLnZlcnRpY2FsKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhc2ktdmVydGljYWwnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJhZGlvcygpIHtcclxuICAgIHJldHVybiB0aGlzLnJhZGlvcztcclxuICB9XHJcblxyXG4gIG9uUmFkaW9DaGVja2VkKHJhZGlvRXZlbnQ6IHsgaW5kZXg6IG51bWJlciwgdmFsdWU6IGJvb2xlYW4gfSkge1xyXG4gICAgY29uc3QgcmFkaW8gPSB0aGlzLmdldFJhZGlvRm9ySW5kZXgocmFkaW9FdmVudC5pbmRleCk7XHJcbiAgICBpZiAocmFkaW9FdmVudC52YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuX3ZhbHVlID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3ZhbHVlLnB1c2gocmFkaW8udmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gcmFkaW8udmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgbmgucmVtb3ZlKHRoaXMuX3ZhbHVlLCAodmFsdWUpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyYWNrQnkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmFkaW8udmFsdWVbdGhpcy50cmFja0J5XSA9PT0gdmFsdWVbdGhpcy50cmFja0J5XTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiByYWRpby52YWx1ZSA9PT0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZmlyZSBtb2RlbCBjaGFuZ2VcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLl92YWx1ZTtcclxuICAgIHRoaXMuaW5pdFJhZGlvQnV0dG9uKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSYWRpb0ZvckluZGV4KGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiBuaC5maW5kKHRoaXMucmFkaW9zLCAocmFkaW8pID0+IHtcclxuICAgICAgcmV0dXJuIHJhZGlvLmluZGV4ID09PSBpbmRleDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgbGV0IGluZGV4ID0gLTE7XHJcbiAgICB0aGlzLnF1ZXJ5UmFkaW9zLmZvckVhY2gocmFkaW8gPT4ge1xyXG4gICAgICByYWRpby5pbmRleCA9ICsraW5kZXg7XHJcbiAgICAgIHRoaXMucmFkaW9zLnB1c2gocmFkaW8pXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnF1ZXJ5UmFkaW9zLmNoYW5nZXMuc3Vic2NyaWJlKChpdGVtcykgPT4ge1xyXG4gICAgICB0aGlzLnJhZGlvcyA9IFtdO1xyXG4gICAgICBpbmRleCA9IC0xO1xyXG4gICAgICBpdGVtcy5mb3JFYWNoKHJhZGlvID0+IHtcclxuICAgICAgICByYWRpby5pbmRleCA9ICsraW5kZXg7XHJcbiAgICAgICAgdGhpcy5yYWRpb3MucHVzaChyYWRpbylcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmluaXRSYWRpb0J1dHRvbih0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgIW5oLmlzQXJyYXkodmFsdWUpICYmIHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgdmFsdWUgPSBbdmFsdWVdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuaW5pdFJhZGlvQnV0dG9uKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFJhZGlvQnV0dG9uKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmIChuaC5pc0VtcHR5KHZhbHVlKSkge1xyXG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xyXG4gICAgICAgIHJhZGlvLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChuaC5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy50cmFja0J5ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgcmFkaW8uYWN0aXZlID0gbmguZmluZCh0aGlzLnZhbHVlLCAodmFsKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJhZGlvLnZhbHVlW3RoaXMudHJhY2tCeV0gPT09IHZhbFt0aGlzLnRyYWNrQnldO1xyXG4gICAgICAgICAgICB9KSAhPSBudWxsO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmFkaW8uYWN0aXZlID0gbmguZmluZCh0aGlzLnZhbHVlLCAodmFsKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJhZGlvLnZhbHVlID09PSB2YWw7XHJcbiAgICAgICAgICAgIH0pICE9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJhY2tCeSAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xyXG4gICAgICAgICAgICByYWRpby5hY3RpdmUgPSByYWRpby52YWx1ZVt0aGlzLnRyYWNrQnldID09PSB2YWx1ZVt0aGlzLnRyYWNrQnldO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiB7XHJcbiAgICAgICAgICAgIHJhZGlvLmFjdGl2ZSA9IChyYWRpby52YWx1ZSA9PT0gdmFsdWUpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19