UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

242 lines (241 loc) 22 kB
/** * @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==