com.phloxui
Version:
PhloxUI Ng2+ Framework
302 lines (301 loc) • 19.4 kB
JavaScript
/**
* @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==