UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

302 lines 25.1 kB
import { __decorate, __metadata } from "tslib"; import { Component, Input, HostListener, ElementRef, HostBinding, Output, EventEmitter, OnInit, OnDestroy, TemplateRef } from '@angular/core'; import { takeUntil } from 'rxjs/operators'; import { SliderHandle } from '../slider.common'; import { Subject } from 'rxjs'; /** * @hidden */ var IgxSliderThumbComponent = /** @class */ (function () { function IgxSliderThumbComponent(_elementRef) { this._elementRef = _elementRef; this._isActive = false; this._isPressed = false; this._destroy$ = new Subject(); this.isActive = false; this.onThumbValueChange = new EventEmitter(); this.onChange = new EventEmitter(); this.onHoverChange = new EventEmitter(); this.tabindex = 0; this.zIndex = 0; } Object.defineProperty(IgxSliderThumbComponent.prototype, "thumbPositionX", { get: function () { var thumbBounderies = this.nativeElement.getBoundingClientRect(); var thumbCenter = (thumbBounderies.right - thumbBounderies.left) / 2; return thumbBounderies.left + thumbCenter; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSliderThumbComponent.prototype, "thumbFromClass", { get: function () { return this.type === SliderHandle.FROM; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSliderThumbComponent.prototype, "thumbToClass", { get: function () { return this.type === SliderHandle.TO; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSliderThumbComponent.prototype, "thumbFromActiveClass", { get: function () { return this.type === SliderHandle.FROM && this._isActive; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSliderThumbComponent.prototype, "thumbToActiveClass", { get: function () { return this.type === SliderHandle.TO && this._isActive; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSliderThumbComponent.prototype, "thumbPressedClass", { get: function () { return this.isActive && this._isPressed; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSliderThumbComponent.prototype, "nativeElement", { get: function () { return this._elementRef.nativeElement; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSliderThumbComponent.prototype, "destroy", { get: function () { return this._destroy$; }, enumerable: true, configurable: true }); /** * @hidden */ IgxSliderThumbComponent.prototype.ngOnInit = function () { var _this = this; this.onPan .pipe(takeUntil(this._destroy$)) .subscribe(function (mouseX) { return _this.updateThumbValue(mouseX); }); }; /** * @hidden */ IgxSliderThumbComponent.prototype.ngOnDestroy = function () { this._destroy$.next(true); this._destroy$.complete(); }; IgxSliderThumbComponent.prototype.onPinterEnter = function () { this.onHoverChange.emit(true); }; IgxSliderThumbComponent.prototype.onPointerLeave = function () { this.onHoverChange.emit(false); }; IgxSliderThumbComponent.prototype.onKeyDown = function (event) { if (this.disabled) { return; } var increment = 0; if (event.key.endsWith('Left')) { increment = this.step * -1; } else if (event.key.endsWith('Right')) { increment = this.step; } else { return; } this.onChange.emit(); this.onThumbValueChange.emit(increment); }; IgxSliderThumbComponent.prototype.onBlur = function () { this.isActive = false; this.zIndex = 0; }; IgxSliderThumbComponent.prototype.onFocusListener = function () { this.isActive = true; this.zIndex = 1; }; /** * Show thumb label and ripple. */ IgxSliderThumbComponent.prototype.showThumbIndicators = function () { this.toggleThumbIndicators(true); }; /** * Hide thumb label and ripple. */ IgxSliderThumbComponent.prototype.hideThumbIndicators = function () { this.toggleThumbIndicators(false); }; IgxSliderThumbComponent.prototype.updateThumbValue = function (mouseX) { var updateValue = this.calculateTrackUpdate(mouseX); if (this.isActive && updateValue !== 0) { this.onThumbValueChange.emit(updateValue); } }; IgxSliderThumbComponent.prototype.calculateTrackUpdate = function (mouseX) { var scaleX = mouseX - this.thumbPositionX; var stepDistanceCenter = this.stepDistance / 2; // If the thumb scale range (slider update) is less thàn a half step, // the position stays the same. var scaleXPositive = Math.abs(scaleX); if (scaleXPositive < stepDistanceCenter) { return 0; } return this.stepToProceed(scaleX, this.stepDistance); }; IgxSliderThumbComponent.prototype.stepToProceed = function (scaleX, stepDist) { return Math.round(scaleX / stepDist) * this.step; }; IgxSliderThumbComponent.prototype.toggleThumbIndicators = function (visible) { this._isPressed = visible; if (this.continuous || this.deactiveState) { this._isActive = false; } else { this._isActive = visible; } }; IgxSliderThumbComponent.ctorParameters = function () { return [ { type: ElementRef } ]; }; __decorate([ Input(), __metadata("design:type", Number) ], IgxSliderThumbComponent.prototype, "value", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], IgxSliderThumbComponent.prototype, "continuous", void 0); __decorate([ Input(), __metadata("design:type", Object) ], IgxSliderThumbComponent.prototype, "thumbLabelVisibilityDuration", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], IgxSliderThumbComponent.prototype, "disabled", void 0); __decorate([ Input(), __metadata("design:type", Subject) ], IgxSliderThumbComponent.prototype, "onPan", void 0); __decorate([ Input(), __metadata("design:type", Number) ], IgxSliderThumbComponent.prototype, "stepDistance", void 0); __decorate([ Input(), __metadata("design:type", Number) ], IgxSliderThumbComponent.prototype, "step", void 0); __decorate([ Input(), __metadata("design:type", TemplateRef) ], IgxSliderThumbComponent.prototype, "templateRef", void 0); __decorate([ Input(), __metadata("design:type", Object) ], IgxSliderThumbComponent.prototype, "context", void 0); __decorate([ Input(), __metadata("design:type", Number) ], IgxSliderThumbComponent.prototype, "type", void 0); __decorate([ Input(), __metadata("design:type", Boolean) ], IgxSliderThumbComponent.prototype, "deactiveState", void 0); __decorate([ Output(), __metadata("design:type", Object) ], IgxSliderThumbComponent.prototype, "onThumbValueChange", void 0); __decorate([ Output(), __metadata("design:type", Object) ], IgxSliderThumbComponent.prototype, "onChange", void 0); __decorate([ Output(), __metadata("design:type", Object) ], IgxSliderThumbComponent.prototype, "onHoverChange", void 0); __decorate([ HostBinding('attr.tabindex'), __metadata("design:type", Object) ], IgxSliderThumbComponent.prototype, "tabindex", void 0); __decorate([ HostBinding('attr.z-index'), __metadata("design:type", Object) ], IgxSliderThumbComponent.prototype, "zIndex", void 0); __decorate([ HostBinding('class.igx-slider__thumb-from'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], IgxSliderThumbComponent.prototype, "thumbFromClass", null); __decorate([ HostBinding('class.igx-slider__thumb-to'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], IgxSliderThumbComponent.prototype, "thumbToClass", null); __decorate([ HostBinding('class.igx-slider__thumb-from--active'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], IgxSliderThumbComponent.prototype, "thumbFromActiveClass", null); __decorate([ HostBinding('class.igx-slider__thumb-to--active'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], IgxSliderThumbComponent.prototype, "thumbToActiveClass", null); __decorate([ HostBinding('class.igx-slider__thumb--pressed'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], IgxSliderThumbComponent.prototype, "thumbPressedClass", null); __decorate([ HostListener('pointerenter'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], IgxSliderThumbComponent.prototype, "onPinterEnter", null); __decorate([ HostListener('pointerleave'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], IgxSliderThumbComponent.prototype, "onPointerLeave", null); __decorate([ HostListener('keydown', ['$event']), __metadata("design:type", Function), __metadata("design:paramtypes", [KeyboardEvent]), __metadata("design:returntype", void 0) ], IgxSliderThumbComponent.prototype, "onKeyDown", null); __decorate([ HostListener('blur'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], IgxSliderThumbComponent.prototype, "onBlur", null); __decorate([ HostListener('focus'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], IgxSliderThumbComponent.prototype, "onFocusListener", null); IgxSliderThumbComponent = __decorate([ Component({ selector: 'igx-thumb', template: "<div class=\"dot\"></div>\n" }), __metadata("design:paramtypes", [ElementRef]) ], IgxSliderThumbComponent); return IgxSliderThumbComponent; }()); export { IgxSliderThumbComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bWItc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvc2xpZGVyL3RodW1iL3RodW1iLXNsaWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9COztHQUVHO0FBS0g7SUErRkksaUNBQW9CLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBN0ZuQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFRcEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQW9DakIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUdoRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUduQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHNUMsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUdiLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFtQzZCLENBQUM7SUF6RmhELHNCQUFZLG1EQUFjO2FBQTFCO1lBQ0ksSUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ25FLElBQU0sV0FBVyxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sZUFBZSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7UUFDOUMsQ0FBQzs7O09BQUE7SUFxREQsc0JBQVcsbURBQWM7YUFBekI7WUFDSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLElBQUksQ0FBQztRQUMzQyxDQUFDOzs7T0FBQTtJQUdELHNCQUFXLGlEQUFZO2FBQXZCO1lBQ0ksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDekMsQ0FBQzs7O09BQUE7SUFHRCxzQkFBVyx5REFBb0I7YUFBL0I7WUFDSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzdELENBQUM7OztPQUFBO0lBR0Qsc0JBQVcsdURBQWtCO2FBQTdCO1lBQ0ksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMzRCxDQUFDOzs7T0FBQTtJQUdELHNCQUFXLHNEQUFpQjthQUE1QjtZQUNJLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzVDLENBQUM7OztPQUFBO0lBRUQsc0JBQVcsa0RBQWE7YUFBeEI7WUFDSSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQzFDLENBQUM7OztPQUFBO0lBRUQsc0JBQVcsNENBQU87YUFBbEI7WUFDSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQzs7O09BQUE7SUFJRDs7T0FFRztJQUNJLDBDQUFRLEdBQWY7UUFBQSxpQkFNQztRQUxHLElBQUksQ0FBQyxLQUFLO2FBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0IsU0FBUyxDQUFDLFVBQUEsTUFBTTtZQUNiLE9BQUEsS0FBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUE3QixDQUE2QixDQUNoQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksNkNBQVcsR0FBbEI7UUFDSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFHTSwrQ0FBYSxHQUFwQjtRQUNJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFHTSxnREFBYyxHQUFyQjtRQUNJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFHTSwyQ0FBUyxHQUFoQixVQUFpQixLQUFvQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFFRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QixTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFFLENBQUMsQ0FBQztTQUMvQjthQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDcEMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDekI7YUFBTTtZQUNILE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBR00sd0NBQU0sR0FBYjtRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFHTSxpREFBZSxHQUF0QjtRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNJLHFEQUFtQixHQUExQjtRQUNJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxxREFBbUIsR0FBMUI7UUFDSSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLGtEQUFnQixHQUF4QixVQUF5QixNQUFjO1FBQ25DLElBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUVPLHNEQUFvQixHQUE1QixVQUE2QixNQUFjO1FBQ3ZDLElBQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFFakQscUVBQXFFO1FBQ3JFLCtCQUErQjtRQUMvQixJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLElBQUksY0FBYyxHQUFHLGtCQUFrQixFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sK0NBQWEsR0FBckIsVUFBc0IsTUFBTSxFQUFFLFFBQVE7UUFDbEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFTyx1REFBcUIsR0FBN0IsVUFBOEIsT0FBZ0I7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7UUFFMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDMUI7YUFBTTtZQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1NBQzVCO0lBRUwsQ0FBQzs7Z0JBOUdnQyxVQUFVOztJQWhGM0M7UUFEQyxLQUFLLEVBQUU7OzBEQUNhO0lBR3JCO1FBREMsS0FBSyxFQUFFOzsrREFDbUI7SUFHM0I7UUFEQyxLQUFLLEVBQUU7O2lGQUM0QjtJQUdwQztRQURDLEtBQUssRUFBRTs7NkRBQ2lCO0lBR3pCO1FBREMsS0FBSyxFQUFFO2tDQUNNLE9BQU87MERBQVM7SUFHOUI7UUFEQyxLQUFLLEVBQUU7O2lFQUNvQjtJQUc1QjtRQURDLEtBQUssRUFBRTs7eURBQ1k7SUFHcEI7UUFEQyxLQUFLLEVBQUU7a0NBQ1ksV0FBVztnRUFBTTtJQUdyQztRQURDLEtBQUssRUFBRTs7NERBQ1k7SUFHcEI7UUFEQyxLQUFLLEVBQUU7O3lEQUNrQjtJQUcxQjtRQURDLEtBQUssRUFBRTs7a0VBQ3NCO0lBRzlCO1FBREMsTUFBTSxFQUFFOzt1RUFDOEM7SUFHdkQ7UUFEQyxNQUFNLEVBQUU7OzZEQUNpQztJQUcxQztRQURDLE1BQU0sRUFBRTs7a0VBQzBDO0lBR25EO1FBREMsV0FBVyxDQUFDLGVBQWUsQ0FBQzs7NkRBQ1Q7SUFHcEI7UUFEQyxXQUFXLENBQUMsY0FBYyxDQUFDOzsyREFDVjtJQUdsQjtRQURDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQzs7O2lFQUczQztJQUdEO1FBREMsV0FBVyxDQUFDLDRCQUE0QixDQUFDOzs7K0RBR3pDO0lBR0Q7UUFEQyxXQUFXLENBQUMsc0NBQXNDLENBQUM7Ozt1RUFHbkQ7SUFHRDtRQURDLFdBQVcsQ0FBQyxvQ0FBb0MsQ0FBQzs7O3FFQUdqRDtJQUdEO1FBREMsV0FBVyxDQUFDLGtDQUFrQyxDQUFDOzs7b0VBRy9DO0lBZ0NEO1FBREMsWUFBWSxDQUFDLGNBQWMsQ0FBQzs7OztnRUFHNUI7SUFHRDtRQURDLFlBQVksQ0FBQyxjQUFjLENBQUM7Ozs7aUVBRzVCO0lBR0Q7UUFEQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3lDQUNaLGFBQWE7OzREQWdCcEM7SUFHRDtRQURDLFlBQVksQ0FBQyxNQUFNLENBQUM7Ozs7eURBSXBCO0lBR0Q7UUFEQyxZQUFZLENBQUMsT0FBTyxDQUFDOzs7O2tFQUlyQjtJQTNKUSx1QkFBdUI7UUFKbkMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLFdBQVc7WUFDckIsdUNBQTBDO1NBQzdDLENBQUM7eUNBZ0dtQyxVQUFVO09BL0ZsQyx1QkFBdUIsQ0E4TW5DO0lBQUQsOEJBQUM7Q0FBQSxBQTlNRCxJQThNQztTQTlNWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTbGlkZXJIYW5kbGUgfSBmcm9tICcuLi9zbGlkZXIuY29tbW9uJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LXRodW1iJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RodW1iLXNsaWRlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIElneFNsaWRlclRodW1iQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc1ByZXNzZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIGdldCB0aHVtYlBvc2l0aW9uWCgpIHtcbiAgICAgICAgY29uc3QgdGh1bWJCb3VuZGVyaWVzID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB0aHVtYkNlbnRlciA9ICh0aHVtYkJvdW5kZXJpZXMucmlnaHQgLSB0aHVtYkJvdW5kZXJpZXMubGVmdCkgLyAyO1xuICAgICAgICByZXR1cm4gdGh1bWJCb3VuZGVyaWVzLmxlZnQgKyB0aHVtYkNlbnRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb250aW51b3VzOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGh1bWJMYWJlbFZpc2liaWxpdHlEdXJhdGlvbjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb25QYW46IFN1YmplY3Q8bnVtYmVyPjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN0ZXBEaXN0YW5jZTogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3RlcDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb250ZXh0OiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0eXBlOiBTbGlkZXJIYW5kbGU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkZWFjdGl2ZVN0YXRlOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uVGh1bWJWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25Ib3ZlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgcHVibGljIHRhYmluZGV4ID0gMDtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci56LWluZGV4JylcbiAgICBwdWJsaWMgekluZGV4ID0gMDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNsaWRlcl9fdGh1bWItZnJvbScpXG4gICAgcHVibGljIGdldCB0aHVtYkZyb21DbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLkZST007XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtc2xpZGVyX190aHVtYi10bycpXG4gICAgcHVibGljIGdldCB0aHVtYlRvQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNsaWRlckhhbmRsZS5UTztcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1zbGlkZXJfX3RodW1iLWZyb20tLWFjdGl2ZScpXG4gICAgcHVibGljIGdldCB0aHVtYkZyb21BY3RpdmVDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLkZST00gJiYgdGhpcy5faXNBY3RpdmU7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtc2xpZGVyX190aHVtYi10by0tYWN0aXZlJylcbiAgICBwdWJsaWMgZ2V0IHRodW1iVG9BY3RpdmVDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLlRPICYmIHRoaXMuX2lzQWN0aXZlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNsaWRlcl9fdGh1bWItLXByZXNzZWQnKVxuICAgIHB1YmxpYyBnZXQgdGh1bWJQcmVzc2VkQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQWN0aXZlICYmIHRoaXMuX2lzUHJlc3NlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZXN0cm95KCk6IFN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVzdHJveSQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm9uUGFuXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShtb3VzZVggPT5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRodW1iVmFsdWUobW91c2VYKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3BvaW50ZXJlbnRlcicpXG4gICAgcHVibGljIG9uUGludGVyRW50ZXIoKSB7XG4gICAgICAgIHRoaXMub25Ib3ZlckNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScpXG4gICAgcHVibGljIG9uUG9pbnRlckxlYXZlKCkge1xuICAgICAgICB0aGlzLm9uSG92ZXJDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGluY3JlbWVudCA9IDA7XG4gICAgICAgIGlmIChldmVudC5rZXkuZW5kc1dpdGgoJ0xlZnQnKSkge1xuICAgICAgICAgICAgaW5jcmVtZW50ID0gdGhpcy5zdGVwICogLSAxO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleS5lbmRzV2l0aCgnUmlnaHQnKSkge1xuICAgICAgICAgICAgaW5jcmVtZW50ID0gdGhpcy5zdGVwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KCk7XG4gICAgICAgIHRoaXMub25UaHVtYlZhbHVlQ2hhbmdlLmVtaXQoaW5jcmVtZW50KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgICBwdWJsaWMgb25CbHVyKCkge1xuICAgICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuekluZGV4ID0gMDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gICAgcHVibGljIG9uRm9jdXNMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuekluZGV4ID0gMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRodW1iIGxhYmVsIGFuZCByaXBwbGUuXG4gICAgICovXG4gICAgcHVibGljIHNob3dUaHVtYkluZGljYXRvcnMoKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlVGh1bWJJbmRpY2F0b3JzKHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGUgdGh1bWIgbGFiZWwgYW5kIHJpcHBsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGlkZVRodW1iSW5kaWNhdG9ycygpIHtcbiAgICAgICAgdGhpcy50b2dnbGVUaHVtYkluZGljYXRvcnMoZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVGh1bWJWYWx1ZShtb3VzZVg6IG51bWJlcikge1xuICAgICAgICBjb25zdCB1cGRhdGVWYWx1ZSA9IHRoaXMuY2FsY3VsYXRlVHJhY2tVcGRhdGUobW91c2VYKTtcbiAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmUgJiYgdXBkYXRlVmFsdWUgIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMub25UaHVtYlZhbHVlQ2hhbmdlLmVtaXQodXBkYXRlVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVUcmFja1VwZGF0ZShtb3VzZVg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHNjYWxlWCA9IG1vdXNlWCAtIHRoaXMudGh1bWJQb3NpdGlvblg7XG4gICAgICAgIGNvbnN0IHN0ZXBEaXN0YW5jZUNlbnRlciA9IHRoaXMuc3RlcERpc3RhbmNlIC8gMjtcblxuICAgICAgICAvLyBJZiB0aGUgdGh1bWIgc2NhbGUgcmFuZ2UgKHNsaWRlciB1cGRhdGUpIGlzIGxlc3MgdGjDoG4gYSBoYWxmIHN0ZXAsXG4gICAgICAgIC8vIHRoZSBwb3NpdGlvbiBzdGF5cyB0aGUgc2FtZS5cbiAgICAgICAgY29uc3Qgc2NhbGVYUG9zaXRpdmUgPSBNYXRoLmFicyhzY2FsZVgpO1xuICAgICAgICBpZiAoc2NhbGVYUG9zaXRpdmUgPCBzdGVwRGlzdGFuY2VDZW50ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcFRvUHJvY2VlZChzY2FsZVgsIHRoaXMuc3RlcERpc3RhbmNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0ZXBUb1Byb2NlZWQoc2NhbGVYLCBzdGVwRGlzdCkge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChzY2FsZVggLyBzdGVwRGlzdCkgKiB0aGlzLnN0ZXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b2dnbGVUaHVtYkluZGljYXRvcnModmlzaWJsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9pc1ByZXNzZWQgPSB2aXNpYmxlO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbnRpbnVvdXMgfHwgdGhpcy5kZWFjdGl2ZVN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faXNBY3RpdmUgPSB2aXNpYmxlO1xuICAgICAgICB9XG5cbiAgICB9XG59XG4iXX0=