ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
521 lines • 27.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, Output, EventEmitter, ElementRef, ViewEncapsulation, HostBinding, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
var SliderComponent = /** @class */ (function () {
function SliderComponent(_elf) {
this._elf = _elf;
this.prefixCls = 'am-slider';
this.offset = 0;
this.length = 0;
this._min = 0;
this._max = 100;
this._step = 1;
this._defaultValue = 0;
this._disabled = false;
this._marks = {};
this._dots = false;
this._included = true;
this._trackStyle = {};
this.onAfterChange = new EventEmitter();
this.onChange = new EventEmitter();
this.amSliderWrapper = true;
this._ngModelOnChange = (/**
* @return {?}
*/
function () { });
this._ngModelOnTouched = (/**
* @return {?}
*/
function () { });
}
Object.defineProperty(SliderComponent.prototype, "min", {
get: /**
* @return {?}
*/
function () {
return this._min;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._min = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "max", {
get: /**
* @return {?}
*/
function () {
return this._max;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._max = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "step", {
get: /**
* @return {?}
*/
function () {
return this._step;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._step = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "value", {
get: /**
* @return {?}
*/
function () {
return this._value;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.setValue(value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "defaultValue", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._defaultValue = value;
this.setValue(value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "disabled", {
get: /**
* @return {?}
*/
function () {
return this._disabled;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._disabled = value;
this.setCls();
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "marks", {
get: /**
* @return {?}
*/
function () {
return this._marks;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._marks = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "dots", {
get: /**
* @return {?}
*/
function () {
return this._dots;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._dots = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "included", {
get: /**
* @return {?}
*/
function () {
return this._included;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._included = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "handleStyle", {
get: /**
* @return {?}
*/
function () {
return this._handleStyle;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._handleStyle = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "trackStyle", {
get: /**
* @return {?}
*/
function () {
return this._trackStyle;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._trackStyle = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderComponent.prototype, "railStyle", {
get: /**
* @return {?}
*/
function () {
return this._railStyle;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._railStyle = value;
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
SliderComponent.prototype.setCls = /**
* @return {?}
*/
function () {
var _a;
this.sliderCls = (_a = {},
_a[this.prefixCls + "-disabled"] = this._disabled,
_a);
};
/**
* @param {?} e
* @return {?}
*/
SliderComponent.prototype.handleChange = /**
* @param {?} e
* @return {?}
*/
function (e) {
var _this = this;
setTimeout((/**
* @return {?}
*/
function () {
_this.setTrack(e);
_this._value = e;
}), 10);
this.onChange.emit(e);
this._ngModelOnChange(e);
};
/**
* @param {?} e
* @return {?}
*/
SliderComponent.prototype.handleAfterChange = /**
* @param {?} e
* @return {?}
*/
function (e) {
var _this = this;
setTimeout((/**
* @return {?}
*/
function () {
_this.setTrack(e);
_this._value = e;
}), 10);
this.onAfterChange.emit(e);
};
/**
* @return {?}
*/
SliderComponent.prototype.valueRange = /**
* @return {?}
*/
function () {
if (this._value < this._min) {
this._value = this._min;
}
if (this._value > this._max) {
this._value = this._max;
}
};
/**
* @return {?}
*/
SliderComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.setCls();
this.setValue(this._value);
/** @type {?} */
var sliderCoords = this._elf.nativeElement.getElementsByClassName('am-slider')[0].getBoundingClientRect();
this.sliderLength = sliderCoords.width;
this.sliderStart = sliderCoords.left;
};
/**
* @param {?} value
* @return {?}
*/
SliderComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.setValue(value, true);
};
/**
* @param {?} value
* @param {?=} isWriteValue
* @return {?}
*/
SliderComponent.prototype.setValue = /**
* @param {?} value
* @param {?=} isWriteValue
* @return {?}
*/
function (value, isWriteValue) {
if (isWriteValue === void 0) { isWriteValue = false; }
if (value === 0 || value) {
this._value = value;
}
else {
this._value = this._defaultValue;
}
this.valueRange();
this.setTrack(this._value);
if (isWriteValue) {
this._ngModelOnChange(this._value);
}
else {
this.onAfterChange.emit(this._value);
}
};
/**
* @param {?} e
* @return {?}
*/
SliderComponent.prototype.setTrack = /**
* @param {?} e
* @return {?}
*/
function (e) {
this.offset = 0;
this.length = ((e - this._min) * 100) / (this._max - this._min);
};
/**
* @param {?} fn
* @return {?}
*/
SliderComponent.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._ngModelOnChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
SliderComponent.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._ngModelOnTouched = fn;
};
SliderComponent.decorators = [
{ type: Component, args: [{
selector: 'Slider , nzm-slider',
template: "<div class=\"am-slider\" [ngClass]=\"sliderCls\">\n <div class=\"am-slider-rail\" [ngStyle]=\"railStyle\"></div>\n <SliderTrack\n [className]=\"'am-slider-track'\"\n [style]=\"trackStyle\"\n [offset]=\"offset\"\n [length]=\"length\"\n [included]=\"included\"\n ></SliderTrack>\n <SliderSteps\n [max]=\"max\"\n [min]=\"min\"\n [dots]=\"dots\"\n [step]=\"step\"\n [marks]=\"marks\"\n [lowerBound]=\"min\"\n [upperBound]=\"value\"\n [included]=\"included\"\n ></SliderSteps>\n <SliderHandle\n [max]=\"max\"\n [min]=\"min\"\n [value]=\"value\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [handleStyle]=\"handleStyle\"\n [sliderStart]=\"sliderStart\"\n [sliderLength]=\"sliderLength\"\n (onChange)=\"handleChange($event)\"\n (onAfterChange)=\"handleAfterChange($event)\"\n ></SliderHandle>\n <SliderMarks\n [max]=\"max\"\n [min]=\"min\"\n [marks]=\"marks\"\n [lowerBound]=\"min\"\n [upperBound]=\"value\"\n [included]=\"included\"\n ></SliderMarks>\n</div>\n",
encapsulation: ViewEncapsulation.None,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
function () { return SliderComponent; })),
multi: true
}
]
}] }
];
/** @nocollapse */
SliderComponent.ctorParameters = function () { return [
{ type: ElementRef }
]; };
SliderComponent.propDecorators = {
min: [{ type: Input }],
max: [{ type: Input }],
step: [{ type: Input }],
value: [{ type: Input }],
defaultValue: [{ type: Input }],
disabled: [{ type: Input }],
marks: [{ type: Input }],
dots: [{ type: Input }],
included: [{ type: Input }],
handleStyle: [{ type: Input }],
trackStyle: [{ type: Input }],
railStyle: [{ type: Input }],
onAfterChange: [{ type: Output }],
onChange: [{ type: Output }],
amSliderWrapper: [{ type: HostBinding, args: ['class.am-slider-wrapper',] }]
};
return SliderComponent;
}());
export { SliderComponent };
if (false) {
/** @type {?} */
SliderComponent.prototype.prefixCls;
/** @type {?} */
SliderComponent.prototype.sliderLength;
/** @type {?} */
SliderComponent.prototype.sliderStart;
/** @type {?} */
SliderComponent.prototype.sliderCls;
/** @type {?} */
SliderComponent.prototype.offset;
/** @type {?} */
SliderComponent.prototype.length;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._min;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._max;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._step;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._value;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._defaultValue;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._disabled;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._marks;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._dots;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._included;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._handleStyle;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._trackStyle;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._railStyle;
/** @type {?} */
SliderComponent.prototype.onAfterChange;
/** @type {?} */
SliderComponent.prototype.onChange;
/** @type {?} */
SliderComponent.prototype.amSliderWrapper;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._ngModelOnChange;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._ngModelOnTouched;
/**
* @type {?}
* @private
*/
SliderComponent.prototype._elf;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsic2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxFQUNWLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RTtJQWdJRSx5QkFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQW5IcEMsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUl4QixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFFWCxTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ2pCLFNBQUksR0FBVyxHQUFHLENBQUM7UUFDbkIsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUVsQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBRTFCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBd0ZqQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFeEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFHbkMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFeEIscUJBQWdCOzs7UUFBNEIsY0FBTyxDQUFDLEVBQUM7UUFDckQsc0JBQWlCOzs7UUFBNEIsY0FBTyxDQUFDLEVBQUM7SUFFdkIsQ0FBQztJQS9GeEMsc0JBQ0ksZ0NBQUc7Ozs7UUFEUDtZQUVFLE9BQU8sSUFB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OztJQUNqQyxxQ0FBMkI7O0lBc0YzQix3Q0FDd0M7O0lBQ3hDLG1DQUNtQzs7SUFFbkMsMENBQ2dDOzs7OztJQUVoQywyQ0FBNkQ7Ozs7O0lBQzdELDRDQUE4RDs7Ozs7SUFFbEQsK0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgRWxlbWVudFJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEhvc3RCaW5kaW5nLFxuICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdTbGlkZXIgLCBuem0tc2xpZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2xpZGVyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcmVmaXhDbHMgPSAnYW0tc2xpZGVyJztcbiAgc2xpZGVyTGVuZ3RoOiBudW1iZXI7XG4gIHNsaWRlclN0YXJ0OiBudW1iZXI7XG4gIHNsaWRlckNsczogb2JqZWN0O1xuICBvZmZzZXQ6IG51bWJlciA9IDA7XG4gIGxlbmd0aDogbnVtYmVyID0gMDtcblxuICBwcml2YXRlIF9taW46IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX21heDogbnVtYmVyID0gMTAwO1xuICBwcml2YXRlIF9zdGVwOiBudW1iZXIgPSAxO1xuICBwcml2YXRlIF92YWx1ZTogbnVtYmVyO1xuICBwcml2YXRlIF9kZWZhdWx0VmFsdWU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX21hcmtzOiBvYmplY3QgPSB7fTtcbiAgcHJpdmF0ZSBfZG90czogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9pbmNsdWRlZDogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgX2hhbmRsZVN0eWxlOiBvYmplY3Q7XG4gIHByaXZhdGUgX3RyYWNrU3R5bGU6IG9iamVjdCA9IHt9O1xuICBwcml2YXRlIF9yYWlsU3R5bGU6IG9iamVjdDtcblxuICBASW5wdXQoKVxuICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgfVxuICBzZXQgbWluKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9taW4gPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heDtcbiAgfVxuICBzZXQgbWF4KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXggPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc3RlcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zdGVwO1xuICB9XG4gIHNldCBzdGVwKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGVwID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGRlZmF1bHRWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLnNldENscygpO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBtYXJrcygpOiBvYmplY3Qge1xuICAgIHJldHVybiB0aGlzLl9tYXJrcztcbiAgfVxuICBzZXQgbWFya3ModmFsdWU6IG9iamVjdCkge1xuICAgIHRoaXMuX21hcmtzID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGRvdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RvdHM7XG4gIH1cbiAgc2V0IGRvdHModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kb3RzID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGluY2x1ZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbmNsdWRlZDtcbiAgfVxuICBzZXQgaW5jbHVkZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmNsdWRlZCA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBoYW5kbGVTdHlsZSgpOiBvYmplY3Qge1xuICAgIHJldHVybiB0aGlzLl9oYW5kbGVTdHlsZTtcbiAgfVxuICBzZXQgaGFuZGxlU3R5bGUodmFsdWU6IG9iamVjdCkge1xuICAgIHRoaXMuX2hhbmRsZVN0eWxlID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IHRyYWNrU3R5bGUoKTogb2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5fdHJhY2tTdHlsZTtcbiAgfVxuICBzZXQgdHJhY2tTdHlsZSh2YWx1ZTogb2JqZWN0KSB7XG4gICAgdGhpcy5fdHJhY2tTdHlsZSA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCByYWlsU3R5bGUoKTogb2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5fcmFpbFN0eWxlO1xuICB9XG4gIHNldCByYWlsU3R5bGUodmFsdWU6IG9iamVjdCkge1xuICAgIHRoaXMuX3JhaWxTdHlsZSA9IHZhbHVlO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIG9uQWZ0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hbS1zbGlkZXItd3JhcHBlcicpXG4gIGFtU2xpZGVyV3JhcHBlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfbmdNb2RlbE9uQ2hhbmdlOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9uZ01vZGVsT25Ub3VjaGVkOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZjogRWxlbWVudFJlZikge31cblxuICBzZXRDbHMoKSB7XG4gICAgdGhpcy5zbGlkZXJDbHMgPSB7XG4gICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWRpc2FibGVkYF06IHRoaXMuX2Rpc2FibGVkXG4gICAgfTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZShlKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFRyYWNrKGUpO1xuICAgICAgdGhpcy5fdmFsdWUgPSBlO1xuICAgIH0sIDEwKTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoZSk7XG4gICAgdGhpcy5fbmdNb2RlbE9uQ2hhbmdlKGUpO1xuICB9XG5cbiAgaGFuZGxlQWZ0ZXJDaGFuZ2UoZSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRUcmFjayhlKTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gZTtcbiAgICB9LCAxMCk7XG4gICAgdGhpcy5vbkFmdGVyQ2hhbmdlLmVtaXQoZSk7XG4gIH1cblxuICB2YWx1ZVJhbmdlKCkge1xuICAgIGlmICh0aGlzLl92YWx1ZSA8IHRoaXMuX21pbikge1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9taW47XG4gICAgfVxuICAgIGlmICh0aGlzLl92YWx1ZSA+IHRoaXMuX21heCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9tYXg7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRDbHMoKTtcbiAgICB0aGlzLnNldFZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICBjb25zdCBzbGlkZXJDb29yZHMgPSB0aGlzLl9lbGYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhbS1zbGlkZXInKVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0aGlzLnNsaWRlckxlbmd0aCA9IHNsaWRlckNvb3Jkcy53aWR0aDtcbiAgICB0aGlzLnNsaWRlclN0YXJ0ID0gc2xpZGVyQ29vcmRzLmxlZnQ7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlLCB0cnVlKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBudW1iZXIsIGlzV3JpdGVWYWx1ZSA9IGZhbHNlKSB7XG4gICAgaWYgKHZhbHVlID09PSAwIHx8IHZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2RlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZVJhbmdlKCk7XG4gICAgdGhpcy5zZXRUcmFjayh0aGlzLl92YWx1ZSk7XG4gICAgaWYgKGlzV3JpdGVWYWx1ZSkge1xuICAgICAgdGhpcy5fbmdNb2RlbE9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbkFmdGVyQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldFRyYWNrKGUpIHtcbiAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgdGhpcy5sZW5ndGggPSAoKGUgLSB0aGlzLl9taW4pICogMTAwKSAvICh0aGlzLl9tYXggLSB0aGlzLl9taW4pO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9uZ01vZGVsT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX25nTW9kZWxPblRvdWNoZWQgPSBmbjtcbiAgfVxufVxuIl19