UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

276 lines (275 loc) 24.8 kB
/** * @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