UNPKG

ngx-pluto

Version:
268 lines 21.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewEncapsulation, forwardRef, ContentChildren, QueryList, ChangeDetectorRef, Input, } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { NpRadioButton } from './radio-button.component'; /** * 单选按钮组 - 此标签作为一个单选按钮分组使用,内部可包含多个单选按钮组件{\@link NpRadioButton|RadioButton}。 * * <example-url>https://stackblitz.com/edit/np-radio-button-sample?embed=1&file=src/app/app.component.html</example-url> */ var NpRadioGroup = /** @class */ (function () { function NpRadioGroup(_changeDetector) { this._changeDetector = _changeDetector; this._selected = null; /** * 单选框分组标签 */ this.label = ''; /** * 单选框分组是否必填,如为true,则标签前有红色星号,false则没有。注:此属性不作为校验属性,仅展示星号与否。 */ this.isRequired = false; this._controlValueAccessorChangeFn = (/** * @return {?} */ function () { }); this.onTouched = (/** * @return {?} */ function () { }); } Object.defineProperty(NpRadioGroup.prototype, "value", { /** * Value for the radio-group. Should equal the value of the selected radio button if there is * a corresponding radio button with a matching value. If there is not such a corresponding * radio button, this value persists to be applied in case a new radio button is added with a * matching value. */ get: /** * Value for the radio-group. Should equal the value of the selected radio button if there is * a corresponding radio button with a matching value. If there is not such a corresponding * radio button, this value persists to be applied in case a new radio button is added with a * matching value. * @return {?} */ function () { return this._value; }, set: /** * @param {?} newValue * @return {?} */ function (newValue) { if (this._value !== newValue) { // Set this before proceeding to ensure no circular loop occurs with selection. this._value = newValue; this._updateSelectedRadioFromValue(); this._checkSelectedRadioButton(); } }, enumerable: true, configurable: true }); /** * @return {?} */ NpRadioGroup.prototype.ngAfterContentInit = /** * @return {?} */ function () { var _this = this; this._radios.toArray().forEach((/** * @param {?} cp * @param {?} index * @return {?} */ function (cp, index) { cp.onSelectChanged.subscribe((/** * @param {?} result * @return {?} */ function (result) { _this.value = result; console.log('<<<>>>', result); _this._controlValueAccessorChangeFn(result); _this._updateSelectedRadioFromValue(); // this._changeDetector.detectChanges(); })); })); //TODO: 第一次reactive form 赋值问题 setTimeout((/** * @return {?} */ function () { _this._updateSelectedRadioFromValue(); _this._checkSelectedRadioButton(); }), 0); // this._selected = this._radios.find((cp, index) => cp.value === this.value); // this._selected.checked=true // this._selected.onChange(); }; /** * Sets the model value. Implemented as part of ControlValueAccessor. * @param value */ /** * Sets the model value. Implemented as part of ControlValueAccessor. * @param {?} value * @return {?} */ NpRadioGroup.prototype.writeValue = /** * Sets the model value. Implemented as part of ControlValueAccessor. * @param {?} value * @return {?} */ function (value) { this.value = value; this._changeDetector.markForCheck(); }; /** * Registers a callback to be triggered when the model value changes. * Implemented as part of ControlValueAccessor. * @param fn Callback to be registered. */ /** * Registers a callback to be triggered when the model value changes. * Implemented as part of ControlValueAccessor. * @param {?} fn Callback to be registered. * @return {?} */ NpRadioGroup.prototype.registerOnChange = /** * Registers a callback to be triggered when the model value changes. * Implemented as part of ControlValueAccessor. * @param {?} fn Callback to be registered. * @return {?} */ function (fn) { this._controlValueAccessorChangeFn = fn; }; /** * Registers a callback to be triggered when the control is touched. * Implemented as part of ControlValueAccessor. * @param fn Callback to be registered. */ /** * Registers a callback to be triggered when the control is touched. * Implemented as part of ControlValueAccessor. * @param {?} fn Callback to be registered. * @return {?} */ NpRadioGroup.prototype.registerOnTouched = /** * Registers a callback to be triggered when the control is touched. * Implemented as part of ControlValueAccessor. * @param {?} fn Callback to be registered. * @return {?} */ function (fn) { this.onTouched = fn; }; /** * @return {?} */ NpRadioGroup.prototype._checkSelectedRadioButton = /** * @return {?} */ function () { if (this._selected && !this._selected.checked) { this._selected.checked = true; } }; /** Updates the `selected` radio button from the internal _value state. */ /** * Updates the `selected` radio button from the internal _value state. * @private * @return {?} */ NpRadioGroup.prototype._updateSelectedRadioFromValue = /** * Updates the `selected` radio button from the internal _value state. * @private * @return {?} */ function () { var _this = this; // If the value already matches the selected radio, do nothing. /** @type {?} */ var isAlreadySelected = this._selected !== null && this._selected.value === this._value; if (this._radios && !isAlreadySelected) { this._selected = null; this._radios.forEach((/** * @param {?} radio * @return {?} */ function (radio) { radio.checked = _this.value === radio.value; if (radio.checked) { _this._selected = radio; } })); } }; NpRadioGroup.decorators = [ { type: Component, args: [{ selector: "np-radio-group", template: "<div class=\"np-radio-group-wrapper flex-wrap row-flex\">\r\n <div class=\"flex-wrap col-flex\" *ngIf=\"label\">\r\n <label for=\"np-input\" class=\"np-lbl\">\r\n <span class=\"form-required\" *ngIf=\"isRequired\">*</span>\r\n {{ label }}\r\n </label>\r\n </div>\r\n <div class=\"flex-wrap row-flex\" style=\"width: auto\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", encapsulation: ViewEncapsulation.None, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ function () { return NpRadioGroup; })), multi: true, } ], styles: [".backdrop-transparent{opacity:0}.flex-wrap{display:flex}.wrap{flex-wrap:wrap}.col-flex{flex-direction:column}.row-flex{flex-direction:row}.middle-flex{justify-content:center;align-items:center}.space-between{justify-content:space-between;align-items:center}.align-center{align-items:center}.np-row{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.np-column{display:flex;flex-direction:column;flex-basis:100%;flex:1}.np-radio-group-wrapper{align-items:baseline;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.np-radio-group-wrapper .np-lbl{width:80px;margin-right:20px;text-align:right;font-size:13px;font-weight:700}.np-radio-button-wrapper{margin:.5em 1.428571em 0 0;padding-left:1.785714em;position:relative;font-weight:400;font-size:14px;line-height:1.5em;cursor:pointer;display:inline-block}.np-radio-button-wrapper.rectangle{padding-left:0}.np-radio-button-wrapper .radio{opacity:0;z-index:1;left:.214286em;top:0;position:absolute;width:1em;height:1em;margin:0;display:block}.np-radio-button-wrapper .radio.radio-checked+span::after{position:absolute;content:'';width:.857142em;height:.857142em;top:.071429em;left:.071429em;border-radius:1em}.np-radio-button-wrapper .rectangle-radio{text-align:center;padding:6px 10px}.np-radio-button-wrapper span.input-helper{position:absolute;left:.142857em;top:.142857em;width:1.142857em;height:1.142857em;box-sizing:border-box}.np-radio-button-wrapper .radio+span.input-helper{border-radius:1em}.np-radio-button-wrapper input[type=radio]::before,.np-radio-button-wrapper input[type=radio]:checked::before{content:none}"] }] } ]; /** @nocollapse */ NpRadioGroup.ctorParameters = function () { return [ { type: ChangeDetectorRef } ]; }; NpRadioGroup.propDecorators = { value: [{ type: Input }], label: [{ type: Input }], isRequired: [{ type: Input }], _radios: [{ type: ContentChildren, args: [forwardRef((/** * @return {?} */ function () { return NpRadioButton; })), { descendants: true },] }] }; return NpRadioGroup; }()); export { NpRadioGroup }; if (false) { /** * @type {?} * @private */ NpRadioGroup.prototype._selected; /** * @type {?} * @private */ NpRadioGroup.prototype._value; /** * 单选框分组标签 * @type {?} */ NpRadioGroup.prototype.label; /** * 单选框分组是否必填,如为true,则标签前有红色星号,false则没有。注:此属性不作为校验属性,仅展示星号与否。 * @type {?} */ NpRadioGroup.prototype.isRequired; /** @type {?} */ NpRadioGroup.prototype._radios; /** @type {?} */ NpRadioGroup.prototype._controlValueAccessorChangeFn; /** @type {?} */ NpRadioGroup.prototype.onTouched; /** * @type {?} * @private */ NpRadioGroup.prototype._changeDetector; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXBsdXRvLyIsInNvdXJjZXMiOlsibGliL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEdBQW1DLE1BQU0sZUFBZSxDQUFDO0FBQ2hLLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQU96RDtJQWdDRSxzQkFDVSxlQUFrQztRQUFsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFJcEMsY0FBUyxHQUF5QixJQUFJLENBQUM7Ozs7UUFLL0MsVUFBSyxHQUFHLEVBQUUsQ0FBQzs7OztRQUdYLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFHbkIsa0NBQTZCOzs7UUFBeUIsY0FBUSxDQUFDLEVBQUM7UUFDaEUsY0FBUzs7O1FBQWMsY0FBUSxDQUFDLEVBQUM7SUFkakMsQ0FBQztJQWZELHNCQUNJLCtCQUFLO1FBUFQ7Ozs7O1dBS0c7Ozs7Ozs7O1FBQ0gsY0FDbUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzs7Ozs7UUFDeEMsVUFBVSxRQUFhO1lBQ3JCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLCtFQUErRTtnQkFDL0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7Z0JBRXZCLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQzthQUNsQztRQUNILENBQUM7OztPQVR1Qzs7OztJQTZCeEMseUNBQWtCOzs7SUFBbEI7UUFBQSxpQkFvQkM7UUFsQkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPOzs7OztRQUFDLFVBQUMsRUFBRSxFQUFFLEtBQUs7WUFDdkMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxTQUFTOzs7O1lBQUMsVUFBQSxNQUFNO2dCQUNqQyxLQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLEtBQUksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0MsS0FBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7Z0JBQ3JDLHdDQUF3QztZQUMxQyxDQUFDLEVBQUMsQ0FBQTtRQUNKLENBQUMsRUFBQyxDQUFBO1FBQ0YsNkJBQTZCO1FBQzdCLFVBQVU7OztRQUFDO1lBQ1QsS0FBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7WUFDckMsS0FBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDbkMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBRU4sOEVBQThFO1FBQzlFLDhCQUE4QjtRQUM5Qiw2QkFBNkI7SUFDL0IsQ0FBQztJQUdEOzs7S0FHQzs7Ozs7O0lBQ0QsaUNBQVU7Ozs7O0lBQVYsVUFBVyxLQUFVO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7O09BSUc7Ozs7Ozs7SUFDSCx1Q0FBZ0I7Ozs7OztJQUFoQixVQUFpQixFQUF3QjtRQUN2QyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHOzs7Ozs7O0lBQ0gsd0NBQWlCOzs7Ozs7SUFBakIsVUFBa0IsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7O0lBRUQsZ0RBQXlCOzs7SUFBekI7UUFDRSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsMEVBQTBFOzs7Ozs7SUFDbEUsb0RBQTZCOzs7OztJQUFyQztRQUFBLGlCQWFDOzs7WUFYTyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTTtRQUV6RixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87Ozs7WUFBQyxVQUFBLEtBQUs7Z0JBQ3hCLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUMzQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7b0JBQ2pCLEtBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2lCQUN4QjtZQUNILENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOztnQkF4SEYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLDZaQUF5QztvQkFFekMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVTs7OzRCQUFDLGNBQU0sT0FBQSxZQUFZLEVBQVosQ0FBWSxFQUFDOzRCQUMzQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFBQzs7aUJBQ0w7Ozs7Z0JBcEI4RSxpQkFBaUI7Ozt3QkE2QjdGLEtBQUs7d0JBcUJMLEtBQUs7NkJBR0wsS0FBSzswQkFFTCxlQUFlLFNBQUMsVUFBVTs7O29CQUFDLGNBQU0sT0FBQSxhQUFhLEVBQWIsQ0FBYSxFQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFOztJQTJFekUsbUJBQUM7Q0FBQSxBQXpIRCxJQXlIQztTQTVHWSxZQUFZOzs7Ozs7SUF3QnZCLGlDQUErQzs7Ozs7SUFDL0MsOEJBQWU7Ozs7O0lBR2YsNkJBQ1c7Ozs7O0lBRVgsa0NBQ21COztJQUNuQiwrQkFDa0M7O0lBQ2xDLHFEQUFnRTs7SUFDaEUsaUNBQWlDOzs7OztJQWhCL0IsdUNBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgZm9yd2FyZFJlZiwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIENoYW5nZURldGVjdG9yUmVmLCBJbnB1dCwgSG9zdExpc3RlbmVyLCBBZnRlckNvbnRlbnRJbml0LCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5wUmFkaW9CdXR0b24gfSBmcm9tICcuL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIOWNlemAieaMiemSrue7hCAtIOatpOagh+etvuS9nOS4uuS4gOS4quWNlemAieaMiemSruWIhue7hOS9v+eUqO+8jOWGhemDqOWPr+WMheWQq+WkmuS4quWNlemAieaMiemSrue7hOS7tntAbGluayBOcFJhZGlvQnV0dG9ufFJhZGlvQnV0dG9ufeOAglxyXG4gKiBcclxuICogPGV4YW1wbGUtdXJsPmh0dHBzOi8vc3RhY2tibGl0ei5jb20vZWRpdC9ucC1yYWRpby1idXR0b24tc2FtcGxlP2VtYmVkPTEmZmlsZT1zcmMvYXBwL2FwcC5jb21wb25lbnQuaHRtbDwvZXhhbXBsZS11cmw+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYG5wLXJhZGlvLWdyb3VwYCxcclxuICB0ZW1wbGF0ZVVybDogJ3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsncmFkaW8tZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnBSYWRpb0dyb3VwKSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9XVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE5wUmFkaW9Hcm91cCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAvKipcclxuICAgKiBWYWx1ZSBmb3IgdGhlIHJhZGlvLWdyb3VwLiBTaG91bGQgZXF1YWwgdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3RlZCByYWRpbyBidXR0b24gaWYgdGhlcmUgaXNcclxuICAgKiBhIGNvcnJlc3BvbmRpbmcgcmFkaW8gYnV0dG9uIHdpdGggYSBtYXRjaGluZyB2YWx1ZS4gSWYgdGhlcmUgaXMgbm90IHN1Y2ggYSBjb3JyZXNwb25kaW5nXHJcbiAgICogcmFkaW8gYnV0dG9uLCB0aGlzIHZhbHVlIHBlcnNpc3RzIHRvIGJlIGFwcGxpZWQgaW4gY2FzZSBhIG5ldyByYWRpbyBidXR0b24gaXMgYWRkZWQgd2l0aCBhXHJcbiAgICogbWF0Y2hpbmcgdmFsdWUuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBnZXQgdmFsdWUoKTogYW55IHsgcmV0dXJuIHRoaXMuX3ZhbHVlOyB9XHJcbiAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgLy8gU2V0IHRoaXMgYmVmb3JlIHByb2NlZWRpbmcgdG8gZW5zdXJlIG5vIGNpcmN1bGFyIGxvb3Agb2NjdXJzIHdpdGggc2VsZWN0aW9uLlxyXG4gICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRSYWRpb0Zyb21WYWx1ZSgpO1xyXG4gICAgICB0aGlzLl9jaGVja1NlbGVjdGVkUmFkaW9CdXR0b24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZWxlY3RlZDogTnBSYWRpb0J1dHRvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX3ZhbHVlO1xyXG5cclxuICAvKirljZXpgInmoYbliIbnu4TmoIfnrb4gKi9cclxuICBASW5wdXQoKVxyXG4gIGxhYmVsID0gJyc7XHJcbiAgLyoq5Y2V6YCJ5qGG5YiG57uE5piv5ZCm5b+F5aGr77yM5aaC5Li6dHJ1Ze+8jOWImeagh+etvuWJjeaciee6ouiJsuaYn+WPt++8jGZhbHNl5YiZ5rKh5pyJ44CC5rOo77ya5q2k5bGe5oCn5LiN5L2c5Li65qCh6aqM5bGe5oCn77yM5LuF5bGV56S65pif5Y+35LiO5ZCm44CCICovXHJcbiAgQElucHV0KClcclxuICBpc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IE5wUmFkaW9CdXR0b24pLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXHJcbiAgX3JhZGlvczogUXVlcnlMaXN0PE5wUmFkaW9CdXR0b24+O1xyXG4gIF9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHsgfTtcclxuICBvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHsgfTtcclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5fcmFkaW9zLnRvQXJyYXkoKS5mb3JFYWNoKChjcCwgaW5kZXgpID0+IHtcclxuICAgICAgY3Aub25TZWxlY3RDaGFuZ2VkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSByZXN1bHQ7XHJcbiAgICAgICAgY29uc29sZS5sb2coJzw8PD4+PicsIHJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbihyZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkUmFkaW9Gcm9tVmFsdWUoKTtcclxuICAgICAgICAvLyB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgLy9UT0RPOiDnrKzkuIDmrKFyZWFjdGl2ZSBmb3JtIOi1i+WAvOmXrumimFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkUmFkaW9Gcm9tVmFsdWUoKTtcclxuICAgICAgdGhpcy5fY2hlY2tTZWxlY3RlZFJhZGlvQnV0dG9uKCk7XHJcbiAgICB9LCAwKTtcclxuXHJcbiAgICAvLyB0aGlzLl9zZWxlY3RlZCA9IHRoaXMuX3JhZGlvcy5maW5kKChjcCwgaW5kZXgpID0+IGNwLnZhbHVlID09PSB0aGlzLnZhbHVlKTtcclxuICAgIC8vIHRoaXMuX3NlbGVjdGVkLmNoZWNrZWQ9dHJ1ZVxyXG4gICAgLy8gdGhpcy5fc2VsZWN0ZWQub25DaGFuZ2UoKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICogU2V0cyB0aGUgbW9kZWwgdmFsdWUuIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcbiAqIEBwYXJhbSB2YWx1ZVxyXG4gKi9cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIG1vZGVsIHZhbHVlIGNoYW5nZXMuXHJcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cclxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgcmVnaXN0ZXJlZC5cclxuICAgKi9cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xyXG4gICAgdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbnRyb2wgaXMgdG91Y2hlZC5cclxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxyXG4gICAqIEBwYXJhbSBmbiBDYWxsYmFjayB0byBiZSByZWdpc3RlcmVkLlxyXG4gICAqL1xyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBfY2hlY2tTZWxlY3RlZFJhZGlvQnV0dG9uKCkge1xyXG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkICYmICF0aGlzLl9zZWxlY3RlZC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFVwZGF0ZXMgdGhlIGBzZWxlY3RlZGAgcmFkaW8gYnV0dG9uIGZyb20gdGhlIGludGVybmFsIF92YWx1ZSBzdGF0ZS4gKi9cclxuICBwcml2YXRlIF91cGRhdGVTZWxlY3RlZFJhZGlvRnJvbVZhbHVlKCk6IHZvaWQge1xyXG4gICAgLy8gSWYgdGhlIHZhbHVlIGFscmVhZHkgbWF0Y2hlcyB0aGUgc2VsZWN0ZWQgcmFkaW8sIGRvIG5vdGhpbmcuXHJcbiAgICBjb25zdCBpc0FscmVhZHlTZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkICE9PSBudWxsICYmIHRoaXMuX3NlbGVjdGVkLnZhbHVlID09PSB0aGlzLl92YWx1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5fcmFkaW9zICYmICFpc0FscmVhZHlTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IG51bGw7XHJcbiAgICAgIHRoaXMuX3JhZGlvcy5mb3JFYWNoKHJhZGlvID0+IHtcclxuICAgICAgICByYWRpby5jaGVja2VkID0gdGhpcy52YWx1ZSA9PT0gcmFkaW8udmFsdWU7XHJcbiAgICAgICAgaWYgKHJhZGlvLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gcmFkaW87XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19