UNPKG

materialize-angular

Version:
275 lines 23.2 kB
/** * @fileoverview added by tsickle * Generated from: app/completed-components/datepicker/datepicker.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @license * Copyright Workylab. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://raw.githubusercontent.com/workylab/materialize-angular/master/LICENSE */ import { Component, ElementRef, forwardRef, Input, ViewChild } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { config } from '../../config'; import { INPUT_TYPE } from '../input/input.model'; export class DatePickerComponent { constructor() { this.className = DatePickerComponent.defaultProps.className; this.disabled = DatePickerComponent.defaultProps.disabled; this.displayOtherMonthDays = DatePickerComponent.defaultProps.displayOtherMonthDays; this.floatLabel = DatePickerComponent.defaultProps.floatLabel; this.format = DatePickerComponent.defaultProps.format; this.fullSize = DatePickerComponent.defaultProps.fullSize; this.id = DatePickerComponent.defaultProps.id; this.name = DatePickerComponent.defaultProps.name; this.placeholder = DatePickerComponent.defaultProps.placeholder; this.required = DatePickerComponent.defaultProps.required; this.inputValue = DatePickerComponent.defaultProps.value; this.prefix = config.components.prefix; this.isOpen = false; this.close = this.close.bind(this); } /** * @return {?} */ ngOnInit() { // this.date = this.buildDate(this.inputValue); } /** * @param {?} selectedDate * @return {?} */ onSelectDay(selectedDate) { this.isOpen = false; this.date = selectedDate.date; this.inputValue = this.formatDate(selectedDate.date); this.onChange(selectedDate.date); } /** * @param {?} date * @return {?} */ formatDate(date) { /** @type {?} */ const day = date.getDate(); /** @type {?} */ const month = date.getMonth() + 1; /** @type {?} */ const dayString = day < 10 ? `0${day}` : day.toString(); /** @type {?} */ const monthString = month < 10 ? `0${month}` : month.toString(); /** @type {?} */ const yearString = date.getFullYear().toString(); /** @type {?} */ const formatedDate = this.format .replace('dd', dayString) .replace('mm', monthString) .replace('yyyy', yearString); return formatedDate; } /** * @param {?} value * @return {?} */ buildDate(value) { /** @type {?} */ const dayStartPosition = this.format.indexOf(DatePickerComponent.DAY_KEY); /** @type {?} */ const monthStartPosition = this.format.indexOf(DatePickerComponent.MONTH_KEY); /** @type {?} */ const yearStartPosition = this.format.indexOf(DatePickerComponent.YEAR_KEY); if (dayStartPosition >= 0 && monthStartPosition >= 0 && yearStartPosition >= 0) { /** @type {?} */ const dayEndPosition = dayStartPosition + DatePickerComponent.DAY_KEY.length; /** @type {?} */ const monthEndPosition = monthStartPosition + DatePickerComponent.MONTH_KEY.length; /** @type {?} */ const yearEndPosition = yearStartPosition + DatePickerComponent.YEAR_KEY.length; /** @type {?} */ const dayString = value.substring(dayStartPosition, dayEndPosition); /** @type {?} */ const monthString = value.substring(monthStartPosition, monthEndPosition); /** @type {?} */ const yearString = value.substring(yearStartPosition, yearEndPosition); if (dayString && monthString && yearString) { /** @type {?} */ const day = Number(dayString); /** @type {?} */ const month = Number(monthString) - 1; /** @type {?} */ const year = Number(yearString); return new Date(year, month, day); } } return new Date(); } /** * @return {?} */ open() { this.isOpen = true; setTimeout((/** * @return {?} */ () => { this.backdropRef.nativeElement.addEventListener('click', this.close); }), 0); } /** * @return {?} */ close() { this.isOpen = false; } /** * @param {?} value * @return {?} */ onInputChange(value) { this.date = this.buildDate(value); this.onChange(this.date); } /** * @return {?} */ onInputFocus() { this.onTouched(); } /** * @param {?} isDisabled * @return {?} */ setDisabledState(isDisabled) { this.disabled = isDisabled; } /** * @param {?} value * @return {?} */ writeValue(value) { this.date = value; this.inputValue = this.formatDate(value); } /** * @param {?} fn * @return {?} */ registerOnChange(fn) { this.onChange = fn; } /** * @param {?} fn * @return {?} */ registerOnTouched(fn) { this.onTouched = fn; } /** * @param {?} value * @return {?} */ onChange(value) { } /** * @return {?} */ onTouched() { } } DatePickerComponent.DAY_KEY = 'dd'; DatePickerComponent.MONTH_KEY = 'mm'; DatePickerComponent.YEAR_KEY = 'yyyy'; DatePickerComponent.defaultProps = { autocomplete: 'none', className: '', date: new Date(), disabled: false, displayOtherMonthDays: true, floatLabel: '', format: 'dd-mm-yyyy', fullSize: false, hasCounter: false, id: null, maxLength: 500, name: '', placeholder: '', required: false, type: INPUT_TYPE.TEXT, value: '' }; DatePickerComponent.decorators = [ { type: Component, args: [{ providers: [{ multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ () => DatePickerComponent)) }], selector: `${config.components.prefix}-datepicker }`, template: "<div [ngClass]=\"[prefix + '-datepicker', className]\" [class.full-size]=\"fullSize\">\n <div #backdrop *ngIf=\"isOpen\" [ngClass]=\"prefix + '-datepicker-backdrop'\"></div>\n\n <materialize-input\n [disabled]=\"disabled\"\n [floatLabel]=\"floatLabel\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [value]=\"inputValue\"\n\n (onChange)=\"onInputChange($event)\"\n (onFocus)=\"onInputFocus()\"\n >\n <materialize-button (onClick)=\"open()\"\n materializeSuffix\n [className]=\"prefix + '-datepicker-button'\"\n [disabled]=\"disabled\"\n >\n <materialize-icon [className]=\"prefix + '-datepicker-button'\">calendar_today</materialize-icon>\n </materialize-button>\n </materialize-input>\n\n <materialize-calendar *ngIf=\"isOpen\"\n [className]=\"prefix + '-datepicker-calendar'\"\n [date]=\"date\"\n (onSelectDay)=\"onSelectDay($event)\">\n </materialize-calendar>\n</div>\n" }] } ]; /** @nocollapse */ DatePickerComponent.ctorParameters = () => []; DatePickerComponent.propDecorators = { backdropRef: [{ type: ViewChild, args: ['backdrop', { static: false },] }], className: [{ type: Input }], disabled: [{ type: Input }], displayOtherMonthDays: [{ type: Input }], floatLabel: [{ type: Input }], format: [{ type: Input }], fullSize: [{ type: Input }], id: [{ type: Input }], name: [{ type: Input }], placeholder: [{ type: Input }], required: [{ type: Input }], inputValue: [{ type: Input }] }; if (false) { /** @type {?} */ DatePickerComponent.DAY_KEY; /** @type {?} */ DatePickerComponent.MONTH_KEY; /** @type {?} */ DatePickerComponent.YEAR_KEY; /** @type {?} */ DatePickerComponent.defaultProps; /** @type {?} */ DatePickerComponent.prototype.backdropRef; /** @type {?} */ DatePickerComponent.prototype.className; /** @type {?} */ DatePickerComponent.prototype.disabled; /** @type {?} */ DatePickerComponent.prototype.displayOtherMonthDays; /** @type {?} */ DatePickerComponent.prototype.floatLabel; /** @type {?} */ DatePickerComponent.prototype.format; /** @type {?} */ DatePickerComponent.prototype.fullSize; /** @type {?} */ DatePickerComponent.prototype.id; /** @type {?} */ DatePickerComponent.prototype.name; /** @type {?} */ DatePickerComponent.prototype.placeholder; /** @type {?} */ DatePickerComponent.prototype.required; /** @type {?} */ DatePickerComponent.prototype.inputValue; /** @type {?} */ DatePickerComponent.prototype.prefix; /** @type {?} */ DatePickerComponent.prototype.date; /** @type {?} */ DatePickerComponent.prototype.isOpen; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tYXRlcmlhbGl6ZS1hbmd1bGFyLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBsZXRlZC1jb21wb25lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBV2xELE1BQU0sT0FBTyxtQkFBbUI7SUEyQzlCO1FBakJTLGNBQVMsR0FBVyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQy9ELGFBQVEsR0FBWSxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQzlELDBCQUFxQixHQUFZLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQztRQUN4RixlQUFVLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUNqRSxXQUFNLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUN6RCxhQUFRLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM5RCxPQUFFLEdBQWtCLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDeEQsU0FBSSxHQUFXLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDckQsZ0JBQVcsR0FBVyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO1FBQ25FLGFBQVEsR0FBWSxtQkFBbUIsQ0FB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O3VCQUNMLEtBQUs7b0NBQ0wsS0FBSzt5QkFDTCxLQUFLO3FCQUNMLEtBQUs7dUJBQ0wsS0FBSztpQkFDTCxLQUFLO21CQUNMLEtBQUs7MEJBQ0wsS0FBSzt1QkFDTCxLQUFLO3lCQUNMLEtBQUs7Ozs7SUFuQ04sNEJBQStCOztJQUMvQiw4QkFBaUM7O0lBQ2pDLDZCQUFrQzs7SUFFbEMsaUNBaUJFOztJQUVGLDBDQUFnRTs7SUFFaEUsd0NBQXdFOztJQUN4RSx1Q0FBdUU7O0lBQ3ZFLG9EQUFpRzs7SUFDakcseUNBQTBFOztJQUMxRSxxQ0FBa0U7O0lBQ2xFLHVDQUF1RTs7SUFDdkUsaUNBQWlFOztJQUNqRSxtQ0FBOEQ7O0lBQzlELDBDQUE0RTs7SUFDNUUsdUNBQXVFOztJQUN2RSx5Q0FBcUU7O0lBRXJFLHFDQUF5Qzs7SUFFekMsbUNBQWtCOztJQUNsQixxQ0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgV29ya3lsYWIuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3dvcmt5bGFiL21hdGVyaWFsaXplLWFuZ3VsYXIvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IERhdGVNb2RlbCB9IGZyb20gJy4uL2NhbGVuZGFyL2NhbGVuZGFyLm1vZGVsJztcbmltcG9ydCB7IERhdGVQaWNrZXJNb2RlbCB9IGZyb20gJy4vZGF0ZXBpY2tlci5tb2RlbCc7XG5pbXBvcnQgeyBJTlBVVF9UWVBFIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgcHJvdmlkZXJzOiBbe1xuICAgIG11bHRpOiB0cnVlLFxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpXG4gIH1dLFxuICBzZWxlY3RvcjogYCR7IGNvbmZpZy5jb21wb25lbnRzLnByZWZpeCB9LWRhdGVwaWNrZXIgfWAsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIHN0YXRpYyByZWFkb25seSBEQVlfS0VZID0gJ2RkJztcbiAgc3RhdGljIHJlYWRvbmx5IE1PTlRIX0tFWSA9ICdtbSc7XG4gIHN0YXRpYyByZWFkb25seSBZRUFSX0tFWSA9ICd5eXl5JztcblxuICBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdFByb3BzOiBEYXRlUGlja2VyTW9kZWwgPSB7XG4gICAgYXV0b2NvbXBsZXRlOiAnbm9uZScsXG4gICAgY2xhc3NOYW1lOiAnJyxcbiAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBkaXNwbGF5T3RoZXJNb250aERheXM6IHRydWUsXG4gICAgZmxvYXRMYWJlbDogJycsXG4gICAgZm9ybWF0OiAnZGQtbW0teXl5eScsXG4gICAgZnVsbFNpemU6IGZhbHNlLFxuICAgIGhhc0NvdW50ZXI6IGZhbHNlLFxuICAgIGlkOiBudWxsLFxuICAgIG1heExlbmd0aDogNTAwLFxuICAgIG5hbWU6ICcnLFxuICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgdHlwZTogSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbHVlOiAnJ1xuICB9O1xuXG4gIEBWaWV3Q2hpbGQoJ2JhY2tkcm9wJywge3N0YXRpYzogZmFsc2V9KSBiYWNrZHJvcFJlZjogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBjbGFzc05hbWU6IHN0cmluZyA9IERhdGVQaWNrZXJDb21wb25lbnQuZGVmYXVsdFByb3BzLmNsYXNzTmFtZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBEYXRlUGlja2VyQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5kaXNhYmxlZDtcbiAgQElucHV0KCkgZGlzcGxheU90aGVyTW9udGhEYXlzOiBib29sZWFuID0gRGF0ZVBpY2tlckNvbXBvbmVudC5kZWZhdWx0UHJvcHMuZGlzcGxheU90aGVyTW9udGhEYXlzO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBzdHJpbmcgPSBEYXRlUGlja2VyQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5mbG9hdExhYmVsO1xuICBASW5wdXQoKSBmb3JtYXQ6IHN0cmluZyA9IERhdGVQaWNrZXJDb21wb25lbnQuZGVmYXVsdFByb3BzLmZvcm1hdDtcbiAgQElucHV0KCkgZnVsbFNpemU6IGJvb2xlYW4gPSBEYXRlUGlja2VyQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5mdWxsU2l6ZTtcbiAgQElucHV0KCkgaWQ6IHN0cmluZyB8IG51bGwgPSBEYXRlUGlja2VyQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5pZDtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gRGF0ZVBpY2tlckNvbXBvbmVudC5kZWZhdWx0UHJvcHMubmFtZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9IERhdGVQaWNrZXJDb21wb25lbnQuZGVmYXVsdFByb3BzLnBsYWNlaG9sZGVyO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IERhdGVQaWNrZXJDb21wb25lbnQuZGVmYXVsdFByb3BzLnJlcXVpcmVkO1xuICBASW5wdXQoKSBpbnB1dFZhbHVlOiBzdHJpbmcgPSBEYXRlUGlja2VyQ29tcG9uZW50LmRlZmF1bHRQcm9wcy52YWx1ZTtcblxuICBwdWJsaWMgcHJlZml4ID0gY29uZmlnLmNvbXBvbmVudHMucHJlZml4O1xuXG4gIHB1YmxpYyBkYXRlOiBEYXRlO1xuICBwdWJsaWMgaXNPcGVuOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG5cbiAgICB0aGlzLmNsb3NlID0gdGhpcy5jbG9zZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gdGhpcy5kYXRlID0gdGhpcy5idWlsZERhdGUodGhpcy5pbnB1dFZhbHVlKTtcbiAgfVxuXG4gIG9uU2VsZWN0RGF5KHNlbGVjdGVkRGF0ZTogRGF0ZU1vZGVsKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmRhdGUgPSBzZWxlY3RlZERhdGUuZGF0ZTtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvcm1hdERhdGUoc2VsZWN0ZWREYXRlLmRhdGUpO1xuXG4gICAgdGhpcy5vbkNoYW5nZShzZWxlY3RlZERhdGUuZGF0ZSk7XG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMTtcblxuICAgIGNvbnN0IGRheVN0cmluZyA9IGRheSA8IDEwXG4gICAgICA/IGAwJHsgZGF5IH1gXG4gICAgICA6IGRheS50b1N0cmluZygpO1xuXG4gICAgY29uc3QgbW9udGhTdHJpbmcgPSBtb250aCA8IDEwXG4gICAgICA/IGAwJHsgbW9udGggfWBcbiAgICAgIDogbW9udGgudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHllYXJTdHJpbmcgPSBkYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IGZvcm1hdGVkRGF0ZSA9IHRoaXMuZm9ybWF0XG4gICAgICAucmVwbGFjZSgnZGQnLCBkYXlTdHJpbmcpXG4gICAgICAucmVwbGFjZSgnbW0nLCBtb250aFN0cmluZylcbiAgICAgIC5yZXBsYWNlKCd5eXl5JywgeWVhclN0cmluZyk7XG5cbiAgICByZXR1cm4gZm9ybWF0ZWREYXRlO1xuICB9XG5cbiAgYnVpbGREYXRlKHZhbHVlOiBzdHJpbmcpOiBEYXRlIHtcbiAgICBjb25zdCBkYXlTdGFydFBvc2l0aW9uID0gdGhpcy5mb3JtYXQuaW5kZXhPZihEYXRlUGlja2VyQ29tcG9uZW50LkRBWV9LRVkpO1xuICAgIGNvbnN0IG1vbnRoU3RhcnRQb3NpdGlvbiA9IHRoaXMuZm9ybWF0LmluZGV4T2YoRGF0ZVBpY2tlckNvbXBvbmVudC5NT05USF9LRVkpO1xuICAgIGNvbnN0IHllYXJTdGFydFBvc2l0aW9uID0gdGhpcy5mb3JtYXQuaW5kZXhPZihEYXRlUGlja2VyQ29tcG9uZW50LllFQVJfS0VZKTtcblxuICAgIGlmIChkYXlTdGFydFBvc2l0aW9uID49IDAgJiYgbW9udGhTdGFydFBvc2l0aW9uID49IDAgJiYgeWVhclN0YXJ0UG9zaXRpb24gPj0gMCkge1xuICAgICAgY29uc3QgZGF5RW5kUG9zaXRpb24gPSBkYXlTdGFydFBvc2l0aW9uICsgRGF0ZVBpY2tlckNvbXBvbmVudC5EQVlfS0VZLmxlbmd0aDtcbiAgICAgIGNvbnN0IG1vbnRoRW5kUG9zaXRpb24gPSBtb250aFN0YXJ0UG9zaXRpb24gKyBEYXRlUGlja2VyQ29tcG9uZW50Lk1PTlRIX0tFWS5sZW5ndGg7XG4gICAgICBjb25zdCB5ZWFyRW5kUG9zaXRpb24gPSB5ZWFyU3RhcnRQb3NpdGlvbiArIERhdGVQaWNrZXJDb21wb25lbnQuWUVBUl9LRVkubGVuZ3RoO1xuXG4gICAgICBjb25zdCBkYXlTdHJpbmcgPSB2YWx1ZS5zdWJzdHJpbmcoZGF5U3RhcnRQb3NpdGlvbiwgZGF5RW5kUG9zaXRpb24pO1xuICAgICAgY29uc3QgbW9udGhTdHJpbmcgPSB2YWx1ZS5zdWJzdHJpbmcobW9udGhTdGFydFBvc2l0aW9uLCBtb250aEVuZFBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IHllYXJTdHJpbmcgPSB2YWx1ZS5zdWJzdHJpbmcoeWVhclN0YXJ0UG9zaXRpb24sIHllYXJFbmRQb3NpdGlvbik7XG5cbiAgICAgIGlmIChkYXlTdHJpbmcgJiYgbW9udGhTdHJpbmcgJiYgeWVhclN0cmluZykge1xuICAgICAgICBjb25zdCBkYXkgPSBOdW1iZXIoZGF5U3RyaW5nKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBOdW1iZXIobW9udGhTdHJpbmcpIC0gMTtcbiAgICAgICAgY29uc3QgeWVhciA9IE51bWJlcih5ZWFyU3RyaW5nKTtcblxuICAgICAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gIH1cblxuICBvcGVuKCkge1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5iYWNrZHJvcFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kYXRlID0gdGhpcy5idWlsZERhdGUodmFsdWUpO1xuXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmRhdGUpO1xuICB9XG5cbiAgb25JbnB1dEZvY3VzKCkge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGUgPSB2YWx1ZTtcblxuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuZm9ybWF0RGF0ZSh2YWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IERhdGUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBvbkNoYW5nZSh2YWx1ZTogRGF0ZSk6IHZvaWQge1xuICB9XG5cbiAgb25Ub3VjaGVkKCk6IHZvaWQge31cbn1cbiJdfQ==