ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
258 lines • 22.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ViewEncapsulation, HostBinding, Input, ElementRef } from '@angular/core';
import { DateModels } from '../date/DataTypes';
var CalendarSingleMonthComponent = /** @class */ (function () {
function CalendarSingleMonthComponent(_elementRef) {
var _this = this;
this._elementRef = _elementRef;
this.props = (/** @type {?} */ ({
rowSize: 'normal'
}));
this.state = {
weekComponents: []
};
this.singleMonth = true;
this.genWeek = (/**
* @param {?} weeksData
* @param {?} index
* @return {?}
*/
function (weeksData, index) {
var _a = _this.props, getDateExtra = _a.getDateExtra, monthData = _a.monthData, onCellClick = _a.onCellClick, locale = _a.locale, rowSize = _a.rowSize;
/** @type {?} */
var rowCls = 'row';
/** @type {?} */
var weeksDataList = [];
if (rowSize === 'xl') {
rowCls += ' row-xl';
}
weeksData.forEach((/**
* @param {?} day
* @param {?} dayOfWeek
* @return {?}
*/
function (day, dayOfWeek) {
/** @type {?} */
var extra = (getDateExtra && getDateExtra(new Date(day.tick))) || {};
/** @type {?} */
var info = extra.info;
/** @type {?} */
var disable = extra.disable || day.outOfDate;
/** @type {?} */
var cls = 'date';
/** @type {?} */
var lCls = 'left';
/** @type {?} */
var rCls = 'right';
/** @type {?} */
var infoCls = 'info';
if (dayOfWeek === 0 || dayOfWeek === 6) {
cls += ' grey';
}
if (disable) {
cls += ' disable';
}
else if (info) {
cls += ' important';
}
if (day.selected) {
cls += ' date-selected';
/** @type {?} */
var styleType = day.selected;
switch (styleType) {
case DateModels.SelectType.Only:
info = locale.begin;
infoCls += ' date-selected';
break;
case DateModels.SelectType.All:
info = locale.begin_over;
infoCls += ' date-selected';
break;
case DateModels.SelectType.Start:
info = locale.begin;
infoCls += ' date-selected';
if (dayOfWeek === 6 || day.isLastOfMonth) {
styleType = DateModels.SelectType.All;
}
break;
case DateModels.SelectType.Middle:
if (dayOfWeek === 0 || day.isFirstOfMonth) {
if (day.isLastOfMonth || dayOfWeek === 6) {
styleType = DateModels.SelectType.All;
}
else {
styleType = DateModels.SelectType.Start;
}
}
else if (dayOfWeek === 6 || day.isLastOfMonth) {
styleType = DateModels.SelectType.End;
}
break;
case DateModels.SelectType.End:
info = locale.over;
infoCls += ' date-selected';
if (dayOfWeek === 0 || day.isFirstOfMonth) {
styleType = DateModels.SelectType.All;
}
break;
}
switch (styleType) {
case DateModels.SelectType.Single:
case DateModels.SelectType.Only:
case DateModels.SelectType.All:
cls += ' selected-single';
break;
case DateModels.SelectType.Start:
cls += ' selected-start';
rCls += ' date-selected';
break;
case DateModels.SelectType.Middle:
cls += ' selected-middle';
lCls += ' date-selected';
rCls += ' date-selected';
break;
case DateModels.SelectType.End:
cls += ' selected-end';
lCls += ' date-selected';
break;
}
}
weeksDataList[dayOfWeek] = {
lCls: lCls,
cls: cls,
day: day,
rCls: rCls,
infoCls: infoCls,
info: info,
extra: extra,
disable: disable,
onCellClick: onCellClick,
monthData: monthData
};
}));
_this.state.weekComponents[index] = {
index: index,
rowCls: rowCls,
weeksDataList: weeksDataList
};
});
this.updateWeeks = (/**
* @param {?=} monthData
* @return {?}
*/
function (monthData) {
(monthData || _this.props.monthData).weeks.forEach((/**
* @param {?} week
* @param {?} index
* @return {?}
*/
function (week, index) {
_this.genWeek(week, index);
}));
});
this.setWarpper = (/**
* @param {?} dom
* @return {?}
*/
function (dom) {
_this.wrapperDivDOM = dom;
});
}
Object.defineProperty(CalendarSingleMonthComponent.prototype, "data", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.props = tslib_1.__assign({}, this.props, value);
},
enumerable: true,
configurable: true
});
/**
* @param {?} item
* @return {?}
*/
CalendarSingleMonthComponent.prototype.onClickCell = /**
* @param {?} item
* @return {?}
*/
function (item) {
if (!item.disable && item.onCellClick) {
item.onCellClick(item.day, item.monthData);
}
};
/**
* @return {?}
*/
CalendarSingleMonthComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.setWarpper(this._elementRef.nativeElement);
this.props.monthData.weeks.forEach((/**
* @param {?} week
* @param {?} index
* @return {?}
*/
function (week, index) {
_this.genWeek(week, index);
}));
};
/**
* @return {?}
*/
CalendarSingleMonthComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
this.ref = this.props.ref;
this.ref(this);
};
CalendarSingleMonthComponent.decorators = [
{ type: Component, args: [{
selector: 'CalendarSingleMonth, nzm-single-month',
template: "<div class=\"month-title\">\n {{ props.monthData.title }}\n</div>\n<div class=\"date\">\n <div *ngFor=\"let row of state.weekComponents; let i = index\" [ngClass]=\"row.rowCls\">\n <div\n *ngFor=\"let cell of row.weeksDataList; let j = index\"\n class=\"{{ 'cell ' + ((row.extra && row.extra.cellCls) || '') }}\"\n (click)=\"onClickCell(cell)\"\n >\n <div *ngIf=\"row.extra && row.extra.cellRender\">test</div>\n <div *ngIf=\"!row.extra || (row.extra && row.extra.cellRender)\" class=\"date-wrapper\">\n <span [ngClass]=\"cell.lCls\"></span>\n <div [ngClass]=\"cell.cls\">\n {{ (cell.day && cell.day.dayOfMonth) || '' }}\n </div>\n <span [ngClass]=\"cell.rCls\"></span>\n </div>\n <div *ngIf=\"!row.extra || (row.extra && row.extra.cellRender)\" [ngClass]=\"cell.infoCls\">\n {{ cell.info }}\n </div>\n </div>\n </div>\n</div>\n",
encapsulation: ViewEncapsulation.None
}] }
];
/** @nocollapse */
CalendarSingleMonthComponent.ctorParameters = function () { return [
{ type: ElementRef }
]; };
CalendarSingleMonthComponent.propDecorators = {
data: [{ type: Input }],
singleMonth: [{ type: HostBinding, args: ['class.single-month',] }]
};
return CalendarSingleMonthComponent;
}());
export { CalendarSingleMonthComponent };
if (false) {
/** @type {?} */
CalendarSingleMonthComponent.prototype.props;
/** @type {?} */
CalendarSingleMonthComponent.prototype.state;
/** @type {?} */
CalendarSingleMonthComponent.prototype.ref;
/** @type {?} */
CalendarSingleMonthComponent.prototype.wrapperDivDOM;
/** @type {?} */
CalendarSingleMonthComponent.prototype.singleMonth;
/** @type {?} */
CalendarSingleMonthComponent.prototype.genWeek;
/** @type {?} */
CalendarSingleMonthComponent.prototype.updateWeeks;
/** @type {?} */
CalendarSingleMonthComponent.prototype.setWarpper;
/**
* @type {?}
* @private
*/
CalendarSingleMonthComponent.prototype._elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW1vbnRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsiY2FsZW5kYXIvc2luZ2xlLW1vbnRoL3NpbmdsZS1tb250aC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHL0M7SUEwQkUsc0NBQW9CLFdBQXVCO1FBQTNDLGlCQUErQztRQUEzQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXBCM0MsVUFBSyxHQUFHLG1CQUFBO1lBQ04sT0FBTyxFQUFFLFFBQVE7U0FDbEIsRUFBZ0MsQ0FBQztRQUVsQyxVQUFLLEdBQUc7WUFDTixjQUFjLEVBQUUsRUFBRTtTQUNuQixDQUFDO1FBWWlDLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBSS9ELFlBQU87Ozs7O1FBQUcsVUFBQyxTQUFnQyxFQUFFLEtBQWE7WUFDbEQsSUFBQSxnQkFBc0UsRUFBcEUsOEJBQVksRUFBRSx3QkFBUyxFQUFFLDRCQUFXLEVBQUUsa0JBQU0sRUFBRSxvQkFBc0I7O2dCQUN4RSxNQUFNLEdBQUcsS0FBSzs7Z0JBQ2QsYUFBYSxHQUFHLEVBQUU7WUFDdEIsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO2dCQUNwQixNQUFNLElBQUksU0FBUyxDQUFDO2FBQ3JCO1lBRUQsU0FBUyxDQUFDLE9BQU87Ozs7O1lBQUMsVUFBQyxHQUFHLEVBQUUsU0FBUzs7b0JBQ3pCLEtBQUssR0FBRyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFOztvQkFDbEUsSUFBSSxHQUFHLEtBQUss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SUFFbEMsNkNBRUU7O0lBQ0YsMkNBQW1COztJQUNuQixxREFBcUM7O0lBVXJDLG1EQUErRDs7SUFJL0QsK0NBNkdDOztJQUVELG1EQUlDOztJQUVELGtEQUVDOzs7OztJQXpIVyxtREFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIEhvc3RCaW5kaW5nLCBJbnB1dCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZU1vZGVscyB9IGZyb20gJy4uL2RhdGUvRGF0YVR5cGVzJztcbmltcG9ydCB7IENhbGVuZGFyU2luZ2xlTW9udGhQcm9wc1R5cGUgfSBmcm9tICcuL1Byb3BzVHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ0NhbGVuZGFyU2luZ2xlTW9udGgsIG56bS1zaW5nbGUtbW9udGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2luZ2xlLW1vbnRoLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhclNpbmdsZU1vbnRoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgcHJvcHMgPSB7XG4gICAgcm93U2l6ZTogJ25vcm1hbCdcbiAgfSBhcyBDYWxlbmRhclNpbmdsZU1vbnRoUHJvcHNUeXBlO1xuXG4gIHN0YXRlID0ge1xuICAgIHdlZWtDb21wb25lbnRzOiBbXVxuICB9O1xuICByZWY6IChkb20pID0+IHZvaWQ7XG4gIHdyYXBwZXJEaXZET006IEhUTUxEaXZFbGVtZW50IHwgbnVsbDtcblxuICBASW5wdXQoKVxuICBzZXQgZGF0YSh2YWx1ZSkge1xuICAgIHRoaXMucHJvcHMgPSB7XG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgICAgLi4udmFsdWVcbiAgICB9O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zaW5nbGUtbW9udGgnKSBzaW5nbGVNb250aDogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBnZW5XZWVrID0gKHdlZWtzRGF0YTogRGF0ZU1vZGVscy5DZWxsRGF0YVtdLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgeyBnZXREYXRlRXh0cmEsIG1vbnRoRGF0YSwgb25DZWxsQ2xpY2ssIGxvY2FsZSwgcm93U2l6ZSB9ID0gdGhpcy5wcm9wcztcbiAgICBsZXQgcm93Q2xzID0gJ3Jvdyc7XG4gICAgbGV0IHdlZWtzRGF0YUxpc3QgPSBbXTtcbiAgICBpZiAocm93U2l6ZSA9PT0gJ3hsJykge1xuICAgICAgcm93Q2xzICs9ICcgcm93LXhsJztcbiAgICB9XG5cbiAgICB3ZWVrc0RhdGEuZm9yRWFjaCgoZGF5LCBkYXlPZldlZWspID0+IHtcbiAgICAgIGNvbnN0IGV4dHJhID0gKGdldERhdGVFeHRyYSAmJiBnZXREYXRlRXh0cmEobmV3IERhdGUoZGF5LnRpY2spKSkgfHwge307XG4gICAgICBsZXQgaW5mbyA9IGV4dHJhLmluZm87XG4gICAgICBjb25zdCBkaXNhYmxlID0gZXh0cmEuZGlzYWJsZSB8fCBkYXkub3V0T2ZEYXRlO1xuXG4gICAgICBsZXQgY2xzID0gJ2RhdGUnO1xuICAgICAgbGV0IGxDbHMgPSAnbGVmdCc7XG4gICAgICBsZXQgckNscyA9ICdyaWdodCc7XG4gICAgICBsZXQgaW5mb0NscyA9ICdpbmZvJztcblxuICAgICAgaWYgKGRheU9mV2VlayA9PT0gMCB8fCBkYXlPZldlZWsgPT09IDYpIHtcbiAgICAgICAgY2xzICs9ICcgZ3JleSc7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXNhYmxlKSB7XG4gICAgICAgIGNscyArPSAnIGRpc2FibGUnO1xuICAgICAgfSBlbHNlIGlmIChpbmZvKSB7XG4gICAgICAgIGNscyArPSAnIGltcG9ydGFudCc7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXkuc2VsZWN0ZWQpIHtcbiAgICAgICAgY2xzICs9ICcgZGF0ZS1zZWxlY3RlZCc7XG4gICAgICAgIGxldCBzdHlsZVR5cGUgPSBkYXkuc2VsZWN0ZWQ7XG4gICAgICAgIHN3aXRjaCAoc3R5bGVUeXBlKSB7XG4gICAgICAgICAgY2FzZSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuT25seTpcbiAgICAgICAgICAgIGluZm8gPSBsb2NhbGUuYmVnaW47XG4gICAgICAgICAgICBpbmZvQ2xzICs9ICcgZGF0ZS1zZWxlY3RlZCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIERhdGVNb2RlbHMuU2VsZWN0VHlwZS5BbGw6XG4gICAgICAgICAgICBpbmZvID0gbG9jYWxlLmJlZ2luX292ZXI7XG4gICAgICAgICAgICBpbmZvQ2xzICs9ICcgZGF0ZS1zZWxlY3RlZCc7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgRGF0ZU1vZGVscy5TZWxlY3RUeXBlLlN0YXJ0OlxuICAgICAgICAgICAgaW5mbyA9IGxvY2FsZS5iZWdpbjtcbiAgICAgICAgICAgIGluZm9DbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGlmIChkYXlPZldlZWsgPT09IDYgfHwgZGF5LmlzTGFzdE9mTW9udGgpIHtcbiAgICAgICAgICAgICAgc3R5bGVUeXBlID0gRGF0ZU1vZGVscy5TZWxlY3RUeXBlLkFsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgRGF0ZU1vZGVscy5TZWxlY3RUeXBlLk1pZGRsZTpcbiAgICAgICAgICAgIGlmIChkYXlPZldlZWsgPT09IDAgfHwgZGF5LmlzRmlyc3RPZk1vbnRoKSB7XG4gICAgICAgICAgICAgIGlmIChkYXkuaXNMYXN0T2ZNb250aCB8fCBkYXlPZldlZWsgPT09IDYpIHtcbiAgICAgICAgICAgICAgICBzdHlsZVR5cGUgPSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuQWxsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0eWxlVHlwZSA9IERhdGVNb2RlbHMuU2VsZWN0VHlwZS5TdGFydDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXlPZldlZWsgPT09IDYgfHwgZGF5LmlzTGFzdE9mTW9udGgpIHtcbiAgICAgICAgICAgICAgc3R5bGVUeXBlID0gRGF0ZU1vZGVscy5TZWxlY3RUeXBlLkVuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgRGF0ZU1vZGVscy5TZWxlY3RUeXBlLkVuZDpcbiAgICAgICAgICAgIGluZm8gPSBsb2NhbGUub3ZlcjtcbiAgICAgICAgICAgIGluZm9DbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGlmIChkYXlPZldlZWsgPT09IDAgfHwgZGF5LmlzRmlyc3RPZk1vbnRoKSB7XG4gICAgICAgICAgICAgIHN0eWxlVHlwZSA9IERhdGVNb2RlbHMuU2VsZWN0VHlwZS5BbGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoc3R5bGVUeXBlKSB7XG4gICAgICAgICAgY2FzZSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuU2luZ2xlOlxuICAgICAgICAgIGNhc2UgRGF0ZU1vZGVscy5TZWxlY3RUeXBlLk9ubHk6XG4gICAgICAgICAgY2FzZSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuQWxsOlxuICAgICAgICAgICAgY2xzICs9ICcgc2VsZWN0ZWQtc2luZ2xlJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgRGF0ZU1vZGVscy5TZWxlY3RUeXBlLlN0YXJ0OlxuICAgICAgICAgICAgY2xzICs9ICcgc2VsZWN0ZWQtc3RhcnQnO1xuICAgICAgICAgICAgckNscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuTWlkZGxlOlxuICAgICAgICAgICAgY2xzICs9ICcgc2VsZWN0ZWQtbWlkZGxlJztcbiAgICAgICAgICAgIGxDbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIHJDbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgRGF0ZU1vZGVscy5TZWxlY3RUeXBlLkVuZDpcbiAgICAgICAgICAgIGNscyArPSAnIHNlbGVjdGVkLWVuZCc7XG4gICAgICAgICAgICBsQ2xzICs9ICcgZGF0ZS1zZWxlY3RlZCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB3ZWVrc0RhdGFMaXN0W2RheU9mV2Vla10gPSB7XG4gICAgICAgIGxDbHMsXG4gICAgICAgIGNscyxcbiAgICAgICAgZGF5LFxuICAgICAgICByQ2xzLFxuICAgICAgICBpbmZvQ2xzLFxuICAgICAgICBpbmZvLFxuICAgICAgICBleHRyYSxcbiAgICAgICAgZGlzYWJsZSxcbiAgICAgICAgb25DZWxsQ2xpY2s6IG9uQ2VsbENsaWNrLFxuICAgICAgICBtb250aERhdGFcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXRlLndlZWtDb21wb25lbnRzW2luZGV4XSA9IHtcbiAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgIHJvd0NscyxcbiAgICAgIHdlZWtzRGF0YUxpc3RcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlV2Vla3MgPSAobW9udGhEYXRhPzogRGF0ZU1vZGVscy5Nb250aERhdGEpID0+IHtcbiAgICAobW9udGhEYXRhIHx8IHRoaXMucHJvcHMubW9udGhEYXRhKS53ZWVrcy5mb3JFYWNoKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy5nZW5XZWVrKHdlZWssIGluZGV4KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFdhcnBwZXIgPSAoZG9tOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xuICAgIHRoaXMud3JhcHBlckRpdkRPTSA9IGRvbTtcbiAgfVxuXG4gIG9uQ2xpY2tDZWxsKGl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0uZGlzYWJsZSAmJiBpdGVtLm9uQ2VsbENsaWNrKSB7XG4gICAgICBpdGVtLm9uQ2VsbENsaWNrKGl0ZW0uZGF5LCBpdGVtLm1vbnRoRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRXYXJwcGVyKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5wcm9wcy5tb250aERhdGEud2Vla3MuZm9yRWFjaCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgIHRoaXMuZ2VuV2Vlayh3ZWVrLCBpbmRleCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZWYgPSB0aGlzLnByb3BzLnJlZjtcbiAgICB0aGlzLnJlZih0aGlzKTtcbiAgfVxufVxuIl19