com.phloxui
Version:
PhloxUI Ng2+ Framework
405 lines (404 loc) • 22.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { AbstractI18NApplicable } from '../../share/AbstractI18NApplicable';
import { Option } from '../../decorator/Option.decorator';
import { TableCellModel } from './TableCellModel';
var TableRowModel = /** @class */ (function (_super) {
tslib_1.__extends(TableRowModel, _super);
function TableRowModel(tableModel) {
var _this = _super.call(this) || this;
_this.tableModel = tableModel;
_this.cellModels = [];
// Set default values
// Set default values
_this.editable = false;
_this.resizable = false;
_this.selectable = false;
_this.draggable = false;
return _this;
}
/**
* @param {?} options
* @return {?}
*/
TableRowModel.prototype.setOptions = /**
* @param {?} options
* @return {?}
*/
function (options) {
// Call super.setOptions() to auto resolve @Option fields
_super.prototype.setOptions.call(this, options);
// Call set component type name to auto resolve compoent type
this.setComponentTypeName(this.getComponentTypeName());
};
/**
* @return {?}
*/
TableRowModel.prototype.isEditable = /**
* @return {?}
*/
function () {
return this.editable;
};
/**
* @param {?} editable
* @return {?}
*/
TableRowModel.prototype.setEditable = /**
* @param {?} editable
* @return {?}
*/
function (editable) {
this.editable = editable;
};
/**
* @return {?}
*/
TableRowModel.prototype.isResizable = /**
* @return {?}
*/
function () {
return this.resizable;
};
/**
* @param {?} resizable
* @return {?}
*/
TableRowModel.prototype.setResizable = /**
* @param {?} resizable
* @return {?}
*/
function (resizable) {
this.resizable = resizable;
};
/**
* @return {?}
*/
TableRowModel.prototype.isSelectable = /**
* @return {?}
*/
function () {
return this.selectable;
};
/**
* @param {?} selectable
* @return {?}
*/
TableRowModel.prototype.setSelectable = /**
* @param {?} selectable
* @return {?}
*/
function (selectable) {
this.selectable = selectable;
};
/**
* @return {?}
*/
TableRowModel.prototype.isDraggable = /**
* @return {?}
*/
function () {
return this.draggable;
};
/**
* @param {?} draggable
* @return {?}
*/
TableRowModel.prototype.setDraggable = /**
* @param {?} draggable
* @return {?}
*/
function (draggable) {
this.draggable = draggable;
};
/**
* @return {?}
*/
TableRowModel.prototype.getHeight = /**
* @return {?}
*/
function () {
return this.height;
};
/**
* @param {?} height
* @return {?}
*/
TableRowModel.prototype.setHeight = /**
* @param {?} height
* @return {?}
*/
function (height) {
this.height = height;
};
/**
* @return {?}
*/
TableRowModel.prototype.getTableModel = /**
* @return {?}
*/
function () {
return this.tableModel;
};
/**
* @param {?} typeName
* @return {?}
*/
TableRowModel.prototype.resolveType = /**
* @param {?} typeName
* @return {?}
*/
function (typeName) {
if (this.tableModel === null && typeof this.tableModel === 'undefined') {
return null;
}
return this.tableModel.resolveType(typeName);
};
/**
* @return {?}
*/
TableRowModel.prototype.getComponentTypeName = /**
* @return {?}
*/
function () {
return this.componentTypeName;
};
/**
* @param {?} typeName
* @return {?}
*/
TableRowModel.prototype.setComponentTypeName = /**
* @param {?} typeName
* @return {?}
*/
function (typeName) {
this.componentTypeName = typeName;
this.componentType = this.resolveType(typeName);
};
/**
* @return {?}
*/
TableRowModel.prototype.getComponentOptions = /**
* @return {?}
*/
function () {
return this.componentOptions;
};
/**
* @param {?} options
* @return {?}
*/
TableRowModel.prototype.setComponentOptions = /**
* @param {?} options
* @return {?}
*/
function (options) {
this.componentOptions = options;
};
/**
* @return {?}
*/
TableRowModel.prototype.getComponentType = /**
* @return {?}
*/
function () {
return this.componentType;
};
/**
* @return {?}
*/
TableRowModel.prototype.getCSSClass = /**
* @return {?}
*/
function () {
return this.cssClass;
};
/**
* @param {?} clazz
* @return {?}
*/
TableRowModel.prototype.setCSSClass = /**
* @param {?} clazz
* @return {?}
*/
function (clazz) {
this.cssClass = clazz;
};
/**
* @return {?}
*/
TableRowModel.prototype.getCellModels = /**
* @return {?}
*/
function () {
return [].concat(this.cellModels);
};
/**
* @param {?} index
* @return {?}
*/
TableRowModel.prototype.getCellModelByIndex = /**
* @param {?} index
* @return {?}
*/
function (index) {
if (typeof index !== 'number') {
return null;
}
if (index < 0 || index >= this.cellModels.length) {
return null;
}
return this.cellModels[index];
};
/**
* @param {?} cellModel
* @return {?}
*/
TableRowModel.prototype.getCellModelIndex = /**
* @param {?} cellModel
* @return {?}
*/
function (cellModel) {
if (cellModel === null || typeof cellModel === 'undefined') {
return -1;
}
return this.cellModels.indexOf(cellModel);
};
/**
* @return {?}
*/
TableRowModel.prototype._clear = /**
* @return {?}
*/
function () {
this.cellModels = [];
};
/**
* @param {?} index
* @param {?} options
* @return {?}
*/
TableRowModel.prototype._addCellModelAtIndex = /**
* @param {?} index
* @param {?} options
* @return {?}
*/
function (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 + ']');
}
var /** @type {?} */ cellModel = new TableCellModel(this);
cellModel.setOptions(options);
// Insert cellModel into specified "index".
this.cellModels.splice(index, 0, cellModel);
return cellModel;
};
/**
* @param {?} options
* @return {?}
*/
TableRowModel.prototype._addCellModel = /**
* @param {?} options
* @return {?}
*/
function (options) {
return this._addCellModelAtIndex(this.cellModels.length, options);
};
/**
* @param {?} cellModel
* @return {?}
*/
TableRowModel.prototype._removeCellModel = /**
* @param {?} cellModel
* @return {?}
*/
function (cellModel) {
var /** @type {?} */ index = this.getCellModelIndex(cellModel);
if (index < 0) {
return false;
}
this.cellModels.splice(index, 1);
return true;
};
/**
* @param {?} index
* @return {?}
*/
TableRowModel.prototype._removeCellModelByIndex = /**
* @param {?} index
* @return {?}
*/
function (index) {
var /** @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);
return TableRowModel;
}(AbstractI18NApplicable));
export { TableRowModel };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVSb3dNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9tb2RlbC9UYWJsZVJvd01vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7SUFFZix5Q0FBc0I7MkJBdUJwQyxVQUFzQjtvQkFDdkMsaUJBQU87UUFFUCxLQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixLQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQzs7UUFHckIsQUFEQSxxQkFBcUI7UUFDckIsS0FBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsS0FBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsS0FBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsS0FBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Ozs7Ozs7SUFJbEIsa0NBQVU7Ozs7Y0FBQyxPQUFZOztRQUU1QixpQkFBTSxVQUFVLFlBQUMsT0FBTyxDQUFDLENBQUM7O1FBRzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDOzs7OztJQUdsRCxrQ0FBVTs7OztRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDOzs7Ozs7SUFHaEIsbUNBQVc7Ozs7Y0FBQyxRQUFpQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQzs7Ozs7SUFHcEIsbUNBQVc7Ozs7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Ozs7OztJQUdqQixvQ0FBWTs7OztjQUFDLFNBQWtCO1FBQ3BDLElB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S0FBYTtRQUMxQyxxQkFBSSxTQUFTLEdBQW1CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFakMsTUFBTSxDQUFDLFNBQVMsQ0FBQzs7O1FBbE1sQixNQUFNLENBQUMsTUFBTSxDQUFDOzs7O1FBRWQsTUFBTSxDQUFDLFNBQVMsQ0FBQzs7OztRQUVqQixNQUFNLEVBQUU7Ozs7UUFFUixNQUFNLEVBQUU7Ozs7UUFFUixNQUFNLEVBQUU7Ozs7UUFFUixNQUFNLEVBQUU7Ozs7UUFFUixNQUFNLEVBQUU7Ozs7UUFFUixNQUFNLENBQUMsT0FBTyxDQUFDOzs7d0JBMUJsQjtFQVVtQyxzQkFBc0I7U0FBNUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWJzdHJhY3RJMThOQXBwbGljYWJsZSB9IGZyb20gJy4uLy4uL3NoYXJlL0Fic3RyYWN0STE4TkFwcGxpY2FibGUnO1xuXG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBJMThOIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL0kxOE4uZGVjb3JhdG9yJztcblxuaW1wb3J0IHsgVGFibGVNb2RlbCB9IGZyb20gJy4vVGFibGVNb2RlbCc7XG5pbXBvcnQgeyBUYWJsZUNlbGxNb2RlbCB9IGZyb20gJy4vVGFibGVDZWxsTW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVSb3dNb2RlbCBleHRlbmRzIEFic3RyYWN0STE4TkFwcGxpY2FibGUge1xuXG4gIEBPcHRpb24oJ3R5cGUnKVxuICBwcm90ZWN0ZWQgY29tcG9uZW50VHlwZU5hbWU6IHN0cmluZztcbiAgQE9wdGlvbignb3B0aW9ucycpXG4gIHByb3RlY3RlZCBjb21wb25lbnRPcHRpb25zOiBhbnk7XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZWRpdGFibGU6IGJvb2xlYW47XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgcmVzaXphYmxlOiBib29sZWFuO1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIHNlbGVjdGFibGU6IGJvb2xlYW47XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZHJhZ2dhYmxlOiBib29sZWFuO1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGhlaWdodDogc3RyaW5nO1xuICBAT3B0aW9uKCdjbGFzcycpXG4gIHByb3RlY3RlZCBjc3NDbGFzczogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCB0YWJsZU1vZGVsOiBUYWJsZU1vZGVsO1xuICBwcm90ZWN0ZWQgY29tcG9uZW50VHlwZTogVHlwZTxhbnk+O1xuICBwcm90ZWN0ZWQgY2VsbE1vZGVsczogVGFibGVDZWxsTW9kZWxbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IodGFibGVNb2RlbDogVGFibGVNb2RlbCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnRhYmxlTW9kZWwgPSB0YWJsZU1vZGVsO1xuICAgIHRoaXMuY2VsbE1vZGVscyA9IFtdO1xuXG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsdWVzXG4gICAgdGhpcy5lZGl0YWJsZSA9IGZhbHNlO1xuICAgIHRoaXMucmVzaXphYmxlID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5kcmFnZ2FibGUgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlXG4gIHB1YmxpYyBzZXRPcHRpb25zKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIC8vIENhbGwgc3VwZXIuc2V0T3B0aW9ucygpIHRvIGF1dG8gcmVzb2x2ZSBAT3B0aW9uIGZpZWxkc1xuICAgIHN1cGVyLnNldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBDYWxsIHNldCBjb21wb25lbnQgdHlwZSBuYW1lIHRvIGF1dG8gcmVzb2x2ZSBjb21wb2VudCB0eXBlXG4gICAgdGhpcy5zZXRDb21wb25lbnRUeXBlTmFtZSh0aGlzLmdldENvbXBvbmVudFR5cGVOYW1lKCkpO1xuICB9XG5cbiAgcHVibGljIGlzRWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGFibGU7XG4gIH1cblxuICBwdWJsaWMgc2V0RWRpdGFibGUoZWRpdGFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRhYmxlID0gZWRpdGFibGU7XG4gIH1cblxuICBwdWJsaWMgaXNSZXNpemFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzaXphYmxlO1xuICB9XG5cbiAgcHVibGljIHNldFJlc2l6YWJsZShyZXNpemFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6YWJsZSA9IHJlc2l6YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTZWxlY3RhYmxlKHNlbGVjdGFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGFibGUgPSBzZWxlY3RhYmxlO1xuICB9XG5cbiAgcHVibGljIGlzRHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRyYWdnYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREcmFnZ2FibGUoZHJhZ2dhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kcmFnZ2FibGUgPSBkcmFnZ2FibGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0SGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaGVpZ2h0O1xuICB9XG5cbiAgcHVibGljIHNldEhlaWdodChoZWlnaHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgcHVibGljIGdldFRhYmxlTW9kZWwoKTogVGFibGVNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlVHlwZSh0eXBlTmFtZTogc3RyaW5nKTogVHlwZTxhbnk+IHtcbiAgICBpZiAodGhpcy50YWJsZU1vZGVsID09PSBudWxsICYmIHR5cGVvZiB0aGlzLnRhYmxlTW9kZWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLnJlc29sdmVUeXBlKHR5cGVOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRUeXBlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFR5cGVOYW1lO1xuICB9XG5cbiAgcHVibGljIHNldENvbXBvbmVudFR5cGVOYW1lKHR5cGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFR5cGVOYW1lID0gdHlwZU5hbWU7XG4gICAgdGhpcy5jb21wb25lbnRUeXBlID0gdGhpcy5yZXNvbHZlVHlwZSh0eXBlTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tcG9uZW50T3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudE9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcG9uZW50T3B0aW9ucyhvcHRpb25zOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudE9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudFR5cGUoKTogVHlwZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRUeXBlO1xuICB9XG5cbiAgcHVibGljIGdldENTU0NsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY3NzQ2xhc3M7XG4gIH1cblxuICBwdWJsaWMgc2V0Q1NTQ2xhc3MoY2xheno6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3NzQ2xhc3MgPSBjbGF6ejtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsTW9kZWxzKCk6IFRhYmxlQ2VsbE1vZGVsW10ge1xuICAgIHJldHVybiBbXS5jb25jYXQodGhpcy5jZWxsTW9kZWxzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsTW9kZWxCeUluZGV4KGluZGV4OiBudW1iZXIpOiBUYWJsZUNlbGxNb2RlbCB7XG4gICAgaWYgKHR5cGVvZiBpbmRleCAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMuY2VsbE1vZGVscy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNlbGxNb2RlbHNbaW5kZXhdO1xuICB9XG5cbiAgcHVibGljIGdldENlbGxNb2RlbEluZGV4KGNlbGxNb2RlbDogVGFibGVDZWxsTW9kZWwpOiBudW1iZXIge1xuICAgIGlmIChjZWxsTW9kZWwgPT09IG51bGwgfHwgdHlwZW9mIGNlbGxNb2RlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jZWxsTW9kZWxzLmluZGV4T2YoY2VsbE1vZGVsKTtcbiAgfVxuXG4gIHB1YmxpYyBfY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5jZWxsTW9kZWxzID0gW107XG4gIH1cblxuICBwdWJsaWMgX2FkZENlbGxNb2RlbEF0SW5kZXgoaW5kZXg6IG51bWJlciwgb3B0aW9uczogYW55KTogVGFibGVDZWxsTW9kZWwge1xuICAgIGlmICh0eXBlb2YgaW5kZXggIT09ICdudW1iZXInKSB7XG4gICAgICBpbmRleCA9IHRoaXMuY2VsbE1vZGVscy5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiB0aGlzLmNlbGxNb2RlbHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBnaXZlbiBcImluZGV4XCIgaXMgb3V0IG9mIGJvdW5kIFtsZW49JyArIHRoaXMuY2VsbE1vZGVscy5sZW5ndGggKyAnXScpO1xuICAgIH1cblxuICAgIGxldCBjZWxsTW9kZWw6IFRhYmxlQ2VsbE1vZGVsID0gbmV3IFRhYmxlQ2VsbE1vZGVsKHRoaXMpO1xuXG4gICAgY2VsbE1vZGVsLnNldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBJbnNlcnQgY2VsbE1vZGVsIGludG8gc3BlY2lmaWVkIFwiaW5kZXhcIi5cbiAgICB0aGlzLmNlbGxNb2RlbHMuc3BsaWNlKGluZGV4LCAwLCBjZWxsTW9kZWwpO1xuXG4gICAgcmV0dXJuIGNlbGxNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBfYWRkQ2VsbE1vZGVsKG9wdGlvbnM6IGFueSk6IFRhYmxlQ2VsbE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkQ2VsbE1vZGVsQXRJbmRleCh0aGlzLmNlbGxNb2RlbHMubGVuZ3RoLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBfcmVtb3ZlQ2VsbE1vZGVsKGNlbGxNb2RlbDogVGFibGVDZWxsTW9kZWwpOiBib29sZWFuIHtcbiAgICBsZXQgaW5kZXg6IG51bWJlciA9IHRoaXMuZ2V0Q2VsbE1vZGVsSW5kZXgoY2VsbE1vZGVsKTtcblxuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmNlbGxNb2RlbHMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIF9yZW1vdmVDZWxsTW9kZWxCeUluZGV4KGluZGV4OiBudW1iZXIpOiBUYWJsZUNlbGxNb2RlbCB7XG4gICAgbGV0IGNlbGxNb2RlbDogVGFibGVDZWxsTW9kZWwgPSB0aGlzLmdldENlbGxNb2RlbEJ5SW5kZXgoaW5kZXgpO1xuXG4gICAgaWYgKGNlbGxNb2RlbCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5jZWxsTW9kZWxzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICByZXR1cm4gY2VsbE1vZGVsO1xuICB9XG5cbn1cbiJdfQ==