com.phloxui
Version:
PhloxUI Ng2+ Framework
268 lines (267 loc) • 18.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, EventEmitter, Output } from '@angular/core';
import { AbstractHasDataHelp } from '../../../AbstractHasDataHelp';
import { Option } from '../../../../decorator/Option.decorator';
import { EventUtils } from '../../../../share/utils/EventUtils';
import { COLUMN_CHANGE_EVENT, BEFORE_COLUMN_CHANGE_EVENT } from '../../../../share/CustomEventType';
var /** @type {?} */ TYPE_NAME = "phx-column-display";
var ColumnDisplay = /** @class */ (function (_super) {
tslib_1.__extends(ColumnDisplay, _super);
function ColumnDisplay(elementRef) {
var _this = _super.call(this, elementRef) || this;
_this.columnChangeEvent = new EventEmitter();
_this.beforeColumnChangeEvent = new EventEmitter();
_this.columns = [];
return _this;
}
/**
* @return {?}
*/
ColumnDisplay.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
};
/**
* @param {?} column
* @return {?}
*/
ColumnDisplay.prototype.setColumns = /**
* @param {?} column
* @return {?}
*/
function (column) {
this.columns = column;
};
/**
* @return {?}
*/
ColumnDisplay.prototype.getColumns = /**
* @return {?}
*/
function () {
return this.columns;
};
/**
* @param {?} $event
* @param {?} item
* @return {?}
*/
ColumnDisplay.prototype.onColumnsDisplayChange = /**
* @param {?} $event
* @param {?} item
* @return {?}
*/
function ($event, item) {
var _this = this;
if ($event !== null || $event !== undefined) {
var /** @type {?} */ oldValue = $event.detail.data.oldValue;
var /** @type {?} */ newValue = $event.detail.data.newValue;
// update value
item.show = newValue;
// emit column change
var /** @type {?} */ data_1 = {
oldValue: oldValue,
newValue: newValue,
column: item
};
EventUtils.handleBrowserEvent(this, 'beforeColumnChangeEvent', $event, null, function (event) {
// doEvent
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeColumnChangeEvent($event);
}, function ($event, result) {
// emitAfterEvent
// emitAfterEvent
_this.emitColumnChangeEvent(data_1, $event);
}, function ($event) {
// doPrevented
});
}
};
/**
* @param {?=} $event
* @return {?}
*/
ColumnDisplay.prototype.emitBeforeColumnChangeEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
// emit event
if (this.beforeColumnChangeEvent !== null) {
var /** @type {?} */ data = {};
var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_COLUMN_CHANGE_EVENT, this, data, null);
this.beforeColumnChangeEvent.emit(ev);
}
};
/**
* @param {?} data
* @param {?=} $event
* @return {?}
*/
ColumnDisplay.prototype.emitColumnChangeEvent = /**
* @param {?} data
* @param {?=} $event
* @return {?}
*/
function (data, $event) {
// emit event
if (this.columnChangeEvent !== null) {
var /** @type {?} */ ev = EventUtils.newCustomEvent(COLUMN_CHANGE_EVENT, this, data, null);
this.columnChangeEvent.emit(ev);
}
};
/**
* @return {?}
*/
ColumnDisplay.prototype.getBeforeColumnChangeEvent = /**
* @return {?}
*/
function () {
return this.beforeColumnChangeEvent;
};
/**
* @param {?} event
* @return {?}
*/
ColumnDisplay.prototype.setBeforeColumnChangeEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.beforeColumnChangeEvent = event;
};
/**
* @return {?}
*/
ColumnDisplay.prototype.getColumnChangeEvent = /**
* @return {?}
*/
function () {
return this.columnChangeEvent;
};
/**
* @param {?} event
* @return {?}
*/
ColumnDisplay.prototype.setColumnChangeEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.columnChangeEvent = event;
};
/**
* @return {?}
*/
ColumnDisplay.prototype.isSelfDataDirty = /**
* @return {?}
*/
function () {
return false;
};
/**
* @param {?} data
* @return {?}
*/
ColumnDisplay.prototype.selfSaveData = /**
* @param {?} data
* @return {?}
*/
function (data) {
};
/**
* @return {?}
*/
ColumnDisplay.prototype.selfResetData = /**
* @return {?}
*/
function () {
};
ColumnDisplay.TYPE_NAME = TYPE_NAME;
ColumnDisplay.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"phx-column-display\">\n <div *ngFor=\"let item of getColumns(); let i = index\">\n <div class=\"boder-column-display\">\n <material-checkbox [data]=\"item\" [label]=\"item.label\" [field]=\"'show'\" (phxChange)=\"onColumnsDisplayChange($event, item)\"></material-checkbox>\n </div>\n </div>\n</div>\n"
},] },
];
/** @nocollapse */
ColumnDisplay.ctorParameters = function () { return [
{ type: ElementRef, },
]; };
ColumnDisplay.propDecorators = {
"dataParent": [{ type: Input },],
"ignoreParentData": [{ type: Input },],
"ignoreParentDisabled": [{ type: Input },],
"delegateHistory": [{ type: Input },],
"onDisabled": [{ type: Input },],
"onEnabled": [{ type: Input },],
"loadingEnabled": [{ type: Input },],
"i18nKey": [{ type: Input },],
"bypass": [{ type: Input, args: ['i18nBypass',] },],
"options": [{ type: Input },],
"data": [{ type: Input },],
"columnChangeEvent": [{ type: Output, args: ['phxColumnChange',] },],
"beforeColumnChangeEvent": [{ type: Output, args: ['phxbeforeColumnChange',] },],
};
tslib_1.__decorate([
Option('columnChange'),
tslib_1.__metadata("design:type", EventEmitter)
], ColumnDisplay.prototype, "columnChangeEvent", void 0);
tslib_1.__decorate([
Option('beforeColumnChange'),
tslib_1.__metadata("design:type", EventEmitter)
], ColumnDisplay.prototype, "beforeColumnChangeEvent", void 0);
return ColumnDisplay;
}(AbstractHasDataHelp));
export { ColumnDisplay };
function ColumnDisplay_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ColumnDisplay.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ColumnDisplay.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ColumnDisplay.propDecorators;
/** @type {?} */
ColumnDisplay.TYPE_NAME;
/** @type {?} */
ColumnDisplay.prototype.dataParent;
/** @type {?} */
ColumnDisplay.prototype.ignoreParentData;
/** @type {?} */
ColumnDisplay.prototype.ignoreParentDisabled;
/** @type {?} */
ColumnDisplay.prototype.delegateHistory;
/** @type {?} */
ColumnDisplay.prototype.onDisabled;
/** @type {?} */
ColumnDisplay.prototype.onEnabled;
/** @type {?} */
ColumnDisplay.prototype.loadingEnabled;
/** @type {?} */
ColumnDisplay.prototype.i18nKey;
/** @type {?} */
ColumnDisplay.prototype.bypass;
/** @type {?} */
ColumnDisplay.prototype.options;
/** @type {?} */
ColumnDisplay.prototype.data;
/** @type {?} */
ColumnDisplay.prototype.columnChangeEvent;
/** @type {?} */
ColumnDisplay.prototype.beforeColumnChangeEvent;
/** @type {?} */
ColumnDisplay.prototype.columns;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1uRGlzcGxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZWRpdG9yL2VkaXRvci5pbnRlcm5hbC9yZWNvcmQuaW50ZXJuYWwvQ29sdW1uRGlzcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQWlDLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUtwRyxxQkFBTSxTQUFTLEdBQVcsb0JBQW9CLENBQUM7O0lBY1oseUNBQW1CO0lBb0NwRCx1QkFBWSxVQUFzQjtRQUFsQyxZQUNFLGtCQUFNLFVBQVUsQ0FBQyxTQUlsQjtRQUhDLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLEtBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xELEtBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDOztLQUNuQjs7OztJQUVNLGdDQUFROzs7O1FBQ2IsaUJBQU0sUUFBUSxXQUFFLENBQUM7Ozs7OztJQUdaLGtDQUFVOzs7O2NBQUMsTUFBcUI7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Ozs7O0lBR2pCLGtDQUFVOzs7O1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7Ozs7Ozs7SUFHZiw4Q0FBc0I7Ozs7O2NBQUMsTUFBbUIsRUFBRSxJQUFpQjs7UUFDbEUsRUFBRSxDQUFBLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUEsQ0FBQztZQUMxQyxxQkFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzNDLHFCQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7O1lBRzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDOztZQUdyQixxQkFBSSxNQUFJLEdBQVE7Z0JBQ2QsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixNQUFNLEVBQUUsSUFBSTthQUNiLENBQUM7WUFFRixVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBQyxLQUFZOzthQUV6RixFQUFFLFVBQUMsTUFBYTs7Z0JBRWYsQUFEQSxrQkFBa0I7Z0JBQ2xCLEtBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUMxQyxFQUFFLFVBQUMsTUFBYSxFQUFFLE1BQVc7O2dCQUU1QixBQURBLGlCQUFpQjtnQkFDakIsS0FBSSxDQUFDLHFCQUFxQixDQUFDLE1BQUksRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMxQyxFQUFFLFVBQUMsTUFBYTs7YUFFaEIsQ0FBQyxDQUFDO1NBQ0o7Ozs7OztJQUlPLG1EQUEyQjs7OztJQUFyQyxVQUFzQyxNQUFZOztRQUVoRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxQyxxQkFBSSxJQUFJLEdBQVEsRUFBRSxDQUFDO1lBQ25CLHFCQUFJLEVBQUUsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLDBCQUEwQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFakYsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN2QztLQUNGOzs7Ozs7SUFFUyw2Q0FBcUI7Ozs7O0lBQS9CLFVBQWdDLElBQVMsRUFBRSxNQUFZOztRQUVyRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNwQyxxQkFBSSxFQUFFLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDakM7S0FDRjs7OztJQUVNLGtEQUEwQjs7OztRQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDOzs7Ozs7SUFHL0Isa0RBQTBCOzs7O2NBQUMsS0FBd0I7UUFDeEQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQzs7Ozs7SUFHaEMsNENBQW9COzs7O1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7Ozs7OztJQUd6Qiw0Q0FBb0I7Ozs7Y0FBQyxLQUF3QjtRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDOzs7OztJQUcxQix1Q0FBZTs7OztRQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDOzs7Ozs7SUFHUixvQ0FBWTs7OztjQUFDLElBQVM7Ozs7O0lBR3RCLHFDQUFhOzs7Ozs4QkE3SHVCLFNBQVM7O2dCQWRyRCxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO29CQUNuQixRQUFRLEVBQUUsU0FBUztvQkFDbkIsUUFBUSxFQUFFLHdVQU9YO2lCQUNBOzs7O2dCQXhCMkIsVUFBVTs7OytCQTZCbkMsS0FBSztxQ0FFTCxLQUFLO3lDQUVMLEtBQUs7b0NBRUwsS0FBSzsrQkFFTCxLQUFLOzhCQUVMLEtBQUs7bUNBRUwsS0FBSzs0QkFFTCxLQUFLOzJCQUVMLEtBQUssU0FBQyxZQUFZOzRCQUVsQixLQUFLO3lCQUVMLEtBQUs7c0NBS0wsTUFBTSxTQUFDLGlCQUFpQjs0Q0FHeEIsTUFBTSxTQUFDLHVCQUF1Qjs7O1FBSjlCLE1BQU0sQ0FBQyxjQUFjLENBQUM7MENBRU0sWUFBWTs7O1FBQ3hDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQzswQ0FFTSxZQUFZOzt3QkExRGpEO0VBeUJtQyxtQkFBbUI7U0FBekMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgSG9zdExpc3RlbmVyLCBUeXBlLCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEhhc0RhdGFIZWxwIH0gZnJvbSAnLi4vLi4vLi4vQWJzdHJhY3RIYXNEYXRhSGVscCc7XG5pbXBvcnQgeyBBYnN0cmFjdERhdGFFZGl0b3IgfSBmcm9tICcuLi8uLi9BYnN0cmFjdERhdGFFZGl0b3InO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9SZWNvcmRWaWV3TW9kZWwnO1xuaW1wb3J0IHsgRXZlbnRVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlL3V0aWxzL0V2ZW50VXRpbHMnO1xuaW1wb3J0IHsgQ09MVU1OX0NIQU5HRV9FVkVOVCwgQkVGT1JFX0NPTFVNTl9DSEFOR0VfRVZFTlQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZS9DdXN0b21FdmVudFR5cGUnO1xuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi8uLi8uLi9JSGFzRGF0YSc7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuY29uc3QgVFlQRV9OQU1FOiBzdHJpbmcgPSBcInBoeC1jb2x1bW4tZGlzcGxheVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGh4LWNvbHVtbi1kaXNwbGF5XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0Q29sdW1ucygpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cImJvZGVyLWNvbHVtbi1kaXNwbGF5XCI+XG4gICAgICA8bWF0ZXJpYWwtY2hlY2tib3ggW2RhdGFdPVwiaXRlbVwiIFtsYWJlbF09XCJpdGVtLmxhYmVsXCIgW2ZpZWxkXT1cIidzaG93J1wiIChwaHhDaGFuZ2UpPVwib25Db2x1bW5zRGlzcGxheUNoYW5nZSgkZXZlbnQsIGl0ZW0pXCI+PC9tYXRlcmlhbC1jaGVja2JveD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uRGlzcGxheSBleHRlbmRzIEFic3RyYWN0SGFzRGF0YUhlbHAgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XG5cbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGRhdGFQYXJlbnQ6IElIYXNEYXRhO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGF0YTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgZGVsZWdhdGVIaXN0b3J5OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgb25EaXNhYmxlZDogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvbkVuYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgbG9hZGluZ0VuYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBpMThuS2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgnaTE4bkJ5cGFzcycpXG4gIHByb3RlY3RlZCBieXBhc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBkYXRhOiBhbnk7XG5cbiAgLy8gLS0tIGZyb20gc2VsZlxuICBAT3B0aW9uKCdjb2x1bW5DaGFuZ2UnKVxuICBAT3V0cHV0KCdwaHhDb2x1bW5DaGFuZ2UnKVxuICBwcm90ZWN0ZWQgY29sdW1uQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3B0aW9uKCdiZWZvcmVDb2x1bW5DaGFuZ2UnKVxuICBAT3V0cHV0KCdwaHhiZWZvcmVDb2x1bW5DaGFuZ2UnKVxuICBwcm90ZWN0ZWQgYmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBwcml2YXRlIGNvbHVtbnM6IENvbHVtbk1vZGVsW107XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuICAgIHRoaXMuY29sdW1uQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5iZWZvcmVDb2x1bW5DaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLmNvbHVtbnMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIHNldENvbHVtbnMoY29sdW1uOiBDb2x1bW5Nb2RlbFtdKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1uO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbnMoKTogQ29sdW1uTW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBvbkNvbHVtbnNEaXNwbGF5Q2hhbmdlKCRldmVudDogQ3VzdG9tRXZlbnQsIGl0ZW06IENvbHVtbk1vZGVsKTogdm9pZCB7XG4gICAgaWYoJGV2ZW50ICE9PSBudWxsIHx8ICRldmVudCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgIGxldCBvbGRWYWx1ZSA9ICRldmVudC5kZXRhaWwuZGF0YS5vbGRWYWx1ZTtcbiAgICAgIGxldCBuZXdWYWx1ZSA9ICRldmVudC5kZXRhaWwuZGF0YS5uZXdWYWx1ZTtcblxuICAgICAgLy8gdXBkYXRlIHZhbHVlXG4gICAgICBpdGVtLnNob3cgPSBuZXdWYWx1ZTtcblxuICAgICAgLy8gZW1pdCBjb2x1bW4gY2hhbmdlXG4gICAgICBsZXQgZGF0YTogYW55ID0ge1xuICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUsXG4gICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgY29sdW1uOiBpdGVtXG4gICAgICB9O1xuXG4gICAgICBFdmVudFV0aWxzLmhhbmRsZUJyb3dzZXJFdmVudCh0aGlzLCAnYmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQnLCAkZXZlbnQsIG51bGwsIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgLy8gZG9FdmVudFxuICAgICAgfSwgKCRldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgLy8gZW1pdEJlZm9yZUV2ZW50XG4gICAgICAgIHRoaXMuZW1pdEJlZm9yZUNvbHVtbkNoYW5nZUV2ZW50KCRldmVudCk7XG4gICAgICB9LCAoJGV2ZW50OiBFdmVudCwgcmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgLy8gZW1pdEFmdGVyRXZlbnRcbiAgICAgICAgdGhpcy5lbWl0Q29sdW1uQ2hhbmdlRXZlbnQoZGF0YSwgJGV2ZW50KTtcbiAgICAgIH0sICgkZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIC8vIGRvUHJldmVudGVkXG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0QmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQoJGV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgLy8gZW1pdCBldmVudFxuICAgIGlmICh0aGlzLmJlZm9yZUNvbHVtbkNoYW5nZUV2ZW50ICE9PSBudWxsKSB7XG4gICAgICBsZXQgZGF0YTogYW55ID0ge307XG4gICAgICBsZXQgZXYgPSBFdmVudFV0aWxzLm5ld0N1c3RvbUV2ZW50KEJFRk9SRV9DT0xVTU5fQ0hBTkdFX0VWRU5ULCB0aGlzLCBkYXRhLCBudWxsKTtcblxuICAgICAgdGhpcy5iZWZvcmVDb2x1bW5DaGFuZ2VFdmVudC5lbWl0KGV2KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdENvbHVtbkNoYW5nZUV2ZW50KGRhdGE6IGFueSwgJGV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgLy8gZW1pdCBldmVudFxuICAgIGlmICh0aGlzLmNvbHVtbkNoYW5nZUV2ZW50ICE9PSBudWxsKSB7XG4gICAgICBsZXQgZXYgPSBFdmVudFV0aWxzLm5ld0N1c3RvbUV2ZW50KENPTFVNTl9DSEFOR0VfRVZFTlQsIHRoaXMsIGRhdGEsIG51bGwpO1xuXG4gICAgICB0aGlzLmNvbHVtbkNoYW5nZUV2ZW50LmVtaXQoZXYpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRCZWZvcmVDb2x1bW5DaGFuZ2VFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0QmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5iZWZvcmVDb2x1bW5DaGFuZ2VFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkNoYW5nZUV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5DaGFuZ2VFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb2x1bW5DaGFuZ2VFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbkNoYW5nZUV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxmRGF0YURpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmU2F2ZURhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gIH1cblxuICBwdWJsaWMgc2VsZlJlc2V0RGF0YSgpOiB2b2lkIHtcbiAgfVxufVxuIl19