UNPKG

materialize-angular

Version:
329 lines 25 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'; 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=