UNPKG

ng-zorro-antd-mobile

Version:

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

226 lines (225 loc) 21.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ 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; export class SingleMonthComponent { /** * @param {?} _elementRef */ constructor(_elementRef) { this._elementRef = _elementRef; this.props = /** @type {?} */ ({ rowSize: 'normal' }); this.state = { weekComponents: [] }; this.singleMonth = true; this.genWeek = (weeksData, index) => { const { getDateExtra, monthData, onCellClick, locale, rowSize } = this.props; /** @type {?} */ let rowCls = 'row'; /** @type {?} */ let weeksDataList = []; if (rowSize === 'xl') { rowCls += ' row-xl'; } weeksData.forEach((day, dayOfWeek) => { /** @type {?} */ const extra = (getDateExtra && getDateExtra(new Date(day.tick))) || {}; /** @type {?} */ let info = extra.info; /** @type {?} */ const disable = extra.disable || day.outOfDate; /** @type {?} */ let cls = 'date'; /** @type {?} */ let lCls = 'left'; /** @type {?} */ let rCls = 'right'; /** @type {?} */ let 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 {?} */ let 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, cls, day, rCls, infoCls, info, extra, disable, onCellClick: onCellClick, monthData }; }); this.state.weekComponents[index] = { index: index, rowCls, weeksDataList }; }; this.updateWeeks = (monthData) => { (monthData || this.props.monthData).weeks.forEach((week, index) => { this.genWeek(week, index); }); }; this.setWarpper = (dom) => { this.wrapperDivDOM = dom; }; } /** * @param {?} value * @return {?} */ set data(value) { this.props = Object.assign({}, this.props, value); } /** * @param {?} item * @return {?} */ onClickCell(item) { !item.disable && item.onCellClick && item.onCellClick(item.day, item.monthData); } /** * @return {?} */ ngOnInit() { this.setWarpper(this._elementRef.nativeElement); this.props.monthData.weeks.forEach((week, index) => { this.genWeek(week, index); }); } /** * @return {?} */ ngAfterViewInit() { 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 = () => [ { type: ElementRef } ]; SingleMonthComponent.propDecorators = { data: [{ type: Input }], singleMonth: [{ type: HostBinding, args: ['class.single-month',] }] }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW1vbnRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsiY2FsZW5kYXIvc2luZ2xlLW1vbnRoL3NpbmdsZS1tb250aC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQjNDLE1BQU07Ozs7SUFxQkosWUFBb0IsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7dUNBcEJuQztZQUNOLE9BQU8sRUFBRSxRQUFRO1NBQ0w7cUJBRU47WUFDTixjQUFjLEVBQUUsRUFBRTtTQUNuQjsyQkFZeUQsSUFBSTt1QkFJcEQsQ0FBQyxTQUE0QixFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ3hELE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzs7WUFDN0UsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDOztZQUNuQixJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO2dCQUNwQixNQUFNLElBQUksU0FBUyxDQUFDO2FBQ3JCO1lBRUQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRTs7Z0JBQ25DLE1BQU0sS0FBSyxHQUFHLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7Z0JBQ3ZFLElBQUksSUFBSSxHQUFH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L0MsSUFDSSxJQUFJLENBQUMsS0FBSztRQUNaLElBQUksQ0FBQyxLQUFLLHFCQUNMLElBQUksQ0FBQyxLQUFLLEVBQ1YsS0FBSyxDQUNULENBQUM7S0FDSDs7Ozs7SUErSEQsV0FBVyxDQUFDLElBQUk7UUFDZCxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ2pGOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNCLENBQUMsQ0FBQztLQUNKOzs7O0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNoQjs7O1lBbktGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsK0JBQStCO2dCQUN6QywyNUJBQTRDO2dCQUM1QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7OztZQWhCa0UsVUFBVTs7O21CQTRCMUUsS0FBSzswQkFRTCxXQUFXLFNBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBIb3N0QmluZGluZywgSW5wdXQsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4uL2RhdGUvRGF0YVR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wc1R5cGUge1xuICBsb2NhbGU6IE1vZGVscy5Mb2NhbGU7XG4gIG1vbnRoRGF0YTogTW9kZWxzLk1vbnRoRGF0YTtcbiAgcm93U2l6ZT86ICdub3JtYWwnIHwgJ3hsJztcbiAgZ2V0RGF0ZUV4dHJhPzogKGRhdGU6IERhdGUpID0+IE1vZGVscy5FeHRyYURhdGE7XG4gIG9uQ2VsbENsaWNrPzogKGRhdGE6IE1vZGVscy5DZWxsRGF0YSwgbW9udGhEYXRhOiBNb2RlbHMuTW9udGhEYXRhKSA9PiB2b2lkO1xuICByZWY6IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnU2luZ2xlTW9udGgsIG56bS1zaW5nbGUtbW9udGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2luZ2xlLW1vbnRoLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTaW5nbGVNb250aENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3BzID0ge1xuICAgIHJvd1NpemU6ICdub3JtYWwnXG4gIH0gYXMgUHJvcHNUeXBlO1xuXG4gIHN0YXRlID0ge1xuICAgIHdlZWtDb21wb25lbnRzOiBbXVxuICB9O1xuICByZWY6IChkb20pID0+IHZvaWQ7XG4gIHdyYXBwZXJEaXZET006IEhUTUxEaXZFbGVtZW50IHwgbnVsbDtcblxuICBASW5wdXQoKVxuICBzZXQgZGF0YSh2YWx1ZSkge1xuICAgIHRoaXMucHJvcHMgPSB7XG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgICAgLi4udmFsdWVcbiAgICB9O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zaW5nbGUtbW9udGgnKSBzaW5nbGVNb250aDogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBnZW5XZWVrID0gKHdlZWtzRGF0YTogTW9kZWxzLkNlbGxEYXRhW10sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB7IGdldERhdGVFeHRyYSwgbW9udGhEYXRhLCBvbkNlbGxDbGljaywgbG9jYWxlLCByb3dTaXplIH0gPSB0aGlzLnByb3BzO1xuICAgIGxldCByb3dDbHMgPSAncm93JztcbiAgICBsZXQgd2Vla3NEYXRhTGlzdCA9IFtdO1xuICAgIGlmIChyb3dTaXplID09PSAneGwnKSB7XG4gICAgICByb3dDbHMgKz0gJyByb3cteGwnO1xuICAgIH1cblxuICAgIHdlZWtzRGF0YS5mb3JFYWNoKChkYXksIGRheU9mV2VlaykgPT4ge1xuICAgICAgY29uc3QgZXh0cmEgPSAoZ2V0RGF0ZUV4dHJhICYmIGdldERhdGVFeHRyYShuZXcgRGF0ZShkYXkudGljaykpKSB8fCB7fTtcbiAgICAgIGxldCBpbmZvID0gZXh0cmEuaW5mbztcbiAgICAgIGNvbnN0IGRpc2FibGUgPSBleHRyYS5kaXNhYmxlIHx8IGRheS5vdXRPZkRhdGU7XG5cbiAgICAgIGxldCBjbHMgPSAnZGF0ZSc7XG4gICAgICBsZXQgbENscyA9ICdsZWZ0JztcbiAgICAgIGxldCByQ2xzID0gJ3JpZ2h0JztcbiAgICAgIGxldCBpbmZvQ2xzID0gJ2luZm8nO1xuXG4gICAgICBpZiAoZGF5T2ZXZWVrID09PSAwIHx8IGRheU9mV2VlayA9PT0gNikge1xuICAgICAgICBjbHMgKz0gJyBncmV5JztcbiAgICAgIH1cblxuICAgICAgaWYgKGRpc2FibGUpIHtcbiAgICAgICAgY2xzICs9ICcgZGlzYWJsZSc7XG4gICAgICB9IGVsc2UgaWYgKGluZm8pIHtcbiAgICAgICAgY2xzICs9ICcgaW1wb3J0YW50JztcbiAgICAgIH1cblxuICAgICAgaWYgKGRheS5zZWxlY3RlZCkge1xuICAgICAgICBjbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgbGV0IHN0eWxlVHlwZSA9IGRheS5zZWxlY3RlZDtcbiAgICAgICAgc3dpdGNoIChzdHlsZVR5cGUpIHtcbiAgICAgICAgICBjYXNlIE1vZGVscy5TZWxlY3RUeXBlLk9ubHk6XG4gICAgICAgICAgICBpbmZvID0gbG9jYWxlLmJlZ2luO1xuICAgICAgICAgICAgaW5mb0NscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBNb2RlbHMuU2VsZWN0VHlwZS5BbGw6XG4gICAgICAgICAgICBpbmZvID0gbG9jYWxlLmJlZ2luX292ZXI7XG4gICAgICAgICAgICBpbmZvQ2xzICs9ICcgZGF0ZS1zZWxlY3RlZCc7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgTW9kZWxzLlNlbGVjdFR5cGUuU3RhcnQ6XG4gICAgICAgICAgICBpbmZvID0gbG9jYWxlLmJlZ2luO1xuICAgICAgICAgICAgaW5mb0NscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgaWYgKGRheU9mV2VlayA9PT0gNiB8fCBkYXkuaXNMYXN0T2ZNb250aCkge1xuICAgICAgICAgICAgICBzdHlsZVR5cGUgPSBNb2RlbHMuU2VsZWN0VHlwZS5BbGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIE1vZGVscy5TZWxlY3RUeXBlLk1pZGRsZTpcbiAgICAgICAgICAgIGlmIChkYXlPZldlZWsgPT09IDAgfHwgZGF5LmlzRmlyc3RPZk1vbnRoKSB7XG4gICAgICAgICAgICAgIGlmIChkYXkuaXNMYXN0T2ZNb250aCB8fCBkYXlPZldlZWsgPT09IDYpIHtcbiAgICAgICAgICAgICAgICBzdHlsZVR5cGUgPSBNb2RlbHMuU2VsZWN0VHlwZS5BbGw7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3R5bGVUeXBlID0gTW9kZWxzLlNlbGVjdFR5cGUuU3RhcnQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF5T2ZXZWVrID09PSA2IHx8IGRheS5pc0xhc3RPZk1vbnRoKSB7XG4gICAgICAgICAgICAgIHN0eWxlVHlwZSA9IE1vZGVscy5TZWxlY3RUeXBlLkVuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgTW9kZWxzLlNlbGVjdFR5cGUuRW5kOlxuICAgICAgICAgICAgaW5mbyA9IGxvY2FsZS5vdmVyO1xuICAgICAgICAgICAgaW5mb0NscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgaWYgKGRheU9mV2VlayA9PT0gMCB8fCBkYXkuaXNGaXJzdE9mTW9udGgpIHtcbiAgICAgICAgICAgICAgc3R5bGVUeXBlID0gTW9kZWxzLlNlbGVjdFR5cGUuQWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHN0eWxlVHlwZSkge1xuICAgICAgICAgIGNhc2UgTW9kZWxzLlNlbGVjdFR5cGUuU2luZ2xlOlxuICAgICAgICAgIGNhc2UgTW9kZWxzLlNlbGVjdFR5cGUuT25seTpcbiAgICAgICAgICBjYXNlIE1vZGVscy5TZWxlY3RUeXBlLkFsbDpcbiAgICAgICAgICAgIGNscyArPSAnIHNlbGVjdGVkLXNpbmdsZSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIE1vZGVscy5TZWxlY3RUeXBlLlN0YXJ0OlxuICAgICAgICAgICAgY2xzICs9ICcgc2VsZWN0ZWQtc3RhcnQnO1xuICAgICAgICAgICAgckNscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBNb2RlbHMuU2VsZWN0VHlwZS5NaWRkbGU6XG4gICAgICAgICAgICBjbHMgKz0gJyBzZWxlY3RlZC1taWRkbGUnO1xuICAgICAgICAgICAgbENscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgckNscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBNb2RlbHMuU2VsZWN0VHlwZS5FbmQ6XG4gICAgICAgICAgICBjbHMgKz0gJyBzZWxlY3RlZC1lbmQnO1xuICAgICAgICAgICAgbENscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgd2Vla3NEYXRhTGlzdFtkYXlPZldlZWtdID0ge1xuICAgICAgICBsQ2xzLFxuICAgICAgICBjbHMsXG4gICAgICAgIGRheSxcbiAgICAgICAgckNscyxcbiAgICAgICAgaW5mb0NscyxcbiAgICAgICAgaW5mbyxcbiAgICAgICAgZXh0cmEsXG4gICAgICAgIGRpc2FibGUsXG4gICAgICAgIG9uQ2VsbENsaWNrOiBvbkNlbGxDbGljayxcbiAgICAgICAgbW9udGhEYXRhXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdGF0ZS53ZWVrQ29tcG9uZW50c1tpbmRleF0gPSB7XG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICByb3dDbHMsXG4gICAgICB3ZWVrc0RhdGFMaXN0XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVdlZWtzID0gKG1vbnRoRGF0YT86IE1vZGVscy5Nb250aERhdGEpID0+IHtcbiAgICAobW9udGhEYXRhIHx8IHRoaXMucHJvcHMubW9udGhEYXRhKS53ZWVrcy5mb3JFYWNoKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy5nZW5XZWVrKHdlZWssIGluZGV4KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFdhcnBwZXIgPSAoZG9tOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xuICAgIHRoaXMud3JhcHBlckRpdkRPTSA9IGRvbTtcbiAgfVxuXG4gIG9uQ2xpY2tDZWxsKGl0ZW0pIHtcbiAgICAhaXRlbS5kaXNhYmxlICYmIGl0ZW0ub25DZWxsQ2xpY2sgJiYgaXRlbS5vbkNlbGxDbGljayhpdGVtLmRheSwgaXRlbS5tb250aERhdGEpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRXYXJwcGVyKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5wcm9wcy5tb250aERhdGEud2Vla3MuZm9yRWFjaCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgIHRoaXMuZ2VuV2Vlayh3ZWVrLCBpbmRleCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZWYgPSB0aGlzLnByb3BzLnJlZjtcbiAgICB0aGlzLnJlZih0aGlzKTtcbiAgfVxufVxuIl19