UNPKG

ngx-material-timepicker

Version:
177 lines 17.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core'; import { TimePeriod } from '../../models/time-period.enum'; import { TimeUnit } from '../../models/time-unit.enum'; import { DateTime } from 'luxon'; import { disableHours, disableMinutes, getHours, getMinutes } from '../../utils/timepicker-time.utils'; var NgxMaterialTimepickerDialComponent = /** @class */ (function () { function NgxMaterialTimepickerDialComponent() { this.timeUnit = TimeUnit; this.periodChanged = new EventEmitter(); this.timeUnitChanged = new EventEmitter(); this.hourChanged = new EventEmitter(); this.minuteChanged = new EventEmitter(); } /** * @param {?} changes * @return {?} */ NgxMaterialTimepickerDialComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes['period'] && changes['period'].currentValue || changes['format'] && changes['format'].currentValue) { /** @type {?} */ var hours = getHours(this.format); this.hours = disableHours(hours, { min: this.minTime, max: this.maxTime, format: this.format, period: this.period }); } if (changes['period'] && changes['period'].currentValue || changes['hour'] && changes['hour'].currentValue) { /** @type {?} */ var minutes = getMinutes(this.minutesGap); this.minutes = disableMinutes(minutes, +this.hour, { min: this.minTime, max: this.maxTime, format: this.format, period: this.period }); } }; /** * @param {?} unit * @return {?} */ NgxMaterialTimepickerDialComponent.prototype.changeTimeUnit = /** * @param {?} unit * @return {?} */ function (unit) { this.timeUnitChanged.next(unit); }; /** * @param {?} period * @return {?} */ NgxMaterialTimepickerDialComponent.prototype.changePeriod = /** * @param {?} period * @return {?} */ function (period) { this.periodChanged.next(period); }; /** * @param {?} hour * @return {?} */ NgxMaterialTimepickerDialComponent.prototype.changeHour = /** * @param {?} hour * @return {?} */ function (hour) { this.hourChanged.next(hour); }; /** * @param {?} minute * @return {?} */ NgxMaterialTimepickerDialComponent.prototype.changeMinute = /** * @param {?} minute * @return {?} */ function (minute) { this.minuteChanged.next(minute); }; /** * @return {?} */ NgxMaterialTimepickerDialComponent.prototype.showHint = /** * @return {?} */ function () { this.isHintVisible = true; }; /** * @return {?} */ NgxMaterialTimepickerDialComponent.prototype.hideHint = /** * @return {?} */ function () { this.isHintVisible = false; }; NgxMaterialTimepickerDialComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-material-timepicker-dial', template: "<div class=\"timepicker-dial\">\n <div class=\"timepicker-dial__container\">\n <div class=\"timepicker-dial__time\">\n <ngx-material-timepicker-dial-control [timeList]=\"hours\" [time]=\"hour\" [timeUnit]=\"timeUnit.HOUR\"\n [isActive]=\"activeTimeUnit === timeUnit.HOUR\"\n [isEditable]=\"isEditable\"\n (timeUnitChanged)=\"changeTimeUnit($event)\"\n (timeChanged)=\"changeHour($event)\"\n (focused)=\"showHint()\"\n (unfocused)=\"hideHint()\">\n\n </ngx-material-timepicker-dial-control>\n <span>:</span>\n <ngx-material-timepicker-dial-control [timeList]=\"minutes\" [time]=\"minute\" [timeUnit]=\"timeUnit.MINUTE\"\n [isActive]=\"activeTimeUnit === timeUnit.MINUTE\"\n [isEditable]=\"isEditable\"\n [minutesGap]=\"minutesGap\"\n (timeUnitChanged)=\"changeTimeUnit($event)\"\n (timeChanged)=\"changeMinute($event)\"\n (focused)=\"showHint()\"\n (unfocused)=\"hideHint()\">\n\n </ngx-material-timepicker-dial-control>\n </div>\n <ngx-material-timepicker-period class=\"timepicker-dial__period\"\n [ngClass]=\"{'timepicker-dial__period--hidden': format === 24}\"\n [selectedPeriod]=\"period\" [activeTimeUnit]=\"activeTimeUnit\"\n [maxTime]=\"maxTime\" [minTime]=\"minTime\" [format]=\"format\"\n [hours]=\"hours\" [minutes]=\"minutes\" [selectedHour]=\"hour\"\n (periodChanged)=\"changePeriod($event)\"></ngx-material-timepicker-period>\n </div>\n <div *ngIf=\"isEditable\" [ngClass]=\"{'timepicker-dial__hint-container--hidden': !isHintVisible}\">\n <!--suppress HtmlUnknownAttribute -->\n <ng-container *ngTemplateOutlet=\"editableHintTmpl ? editableHintTmpl : editableHintDefault\"></ng-container>\n <ng-template #editableHintDefault>\n <small class=\"timepicker-dial__hint\"> * use arrows (<span>&#8645;</span>) to change the time</small>\n </ng-template>\n </div>\n</div>\n", changeDetection: ChangeDetectionStrategy.OnPush, styles: [".timepicker-dial{text-align:right}.timepicker-dial__container{display:flex;align-items:center;justify-content:flex-end;-webkit-tap-highlight-color:transparent}.timepicker-dial__time{display:flex;align-items:baseline;line-height:normal;font-size:50px;color:rgba(255,255,255,.5);font-family:Roboto,sans-serif}@supports (font-family:var(--primary-font-family)){.timepicker-dial__time{font-family:var(--primary-font-family);color:var(--dial-inactive-color)}}.timepicker-dial__period{display:block;margin-left:10px}.timepicker-dial__hint-container--hidden,.timepicker-dial__period--hidden{visibility:hidden}.timepicker-dial__hint{display:inline-block;font-size:10px;color:#fff}@supports (color:var(--dial-active-color)){.timepicker-dial__hint{color:var(--dial-active-color)}}.timepicker-dial__hint span{font-size:14px}@media (max-device-width:1023px) and (orientation:landscape){.timepicker-dial__container{flex-direction:column}.timepicker-dial__period{margin-left:0}}"] }] } ]; NgxMaterialTimepickerDialComponent.propDecorators = { editableHintTmpl: [{ type: Input }], hour: [{ type: Input }], minute: [{ type: Input }], format: [{ type: Input }], period: [{ type: Input }], activeTimeUnit: [{ type: Input }], minTime: [{ type: Input }], maxTime: [{ type: Input }], isEditable: [{ type: Input }], minutesGap: [{ type: Input }], periodChanged: [{ type: Output }], timeUnitChanged: [{ type: Output }], hourChanged: [{ type: Output }], minuteChanged: [{ type: Output }] }; return NgxMaterialTimepickerDialComponent; }()); export { NgxMaterialTimepickerDialComponent }; if (false) { /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.timeUnit; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.hours; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.minutes; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.isHintVisible; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.editableHintTmpl; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.hour; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.minute; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.format; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.period; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.activeTimeUnit; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.minTime; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.maxTime; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.isEditable; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.minutesGap; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.periodChanged; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.timeUnitChanged; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.hourChanged; /** @type {?} */ NgxMaterialTimepickerDialComponent.prototype.minuteChanged; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdGVyaWFsLXRpbWVwaWNrZXItZGlhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtbWF0ZXJpYWwtdGltZXBpY2tlci8iLCJzb3VyY2VzIjpbInNyYy9hcHAvbWF0ZXJpYWwtdGltZXBpY2tlci9jb21wb25lbnRzL3RpbWVwaWNrZXItZGlhbC9uZ3gtbWF0ZXJpYWwtdGltZXBpY2tlci1kaWFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdkc7SUFBQTtRQVFJLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFrQlYsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQy9DLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUMvQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ2hELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFrRGhFLENBQUM7Ozs7O0lBaERHLHdEQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWTtlQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRTs7Z0JBQ2xELEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUVuQyxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUU7Z0JBQzdCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTthQUN0QixDQUFDLENBQUM7U0FDTjtRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZO2VBQ2hELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFOztnQkFDOUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBRTNDLElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQy9DLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTthQUN0QixDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7Ozs7O0lBRUQsMkRBQWM7Ozs7SUFBZCxVQUFlLElBQWM7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7Ozs7SUFFRCx5REFBWTs7OztJQUFaLFVBQWEsTUFBa0I7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7Ozs7SUFFRCx1REFBVTs7OztJQUFWLFVBQVcsSUFBbUI7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7Ozs7SUFFRCx5REFBWTs7OztJQUFaLFVBQWEsTUFBcUI7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7OztJQUVELHFEQUFROzs7SUFBUjtRQUNJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7Ozs7SUFFRCxxREFBUTs7O0lBQVI7UUFDSSxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDOztnQkE5RUosU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLCtyRkFBMEQ7b0JBRTFELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztpQkFDbEQ7OzttQ0FVSSxLQUFLO3VCQUNMLEtBQUs7eUJBQ0wsS0FBSzt5QkFDTCxLQUFLO3lCQUNMLEtBQUs7aUNBQ0wsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUs7NkJBQ0wsS0FBSzs2QkFDTCxLQUFLO2dDQUVMLE1BQU07a0NBQ04sTUFBTTs4QkFDTixNQUFNO2dDQUNOLE1BQU07O0lBa0RYLHlDQUFDO0NBQUEsQUEvRUQsSUErRUM7U0F6RVksa0NBQWtDOzs7SUFFM0Msc0RBQW9COztJQUVwQixtREFBdUI7O0lBQ3ZCLHFEQUF5Qjs7SUFFekIsMkRBQXVCOztJQUV2Qiw4REFBNkM7O0lBQzdDLGtEQUErQjs7SUFDL0Isb0RBQWlDOztJQUNqQyxvREFBd0I7O0lBQ3hCLG9EQUE0Qjs7SUFDNUIsNERBQWtDOztJQUNsQyxxREFBMkI7O0lBQzNCLHFEQUEyQjs7SUFDM0Isd0RBQTZCOztJQUM3Qix3REFBNEI7O0lBRTVCLDJEQUF5RDs7SUFDekQsNkRBQXlEOztJQUN6RCx5REFBMEQ7O0lBQzFELDJEQUE0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGltZVBlcmlvZCB9IGZyb20gJy4uLy4uL21vZGVscy90aW1lLXBlcmlvZC5lbnVtJztcbmltcG9ydCB7IFRpbWVVbml0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RpbWUtdW5pdC5lbnVtJztcbmltcG9ydCB7IENsb2NrRmFjZVRpbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xvY2stZmFjZS10aW1lLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJztcbmltcG9ydCB7IGRpc2FibGVIb3VycywgZGlzYWJsZU1pbnV0ZXMsIGdldEhvdXJzLCBnZXRNaW51dGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdGltZXBpY2tlci10aW1lLnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0ZXJpYWwtdGltZXBpY2tlci1kaWFsJyxcbiAgICB0ZW1wbGF0ZVVybDogJ25neC1tYXRlcmlhbC10aW1lcGlja2VyLWRpYWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWyduZ3gtbWF0ZXJpYWwtdGltZXBpY2tlci1kaWFsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTmd4TWF0ZXJpYWxUaW1lcGlja2VyRGlhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgICB0aW1lVW5pdCA9IFRpbWVVbml0O1xuXG4gICAgaG91cnM6IENsb2NrRmFjZVRpbWVbXTtcbiAgICBtaW51dGVzOiBDbG9ja0ZhY2VUaW1lW107XG5cbiAgICBpc0hpbnRWaXNpYmxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZWRpdGFibGVIaW50VG1wbDogVGVtcGxhdGVSZWY8Tm9kZT47XG4gICAgQElucHV0KCkgaG91cjogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1pbnV0ZTogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZvcm1hdDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHBlcmlvZDogVGltZVBlcmlvZDtcbiAgICBASW5wdXQoKSBhY3RpdmVUaW1lVW5pdDogVGltZVVuaXQ7XG4gICAgQElucHV0KCkgbWluVGltZTogRGF0ZVRpbWU7XG4gICAgQElucHV0KCkgbWF4VGltZTogRGF0ZVRpbWU7XG4gICAgQElucHV0KCkgaXNFZGl0YWJsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBtaW51dGVzR2FwOiBudW1iZXI7XG5cbiAgICBAT3V0cHV0KCkgcGVyaW9kQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGltZVBlcmlvZD4oKTtcbiAgICBAT3V0cHV0KCkgdGltZVVuaXRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUaW1lVW5pdD4oKTtcbiAgICBAT3V0cHV0KCkgaG91ckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENsb2NrRmFjZVRpbWU+KCk7XG4gICAgQE91dHB1dCgpIG1pbnV0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENsb2NrRmFjZVRpbWU+KCk7XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydwZXJpb2QnXSAmJiBjaGFuZ2VzWydwZXJpb2QnXS5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgIHx8IGNoYW5nZXNbJ2Zvcm1hdCddICYmIGNoYW5nZXNbJ2Zvcm1hdCddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgaG91cnMgPSBnZXRIb3Vycyh0aGlzLmZvcm1hdCk7XG5cbiAgICAgICAgICAgIHRoaXMuaG91cnMgPSBkaXNhYmxlSG91cnMoaG91cnMsIHtcbiAgICAgICAgICAgICAgICBtaW46IHRoaXMubWluVGltZSxcbiAgICAgICAgICAgICAgICBtYXg6IHRoaXMubWF4VGltZSxcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMuZm9ybWF0LFxuICAgICAgICAgICAgICAgIHBlcmlvZDogdGhpcy5wZXJpb2RcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydwZXJpb2QnXSAmJiBjaGFuZ2VzWydwZXJpb2QnXS5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgIHx8IGNoYW5nZXNbJ2hvdXInXSAmJiBjaGFuZ2VzWydob3VyJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBtaW51dGVzID0gZ2V0TWludXRlcyh0aGlzLm1pbnV0ZXNHYXApO1xuXG4gICAgICAgICAgICB0aGlzLm1pbnV0ZXMgPSBkaXNhYmxlTWludXRlcyhtaW51dGVzLCArdGhpcy5ob3VyLCB7XG4gICAgICAgICAgICAgICAgbWluOiB0aGlzLm1pblRpbWUsXG4gICAgICAgICAgICAgICAgbWF4OiB0aGlzLm1heFRpbWUsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLmZvcm1hdCxcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IHRoaXMucGVyaW9kXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZVRpbWVVbml0KHVuaXQ6IFRpbWVVbml0KTogdm9pZCB7XG4gICAgICAgIHRoaXMudGltZVVuaXRDaGFuZ2VkLm5leHQodW5pdCk7XG4gICAgfVxuXG4gICAgY2hhbmdlUGVyaW9kKHBlcmlvZDogVGltZVBlcmlvZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBlcmlvZENoYW5nZWQubmV4dChwZXJpb2QpO1xuICAgIH1cblxuICAgIGNoYW5nZUhvdXIoaG91cjogQ2xvY2tGYWNlVGltZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdXJDaGFuZ2VkLm5leHQoaG91cik7XG4gICAgfVxuXG4gICAgY2hhbmdlTWludXRlKG1pbnV0ZTogQ2xvY2tGYWNlVGltZSk6IHZvaWQge1xuICAgICAgICB0aGlzLm1pbnV0ZUNoYW5nZWQubmV4dChtaW51dGUpO1xuICAgIH1cblxuICAgIHNob3dIaW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzSGludFZpc2libGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGhpZGVIaW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzSGludFZpc2libGUgPSBmYWxzZTtcbiAgICB9XG59XG4iXX0=