ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
242 lines (241 loc) • 22 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ViewEncapsulation, HostBinding, Input, ElementRef } from '@angular/core';
import { Models } from '../date/DataTypes';
/**
* @record
*/
export function PropsType() { }
/** @type {?} */
PropsType.prototype.locale;
/** @type {?} */
PropsType.prototype.monthData;
/** @type {?|undefined} */
PropsType.prototype.rowSize;
/** @type {?|undefined} */
PropsType.prototype.getDateExtra;
/** @type {?|undefined} */
PropsType.prototype.onCellClick;
/** @type {?} */
PropsType.prototype.ref;
var SingleMonthComponent = /** @class */ (function () {
function SingleMonthComponent(_elementRef) {
var _this = this;
this._elementRef = _elementRef;
this.props = /** @type {?} */ ({
rowSize: 'normal'
});
this.state = {
weekComponents: []
};
this.singleMonth = true;
this.genWeek = 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(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 Models.SelectType.Only:
info = locale.begin;
infoCls += ' date-selected';
break;
case Models.SelectType.All:
info = locale.begin_over;
infoCls += ' date-selected';
break;
case Models.SelectType.Start:
info = locale.begin;
infoCls += ' date-selected';
if (dayOfWeek === 6 || day.isLastOfMonth) {
styleType = Models.SelectType.All;
}
break;
case Models.SelectType.Middle:
if (dayOfWeek === 0 || day.isFirstOfMonth) {
if (day.isLastOfMonth || dayOfWeek === 6) {
styleType = Models.SelectType.All;
}
else {
styleType = Models.SelectType.Start;
}
}
else if (dayOfWeek === 6 || day.isLastOfMonth) {
styleType = Models.SelectType.End;
}
break;
case Models.SelectType.End:
info = locale.over;
infoCls += ' date-selected';
if (dayOfWeek === 0 || day.isFirstOfMonth) {
styleType = Models.SelectType.All;
}
break;
}
switch (styleType) {
case Models.SelectType.Single:
case Models.SelectType.Only:
case Models.SelectType.All:
cls += ' selected-single';
break;
case Models.SelectType.Start:
cls += ' selected-start';
rCls += ' date-selected';
break;
case Models.SelectType.Middle:
cls += ' selected-middle';
lCls += ' date-selected';
rCls += ' date-selected';
break;
case Models.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 = function (monthData) {
(monthData || _this.props.monthData).weeks.forEach(function (week, index) {
_this.genWeek(week, index);
});
};
this.setWarpper = function (dom) {
_this.wrapperDivDOM = dom;
};
}
Object.defineProperty(SingleMonthComponent.prototype, "data", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.props = tslib_1.__assign({}, this.props, value);
},
enumerable: true,
configurable: true
});
/**
* @param {?} item
* @return {?}
*/
SingleMonthComponent.prototype.onClickCell = /**
* @param {?} item
* @return {?}
*/
function (item) {
!item.disable && item.onCellClick && item.onCellClick(item.day, item.monthData);
};
/**
* @return {?}
*/
SingleMonthComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.setWarpper(this._elementRef.nativeElement);
this.props.monthData.weeks.forEach(function (week, index) {
_this.genWeek(week, index);
});
};
/**
* @return {?}
*/
SingleMonthComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
this.ref = this.props.ref;
this.ref(this);
};
SingleMonthComponent.decorators = [
{ type: Component, args: [{
selector: 'SingleMonth, 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 *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 */
SingleMonthComponent.ctorParameters = function () { return [
{ type: ElementRef }
]; };
SingleMonthComponent.propDecorators = {
data: [{ type: Input }],
singleMonth: [{ type: HostBinding, args: ['class.single-month',] }]
};
return SingleMonthComponent;
}());
export { SingleMonthComponent };
if (false) {
/** @type {?} */
SingleMonthComponent.prototype.props;
/** @type {?} */
SingleMonthComponent.prototype.state;
/** @type {?} */
SingleMonthComponent.prototype.ref;
/** @type {?} */
SingleMonthComponent.prototype.wrapperDivDOM;
/** @type {?} */
SingleMonthComponent.prototype.singleMonth;
/** @type {?} */
SingleMonthComponent.prototype.genWeek;
/** @type {?} */
SingleMonthComponent.prototype.updateWeeks;
/** @type {?} */
SingleMonthComponent.prototype.setWarpper;
/** @type {?} */
SingleMonthComponent.prototype._elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW1vbnRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsiY2FsZW5kYXIvc2luZ2xlLW1vbnRoL3NpbmdsZS1tb250aC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXFDekMsOEJBQW9CLFdBQXVCO1FBQTNDLGlCQUErQztRQUEzQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTt1Q0FwQm5DO1lBQ04sT0FBTyxFQUFFLFFBQVE7U0FDTDtxQkFFTjtZQUNOLGNBQWMsRUFBRSxFQUFFO1NBQ25COzJCQVl5RCxJQUFJO3VCQUlwRCxVQUFDLFNBQTRCLEVBQUUsS0FBYTtZQUNwRCxzQkFBUSw4QkFBWSxFQUFFLHdCQUFTLEVBQUUsNEJBQVcsRUFBRSxrQkFBTSxFQUFFLG9CQUFPLENBQWdCOztZQUM3RSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7O1lBQ25CLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLE1BQU0sSUFBSSxTQUFTLENBQUM7YUFDckI7WUFFRCxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBRyxFQUFFLFNBQVM7O2dCQUMvQixJQUFNLEtBQUssR0FBRyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7O2dCQUN2RSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDOztnQkFDdEIsSUFBTSxPQUFPLEdB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QURSLFVBQ1MsS0FBSztZQUNaLElBQUksQ0FBQyxLQUFLLHdCQUNMLElBQUksQ0FBQyxLQUFLLEVBQ1YsS0FBSyxDQUNULENBQUM7U0FDSDs7O09BQUE7Ozs7O0lBK0hELDBDQUFXOzs7O0lBQVgsVUFBWSxJQUFJO1FBQ2QsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqRjs7OztJQUVELHVDQUFROzs7SUFBUjtRQUFBLGlCQUtDO1FBSkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSztZQUM3QyxLQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzQixDQUFDLENBQUM7S0FDSjs7OztJQUVELDhDQUFlOzs7SUFBZjtRQUNFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNoQjs7Z0JBbktGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO29CQUN6QywyNUJBQTRDO29CQUM1QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7Ozs7Z0JBaEJrRSxVQUFVOzs7dUJBNEIxRSxLQUFLOzhCQVFMLFdBQVcsU0FBQyxvQkFBb0I7OytCQXBDbkM7O1NBaUJhLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiwgSG9zdEJpbmRpbmcsIElucHV0LCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuLi9kYXRlL0RhdGFUeXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHNUeXBlIHtcbiAgbG9jYWxlOiBNb2RlbHMuTG9jYWxlO1xuICBtb250aERhdGE6IE1vZGVscy5Nb250aERhdGE7XG4gIHJvd1NpemU/OiAnbm9ybWFsJyB8ICd4bCc7XG4gIGdldERhdGVFeHRyYT86IChkYXRlOiBEYXRlKSA9PiBNb2RlbHMuRXh0cmFEYXRhO1xuICBvbkNlbGxDbGljaz86IChkYXRhOiBNb2RlbHMuQ2VsbERhdGEsIG1vbnRoRGF0YTogTW9kZWxzLk1vbnRoRGF0YSkgPT4gdm9pZDtcbiAgcmVmOiBhbnk7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1NpbmdsZU1vbnRoLCBuem0tc2luZ2xlLW1vbnRoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbmdsZS1tb250aC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2luZ2xlTW9udGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBwcm9wcyA9IHtcbiAgICByb3dTaXplOiAnbm9ybWFsJ1xuICB9IGFzIFByb3BzVHlwZTtcblxuICBzdGF0ZSA9IHtcbiAgICB3ZWVrQ29tcG9uZW50czogW11cbiAgfTtcbiAgcmVmOiAoZG9tKSA9PiB2b2lkO1xuICB3cmFwcGVyRGl2RE9NOiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XG5cbiAgQElucHV0KClcbiAgc2V0IGRhdGEodmFsdWUpIHtcbiAgICB0aGlzLnByb3BzID0ge1xuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgIC4uLnZhbHVlXG4gICAgfTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2luZ2xlLW1vbnRoJykgc2luZ2xlTW9udGg6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgZ2VuV2VlayA9ICh3ZWVrc0RhdGE6IE1vZGVscy5DZWxsRGF0YVtdLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgeyBnZXREYXRlRXh0cmEsIG1vbnRoRGF0YSwgb25DZWxsQ2xpY2ssIGxvY2FsZSwgcm93U2l6ZSB9ID0gdGhpcy5wcm9wcztcbiAgICBsZXQgcm93Q2xzID0gJ3Jvdyc7XG4gICAgbGV0IHdlZWtzRGF0YUxpc3QgPSBbXTtcbiAgICBpZiAocm93U2l6ZSA9PT0gJ3hsJykge1xuICAgICAgcm93Q2xzICs9ICcgcm93LXhsJztcbiAgICB9XG5cbiAgICB3ZWVrc0RhdGEuZm9yRWFjaCgoZGF5LCBkYXlPZldlZWspID0+IHtcbiAgICAgIGNvbnN0IGV4dHJhID0gKGdldERhdGVFeHRyYSAmJiBnZXREYXRlRXh0cmEobmV3IERhdGUoZGF5LnRpY2spKSkgfHwge307XG4gICAgICBsZXQgaW5mbyA9IGV4dHJhLmluZm87XG4gICAgICBjb25zdCBkaXNhYmxlID0gZXh0cmEuZGlzYWJsZSB8fCBkYXkub3V0T2ZEYXRlO1xuXG4gICAgICBsZXQgY2xzID0gJ2RhdGUnO1xuICAgICAgbGV0IGxDbHMgPSAnbGVmdCc7XG4gICAgICBsZXQgckNscyA9ICdyaWdodCc7XG4gICAgICBsZXQgaW5mb0NscyA9ICdpbmZvJztcblxuICAgICAgaWYgKGRheU9mV2VlayA9PT0gMCB8fCBkYXlPZldlZWsgPT09IDYpIHtcbiAgICAgICAgY2xzICs9ICcgZ3JleSc7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXNhYmxlKSB7XG4gICAgICAgIGNscyArPSAnIGRpc2FibGUnO1xuICAgICAgfSBlbHNlIGlmIChpbmZvKSB7XG4gICAgICAgIGNscyArPSAnIGltcG9ydGFudCc7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXkuc2VsZWN0ZWQpIHtcbiAgICAgICAgY2xzICs9ICcgZGF0ZS1zZWxlY3RlZCc7XG4gICAgICAgIGxldCBzdHlsZVR5cGUgPSBkYXkuc2VsZWN0ZWQ7XG4gICAgICAgIHN3aXRjaCAoc3R5bGVUeXBlKSB7XG4gICAgICAgICAgY2FzZSBNb2RlbHMuU2VsZWN0VHlwZS5Pbmx5OlxuICAgICAgICAgICAgaW5mbyA9IGxvY2FsZS5iZWdpbjtcbiAgICAgICAgICAgIGluZm9DbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgTW9kZWxzLlNlbGVjdFR5cGUuQWxsOlxuICAgICAgICAgICAgaW5mbyA9IGxvY2FsZS5iZWdpbl9vdmVyO1xuICAgICAgICAgICAgaW5mb0NscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIE1vZGVscy5TZWxlY3RUeXBlLlN0YXJ0OlxuICAgICAgICAgICAgaW5mbyA9IGxvY2FsZS5iZWdpbjtcbiAgICAgICAgICAgIGluZm9DbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGlmIChkYXlPZldlZWsgPT09IDYgfHwgZGF5LmlzTGFzdE9mTW9udGgpIHtcbiAgICAgICAgICAgICAgc3R5bGVUeXBlID0gTW9kZWxzLlNlbGVjdFR5cGUuQWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBNb2RlbHMuU2VsZWN0VHlwZS5NaWRkbGU6XG4gICAgICAgICAgICBpZiAoZGF5T2ZXZWVrID09PSAwIHx8IGRheS5pc0ZpcnN0T2ZNb250aCkge1xuICAgICAgICAgICAgICBpZiAoZGF5LmlzTGFzdE9mTW9udGggfHwgZGF5T2ZXZWVrID09PSA2KSB7XG4gICAgICAgICAgICAgICAgc3R5bGVUeXBlID0gTW9kZWxzLlNlbGVjdFR5cGUuQWxsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0eWxlVHlwZSA9IE1vZGVscy5TZWxlY3RUeXBlLlN0YXJ0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRheU9mV2VlayA9PT0gNiB8fCBkYXkuaXNMYXN0T2ZNb250aCkge1xuICAgICAgICAgICAgICBzdHlsZVR5cGUgPSBNb2RlbHMuU2VsZWN0VHlwZS5FbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIE1vZGVscy5TZWxlY3RUeXBlLkVuZDpcbiAgICAgICAgICAgIGluZm8gPSBsb2NhbGUub3ZlcjtcbiAgICAgICAgICAgIGluZm9DbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGlmIChkYXlPZldlZWsgPT09IDAgfHwgZGF5LmlzRmlyc3RPZk1vbnRoKSB7XG4gICAgICAgICAgICAgIHN0eWxlVHlwZSA9IE1vZGVscy5TZWxlY3RUeXBlLkFsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChzdHlsZVR5cGUpIHtcbiAgICAgICAgICBjYXNlIE1vZGVscy5TZWxlY3RUeXBlLlNpbmdsZTpcbiAgICAgICAgICBjYXNlIE1vZGVscy5TZWxlY3RUeXBlLk9ubHk6XG4gICAgICAgICAgY2FzZSBNb2RlbHMuU2VsZWN0VHlwZS5BbGw6XG4gICAgICAgICAgICBjbHMgKz0gJyBzZWxlY3RlZC1zaW5nbGUnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBNb2RlbHMuU2VsZWN0VHlwZS5TdGFydDpcbiAgICAgICAgICAgIGNscyArPSAnIHNlbGVjdGVkLXN0YXJ0JztcbiAgICAgICAgICAgIHJDbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgTW9kZWxzLlNlbGVjdFR5cGUuTWlkZGxlOlxuICAgICAgICAgICAgY2xzICs9ICcgc2VsZWN0ZWQtbWlkZGxlJztcbiAgICAgICAgICAgIGxDbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIHJDbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgTW9kZWxzLlNlbGVjdFR5cGUuRW5kOlxuICAgICAgICAgICAgY2xzICs9ICcgc2VsZWN0ZWQtZW5kJztcbiAgICAgICAgICAgIGxDbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHdlZWtzRGF0YUxpc3RbZGF5T2ZXZWVrXSA9IHtcbiAgICAgICAgbENscyxcbiAgICAgICAgY2xzLFxuICAgICAgICBkYXksXG4gICAgICAgIHJDbHMsXG4gICAgICAgIGluZm9DbHMsXG4gICAgICAgIGluZm8sXG4gICAgICAgIGV4dHJhLFxuICAgICAgICBkaXNhYmxlLFxuICAgICAgICBvbkNlbGxDbGljazogb25DZWxsQ2xpY2ssXG4gICAgICAgIG1vbnRoRGF0YVxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUud2Vla0NvbXBvbmVudHNbaW5kZXhdID0ge1xuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgcm93Q2xzLFxuICAgICAgd2Vla3NEYXRhTGlzdFxuICAgIH07XG4gIH1cblxuICB1cGRhdGVXZWVrcyA9IChtb250aERhdGE/OiBNb2RlbHMuTW9udGhEYXRhKSA9PiB7XG4gICAgKG1vbnRoRGF0YSB8fCB0aGlzLnByb3BzLm1vbnRoRGF0YSkud2Vla3MuZm9yRWFjaCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgIHRoaXMuZ2VuV2Vlayh3ZWVrLCBpbmRleCk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRXYXJwcGVyID0gKGRvbTogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICB0aGlzLndyYXBwZXJEaXZET00gPSBkb207XG4gIH1cblxuICBvbkNsaWNrQ2VsbChpdGVtKSB7XG4gICAgIWl0ZW0uZGlzYWJsZSAmJiBpdGVtLm9uQ2VsbENsaWNrICYmIGl0ZW0ub25DZWxsQ2xpY2soaXRlbS5kYXksIGl0ZW0ubW9udGhEYXRhKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0V2FycHBlcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucHJvcHMubW9udGhEYXRhLndlZWtzLmZvckVhY2goKHdlZWssIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLmdlbldlZWsod2VlaywgaW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucmVmID0gdGhpcy5wcm9wcy5yZWY7XG4gICAgdGhpcy5yZWYodGhpcyk7XG4gIH1cbn1cbiJdfQ==