com.phloxui
Version:
PhloxUI Ng2+ Framework
312 lines (311 loc) • 23.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, ElementRef } from '@angular/core';
import { AbstractHasData } from '../AbstractHasData';
import { AbstractDataEditor } from './AbstractDataEditor';
import { EntryEditorModel } from '../model/EntryEditorModel';
import { Option } from '../../decorator/Option.decorator';
import { DateTimeUtils } from '../../share/utils/DateTimeUtils';
var /** @type {?} */ TYPE_NAME = "phx-default-entry-editor-popover";
var DefaultEntryEditorPopover = /** @class */ (function (_super) {
tslib_1.__extends(DefaultEntryEditorPopover, _super);
function DefaultEntryEditorPopover(elementRef) {
var _this = _super.call(this, elementRef) || this;
_this.dataContainer = [];
_this.entryEditors = [];
_this.entryEditors.push(new EntryEditorModel('Title', "title", null));
_this.entryEditors.push(new EntryEditorModel('StartTime', "startDateTime", null, null));
_this.entryEditors.push(new EntryEditorModel('EndTime', "endDateTime", null, null));
return _this;
}
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
this.setData(this.data);
};
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.isEntryEmpty = /**
* @return {?}
*/
function () {
return (this.entry === null || typeof this.entry === 'undefined') ? true : false;
};
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.getCalendarEntry = /**
* @return {?}
*/
function () {
if (this.entryMapper !== null && typeof this.entryMapper !== 'undefined') {
return this.entryMapper.getCalendarEntry(this.data);
}
return null;
};
/**
* @param {?} data
* @return {?}
*/
DefaultEntryEditorPopover.prototype.setData = /**
* @param {?} data
* @return {?}
*/
function (data) {
// overide method
this.data = data;
this.entry = this.getCalendarEntry();
this.dataContainer = [];
if (this.entry !== null && typeof this.entry !== 'undefined') {
this.dataContainer.push(this.entry);
}
// child add entry instead
if (this.dataChildren !== null) {
try {
for (var _a = tslib_1.__values(this.dataChildren), _b = _a.next(); !_b.done; _b = _a.next()) {
var c = _b.value;
c.setData(this.dataContainer);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
}
finally { if (e_1) throw e_1.error; }
}
}
var e_1, _c;
};
/**
* @param {?} entryMapper
* @return {?}
*/
DefaultEntryEditorPopover.prototype.setCalendarEntryMapper = /**
* @param {?} entryMapper
* @return {?}
*/
function (entryMapper) {
this.entryMapper = entryMapper;
this.setData(this.data);
};
/**
* @param {?} editor
* @return {?}
*/
DefaultEntryEditorPopover.prototype.setEditor = /**
* @param {?} editor
* @return {?}
*/
function (editor) {
this.editor = editor;
};
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.isSelfDataDirty = /**
* @return {?}
*/
function () {
return false;
};
/**
* @param {?} data
* @return {?}
*/
DefaultEntryEditorPopover.prototype.selfSaveData = /**
* @param {?} data
* @return {?}
*/
function (data) {
};
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.selfResetData = /**
* @return {?}
*/
function () {
};
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.doPreload = /**
* @return {?}
*/
function () { return new Promise(function (resolve, reject) { resolve(null); }); };
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.doLoaded = /**
* @return {?}
*/
function () {
};
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.getDataContainer = /**
* @return {?}
*/
function () {
return this.dataContainer;
};
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.hasEntryEditors = /**
* @return {?}
*/
function () {
if (this.entryEditors !== null && this.entryEditors !== undefined) {
return true;
}
return false;
};
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.getEntryEditors = /**
* @return {?}
*/
function () {
return this.entryEditors;
};
/**
* @param {?} $event
* @return {?}
*/
DefaultEntryEditorPopover.prototype.onPopoverClosed = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
};
/**
* @param {?} $event
* @return {?}
*/
DefaultEntryEditorPopover.prototype.onAutoSaved = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
if (this.entryMapper !== null && typeof this.entryMapper !== 'undefined') {
var /** @type {?} */ startTime = this.entry.startDateTime;
var /** @type {?} */ endTime = this.entry.endDateTime;
if (startTime !== null && typeof startTime !== 'undefined') {
startTime = DateTimeUtils.getDateFromAny(startTime);
this.entry.startDateTime = startTime;
}
if (endTime !== null && typeof endTime !== 'undefined') {
endTime = DateTimeUtils.getDateFromAny(endTime);
this.entry.endDateTime = endTime;
}
this.entryMapper.updateData(this.data, this.entry);
}
};
/**
* @return {?}
*/
DefaultEntryEditorPopover.prototype.isAutoSave = /**
* @return {?}
*/
function () {
return true;
};
DefaultEntryEditorPopover.TYPE_NAME = TYPE_NAME;
DefaultEntryEditorPopover.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"phx-default-entry-editor-popover\">\n\t<ng-template [ngIf]=\"!isEntryEmpty() && hasEntryEditors()\">\n\t\t<div *ngFor=\"let entryModel of getEntryEditors(); let i = index;\" class=\"textbox-container\">\n\t\t\t<material-text-box [label]=\"entryModel.label\" [description]=\"entryModel.description\" [data]=\"getDataContainer()\" [field]=\"entryModel.field\" [dataParent]=\"this\" [formatterName]=\"entryModel.formatterName\"></material-text-box>\n\t\t</div>\n\t</ng-template>\n</div>\n"
},] },
];
/** @nocollapse */
DefaultEntryEditorPopover.ctorParameters = function () { return [
{ type: ElementRef, },
]; };
DefaultEntryEditorPopover.propDecorators = {
"editor": [{ type: Input },],
"entryMapper": [{ type: Input },],
"data": [{ type: Input },],
"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 },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", AbstractDataEditor)
], DefaultEntryEditorPopover.prototype, "editor", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], DefaultEntryEditorPopover.prototype, "entryMapper", void 0);
return DefaultEntryEditorPopover;
}(AbstractHasData));
export { DefaultEntryEditorPopover };
function DefaultEntryEditorPopover_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
DefaultEntryEditorPopover.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
DefaultEntryEditorPopover.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
DefaultEntryEditorPopover.propDecorators;
/** @type {?} */
DefaultEntryEditorPopover.TYPE_NAME;
/** @type {?} */
DefaultEntryEditorPopover.prototype.editor;
/** @type {?} */
DefaultEntryEditorPopover.prototype.dataContainer;
/** @type {?} */
DefaultEntryEditorPopover.prototype.entryMapper;
/** @type {?} */
DefaultEntryEditorPopover.prototype.entry;
/** @type {?} */
DefaultEntryEditorPopover.prototype.titleTFHandler;
/** @type {?} */
DefaultEntryEditorPopover.prototype.entryEditors;
/** @type {?} */
DefaultEntryEditorPopover.prototype.data;
/** @type {?} */
DefaultEntryEditorPopover.prototype.dataParent;
/** @type {?} */
DefaultEntryEditorPopover.prototype.ignoreParentData;
/** @type {?} */
DefaultEntryEditorPopover.prototype.ignoreParentDisabled;
/** @type {?} */
DefaultEntryEditorPopover.prototype.delegateHistory;
/** @type {?} */
DefaultEntryEditorPopover.prototype.onDisabled;
/** @type {?} */
DefaultEntryEditorPopover.prototype.onEnabled;
/** @type {?} */
DefaultEntryEditorPopover.prototype.loadingEnabled;
/** @type {?} */
DefaultEntryEditorPopover.prototype.i18nKey;
/** @type {?} */
DefaultEntryEditorPopover.prototype.bypass;
/** @type {?} */
DefaultEntryEditorPopover.prototype.options;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEVudHJ5RWRpdG9yUG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZWRpdG9yL0RlZmF1bHRFbnRyeUVkaXRvclBvcG92ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQW1CLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUtoRSxxQkFBTSxTQUFTLEdBQVcsa0NBQWtDLENBQUM7O0lBY2QscURBQWU7SUFxQzVELG1DQUFZLFVBQXNCO1FBQWxDLFlBQ0Usa0JBQU0sVUFBVSxDQUFDLFNBT2xCO1FBTEMsS0FBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsS0FBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLENBQUMsU0FBUyxF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OytCQUVMLEtBQUs7OEJBRUwsS0FBSzttQ0FFTCxLQUFLOzRCQUVMLEtBQUs7MkJBRUwsS0FBSyxTQUFDLFlBQVk7NEJBRWxCLEtBQUs7OztRQTdCTCxNQUFNLEVBQUU7MENBQ08sa0JBQWtCOzs7UUFHakMsTUFBTSxFQUFFOzs7b0NBdENYO0VBNkIrQyxlQUFlO1NBQWpELHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVHlwZSwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEhhc0RhdGEgfSBmcm9tICcuLi9BYnN0cmFjdEhhc0RhdGEnO1xuaW1wb3J0IHsgQ2FsZW5kYXJFbnRyeSB9IGZyb20gJy4uL21vZGVsL0NhbGVuZGFyRW50cnknO1xuaW1wb3J0IHsgSUNhbGVuZGFyRW50cnlNYXBwZXIgfSBmcm9tICcuL0lDYWxlbmRhckVudHJ5TWFwcGVyJztcbmltcG9ydCB7IE1hdGVyaWFsVGV4dEJveCB9IGZyb20gJy4uLy4uL3RoZW1lL21hdGVyaWFsL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9NYXRlcmlhbFRleHRCb3guY29tcG9uZW50JztcbmltcG9ydCB7IElDYWxlbmRhckVudHJ5UG9wb3ZlckNvbnRlbnQgfSBmcm9tICcuL0lDYWxlbmRhckVudHJ5UG9wb3ZlckNvbnRlbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3REYXRhRWRpdG9yIH0gZnJvbSAnLi9BYnN0cmFjdERhdGFFZGl0b3InO1xuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi9JSGFzRGF0YSc7XG5pbXBvcnQgeyBFbnRyeUVkaXRvck1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvRW50cnlFZGl0b3JNb2RlbCc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBEYXRlVGltZVV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmUvdXRpbHMvRGF0ZVRpbWVVdGlscyc7XG5pbXBvcnQgeyBEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi4vLi4vc2hhcmUvZm9ybWF0dGVyL2Zvcm1hdHRlcnMnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtZGVmYXVsdC1lbnRyeS1lZGl0b3ItcG9wb3ZlclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGh4LWRlZmF1bHQtZW50cnktZWRpdG9yLXBvcG92ZXJcIj5cblx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFpc0VudHJ5RW1wdHkoKSAmJiBoYXNFbnRyeUVkaXRvcnMoKVwiPlxuXHRcdDxkaXYgKm5nRm9yPVwibGV0IGVudHJ5TW9kZWwgb2YgZ2V0RW50cnlFZGl0b3JzKCk7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJ0ZXh0Ym94LWNvbnRhaW5lclwiPlxuXHRcdFx0PG1hdGVyaWFsLXRleHQtYm94IFtsYWJlbF09XCJlbnRyeU1vZGVsLmxhYmVsXCIgW2Rlc2NyaXB0aW9uXT1cImVudHJ5TW9kZWwuZGVzY3JpcHRpb25cIiBbZGF0YV09XCJnZXREYXRhQ29udGFpbmVyKClcIiBbZmllbGRdPVwiZW50cnlNb2RlbC5maWVsZFwiIFtkYXRhUGFyZW50XT1cInRoaXNcIiBbZm9ybWF0dGVyTmFtZV09XCJlbnRyeU1vZGVsLmZvcm1hdHRlck5hbWVcIj48L21hdGVyaWFsLXRleHQtYm94PlxuXHRcdDwvZGl2PlxuXHQ8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIERlZmF1bHRFbnRyeUVkaXRvclBvcG92ZXIgZXh0ZW5kcyBBYnN0cmFjdEhhc0RhdGEgaW1wbGVtZW50cyBPbkluaXQsIElDYWxlbmRhckVudHJ5UG9wb3ZlckNvbnRlbnQge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XG5cbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByaXZhdGUgZWRpdG9yOiBBYnN0cmFjdERhdGFFZGl0b3I7XG4gIHByaXZhdGUgZGF0YUNvbnRhaW5lcjogYW55W107XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcml2YXRlIGVudHJ5TWFwcGVyOiBJQ2FsZW5kYXJFbnRyeU1hcHBlcjtcbiAgcHJpdmF0ZSBlbnRyeTogQ2FsZW5kYXJFbnRyeTtcbiAgcHJpdmF0ZSB0aXRsZVRGSGFuZGxlcjogRnVuY3Rpb247XG4gIHByaXZhdGUgZW50cnlFZGl0b3JzOiBFbnRyeUVkaXRvck1vZGVsW107XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBkYXRhOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBkYXRhUGFyZW50OiBJSGFzRGF0YTtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERhdGE6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBpZ25vcmVQYXJlbnREaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGRlbGVnYXRlSGlzdG9yeTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIG9uRGlzYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgb25FbmFibGVkOiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGxvYWRpbmdFbmFibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgaTE4bktleTogc3RyaW5nO1xuICBASW5wdXQoJ2kxOG5CeXBhc3MnKVxuICBwcm90ZWN0ZWQgYnlwYXNzOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgb3B0aW9uczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmKTtcblxuICAgIHRoaXMuZGF0YUNvbnRhaW5lciA9IFtdO1xuICAgIHRoaXMuZW50cnlFZGl0b3JzID0gW107XG4gICAgdGhpcy5lbnRyeUVkaXRvcnMucHVzaChuZXcgRW50cnlFZGl0b3JNb2RlbCgnVGl0bGUnLCBcInRpdGxlXCIsIG51bGwpKTtcbiAgICB0aGlzLmVudHJ5RWRpdG9ycy5wdXNoKG5ldyBFbnRyeUVkaXRvck1vZGVsKCdTdGFydFRpbWUnLCBcInN0YXJ0RGF0ZVRpbWVcIiwgbnVsbCwgbnVsbCkpO1xuICAgIHRoaXMuZW50cnlFZGl0b3JzLnB1c2gobmV3IEVudHJ5RWRpdG9yTW9kZWwoJ0VuZFRpbWUnLCBcImVuZERhdGVUaW1lXCIsIG51bGwsIG51bGwpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5zZXREYXRhKHRoaXMuZGF0YSk7XG4gIH1cblxuICAvKiB1c2UgZm9yIHNhdmUgYnkgZWRpdG9yXG4gIHB1YmxpYyBvblNhdmVEYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRvciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5lZGl0b3IgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAodGhpcy5lbnRyeU1hcHBlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5lbnRyeU1hcHBlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgbGV0IHN0YXJ0VGltZTogYW55ID0gdGhpcy5lbnRyeS5zdGFydERhdGVUaW1lO1xuICAgICAgICBsZXQgZW5kVGltZTogYW55ID0gdGhpcy5lbnRyeS5lbmREYXRlVGltZTtcbiAgICAgICAgaWYgKHN0YXJ0VGltZSAhPT0gbnVsbCAmJiB0eXBlb2Ygc3RhcnRUaW1lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHN0YXJ0VGltZSA9IERhdGVUaW1lVXRpbHMuZ2V0RGF0ZUZyb21Bbnkoc3RhcnRUaW1lKTtcbiAgICAgICAgICB0aGlzLmVudHJ5LnN0YXJ0RGF0ZVRpbWUgPSBzdGFydFRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZFRpbWUgIT09IG51bGwgJiYgdHlwZW9mIGVuZFRpbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgZW5kVGltZSA9IERhdGVUaW1lVXRpbHMuZ2V0RGF0ZUZyb21BbnkoZW5kVGltZSk7XG4gICAgICAgICAgdGhpcy5lbnRyeS5lbmREYXRlVGltZSA9IGVuZFRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnRyeU1hcHBlci51cGRhdGVEYXRhKHRoaXMuZGF0YSwgdGhpcy5lbnRyeSk7XG4gICAgICB9XG4gICAgICB0aGlzLmVkaXRvci51cGRhdGVEYXRhKHRoaXMuZGF0YSk7XG4gICAgfVxuICB9Ki9cblxuICBwdWJsaWMgaXNFbnRyeUVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5lbnRyeSA9PT0gbnVsbCB8fCB0eXBlb2YgdGhpcy5lbnRyeSA9PT0gJ3VuZGVmaW5lZCcpID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldENhbGVuZGFyRW50cnkoKTogQ2FsZW5kYXJFbnRyeSB7XG4gICAgaWYgKHRoaXMuZW50cnlNYXBwZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZW50cnlNYXBwZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRyeU1hcHBlci5nZXRDYWxlbmRhckVudHJ5KHRoaXMuZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIHNldERhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgLy8gb3ZlcmlkZSBtZXRob2RcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuXG4gICAgdGhpcy5lbnRyeSA9IHRoaXMuZ2V0Q2FsZW5kYXJFbnRyeSgpO1xuICAgIHRoaXMuZGF0YUNvbnRhaW5lciA9IFtdO1xuICAgIGlmICh0aGlzLmVudHJ5ICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmVudHJ5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5kYXRhQ29udGFpbmVyLnB1c2godGhpcy5lbnRyeSk7XG4gICAgfVxuXG4gICAgLy8gY2hpbGQgYWRkIGVudHJ5IGluc3RlYWRcbiAgICBpZiAodGhpcy5kYXRhQ2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgIGZvciAobGV0IGMgb2YgdGhpcy5kYXRhQ2hpbGRyZW4pIHtcbiAgICAgICAgYy5zZXREYXRhKHRoaXMuZGF0YUNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldENhbGVuZGFyRW50cnlNYXBwZXIoZW50cnlNYXBwZXI6IElDYWxlbmRhckVudHJ5TWFwcGVyKTogdm9pZCB7XG4gICAgdGhpcy5lbnRyeU1hcHBlciA9IGVudHJ5TWFwcGVyO1xuXG4gICAgdGhpcy5zZXREYXRhKHRoaXMuZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgc2V0RWRpdG9yKGVkaXRvcjogQWJzdHJhY3REYXRhRWRpdG9yKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxmRGF0YURpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmU2F2ZURhdGEoZGF0YTogYW55KTogdm9pZCB7XG5cbiAgfVxuXG4gIHB1YmxpYyBzZWxmUmVzZXREYXRhKCk6IHZvaWQge1xuXG4gIH1cblxuICBwdWJsaWMgZG9QcmVsb2FkKCk6IFByb21pc2U8YW55PiB7ICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAgICAgICByZXNvbHZlKG51bGwpOyAgICAgfSk7ICAgfSAgcHVibGljIGRvTG9hZGVkKCk6IHZvaWQge1xuXG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YUNvbnRhaW5lcigpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUNvbnRhaW5lcjtcbiAgfVxuXG4gIHB1YmxpYyBoYXNFbnRyeUVkaXRvcnMoKTogYm9vbGVhbiB7XG4gICAgaWYodGhpcy5lbnRyeUVkaXRvcnMgIT09IG51bGwgJiYgdGhpcy5lbnRyeUVkaXRvcnMgIT09IHVuZGVmaW5lZCl7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0RW50cnlFZGl0b3JzKCk6IEVudHJ5RWRpdG9yTW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMuZW50cnlFZGl0b3JzO1xuICB9XG5cbiAgcHVibGljIG9uUG9wb3ZlckNsb3NlZCgkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gIH1cblxuICBwdWJsaWMgb25BdXRvU2F2ZWQoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVudHJ5TWFwcGVyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmVudHJ5TWFwcGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IHN0YXJ0VGltZTogYW55ID0gdGhpcy5lbnRyeS5zdGFydERhdGVUaW1lO1xuICAgICAgbGV0IGVuZFRpbWU6IGFueSA9IHRoaXMuZW50cnkuZW5kRGF0ZVRpbWU7XG5cbiAgICAgIGlmIChzdGFydFRpbWUgIT09IG51bGwgJiYgdHlwZW9mIHN0YXJ0VGltZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc3RhcnRUaW1lID0gRGF0ZVRpbWVVdGlscy5nZXREYXRlRnJvbUFueShzdGFydFRpbWUpO1xuICAgICAgICB0aGlzLmVudHJ5LnN0YXJ0RGF0ZVRpbWUgPSBzdGFydFRpbWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbmRUaW1lICE9PSBudWxsICYmIHR5cGVvZiBlbmRUaW1lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBlbmRUaW1lID0gRGF0ZVRpbWVVdGlscy5nZXREYXRlRnJvbUFueShlbmRUaW1lKTtcbiAgICAgICAgdGhpcy5lbnRyeS5lbmREYXRlVGltZSA9IGVuZFRpbWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW50cnlNYXBwZXIudXBkYXRlRGF0YSh0aGlzLmRhdGEsIHRoaXMuZW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0F1dG9TYXZlKCk6IGJvb2xlYW4ge1xuICBcdHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=