UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

312 lines (311 loc) 23.6 kB
/** * @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=