UNPKG

ng-zorro-antd-mobile

Version:

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

230 lines (229 loc) 16 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ViewEncapsulation, Input, HostBinding } from '@angular/core'; import { zh_CN, en_US } from '../../locale-provider/languages'; /** * @record */ export function PropsType() { } /** @type {?} */ PropsType.prototype.locale; /** @type {?|undefined} */ PropsType.prototype.prefixCls; /** @type {?|undefined} */ PropsType.prototype.pickerPrefixCls; /** @type {?|undefined} */ PropsType.prototype.title; /** @type {?|undefined} */ PropsType.prototype.defaultValue; /** @type {?|undefined} */ PropsType.prototype.value; /** @type {?|undefined} */ PropsType.prototype.onValueChange; /** @type {?|undefined} */ PropsType.prototype.mode; /** @type {?|undefined} */ PropsType.prototype.minDate; /** @type {?|undefined} */ PropsType.prototype.maxDate; /** @type {?|undefined} */ PropsType.prototype.clientHeight; /** @type {?|undefined} */ PropsType.prototype.datePickerViewLocale; var TimePickerComponent = /** @class */ (function () { function TimePickerComponent() { var _this = this; this.defaultProps = /** @type {?} */ ({ minDate: new Date(0, 0, 0, 0, 0), maxDate: new Date(9999, 11, 31, 23, 59, 59), defaultValue: new Date(2000, 1, 1, 8), mode: 'time', datePickerViewLocale: zh_CN }); this.props = /** @type {?} */ ({ minDate: new Date(0, 0, 0, 0, 0), maxDate: new Date(9999, 11, 31, 23, 59, 59), defaultValue: new Date(2000, 1, 1, 8), mode: 'time', datePickerViewLocale: zh_CN }); this.timePicker = true; this.onDateChange = function (date) { var onValueChange = _this.props.onValueChange; onValueChange && onValueChange(date); }; } Object.defineProperty(TimePickerComponent.prototype, "propsData", { set: /** * @param {?} value * @return {?} */ function (value) { this.props = tslib_1.__assign({}, this.props, value); if (this.props.locale && this.props.locale.today === 'Today') { this.props.datePickerViewLocale = en_US; } else { this.props.datePickerViewLocale = zh_CN; } }, enumerable: true, configurable: true }); Object.defineProperty(TimePickerComponent.prototype, "title", { set: /** * @param {?} value * @return {?} */ function (value) { this.props.title = value; }, enumerable: true, configurable: true }); Object.defineProperty(TimePickerComponent.prototype, "value", { set: /** * @param {?} value * @return {?} */ function (value) { this.props.value = value; }, enumerable: true, configurable: true }); Object.defineProperty(TimePickerComponent.prototype, "prefixCls", { set: /** * @param {?} value * @return {?} */ function (value) { this.props.prefixCls = value; }, enumerable: true, configurable: true }); Object.defineProperty(TimePickerComponent.prototype, "defaultValue", { set: /** * @param {?} value * @return {?} */ function (value) { this.props.defaultValue = value; }, enumerable: true, configurable: true }); Object.defineProperty(TimePickerComponent.prototype, "pickerPrefixCls", { set: /** * @param {?} value * @return {?} */ function (value) { this.props.pickerPrefixCls = value; }, enumerable: true, configurable: true }); Object.defineProperty(TimePickerComponent.prototype, "clientHeight", { set: /** * @param {?} value * @return {?} */ function (value) { this.props.clientHeight = value; /** @type {?} */ var height = (value && (value * 3) / 8 - 52) || Number.POSITIVE_INFINITY; this.selfHeight = (height > 164 || height < 0 ? 164 : height) + 'px'; }, enumerable: true, configurable: true }); Object.defineProperty(TimePickerComponent.prototype, "onValueChange", { set: /** * @param {?} value * @return {?} */ function (value) { this.props.onValueChange = value; }, enumerable: true, configurable: true }); /** * @param {?=} date * @return {?} */ TimePickerComponent.prototype.getMinTime = /** * @param {?=} date * @return {?} */ function (date) { /** @type {?} */ var minDate = /** @type {?} */ (this.props.minDate); if (!date || date.getFullYear() > minDate.getFullYear() || date.getMonth() > minDate.getMonth() || date.getDate() > minDate.getDate()) { return this.defaultProps.minDate; } return minDate; }; /** * @param {?=} date * @return {?} */ TimePickerComponent.prototype.getMaxTime = /** * @param {?=} date * @return {?} */ function (date) { /** @type {?} */ var maxDate = /** @type {?} */ (this.props.maxDate); if (!date || date.getFullYear() < maxDate.getFullYear() || date.getMonth() < maxDate.getMonth() || date.getDate() < maxDate.getDate()) { return this.defaultProps.maxDate; } return maxDate; }; TimePickerComponent.decorators = [ { type: Component, args: [{ selector: 'CalendarTimePicker, nzm-calendar-time-picker', template: "<div class=\"title\">{{props.title}}</div>\n<DatePickerView [ngStyle]=\"{height: selfHeight, overflow: 'hidden'}\"\n [mode]=\"props.mode\"\n [value]=\"props.value\"\n [locale]=\"props.datePickerViewLocale\"\n [minDate]=\"getMinTime(props.value || props.defaultValue || undefined)\"\n [maxDate]=\"getMaxTime(props.value || props.defaultValue || undefined)\"\n (onValueChange)=\"onDateChange($event)\"\n></DatePickerView>\n", encapsulation: ViewEncapsulation.None }] } ]; /** @nocollapse */ TimePickerComponent.ctorParameters = function () { return []; }; TimePickerComponent.propDecorators = { propsData: [{ type: Input }], title: [{ type: Input }], value: [{ type: Input }], prefixCls: [{ type: Input }], defaultValue: [{ type: Input }], pickerPrefixCls: [{ type: Input }], clientHeight: [{ type: Input }], onValueChange: [{ type: Input }], timePicker: [{ type: HostBinding, args: ['class.time-picker',] }] }; return TimePickerComponent; }()); export { TimePickerComponent }; if (false) { /** @type {?} */ TimePickerComponent.prototype.defaultProps; /** @type {?} */ TimePickerComponent.prototype.props; /** @type {?} */ TimePickerComponent.prototype.selfHeight; /** @type {?} */ TimePickerComponent.prototype.timePicker; /** @type {?} */ TimePickerComponent.prototype.onDateChange; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbImNhbGVuZGFyL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBd0Y3RDtRQUFBLGlCQUFnQjs4Q0FqRUQ7WUFDYixPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDM0MsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyQyxJQUFJLEVBQUUsTUFBTTtZQUNaLG9CQUFvQixFQUFFLEtBQUs7U0FDZjt1Q0FFTjtZQUNOLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMzQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksRUFBRSxNQUFNO1lBQ1osb0JBQW9CLEVBQUUsS0FBSztTQUNmOzBCQWlEUSxJQUFJOzRCQUlYLFVBQUMsSUFBVTtZQUNoQixJQUFBLHlDQUFhLENBQWdCO1lBQ3JDLGFBQWEsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7S0FMZTtJQS9DaEIsc0JBQ0ksMENBQVM7Ozs7O1FBRGIsVUFDYyxLQUFLO1lBQ2pCLElBQUksQ0FBQyxLQUFLLHdCQUNMLElBQUksQ0FBQyxLQUFLLEVBQ1YsS0FBSyxDQUNULENBQUM7WUFFRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUU7Z0JBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO2FBQ3pDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO2FBQ3pDO1NBQ0Y7OztPQUFBO0lBQ0Qsc0JBQ0ksc0NBQUs7Ozs7O1FBRFQsVUFDVSxLQUFLO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQzFCOzs7T0FBQTtJQUNELHNCQUNJLHNDQUFLOzs7OztRQURULFVBQ1UsS0FBSztZQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUMxQjs7O09BQUE7SUFDRCxzQkFDSSwwQ0FBUzs7Ozs7UUFEYixVQUNjLEtBQUs7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQzlCOzs7T0FBQTtJQUNELHNCQUNJLDZDQUFZOzs7OztRQURoQixVQUNpQixLQUFLO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUNqQzs7O09BQUE7SUFDRCxzQkFDSSxnREFBZTs7Ozs7UUFEbkIsVUFDb0IsS0FBSztZQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7U0FDcEM7OztPQUFBO0lBQ0Qsc0JBQ0ksNkNBQVk7Ozs7O1FBRGhCLFVBQ2lCLEtBQUs7WUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDOztZQUNoQyxJQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDO1lBQzNFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3RFOzs7T0FBQTtJQUNELHNCQUNJLDhDQUFhOzs7OztRQURqQixVQUNrQixLQUFLO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUNsQzs7O09BQUE7Ozs7O0lBWUQsd0NBQVU7Ozs7SUFBVixVQUFXLElBQVc7O1FBQ3BCLElBQU0sT0FBTyxxQkFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQWUsRUFBQztRQUMzQyxJQUNFLENBQUMsSUFBSTtZQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQzFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQ2xDO1lBQ0EsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztTQUNsQztRQUNELE9BQU8sT0FBTyxDQUFDO0tBQ2hCOzs7OztJQUVELHdDQUFVOzs7O0lBQVYsVUFBVyxJQUFXOztRQUNwQixJQUFNLE9BQU8scUJBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFlLEVBQUM7UUFDM0MsSUFDRSxDQUFDLElBQUk7WUFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUMxQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUNsQztZQUNBLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7U0FDbEM7UUFDRCxPQUFPLE9BQU8sQ0FBQztLQUNoQjs7Z0JBdEdGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsOENBQThDO29CQUN4RCwyZ0JBQTBDO29CQUMxQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7Ozs7OzRCQW9CRSxLQUFLO3dCQWFMLEtBQUs7d0JBSUwsS0FBSzs0QkFJTCxLQUFLOytCQUlMLEtBQUs7a0NBSUwsS0FBSzsrQkFJTCxLQUFLO2dDQU1MLEtBQUs7NkJBS0wsV0FBVyxTQUFDLG1CQUFtQjs7OEJBdkZsQzs7U0F3QmEsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuLi9kYXRlL0RhdGFUeXBlcyc7XG5pbXBvcnQgeyB6aF9DTiwgZW5fVVMgfSBmcm9tICcuLi8uLi9sb2NhbGUtcHJvdmlkZXIvbGFuZ3VhZ2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wc1R5cGUge1xuICBsb2NhbGU6IE1vZGVscy5Mb2NhbGU7XG4gIHByZWZpeENscz86IHN0cmluZztcbiAgcGlja2VyUHJlZml4Q2xzPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogRGF0ZTtcbiAgdmFsdWU/OiBEYXRlO1xuICBvblZhbHVlQ2hhbmdlPzogKHRpbWU6IERhdGUpID0+IHZvaWQ7XG4gIG1vZGU/OiBzdHJpbmc7XG4gIG1pbkRhdGU/OiBEYXRlO1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgY2xpZW50SGVpZ2h0PzogbnVtYmVyO1xuICBkYXRlUGlja2VyVmlld0xvY2FsZT86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnQ2FsZW5kYXJUaW1lUGlja2VyLCBuem0tY2FsZW5kYXItdGltZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlckNvbXBvbmVudCB7XG4gIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSgwLCAwLCAwLCAwLCAwKSxcbiAgICBtYXhEYXRlOiBuZXcgRGF0ZSg5OTk5LCAxMSwgMzEsIDIzLCA1OSwgNTkpLFxuICAgIGRlZmF1bHRWYWx1ZTogbmV3IERhdGUoMjAwMCwgMSwgMSwgOCksXG4gICAgbW9kZTogJ3RpbWUnLFxuICAgIGRhdGVQaWNrZXJWaWV3TG9jYWxlOiB6aF9DTlxuICB9IGFzIFByb3BzVHlwZTtcblxuICBwcm9wcyA9IHtcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSgwLCAwLCAwLCAwLCAwKSxcbiAgICBtYXhEYXRlOiBuZXcgRGF0ZSg5OTk5LCAxMSwgMzEsIDIzLCA1OSwgNTkpLFxuICAgIGRlZmF1bHRWYWx1ZTogbmV3IERhdGUoMjAwMCwgMSwgMSwgOCksXG4gICAgbW9kZTogJ3RpbWUnLFxuICAgIGRhdGVQaWNrZXJWaWV3TG9jYWxlOiB6aF9DTlxuICB9IGFzIFByb3BzVHlwZTtcblxuICBzZWxmSGVpZ2h0OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2V0IHByb3BzRGF0YSh2YWx1ZSkge1xuICAgIHRoaXMucHJvcHMgPSB7XG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgICAgLi4udmFsdWVcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMucHJvcHMubG9jYWxlICYmIHRoaXMucHJvcHMubG9jYWxlLnRvZGF5ID09PSAnVG9kYXknKSB7XG4gICAgICB0aGlzLnByb3BzLmRhdGVQaWNrZXJWaWV3TG9jYWxlID0gZW5fVVM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMuZGF0ZVBpY2tlclZpZXdMb2NhbGUgPSB6aF9DTjtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHRpdGxlKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcy50aXRsZSA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMucHJvcHMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgcHJlZml4Q2xzKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcy5wcmVmaXhDbHMgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgZGVmYXVsdFZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcy5kZWZhdWx0VmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgcGlja2VyUHJlZml4Q2xzKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcy5waWNrZXJQcmVmaXhDbHMgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgY2xpZW50SGVpZ2h0KHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcy5jbGllbnRIZWlnaHQgPSB2YWx1ZTtcbiAgICBjb25zdCBoZWlnaHQgPSAodmFsdWUgJiYgKHZhbHVlICogMykgLyA4IC0gNTIpIHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICB0aGlzLnNlbGZIZWlnaHQgPSAoaGVpZ2h0ID4gMTY0IHx8IGhlaWdodCA8IDAgPyAxNjQgOiBoZWlnaHQpICsgJ3B4JztcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgb25WYWx1ZUNoYW5nZSh2YWx1ZSkge1xuICAgIHRoaXMucHJvcHMub25WYWx1ZUNoYW5nZSA9IHZhbHVlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aW1lLXBpY2tlcicpXG4gIHRpbWVQaWNrZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBvbkRhdGVDaGFuZ2UgPSAoZGF0ZTogRGF0ZSkgPT4ge1xuICAgIGNvbnN0IHsgb25WYWx1ZUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcbiAgICBvblZhbHVlQ2hhbmdlICYmIG9uVmFsdWVDaGFuZ2UoZGF0ZSk7XG4gIH1cblxuICBnZXRNaW5UaW1lKGRhdGU/OiBEYXRlKSB7XG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMucHJvcHMubWluRGF0ZSBhcyBEYXRlO1xuICAgIGlmIChcbiAgICAgICFkYXRlIHx8XG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCkgPiBtaW5EYXRlLmdldEZ1bGxZZWFyKCkgfHxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSA+IG1pbkRhdGUuZ2V0TW9udGgoKSB8fFxuICAgICAgZGF0ZS5nZXREYXRlKCkgPiBtaW5EYXRlLmdldERhdGUoKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFByb3BzLm1pbkRhdGU7XG4gICAgfVxuICAgIHJldHVybiBtaW5EYXRlO1xuICB9XG5cbiAgZ2V0TWF4VGltZShkYXRlPzogRGF0ZSkge1xuICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLnByb3BzLm1heERhdGUgYXMgRGF0ZTtcbiAgICBpZiAoXG4gICAgICAhZGF0ZSB8fFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpIDwgbWF4RGF0ZS5nZXRGdWxsWWVhcigpIHx8XG4gICAgICBkYXRlLmdldE1vbnRoKCkgPCBtYXhEYXRlLmdldE1vbnRoKCkgfHxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpIDwgbWF4RGF0ZS5nZXREYXRlKClcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQcm9wcy5tYXhEYXRlO1xuICAgIH1cbiAgICByZXR1cm4gbWF4RGF0ZTtcbiAgfVxufVxuIl19