UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

302 lines (301 loc) 19.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { AbstractI18NApplicable } from '../AbstractI18NApplicable'; import { Option } from '../decorator/Option.decorator'; import { TableCellModel } from './TableCellModel'; export class TableRowModel extends AbstractI18NApplicable { /** * @param {?} tableModel */ constructor(tableModel) { super(); this.tableModel = tableModel; this.cellModels = []; // Set default values this.editable = false; this.resizable = false; this.selectable = false; this.draggable = false; } /** * @param {?} options * @return {?} */ setOptions(options) { // Call super.setOptions() to auto resolve @Option fields super.setOptions(options); // Call set component type name to auto resolve compoent type this.setComponentTypeName(this.getComponentTypeName()); } /** * @return {?} */ isEditable() { return this.editable; } /** * @param {?} editable * @return {?} */ setEditable(editable) { this.editable = editable; } /** * @return {?} */ isResizable() { return this.resizable; } /** * @param {?} resizable * @return {?} */ setResizable(resizable) { this.resizable = resizable; } /** * @return {?} */ isSelectable() { return this.selectable; } /** * @param {?} selectable * @return {?} */ setSelectable(selectable) { this.selectable = selectable; } /** * @return {?} */ isDraggable() { return this.draggable; } /** * @param {?} draggable * @return {?} */ setDraggable(draggable) { this.draggable = draggable; } /** * @return {?} */ getHeight() { return this.height; } /** * @param {?} height * @return {?} */ setHeight(height) { this.height = height; } /** * @return {?} */ getTableModel() { return this.tableModel; } /** * @param {?} typeName * @return {?} */ resolveType(typeName) { if (this.tableModel === null && typeof this.tableModel === 'undefined') { return null; } return this.tableModel.resolveType(typeName); } /** * @return {?} */ getComponentTypeName() { return this.componentTypeName; } /** * @param {?} typeName * @return {?} */ setComponentTypeName(typeName) { this.componentTypeName = typeName; this.componentType = this.resolveType(typeName); } /** * @return {?} */ getComponentOptions() { return this.componentOptions; } /** * @param {?} options * @return {?} */ setComponentOptions(options) { this.componentOptions = options; } /** * @return {?} */ getComponentType() { return this.componentType; } /** * @return {?} */ getCSSClass() { return this.cssClass; } /** * @param {?} clazz * @return {?} */ setCSSClass(clazz) { this.cssClass = clazz; } /** * @return {?} */ getCellModels() { return [].concat(this.cellModels); } /** * @param {?} index * @return {?} */ getCellModelByIndex(index) { if (typeof index !== 'number') { return null; } if (index < 0 || index >= this.cellModels.length) { return null; } return this.cellModels[index]; } /** * @param {?} cellModel * @return {?} */ getCellModelIndex(cellModel) { if (cellModel === null || typeof cellModel === 'undefined') { return -1; } return this.cellModels.indexOf(cellModel); } /** * @return {?} */ _clear() { this.cellModels = []; } /** * @param {?} index * @param {?} options * @return {?} */ _addCellModelAtIndex(index, options) { if (typeof index !== 'number') { index = this.cellModels.length; } if (index < 0 || index > this.cellModels.length) { throw new Error('The given "index" is out of bound [len=' + this.cellModels.length + ']'); } let /** @type {?} */ cellModel = new TableCellModel(this); cellModel.setOptions(options); // Insert cellModel into specified "index". this.cellModels.splice(index, 0, cellModel); return cellModel; } /** * @param {?} options * @return {?} */ _addCellModel(options) { return this._addCellModelAtIndex(this.cellModels.length, options); } /** * @param {?} cellModel * @return {?} */ _removeCellModel(cellModel) { let /** @type {?} */ index = this.getCellModelIndex(cellModel); if (index < 0) { return false; } this.cellModels.splice(index, 1); return true; } /** * @param {?} index * @return {?} */ _removeCellModelByIndex(index) { let /** @type {?} */ cellModel = this.getCellModelByIndex(index); if (cellModel === null) { return null; } this.cellModels.splice(index, 1); return cellModel; } } tslib_1.__decorate([ Option('type'), tslib_1.__metadata("design:type", String) ], TableRowModel.prototype, "componentTypeName", void 0); tslib_1.__decorate([ Option('options'), tslib_1.__metadata("design:type", Object) ], TableRowModel.prototype, "componentOptions", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TableRowModel.prototype, "editable", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TableRowModel.prototype, "resizable", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TableRowModel.prototype, "selectable", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TableRowModel.prototype, "draggable", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], TableRowModel.prototype, "height", void 0); tslib_1.__decorate([ Option('class'), tslib_1.__metadata("design:type", String) ], TableRowModel.prototype, "cssClass", void 0); function TableRowModel_tsickle_Closure_declarations() { /** @type {?} */ TableRowModel.prototype.componentTypeName; /** @type {?} */ TableRowModel.prototype.componentOptions; /** @type {?} */ TableRowModel.prototype.editable; /** @type {?} */ TableRowModel.prototype.resizable; /** @type {?} */ TableRowModel.prototype.selectable; /** @type {?} */ TableRowModel.prototype.draggable; /** @type {?} */ TableRowModel.prototype.height; /** @type {?} */ TableRowModel.prototype.cssClass; /** @type {?} */ TableRowModel.prototype.tableModel; /** @type {?} */ TableRowModel.prototype.componentType; /** @type {?} */ TableRowModel.prototype.cellModels; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVSb3dNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL21vZGVsL1RhYmxlUm93TW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxELE1BQU0sb0JBQXFCLFNBQVEsc0JBQXNCOzs7O2dCQXVCcEMsVUFBc0I7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQzs7UUFHckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Ozs7OztJQUlsQixVQUFVLENBQUMsT0FBWTs7UUFFNUIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7UUFHMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7Ozs7O0lBR2xELFVBQVU7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0lBR2hCLFdBQVcsQ0FBQyxRQUFpQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQzs7Ozs7SUFHcEIsV0FBVztRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzs7Ozs7O0lBR2pCLFlBQVksQ0FBQyxTQUFrQjtRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFH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LENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqQyxNQUFNLENBQUMsU0FBUyxDQUFDOztDQUdwQjs7SUFyTUUsTUFBTSxDQUFDLE1BQU0sQ0FBQzs7OztJQUVkLE1BQU0sQ0FBQyxTQUFTLENBQUM7Ozs7SUFFakIsTUFBTSxFQUFFOzs7O0lBRVIsTUFBTSxFQUFFOzs7O0lBRVIsTUFBTSxFQUFFOzs7O0lBRVIsTUFBTSxFQUFFOzs7O0lBRVIsTUFBTSxFQUFFOzs7O0lBRVIsTUFBTSxDQUFDLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWJzdHJhY3RJMThOQXBwbGljYWJsZSB9IGZyb20gJy4uL0Fic3RyYWN0STE4TkFwcGxpY2FibGUnO1xuXG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBJMThOIH0gZnJvbSAnLi4vZGVjb3JhdG9yL0kxOE4uZGVjb3JhdG9yJztcblxuaW1wb3J0IHsgVGFibGVNb2RlbCB9IGZyb20gJy4vVGFibGVNb2RlbCc7XG5pbXBvcnQgeyBUYWJsZUNlbGxNb2RlbCB9IGZyb20gJy4vVGFibGVDZWxsTW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVSb3dNb2RlbCBleHRlbmRzIEFic3RyYWN0STE4TkFwcGxpY2FibGUge1xuXG4gIEBPcHRpb24oJ3R5cGUnKVxuICBwcm90ZWN0ZWQgY29tcG9uZW50VHlwZU5hbWU6IHN0cmluZztcbiAgQE9wdGlvbignb3B0aW9ucycpXG4gIHByb3RlY3RlZCBjb21wb25lbnRPcHRpb25zOiBhbnk7XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZWRpdGFibGU6IGJvb2xlYW47XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgcmVzaXphYmxlOiBib29sZWFuO1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIHNlbGVjdGFibGU6IGJvb2xlYW47XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZHJhZ2dhYmxlOiBib29sZWFuO1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGhlaWdodDogc3RyaW5nO1xuICBAT3B0aW9uKCdjbGFzcycpXG4gIHByb3RlY3RlZCBjc3NDbGFzczogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCB0YWJsZU1vZGVsOiBUYWJsZU1vZGVsO1xuICBwcm90ZWN0ZWQgY29tcG9uZW50VHlwZTogVHlwZTxhbnk+O1xuICBwcm90ZWN0ZWQgY2VsbE1vZGVsczogVGFibGVDZWxsTW9kZWxbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IodGFibGVNb2RlbDogVGFibGVNb2RlbCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnRhYmxlTW9kZWwgPSB0YWJsZU1vZGVsO1xuICAgIHRoaXMuY2VsbE1vZGVscyA9IFtdO1xuXG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsdWVzXG4gICAgdGhpcy5lZGl0YWJsZSA9IGZhbHNlO1xuICAgIHRoaXMucmVzaXphYmxlID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5kcmFnZ2FibGUgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlXG4gIHB1YmxpYyBzZXRPcHRpb25zKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIC8vIENhbGwgc3VwZXIuc2V0T3B0aW9ucygpIHRvIGF1dG8gcmVzb2x2ZSBAT3B0aW9uIGZpZWxkc1xuICAgIHN1cGVyLnNldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBDYWxsIHNldCBjb21wb25lbnQgdHlwZSBuYW1lIHRvIGF1dG8gcmVzb2x2ZSBjb21wb2VudCB0eXBlXG4gICAgdGhpcy5zZXRDb21wb25lbnRUeXBlTmFtZSh0aGlzLmdldENvbXBvbmVudFR5cGVOYW1lKCkpO1xuICB9XG5cbiAgcHVibGljIGlzRWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGFibGU7XG4gIH1cblxuICBwdWJsaWMgc2V0RWRpdGFibGUoZWRpdGFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRhYmxlID0gZWRpdGFibGU7XG4gIH1cblxuICBwdWJsaWMgaXNSZXNpemFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzaXphYmxlO1xuICB9XG5cbiAgcHVibGljIHNldFJlc2l6YWJsZShyZXNpemFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6YWJsZSA9IHJlc2l6YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTZWxlY3RhYmxlKHNlbGVjdGFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGFibGUgPSBzZWxlY3RhYmxlO1xuICB9XG5cbiAgcHVibGljIGlzRHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRyYWdnYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREcmFnZ2FibGUoZHJhZ2dhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kcmFnZ2FibGUgPSBkcmFnZ2FibGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0SGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaGVpZ2h0O1xuICB9XG5cbiAgcHVibGljIHNldEhlaWdodChoZWlnaHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgcHVibGljIGdldFRhYmxlTW9kZWwoKTogVGFibGVNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlVHlwZSh0eXBlTmFtZTogc3RyaW5nKTogVHlwZTxhbnk+IHtcbiAgICBpZiAodGhpcy50YWJsZU1vZGVsID09PSBudWxsICYmIHR5cGVvZiB0aGlzLnRhYmxlTW9kZWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLnJlc29sdmVUeXBlKHR5cGVOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRUeXBlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFR5cGVOYW1lO1xuICB9XG5cbiAgcHVibGljIHNldENvbXBvbmVudFR5cGVOYW1lKHR5cGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFR5cGVOYW1lID0gdHlwZU5hbWU7XG4gICAgdGhpcy5jb21wb25lbnRUeXBlID0gdGhpcy5yZXNvbHZlVHlwZSh0eXBlTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tcG9uZW50T3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudE9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcG9uZW50T3B0aW9ucyhvcHRpb25zOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudE9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudFR5cGUoKTogVHlwZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRUeXBlO1xuICB9XG5cbiAgcHVibGljIGdldENTU0NsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY3NzQ2xhc3M7XG4gIH1cblxuICBwdWJsaWMgc2V0Q1NTQ2xhc3MoY2xheno6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3NzQ2xhc3MgPSBjbGF6ejtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsTW9kZWxzKCk6IFRhYmxlQ2VsbE1vZGVsW10ge1xuICAgIHJldHVybiBbXS5jb25jYXQodGhpcy5jZWxsTW9kZWxzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsTW9kZWxCeUluZGV4KGluZGV4OiBudW1iZXIpOiBUYWJsZUNlbGxNb2RlbCB7XG4gICAgaWYgKHR5cGVvZiBpbmRleCAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMuY2VsbE1vZGVscy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNlbGxNb2RlbHNbaW5kZXhdO1xuICB9XG5cbiAgcHVibGljIGdldENlbGxNb2RlbEluZGV4KGNlbGxNb2RlbDogVGFibGVDZWxsTW9kZWwpOiBudW1iZXIge1xuICAgIGlmIChjZWxsTW9kZWwgPT09IG51bGwgfHwgdHlwZW9mIGNlbGxNb2RlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jZWxsTW9kZWxzLmluZGV4T2YoY2VsbE1vZGVsKTtcbiAgfVxuXG4gIHB1YmxpYyBfY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5jZWxsTW9kZWxzID0gW107XG4gIH1cblxuICBwdWJsaWMgX2FkZENlbGxNb2RlbEF0SW5kZXgoaW5kZXg6IG51bWJlciwgb3B0aW9uczogYW55KTogVGFibGVDZWxsTW9kZWwge1xuICAgIGlmICh0eXBlb2YgaW5kZXggIT09ICdudW1iZXInKSB7XG4gICAgICBpbmRleCA9IHRoaXMuY2VsbE1vZGVscy5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiB0aGlzLmNlbGxNb2RlbHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBnaXZlbiBcImluZGV4XCIgaXMgb3V0IG9mIGJvdW5kIFtsZW49JyArIHRoaXMuY2VsbE1vZGVscy5sZW5ndGggKyAnXScpO1xuICAgIH1cblxuICAgIGxldCBjZWxsTW9kZWw6IFRhYmxlQ2VsbE1vZGVsID0gbmV3IFRhYmxlQ2VsbE1vZGVsKHRoaXMpO1xuXG4gICAgY2VsbE1vZGVsLnNldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBJbnNlcnQgY2VsbE1vZGVsIGludG8gc3BlY2lmaWVkIFwiaW5kZXhcIi5cbiAgICB0aGlzLmNlbGxNb2RlbHMuc3BsaWNlKGluZGV4LCAwLCBjZWxsTW9kZWwpO1xuXG4gICAgcmV0dXJuIGNlbGxNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBfYWRkQ2VsbE1vZGVsKG9wdGlvbnM6IGFueSk6IFRhYmxlQ2VsbE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkQ2VsbE1vZGVsQXRJbmRleCh0aGlzLmNlbGxNb2RlbHMubGVuZ3RoLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBfcmVtb3ZlQ2VsbE1vZGVsKGNlbGxNb2RlbDogVGFibGVDZWxsTW9kZWwpOiBib29sZWFuIHtcbiAgICBsZXQgaW5kZXg6IG51bWJlciA9IHRoaXMuZ2V0Q2VsbE1vZGVsSW5kZXgoY2VsbE1vZGVsKTtcblxuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmNlbGxNb2RlbHMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIF9yZW1vdmVDZWxsTW9kZWxCeUluZGV4KGluZGV4OiBudW1iZXIpOiBUYWJsZUNlbGxNb2RlbCB7XG4gICAgbGV0IGNlbGxNb2RlbDogVGFibGVDZWxsTW9kZWwgPSB0aGlzLmdldENlbGxNb2RlbEJ5SW5kZXgoaW5kZXgpO1xuXG4gICAgaWYgKGNlbGxNb2RlbCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5jZWxsTW9kZWxzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICByZXR1cm4gY2VsbE1vZGVsO1xuICB9XG5cbn1cbiJdfQ==