com.phloxui
Version:
PhloxUI Ng2+ Framework
250 lines (249 loc) • 21.1 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';
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