com.phloxui
Version:
PhloxUI Ng2+ Framework
276 lines (275 loc) • 24.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, Inject, EventEmitter, Output, ViewChild } from '@angular/core';
import { AbstractDataEditor } from './AbstractDataEditor';
import { DataEditorActionProvider } from './IDataEditorActionProvider';
import { DataEditorViewProvider } from './IDataEditorViewProvider';
import { DataServiceFactory } from './IDataServiceFactory';
import { EditorSettingServiceFactory } from './IEditorSettingServiceFactory';
import { PhloxAppInfoService } from '../../service/PhloxAppInfoService.service';
import { DialogService } from '../../service/DialogService.service';
import { BackgroundProcessManager } from '../../service/BackgroundProcessManager.service';
import { Option } from '../../decorator/Option.decorator';
import { I18N } from '../../decorator/decorators';
import { ActionMenuBar } from './editor.internal/ActionMenuBar.component';
var /** @type {?} */ TYPE_NAME = "phx-default-data-editor";
var DefaultDataEditor = /** @class */ (function (_super) {
tslib_1.__extends(DefaultDataEditor, _super);
function DefaultDataEditor(actionProvider, viewProvider, dataFactory, settingServiceFactory, phloxAppService, dialogService, bgProcessMgr) {
return _super.call(this, actionProvider, viewProvider, dataFactory, settingServiceFactory, phloxAppService, dialogService, bgProcessMgr) || this;
}
/**
* @param {?} model
* @return {?}
*/
DefaultDataEditor.prototype._isViewModelActive = /**
* @param {?} model
* @return {?}
*/
function (model) {
if (model === null || typeof model === 'undefined') {
return false;
}
try {
for (var _a = tslib_1.__values(this.views), _b = _a.next(); !_b.done; _b = _a.next()) {
var v = _b.value;
if (v.getModel() === model) {
return v.isActive();
}
}
}
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; }
}
return false;
var e_1, _c;
};
/**
* @param {?} headerTitle
* @return {?}
*/
DefaultDataEditor.prototype.setHeaderTitle = /**
* @param {?} headerTitle
* @return {?}
*/
function (headerTitle) {
this.headerTitle = headerTitle;
};
/**
* @return {?}
*/
DefaultDataEditor.prototype.getHeaderTitle = /**
* @return {?}
*/
function () {
return this.headerTitle;
};
/**
* @param {?} $event
* @param {?} view
* @return {?}
*/
DefaultDataEditor.prototype.onViewBtnClicked = /**
* @param {?} $event
* @param {?} view
* @return {?}
*/
function ($event, view) {
this.showView(view);
};
/**
* @return {?}
*/
DefaultDataEditor.prototype.getMenuModelFactory = /**
* @return {?}
*/
function () {
return this.menuModelFactory;
};
/**
* @return {?}
*/
DefaultDataEditor.prototype.getDataComparator = /**
* @return {?}
*/
function () {
return this.dataComparator;
};
/**
* @return {?}
*/
DefaultDataEditor.prototype.isPageLoaded = /**
* @return {?}
*/
function () {
return true;
};
/**
* @return {?}
*/
DefaultDataEditor.prototype.newDataObject = /**
* @return {?}
*/
function () {
return {
"name": "TEST Name",
"title": "TEST VALUE",
"description": "TEST description",
"startDate": (new Date()).getTime(),
"endDate": (new Date()).getTime()
};
};
/**
* @param {?} actionModels
* @return {?}
*/
DefaultDataEditor.prototype.setActionModels = /**
* @param {?} actionModels
* @return {?}
*/
function (actionModels) {
_super.prototype.setActionModels.call(this, actionModels);
this.actionMenuBar.setModels(actionModels);
};
/**
* @param {?} settings
* @return {?}
*/
DefaultDataEditor.prototype.onEditorSettingLoaded = /**
* @param {?} settings
* @return {?}
*/
function (settings) {
// do sthing when reload editor setting
};
DefaultDataEditor.TYPE_NAME = TYPE_NAME;
DefaultDataEditor.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"phx-default-data-editor\">\n\t<div class=\"background\">\n\t</div>\n\t<div class=\"wrapper\">\n\t\t<div class=\"content\">\n\t\t\t<!-- # this will open in the next version -->\n\t\t\t<!-- <phx-search-btn [editor]=\"this\"></phx-search-btn> -->\n\t\t\t<div class=\"phlox-editor-header\">\n\t\t\t\t<div class=\"page-info-wrapper\">\n\t\t\t\t\t<phx-search-btn [editor]=\"this\"></phx-search-btn>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t{{getHeaderTitle()}}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"page-search\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"page-header-center\">\n\t\t\t\t\t<div class=\"page-action-wrapper\">\n\t\t\t\t\t\t<ul class=\"page-action\">\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<ul class=\"action-button-group\">\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<phx-action-menu-bar #actionMenuBar></phx-action-menu-bar>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<div class=\"page-separate\"></div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"page-view-wrapper\">\n\t\t\t\t\t<ul class=\"view-button-group\">\n\t\t\t\t\t\t<li *ngFor=\"let view of getViewModels(); let i = index;\">\n\t\t\t\t\t\t\t<phx-view-btn #phxView [model]=\"view\" [active]=\"_isViewModelActive(view)\" (click)=\"onViewBtnClicked($event,view)\"></phx-view-btn>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"wrapper\">\n\t\t\t\t<div class=\"phlox-editor-body\">\n\t\t\t\t\t<phx-view-wrapper *ngFor=\"let view of getViewModels()\" [editor]=\"this\" [model]=\"view\"\n\t\t\t\t\t[showEventHandler]=\"getViewShowHandler()\" [hideEventHandler]=\"getViewHideHandler()\"></phx-view-wrapper>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n"
},] },
];
/** @nocollapse */
DefaultDataEditor.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: Inject, args: [DataEditorActionProvider,] },] },
{ type: undefined, decorators: [{ type: Inject, args: [DataEditorViewProvider,] },] },
{ type: undefined, decorators: [{ type: Inject, args: [DataServiceFactory,] },] },
{ type: undefined, decorators: [{ type: Inject, args: [EditorSettingServiceFactory,] },] },
{ type: PhloxAppInfoService, },
{ type: DialogService, },
{ type: BackgroundProcessManager, },
]; };
DefaultDataEditor.propDecorators = {
"dataCreateEvent": [{ type: Output, args: ['phxDataCreate',] },],
"dataUpdateEvent": [{ type: Output, args: ['phxDataUpdate',] },],
"dataDeleteEvent": [{ type: Output, args: ['phxDataDelete',] },],
"dataDestroyEvent": [{ type: Output, args: ['phxDataDestroy',] },],
"dataRevertEvent": [{ type: Output, args: ['phxDataRevert',] },],
"dataQueryEvent": [{ type: Output, args: ['phxDataQuery',] },],
"dataPromoteEvent": [{ type: Output, args: ['phxDataPromote',] },],
"dataReloadEvent": [{ type: Output, args: ['phxDataReload',] },],
"dataSchemaLoadEvent": [{ type: Output, args: ['phxDataSchemaLoad',] },],
"viewShowEvent": [{ type: Output, args: ['phxViewShow',] },],
"viewHideEvent": [{ type: Output, args: ['phxViewHide',] },],
"headerTitle": [{ type: Input },],
"actionMenuBar": [{ type: ViewChild, args: ["actionMenuBar",] },],
};
tslib_1.__decorate([
Option('dataCreate'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "dataCreateEvent", void 0);
tslib_1.__decorate([
Option('dataUpdate'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "dataUpdateEvent", void 0);
tslib_1.__decorate([
Option('dataDelete'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "dataDeleteEvent", void 0);
tslib_1.__decorate([
Option('dataDestroy'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "dataDestroyEvent", void 0);
tslib_1.__decorate([
Option('dataRevert'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "dataRevertEvent", void 0);
tslib_1.__decorate([
Option('dataQuery'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "dataQueryEvent", void 0);
tslib_1.__decorate([
Option('dataPromote'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "dataPromoteEvent", void 0);
tslib_1.__decorate([
Option('dataReload'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "dataReloadEvent", void 0);
tslib_1.__decorate([
Option('dataSchemaLoad'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "dataSchemaLoadEvent", void 0);
tslib_1.__decorate([
Option('viewShow'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "viewShowEvent", void 0);
tslib_1.__decorate([
Option('viewHide'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultDataEditor.prototype, "viewHideEvent", void 0);
tslib_1.__decorate([
I18N("header.title"),
tslib_1.__metadata("design:type", String)
], DefaultDataEditor.prototype, "headerTitle", void 0);
return DefaultDataEditor;
}(AbstractDataEditor));
export { DefaultDataEditor };
function DefaultDataEditor_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
DefaultDataEditor.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
DefaultDataEditor.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
DefaultDataEditor.propDecorators;
/** @type {?} */
DefaultDataEditor.TYPE_NAME;
/** @type {?} */
DefaultDataEditor.prototype.dataCreateEvent;
/** @type {?} */
DefaultDataEditor.prototype.dataUpdateEvent;
/** @type {?} */
DefaultDataEditor.prototype.dataDeleteEvent;
/** @type {?} */
DefaultDataEditor.prototype.dataDestroyEvent;
/** @type {?} */
DefaultDataEditor.prototype.dataRevertEvent;
/** @type {?} */
DefaultDataEditor.prototype.dataQueryEvent;
/** @type {?} */
DefaultDataEditor.prototype.dataPromoteEvent;
/** @type {?} */
DefaultDataEditor.prototype.dataReloadEvent;
/** @type {?} */
DefaultDataEditor.prototype.dataSchemaLoadEvent;
/** @type {?} */
DefaultDataEditor.prototype.viewShowEvent;
/** @type {?} */
DefaultDataEditor.prototype.viewHideEvent;
/** @type {?} */
DefaultDataEditor.prototype.headerTitle;
/** @type {?} */
DefaultDataEditor.prototype.actionMenuBar;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdERhdGFFZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2VkaXRvci9EZWZhdWx0RGF0YUVkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sMkJBQTJCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUF1QixNQUFNLHVCQUF1QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBZ0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUczRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFMUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHMUUscUJBQU0sU0FBUyxHQUFXLHlCQUF5QixDQUFDOztJQXlEYiw2Q0FBa0I7SUEyQ3ZELDJCQUErQyxnQkFBMkUsY0FBbUUsYUFDdEosdUJBQXFELGVBQW9DLEVBQUUsYUFBNEIsRUFDNUosWUFBc0M7ZUFDdEMsa0JBQU0sY0FBYyxFQUFF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MENBQ00sWUFBWTs7O1FBRXRDLE1BQU0sQ0FBQyxZQUFZLENBQUM7MENBQ00sWUFBWTs7O1FBRXRDLE1BQU0sQ0FBQyxhQUFhLENBQUM7MENBQ00sWUFBWTs7O1FBRXZDLE1BQU0sQ0FBQyxZQUFZLENBQUM7MENBQ00sWUFBWTs7O1FBRXRDLE1BQU0sQ0FBQyxXQUFXLENBQUM7MENBQ00sWUFBWTs7O1FBRXJDLE1BQU0sQ0FBQyxhQUFhLENBQUM7MENBQ00sWUFBWTs7O1FBRXZDLE1BQU0sQ0FBQyxZQUFZLENBQUM7MENBQ00sWUFBWTs7O1FBRXRDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQzswQ0FDTSxZQUFZOzs7UUFFMUMsTUFBTSxDQUFDLFVBQVUsQ0FBQzswQ0FDTSxZQUFZOzs7UUFFcEMsTUFBTSxDQUFDLFVBQVUsQ0FBQzswQ0FDTSxZQUFZOzs7UUFFcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQzs7OzRCQWpIdkI7RUEyRXVDLGtCQUFrQjtTQUE1QyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIEluamVjdCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3REYXRhRWRpdG9yIH0gZnJvbSAnLi9BYnN0cmFjdERhdGFFZGl0b3InO1xuaW1wb3J0IHsgRGF0YUVkaXRvckFjdGlvblByb3ZpZGVyLCBJRGF0YUVkaXRvckFjdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9JRGF0YUVkaXRvckFjdGlvblByb3ZpZGVyJztcbmltcG9ydCB7IERhdGFFZGl0b3JWaWV3UHJvdmlkZXIsIElEYXRhRWRpdG9yVmlld1Byb3ZpZGVyIH0gZnJvbSAnLi9JRGF0YUVkaXRvclZpZXdQcm92aWRlcic7XG5pbXBvcnQgeyBEYXRhU2VydmljZUZhY3RvcnksIElEYXRhU2VydmljZUZhY3RvcnkgfSBmcm9tICcuL0lEYXRhU2VydmljZUZhY3RvcnknO1xuaW1wb3J0IHsgRWRpdG9yU2V0dGluZ1NlcnZpY2VGYWN0b3J5LCBJRWRpdG9yU2V0dGluZ1NlcnZpY2VGYWN0b3J5IH0gZnJvbSAnLi9JRWRpdG9yU2V0dGluZ1NlcnZpY2VGYWN0b3J5JztcbmltcG9ydCB7IElNZW51TW9kZWxGYWN0b3J5IH0gZnJvbSAnLi4vSU1lbnVNb2RlbEZhY3RvcnknO1xuaW1wb3J0IHsgSURhdGFDb21wYXJhdG9yIH0gZnJvbSAnLi4vSURhdGFDb21wYXJhdG9yJztcbmltcG9ydCB7IFBobG94QXBwSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL1BobG94QXBwSW5mb1NlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9EaWFsb2dTZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFja2dyb3VuZFByb2Nlc3NNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZS9CYWNrZ3JvdW5kUHJvY2Vzc01hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3TW9kZWwgfSBmcm9tICcuLi9tb2RlbC9WaWV3TW9kZWwnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgSTE4TiB9IGZyb20gJy4uLy4uL2RlY29yYXRvci9kZWNvcmF0b3JzJztcbmltcG9ydCB7IFZpZXdCdXR0b24gfSBmcm9tICcuL2VkaXRvci5pbnRlcm5hbC9WaWV3QnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25NZW51QmFyIH0gZnJvbSAnLi9lZGl0b3IuaW50ZXJuYWwvQWN0aW9uTWVudUJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWN0aW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9BY3Rpb25Nb2RlbCc7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtZGVmYXVsdC1kYXRhLWVkaXRvclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGh4LWRlZmF1bHQtZGF0YS1lZGl0b3JcIj5cblx0PGRpdiBjbGFzcz1cImJhY2tncm91bmRcIj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG5cdFx0PGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cblx0XHRcdDwhLS0gIyB0aGlzIHdpbGwgb3BlbiBpbiB0aGUgbmV4dCB2ZXJzaW9uICAtLT5cblx0XHRcdDwhLS0gPHBoeC1zZWFyY2gtYnRuIFtlZGl0b3JdPVwidGhpc1wiPjwvcGh4LXNlYXJjaC1idG4+IC0tPlxuXHRcdFx0PGRpdiBjbGFzcz1cInBobG94LWVkaXRvci1oZWFkZXJcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cInBhZ2UtaW5mby13cmFwcGVyXCI+XG5cdFx0XHRcdFx0PHBoeC1zZWFyY2gtYnRuIFtlZGl0b3JdPVwidGhpc1wiPjwvcGh4LXNlYXJjaC1idG4+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInBhZ2UtaW5mb1wiPlxuXHRcdFx0XHRcdFx0e3tnZXRIZWFkZXJUaXRsZSgpfX1cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicGFnZS1zZWFyY2hcIj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJwYWdlLWhlYWRlci1jZW50ZXJcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicGFnZS1hY3Rpb24td3JhcHBlclwiPlxuXHRcdFx0XHRcdFx0PHVsIGNsYXNzPVwicGFnZS1hY3Rpb25cIj5cblx0XHRcdFx0XHRcdFx0PGxpPlxuXHRcdFx0XHRcdFx0XHRcdDx1bCBjbGFzcz1cImFjdGlvbi1idXR0b24tZ3JvdXBcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxsaT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PHBoeC1hY3Rpb24tbWVudS1iYXIgI2FjdGlvbk1lbnVCYXI+PC9waHgtYWN0aW9uLW1lbnUtYmFyPlxuXHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cblx0XHRcdFx0XHRcdFx0XHQ8L3VsPlxuXHRcdFx0XHRcdFx0XHQ8L2xpPlxuXHRcdFx0XHRcdFx0XHQ8bGk+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInBhZ2Utc2VwYXJhdGVcIj48L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9saT5cblx0XHRcdFx0XHRcdDwvdWw+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicGFnZS12aWV3LXdyYXBwZXJcIj5cblx0XHRcdFx0XHQ8dWwgY2xhc3M9XCJ2aWV3LWJ1dHRvbi1ncm91cFwiPlxuXHRcdFx0XHRcdFx0PGxpICpuZ0Zvcj1cImxldCB2aWV3IG9mIGdldFZpZXdNb2RlbHMoKTsgbGV0IGkgPSBpbmRleDtcIj5cblx0XHRcdFx0XHRcdFx0PHBoeC12aWV3LWJ0biAjcGh4VmlldyBbbW9kZWxdPVwidmlld1wiIFthY3RpdmVdPVwiX2lzVmlld01vZGVsQWN0aXZlKHZpZXcpXCIgKGNsaWNrKT1cIm9uVmlld0J0bkNsaWNrZWQoJGV2ZW50LHZpZXcpXCI+PC9waHgtdmlldy1idG4+XG5cdFx0XHRcdFx0XHQ8L2xpPlxuXHRcdFx0XHRcdDwvdWw+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cblx0XHRcdDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJwaGxveC1lZGl0b3ItYm9keVwiPlxuXHRcdFx0XHRcdDxwaHgtdmlldy13cmFwcGVyICpuZ0Zvcj1cImxldCB2aWV3IG9mIGdldFZpZXdNb2RlbHMoKVwiIFtlZGl0b3JdPVwidGhpc1wiIFttb2RlbF09XCJ2aWV3XCJcblx0XHRcdFx0XHRbc2hvd0V2ZW50SGFuZGxlcl09XCJnZXRWaWV3U2hvd0hhbmRsZXIoKVwiIFtoaWRlRXZlbnRIYW5kbGVyXT1cImdldFZpZXdIaWRlSGFuZGxlcigpXCI+PC9waHgtdmlldy13cmFwcGVyPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvZGl2PlxuYFxufSlcbmV4cG9ydCBjbGFzcyBEZWZhdWx0RGF0YUVkaXRvciBleHRlbmRzIEFic3RyYWN0RGF0YUVkaXRvciB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcblxuICBAT3V0cHV0KCdwaHhEYXRhQ3JlYXRlJylcbiAgQE9wdGlvbignZGF0YUNyZWF0ZScpXG4gIHByb3RlY3RlZCBkYXRhQ3JlYXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhEYXRhVXBkYXRlJylcbiAgQE9wdGlvbignZGF0YVVwZGF0ZScpXG4gIHByb3RlY3RlZCBkYXRhVXBkYXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhEYXRhRGVsZXRlJylcbiAgQE9wdGlvbignZGF0YURlbGV0ZScpXG4gIHByb3RlY3RlZCBkYXRhRGVsZXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhEYXRhRGVzdHJveScpXG4gIEBPcHRpb24oJ2RhdGFEZXN0cm95JylcbiAgcHJvdGVjdGVkIGRhdGFEZXN0cm95RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhEYXRhUmV2ZXJ0JylcbiAgQE9wdGlvbignZGF0YVJldmVydCcpXG4gIHByb3RlY3RlZCBkYXRhUmV2ZXJ0RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhEYXRhUXVlcnknKVxuICBAT3B0aW9uKCdkYXRhUXVlcnknKVxuICBwcm90ZWN0ZWQgZGF0YVF1ZXJ5RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhEYXRhUHJvbW90ZScpXG4gIEBPcHRpb24oJ2RhdGFQcm9tb3RlJylcbiAgcHJvdGVjdGVkIGRhdGFQcm9tb3RlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhEYXRhUmVsb2FkJylcbiAgQE9wdGlvbignZGF0YVJlbG9hZCcpXG4gIHByb3RlY3RlZCBkYXRhUmVsb2FkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhEYXRhU2NoZW1hTG9hZCcpXG4gIEBPcHRpb24oJ2RhdGFTY2hlbWFMb2FkJylcbiAgcHJvdGVjdGVkIGRhdGFTY2hlbWFMb2FkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhWaWV3U2hvdycpXG4gIEBPcHRpb24oJ3ZpZXdTaG93JylcbiAgcHJvdGVjdGVkIHZpZXdTaG93RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhWaWV3SGlkZScpXG4gIEBPcHRpb24oJ3ZpZXdIaWRlJylcbiAgcHJvdGVjdGVkIHZpZXdIaWRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBASW5wdXQoKVxuICBASTE4TihcImhlYWRlci50aXRsZVwiKVxuICBwcml2YXRlIGhlYWRlclRpdGxlOiBzdHJpbmc7XG4gIEBWaWV3Q2hpbGQoXCJhY3Rpb25NZW51QmFyXCIpXG4gIHByaXZhdGUgYWN0aW9uTWVudUJhcjogQWN0aW9uTWVudUJhcjtcblxuICBjb25zdHJ1Y3RvciggQEluamVjdChEYXRhRWRpdG9yQWN0aW9uUHJvdmlkZXIpIGFjdGlvblByb3ZpZGVyOiBJRGF0YUVkaXRvckFjdGlvblByb3ZpZGVyLCBASW5qZWN0KERhdGFFZGl0b3JWaWV3UHJvdmlkZXIpIHZpZXdQcm92aWRlcjogSURhdGFFZGl0b3JWaWV3UHJvdmlkZXIsIEBJbmplY3QoRGF0YVNlcnZpY2VGYWN0b3J5KSBkYXRhRmFjdG9yeTogSURhdGFTZXJ2aWNlRmFjdG9yeSxcbiAgICBASW5qZWN0KEVkaXRvclNldHRpbmdTZXJ2aWNlRmFjdG9yeSkgc2V0dGluZ1NlcnZpY2VGYWN0b3J5OiBJRWRpdG9yU2V0dGluZ1NlcnZpY2VGYWN0b3J5LCBwaGxveEFwcFNlcnZpY2U6IFBobG94QXBwSW5mb1NlcnZpY2UsIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgYmdQcm9jZXNzTWdyOiBCYWNrZ3JvdW5kUHJvY2Vzc01hbmFnZXIpIHtcbiAgICBzdXBlcihhY3Rpb25Qcm92aWRlciwgdmlld1Byb3ZpZGVyLCBkYXRhRmFjdG9yeSwgc2V0dGluZ1NlcnZpY2VGYWN0b3J5LCBwaGxveEFwcFNlcnZpY2UsIGRpYWxvZ1NlcnZpY2UsIGJnUHJvY2Vzc01ncik7XG4gIH1cblxuICBwdWJsaWMgX2lzVmlld01vZGVsQWN0aXZlKG1vZGVsOiBWaWV3TW9kZWwpOiBib29sZWFuIHtcbiAgICBpZiAobW9kZWwgPT09IG51bGwgfHwgdHlwZW9mIG1vZGVsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGxldCB2IG9mIHRoaXMudmlld3MpIHtcbiAgICAgIGlmICh2LmdldE1vZGVsKCkgPT09IG1vZGVsKSB7XG4gICAgICAgIHJldHVybiB2LmlzQWN0aXZlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIZWFkZXJUaXRsZShoZWFkZXJUaXRsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5oZWFkZXJUaXRsZSA9IGhlYWRlclRpdGxlO1xuICB9XG5cbiAgcHVibGljIGdldEhlYWRlclRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyVGl0bGU7XG4gIH1cblxuICBwdWJsaWMgb25WaWV3QnRuQ2xpY2tlZCgkZXZlbnQ6IE1vdXNlRXZlbnQsIHZpZXc6IFZpZXdNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1ZpZXcodmlldyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWVudU1vZGVsRmFjdG9yeSgpOiBJTWVudU1vZGVsRmFjdG9yeSB7XG4gICAgcmV0dXJuIHRoaXMubWVudU1vZGVsRmFjdG9yeTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhQ29tcGFyYXRvcigpOiBJRGF0YUNvbXBhcmF0b3I8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUNvbXBhcmF0b3I7XG4gIH1cblxuICBwdWJsaWMgaXNQYWdlTG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIFxuICBwdWJsaWMgbmV3RGF0YU9iamVjdCgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVcIjogXCJURVNUIE5hbWVcIixcbiAgICAgIFwidGl0bGVcIjogXCJURVNUIFZBTFVFXCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVEVTVCBkZXNjcmlwdGlvblwiLFxuICAgICAgXCJzdGFydERhdGVcIjogKG5ldyBEYXRlKCkpLmdldFRpbWUoKSxcbiAgICAgIFwiZW5kRGF0ZVwiOiAobmV3IERhdGUoKSkuZ2V0VGltZSgpXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb25Nb2RlbHMoYWN0aW9uTW9kZWxzOiBBY3Rpb25Nb2RlbFtdKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0QWN0aW9uTW9kZWxzKGFjdGlvbk1vZGVscyk7XG5cbiAgICB0aGlzLmFjdGlvbk1lbnVCYXIuc2V0TW9kZWxzKGFjdGlvbk1vZGVscyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25FZGl0b3JTZXR0aW5nTG9hZGVkKHNldHRpbmdzOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBkbyBzdGhpbmcgd2hlbiByZWxvYWQgZWRpdG9yIHNldHRpbmdcbiAgfVxufVxuIl19