com.phloxui
Version:
PhloxUI Ng2+ Framework
405 lines (404 loc) • 22.3 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';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVSb3dNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL21vZGVsL1RhYmxlUm93TW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztJQUVmLHlDQUFzQjsyQkF1QnBDLFVBQXNCO29CQUN2QyxpQkFBTztRQUVQLEtBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLEtBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDOztRQUdyQixBQURBLHFCQUFxQjtRQUNyQixLQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixLQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixLQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixLQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzs7Ozs7OztJQUlsQixrQ0FBVTs7OztjQUFDLE9BQVk7O1FBRTVCLGlCQUFNLFVBQVUsWUFBQyxPQUFPLENBQUMsQ0FBQzs7UUFHMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7Ozs7O0lBR2xELGtDQUFVOzs7O1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Ozs7OztJQUdoQixtQ0FBVzs7OztjQUFDLFFBQWlCO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDOzs7OztJQUdwQixtQ0FBVzs7OztRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzs7Ozs7O0lBR2pCLG9DQUFZOzs7O2NBQUMsU0FBa0I7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Ozs7O0lBR3RCLG9DQUFZOzs7O1FBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDOzs7Ozs7SUFHbEIscUNBQWE7Ozs7Y0FBQyxVQUFtQjtRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQzs7Ozs7SUFHeEIsbUNBQVc7Ozs7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Ozs7OztJQUdqQixvQ0FBWTs7OztjQUFDLFNBQWtCO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDOzs7OztJQUd0QixpQ0FBUzs7OztRQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDOzs7Ozs7SUFHZCxpQ0FBUzs7OztjQUFDLE1BQWM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Ozs7O0lBR2hCLHFDQUFhOzs7O1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDOzs7Ozs7SUFHbEIsbUNBQVc7Ozs7Y0FBQyxRQUFnQjtRQUNqQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN2RSxNQUFNLENBQUMsSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7O0lBR3hDLDRDQUFvQjs7OztRQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDOzs7Ozs7SUFHekIsNENBQW9COzs7O2NBQUMsUUFBZ0I7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7O0lBRzNDLDJDQUFtQjs7OztRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDOzs7Ozs7SUFHeEIsMkNBQW1COzs7O2NBQUMsT0FBWTtRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDOzs7OztJQUczQix3Q0FBZ0I7Ozs7UUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7Ozs7O0lBR3JCLG1DQUFXOzs7O1FBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDOzs7Ozs7SUFHaEIsbUNBQVc7Ozs7Y0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDOzs7OztJQUdqQixxQ0FBYTs7OztRQUNsQixNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Ozs7OztJQUc3QiwyQ0FBbUI7Ozs7Y0FBQyxLQUFhO1FBQ3RDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQztTQUNiO1FBQ0QsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDOzs7Ozs7SUFHekIseUNBQWlCOzs7O2NBQUMsU0FBeUI7UUFDaEQsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzNELE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDOzs7OztJQUdyQyw4QkFBTTs7OztRQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDOzs7Ozs7O0lBR2hCLDRDQUFvQjs7Ozs7Y0FBQyxLQUFhLEVBQUUsT0FBWTtRQUNyRCxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzlCLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztTQUNoQztRQUNELEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQzNGO1FBRUQscUJBQUksU0FBUyxHQUFtQixJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RCxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztRQUc5QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sQ0FBQyxTQUFTLENBQUM7Ozs7OztJQUdaLHFDQUFhOzs7O2NBQUMsT0FBWTtRQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDOzs7Ozs7SUFHN0Qsd0NBQWdCOzs7O2NBQUMsU0FBeUI7UUFDL0MscUJBQUksS0FBSyxHQUFXLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0RCxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNkLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqQyxNQUFNLENBQUMsSUFBSSxDQUFDOzs7Ozs7SUFHUCwrQ0FBdUI7Ozs7Y0FBQyxLQUFhO1FBQzFDLHFCQUFJLFNBQVMsR0FBbUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqQyxNQUFNLENBQUMsU0FBUyxDQUFDOzs7UUFsTWxCLE1BQU0sQ0FBQyxNQUFNLENBQUM7Ozs7UUFFZCxNQUFNLENBQUMsU0FBUyxDQUFDOzs7O1FBRWpCLE1BQU0sRUFBRTs7OztRQUVSLE1BQU0sRUFBRTs7OztRQUVSLE1BQU0sRUFBRTs7OztRQUVSLE1BQU0sRUFBRTs7OztRQUVSLE1BQU0sRUFBRTs7OztRQUVSLE1BQU0sQ0FBQyxPQUFPLENBQUM7Ozt3QkExQmxCO0VBVW1DLHNCQUFzQjtTQUE1QyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEkxOE5BcHBsaWNhYmxlIH0gZnJvbSAnLi4vQWJzdHJhY3RJMThOQXBwbGljYWJsZSc7XG5cbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJy4uL2RlY29yYXRvci9PcHRpb24uZGVjb3JhdG9yJztcbmltcG9ydCB7IEkxOE4gfSBmcm9tICcuLi9kZWNvcmF0b3IvSTE4Ti5kZWNvcmF0b3InO1xuXG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi9UYWJsZU1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ2VsbE1vZGVsIH0gZnJvbSAnLi9UYWJsZUNlbGxNb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZVJvd01vZGVsIGV4dGVuZHMgQWJzdHJhY3RJMThOQXBwbGljYWJsZSB7XG5cbiAgQE9wdGlvbigndHlwZScpXG4gIHByb3RlY3RlZCBjb21wb25lbnRUeXBlTmFtZTogc3RyaW5nO1xuICBAT3B0aW9uKCdvcHRpb25zJylcbiAgcHJvdGVjdGVkIGNvbXBvbmVudE9wdGlvbnM6IGFueTtcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBlZGl0YWJsZTogYm9vbGVhbjtcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCByZXNpemFibGU6IGJvb2xlYW47XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkcmFnZ2FibGU6IGJvb2xlYW47XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaGVpZ2h0OiBzdHJpbmc7XG4gIEBPcHRpb24oJ2NsYXNzJylcbiAgcHJvdGVjdGVkIGNzc0NsYXNzOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHRhYmxlTW9kZWw6IFRhYmxlTW9kZWw7XG4gIHByb3RlY3RlZCBjb21wb25lbnRUeXBlOiBUeXBlPGFueT47XG4gIHByb3RlY3RlZCBjZWxsTW9kZWxzOiBUYWJsZUNlbGxNb2RlbFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih0YWJsZU1vZGVsOiBUYWJsZU1vZGVsKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudGFibGVNb2RlbCA9IHRhYmxlTW9kZWw7XG4gICAgdGhpcy5jZWxsTW9kZWxzID0gW107XG5cbiAgICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXNcbiAgICB0aGlzLmVkaXRhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5yZXNpemFibGUgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmRyYWdnYWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGVcbiAgcHVibGljIHNldE9wdGlvbnMob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgLy8gQ2FsbCBzdXBlci5zZXRPcHRpb25zKCkgdG8gYXV0byByZXNvbHZlIEBPcHRpb24gZmllbGRzXG4gICAgc3VwZXIuc2V0T3B0aW9ucyhvcHRpb25zKTtcblxuICAgIC8vIENhbGwgc2V0IGNvbXBvbmVudCB0eXBlIG5hbWUgdG8gYXV0byByZXNvbHZlIGNvbXBvZW50IHR5cGVcbiAgICB0aGlzLnNldENvbXBvbmVudFR5cGVOYW1lKHRoaXMuZ2V0Q29tcG9uZW50VHlwZU5hbWUoKSk7XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRFZGl0YWJsZShlZGl0YWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZWRpdGFibGUgPSBlZGl0YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBpc1Jlc2l6YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXNpemFibGU7XG4gIH1cblxuICBwdWJsaWMgc2V0UmVzaXphYmxlKHJlc2l6YWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMucmVzaXphYmxlID0gcmVzaXphYmxlO1xuICB9XG5cbiAgcHVibGljIGlzU2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlO1xuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGFibGUoc2VsZWN0YWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0YWJsZSA9IHNlbGVjdGFibGU7XG4gIH1cblxuICBwdWJsaWMgaXNEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ2dhYmxlO1xuICB9XG5cbiAgcHVibGljIHNldERyYWdnYWJsZShkcmFnZ2FibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRyYWdnYWJsZSA9IGRyYWdnYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIZWlnaHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5oZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0SGVpZ2h0KGhlaWdodDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGFibGVNb2RlbCgpOiBUYWJsZU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVUeXBlKHR5cGVOYW1lOiBzdHJpbmcpOiBUeXBlPGFueT4ge1xuICAgIGlmICh0aGlzLnRhYmxlTW9kZWwgPT09IG51bGwgJiYgdHlwZW9mIHRoaXMudGFibGVNb2RlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWwucmVzb2x2ZVR5cGUodHlwZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudFR5cGVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50VHlwZU5hbWU7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcG9uZW50VHlwZU5hbWUodHlwZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50VHlwZU5hbWUgPSB0eXBlTmFtZTtcbiAgICB0aGlzLmNvbXBvbmVudFR5cGUgPSB0aGlzLnJlc29sdmVUeXBlKHR5cGVOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50T3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb21wb25lbnRPcHRpb25zKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50T3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tcG9uZW50VHlwZSgpOiBUeXBlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q1NTQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jc3NDbGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzZXRDU1NDbGFzcyhjbGF6ejogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jc3NDbGFzcyA9IGNsYXp6O1xuICB9XG5cbiAgcHVibGljIGdldENlbGxNb2RlbHMoKTogVGFibGVDZWxsTW9kZWxbXSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCh0aGlzLmNlbGxNb2RlbHMpO1xuICB9XG5cbiAgcHVibGljIGdldENlbGxNb2RlbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IFRhYmxlQ2VsbE1vZGVsIHtcbiAgICBpZiAodHlwZW9mIGluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5jZWxsTW9kZWxzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2VsbE1vZGVsc1tpbmRleF07XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbE1vZGVsSW5kZXgoY2VsbE1vZGVsOiBUYWJsZUNlbGxNb2RlbCk6IG51bWJlciB7XG4gICAgaWYgKGNlbGxNb2RlbCA9PT0gbnVsbCB8fCB0eXBlb2YgY2VsbE1vZGVsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNlbGxNb2RlbHMuaW5kZXhPZihjZWxsTW9kZWwpO1xuICB9XG5cbiAgcHVibGljIF9jbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNlbGxNb2RlbHMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBfYWRkQ2VsbE1vZGVsQXRJbmRleChpbmRleDogbnVtYmVyLCBvcHRpb25zOiBhbnkpOiBUYWJsZUNlbGxNb2RlbCB7XG4gICAgaWYgKHR5cGVvZiBpbmRleCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5jZWxsTW9kZWxzLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuY2VsbE1vZGVscy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGdpdmVuIFwiaW5kZXhcIiBpcyBvdXQgb2YgYm91bmQgW2xlbj0nICsgdGhpcy5jZWxsTW9kZWxzLmxlbmd0aCArICddJyk7XG4gICAgfVxuXG4gICAgbGV0IGNlbGxNb2RlbDogVGFibGVDZWxsTW9kZWwgPSBuZXcgVGFibGVDZWxsTW9kZWwodGhpcyk7XG5cbiAgICBjZWxsTW9kZWwuc2V0T3B0aW9ucyhvcHRpb25zKTtcblxuICAgIC8vIEluc2VydCBjZWxsTW9kZWwgaW50byBzcGVjaWZpZWQgXCJpbmRleFwiLlxuICAgIHRoaXMuY2VsbE1vZGVscy5zcGxpY2UoaW5kZXgsIDAsIGNlbGxNb2RlbCk7XG5cbiAgICByZXR1cm4gY2VsbE1vZGVsO1xuICB9XG5cbiAgcHVibGljIF9hZGRDZWxsTW9kZWwob3B0aW9uczogYW55KTogVGFibGVDZWxsTW9kZWwge1xuICAgIHJldHVybiB0aGlzLl9hZGRDZWxsTW9kZWxBdEluZGV4KHRoaXMuY2VsbE1vZGVscy5sZW5ndGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIF9yZW1vdmVDZWxsTW9kZWwoY2VsbE1vZGVsOiBUYWJsZUNlbGxNb2RlbCk6IGJvb2xlYW4ge1xuICAgIGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5nZXRDZWxsTW9kZWxJbmRleChjZWxsTW9kZWwpO1xuXG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuY2VsbE1vZGVscy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgX3JlbW92ZUNlbGxNb2RlbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IFRhYmxlQ2VsbE1vZGVsIHtcbiAgICBsZXQgY2VsbE1vZGVsOiBUYWJsZUNlbGxNb2RlbCA9IHRoaXMuZ2V0Q2VsbE1vZGVsQnlJbmRleChpbmRleCk7XG5cbiAgICBpZiAoY2VsbE1vZGVsID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmNlbGxNb2RlbHMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHJldHVybiBjZWxsTW9kZWw7XG4gIH1cblxufVxuIl19