UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

250 lines (249 loc) 21.1 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'; const /** @type {?} */ TYPE_NAME = "phx-default-entry-editor-popover"; export class DefaultEntryEditorPopover extends AbstractHasData { /** * @param {?} elementRef */ constructor(elementRef) { super(elementRef); 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 {?} */ ngOnInit() { super.ngOnInit(); this.setData(this.data); } /** * @return {?} */ isEntryEmpty() { return (this.entry === null || typeof this.entry === 'undefined') ? true : false; } /** * @return {?} */ getCalendarEntry() { if (this.entryMapper !== null && typeof this.entryMapper !== 'undefined') { return this.entryMapper.getCalendarEntry(this.data); } return null; } /** * @param {?} data * @return {?} */ setData(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) { for (let /** @type {?} */ c of this.dataChildren) { c.setData(this.dataContainer); } } } /** * @param {?} entryMapper * @return {?} */ setCalendarEntryMapper(entryMapper) { this.entryMapper = entryMapper; this.setData(this.data); } /** * @param {?} editor * @return {?} */ setEditor(editor) { this.editor = editor; } /** * @return {?} */ isSelfDataDirty() { return false; } /** * @param {?} data * @return {?} */ selfSaveData(data) { } /** * @return {?} */ selfResetData() { } /** * @return {?} */ doPreload() { return new Promise((resolve, reject) => { resolve(null); }); } /** * @return {?} */ doLoaded() { } /** * @return {?} */ getDataContainer() { return this.dataContainer; } /** * @return {?} */ hasEntryEditors() { if (this.entryEditors !== null && this.entryEditors !== undefined) { return true; } return false; } /** * @return {?} */ getEntryEditors() { return this.entryEditors; } /** * @param {?} $event * @return {?} */ onPopoverClosed($event) { } /** * @param {?} $event * @return {?} */ onAutoSaved($event) { if (this.entryMapper !== null && typeof this.entryMapper !== 'undefined') { let /** @type {?} */ startTime = this.entry.startDateTime; let /** @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 {?} */ isAutoSave() { 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"> <ng-template [ngIf]="!isEntryEmpty() && hasEntryEditors()"> <div *ngFor="let entryModel of getEntryEditors(); let i = index;" class="textbox-container"> <material-text-box [label]="entryModel.label" [description]="entryModel.description" [data]="getDataContainer()" [field]="entryModel.field" [dataParent]="this" [formatterName]="entryModel.formatterName"></material-text-box> </div> </ng-template> </div> ` },] }, ]; /** @nocollapse */ DefaultEntryEditorPopover.ctorParameters = () => [ { 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); 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEVudHJ5RWRpdG9yUG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZWRpdG9yL0RlZmF1bHRFbnRyeUVkaXRvclBvcG92ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQW1CLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUtoRSx1QkFBTSxTQUFTLEdBQVcsa0NBQWtDLENBQUM7QUFjN0QsTUFBTSxnQ0FBaUMsU0FBUSxlQUFlOzs7O0lBcUM1RCxZQUFZLFVBQXNCO1FBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxn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WUFBWTt3QkFFbEIsS0FBSzs7O0lBN0JMLE1BQU0sRUFBRTtzQ0FDTyxrQkFBa0I7OztJQUdqQyxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFR5cGUsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYXNEYXRhIH0gZnJvbSAnLi4vQWJzdHJhY3RIYXNEYXRhJztcbmltcG9ydCB7IENhbGVuZGFyRW50cnkgfSBmcm9tICcuLi9tb2RlbC9DYWxlbmRhckVudHJ5JztcbmltcG9ydCB7IElDYWxlbmRhckVudHJ5TWFwcGVyIH0gZnJvbSAnLi9JQ2FsZW5kYXJFbnRyeU1hcHBlcic7XG5pbXBvcnQgeyBNYXRlcmlhbFRleHRCb3ggfSBmcm9tICcuLi8uLi90aGVtZS9tYXRlcmlhbC9jb21wb25lbnQvZGF0YXZpZXcvaW5wdXQvTWF0ZXJpYWxUZXh0Qm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJQ2FsZW5kYXJFbnRyeVBvcG92ZXJDb250ZW50IH0gZnJvbSAnLi9JQ2FsZW5kYXJFbnRyeVBvcG92ZXJDb250ZW50JztcbmltcG9ydCB7IEFic3RyYWN0RGF0YUVkaXRvciB9IGZyb20gJy4vQWJzdHJhY3REYXRhRWRpdG9yJztcbmltcG9ydCB7IElIYXNEYXRhIH0gZnJvbSAnLi4vSUhhc0RhdGEnO1xuaW1wb3J0IHsgRW50cnlFZGl0b3JNb2RlbCB9IGZyb20gJy4uL21vZGVsL0VudHJ5RWRpdG9yTW9kZWwnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgRGF0ZVRpbWVVdGlscyB9IGZyb20gJy4uLy4uL3NoYXJlL3V0aWxzL0RhdGVUaW1lVXRpbHMnO1xuaW1wb3J0IHsgRGF0ZUZvcm1hdHRlciB9IGZyb20gJy4uLy4uL3NoYXJlL2Zvcm1hdHRlci9mb3JtYXR0ZXJzJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGh4LWRlZmF1bHQtZW50cnktZWRpdG9yLXBvcG92ZXJcIjtcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiBUWVBFX05BTUUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1kZWZhdWx0LWVudHJ5LWVkaXRvci1wb3BvdmVyXCI+XG5cdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhaXNFbnRyeUVtcHR5KCkgJiYgaGFzRW50cnlFZGl0b3JzKClcIj5cblx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBlbnRyeU1vZGVsIG9mIGdldEVudHJ5RWRpdG9ycygpOyBsZXQgaSA9IGluZGV4O1wiIGNsYXNzPVwidGV4dGJveC1jb250YWluZXJcIj5cblx0XHRcdDxtYXRlcmlhbC10ZXh0LWJveCBbbGFiZWxdPVwiZW50cnlNb2RlbC5sYWJlbFwiIFtkZXNjcmlwdGlvbl09XCJlbnRyeU1vZGVsLmRlc2NyaXB0aW9uXCIgW2RhdGFdPVwiZ2V0RGF0YUNvbnRhaW5lcigpXCIgW2ZpZWxkXT1cImVudHJ5TW9kZWwuZmllbGRcIiBbZGF0YVBhcmVudF09XCJ0aGlzXCIgW2Zvcm1hdHRlck5hbWVdPVwiZW50cnlNb2RlbC5mb3JtYXR0ZXJOYW1lXCI+PC9tYXRlcmlhbC10ZXh0LWJveD5cblx0XHQ8L2Rpdj5cblx0PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuYFxufSlcbmV4cG9ydCBjbGFzcyBEZWZhdWx0RW50cnlFZGl0b3JQb3BvdmVyIGV4dGVuZHMgQWJzdHJhY3RIYXNEYXRhIGltcGxlbWVudHMgT25Jbml0LCBJQ2FsZW5kYXJFbnRyeVBvcG92ZXJDb250ZW50IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcml2YXRlIGVkaXRvcjogQWJzdHJhY3REYXRhRWRpdG9yO1xuICBwcml2YXRlIGRhdGFDb250YWluZXI6IGFueVtdO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJpdmF0ZSBlbnRyeU1hcHBlcjogSUNhbGVuZGFyRW50cnlNYXBwZXI7XG4gIHByaXZhdGUgZW50cnk6IENhbGVuZGFyRW50cnk7XG4gIHByaXZhdGUgdGl0bGVURkhhbmRsZXI6IEZ1bmN0aW9uO1xuICBwcml2YXRlIGVudHJ5RWRpdG9yczogRW50cnlFZGl0b3JNb2RlbFtdO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgZGF0YTogYW55O1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgZGF0YVBhcmVudDogSUhhc0RhdGE7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBpZ25vcmVQYXJlbnREYXRhOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBkZWxlZ2F0ZUhpc3Rvcnk6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvbkRpc2FibGVkOiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIG9uRW5hYmxlZDogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBsb2FkaW5nRW5hYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGkxOG5LZXk6IHN0cmluZztcbiAgQElucHV0KCdpMThuQnlwYXNzJylcbiAgcHJvdGVjdGVkIGJ5cGFzczogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIG9wdGlvbnM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZik7XG5cbiAgICB0aGlzLmRhdGFDb250YWluZXIgPSBbXTtcbiAgICB0aGlzLmVudHJ5RWRpdG9ycyA9IFtdO1xuICAgIHRoaXMuZW50cnlFZGl0b3JzLnB1c2gobmV3IEVudHJ5RWRpdG9yTW9kZWwoJ1RpdGxlJywgXCJ0aXRsZVwiLCBudWxsKSk7XG4gICAgdGhpcy5lbnRyeUVkaXRvcnMucHVzaChuZXcgRW50cnlFZGl0b3JNb2RlbCgnU3RhcnRUaW1lJywgXCJzdGFydERhdGVUaW1lXCIsIG51bGwsIG51bGwpKTtcbiAgICB0aGlzLmVudHJ5RWRpdG9ycy5wdXNoKG5ldyBFbnRyeUVkaXRvck1vZGVsKCdFbmRUaW1lJywgXCJlbmREYXRlVGltZVwiLCBudWxsLCBudWxsKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMuc2V0RGF0YSh0aGlzLmRhdGEpO1xuICB9XG5cbiAgLyogdXNlIGZvciBzYXZlIGJ5IGVkaXRvclxuICBwdWJsaWMgb25TYXZlRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0b3IgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZWRpdG9yICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKHRoaXMuZW50cnlNYXBwZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZW50cnlNYXBwZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGxldCBzdGFydFRpbWU6IGFueSA9IHRoaXMuZW50cnkuc3RhcnREYXRlVGltZTtcbiAgICAgICAgbGV0IGVuZFRpbWU6IGFueSA9IHRoaXMuZW50cnkuZW5kRGF0ZVRpbWU7XG4gICAgICAgIGlmIChzdGFydFRpbWUgIT09IG51bGwgJiYgdHlwZW9mIHN0YXJ0VGltZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBzdGFydFRpbWUgPSBEYXRlVGltZVV0aWxzLmdldERhdGVGcm9tQW55KHN0YXJ0VGltZSk7XG4gICAgICAgICAgdGhpcy5lbnRyeS5zdGFydERhdGVUaW1lID0gc3RhcnRUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRUaW1lICE9PSBudWxsICYmIHR5cGVvZiBlbmRUaW1lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGVuZFRpbWUgPSBEYXRlVGltZVV0aWxzLmdldERhdGVGcm9tQW55KGVuZFRpbWUpO1xuICAgICAgICAgIHRoaXMuZW50cnkuZW5kRGF0ZVRpbWUgPSBlbmRUaW1lO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50cnlNYXBwZXIudXBkYXRlRGF0YSh0aGlzLmRhdGEsIHRoaXMuZW50cnkpO1xuICAgICAgfVxuICAgICAgdGhpcy5lZGl0b3IudXBkYXRlRGF0YSh0aGlzLmRhdGEpO1xuICAgIH1cbiAgfSovXG5cbiAgcHVibGljIGlzRW50cnlFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuZW50cnkgPT09IG51bGwgfHwgdHlwZW9mIHRoaXMuZW50cnkgPT09ICd1bmRlZmluZWQnKSA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYWxlbmRhckVudHJ5KCk6IENhbGVuZGFyRW50cnkge1xuICAgIGlmICh0aGlzLmVudHJ5TWFwcGVyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmVudHJ5TWFwcGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHRoaXMuZW50cnlNYXBwZXIuZ2V0Q2FsZW5kYXJFbnRyeSh0aGlzLmRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzZXREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIC8vIG92ZXJpZGUgbWV0aG9kXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcblxuICAgIHRoaXMuZW50cnkgPSB0aGlzLmdldENhbGVuZGFyRW50cnkoKTtcbiAgICB0aGlzLmRhdGFDb250YWluZXIgPSBbXTtcbiAgICBpZiAodGhpcy5lbnRyeSAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5lbnRyeSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuZGF0YUNvbnRhaW5lci5wdXNoKHRoaXMuZW50cnkpO1xuICAgIH1cblxuICAgIC8vIGNoaWxkIGFkZCBlbnRyeSBpbnN0ZWFkXG4gICAgaWYgKHRoaXMuZGF0YUNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICBmb3IgKGxldCBjIG9mIHRoaXMuZGF0YUNoaWxkcmVuKSB7XG4gICAgICAgIGMuc2V0RGF0YSh0aGlzLmRhdGFDb250YWluZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRDYWxlbmRhckVudHJ5TWFwcGVyKGVudHJ5TWFwcGVyOiBJQ2FsZW5kYXJFbnRyeU1hcHBlcik6IHZvaWQge1xuICAgIHRoaXMuZW50cnlNYXBwZXIgPSBlbnRyeU1hcHBlcjtcblxuICAgIHRoaXMuc2V0RGF0YSh0aGlzLmRhdGEpO1xuICB9XG5cbiAgcHVibGljIHNldEVkaXRvcihlZGl0b3I6IEFic3RyYWN0RGF0YUVkaXRvcik6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICB9XG5cbiAgcHVibGljIGlzU2VsZkRhdGFEaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2VsZlNhdmVEYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuXG4gIH1cblxuICBwdWJsaWMgc2VsZlJlc2V0RGF0YSgpOiB2b2lkIHtcblxuICB9XG5cbiAgcHVibGljIGRvUHJlbG9hZCgpOiBQcm9taXNlPGFueT4geyAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgICAgICAgcmVzb2x2ZShudWxsKTsgICAgIH0pOyAgIH0gIHB1YmxpYyBkb0xvYWRlZCgpOiB2b2lkIHtcblxuICB9XG5cbiAgcHVibGljIGdldERhdGFDb250YWluZXIoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250YWluZXI7XG4gIH1cblxuICBwdWJsaWMgaGFzRW50cnlFZGl0b3JzKCk6IGJvb2xlYW4ge1xuICAgIGlmKHRoaXMuZW50cnlFZGl0b3JzICE9PSBudWxsICYmIHRoaXMuZW50cnlFZGl0b3JzICE9PSB1bmRlZmluZWQpe1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldEVudHJ5RWRpdG9ycygpOiBFbnRyeUVkaXRvck1vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLmVudHJ5RWRpdG9ycztcbiAgfVxuXG4gIHB1YmxpYyBvblBvcG92ZXJDbG9zZWQoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICB9XG5cbiAgcHVibGljIG9uQXV0b1NhdmVkKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbnRyeU1hcHBlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5lbnRyeU1hcHBlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueSA9IHRoaXMuZW50cnkuc3RhcnREYXRlVGltZTtcbiAgICAgIGxldCBlbmRUaW1lOiBhbnkgPSB0aGlzLmVudHJ5LmVuZERhdGVUaW1lO1xuXG4gICAgICBpZiAoc3RhcnRUaW1lICE9PSBudWxsICYmIHR5cGVvZiBzdGFydFRpbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHN0YXJ0VGltZSA9IERhdGVUaW1lVXRpbHMuZ2V0RGF0ZUZyb21Bbnkoc3RhcnRUaW1lKTtcbiAgICAgICAgdGhpcy5lbnRyeS5zdGFydERhdGVUaW1lID0gc3RhcnRUaW1lO1xuICAgICAgfVxuXG4gICAgICBpZiAoZW5kVGltZSAhPT0gbnVsbCAmJiB0eXBlb2YgZW5kVGltZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZW5kVGltZSA9IERhdGVUaW1lVXRpbHMuZ2V0RGF0ZUZyb21BbnkoZW5kVGltZSk7XG4gICAgICAgIHRoaXMuZW50cnkuZW5kRGF0ZVRpbWUgPSBlbmRUaW1lO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVudHJ5TWFwcGVyLnVwZGF0ZURhdGEodGhpcy5kYXRhLCB0aGlzLmVudHJ5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNBdXRvU2F2ZSgpOiBib29sZWFuIHtcbiAgXHRyZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19