com.phloxui
Version:
PhloxUI Ng2+ Framework
380 lines (379 loc) • 29.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { AbstractI18NApplicable } from '../../share/AbstractI18NApplicable';
import { I18N } from '../../decorator/decorators';
var TableRowController = /** @class */ (function (_super) {
tslib_1.__extends(TableRowController, _super);
function TableRowController(table, data) {
var _this = _super.call(this) || this;
_this.table = table;
_this.data = data;
_this.cellEditing = new Array(table.getModel().getColumnModels().length);
// Init default values
for (var /** @type {?} */ index = 0; index < _this.cellEditing.length; index++) {
_this.cellEditing[index] = false;
}
_this.selfEditable = table.getModel().getRowModel().isEditable();
_this.wrapperHandler = function (event) {
_this.instance = event.instance;
if (typeof _this.instance.setController === 'function') {
// If it is an instance of ITableRow, call setController() automatically.
// If it is an instance of ITableRow, call setController() automatically.
_this.instance.setController(_this);
}
if (typeof _this.instance.initialize === 'function') {
// If it is an instance of ITableComponent, call initialize() automatically.
// If it is an instance of ITableComponent, call initialize() automatically.
_this.instance.initialize(_this.table);
}
// Apply i18n automatically (in case of this.applyI18N() was called before creating component instance).
// Apply i18n automatically (in case of this.applyI18N() was called before creating component instance).
_this.applyI18N(_this.i18nValue);
};
if (table.getModel() && table.getModel().getRowModel() && table.getModel().getRowModel().getCellModels()
&& Array.isArray(table.getModel().getRowModel().getCellModels())) {
_this.cellComponents = new Array(table.getModel().getRowModel().getCellModels().length);
}
else {
_this.cellComponents = [];
}
return _this;
}
/**
* @return {?}
*/
TableRowController.prototype.getRowIndex = /**
* @return {?}
*/
function () {
return this.table.getRowIndex(this);
};
/**
* @return {?}
*/
TableRowController.prototype.getTable = /**
* @return {?}
*/
function () {
return this.table;
};
/**
* @return {?}
*/
TableRowController.prototype.getComponentInstance = /**
* @return {?}
*/
function () {
return this.instance;
};
/**
* @return {?}
*/
TableRowController.prototype.getCellComponentInstances = /**
* @return {?}
*/
function () {
if (this.cellComponents === null || typeof this.cellComponents === 'undefined' || !Array.isArray(this.cellComponents)) {
return null;
}
return [].concat(this.cellComponents);
};
/**
* @param {?} index
* @return {?}
*/
TableRowController.prototype.getCellComponentInstanceAt = /**
* @param {?} index
* @return {?}
*/
function (index) {
if (this.cellComponents === null || typeof this.cellComponents === 'undefined' || !Array.isArray(this.cellComponents)) {
return null;
}
if (index === null || typeof index !== 'number') {
return null;
}
if (index < 0 || index >= this.cellComponents.length) {
return null;
}
return this.cellComponents[index];
};
/**
* @param {?} index
* @param {?} component
* @return {?}
*/
TableRowController.prototype.setCellComponentInstanceAt = /**
* @param {?} index
* @param {?} component
* @return {?}
*/
function (index, component) {
if (this.cellComponents === null || typeof this.cellComponents === 'undefined' || !Array.isArray(this.cellComponents)) {
return;
}
if (index < 0 || index >= this.cellComponents.length) {
return;
}
this.cellComponents[index] = component;
};
/**
* @return {?}
*/
TableRowController.prototype.resetCellComponents = /**
* @return {?}
*/
function () {
this.cellComponents = [];
};
/**
* @return {?}
*/
TableRowController.prototype.getData = /**
* @return {?}
*/
function () {
return this.data;
};
/**
* @param {?} data
* @return {?}
*/
TableRowController.prototype.setData = /**
* @param {?} data
* @return {?}
*/
function (data) {
this.data = data;
};
/**
* @return {?}
*/
TableRowController.prototype.isSelfEditable = /**
* @return {?}
*/
function () {
return this.selfEditable;
};
/**
* @param {?} editable
* @return {?}
*/
TableRowController.prototype.setSelfEditable = /**
* @param {?} editable
* @return {?}
*/
function (editable) {
this.selfEditable = editable;
};
/**
* @return {?}
*/
TableRowController.prototype.isEditable = /**
* @return {?}
*/
function () {
if (this.table === null || typeof this.table === 'undefined') {
return false;
}
var /** @type {?} */ tblModel = this.table.getModel();
if (tblModel === null || typeof tblModel === 'undefined') {
return false;
}
var /** @type {?} */ rowModel = tblModel.rowModel;
if (rowModel === null || typeof rowModel === 'undefined') {
return false;
}
if (this.table.getModel().getRowModel().isEditable()) {
if (!this.isSelfEditable()) {
return false;
}
else {
return true;
}
}
else {
if (this.isSelfEditable()) {
return true;
}
else {
return false;
}
}
};
/**
* @param {?} editing
* @return {?}
*/
TableRowController.prototype.setEditing = /**
* @param {?} editing
* @return {?}
*/
function (editing) {
for (var /** @type {?} */ index = 0; index < this.table.getModel().getRowModel().getCellModels().length; index++) {
this.setCellEditing(index, editing);
}
};
/**
* @return {?}
*/
TableRowController.prototype.isEditing = /**
* @return {?}
*/
function () {
for (var /** @type {?} */ index = 0; index < this.table.getModel().getRowModel().getCellModels().length; index++) {
var /** @type {?} */ editing = this.isCellEditing(index);
if (editing) {
return true;
}
}
return false;
};
/**
* @return {?}
*/
TableRowController.prototype.isEditingMode = /**
* @return {?}
*/
function () {
for (var /** @type {?} */ index = 0; index < this.table.getModel().getRowModel().getCellModels().length; index++) {
var /** @type {?} */ editing = this.isCellEditingMode(index);
if (editing) {
return true;
}
}
return false;
};
/**
* @param {?} index
* @return {?}
*/
TableRowController.prototype.isCellEditable = /**
* @param {?} index
* @return {?}
*/
function (index) {
if (index >= this.getTable().getModel().getColumnModels().length) {
return false;
}
var /** @type {?} */ cell = this.getTable().getModel().getRowModel().getCellModels()[index];
if (cell.getEditorComponentType() === null || cell.getEditorComponentType() === undefined) {
return false;
}
return this.isEditable() && this.getTable().getModel().getColumnModels()[index].isEditable();
};
/**
* @param {?} index
* @return {?}
*/
TableRowController.prototype.isCellEditingMode = /**
* @param {?} index
* @return {?}
*/
function (index) {
return this.isCellEditable(index) && this.isCellEditing(index);
};
/**
* @param {?} index
* @return {?}
*/
TableRowController.prototype.isCellEditing = /**
* @param {?} index
* @return {?}
*/
function (index) {
if (index >= this.cellEditing.length) {
return false;
}
return this.cellEditing[index];
};
/**
* @param {?} index
* @param {?} editing
* @return {?}
*/
TableRowController.prototype.setCellEditing = /**
* @param {?} index
* @param {?} editing
* @return {?}
*/
function (index, editing) {
if (index >= this.cellEditing.length) {
return;
}
var /** @type {?} */ cell = this.getTable().getModel().getRowModel().getCellModels()[index];
if (cell === null || cell === undefined) {
return;
}
if (cell.getEditorComponentType() !== null && cell.getEditorComponentType() !== undefined) {
this.cellEditing[index] = editing;
}
};
/**
* @return {?}
*/
TableRowController.prototype.getWrapperHandler = /**
* @return {?}
*/
function () {
return this.wrapperHandler;
};
/**
* @param {?} oldState
* @return {?}
*/
TableRowController.prototype.loadState = /**
* @param {?} oldState
* @return {?}
*/
function (oldState) {
this.oldState = oldState;
if (oldState === null || typeof oldState === 'undefined') {
return;
}
this.setEditing(oldState.isEditing());
};
/**
* @return {?}
*/
TableRowController.prototype.getOldState = /**
* @return {?}
*/
function () {
return this.oldState;
};
tslib_1.__decorate([
I18N({
bypass: true
}),
tslib_1.__metadata("design:type", Object)
], TableRowController.prototype, "instance", void 0);
tslib_1.__decorate([
I18N('cells'),
tslib_1.__metadata("design:type", Array)
], TableRowController.prototype, "cellComponents", void 0);
return TableRowController;
}(AbstractI18NApplicable));
export { TableRowController };
function TableRowController_tsickle_Closure_declarations() {
/** @type {?} */
TableRowController.prototype.table;
/** @type {?} */
TableRowController.prototype.instance;
/** @type {?} */
TableRowController.prototype.data;
/** @type {?} */
TableRowController.prototype.cellEditing;
/** @type {?} */
TableRowController.prototype.selfEditable;
/** @type {?} */
TableRowController.prototype.wrapperHandler;
/** @type {?} */
TableRowController.prototype.cellComponents;
/** @type {?} */
TableRowController.prototype.oldState;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVSb3dDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L3RhYmxlL1RhYmxlUm93Q29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7SUFFViw4Q0FBc0I7Z0NBZXpDLEtBQWlCLEVBQUUsSUFBVTtvQkFDOUMsaUJBQU87UUFFUCxLQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixLQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixLQUFJLENBQUMsV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7UUFFeEUsR0FBRyxDQUFDLENBQUMscUJBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUM3RCxLQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUNqQztRQUVELEtBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWhFLEtBQUksQ0FBQyxjQUFjLEdBQUcsVUFBQyxLQUFVO1lBQy9CLEtBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUUvQixFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7O2dCQUV0RCxBQURBLHlFQUF5RTtnQkFDekUsS0FBSSxD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O1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDOzs7Ozs7SUFHdEIsc0NBQVM7Ozs7Y0FBQyxRQUE2QjtRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUV6QixFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDekQsTUFBTSxDQUFDO1NBQ1I7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDOzs7OztJQUdqQyx3Q0FBVzs7OztRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7O1FBek90QixJQUFJLENBQUM7WUFDSixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7Ozs7UUFNRCxJQUFJLENBQUMsT0FBTyxDQUFDOzs7NkJBaEJoQjtFQUt3QyxzQkFBc0I7U0FBakQsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGhsb3hUYWJsZSB9IGZyb20gJy4vUGhsb3hUYWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSVRhYmxlUm93Q29udHJvbGxlciB9IGZyb20gJy4vSVRhYmxlUm93Q29udHJvbGxlcic7XG5pbXBvcnQgeyBBYnN0cmFjdEkxOE5BcHBsaWNhYmxlIH0gZnJvbSAnLi4vLi4vc2hhcmUvQWJzdHJhY3RJMThOQXBwbGljYWJsZSc7XG5pbXBvcnQgeyBJMThOIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL2RlY29yYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVSb3dDb250cm9sbGVyIGV4dGVuZHMgQWJzdHJhY3RJMThOQXBwbGljYWJsZSBpbXBsZW1lbnRzIElUYWJsZVJvd0NvbnRyb2xsZXIge1xuXG4gIHByb3RlY3RlZCB0YWJsZTogUGhsb3hUYWJsZTtcbiAgQEkxOE4oe1xuICAgIGJ5cGFzczogdHJ1ZVxuICB9KVxuICBwcm90ZWN0ZWQgaW5zdGFuY2U6IGFueTtcbiAgcHJvdGVjdGVkIGRhdGE6IGFueTtcbiAgcHJvdGVjdGVkIGNlbGxFZGl0aW5nOiBib29sZWFuW107XG4gIHByb3RlY3RlZCBzZWxmRWRpdGFibGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCB3cmFwcGVySGFuZGxlcjogRnVuY3Rpb247XG4gIEBJMThOKCdjZWxscycpXG4gIHByb3RlY3RlZCBjZWxsQ29tcG9uZW50czogYW55W107XG4gIHByb3RlY3RlZCBvbGRTdGF0ZTogSVRhYmxlUm93Q29udHJvbGxlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IodGFibGU6IFBobG94VGFibGUsIGRhdGE/OiBhbnkpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG5cbiAgICB0aGlzLmNlbGxFZGl0aW5nID0gbmV3IEFycmF5KHRhYmxlLmdldE1vZGVsKCkuZ2V0Q29sdW1uTW9kZWxzKCkubGVuZ3RoKTtcbiAgICAvLyBJbml0IGRlZmF1bHQgdmFsdWVzXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuY2VsbEVkaXRpbmcubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLmNlbGxFZGl0aW5nW2luZGV4XSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZkVkaXRhYmxlID0gdGFibGUuZ2V0TW9kZWwoKS5nZXRSb3dNb2RlbCgpLmlzRWRpdGFibGUoKTtcblxuICAgIHRoaXMud3JhcHBlckhhbmRsZXIgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5pbnN0YW5jZSA9IGV2ZW50Lmluc3RhbmNlO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMuaW5zdGFuY2Uuc2V0Q29udHJvbGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBJZiBpdCBpcyBhbiBpbnN0YW5jZSBvZiBJVGFibGVSb3csIGNhbGwgc2V0Q29udHJvbGxlcigpIGF1dG9tYXRpY2FsbHkuXG4gICAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0Q29udHJvbGxlcih0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5pbnN0YW5jZS5pbml0aWFsaXplID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIElmIGl0IGlzIGFuIGluc3RhbmNlIG9mIElUYWJsZUNvbXBvbmVudCwgY2FsbCBpbml0aWFsaXplKCkgYXV0b21hdGljYWxseS5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5pbml0aWFsaXplKHRoaXMudGFibGUpO1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSBpMThuIGF1dG9tYXRpY2FsbHkgKGluIGNhc2Ugb2YgdGhpcy5hcHBseUkxOE4oKSB3YXMgY2FsbGVkIGJlZm9yZSBjcmVhdGluZyBjb21wb25lbnQgaW5zdGFuY2UpLlxuICAgICAgdGhpcy5hcHBseUkxOE4odGhpcy5pMThuVmFsdWUpO1xuICAgIH07XG5cblxuICAgIGlmICh0YWJsZS5nZXRNb2RlbCgpICYmIHRhYmxlLmdldE1vZGVsKCkuZ2V0Um93TW9kZWwoKSAmJiB0YWJsZS5nZXRNb2RlbCgpLmdldFJvd01vZGVsKCkuZ2V0Q2VsbE1vZGVscygpXG4gICAgICAmJiBBcnJheS5pc0FycmF5KHRhYmxlLmdldE1vZGVsKCkuZ2V0Um93TW9kZWwoKS5nZXRDZWxsTW9kZWxzKCkpKSB7XG4gICAgICB0aGlzLmNlbGxDb21wb25lbnRzID0gbmV3IEFycmF5KHRhYmxlLmdldE1vZGVsKCkuZ2V0Um93TW9kZWwoKS5nZXRDZWxsTW9kZWxzKCkubGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jZWxsQ29tcG9uZW50cyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLmdldFJvd0luZGV4KHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGdldFRhYmxlKCk6IFBobG94VGFibGUge1xuICAgIHJldHVybiB0aGlzLnRhYmxlO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudEluc3RhbmNlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbENvbXBvbmVudEluc3RhbmNlcygpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMuY2VsbENvbXBvbmVudHMgPT09IG51bGwgfHwgdHlwZW9mIHRoaXMuY2VsbENvbXBvbmVudHMgPT09ICd1bmRlZmluZWQnIHx8ICFBcnJheS5pc0FycmF5KHRoaXMuY2VsbENvbXBvbmVudHMpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gW10uY29uY2F0KHRoaXMuY2VsbENvbXBvbmVudHMpO1xuICB9XG5cbiAgcHVibGljIGdldENlbGxDb21wb25lbnRJbnN0YW5jZUF0KGluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIGlmICh0aGlzLmNlbGxDb21wb25lbnRzID09PSBudWxsIHx8IHR5cGVvZiB0aGlzLmNlbGxDb21wb25lbnRzID09PSAndW5kZWZpbmVkJyB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLmNlbGxDb21wb25lbnRzKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChpbmRleCA9PT0gbnVsbCB8fCB0eXBlb2YgaW5kZXggIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmNlbGxDb21wb25lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2VsbENvbXBvbmVudHNbaW5kZXhdO1xuICB9XG5cbiAgcHVibGljIHNldENlbGxDb21wb25lbnRJbnN0YW5jZUF0KGluZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2VsbENvbXBvbmVudHMgPT09IG51bGwgfHwgdHlwZW9mIHRoaXMuY2VsbENvbXBvbmVudHMgPT09ICd1bmRlZmluZWQnIHx8ICFBcnJheS5pc0FycmF5KHRoaXMuY2VsbENvbXBvbmVudHMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5jZWxsQ29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNlbGxDb21wb25lbnRzW2luZGV4XSA9IGNvbXBvbmVudDtcbiAgfVxuXG4gIHB1YmxpYyByZXNldENlbGxDb21wb25lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuY2VsbENvbXBvbmVudHMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxmRWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZkVkaXRhYmxlO1xuICB9XG5cbiAgcHVibGljIHNldFNlbGZFZGl0YWJsZShlZGl0YWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZkVkaXRhYmxlID0gZWRpdGFibGU7XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0YWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy50YWJsZSA9PT0gbnVsbCB8fCB0eXBlb2YgdGhpcy50YWJsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgdGJsTW9kZWw6IGFueSA9IHRoaXMudGFibGUuZ2V0TW9kZWwoKTtcbiAgICBpZiAodGJsTW9kZWwgPT09IG51bGwgfHwgdHlwZW9mIHRibE1vZGVsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCByb3dNb2RlbDogYW55ID0gdGJsTW9kZWwucm93TW9kZWw7XG4gICAgaWYgKHJvd01vZGVsID09PSBudWxsIHx8IHR5cGVvZiByb3dNb2RlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZS5nZXRNb2RlbCgpLmdldFJvd01vZGVsKCkuaXNFZGl0YWJsZSgpKSB7XG4gICAgICBpZiAoIXRoaXMuaXNTZWxmRWRpdGFibGUoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNTZWxmRWRpdGFibGUoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RWRpdGluZyhlZGl0aW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMudGFibGUuZ2V0TW9kZWwoKS5nZXRSb3dNb2RlbCgpLmdldENlbGxNb2RlbHMoKS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHRoaXMuc2V0Q2VsbEVkaXRpbmcoaW5kZXgsIGVkaXRpbmcpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzRWRpdGluZygpOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy50YWJsZS5nZXRNb2RlbCgpLmdldFJvd01vZGVsKCkuZ2V0Q2VsbE1vZGVscygpLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgbGV0IGVkaXRpbmc6IGJvb2xlYW4gPSB0aGlzLmlzQ2VsbEVkaXRpbmcoaW5kZXgpO1xuXG4gICAgICBpZiAoZWRpdGluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0aW5nTW9kZSgpOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy50YWJsZS5nZXRNb2RlbCgpLmdldFJvd01vZGVsKCkuZ2V0Q2VsbE1vZGVscygpLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgbGV0IGVkaXRpbmc6IGJvb2xlYW4gPSB0aGlzLmlzQ2VsbEVkaXRpbmdNb2RlKGluZGV4KTtcblxuICAgICAgaWYgKGVkaXRpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGlzQ2VsbEVkaXRhYmxlKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoaW5kZXggPj0gdGhpcy5nZXRUYWJsZSgpLmdldE1vZGVsKCkuZ2V0Q29sdW1uTW9kZWxzKCkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IGNlbGwgPSB0aGlzLmdldFRhYmxlKCkuZ2V0TW9kZWwoKS5nZXRSb3dNb2RlbCgpLmdldENlbGxNb2RlbHMoKVtpbmRleF07XG5cbiAgICBpZiAoY2VsbC5nZXRFZGl0b3JDb21wb25lbnRUeXBlKCkgPT09IG51bGwgfHwgY2VsbC5nZXRFZGl0b3JDb21wb25lbnRUeXBlKCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmlzRWRpdGFibGUoKSAmJiB0aGlzLmdldFRhYmxlKCkuZ2V0TW9kZWwoKS5nZXRDb2x1bW5Nb2RlbHMoKVtpbmRleF0uaXNFZGl0YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGlzQ2VsbEVkaXRpbmdNb2RlKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0NlbGxFZGl0YWJsZShpbmRleCkgJiYgdGhpcy5pc0NlbGxFZGl0aW5nKGluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NlbGxFZGl0aW5nKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoaW5kZXggPj0gdGhpcy5jZWxsRWRpdGluZy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jZWxsRWRpdGluZ1tpbmRleF07XG4gIH1cblxuICBwdWJsaWMgc2V0Q2VsbEVkaXRpbmcoaW5kZXg6IG51bWJlciwgZWRpdGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpbmRleCA+PSB0aGlzLmNlbGxFZGl0aW5nLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjZWxsID0gdGhpcy5nZXRUYWJsZSgpLmdldE1vZGVsKCkuZ2V0Um93TW9kZWwoKS5nZXRDZWxsTW9kZWxzKClbaW5kZXhdO1xuXG4gICAgaWYgKGNlbGwgPT09IG51bGwgfHwgY2VsbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoY2VsbC5nZXRFZGl0b3JDb21wb25lbnRUeXBlKCkgIT09IG51bGwgJiYgY2VsbC5nZXRFZGl0b3JDb21wb25lbnRUeXBlKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jZWxsRWRpdGluZ1tpbmRleF0gPSBlZGl0aW5nO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRXcmFwcGVySGFuZGxlcigpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMud3JhcHBlckhhbmRsZXI7XG4gIH1cblxuICBwdWJsaWMgbG9hZFN0YXRlKG9sZFN0YXRlOiBJVGFibGVSb3dDb250cm9sbGVyKTogdm9pZCB7XG4gICAgdGhpcy5vbGRTdGF0ZSA9IG9sZFN0YXRlO1xuXG4gICAgaWYgKG9sZFN0YXRlID09PSBudWxsIHx8IHR5cGVvZiBvbGRTdGF0ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldEVkaXRpbmcob2xkU3RhdGUuaXNFZGl0aW5nKCkpO1xuICB9XG5cbiAgcHVibGljIGdldE9sZFN0YXRlKCk6IElUYWJsZVJvd0NvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLm9sZFN0YXRlO1xuICB9XG5cbn1cbiJdfQ==