@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
222 lines • 18.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: tmpl/data-table-column-tmpl.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
import { of } from 'rxjs';
import { DataTableCellEditTmplComponent } from './data-table-cell-edit-tmpl.component';
import { DataTableCellViewTmplComponent } from './data-table-cell-view-tmpl.component';
import { DataTableHeadCellTmplComponent } from './data-table-head-cell-tmpl.component';
export class DataTableColumnTmplComponent {
constructor() {
this.fieldType = 'text';
this.order = Number.MAX_VALUE;
this.nestedColumn = false;
this.filterChange = new EventEmitter();
this.filterMultiple = true;
this.orderChange = new EventEmitter();
// 鼠标是否移动到当前表头单元格
this.selected = false;
this.filterIconActiveInner = false;
}
/**
* @return {?}
*/
ngOnInit() {
if (this.filterable) {
if (this.filterList) {
if (!this.searchFn) {
this.searchFn = (/**
* @param {?} item
* @return {?}
*/
(item) => {
return of((this.filterList ? this.filterList : [])
.filter((/**
* @param {?} value
* @return {?}
*/
value => value.name.toLowerCase().includes(item.toLowerCase()))));
});
}
}
}
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
if (changes['order']) {
this.orderChange.emit(changes['order'].currentValue);
}
if (changes['filterList']) {
if (this.filterIconActive !== undefined) {
return;
}
/** @type {?} */
const checkedList = this.filterList.filter((/**
* @param {?} item
* @return {?}
*/
item => item.checked));
if (checkedList.length && (checkedList.length < this.filterList.length)) {
this.filterIconActiveInner = true;
}
else {
this.filterIconActiveInner = false;
}
}
}
/**
* @return {?}
*/
ngOnDestroy() {
this.orderChange.unsubscribe();
}
// column.extraOptions?.dateFormat
/**
* @param {?} filterData
* @return {?}
*/
emitFilterData(filterData) {
this.filterChange.emit(filterData);
}
/**
* @param {?} isOpen
* @return {?}
*/
canFilter(isOpen) {
/** @type {?} */
let changeResult = Promise.resolve(true);
if (this.beforeFilter) {
/** @type {?} */
const result = this.beforeFilter(isOpen);
if (typeof result !== 'undefined') {
if (result.then) {
changeResult = result;
}
else if (result.subscribe) {
changeResult = ((/** @type {?} */ (result))).toPromise();
}
else {
changeResult = Promise.resolve(result);
}
}
}
return changeResult;
}
}
DataTableColumnTmplComponent.decorators = [
{ type: Component, args: [{
selector: 'd-column',
template: '',
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
DataTableColumnTmplComponent.ctorParameters = () => [];
DataTableColumnTmplComponent.propDecorators = {
advancedHeader: [{ type: Input }],
fieldType: [{ type: Input }],
maxWidth: [{ type: Input }],
minWidth: [{ type: Input }],
field: [{ type: Input }],
header: [{ type: Input }],
sortable: [{ type: Input }],
editable: [{ type: Input }],
unresizable: [{ type: Input }],
filterable: [{ type: Input }],
cellClass: [{ type: Input }],
width: [{ type: Input }],
fixedLeft: [{ type: Input }],
fixedRight: [{ type: Input }],
extraOptions: [{ type: Input }],
order: [{ type: Input }],
nestedColumn: [{ type: Input }],
filterList: [{ type: Input }],
filterChange: [{ type: Output }],
filterMultiple: [{ type: Input }],
filterIconActive: [{ type: Input }],
filterBoxWidth: [{ type: Input }],
filterBoxHeight: [{ type: Input }],
beforeFilter: [{ type: Input }],
cellCmp: [{ type: ContentChild, args: [DataTableCellViewTmplComponent, { static: false },] }],
cellEditCmp: [{ type: ContentChild, args: [DataTableCellEditTmplComponent, { static: false },] }],
headCellTmpl: [{ type: ContentChild, args: [DataTableHeadCellTmplComponent, { static: false },] }],
customFilterTemplate: [{ type: Input }],
searchFn: [{ type: Input }]
};
if (false) {
/** @type {?} */
DataTableColumnTmplComponent.prototype.advancedHeader;
/** @type {?} */
DataTableColumnTmplComponent.prototype.fieldType;
/** @type {?} */
DataTableColumnTmplComponent.prototype.maxWidth;
/** @type {?} */
DataTableColumnTmplComponent.prototype.minWidth;
/** @type {?} */
DataTableColumnTmplComponent.prototype.field;
/** @type {?} */
DataTableColumnTmplComponent.prototype.header;
/** @type {?} */
DataTableColumnTmplComponent.prototype.sortable;
/** @type {?} */
DataTableColumnTmplComponent.prototype.editable;
/** @type {?} */
DataTableColumnTmplComponent.prototype.unresizable;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterable;
/** @type {?} */
DataTableColumnTmplComponent.prototype.cellClass;
/** @type {?} */
DataTableColumnTmplComponent.prototype.width;
/** @type {?} */
DataTableColumnTmplComponent.prototype.fixedLeft;
/** @type {?} */
DataTableColumnTmplComponent.prototype.fixedRight;
/** @type {?} */
DataTableColumnTmplComponent.prototype.extraOptions;
/** @type {?} */
DataTableColumnTmplComponent.prototype.order;
/** @type {?} */
DataTableColumnTmplComponent.prototype.nestedColumn;
/**
* 传入筛选列表
* @type {?}
*/
DataTableColumnTmplComponent.prototype.filterList;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterChange;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterMultiple;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterIconActive;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterBoxWidth;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterBoxHeight;
/** @type {?} */
DataTableColumnTmplComponent.prototype.beforeFilter;
/** @type {?} */
DataTableColumnTmplComponent.prototype.cellCmp;
/** @type {?} */
DataTableColumnTmplComponent.prototype.cellEditCmp;
/** @type {?} */
DataTableColumnTmplComponent.prototype.headCellTmpl;
/** @type {?} */
DataTableColumnTmplComponent.prototype.customFilterTemplate;
/** @type {?} */
DataTableColumnTmplComponent.prototype.searchFn;
/** @type {?} */
DataTableColumnTmplComponent.prototype.orderChange;
/** @type {?} */
DataTableColumnTmplComponent.prototype._formatter;
/** @type {?} */
DataTableColumnTmplComponent.prototype.selected;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterIconActiveInner;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4tdG1wbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kZXZ1aS9kYXRhLXRhYmxlLyIsInNvdXJjZXMiOlsidG1wbC9kYXRhLXRhYmxlLWNvbHVtbi10bXBsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQ2xELE1BQU0sRUFBaUIsV0FBVyxFQUN0RCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBT3ZGLE1BQU0sT0FBTyw0QkFBNEI7SUE2Q3ZDO1FBdENTLGNBQVMsR0FBRyxNQUFNLENBQUM7UUFlbkIsVUFBSyxHQUFXLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDakMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFLcEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUNuRCxtQkFBYyxHQUFHLElBQUksQ0FBQztRQVUvQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDOztRQUloRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztJQUc5QixDQUFDOzs7O0lBQ0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNsQixJQUFJLENBQUMsUUFBUTs7OztvQkFBRyxDQUFDLElB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QUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTswQkFDOUQsWUFBWSxTQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTsyQkFDOUQsWUFBWSxTQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTttQ0FDOUQsS0FBSzt1QkFDTCxLQUFLOzs7O0lBckNOLHNEQUtHOztJQUNILGlEQUE0Qjs7SUFDNUIsZ0RBQTBCOztJQUMxQixnREFBMEI7O0lBQzFCLDZDQUF1Qjs7SUFDdkIsOENBQXdCOztJQUN4QixnREFBMkI7O0lBQzNCLGdEQUEyQjs7SUFDM0IsbURBQThCOztJQUM5QixrREFBNkI7O0lBQzdCLGlEQUEyQjs7SUFDM0IsNkNBQXVCOztJQUV2QixpREFBNEI7O0lBQzVCLGtEQUE2Qjs7SUFDN0Isb0RBQTJCOztJQUMzQiw2Q0FBMEM7O0lBQzFDLG9EQUE4Qjs7Ozs7SUFJOUIsa0RBQXlDOztJQUN6QyxvREFBNEQ7O0lBQzVELHNEQUErQjs7SUFDL0Isd0RBQW1DOztJQUNuQyxzREFBNkI7O0lBQzdCLHVEQUE4Qjs7SUFDOUIsb0RBQW1GOztJQUNuRiwrQ0FBeUc7O0lBQ3pHLG1EQUE2Rzs7SUFDN0csb0RBQThHOztJQUM5Ryw0REFBZ0Q7O0lBQ2hELGdEQUE0RDs7SUFDNUQsbURBQWdEOztJQUNoRCxrREFBNkM7O0lBRzdDLGdEQUFpQjs7SUFDakIsNkRBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJDb25maWcgfSBmcm9tICcuLi9kYXRhLXRhYmxlLm1vZGVsJztcclxuaW1wb3J0IHsgRGF0YVRhYmxlQ2VsbEVkaXRUbXBsQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNlbGwtZWRpdC10bXBsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGFUYWJsZUNlbGxWaWV3VG1wbENvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS1jZWxsLXZpZXctdG1wbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXRhVGFibGVIZWFkQ2VsbFRtcGxDb21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUtaGVhZC1jZWxsLXRtcGwuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZC1jb2x1bW4nLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29sdW1uVG1wbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGFkdmFuY2VkSGVhZGVyOiBBcnJheTx7XHJcbiAgICBoZWFkZXI6IHN0cmluZztcclxuICAgIHJvd3NwYW46IG51bWJlcjtcclxuICAgIGNvbHNwYW46IG51bWJlcjtcclxuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XHJcbiAgfT47XHJcbiAgQElucHV0KCkgZmllbGRUeXBlID0gJ3RleHQnO1xyXG4gIEBJbnB1dCgpIG1heFdpZHRoOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWluV2lkdGg6IHN0cmluZztcclxuICBASW5wdXQoKSBmaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhlYWRlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNvcnRhYmxlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHVucmVzaXphYmxlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZpbHRlcmFibGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2VsbENsYXNzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZztcclxuICAvLyBASW5wdXQoKSBmaXhlZD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZml4ZWRMZWZ0Pzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZpeGVkUmlnaHQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZXh0cmFPcHRpb25zOiBhbnk7XHJcbiAgQElucHV0KCkgb3JkZXI6IG51bWJlciA9IE51bWJlci5NQVhfVkFMVUU7XHJcbiAgQElucHV0KCkgbmVzdGVkQ29sdW1uID0gZmFsc2U7XHJcbiAgLyoqXHJcbiog5Lyg5YWl562b6YCJ5YiX6KGoXHJcbiovXHJcbiAgQElucHV0KCkgZmlsdGVyTGlzdDogQXJyYXk8RmlsdGVyQ29uZmlnPjtcclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJDb25maWdbXT4oKTtcclxuICBASW5wdXQoKSBmaWx0ZXJNdWx0aXBsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgZmlsdGVySWNvbkFjdGl2ZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBmaWx0ZXJCb3hXaWR0aDogYW55O1xyXG4gIEBJbnB1dCgpIGZpbHRlckJveEhlaWdodDogYW55O1xyXG4gIEBJbnB1dCgpIGJlZm9yZUZpbHRlcjogKHZhbHVlKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgQENvbnRlbnRDaGlsZChEYXRhVGFibGVDZWxsVmlld1RtcGxDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBjZWxsQ21wOiBEYXRhVGFibGVDZWxsVmlld1RtcGxDb21wb25lbnQ7XHJcbiAgQENvbnRlbnRDaGlsZChEYXRhVGFibGVDZWxsRWRpdFRtcGxDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBjZWxsRWRpdENtcDogRGF0YVRhYmxlQ2VsbEVkaXRUbXBsQ29tcG9uZW50O1xyXG4gIEBDb250ZW50Q2hpbGQoRGF0YVRhYmxlSGVhZENlbGxUbXBsQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgaGVhZENlbGxUbXBsOiBEYXRhVGFibGVIZWFkQ2VsbFRtcGxDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgY3VzdG9tRmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgc2VhcmNoRm46ICh0ZXJtOiBzdHJpbmcpID0+IE9ic2VydmFibGU8QXJyYXk8YW55Pj47XHJcbiAgb3JkZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNpbXBsZUNoYW5nZXM+KCk7XHJcbiAgX2Zvcm1hdHRlcjogKGl0ZW06IGFueSwgcm93PzogYW55KSA9PiBzdHJpbmc7XHJcblxyXG4gIC8vIOm8oOagh+aYr+WQpuenu+WKqOWIsOW9k+WJjeihqOWktOWNleWFg+agvFxyXG4gIHNlbGVjdGVkID0gZmFsc2U7XHJcbiAgZmlsdGVySWNvbkFjdGl2ZUlubmVyID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZpbHRlcmFibGUpIHtcclxuICAgICAgaWYgKHRoaXMuZmlsdGVyTGlzdCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hGbikge1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hGbiA9IChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihcclxuICAgICAgICAgICAgICAodGhpcy5maWx0ZXJMaXN0ID8gdGhpcy5maWx0ZXJMaXN0IDogW10pXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKHZhbHVlID0+IHZhbHVlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhpdGVtLnRvTG93ZXJDYXNlKCkpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydvcmRlciddKSB7XHJcbiAgICAgIHRoaXMub3JkZXJDaGFuZ2UuZW1pdChjaGFuZ2VzWydvcmRlciddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVyTGlzdCddKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbHRlckljb25BY3RpdmUgIT09IHVuZGVmaW5lZCkgeyByZXR1cm47IH1cclxuICAgICAgY29uc3QgY2hlY2tlZExpc3QgPSB0aGlzLmZpbHRlckxpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS5jaGVja2VkKTtcclxuICAgICAgaWYgKGNoZWNrZWRMaXN0Lmxlbmd0aCAmJiAoY2hlY2tlZExpc3QubGVuZ3RoIDwgdGhpcy5maWx0ZXJMaXN0Lmxlbmd0aCkpIHtcclxuICAgICAgICB0aGlzLmZpbHRlckljb25BY3RpdmVJbm5lciA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJJY29uQWN0aXZlSW5uZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm9yZGVyQ2hhbmdlLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBjb2x1bW4uZXh0cmFPcHRpb25zPy5kYXRlRm9ybWF0XHJcblxyXG4gIGVtaXRGaWx0ZXJEYXRhKGZpbHRlckRhdGEpIHtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoZmlsdGVyRGF0YSk7XHJcbiAgfVxyXG4gIGNhbkZpbHRlcihpc09wZW4pIHtcclxuICAgIGxldCBjaGFuZ2VSZXN1bHQgPSBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuYmVmb3JlRmlsdGVyKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gdGhpcy5iZWZvcmVGaWx0ZXIoaXNPcGVuKTtcclxuICAgICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgaWYgKHJlc3VsdC50aGVuKSB7XHJcbiAgICAgICAgICBjaGFuZ2VSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQuc3Vic2NyaWJlKSB7XHJcbiAgICAgICAgICBjaGFuZ2VSZXN1bHQgPSAocmVzdWx0IGFzIE9ic2VydmFibGU8Ym9vbGVhbj4pLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjaGFuZ2VSZXN1bHQgPSBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2hhbmdlUmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=