io.parrots
Version:
Parrots.io App
313 lines (311 loc) • 25.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, Inject, EventEmitter, Output } from '@angular/core';
import { AbstractParrotsDataEditor } from './AbstractParrotsDataEditor';
import { Option, PhloxAppInfoService, DialogService, BackgroundProcessManager, I18N } from 'com.phloxui';
import { ParrotsDataServiceFactory } from '../../service/ParrotsDataServiceFactory.service';
import { ParrotsDataEditorActionProvider } from '../../service/ParrotsDataEditorActionProvider.service';
import { ParrotsDataEditorViewProvider } from '../../service/ParrotsDataEditorViewProvider.service';
import { ParrotsEditorSettingServiceFactory } from '../../service/ParrotsEditorSettingServiceFactory.service';
import { VersionHistoryModelFactory } from './IVersionHistoryModelFactory';
import { InstanceConnectionManager } from '../../service/InstanceConnectionManager.service';
const /** @type {?} */ TYPE_NAME = "parrots-data-editor";
export class ParrotsDataEditor extends AbstractParrotsDataEditor {
/**
* @param {?} actionProvider
* @param {?} viewProvider
* @param {?} dataFactory
* @param {?} settingServiceFactory
* @param {?} phloxAppService
* @param {?} dialogService
* @param {?} bgProcessMgr
* @param {?} vhModelFactory
* @param {?} instConnectionMgr
*/
constructor(actionProvider, viewProvider, dataFactory, settingServiceFactory, phloxAppService, dialogService, bgProcessMgr, vhModelFactory, instConnectionMgr) {
super(actionProvider, viewProvider, dataFactory, settingServiceFactory, phloxAppService, dialogService, bgProcessMgr, null, null, vhModelFactory, instConnectionMgr);
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
// set value from @Input
this.setDataClassName(this.dataClassName);
this.setConfigName(this.configName);
}
/**
* @param {?} model
* @return {?}
*/
_isViewModelActive(model) {
if (model === null || typeof model === 'undefined') {
return false;
}
for (let /** @type {?} */ v of this.views) {
if (v.getModel() === model) {
return v.isActive();
}
}
return false;
}
/**
* @param {?} $event
* @param {?} view
* @return {?}
*/
onViewBtnClicked($event, view) {
this.showView(view);
}
/**
* @return {?}
*/
getMenuModelFactory() {
return this.menuModelFactory;
}
/**
* @return {?}
*/
getDataComparator() {
return this.dataComparator;
}
/**
* @return {?}
*/
isPageLoaded() {
return true;
}
/**
* @return {?}
*/
newDataObject() {
// new dataObj from schema
let /** @type {?} */ result = {};
if (this.dataSchema !== null && this.dataSchema !== undefined) {
let /** @type {?} */ dataField = this.dataSchema.dataFields;
if (dataField !== null && dataField !== undefined) {
for (let /** @type {?} */ field of dataField) {
let /** @type {?} */ fName = field.name;
let /** @type {?} */ fType = field.type;
if (fType === 'string') {
result[fName] = "";
}
if (fType === 'number') {
result[fName] = 0;
}
if (fType === 'date') {
result[fName] = (new Date()).getTime();
}
else {
result[fName] = null;
}
}
}
}
return result;
}
/**
* @param {?} settings
* @return {?}
*/
onEditorSettingLoaded(settings) {
// do sthing when reload editor setting
}
/**
* @return {?}
*/
getHeaderTitle() {
return this.headerTitle;
}
/**
* @param {?} headerTitle
* @return {?}
*/
setHeaderTitle(headerTitle) {
this.headerTitle = headerTitle;
}
}
ParrotsDataEditor.TYPE_NAME = TYPE_NAME;
ParrotsDataEditor.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<div class="parrots-data-editor">
<div class="background">
</div>
<div class="wrapper">
<div class="content">
<div class="parrots-editor-header">
<div class="page-info-wrapper">
<div class="page-info" style="float: left;">
{{getHeaderTitle()}}
</div>
<div class="page-search" style="float: left;">
<!-- # this will open in the next version -->
<phx-search-btn [editor]="this"></phx-search-btn>
</div>
</div>
<div class="page-action-wrapper">
<ul class="page-action">
<li>
<ul class="action-button-group">
<li>
<phx-action-menu-bar #actionMenuBar [models]="getActionModels()"></phx-action-menu-bar>
</li>
</ul>
</li>
<li>
<div class="page-separate"></div>
</li>
<li>
<ul class="view-button-group">
<li *ngFor="let view of getViewModels(); let i = index;">
<phx-view-btn [model]="view" [active]="_isViewModelActive(view)" (click)="onViewBtnClicked($event,view)"></phx-view-btn>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="wrapper">
<div class="parrots-editor-body">
<phx-view-wrapper *ngFor="let view of getViewModels()" [editor]="this" [model]="view"
[showEventHandler]="getViewShowHandler()" [hideEventHandler]="getViewHideHandler()"></phx-view-wrapper>
</div>
</div>
</div>
</div>
</div>
`
},] },
];
/** @nocollapse */
ParrotsDataEditor.ctorParameters = () => [
{ type: ParrotsDataEditorActionProvider, },
{ type: ParrotsDataEditorViewProvider, },
{ type: ParrotsDataServiceFactory, },
{ type: ParrotsEditorSettingServiceFactory, },
{ type: PhloxAppInfoService, },
{ type: DialogService, },
{ type: BackgroundProcessManager, },
{ type: undefined, decorators: [{ type: Inject, args: [VersionHistoryModelFactory,] },] },
{ type: InstanceConnectionManager, },
];
ParrotsDataEditor.propDecorators = {
"dataCreateEvent": [{ type: Output, args: ['parrotsDataCreate',] },],
"dataUpdateEvent": [{ type: Output, args: ['parrotsDataUpdate',] },],
"dataDeleteEvent": [{ type: Output, args: ['parrotsDataDelete',] },],
"dataDestroyEvent": [{ type: Output, args: ['parrotsDataDestroy',] },],
"dataRevertEvent": [{ type: Output, args: ['parrotsDataRevert',] },],
"dataQueryEvent": [{ type: Output, args: ['parrotsDataQuery',] },],
"dataPromoteEvent": [{ type: Output, args: ['parrotsDataPromote',] },],
"dataReloadEvent": [{ type: Output, args: ['parrotsDataReload',] },],
"dataSchemaReloadEvent": [{ type: Output, args: ['parrotsDataSchemaReload',] },],
"viewShowEvent": [{ type: Output, args: ['parrotsViewShow',] },],
"viewHideEvent": [{ type: Output, args: ['parrotsViewHide',] },],
"dataClassName": [{ type: Input },],
"configName": [{ type: Input },],
"headerTitle": [{ type: Input },],
};
tslib_1.__decorate([
Option('dataCreate'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataCreateEvent", void 0);
tslib_1.__decorate([
Option('dataUpdate'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataUpdateEvent", void 0);
tslib_1.__decorate([
Option('dataDelete'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataDeleteEvent", void 0);
tslib_1.__decorate([
Option('dataDestroy'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataDestroyEvent", void 0);
tslib_1.__decorate([
Option('dataRevert'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataRevertEvent", void 0);
tslib_1.__decorate([
Option('dataQuery'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataQueryEvent", void 0);
tslib_1.__decorate([
Option('dataPromote'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataPromoteEvent", void 0);
tslib_1.__decorate([
Option('dataReload'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataReloadEvent", void 0);
tslib_1.__decorate([
Option('dataSchemaReload'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataSchemaReloadEvent", void 0);
tslib_1.__decorate([
Option('viewShow'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "viewShowEvent", void 0);
tslib_1.__decorate([
Option('viewHide'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "viewHideEvent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ParrotsDataEditor.prototype, "dataClassName", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ParrotsDataEditor.prototype, "configName", void 0);
tslib_1.__decorate([
Option(),
I18N("header.title"),
tslib_1.__metadata("design:type", String)
], ParrotsDataEditor.prototype, "headerTitle", void 0);
function ParrotsDataEditor_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ParrotsDataEditor.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ParrotsDataEditor.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ParrotsDataEditor.propDecorators;
/** @type {?} */
ParrotsDataEditor.TYPE_NAME;
/** @type {?} */
ParrotsDataEditor.prototype.dataCreateEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataUpdateEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataDeleteEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataDestroyEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataRevertEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataQueryEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataPromoteEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataReloadEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataSchemaReloadEvent;
/** @type {?} */
ParrotsDataEditor.prototype.viewShowEvent;
/** @type {?} */
ParrotsDataEditor.prototype.viewHideEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataClassName;
/** @type {?} */
ParrotsDataEditor.prototype.configName;
/** @type {?} */
ParrotsDataEditor.prototype.headerTitle;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFycm90c0RhdGFFZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaW8ucGFycm90cy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZWRpdG9yL1BhcnJvdHNEYXRhRWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsTUFBTSxFQUN3QixtQkFBbUIsRUFBRSxhQUFhLEVBQUUsd0JBQXdCLEVBQ3BCLElBQUksRUFDM0UsTUFBTSxhQUFhLENBQUM7QUFHckIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDeEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDcEcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDOUcsT0FBTyxFQUErQiwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTVGLHVCQUFNLFNBQVMsR0FBVyxxQkFBcUIsQ0FBQztBQXNEaEQsTUFBTSx3QkFBeUIsU0FBUSx5QkFBeUI7Ozs7Ozs7Ozs7OztJQWdEOUQsWUFBWSxjQUErQyxFQUFFLFlBQTJDLEVBQUUsV0FBc0MsRUFDOUkscUJBQXlELEVBQUUsZUFBb0MsRUFBRSxhQUE0QixFQUM3SCxZQUFzQyxFQUFzQyxnQkFBNkMsaUJBQTRDO1FBQ3JLLEtBQUssQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIs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Q00sWUFBWTs7O0lBRXRDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFNUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFcEMsTUFBTSxDQUFDLFVBQVUsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFcEMsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFO0lBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgSW5qZWN0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RQYXJyb3RzRGF0YUVkaXRvciB9IGZyb20gJy4vQWJzdHJhY3RQYXJyb3RzRGF0YUVkaXRvcic7XG5pbXBvcnQge1xuICBPcHRpb24sIEFic3RyYWN0RGF0YUVkaXRvciwgSURhdGFFZGl0b3JBY3Rpb25Qcm92aWRlciwgSURhdGFTZXJ2aWNlRmFjdG9yeSxcbiAgSUVkaXRvclNldHRpbmdTZXJ2aWNlRmFjdG9yeSwgUGhsb3hBcHBJbmZvU2VydmljZSwgRGlhbG9nU2VydmljZSwgQmFja2dyb3VuZFByb2Nlc3NNYW5hZ2VyLFxuICBFdmVudFV0aWxzLCBWaWV3TW9kZWwsIElNZW51TW9kZWxGYWN0b3J5LCBJRGF0YUNvbXBhcmF0b3IsIERhdGFGaWVsZCwgSTE4TlxufSBmcm9tICdjb20ucGhsb3h1aSc7XG5pbXBvcnQgeyBEQVRBX0RFU1RST1lfRVZFTlQsIERBVEFfUFJPTU9URV9FVkVOVCwgREFUQV9RVUVSWV9FVkVOVCB9IGZyb20gJ2NvbS5waGxveHVpJztcbmltcG9ydCB7IFBhcnJvdHNEYXRhU2VydmljZSB9IGZyb20gJy4vUGFycm90c0RhdGFTZXJ2aWNlJztcbmltcG9ydCB7IFBhcnJvdHNEYXRhU2VydmljZUZhY3RvcnkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL1BhcnJvdHNEYXRhU2VydmljZUZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBQYXJyb3RzRGF0YUVkaXRvckFjdGlvblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZS9QYXJyb3RzRGF0YUVkaXRvckFjdGlvblByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFycm90c0RhdGFFZGl0b3JWaWV3UHJvdmlkZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL1BhcnJvdHNEYXRhRWRpdG9yVmlld1Byb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFycm90c0VkaXRvclNldHRpbmdTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvUGFycm90c0VkaXRvclNldHRpbmdTZXJ2aWNlRmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IElWZXJzaW9uSGlzdG9yeU1vZGVsRmFjdG9yeSwgVmVyc2lvbkhpc3RvcnlNb2RlbEZhY3RvcnkgfSBmcm9tICcuL0lWZXJzaW9uSGlzdG9yeU1vZGVsRmFjdG9yeSc7XG5pbXBvcnQgeyBJbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZS9JbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyLnNlcnZpY2UnO1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGFycm90cy1kYXRhLWVkaXRvclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGFycm90cy1kYXRhLWVkaXRvclwiPlxuXHQ8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZFwiPlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cblx0XHQ8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cInBhcnJvdHMtZWRpdG9yLWhlYWRlclwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicGFnZS1pbmZvLXdyYXBwZXJcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicGFnZS1pbmZvXCIgc3R5bGU9XCJmbG9hdDogbGVmdDtcIj5cblx0XHRcdFx0XHRcdHt7Z2V0SGVhZGVyVGl0bGUoKX19XG5cdFx0XHRcdFx0PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2Utc2VhcmNoXCIgc3R5bGU9XCJmbG9hdDogbGVmdDtcIj5cblx0XHRcdFx0XHRcdDwhLS0gIyB0aGlzIHdpbGwgb3BlbiBpbiB0aGUgbmV4dCB2ZXJzaW9uICAtLT5cblx0XHRcdFx0XHRcdDxwaHgtc2VhcmNoLWJ0biBbZWRpdG9yXT1cInRoaXNcIj48L3BoeC1zZWFyY2gtYnRuPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cInBhZ2UtYWN0aW9uLXdyYXBwZXJcIj5cblx0XHRcdFx0XHQ8dWwgY2xhc3M9XCJwYWdlLWFjdGlvblwiPlxuXHRcdFx0XHRcdFx0PGxpPlxuXHRcdFx0XHRcdFx0XHQ8dWwgY2xhc3M9XCJhY3Rpb24tYnV0dG9uLWdyb3VwXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGxpPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHBoeC1hY3Rpb24tbWVudS1iYXIgI2FjdGlvbk1lbnVCYXIgW21vZGVsc109XCJnZXRBY3Rpb25Nb2RlbHMoKVwiPjwvcGh4LWFjdGlvbi1tZW51LWJhcj5cblx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxuXHRcdFx0XHRcdFx0XHQ8L3VsPlxuXHRcdFx0XHRcdFx0PC9saT5cblx0XHRcdFx0XHRcdDxsaT5cblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInBhZ2Utc2VwYXJhdGVcIj48L2Rpdj5cblx0XHRcdFx0XHRcdDwvbGk+XG5cdFx0XHRcdFx0XHQ8bGk+XG5cdFx0XHRcdFx0XHRcdDx1bCBjbGFzcz1cInZpZXctYnV0dG9uLWdyb3VwXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGxpICpuZ0Zvcj1cImxldCB2aWV3IG9mIGdldFZpZXdNb2RlbHMoKTsgbGV0IGkgPSBpbmRleDtcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxwaHgtdmlldy1idG4gIFttb2RlbF09XCJ2aWV3XCIgW2FjdGl2ZV09XCJfaXNWaWV3TW9kZWxBY3RpdmUodmlldylcIiAoY2xpY2spPVwib25WaWV3QnRuQ2xpY2tlZCgkZXZlbnQsdmlldylcIj48L3BoeC12aWV3LWJ0bj5cblx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxuXHRcdFx0ICAgICAgICA8L3VsPlxuXHRcdFx0XHRcdFx0PC9saT5cblx0XHRcdFx0XHQ8L3VsPlxuXHRcdFx0XHQ8L2Rpdj5cblxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicGFycm90cy1lZGl0b3ItYm9keVwiPlxuXHRcdFx0XHRcdDxwaHgtdmlldy13cmFwcGVyICpuZ0Zvcj1cImxldCB2aWV3IG9mIGdldFZpZXdNb2RlbHMoKVwiIFtlZGl0b3JdPVwidGhpc1wiIFttb2RlbF09XCJ2aWV3XCJcblx0XHRcdFx0XHRcdFtzaG93RXZlbnRIYW5kbGVyXT1cImdldFZpZXdTaG93SGFuZGxlcigpXCIgW2hpZGVFdmVudEhhbmRsZXJdPVwiZ2V0Vmlld0hpZGVIYW5kbGVyKClcIj48L3BoeC12aWV3LXdyYXBwZXI+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuPC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIFBhcnJvdHNEYXRhRWRpdG9yIGV4dGVuZHMgQWJzdHJhY3RQYXJyb3RzRGF0YUVkaXRvciB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcblxuICBAT3V0cHV0KCdwYXJyb3RzRGF0YUNyZWF0ZScpXG4gIEBPcHRpb24oJ2RhdGFDcmVhdGUnKVxuICBwcm90ZWN0ZWQgZGF0YUNyZWF0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGFycm90c0RhdGFVcGRhdGUnKVxuICBAT3B0aW9uKCdkYXRhVXBkYXRlJylcbiAgcHJvdGVjdGVkIGRhdGFVcGRhdGVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BhcnJvdHNEYXRhRGVsZXRlJylcbiAgQE9wdGlvbignZGF0YURlbGV0ZScpXG4gIHByb3RlY3RlZCBkYXRhRGVsZXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwYXJyb3RzRGF0YURlc3Ryb3knKVxuICBAT3B0aW9uKCdkYXRhRGVzdHJveScpXG4gIHByb3RlY3RlZCBkYXRhRGVzdHJveUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGFycm90c0RhdGFSZXZlcnQnKVxuICBAT3B0aW9uKCdkYXRhUmV2ZXJ0JylcbiAgcHJvdGVjdGVkIGRhdGFSZXZlcnRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BhcnJvdHNEYXRhUXVlcnknKVxuICBAT3B0aW9uKCdkYXRhUXVlcnknKVxuICBwcm90ZWN0ZWQgZGF0YVF1ZXJ5RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwYXJyb3RzRGF0YVByb21vdGUnKVxuICBAT3B0aW9uKCdkYXRhUHJvbW90ZScpXG4gIHByb3RlY3RlZCBkYXRhUHJvbW90ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGFycm90c0RhdGFSZWxvYWQnKVxuICBAT3B0aW9uKCdkYXRhUmVsb2FkJylcbiAgcHJvdGVjdGVkIGRhdGFSZWxvYWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BhcnJvdHNEYXRhU2NoZW1hUmVsb2FkJylcbiAgQE9wdGlvbignZGF0YVNjaGVtYVJlbG9hZCcpXG4gIHByb3RlY3RlZCBkYXRhU2NoZW1hUmVsb2FkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwYXJyb3RzVmlld1Nob3cnKVxuICBAT3B0aW9uKCd2aWV3U2hvdycpXG4gIHByb3RlY3RlZCB2aWV3U2hvd0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGFycm90c1ZpZXdIaWRlJylcbiAgQE9wdGlvbigndmlld0hpZGUnKVxuICBwcm90ZWN0ZWQgdmlld0hpZGVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGF0YUNsYXNzTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGNvbmZpZ05hbWU6IHN0cmluZztcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIEBJMThOKFwiaGVhZGVyLnRpdGxlXCIpXG4gIHByaXZhdGUgaGVhZGVyVGl0bGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihhY3Rpb25Qcm92aWRlcjogUGFycm90c0RhdGFFZGl0b3JBY3Rpb25Qcm92aWRlciwgdmlld1Byb3ZpZGVyOiBQYXJyb3RzRGF0YUVkaXRvclZpZXdQcm92aWRlciwgZGF0YUZhY3Rvcnk6IFBhcnJvdHNEYXRhU2VydmljZUZhY3RvcnksXG4gICAgc2V0dGluZ1NlcnZpY2VGYWN0b3J5OiBQYXJyb3RzRWRpdG9yU2V0dGluZ1NlcnZpY2VGYWN0b3J5LCBwaGxveEFwcFNlcnZpY2U6IFBobG94QXBwSW5mb1NlcnZpY2UsIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgYmdQcm9jZXNzTWdyOiBCYWNrZ3JvdW5kUHJvY2Vzc01hbmFnZXIsIEBJbmplY3QoVmVyc2lvbkhpc3RvcnlNb2RlbEZhY3RvcnkpIHZoTW9kZWxGYWN0b3J5OiBJVmVyc2lvbkhpc3RvcnlNb2RlbEZhY3RvcnksIGluc3RDb25uZWN0aW9uTWdyOiBJbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyKSB7XG4gICAgc3VwZXIoYWN0aW9uUHJvdmlkZXIsIHZpZXdQcm92aWRlciwgZGF0YUZhY3RvcnksIHNldHRpbmdTZXJ2aWNlRmFjdG9yeSwgcGhsb3hBcHBTZXJ2aWNlLCBkaWFsb2dTZXJ2aWNlLCBiZ1Byb2Nlc3NNZ3IsIG51bGwsIG51bGwsIHZoTW9kZWxGYWN0b3J5LCBpbnN0Q29ubmVjdGlvbk1ncik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIHNldCB2YWx1ZSBmcm9tIEBJbnB1dFxuICAgIHRoaXMuc2V0RGF0YUNsYXNzTmFtZSh0aGlzLmRhdGFDbGFzc05hbWUpO1xuICAgIHRoaXMuc2V0Q29uZmlnTmFtZSh0aGlzLmNvbmZpZ05hbWUpO1xuICB9XG5cbiAgcHVibGljIF9pc1ZpZXdNb2RlbEFjdGl2ZShtb2RlbDogVmlld01vZGVsKTogYm9vbGVhbiB7XG4gICAgaWYgKG1vZGVsID09PSBudWxsIHx8IHR5cGVvZiBtb2RlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCB2IG9mIHRoaXMudmlld3MpIHtcbiAgICAgIGlmICh2LmdldE1vZGVsKCkgPT09IG1vZGVsKSB7XG4gICAgICAgIHJldHVybiB2LmlzQWN0aXZlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uVmlld0J0bkNsaWNrZWQoJGV2ZW50OiBNb3VzZUV2ZW50LCB2aWV3OiBWaWV3TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dWaWV3KHZpZXcpO1xuICB9XG5cbiAgcHVibGljIGdldE1lbnVNb2RlbEZhY3RvcnkoKTogSU1lbnVNb2RlbEZhY3Rvcnkge1xuICAgIHJldHVybiB0aGlzLm1lbnVNb2RlbEZhY3Rvcnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YUNvbXBhcmF0b3IoKTogSURhdGFDb21wYXJhdG9yPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb21wYXJhdG9yO1xuICB9XG5cbiAgcHVibGljIGlzUGFnZUxvYWRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZXdEYXRhT2JqZWN0KCk6IGFueSB7XG4gICAgLy8gbmV3IGRhdGFPYmogZnJvbSBzY2hlbWFcbiAgICBsZXQgcmVzdWx0OiBhbnkgPSB7fTtcblxuICAgIGlmICh0aGlzLmRhdGFTY2hlbWEgIT09IG51bGwgJiYgdGhpcy5kYXRhU2NoZW1hICE9PSB1bmRlZmluZWQpIHtcblxuICAgICAgbGV0IGRhdGFGaWVsZDogRGF0YUZpZWxkW10gPSB0aGlzLmRhdGFTY2hlbWEuZGF0YUZpZWxkcztcblxuICAgICAgaWYgKGRhdGFGaWVsZCAhPT0gbnVsbCAmJiBkYXRhRmllbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBkYXRhRmllbGQpIHtcbiAgICAgICAgICBsZXQgZk5hbWUgPSBmaWVsZC5uYW1lO1xuICAgICAgICAgIGxldCBmVHlwZSA9IGZpZWxkLnR5cGU7XG5cbiAgICAgICAgICBpZiAoZlR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXN1bHRbZk5hbWVdID0gXCJcIjtcbiAgICAgICAgICB9IGlmIChmVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmTmFtZV0gPSAwO1xuICAgICAgICAgIH0gaWYgKGZUeXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmTmFtZV0gPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRbZk5hbWVdID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25FZGl0b3JTZXR0aW5nTG9hZGVkKHNldHRpbmdzOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBkbyBzdGhpbmcgd2hlbiByZWxvYWQgZWRpdG9yIHNldHRpbmdcbiAgfVxuXG4gIHB1YmxpYyBnZXRIZWFkZXJUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclRpdGxlO1xuICB9XG5cbiAgcHVibGljIHNldEhlYWRlclRpdGxlKGhlYWRlclRpdGxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmhlYWRlclRpdGxlID0gaGVhZGVyVGl0bGU7XG4gIH1cbn1cbiJdfQ==