UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

1,339 lines (1,338 loc) 107 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core'; import { AbstractDateTimePicker } from './AbstractDateTimePicker'; import { NeedFocusService } from '../../../service/NeedFocusService.service'; import { DateFormatter } from '../../../share/formatter/DateFormatter'; import { ValidationStatus } from '../../../component/validate/ValidationStatus'; import { FormatterFactory } from '../../../service/FormatterFactory.service'; import { Option } from '../../../decorator/Option.decorator'; import { I18N } from '../../../decorator/I18N.decorator'; import { PhloxAppInfoService } from '../../../service/PhloxAppInfoService.service'; var /** @type {?} */ TYPE_NAME = "phx-time-picker"; var /** @type {?} */ DEFAULT_RANGE = 2; var /** @type {?} */ GAP_HEIGHT = 2; var /** @type {?} */ GAP_TIME_HEIGHT = 5; var /** @type {?} */ HOUR = "HOUR"; var /** @type {?} */ MIN = "MIN"; var /** @type {?} */ SEC = "SEC"; var /** @type {?} */ DEFAULT_SHOW_SECOND_DATA_PATTERN = "HH:mm:ss"; var /** @type {?} */ DEFAULT_HIDE_SECOND_DATA_PATTERN = "HH:mm"; var TimePicker = /** @class */ (function (_super) { tslib_1.__extends(TimePicker, _super); function TimePicker(elementRef, needFocusService, formatterFactory, phloxAppInfoService) { var _this = _super.call(this, elementRef, formatterFactory, phloxAppInfoService, needFocusService) || this; _this.HOUR = HOUR; _this.MIN = MIN; _this.SEC = SEC; _this.active = false; _this._isItemClick = false; _this.rangeHour = []; _this.rangeMin = []; _this.rangeSec = []; return _this; } Object.defineProperty(TimePicker.prototype, "hideSecond", { get: /** * @return {?} */ function () { return this.isHideSecond(); }, set: /** * @param {?} hide * @return {?} */ function (hide) { this.setHideSecond(hide); }, enumerable: true, configurable: true }); /** * @return {?} */ TimePicker.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); if (this.range === null || this.range === undefined) { this.range = DEFAULT_RANGE; } }; /** * @param {?} localDate * @return {?} */ TimePicker.prototype.updateSelectedDateLocal = /** * @param {?} localDate * @return {?} */ function (localDate) { if (localDate === null || typeof localDate === 'undefined') { localDate = new Date(); } this.updateSelectedTimeLocal(localDate.getHours(), localDate.getMinutes(), localDate.getSeconds()); }; /** * @param {?} hour * @param {?} min * @param {?} sec * @return {?} */ TimePicker.prototype.updateSelectedTimeLocal = /** * @param {?} hour * @param {?} min * @param {?} sec * @return {?} */ function (hour, min, sec) { var /** @type {?} */ selectedDate = this.getSelectedDate(); var /** @type {?} */ tzDiff = this.getTimeZoneDiff(selectedDate); var /** @type {?} */ tzDiffHours = Math.floor(tzDiff / 100); var /** @type {?} */ tzDiffMins = tzDiff % 100; if (typeof hour === 'number') { selectedDate.setHours(hour + tzDiffHours); } if (typeof min === 'number') { selectedDate.setMinutes(min + tzDiffMins); } if (typeof sec === 'number') { selectedDate.setSeconds(sec); } this.setDate(selectedDate); }; /** * @return {?} */ TimePicker.prototype.updateUI = /** * @return {?} */ function () { var /** @type {?} */ selectedDate = this.getSelectedDate(); var /** @type {?} */ tzDiff = this.getTimeZoneDiff(selectedDate); var /** @type {?} */ tzDiffHours = Math.floor(tzDiff / 100); var /** @type {?} */ tzDiffMins = tzDiff % 100; // Update hour this.selectedHour = selectedDate.getHours() - tzDiffHours; if (this.selectedHour < 0) { this.selectedHour += 24; } // Update min this.selectedMin = selectedDate.getMinutes() - tzDiffMins; if (this.selectedMin < 0) { this.selectedMin += 60; } // Update sec this.selectedSec = selectedDate.getSeconds(); // Update new calculated selected hour, min & sec to UI. this.calculateTime(); }; /** * @return {?} */ TimePicker.prototype.calculatePopupPosition = /** * @return {?} */ function () { var /** @type {?} */ popup = $(this.elementRef.nativeElement).find('.time-picker-view'); this.elementFocused = $(document.activeElement); this.positionTop = this.elementFocused.position().top + this.elementFocused.height() + GAP_HEIGHT; this.positionTop += GAP_TIME_HEIGHT; var /** @type {?} */ ele; // Default value this.positionLeft = 0; var /** @type {?} */ screenTop = this.elementFocused.offset().top - $(window).scrollTop() + this.elementFocused.height() + GAP_HEIGHT; var /** @type {?} */ screenBottom = screenTop + popup.height(); var /** @type {?} */ screenLeft = this.elementFocused.offset().left - $(window).scrollLeft(); var /** @type {?} */ screenRight = screenLeft + popup.width(); if (screenTop < 0) { this.positionTop += -screenTop; this.positionTop += GAP_TIME_HEIGHT; } else if (screenBottom > $(window).height()) { this.positionTop -= screenBottom - $(window).height(); this.positionTop -= GAP_TIME_HEIGHT; } if (screenLeft < 0) { this.positionLeft += -screenLeft; } else if (screenRight > $(window).width()) { this.positionLeft -= screenRight - $(window).width(); } }; /** * @return {?} */ TimePicker.prototype.requestFocus = /** * @return {?} */ function () { var /** @type {?} */ input = $(this.elementRef.nativeElement).find('input[type="text"]'); input.focus(); }; /** * @return {?} */ TimePicker.prototype.calculateTime = /** * @return {?} */ function () { this.rangeHour = this.calHourRange(); this.rangeMin = this.calMinRange(); this.rangeSec = this.calSecRange(); }; /** * @return {?} */ TimePicker.prototype.calHourRange = /** * @return {?} */ function () { var /** @type {?} */ cuerrentDate = new Date(); var /** @type {?} */ lengthData; var /** @type {?} */ rangeDataArray = []; var /** @type {?} */ upStartData = this.selectedHour; var /** @type {?} */ downStartData = this.selectedHour; for (var /** @type {?} */ i = 0; i < this.range; i++) { var /** @type {?} */ dataVal = void 0; var /** @type {?} */ arg = []; cuerrentDate.setHours(upStartData); cuerrentDate.addHours(-1); dataVal = cuerrentDate.getHours(); upStartData = dataVal; rangeDataArray.push(dataVal); if (i === 1) { rangeDataArray.reverse(); } } this.sortDataList(rangeDataArray); // orderby asc rangeDataArray.push(this.selectedHour); for (var /** @type {?} */ i = 0; i < this.range; i++) { var /** @type {?} */ dataVal = void 0; cuerrentDate.setHours(downStartData); cuerrentDate.addHours(1); dataVal = cuerrentDate.getHours(); downStartData = dataVal; rangeDataArray.push(dataVal); } return rangeDataArray; }; /** * @return {?} */ TimePicker.prototype.calMinRange = /** * @return {?} */ function () { var /** @type {?} */ cuerrentDate = new Date(); var /** @type {?} */ lengthData; var /** @type {?} */ rangeDataArray = []; var /** @type {?} */ upStartData = this.selectedMin; var /** @type {?} */ downStartData = this.selectedMin; for (var /** @type {?} */ i = 0; i < this.range; i++) { var /** @type {?} */ dataVal = void 0; cuerrentDate.setMinutes(upStartData); cuerrentDate.addMinutes(-1); dataVal = cuerrentDate.getMinutes(); upStartData = dataVal; rangeDataArray.push(dataVal); if (i === 1) { rangeDataArray.reverse(); } } this.sortDataList(rangeDataArray); // orderby asc rangeDataArray.push(this.selectedMin); for (var /** @type {?} */ i = 0; i < this.range; i++) { var /** @type {?} */ dataVal = void 0; cuerrentDate.setMinutes(downStartData); cuerrentDate.addMinutes(1); dataVal = cuerrentDate.getMinutes(); downStartData = dataVal; rangeDataArray.push(dataVal); } return rangeDataArray; }; /** * @return {?} */ TimePicker.prototype.calSecRange = /** * @return {?} */ function () { var /** @type {?} */ cuerrentDate = new Date(); var /** @type {?} */ lengthData; var /** @type {?} */ rangeDataArray = []; var /** @type {?} */ upStartData = this.selectedSec; var /** @type {?} */ downStartData = this.selectedSec; for (var /** @type {?} */ i = 0; i < this.range; i++) { var /** @type {?} */ dataVal = void 0; cuerrentDate.setSeconds(upStartData); cuerrentDate.addSeconds(-1); dataVal = cuerrentDate.getSeconds(); upStartData = dataVal; rangeDataArray.push(dataVal); if (i === 1) { rangeDataArray.reverse(); } } this.sortDataList(rangeDataArray); // orderby asc rangeDataArray.push(this.selectedSec); for (var /** @type {?} */ i = 0; i < this.range; i++) { var /** @type {?} */ dataVal = void 0; cuerrentDate.setSeconds(downStartData); cuerrentDate.addSeconds(1); dataVal = cuerrentDate.getSeconds(); downStartData = dataVal; rangeDataArray.push(dataVal); } return rangeDataArray; }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.onUpArrowHour = /** * @param {?} $event * @return {?} */ function ($event) { var /** @type {?} */ selectedDate = this.getSelectedDate(); selectedDate.addHours(-1); this.setDate(selectedDate); }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.onDownArrowHour = /** * @param {?} $event * @return {?} */ function ($event) { var /** @type {?} */ selectedDate = this.getSelectedDate(); selectedDate.addHours(1); this.setDate(selectedDate); }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.onUpArrowMin = /** * @param {?} $event * @return {?} */ function ($event) { var /** @type {?} */ selectedDate = this.getSelectedDate(); selectedDate.addMinutes(-1); this.setDate(selectedDate); }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.onDownArrowMin = /** * @param {?} $event * @return {?} */ function ($event) { var /** @type {?} */ selectedDate = this.getSelectedDate(); selectedDate.addMinutes(1); this.setDate(selectedDate); }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.onUpArrowSec = /** * @param {?} $event * @return {?} */ function ($event) { var /** @type {?} */ selectedDate = this.getSelectedDate(); selectedDate.addSeconds(-1); this.setDate(selectedDate); }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.onDownArrowSec = /** * @param {?} $event * @return {?} */ function ($event) { var /** @type {?} */ selectedDate = this.getSelectedDate(); selectedDate.addSeconds(1); this.setDate(selectedDate); }; /** * @param {?} date * @return {?} */ TimePicker.prototype.isMinMaxValidate = /** * @param {?} date * @return {?} */ function (date) { if (date !== null && typeof date !== 'undefined') { date.setMilliseconds(0); var /** @type {?} */ results = this.validate(date); return this.isValidFromValidationResults(results); } return false; }; /** * @param {?} objArray * @return {?} */ TimePicker.prototype.sortDataList = /** * @param {?} objArray * @return {?} */ function (objArray) { if (objArray === null || typeof objArray === 'undefined') { return; } objArray.sort(function (obj1, obj2) { if ((obj1 === null || typeof obj1 === 'undefined') && (obj2 !== null && typeof obj2 !== 'undefined')) { return 0; } else if ((obj1 !== null && typeof obj1 !== 'undefined') && (obj2 === null || typeof obj2 === 'undefined')) { return -1; } else if ((obj1 === null || typeof obj1 === 'undefined') && (obj2 === null || typeof obj2 === 'undefined')) { return 1; } var /** @type {?} */ code1 = obj1.code; var /** @type {?} */ code2 = obj2.code; if ((code1 === null || typeof code1 === 'undefined') && (code2 !== null && typeof code2 !== 'undefined')) { return 0; } else if ((code1 !== null && typeof code1 !== 'undefined') && (code2 === null || typeof code2 === 'undefined')) { return -1; } else if ((code1 === null || typeof code1 === 'undefined') && (code2 === null || typeof code2 === 'undefined')) { return 1; } if (code1 < code2) { return 0; } else if (code1 > code2) { return 1; } return -1; }); }; /** * @param {?} results * @return {?} */ TimePicker.prototype.isValidFromValidationResults = /** * @param {?} results * @return {?} */ function (results) { if (results !== null && typeof results !== 'undefined') { try { for (var results_1 = tslib_1.__values(results), results_1_1 = results_1.next(); !results_1_1.done; results_1_1 = results_1.next()) { var result = results_1_1.value; var /** @type {?} */ status_1 = result.status; if (result.status === ValidationStatus.ERROR) { return false; } var /** @type {?} */ msg = result.message; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (results_1_1 && !results_1_1.done && (_a = results_1.return)) _a.call(results_1); } finally { if (e_1) throw e_1.error; } } } return true; var e_1, _a; }; /** * @param {?} range * @return {?} */ TimePicker.prototype.setRange = /** * @param {?} range * @return {?} */ function (range) { this.range = range; }; /** * @return {?} */ TimePicker.prototype.getRange = /** * @return {?} */ function () { return this.range; }; /** * @param {?} isNotOpenSec * @return {?} */ TimePicker.prototype.setNotOpenSecShow = /** * @param {?} isNotOpenSec * @return {?} */ function (isNotOpenSec) { this.isNotOpenSec = isNotOpenSec; }; /** * @return {?} */ TimePicker.prototype.doHide = /** * @return {?} */ function () { if (!this.active) { return; } this.active = false; }; /** * @return {?} */ TimePicker.prototype.doShow = /** * @return {?} */ function () { if (this.active) { return; } this.calculatePopupPosition(); this.calculateTime(); this.active = true; }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.doBlur = /** * @param {?} $event * @return {?} */ function ($event) { $(this.elementRef.nativeElement).find('input[type="text"]').blur(); }; /** * @param {?} hour * @return {?} */ TimePicker.prototype._isCurrentHourTime = /** * @param {?} hour * @return {?} */ function (hour) { if (hour === null || hour === undefined) { return false; } return (hour === this.selectedHour); }; /** * @param {?} min * @return {?} */ TimePicker.prototype._isCurrentMinTime = /** * @param {?} min * @return {?} */ function (min) { if (min === null || min === undefined) { return false; } return (min === this.selectedMin); }; /** * @param {?} sec * @return {?} */ TimePicker.prototype._isCurrentSecTime = /** * @param {?} sec * @return {?} */ function (sec) { if (sec === null || sec === undefined) { return false; } return (sec === this.selectedSec); }; /** * @return {?} */ TimePicker.prototype._isNotOpenSecShow = /** * @return {?} */ function () { return this.isNotOpenSec; }; /** * @param {?} $event * @param {?} item * @param {?} type * @return {?} */ TimePicker.prototype.onTimeClicked = /** * @param {?} $event * @param {?} item * @param {?} type * @return {?} */ function ($event, item, type) { if (item !== null && typeof item !== undefined) { if (type === HOUR) { this.updateSelectedTimeLocal(item, this.selectedMin, this.selectedSec); } else if (type === MIN) { this.updateSelectedTimeLocal(this.selectedHour, item, this.selectedSec); } else if (type === SEC) { this.updateSelectedTimeLocal(this.selectedHour, this.selectedMin, item); } } this._isItemClick = true; this.requestFocus(); }; /** * @param {?} $event * @param {?} type * @return {?} */ TimePicker.prototype.onUpArrow = /** * @param {?} $event * @param {?} type * @return {?} */ function ($event, type) { if (type === HOUR) { this.onUpArrowHour($event); } else if (type === MIN) { this.onUpArrowMin($event); } else if (type === SEC) { this.onUpArrowSec($event); } this._isItemClick = true; this.requestFocus(); }; /** * @param {?} $event * @param {?} type * @return {?} */ TimePicker.prototype.onDownArrow = /** * @param {?} $event * @param {?} type * @return {?} */ function ($event, type) { if (type === HOUR) { this.onDownArrowHour($event); } else if (type === MIN) { this.onDownArrowMin($event); } else if (type === SEC) { this.onDownArrowSec($event); } this._isItemClick = true; this.requestFocus(); }; /** * @return {?} */ TimePicker.prototype.getDataPatternFromSetting = /** * @return {?} */ function () { if (this.isHideSecond()) { return DEFAULT_HIDE_SECOND_DATA_PATTERN; } else { return DEFAULT_SHOW_SECOND_DATA_PATTERN; } }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.onTextBoxClicked = /** * @param {?} $event * @return {?} */ function ($event) { if (!this.isActive()) { this.show($event); } }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.onFocusing = /** * @param {?} $event * @return {?} */ function ($event) { this.needFocusService.setFocusingComponent(this, $event); }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.onLostFocusing = /** * @param {?} $event * @return {?} */ function ($event) { var _this = this; if (this._itemLostFocusingTimeout !== null && typeof this._itemLostFocusingTimeout !== 'undefined') { clearTimeout(this._itemLostFocusingTimeout); this._itemLostFocusingTimeout = null; } this._itemLostFocusingTimeout = setTimeout(function () { if (!_this._isItemClick) { _this.doBlur($event); if (_this.needFocusService.getFocusingComponent() === _this) { _this.needFocusService.resetFocusingComponent($event); } } else { _this.requestFocus(); } _this._isItemClick = false; }, 140); // if dropdown not hide try to adjust this value }; /** * @return {?} */ TimePicker.prototype.getPopupPositionTop = /** * @return {?} */ function () { return this.positionTop; }; /** * @return {?} */ TimePicker.prototype.getPopupPositionLeft = /** * @return {?} */ function () { return this.positionLeft; }; /** * @param {?} inputValue * @param {?} results * @return {?} */ TimePicker.prototype.onValidationEnd = /** * @param {?} inputValue * @param {?} results * @return {?} */ function (inputValue, results) { }; /** * @param {?} data * @param {?} inputVal * @return {?} */ TimePicker.prototype.onDataChange = /** * @param {?} data * @param {?} inputVal * @return {?} */ function (data, inputVal) { this.updateUI(); }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.doFocus = /** * @param {?} $event * @return {?} */ function ($event) { if (!this.isReadOnly() && !this.isDisabled()) { // Only show popup when it is NOT read only and not disabled. this.requestFocus(); this.show(); } }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.doLostFocus = /** * @param {?} $event * @return {?} */ function ($event) { this.hide(); }; /** * @param {?} $event * @return {?} */ TimePicker.prototype.onValueChanged = /** * @param {?} $event * @return {?} */ function ($event) { // Parse edited text to date (in case of it was changed). var /** @type {?} */ inputText = null; try { inputText = (/** @type {?} */ ($event.target)).value.toString(); } catch (/** @type {?} */ e) { } if (inputText) { // If textbox is not empty, try to parse text value -> date. var /** @type {?} */ newDate = null; try { if (this.formatter instanceof DateFormatter) { newDate = this.formatter.parse(inputText); } else { newDate = Date.parse(inputText); } } catch (/** @type {?} */ e) { } this.updateSelectedDateLocal(newDate); } else { // If textbox is empty, it means that the user does not want // to input any value. this.setDate(null); } }; /** * @return {?} */ TimePicker.prototype.getRangeHour = /** * @return {?} */ function () { return this.rangeHour; }; /** * @return {?} */ TimePicker.prototype.getRangeMin = /** * @return {?} */ function () { return this.rangeMin; }; /** * @return {?} */ TimePicker.prototype.getRangeSec = /** * @return {?} */ function () { return this.rangeSec; }; /** * @return {?} */ TimePicker.prototype.isActive = /** * @return {?} */ function () { return this.active; }; /** * @return {?} */ TimePicker.prototype.getSelectedDate = /** * @return {?} */ function () { var /** @type {?} */ selectedDate = this.getDate(); if (selectedDate === null || selectedDate === undefined) { // If current date value obtained from data is null or undefined, // we'll return as now() instead. selectedDate = new Date(); } return selectedDate; }; /** * @return {?} */ TimePicker.prototype.getWidth = /** * @return {?} */ function () { return this.width; }; /** * @param {?} width * @return {?} */ TimePicker.prototype.setWidth = /** * @param {?} width * @return {?} */ function (width) { this.width = width; }; /** * @return {?} */ TimePicker.prototype.getHeight = /** * @return {?} */ function () { return this.height; }; /** * @param {?} height * @return {?} */ TimePicker.prototype.setHeight = /** * @param {?} height * @return {?} */ function (height) { this.height = height; }; /** * @return {?} */ TimePicker.prototype.isHideSecond = /** * @return {?} */ function () { return this.isNotOpenSec; }; /** * @param {?} hide * @return {?} */ TimePicker.prototype.setHideSecond = /** * @param {?} hide * @return {?} */ function (hide) { this.isNotOpenSec = hide; // Clear seconds from selected date. if (hide) { var /** @type {?} */ date = this.getDate(); date.setSeconds(0); this.setDate(date); } // Auto set DateFormatter's data pattern. if (this.formatter !== null && this.formatter !== undefined && this.formatter instanceof DateFormatter) { var /** @type {?} */ df = /** @type {?} */ (this.formatter); if (this._useDataPattern) { df.setPattern(this.getDataPattern()); } } }; /** * @param {?} a * @param {?} b * @return {?} */ TimePicker.prototype.compareDate = /** * @param {?} a * @param {?} b * @return {?} */ function (a, b) { if (!a && b) { return -1; } if (a && !b) { return 1; } if (!a && !b) { return 0; } // Compare with hours first. var /** @type {?} */ aHr = a.getHours(); var /** @type {?} */ bHr = b.getHours(); if (aHr > bHr) { return 1; } else if (aHr < bHr) { return -1; } // If hours are equal, compare with minutes next. var /** @type {?} */ aMn = a.getMinutes(); var /** @type {?} */ bMn = b.getMinutes(); if (aMn > bMn) { return 1; } else if (aMn < bMn) { return -1; } // Finally, compare with seconds (if it is enabled). if (!this.isHideSecond()) { var /** @type {?} */ aSc = a.getSeconds(); var /** @type {?} */ bSc = b.getSeconds(); if (aSc > bSc) { return 1; } else if (aSc < bSc) { return -1; } } return 0; }; TimePicker.TYPE_NAME = TYPE_NAME; TimePicker.DEFAULT_RANGE = DEFAULT_RANGE; TimePicker.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: "<div class=\"phx-time-picker\">\n <div class=\"time-picker-textbox\">\n <input type=\"text\" [disabled]=\"isDisabled()\" [readonly]=\"isReadOnly()\" [style.width]=\"getWidth()\" [style.height]=\"getHeight()\" [value]=\"formattedData\"\n (focusin)=\"onFocusing($event)\" (click)=\"onTextBoxClicked($event)\"\n (blur)=\"onLostFocusing($event)\" (change)=\"onValueChanged($event)\">\n </div>\n\n <div class=\"time-picker-view\" [class.show]=\"isActive()\" [style.top]=\"getPopupPositionTop() ? getPopupPositionTop() + 'px' : undefined\" [style.left]=\"getPopupPositionLeft() ? getPopupPositionLeft() + 'px' : undefined\">\n <div class=\"time-view\">\n <div class=\"icon-arrow-up\" (click)=\"onUpArrow($event, HOUR)\"></div>\n <div *ngFor=\"let hour of getRangeHour(); let i = index;\" class=\"time-number\" [class.selected]=\"_isCurrentHourTime(hour)\" (click)=\"onTimeClicked($event, hour, HOUR)\">\n {{hour | number:'2.0-0'}}\n </div>\n <div class=\"icon-arrow-down\" (click)=\"onDownArrow($event, HOUR)\"></div>\n </div>\n <div class=\"time-view\">\n <div class=\"icon-arrow-up\" (click)=\"onUpArrow($event, MIN)\"></div>\n <div *ngFor=\"let min of getRangeMin(); let i = index;\" class=\"time-number\" [class.selected]=\"_isCurrentMinTime(min)\" (click)=\"onTimeClicked($event, min, MIN)\">\n {{min | number:'2.0-0'}}\n </div>\n <div class=\"icon-arrow-down\" (click)=\"onDownArrow($event, MIN)\"></div>\n </div>\n <div class=\"time-view\" [class.not-open-sec]=\"_isNotOpenSecShow()\">\n <div class=\"icon-arrow-up\" (click)=\"onUpArrow($event, SEC)\"></div>\n <div *ngFor=\"let sec of getRangeSec(); let i = index;\" class=\"time-number\" [class.selected]=\"_isCurrentSecTime(sec)\" (click)=\"onTimeClicked($event, sec, SEC)\">\n {{sec | number:'2.0-0'}}\n </div>\n <div class=\"icon-arrow-down\" (click)=\"onDownArrow($event, SEC)\"></div>\n </div>\n </div>\n</div>\n" },] }, ]; /** @nocollapse */ TimePicker.ctorParameters = function () { return [ { type: ElementRef, }, { type: NeedFocusService, }, { type: FormatterFactory, }, { type: PhloxAppInfoService, }, ]; }; TimePicker.propDecorators = { "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "data": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "disabled": [{ type: Input },], "field": [{ type: Input },], "name": [{ type: Input },], "typeOfData": [{ type: Input },], "readOnly": [{ type: Input },], "help": [{ type: Input },], "formatter": [{ type: Input, args: ['formatter',] },], "formatterName": [{ type: Input, args: ['formatterName',] },], "formatterOptions": [{ type: Input, args: ['formatterOptions',] },], "formatterUsePropertyValue": [{ type: Input, args: ['formatterUsePropertyValue',] },], "dataPattern": [{ type: Input },], "range": [{ type: Input },], "width": [{ type: Input },], "height": [{ type: Input },], "hideSecond": [{ type: Input, args: ['hideSecond',] },], "loadEvent": [{ type: Output, args: ['phxLoad',] },], "startValidateEvent": [{ type: Output, args: ['phxStartValidate',] },], "endValidateEvent": [{ type: Output, args: ['phxEndValidate',] },], "beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },], "focusEvent": [{ type: Output, args: ['phxFocus',] },], "beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },], "lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },], "beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },], "changeEvent": [{ type: Output, args: ['phxChange',] },], "beforeViewShowEvent": [{ type: Output, args: ['phxBeforeViewShow',] },], "viewShowEvent": [{ type: Output, args: ['phxViewShow',] },], "beforeViewHideEvent": [{ type: Output, args: ['phxBeforeViewHide',] },], "viewHideEvent": [{ type: Output, args: ['phxViewHide',] },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], TimePicker.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TimePicker.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], TimePicker.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TimePicker.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TimePicker.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], TimePicker.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], TimePicker.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TimePicker.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], TimePicker.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], TimePicker.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TimePicker.prototype, "disabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], TimePicker.prototype, "field", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], TimePicker.prototype, "name", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], TimePicker.prototype, "typeOfData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TimePicker.prototype, "readOnly", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Object) ], TimePicker.prototype, "help", void 0); tslib_1.__decorate([ Option('formatter.instance'), tslib_1.__metadata("design:type", Object) ], TimePicker.prototype, "formatter", void 0); tslib_1.__decorate([ Option('formatter.name'), tslib_1.__metadata("design:type", String) ], TimePicker.prototype, "formatterName", void 0); tslib_1.__decorate([ Option('formatter.options'), tslib_1.__metadata("design:type", Object) ], TimePicker.prototype, "formatterOptions", void 0); tslib_1.__decorate([ Option('formatter.usePropertyValue'), tslib_1.__metadata("design:type", Boolean) ], TimePicker.prototype, "formatterUsePropertyValue", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], TimePicker.prototype, "dataPattern", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Number) ], TimePicker.prototype, "range", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], TimePicker.prototype, "width", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], TimePicker.prototype, "height", void 0); tslib_1.__decorate([ Option('hideSecond'), tslib_1.__metadata("design:type", Boolean), tslib_1.__metadata("design:paramtypes", [Boolean]) ], TimePicker.prototype, "hideSecond", null); tslib_1.__decorate([ Option('load'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "loadEvent", void 0); tslib_1.__decorate([ Option('startValidate'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "startValidateEvent", void 0); tslib_1.__decorate([ Option('endValidate'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "endValidateEvent", void 0); tslib_1.__decorate([ Option('beforeFocus'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "beforeFocusEvent", void 0); tslib_1.__decorate([ Option('focus'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "focusEvent", void 0); tslib_1.__decorate([ Option('beforeLostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "beforeLostFocusEvent", void 0); tslib_1.__decorate([ Option('lostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "lostFocusEvent", void 0); tslib_1.__decorate([ Option('beforeChange'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "beforeChangeEvent", void 0); tslib_1.__decorate([ Option('change'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "changeEvent", void 0); tslib_1.__decorate([ Option('beforeViewShow'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "beforeViewShowEvent", void 0); tslib_1.__decorate([ Option('viewShow'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "viewShowEvent", void 0); tslib_1.__decorate([ Option('beforeViewHide'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "beforeViewHideEvent", void 0); tslib_1.__decorate([ Option('viewHide'), tslib_1.__metadata("design:type", EventEmitter) ], TimePicker.prototype, "viewHideEvent", void 0); return TimePicker; }(AbstractDateTimePicker)); export { TimePicker }; function TimePicker_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ TimePicker.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ TimePicker.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ TimePicker.propDecorators; /** @type {?} */ TimePicker.TYPE_NAME; /** @type {?} */ TimePicker.DEFAULT_RANGE; /** @type {?} */ TimePicker.prototype.HOUR; /** @type {?} */ TimePicker.prototype.MIN; /** @type {?} */ TimePicker.prototype.SEC; /** @type {?} */ TimePicker.prototype.dataParent; /** @type {?} */ TimePicker.prototype.ignoreParentData; /** @type {?} */ TimePicker.prototype.data; /** @type {?} */ TimePicker.prototype.ignoreParentDisabled; /** @type {?} */ TimePicker.prototype.delegateHistory; /** @type {?} */ TimePicker.prototype.onDisabled; /** @type {?} */ TimePicker.prototype.onEnabled; /** @type {?} */ TimePicker.prototype.loadingEnabled; /** @type {?} */ TimePicker.prototype.i18nKey; /** @type {?} */ TimePicker.prototype.bypass; /** @type {?} */ TimePicker.prototype.options; /** @type {?} */ TimePicker.prototype.disabled; /** @type {?} */ TimePicker.prototype.field; /** @type {?} */ TimePicker.prototype.name; /** @type {?} */ TimePicker.prototype.typeOfData; /** @type {?} */ TimePicker.prototype.readOnly; /** @type {?} */ TimePicker.prototype.help; /** @type {?} */ TimePicker.prototype.formatter; /** @type {?} */ TimePicker.prototype.formatterName; /** @type {?} */ TimePicker.prototype.formatterOptions; /** @type {?} */ TimePicker.prototype.formatterUsePropertyValue; /** @type {?} */ TimePicker.prototype.dataPattern; /** @type {?} */ TimePicker.prototype.range; /** @type {?} */ TimePicker.prototype.width; /** @type {?} */ TimePicker.prototype.height; /** @type {?} */ TimePicker.prototype.loadEvent; /** @type {?} */ TimePicker.prototype.startValidateEvent; /** @type {?} */ TimePicker.prototype.endValidateEvent; /** @type {?} */ TimePicker.prototype.beforeFocusEvent; /** @type {?} */ TimePicker.prototype.focusEvent; /** @type {?} */ TimePicker.prototype.beforeLostFocusEvent; /** @type {?} */ TimePicker.prototype.lostFocusEvent; /** @type {?} */ TimePicker.prototype.beforeChangeEvent; /** @type {?} */ TimePicker.prototype.changeEvent; /** @type {?} */ TimePicker.prototype.beforeViewShowEvent; /** @type {?} */ TimePicker.prototype.viewShowEvent; /** @type {?} */ TimePicker.prototype.beforeViewHideEvent; /** @type {?} */ TimePicker.prototype.viewHideEvent; /** @type {?} */ TimePicker.prototype.elementFocused; /** @type {?} */ TimePicker.prototype.needFocusService; /** @type {?} */ TimePicker.prototype.rangeHour; /** @type {?} */ TimePicker.prototype.rangeMin; /** @type {?} */ TimePicker.prototype.rangeSec; /** @type {?} */ TimePicker.prototype.selectedHour; /** @type {?} */ TimePicker.prototype.selectedMin; /** @type {?} */ TimePicker.prototype.selectedSec; /** @type {?} */ TimePicker.prototype.positionTop; /** @type {?} */ TimePicker.prototype.positionLeft; /** @type {?} */ TimePicker.prototype.active; /** @type {?} */ TimePicker.prototype.isNotOpenSec; /** @type {?} */ TimePicker.prototype._isItemClick; /** @type {?} */ TimePicker.prototype._itemLostFocusingTimeout; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZVBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZGF0YXZpZXcvaW5wdXQvVGltZVBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUduRixxQkFBTSxTQUFTLEdBQVcsaUJBQWlCLENBQUM7QUFFNUMscUJBQU0sYUFBYSxHQUFXLENBQUMsQ0FBQztBQUVoQyxxQkFBTSxVQUFVLEdBQVcsQ0FBQyxDQUFDO0FBQzdCLHFCQUFNLGVBQWUsR0FBVyxDQUFDLENBQUM7QUFDbEMscUJBQU0sSUFBSSxHQUFXLE1BQU0sQ0FBQztBQUM1QixxQkFBTSxHQUFHLEdBQVcsS0FBSyxDQUFDO0FBQzFCLHFCQUFNLEdBQUcsR0FBVyxLQUFLLENBQUM7QUFFMUIscUJBQU0sZ0NBQWdDLEdBQVcsVUFBVSxDQUFDO0FBQzVELHFCQUFNLGdDQUFnQyxHQUFXLE9BQU8sQ0FBQzs7SUF1Q3pCLHNDQUFzQjtJQXFLcEQsb0JBQVksVUFBc0IsRUFBRSxnQkFBa0MsRUFBRSxnQkFBa0MsRUFBRSxtQkFBd0M7UUFBcEosWUFDRSxrQkFBTSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUMsU0FRM0U7cUJBektzQixJQUFJO29CQUNMLEdBQUc7b0JBQ0gsR0FBRztRQWlLdkIsS0FBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsS0FBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFFMUIsS0FBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsS0FBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7O0tBQ3BCOzBCQWpGYSxrQ0FBVTs7OztRQUd4QjtZQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDNUI7Ozs7O2tCQUx3QixJQUFhO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7Ozs7O0lBbUZwQiw2QkFBUTs7OztRQUNiLGlCQUFNLFFBQVEsV0FBRSxDQUFDO1FBRWpCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQztTQUM1Qjs7Ozs7O0lBR0ssNENBQXVCOzs7O2NBQUMsU0FBZTtRQUM3QyxFQUFFLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDM0QsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7U0FDeEI7UUFFRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQzs7Ozs7Ozs7SUFHN0YsNENBQXVCOzs7Ozs7Y0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLEdBQVc7UUFDcEUscUJBQUksWUFBWSxHQUFTLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVoRCxxQkFBSSxNQUFNLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV4RCxxQkFBSSxXQUFXLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDbkQscUJBQUksVUFBVSxHQUFXLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFFdEMsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM3QixZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQztTQUMzQztRQUNELEVBQUUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDNUIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUM7U0FDM0M7UUFDRCxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDOUI7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDOzs7OztJQUdyQiw2QkFBUTs7OztRQUNkLHFCQUFJLFlBQVksR0FBUyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFaEQscUJBQUksTUFBTSxHQUFXLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFeEQscUJBQUksV0FBVyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELHFCQUFJLFVBQVUsR0FBVyxNQUFNLEdBQUcsR0FBRyxDQUFDOztRQUd0QyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxXQUFXLENBQUM7UUFDMUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1NBQ3pCOztRQUdELElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUMxRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7U0FDeEI7O1FBR0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7O1FBRzdDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzs7Ozs7SUFHYiwyQ0FBc0I7OztJQUFoQztRQUNFLHFCQUFJLEtBQUssR0FBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUU1RSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUNsRyxJQUFJLENBQUMsV0FBVyxJQUFJLGVBQWUsQ0FBQTtRQUVuQyxxQkFBSSxHQUFRLENBQUM7O1FBRWIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFFdEIscUJBQUksU0FBUyxHQUFXLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUM3SCxxQkFBSSxZQUFZLEdBQVcsU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0RCxxQkFBSSxVQUFVLEdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BGLHFCQUFJLFdBQVcsR0FBVyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXJELEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsSUFBSSxlQUFlLENBQUM7U0FDckM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxXQUFXLElBQUksZUFBZSxDQUFDO1NBQ3JDO1FBQ0QsRUFBRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUNsQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsWUFBWSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEQ7S0FDRjs7OztJQUVPLGlDQUFZOzs7O1FBQ2xCLHFCQUFJLEtBQUssR0FBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUU3RSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Ozs7O0lBR1Isa0NBQWE7Ozs7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Ozs7O0lBRzdCLGlDQUFZOzs7O1FBQ2xCLHFCQUFJLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzlCLHFCQUFJLFVBQWtCLENBQUM7UUFFdkIscUJBQUksY0FBYyxHQUFRLEVBQUUsQ0FBQztRQUU3QixxQkFBSSxXQUFXLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM1QyxxQkFBSSxhQUFhLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUU5QyxHQUFHLENBQUMsQ0FBQyxxQkFBSSxDQUFDLEd