materialize-angular
Version:
Material UI Angular library
329 lines • 25 kB
JavaScript
/**
* @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';
var DatePickerComponent = /** @class */ (function () {
function DatePickerComponent() {
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 {?}
*/
DatePickerComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
// this.date = this.buildDate(this.inputValue);
};
/**
* @param {?} selectedDate
* @return {?}
*/
DatePickerComponent.prototype.onSelectDay = /**
* @param {?} selectedDate
* @return {?}
*/
function (selectedDate) {
this.isOpen = false;
this.date = selectedDate.date;
this.inputValue = this.formatDate(selectedDate.date);
this.onChange(selectedDate.date);
};
/**
* @param {?} date
* @return {?}
*/
DatePickerComponent.prototype.formatDate = /**
* @param {?} date
* @return {?}
*/
function (date) {
/** @type {?} */
var day = date.getDate();
/** @type {?} */
var month = date.getMonth() + 1;
/** @type {?} */
var dayString = day < 10
? "0" + day
: day.toString();
/** @type {?} */
var monthString = month < 10
? "0" + month
: month.toString();
/** @type {?} */
var yearString = date.getFullYear().toString();
/** @type {?} */
var formatedDate = this.format
.replace('dd', dayString)
.replace('mm', monthString)
.replace('yyyy', yearString);
return formatedDate;
};
/**
* @param {?} value
* @return {?}
*/
DatePickerComponent.prototype.buildDate = /**
* @param {?} value
* @return {?}
*/
function (value) {
/** @type {?} */
var dayStartPosition = this.format.indexOf(DatePickerComponent.DAY_KEY);
/** @type {?} */
var monthStartPosition = this.format.indexOf(DatePickerComponent.MONTH_KEY);
/** @type {?} */
var yearStartPosition = this.format.indexOf(DatePickerComponent.YEAR_KEY);
if (dayStartPosition >= 0 && monthStartPosition >= 0 && yearStartPosition >= 0) {
/** @type {?} */
var dayEndPosition = dayStartPosition + DatePickerComponent.DAY_KEY.length;
/** @type {?} */
var monthEndPosition = monthStartPosition + DatePickerComponent.MONTH_KEY.length;
/** @type {?} */
var yearEndPosition = yearStartPosition + DatePickerComponent.YEAR_KEY.length;
/** @type {?} */
var dayString = value.substring(dayStartPosition, dayEndPosition);
/** @type {?} */
var monthString = value.substring(monthStartPosition, monthEndPosition);
/** @type {?} */
var yearString = value.substring(yearStartPosition, yearEndPosition);
if (dayString && monthString && yearString) {
/** @type {?} */
var day = Number(dayString);
/** @type {?} */
var month = Number(monthString) - 1;
/** @type {?} */
var year = Number(yearString);
return new Date(year, month, day);
}
}
return new Date();
};
/**
* @return {?}
*/
DatePickerComponent.prototype.open = /**
* @return {?}
*/
function () {
var _this = this;
this.isOpen = true;
setTimeout((/**
* @return {?}
*/
function () {
_this.backdropRef.nativeElement.addEventListener('click', _this.close);
}), 0);
};
/**
* @return {?}
*/
DatePickerComponent.prototype.close = /**
* @return {?}
*/
function () {
this.isOpen = false;
};
/**
* @param {?} value
* @return {?}
*/
DatePickerComponent.prototype.onInputChange = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.date = this.buildDate(value);
this.onChange(this.date);
};
/**
* @return {?}
*/
DatePickerComponent.prototype.onInputFocus = /**
* @return {?}
*/
function () {
this.onTouched();
};
/**
* @param {?} isDisabled
* @return {?}
*/
DatePickerComponent.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) {
this.disabled = isDisabled;
};
/**
* @param {?} value
* @return {?}
*/
DatePickerComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.date = value;
this.inputValue = this.formatDate(value);
};
/**
* @param {?} fn
* @return {?}
*/
DatePickerComponent.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
DatePickerComponent.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onTouched = fn;
};
/**
* @param {?} value
* @return {?}
*/
DatePickerComponent.prototype.onChange = /**
* @param {?} value
* @return {?}
*/
function (value) {
};
/**
* @return {?}
*/
DatePickerComponent.prototype.onTouched = /**
* @return {?}
*/
function () { };
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 {?}
*/
function () { 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 = function () { return []; };
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 }]
};
return DatePickerComponent;
}());
export { DatePickerComponent };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tYXRlcmlhbGl6ZS1hbmd1bGFyLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBsZXRlZC1jb21wb25lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxEO0lBb0RFO1FBakJTLGNBQVMsR0FBVyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQy9ELGFBQVEsR0FBWSxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQzlELDBCQUFxQixHQUFZLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQztRQUN4RixlQUFVLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUNqRSxXQUFNLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUN6RCxhQUFRLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM5RCxPQUFFLEdBQWtCLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDeEQsU0FBSSxHQUFXLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDckQsZ0JBQVcsR0FBVyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO1FBQ25FLGFBQVEsR0FBWSxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsUUFBUSxD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QyxNQUFNLGtCQUFnQjtvQkFDdEQscTlCQUEwQztpQkFDM0M7Ozs7OzhCQXlCRSxTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQzs0QkFFckMsS0FBSzsyQkFDTCxLQUFLO3dDQUNMLEtBQUs7NkJBQ0wsS0FBSzt5QkFDTCxLQUFLOzJCQUNMLEtBQUs7cUJBQ0wsS0FBSzt1QkFDTCxLQUFLOzhCQUNMLEtBQUs7MkJBQ0wsS0FBSzs2QkFDTCxLQUFLOztJQXFIUiwwQkFBQztDQUFBLEFBbEtELElBa0tDO1NBekpZLG1CQUFtQjs7O0lBQzlCLDRCQUErQjs7SUFDL0IsOEJBQWlDOztJQUNqQyw2QkFBa0M7O0lBRWxDLGlDQWlCRTs7SUFFRiwwQ0FBZ0U7O0lBRWhFLHdDQUF3RTs7SUFDeEUsdUNBQXVFOztJQUN2RSxvREFBaUc7O0lBQ2pHLHlDQUEwRTs7SUFDMUUscUNBQWtFOztJQUNsRSx1Q0FBdUU7O0lBQ3ZFLGlDQUFpRTs7SUFDakUsbUNBQThEOztJQUM5RCwwQ0FBNEU7O0lBQzVFLHVDQUF1RTs7SUFDdkUseUNBQXFFOztJQUVyRSxxQ0FBeUM7O0lBRXpDLG1DQUFrQjs7SUFDbEIscUNBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IFdvcmt5bGFiLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS93b3JreWxhYi9tYXRlcmlhbGl6ZS1hbmd1bGFyL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBEYXRlTW9kZWwgfSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci5tb2RlbCc7XG5pbXBvcnQgeyBEYXRlUGlja2VyTW9kZWwgfSBmcm9tICcuL2RhdGVwaWNrZXIubW9kZWwnO1xuaW1wb3J0IHsgSU5QVVRfVFlQRSB9IGZyb20gJy4uL2lucHV0L2lucHV0Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHByb3ZpZGVyczogW3tcbiAgICBtdWx0aTogdHJ1ZSxcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUGlja2VyQ29tcG9uZW50KVxuICB9XSxcbiAgc2VsZWN0b3I6IGAkeyBjb25maWcuY29tcG9uZW50cy5wcmVmaXggfS1kYXRlcGlja2VyIH1gLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICBzdGF0aWMgcmVhZG9ubHkgREFZX0tFWSA9ICdkZCc7XG4gIHN0YXRpYyByZWFkb25seSBNT05USF9LRVkgPSAnbW0nO1xuICBzdGF0aWMgcmVhZG9ubHkgWUVBUl9LRVkgPSAneXl5eSc7XG5cbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRQcm9wczogRGF0ZVBpY2tlck1vZGVsID0ge1xuICAgIGF1dG9jb21wbGV0ZTogJ25vbmUnLFxuICAgIGNsYXNzTmFtZTogJycsXG4gICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZGlzcGxheU90aGVyTW9udGhEYXlzOiB0cnVlLFxuICAgIGZsb2F0TGFiZWw6ICcnLFxuICAgIGZvcm1hdDogJ2RkLW1tLXl5eXknLFxuICAgIGZ1bGxTaXplOiBmYWxzZSxcbiAgICBoYXNDb3VudGVyOiBmYWxzZSxcbiAgICBpZDogbnVsbCxcbiAgICBtYXhMZW5ndGg6IDUwMCxcbiAgICBuYW1lOiAnJyxcbiAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHR5cGU6IElOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWx1ZTogJydcbiAgfTtcblxuICBAVmlld0NoaWxkKCdiYWNrZHJvcCcsIHtzdGF0aWM6IGZhbHNlfSkgYmFja2Ryb3BSZWY6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgY2xhc3NOYW1lOiBzdHJpbmcgPSBEYXRlUGlja2VyQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5jbGFzc05hbWU7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gRGF0ZVBpY2tlckNvbXBvbmVudC5kZWZhdWx0UHJvcHMuZGlzYWJsZWQ7XG4gIEBJbnB1dCgpIGRpc3BsYXlPdGhlck1vbnRoRGF5czogYm9vbGVhbiA9IERhdGVQaWNrZXJDb21wb25lbnQuZGVmYXVsdFByb3BzLmRpc3BsYXlPdGhlck1vbnRoRGF5cztcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogc3RyaW5nID0gRGF0ZVBpY2tlckNvbXBvbmVudC5kZWZhdWx0UHJvcHMuZmxvYXRMYWJlbDtcbiAgQElucHV0KCkgZm9ybWF0OiBzdHJpbmcgPSBEYXRlUGlja2VyQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5mb3JtYXQ7XG4gIEBJbnB1dCgpIGZ1bGxTaXplOiBib29sZWFuID0gRGF0ZVBpY2tlckNvbXBvbmVudC5kZWZhdWx0UHJvcHMuZnVsbFNpemU7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCBudWxsID0gRGF0ZVBpY2tlckNvbXBvbmVudC5kZWZhdWx0UHJvcHMuaWQ7XG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyA9IERhdGVQaWNrZXJDb21wb25lbnQuZGVmYXVsdFByb3BzLm5hbWU7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBEYXRlUGlja2VyQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5wbGFjZWhvbGRlcjtcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBEYXRlUGlja2VyQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5yZXF1aXJlZDtcbiAgQElucHV0KCkgaW5wdXRWYWx1ZTogc3RyaW5nID0gRGF0ZVBpY2tlckNvbXBvbmVudC5kZWZhdWx0UHJvcHMudmFsdWU7XG5cbiAgcHVibGljIHByZWZpeCA9IGNvbmZpZy5jb21wb25lbnRzLnByZWZpeDtcblxuICBwdWJsaWMgZGF0ZTogRGF0ZTtcbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5jbG9zZSA9IHRoaXMuY2xvc2UuYmluZCh0aGlzKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIHRoaXMuZGF0ZSA9IHRoaXMuYnVpbGREYXRlKHRoaXMuaW5wdXRWYWx1ZSk7XG4gIH1cblxuICBvblNlbGVjdERheShzZWxlY3RlZERhdGU6IERhdGVNb2RlbCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5kYXRlID0gc2VsZWN0ZWREYXRlLmRhdGU7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5mb3JtYXREYXRlKHNlbGVjdGVkRGF0ZS5kYXRlKTtcblxuICAgIHRoaXMub25DaGFuZ2Uoc2VsZWN0ZWREYXRlLmRhdGUpO1xuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG5cbiAgICBjb25zdCBkYXlTdHJpbmcgPSBkYXkgPCAxMFxuICAgICAgPyBgMCR7IGRheSB9YFxuICAgICAgOiBkYXkudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IG1vbnRoU3RyaW5nID0gbW9udGggPCAxMFxuICAgICAgPyBgMCR7IG1vbnRoIH1gXG4gICAgICA6IG1vbnRoLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCB5ZWFyU3RyaW5nID0gZGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBmb3JtYXRlZERhdGUgPSB0aGlzLmZvcm1hdFxuICAgICAgLnJlcGxhY2UoJ2RkJywgZGF5U3RyaW5nKVxuICAgICAgLnJlcGxhY2UoJ21tJywgbW9udGhTdHJpbmcpXG4gICAgICAucmVwbGFjZSgneXl5eScsIHllYXJTdHJpbmcpO1xuXG4gICAgcmV0dXJuIGZvcm1hdGVkRGF0ZTtcbiAgfVxuXG4gIGJ1aWxkRGF0ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgY29uc3QgZGF5U3RhcnRQb3NpdGlvbiA9IHRoaXMuZm9ybWF0LmluZGV4T2YoRGF0ZVBpY2tlckNvbXBvbmVudC5EQVlfS0VZKTtcbiAgICBjb25zdCBtb250aFN0YXJ0UG9zaXRpb24gPSB0aGlzLmZvcm1hdC5pbmRleE9mKERhdGVQaWNrZXJDb21wb25lbnQuTU9OVEhfS0VZKTtcbiAgICBjb25zdCB5ZWFyU3RhcnRQb3NpdGlvbiA9IHRoaXMuZm9ybWF0LmluZGV4T2YoRGF0ZVBpY2tlckNvbXBvbmVudC5ZRUFSX0tFWSk7XG5cbiAgICBpZiAoZGF5U3RhcnRQb3NpdGlvbiA+PSAwICYmIG1vbnRoU3RhcnRQb3NpdGlvbiA+PSAwICYmIHllYXJTdGFydFBvc2l0aW9uID49IDApIHtcbiAgICAgIGNvbnN0IGRheUVuZFBvc2l0aW9uID0gZGF5U3RhcnRQb3NpdGlvbiArIERhdGVQaWNrZXJDb21wb25lbnQuREFZX0tFWS5sZW5ndGg7XG4gICAgICBjb25zdCBtb250aEVuZFBvc2l0aW9uID0gbW9udGhTdGFydFBvc2l0aW9uICsgRGF0ZVBpY2tlckNvbXBvbmVudC5NT05USF9LRVkubGVuZ3RoO1xuICAgICAgY29uc3QgeWVhckVuZFBvc2l0aW9uID0geWVhclN0YXJ0UG9zaXRpb24gKyBEYXRlUGlja2VyQ29tcG9uZW50LllFQVJfS0VZLmxlbmd0aDtcblxuICAgICAgY29uc3QgZGF5U3RyaW5nID0gdmFsdWUuc3Vic3RyaW5nKGRheVN0YXJ0UG9zaXRpb24sIGRheUVuZFBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IG1vbnRoU3RyaW5nID0gdmFsdWUuc3Vic3RyaW5nKG1vbnRoU3RhcnRQb3NpdGlvbiwgbW9udGhFbmRQb3NpdGlvbik7XG4gICAgICBjb25zdCB5ZWFyU3RyaW5nID0gdmFsdWUuc3Vic3RyaW5nKHllYXJTdGFydFBvc2l0aW9uLCB5ZWFyRW5kUG9zaXRpb24pO1xuXG4gICAgICBpZiAoZGF5U3RyaW5nICYmIG1vbnRoU3RyaW5nICYmIHllYXJTdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZGF5ID0gTnVtYmVyKGRheVN0cmluZyk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gTnVtYmVyKG1vbnRoU3RyaW5nKSAtIDE7XG4gICAgICAgIGNvbnN0IHllYXIgPSBOdW1iZXIoeWVhclN0cmluZyk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICB9XG5cbiAgb3BlbigpIHtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYmFja2Ryb3BSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xvc2UpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIG9uSW5wdXRDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZGF0ZSA9IHRoaXMuYnVpbGREYXRlKHZhbHVlKTtcblxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5kYXRlKTtcbiAgfVxuXG4gIG9uSW5wdXRGb2N1cygpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlID0gdmFsdWU7XG5cbiAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvcm1hdERhdGUodmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBEYXRlKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgb25DaGFuZ2UodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgfVxuXG4gIG9uVG91Y2hlZCgpOiB2b2lkIHt9XG59XG4iXX0=