UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

274 lines (273 loc) 18.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, Input, Output, EventEmitter, HostBinding } from '@angular/core'; export class Stepper { constructor() { this.prefixCls = 'am-stepper'; this._max = Infinity; this._min = -Infinity; this._step = 1; this._disabled = false; this._readOnly = false; this._showNumber = false; this._upDisabled = false; this._downDisabled = false; this._isUpClick = false; this._isDownClick = false; this.onChange = new EventEmitter(); this.clsStepper = true; this.clsStpDisabled = this._disabled; this.clsShowNum = this._showNumber; } /** * @return {?} */ get max() { return this._max; } /** * @param {?} value * @return {?} */ set max(value) { this._max = value; } /** * @return {?} */ get min() { return this._min; } /** * @param {?} value * @return {?} */ set min(value) { this._min = value; } /** * @return {?} */ get value() { return this._value; } /** * @param {?} v * @return {?} */ set value(v) { this._value = v; } /** * @return {?} */ get step() { return this._step; } /** * @param {?} value * @return {?} */ set step(value) { this._step = value; } /** * @param {?} value * @return {?} */ set defaultValue(value) { if (value) { this._defaultValue = value; this._value = value; } } /** * @return {?} */ get disabled() { return this._disabled; } /** * @param {?} value * @return {?} */ set disabled(value) { if (value) { this._disabled = true; this._downDisabled = true; this._upDisabled = true; } this.clsStpDisabled = value; } /** * @return {?} */ get readOnly() { return this._readOnly; } /** * @param {?} value * @return {?} */ set readOnly(value) { this._readOnly = value; } /** * @param {?} value * @return {?} */ set showNumber(value) { this._showNumber = value; this.clsShowNum = value; } /** * @return {?} */ onIncrease() { if (!this._upDisabled) { this._value = this._value + this._step; this.onChange.emit(this._value); if (this._value + this._step > this._max) { this._upDisabled = true; } if (this._value - this._step >= this._min) { this._downDisabled = false; } this._isUpClick = true; this.setCls(); setTimeout(() => { this._isUpClick = false; this.setCls(); }, 100); } } /** * @return {?} */ onDecrease() { if (!this._downDisabled) { this._value = this._value - this._step; this.onChange.emit(this._value); if (this._value - this._step < this._min) { this._downDisabled = true; } if (this._value + this._step <= this._max) { this._upDisabled = false; } this._isDownClick = true; this.setCls(); setTimeout(() => { this._isDownClick = false; this.setCls(); }, 100); } } /** * @param {?} event * @return {?} */ inputChange(event) { /** @type {?} */ const value = event.target.value; this._value = value ? parseInt(value, null) : 0; if (value < this._min) { this._value = this._min; } if (value > this._max) { this._value = this._max; } this.onChange.emit(this._value); } /** * @return {?} */ setCls() { this.upDisableCls = { [`${this.prefixCls}-handler-up-disabled`]: this._upDisabled, [`${this.prefixCls}-handler-active`]: this._isUpClick }; this.downDisableCls = { [`${this.prefixCls}-handler-down-disabled`]: this._downDisabled, [`${this.prefixCls}-handler-active`]: this._isDownClick }; } /** * @return {?} */ ngOnChanges() { if (this._value + this._step > this._max) { this._upDisabled = true; } if (this._value - this._step < this._min) { this._downDisabled = true; } this.setCls(); } } Stepper.decorators = [ { type: Component, args: [{ selector: 'Stepper , nzm-stepper', template: "<div class=\"{{prefixCls}}-handler-wrap\">\n <span role=\"button\"\n class=\"{{prefixCls}}-handler {{prefixCls}}-handler-up\"\n style=\"line-height:28px;\"\n [ngClass]=\"upDisableCls\"\n (click)=\"onIncrease()\">\n <Icon [type]=\"'plus'\"\n [size]=\"'xxs'\">\n </Icon>\n </span>\n <span role=\"button\"\n class=\"{{prefixCls}}-handler {{prefixCls}}-handler-down\"\n style=\"line-height:28px;\"\n [ngClass]=\"downDisableCls\"\n (click)=\"onDecrease()\">\n <Icon [type]=\"'minus'\"\n [size]=\"'xxs'\">\n </Icon>\n </span>\n</div>\n<div class=\"{{prefixCls}}-input-wrap\">\n <input class=\"{{prefixCls}}-input\"\n style=\"outline:none\"\n [disabled]=\"disabled\"\n [readonly]=\"readOnly\"\n [autocomplete]=\"'off'\"\n [max]=\"max\"\n [min]=\"min\"\n [(ngModel)]=\"value\"\n (change)=\"inputChange($event)\">\n</div>" }] } ]; /** @nocollapse */ Stepper.ctorParameters = () => []; Stepper.propDecorators = { max: [{ type: Input }], min: [{ type: Input }], value: [{ type: Input }], step: [{ type: Input }], defaultValue: [{ type: Input }], disabled: [{ type: Input }], readOnly: [{ type: Input }], showNumber: [{ type: Input }], onChange: [{ type: Output }], clsStepper: [{ type: HostBinding, args: ['class.am-stepper',] }], clsStpDisabled: [{ type: HostBinding, args: ['class.am-stepper-disabled',] }], clsShowNum: [{ type: HostBinding, args: ['class.showNumber',] }] }; if (false) { /** @type {?} */ Stepper.prototype.prefixCls; /** @type {?} */ Stepper.prototype.upDisableCls; /** @type {?} */ Stepper.prototype.downDisableCls; /** @type {?} */ Stepper.prototype.stepperCls; /** @type {?} */ Stepper.prototype._max; /** @type {?} */ Stepper.prototype._min; /** @type {?} */ Stepper.prototype._value; /** @type {?} */ Stepper.prototype._step; /** @type {?} */ Stepper.prototype._defaultValue; /** @type {?} */ Stepper.prototype._disabled; /** @type {?} */ Stepper.prototype._readOnly; /** @type {?} */ Stepper.prototype._showNumber; /** @type {?} */ Stepper.prototype._upDisabled; /** @type {?} */ Stepper.prototype._downDisabled; /** @type {?} */ Stepper.prototype._isUpClick; /** @type {?} */ Stepper.prototype._isDownClick; /** @type {?} */ Stepper.prototype.onChange; /** @type {?} */ Stepper.prototype.clsStepper; /** @type {?} */ Stepper.prototype.clsStpDisabled; /** @type {?} */ Stepper.prototype.clsShowNum; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbInN0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTS9GLE1BQU07SUF3Rko7eUJBdkZvQixZQUFZO29CQUtULFFBQVE7b0JBQ1IsQ0FBQyxRQUFRO3FCQUVSLENBQUM7eUJBRUksS0FBSzt5QkFDTCxLQUFLOzJCQUNILEtBQUs7MkJBQ0wsS0FBSzs2QkFDSCxLQUFLOzBCQUNSLEtBQUs7NEJBQ0gsS0FBSzt3QkE4RDFCLElBQUksWUFBWSxFQUFPOzBCQUdaLElBQUk7OEJBRUEsSUFBSSxDQUFDLFNBQVM7MEJBRWxCLElBQUksQ0FBQyxXQUFXO0tBRXRCOzs7O0lBckVoQixJQUNJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7S0FDbEI7Ozs7O0lBQ0QsSUFBSSxHQUFHLENBQUMsS0FBYTtRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztLQUNuQjs7OztJQUNELElBQ0ksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztLQUNsQjs7Ozs7SUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0tBQ25COzs7O0lBQ0QsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0tBQ3BCOzs7OztJQUNELElBQUksS0FBSyxDQUFDLENBQVM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7S0FDakI7Ozs7SUFDRCxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDbkI7Ozs7O0lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSztRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOzs7OztJQUNELElBQ0ksWUFBWSxDQUFDLEtBQUs7UUFDcEIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUNyQjtLQUNGOzs7O0lBQ0QsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0tBQ3ZCOzs7OztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0tBQzdCOzs7O0lBQ0QsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0tBQ3ZCOzs7OztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7S0FDeEI7Ozs7O0lBQ0QsSUFDSSxVQUFVLENBQUMsS0FBYztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztLQUN6Qjs7OztJQWFELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQzthQUM1QjtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNmLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDVDtLQUNGOzs7O0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzthQUMzQjtZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2FBQzFCO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2YsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNUO0tBQ0Y7Ozs7O0lBRUQsV0FBVyxDQUFDLEtBQUs7O1FBQ2YsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN6QjtRQUNELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2pDOzs7O0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLHNCQUFzQixDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDM0QsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDdEQsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLHdCQUF3QixDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDL0QsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDeEQsQ0FBQztLQUNIOzs7O0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzNCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ2Y7OztZQW5LRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsaWlDQUF1QzthQUN4Qzs7Ozs7a0JBb0JFLEtBQUs7a0JBT0wsS0FBSztvQkFPTCxLQUFLO21CQU9MLEtBQUs7MkJBT0wsS0FBSzt1QkFPTCxLQUFLO3VCQVlMLEtBQUs7eUJBT0wsS0FBSzt1QkFLTCxNQUFNO3lCQUdOLFdBQVcsU0FBQyxrQkFBa0I7NkJBRTlCLFdBQVcsU0FBQywyQkFBMkI7eUJBRXZDLFdBQVcsU0FBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdTdGVwcGVyICwgbnptLXN0ZXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcHBlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3RlcHBlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIHByZWZpeENsczogc3RyaW5nID0gJ2FtLXN0ZXBwZXInO1xuICB1cERpc2FibGVDbHM6IG9iamVjdDtcbiAgZG93bkRpc2FibGVDbHM6IG9iamVjdDtcbiAgc3RlcHBlckNsczogb2JqZWN0O1xuXG4gIHByaXZhdGUgX21heDogbnVtYmVyID0gSW5maW5pdHk7XG4gIHByaXZhdGUgX21pbjogbnVtYmVyID0gLUluZmluaXR5O1xuICBwcml2YXRlIF92YWx1ZTogbnVtYmVyO1xuICBwcml2YXRlIF9zdGVwOiBudW1iZXIgPSAxO1xuICBwcml2YXRlIF9kZWZhdWx0VmFsdWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2hvd051bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF91cERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rvd25EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9pc1VwQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXNEb3duQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heDtcbiAgfVxuICBzZXQgbWF4KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXggPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgfVxuICBzZXQgbWluKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9taW4gPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHY6IG51bWJlcikge1xuICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc3RlcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zdGVwO1xuICB9XG4gIHNldCBzdGVwKHZhbHVlKSB7XG4gICAgdGhpcy5fc3RlcCA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBkZWZhdWx0VmFsdWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2Rvd25EaXNhYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLl91cERpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5jbHNTdHBEaXNhYmxlZCA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCByZWFkT25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7XG4gIH1cbiAgc2V0IHJlYWRPbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZE9ubHkgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgc2hvd051bWJlcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dOdW1iZXIgPSB2YWx1ZTtcbiAgICB0aGlzLmNsc1Nob3dOdW0gPSB2YWx1ZTtcbiAgfVxuICBAT3V0cHV0KClcbiAgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFtLXN0ZXBwZXInKVxuICBjbHNTdGVwcGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hbS1zdGVwcGVyLWRpc2FibGVkJylcbiAgY2xzU3RwRGlzYWJsZWQ6IGJvb2xlYW4gPSB0aGlzLl9kaXNhYmxlZDtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zaG93TnVtYmVyJylcbiAgY2xzU2hvd051bTogYm9vbGVhbiA9IHRoaXMuX3Nob3dOdW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG9uSW5jcmVhc2UoKSB7XG4gICAgaWYgKCF0aGlzLl91cERpc2FibGVkKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX3ZhbHVlICsgdGhpcy5fc3RlcDtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgICBpZiAodGhpcy5fdmFsdWUgKyB0aGlzLl9zdGVwID4gdGhpcy5fbWF4KSB7XG4gICAgICAgIHRoaXMuX3VwRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3ZhbHVlIC0gdGhpcy5fc3RlcCA+PSB0aGlzLl9taW4pIHtcbiAgICAgICAgdGhpcy5fZG93bkRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLl9pc1VwQ2xpY2sgPSB0cnVlO1xuICAgICAgdGhpcy5zZXRDbHMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9pc1VwQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXRDbHMoKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgb25EZWNyZWFzZSgpIHtcbiAgICBpZiAoIXRoaXMuX2Rvd25EaXNhYmxlZCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl92YWx1ZSAtIHRoaXMuX3N0ZXA7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICAgICAgaWYgKHRoaXMuX3ZhbHVlIC0gdGhpcy5fc3RlcCA8IHRoaXMuX21pbikge1xuICAgICAgICB0aGlzLl9kb3duRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3ZhbHVlICsgdGhpcy5fc3RlcCA8PSB0aGlzLl9tYXgpIHtcbiAgICAgICAgdGhpcy5fdXBEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5faXNEb3duQ2xpY2sgPSB0cnVlO1xuICAgICAgdGhpcy5zZXRDbHMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9pc0Rvd25DbGljayA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNldENscygpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBpbnB1dENoYW5nZShldmVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWUgPyBwYXJzZUludCh2YWx1ZSwgbnVsbCkgOiAwO1xuICAgIGlmICh2YWx1ZSA8IHRoaXMuX21pbikge1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9taW47XG4gICAgfVxuICAgIGlmICh2YWx1ZSA+IHRoaXMuX21heCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9tYXg7XG4gICAgfVxuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XG4gIH1cblxuICBzZXRDbHMoKSB7XG4gICAgdGhpcy51cERpc2FibGVDbHMgPSB7XG4gICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWhhbmRsZXItdXAtZGlzYWJsZWRgXTogdGhpcy5fdXBEaXNhYmxlZCxcbiAgICAgIFtgJHt0aGlzLnByZWZpeENsc30taGFuZGxlci1hY3RpdmVgXTogdGhpcy5faXNVcENsaWNrXG4gICAgfTtcbiAgICB0aGlzLmRvd25EaXNhYmxlQ2xzID0ge1xuICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1oYW5kbGVyLWRvd24tZGlzYWJsZWRgXTogdGhpcy5fZG93bkRpc2FibGVkLFxuICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1oYW5kbGVyLWFjdGl2ZWBdOiB0aGlzLl9pc0Rvd25DbGlja1xuICAgIH07XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgKyB0aGlzLl9zdGVwID4gdGhpcy5fbWF4KSB7XG4gICAgICB0aGlzLl91cERpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3ZhbHVlIC0gdGhpcy5fc3RlcCA8IHRoaXMuX21pbikge1xuICAgICAgdGhpcy5fZG93bkRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5zZXRDbHMoKTtcbiAgfVxufVxuIl19