@magic-xpa/angular 4.1100.0-dev4110.106 → 4.1100.0-dev4110.109
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/index.mjs +59 -2
- package/esm2020/src/controls.metadata.model.mjs +180 -0
- package/esm2020/src/interfaces/sub-form-definition.iterface.mjs +2 -0
- package/esm2020/src/magic.core.module.mjs +160 -0
- package/esm2020/src/services/ISubformMagicService.mjs +2 -0
- package/esm2020/src/services/OverlayWindowService.mjs +236 -0
- package/esm2020/src/services/StylesMapManager.mjs +28 -0
- package/esm2020/src/services/accessor.magic.service.mjs +356 -0
- package/esm2020/src/services/commands-collector.magic.service.mjs +46 -0
- package/esm2020/src/services/component-list.magic.service.mjs +46 -0
- package/esm2020/src/services/confirmation.components.magic.provider.mjs +21 -0
- package/esm2020/src/services/engine.magic.service.mjs +82 -0
- package/esm2020/src/services/exit.magic.service.mjs +13 -0
- package/esm2020/src/services/magic-color.service.mjs +99 -0
- package/esm2020/src/services/magic.lazy.loader.service.mjs +16 -0
- package/esm2020/src/services/magic.providers.mjs +25 -0
- package/esm2020/src/services/magic.services.mjs +31 -0
- package/esm2020/src/services/mg-date-adapter.mjs +109 -0
- package/esm2020/src/services/overlay.conainer.magic.provider.mjs +14 -0
- package/esm2020/src/services/router-commands.magic.service.mjs +28 -0
- package/esm2020/src/services/subform.magic.service.mjs +184 -0
- package/esm2020/src/services/table.magic.service.mjs +77 -0
- package/esm2020/src/services/task.magics.service.mjs +624 -0
- package/esm2020/src/services/title.magic.service.mjs +18 -0
- package/esm2020/src/ui/GuiInteractiveExecutor.mjs +105 -0
- package/esm2020/src/ui/components/base-magic-alert.component.mjs +23 -0
- package/esm2020/src/ui/components/base-magic-confirm.component.mjs +23 -0
- package/esm2020/src/ui/components/magic-alert.component.mjs +35 -0
- package/esm2020/src/ui/components/magic-confirmation-box.component.mjs +41 -0
- package/esm2020/src/ui/directives/NonMagicControlDirective.mjs +49 -0
- package/esm2020/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.mjs +28 -0
- package/esm2020/src/ui/directives/magic/checkbox.magic.directive.mjs +28 -0
- package/esm2020/src/ui/directives/magic/combobox.magic.directive.mjs +36 -0
- package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.mjs +27 -0
- package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs +52 -0
- package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.mjs +32 -0
- package/esm2020/src/ui/directives/magic/input.noformcontrol.magic.directive.mjs +27 -0
- package/esm2020/src/ui/directives/magic/nocontrol.magic.directive.mjs +193 -0
- package/esm2020/src/ui/directives/magic/row.magic.directive.mjs +58 -0
- package/esm2020/src/ui/directives/magic-focus.directive.mjs +19 -0
- package/esm2020/src/ui/directives/magic.directive.mjs +215 -0
- package/esm2020/src/ui/directives/magicViewContainerRef.directive.mjs +19 -0
- package/esm2020/src/ui/directives/mgformat.magic.directive.mjs +408 -0
- package/esm2020/src/ui/directives/range-validator.magic.directive.mjs +58 -0
- package/esm2020/src/ui/magic-confirmationBox.mjs +42 -0
- package/esm2020/src/ui/magic-modal/base-magic-overlay-container.mjs +22 -0
- package/esm2020/src/ui/magic-modal/magic-modal-form.mjs +8 -0
- package/esm2020/src/ui/magic-modal/magic-modal-interface.mjs +2 -0
- package/esm2020/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +121 -0
- package/esm2020/src/ui/magic-modal/magic-overlay-container.mjs +159 -0
- package/esm2020/src/ui/magic-root.component.mjs +203 -0
- package/esm2020/src/ui/mgerror.magic.component.mjs +119 -0
- package/esm2020/src/ui/pipes/date.magic.pipe.mjs +105 -0
- package/esm2020/src/ui/pipes/time.magic.pipe.mjs +51 -0
- package/esm2020/src/ui/pipes/time24.magic.pipe.mjs +34 -0
- package/esm2020/src/ui/router-container.magic.component.mjs +108 -0
- package/esm2020/src/ui/subform.magic.component.mjs +52 -0
- package/esm2020/src/ui/task-base.magic.component.mjs +86 -0
- package/esm2020/src/ui/utils.mjs +54 -0
- package/fesm2015/magic-xpa-angular.mjs +4863 -0
- package/fesm2015/magic-xpa-angular.mjs.map +1 -1
- package/fesm2020/magic-xpa-angular.mjs +4681 -0
- package/fesm2020/magic-xpa-angular.mjs.map +1 -1
- package/index.d.ts +58 -1
- package/package.json +3 -3
- package/src/controls.metadata.model.d.ts +62 -0
- package/src/interfaces/sub-form-definition.iterface.d.ts +12 -0
- package/src/magic.core.module.d.ts +41 -0
- package/src/services/ISubformMagicService.d.ts +4 -0
- package/src/services/OverlayWindowService.d.ts +31 -0
- package/src/services/StylesMapManager.d.ts +5 -0
- package/src/services/accessor.magic.service.d.ts +69 -0
- package/src/services/commands-collector.magic.service.d.ts +15 -0
- package/src/services/component-list.magic.service.d.ts +23 -0
- package/src/services/confirmation.components.magic.provider.d.ts +8 -0
- package/src/services/engine.magic.service.d.ts +27 -0
- package/src/services/exit.magic.service.d.ts +6 -0
- package/src/services/magic-color.service.d.ts +19 -0
- package/src/services/magic.lazy.loader.service.d.ts +6 -0
- package/src/services/magic.providers.d.ts +107 -0
- package/src/services/magic.services.d.ts +16 -0
- package/src/services/mg-date-adapter.d.ts +40 -0
- package/src/services/overlay.conainer.magic.provider.d.ts +7 -0
- package/src/services/router-commands.magic.service.d.ts +17 -0
- package/src/services/subform.magic.service.d.ts +43 -0
- package/src/services/table.magic.service.d.ts +30 -0
- package/src/services/task.magics.service.d.ts +100 -0
- package/src/services/title.magic.service.d.ts +9 -0
- package/src/ui/GuiInteractiveExecutor.d.ts +22 -0
- package/src/ui/components/base-magic-alert.component.d.ts +10 -0
- package/src/ui/components/base-magic-confirm.component.d.ts +10 -0
- package/src/ui/components/magic-alert.component.d.ts +6 -0
- package/src/ui/components/magic-confirmation-box.component.d.ts +6 -0
- package/src/ui/directives/NonMagicControlDirective.d.ts +26 -0
- package/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.d.ts +9 -0
- package/src/ui/directives/magic/checkbox.magic.directive.d.ts +9 -0
- package/src/ui/directives/magic/combobox.magic.directive.d.ts +10 -0
- package/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.d.ts +7 -0
- package/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.d.ts +17 -0
- package/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.d.ts +7 -0
- package/src/ui/directives/magic/input.noformcontrol.magic.directive.d.ts +9 -0
- package/src/ui/directives/magic/nocontrol.magic.directive.d.ts +18 -0
- package/src/ui/directives/magic/row.magic.directive.d.ts +17 -0
- package/src/ui/directives/magic-focus.directive.d.ts +9 -0
- package/src/ui/directives/magic.directive.d.ts +44 -0
- package/src/ui/directives/magicViewContainerRef.directive.d.ts +8 -0
- package/src/ui/directives/mgformat.magic.directive.d.ts +31 -0
- package/src/ui/directives/range-validator.magic.directive.d.ts +17 -0
- package/src/ui/magic-confirmationBox.d.ts +6 -0
- package/src/ui/magic-modal/base-magic-overlay-container.d.ts +5 -0
- package/src/ui/magic-modal/magic-modal-form.d.ts +5 -0
- package/src/ui/magic-modal/magic-modal-interface.d.ts +10 -0
- package/src/ui/magic-modal/magic-overlay-container-wrapper.d.ts +31 -0
- package/src/ui/magic-modal/magic-overlay-container.d.ts +25 -0
- package/src/ui/magic-root.component.d.ts +40 -0
- package/src/ui/mgerror.magic.component.d.ts +20 -0
- package/src/ui/pipes/date.magic.pipe.d.ts +17 -0
- package/src/ui/pipes/time.magic.pipe.d.ts +11 -0
- package/src/ui/pipes/time24.magic.pipe.d.ts +10 -0
- package/src/ui/router-container.magic.component.d.ts +30 -0
- package/src/ui/subform.magic.component.d.ts +16 -0
- package/src/ui/task-base.magic.component.d.ts +34 -0
- package/src/ui/utils.d.ts +9 -0
@@ -0,0 +1,108 @@
|
|
1
|
+
import { Component, ComponentFactoryResolver, ViewContainerRef } from '@angular/core';
|
2
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
3
|
+
import { EngineMagicService } from '../services/engine.magic.service';
|
4
|
+
import { getGuiEventObj } from '@magic-xpa/engine';
|
5
|
+
import { List } from '@magic-xpa/mscorelib';
|
6
|
+
import { StrUtil } from '@magic-xpa/utils';
|
7
|
+
import { ComponentListMagicService } from '../services/component-list.magic.service';
|
8
|
+
import { SubformMagicService } from '../services/subform.magic.service';
|
9
|
+
import { CommandsCollectorMagicService } from '../services/commands-collector.magic.service';
|
10
|
+
import { RouterCommandsMagicService } from '../services/router-commands.magic.service';
|
11
|
+
import { TaskMagicService } from '../services/task.magics.service';
|
12
|
+
import * as i0 from "@angular/core";
|
13
|
+
import * as i1 from "@angular/router";
|
14
|
+
import * as i2 from "../services/engine.magic.service";
|
15
|
+
import * as i3 from "../services/task.magics.service";
|
16
|
+
import * as i4 from "../services/component-list.magic.service";
|
17
|
+
import * as i5 from "../services/commands-collector.magic.service";
|
18
|
+
import * as i6 from "../services/router-commands.magic.service";
|
19
|
+
export class RouterContainerMagicComponent {
|
20
|
+
static get LastRoute() {
|
21
|
+
return RouterContainerMagicComponent.lastRoute;
|
22
|
+
}
|
23
|
+
constructor(activatedRoute, router, magic, containerTaskService, componentFactoryResolver, viewContainerRef, componentList, pendingCommandsCollector, routerCommandsMagicService) {
|
24
|
+
this.activatedRoute = activatedRoute;
|
25
|
+
this.router = router;
|
26
|
+
this.magic = magic;
|
27
|
+
this.containerTaskService = containerTaskService;
|
28
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
29
|
+
this.viewContainerRef = viewContainerRef;
|
30
|
+
this.componentList = componentList;
|
31
|
+
this.pendingCommandsCollector = pendingCommandsCollector;
|
32
|
+
this.routerCommandsMagicService = routerCommandsMagicService;
|
33
|
+
this.componentRef = null;
|
34
|
+
this.parentMgSubformService = null;
|
35
|
+
}
|
36
|
+
ngOnInit() {
|
37
|
+
let subformMagicService = SubformMagicService.currentCallerMgSubformServiceRef;
|
38
|
+
let currentActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);
|
39
|
+
RouterContainerMagicComponent.lastRoute = this.router.url;
|
40
|
+
if (subformMagicService == null || subformMagicService.currentRouteDefinition === null) {
|
41
|
+
this.insertRouteEvent(currentActiveRoute);
|
42
|
+
SubformMagicService.routerContainers.push(this);
|
43
|
+
}
|
44
|
+
else {
|
45
|
+
this.initializeComponent();
|
46
|
+
}
|
47
|
+
}
|
48
|
+
insertRouteEvent(currentActiveRoute) {
|
49
|
+
let guiEvent = getGuiEventObj('RouterNavigate', null, 0);
|
50
|
+
guiEvent.RouterPath = currentActiveRoute.snapshot.routeConfig.path;
|
51
|
+
if (currentActiveRoute.snapshot.outlet !== 'primary')
|
52
|
+
guiEvent.RouterOutletName = currentActiveRoute.snapshot.outlet;
|
53
|
+
let calcRouterPath = currentActiveRoute.routeConfig.path;
|
54
|
+
if (calcRouterPath.length > 0) {
|
55
|
+
let routerPath = calcRouterPath;
|
56
|
+
let tokens = StrUtil.tokenize(routerPath, "/:");
|
57
|
+
guiEvent.RouterPath = tokens[0];
|
58
|
+
guiEvent.RouterParams = new List();
|
59
|
+
for (let i = 1; i < tokens.length; i++) {
|
60
|
+
guiEvent.RouterParams.push(currentActiveRoute.snapshot.params[tokens[i]]);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
this.containerTaskService.insertEvent(guiEvent);
|
64
|
+
}
|
65
|
+
initializeComponent() {
|
66
|
+
let subformMagicService = SubformMagicService.currentCallerMgSubformServiceRef;
|
67
|
+
if (subformMagicService.currentRouteDefinition !== null) {
|
68
|
+
let comp = this.componentList.getComponent(subformMagicService.currentRouteDefinition.formName);
|
69
|
+
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(comp);
|
70
|
+
this.componentRef = this.viewContainerRef.createComponent(componentFactory);
|
71
|
+
Object.assign(this.componentRef.instance, subformMagicService.currentRouteDefinition.parameters);
|
72
|
+
let myActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);
|
73
|
+
let routeParams = StrUtil.tokenize(myActiveRoute.snapshot.routeConfig.path, "/:");
|
74
|
+
subformMagicService.routesDict[myActiveRoute.snapshot.outlet] = routeParams[0];
|
75
|
+
this.parentMgSubformService = subformMagicService;
|
76
|
+
subformMagicService.currentRouteDefinition = null;
|
77
|
+
SubformMagicService.currentCallerMgSubformServiceRef = null;
|
78
|
+
let ignoreParamChange = true;
|
79
|
+
myActiveRoute.paramMap.subscribe(params => {
|
80
|
+
if (!ignoreParamChange)
|
81
|
+
this.insertRouteEvent(myActiveRoute);
|
82
|
+
ignoreParamChange = false;
|
83
|
+
});
|
84
|
+
this.parentMgSubformService.refreshView();
|
85
|
+
this.routerCommandsMagicService.ExecuteNextCommand();
|
86
|
+
}
|
87
|
+
}
|
88
|
+
ngOnDestroy() {
|
89
|
+
if (this.componentRef != null) {
|
90
|
+
this.componentRef.instance.task.close();
|
91
|
+
let currentActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);
|
92
|
+
this.parentMgSubformService.routesDict[currentActiveRoute.outlet] = "";
|
93
|
+
RouterContainerMagicComponent.lastRoute = this.router.url;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
RouterContainerMagicComponent.lastRoute = "/";
|
98
|
+
RouterContainerMagicComponent.ɵfac = function RouterContainerMagicComponent_Factory(t) { return new (t || RouterContainerMagicComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.EngineMagicService), i0.ɵɵdirectiveInject(i3.TaskMagicService), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i4.ComponentListMagicService), i0.ɵɵdirectiveInject(i5.CommandsCollectorMagicService), i0.ɵɵdirectiveInject(i6.RouterCommandsMagicService)); };
|
99
|
+
RouterContainerMagicComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RouterContainerMagicComponent, selectors: [["magic-route-outlet"]], decls: 0, vars: 0, template: function RouterContainerMagicComponent_Template(rf, ctx) { }, encapsulation: 2 });
|
100
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RouterContainerMagicComponent, [{
|
101
|
+
type: Component,
|
102
|
+
args: [{
|
103
|
+
selector: 'magic-route-outlet',
|
104
|
+
template: `
|
105
|
+
`
|
106
|
+
}]
|
107
|
+
}], function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.EngineMagicService }, { type: i3.TaskMagicService }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: i4.ComponentListMagicService }, { type: i5.CommandsCollectorMagicService }, { type: i6.RouterCommandsMagicService }]; }, null); })();
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWNvbnRhaW5lci5tYWdpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91aS9yb3V0ZXItY29udGFpbmVyLm1hZ2ljLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFVLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBYSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDN0YsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7O0FBVW5FLE1BQU0sT0FBTyw2QkFBNkI7SUFLeEMsTUFBTSxLQUFLLFNBQVM7UUFDbEIsT0FBTyw2QkFBNkIsQ0FBQyxTQUFTLENBQUM7SUFDakQsQ0FBQztJQVlELFlBQW9CLGNBQThCLEVBQzVCLE1BQWMsRUFDZCxLQUF5QixFQUMzQixvQkFBc0MsRUFDdEMsd0JBQWtELEVBQ2xELGdCQUFrQyxFQUNsQyxhQUF3QyxFQUN0Qyx3QkFBdUQsRUFDdkQsMEJBQXNEO1FBUnhELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFrQjtRQUN0Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQTJCO1FBQ3RDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBK0I7UUFDdkQsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQTFCcEUsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsMkJBQXNCLEdBQXdCLElBQUksQ0FBQztJQXlCb0IsQ0FBQztJQUtoRixRQUFRO1FBQ04sSUFBSSxtQkFBbUIsR0FBd0IsbUJBQW1CLENBQUMsZ0NBQWdDLENBQUM7UUFFcEcsSUFBSSxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbkYsNkJBQTZCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBRTFELElBQUksbUJBQW1CLElBQUksSUFBSSxJQUFJLG1CQUFtQixDQUFDLHNCQUFzQixLQUFLLElBQUksRUFBRTtZQUN0RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUUxQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakQ7YUFDSTtZQUNILElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLGtCQUFrQztRQUN6RCxJQUFJLFFBQVEsR0FBYyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLFFBQVEsQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFFbkUsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFDbEQsUUFBUSxDQUFDLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFNakUsSUFBSSxjQUFjLEdBQVcsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUVqRSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUM3QjtZQUNFLElBQUksVUFBVSxHQUFXLGNBQWMsQ0FBQztZQUN4QyxJQUFJLE1BQU0sR0FBYSxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxRCxRQUFRLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoQyxRQUFRLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzRTtTQUNGO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsbUJBQW1CO1FBRWpCLElBQUksbUJBQW1CLEdBQXdCLG1CQUFtQixDQUFDLGdDQUFnQyxDQUFDO1FBQ3BHLElBQUksbUJBQW1CLENBQUMsc0JBQXNCLEtBQUssSUFBSSxFQUFFO1lBQ3ZELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hHLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzVFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFHakcsSUFBSSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRTlFLElBQUksV0FBVyxHQUFhLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVGLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUvRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsbUJBQW1CLENBQUM7WUFDbEQsbUJBQW1CLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBQ2xELG1CQUFtQixDQUFDLGdDQUFnQyxHQUFHLElBQUksQ0FBQztZQUs1RCxJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM3QixhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLGlCQUFpQjtvQkFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN2QyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFMUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDdEQ7SUFDSCxDQUFDO0lBS0QsV0FBVztRQUdULElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLEVBQzdCO1lBQzJCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVsRSxJQUFJLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUV2RSw2QkFBNkIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDM0Q7SUFDSCxDQUFDOztBQTVIYyx1Q0FBUyxHQUFXLEdBQUcsQ0FBQzswR0FINUIsNkJBQTZCO2tFQUE3Qiw2QkFBNkI7dUZBQTdCLDZCQUE2QjtjQUx6QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsUUFBUSxFQUFFO0dBQ1Q7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUYXNrQmFzZU1hZ2ljQ29tcG9uZW50IH0gZnJvbSAnLi90YXNrLWJhc2UubWFnaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW5naW5lTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZW5naW5lLm1hZ2ljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBnZXRHdWlFdmVudE9iaiwgSUd1aUV2ZW50IH0gZnJvbSAnQG1hZ2ljLXhwYS9lbmdpbmUnO1xyXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBTdHJVdGlsIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IENvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21wb25lbnQtbGlzdC5tYWdpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViZm9ybU1hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N1YmZvcm0ubWFnaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1hbmRzQ29sbGVjdG9yTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbWFuZHMtY29sbGVjdG9yLm1hZ2ljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JvdXRlci1jb21tYW5kcy5tYWdpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGFza01hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Rhc2subWFnaWNzLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIE1vY2sgY29tcG9uZW50LCBpbXBsZW1lbnRzIHJvdXRpbmcgYnkgY29ubmVjdGluZyB0aGUgcmVxdWVzdGVkIFVSTCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBNYWdpYyB0YXNrXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21hZ2ljLXJvdXRlLW91dGxldCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb3V0ZXJDb250YWluZXJNYWdpY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWYgPSBudWxsO1xyXG4gIHByaXZhdGUgcGFyZW50TWdTdWJmb3JtU2VydmljZTogU3ViZm9ybU1hZ2ljU2VydmljZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgbGFzdFJvdXRlOiBzdHJpbmcgPSBcIi9cIjtcclxuXHJcbiAgc3RhdGljIGdldCBMYXN0Um91dGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBSb3V0ZXJDb250YWluZXJNYWdpY0NvbXBvbmVudC5sYXN0Um91dGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAqIEBwYXJhbSBhY3RpdmF0ZWRSb3V0ZVxyXG4gICAqIEBwYXJhbSBtYWdpY1xyXG4gICAqIEBwYXJhbSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcclxuICAgKiBAcGFyYW0gdmlld0NvbnRhaW5lclJlZlxyXG4gICAqIEBwYXJhbSBjb21wb25lbnRMaXN0XHJcbiAgICogQHBhcmFtIHBlbmRpbmdDb21tYW5kc0NvbGxlY3RvclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgbWFnaWM6IEVuZ2luZU1hZ2ljU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNvbnRhaW5lclRhc2tTZXJ2aWNlOiBUYXNrTWFnaWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY29tcG9uZW50TGlzdDogQ29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSxcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgcGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yOiBDb21tYW5kc0NvbGxlY3Rvck1hZ2ljU2VydmljZSxcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgcm91dGVyQ29tbWFuZHNNYWdpY1NlcnZpY2U6IFJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXphdGlvblxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgbGV0IHN1YmZvcm1NYWdpY1NlcnZpY2U6IFN1YmZvcm1NYWdpY1NlcnZpY2UgPSBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmO1xyXG5cclxuICAgIGxldCBjdXJyZW50QWN0aXZlUm91dGUgPSBTdWJmb3JtTWFnaWNTZXJ2aWNlLmdldFJlbGF0aXZlUm91dGUodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XHJcblxyXG4gICAgUm91dGVyQ29udGFpbmVyTWFnaWNDb21wb25lbnQubGFzdFJvdXRlID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgIGlmIChzdWJmb3JtTWFnaWNTZXJ2aWNlID09IG51bGwgfHwgc3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Um91dGVEZWZpbml0aW9uID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaW5zZXJ0Um91dGVFdmVudChjdXJyZW50QWN0aXZlUm91dGUpO1xyXG5cclxuICAgICAgU3ViZm9ybU1hZ2ljU2VydmljZS5yb3V0ZXJDb250YWluZXJzLnB1c2godGhpcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluc2VydFJvdXRlRXZlbnQoY3VycmVudEFjdGl2ZVJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xyXG4gICAgbGV0IGd1aUV2ZW50OiBJR3VpRXZlbnQgPSBnZXRHdWlFdmVudE9iaignUm91dGVyTmF2aWdhdGUnLCBudWxsLCAwKTtcclxuICAgIGd1aUV2ZW50LlJvdXRlclBhdGggPSBjdXJyZW50QWN0aXZlUm91dGUuc25hcHNob3Qucm91dGVDb25maWcucGF0aDtcclxuXHJcbiAgICBpZiAoY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90Lm91dGxldCAhPT0gJ3ByaW1hcnknKVxyXG4gICAgICBndWlFdmVudC5Sb3V0ZXJPdXRsZXROYW1lID0gY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90Lm91dGxldDtcclxuXHJcblxyXG4gICAgLy8gaWYgdGhpcyBpcyBMb2FkT25EZW1hbmRNb2R1bGVNYWdpY0NvbXBvbmVudCBpdCdzIG1lYW4gdGhhdCB0aGlzIGlzIGxvYWQgb24gZGVtYW5kIG1vZHVsZSBhbmQgd2VcclxuICAgIC8vIG5lZWQgdG8gdGFrZSB0aGUgcGF0aCBmb3JtIHJvdXRlQ29uZmlnLnBhdGhcclxuXHJcbiAgICBsZXQgY2FsY1JvdXRlclBhdGg6IHN0cmluZyA9IGN1cnJlbnRBY3RpdmVSb3V0ZS5yb3V0ZUNvbmZpZy5wYXRoO1xyXG4gICAgLy8gYWRkIHRoZSBSb3V0ZXJQYXRoIG9ubHkgaWYgZXhpc3RcclxuICAgIGlmIChjYWxjUm91dGVyUGF0aC5sZW5ndGggPiAwKVxyXG4gICAge1xyXG4gICAgICBsZXQgcm91dGVyUGF0aDogc3RyaW5nID0gY2FsY1JvdXRlclBhdGg7XHJcbiAgICAgIGxldCB0b2tlbnM6IHN0cmluZ1tdID0gU3RyVXRpbC50b2tlbml6ZShyb3V0ZXJQYXRoLCBcIi86XCIpO1xyXG4gICAgICBndWlFdmVudC5Sb3V0ZXJQYXRoID0gdG9rZW5zWzBdO1xyXG5cclxuICAgICAgZ3VpRXZlbnQuUm91dGVyUGFyYW1zID0gbmV3IExpc3QoKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBndWlFdmVudC5Sb3V0ZXJQYXJhbXMucHVzaChjdXJyZW50QWN0aXZlUm91dGUuc25hcHNob3QucGFyYW1zW3Rva2Vuc1tpXV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb250YWluZXJUYXNrU2VydmljZS5pbnNlcnRFdmVudChndWlFdmVudCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplQ29tcG9uZW50KCkge1xyXG4gICAgLy8gcmUtaW5pdCBzdWJmb3JtTWFnaWNTZXJ2aWNlICBzaW5jZSBpdCBtYXkgY2hhbmdlIGFmdGVyIGV4ZWN1dGluZyBcIlJvdXRlck5hdmlnYXRlXCIgZXZlbnQuXHJcbiAgICBsZXQgc3ViZm9ybU1hZ2ljU2VydmljZTogU3ViZm9ybU1hZ2ljU2VydmljZSA9IFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWY7XHJcbiAgICBpZiAoc3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Um91dGVEZWZpbml0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBjb21wID0gdGhpcy5jb21wb25lbnRMaXN0LmdldENvbXBvbmVudChzdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRSb3V0ZURlZmluaXRpb24uZm9ybU5hbWUpO1xyXG4gICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcCk7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5KTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgc3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Um91dGVEZWZpbml0aW9uLnBhcmFtZXRlcnMpO1xyXG5cclxuXHJcbiAgICAgIGxldCBteUFjdGl2ZVJvdXRlID0gU3ViZm9ybU1hZ2ljU2VydmljZS5nZXRSZWxhdGl2ZVJvdXRlKHRoaXMuYWN0aXZhdGVkUm91dGUpO1xyXG5cclxuICAgICAgbGV0IHJvdXRlUGFyYW1zOiBzdHJpbmdbXSA9IFN0clV0aWwudG9rZW5pemUobXlBY3RpdmVSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRoLCBcIi86XCIpO1xyXG4gICAgICBzdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlc0RpY3RbbXlBY3RpdmVSb3V0ZS5zbmFwc2hvdC5vdXRsZXRdID0gcm91dGVQYXJhbXNbMF07XHJcblxyXG4gICAgICB0aGlzLnBhcmVudE1nU3ViZm9ybVNlcnZpY2UgPSBzdWJmb3JtTWFnaWNTZXJ2aWNlO1xyXG4gICAgICBzdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRSb3V0ZURlZmluaXRpb24gPSBudWxsO1xyXG4gICAgICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmID0gbnVsbDtcclxuXHJcbiAgICAgIC8vV2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkLCB0aGVuIGFsc28gd2UgZ2V0IHRoZSBub3RpZmljYXRpb24gZm9yIHBhcmFtTWFwIHN1YnNjcmlwdGlvbi5cclxuICAgICAgLy9CdXQgaW4gdGhpcyBjYXNlLCAgd2UgZG8gbm90IGhhdmUgdG8gcmFpc2UgdGhlIGV2ZW50LCBiZWNhdXNlIG1hZ2ljIGVuZ2luZSBpdHNlbGYgaGFzICBpbml0aWF0ZWQgdGhlIHJvdXRlIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycy5cclxuICAgICAgLy9TbywgY29udHJvbCBpdCB2aWEgaWdub3JlUGFyYW1DaGFuZ2UgZmxhZy5cclxuICAgICAgbGV0IGlnbm9yZVBhcmFtQ2hhbmdlID0gdHJ1ZTtcclxuICAgICAgbXlBY3RpdmVSb3V0ZS5wYXJhbU1hcC5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgICBpZiAoIWlnbm9yZVBhcmFtQ2hhbmdlKVxyXG4gICAgICAgICAgdGhpcy5pbnNlcnRSb3V0ZUV2ZW50KG15QWN0aXZlUm91dGUpO1xyXG4gICAgICAgIGlnbm9yZVBhcmFtQ2hhbmdlID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5wYXJlbnRNZ1N1YmZvcm1TZXJ2aWNlLnJlZnJlc2hWaWV3KCk7XHJcblxyXG4gICAgICB0aGlzLnJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlLkV4ZWN1dGVOZXh0Q29tbWFuZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYW51cFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gVE9ETyBSb3V0aW5nOiBDYWxsIGNsb3NlKCkgb25seSBpZiB0aGUgdGFzayBpcyBub3QgYWxyZWFkeSBjbG9zZWQuXHJcbiAgICAvLyBUYXNrIGNhbiBiZSBjbG9zZWQgd2hlbiBhIHJvdXRlciBpcyBvdmVybGF5ZWQgYnkgYW5vdGhlciB0YXNrIHZpYSBjYWxsIG9wZXJhdGlvbi5cclxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAhPSBudWxsKVxyXG4gICAge1xyXG4gICAgICAoPFRhc2tCYXNlTWFnaWNDb21wb25lbnQ+dGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UpLnRhc2suY2xvc2UoKTtcclxuXHJcbiAgICAgIGxldCBjdXJyZW50QWN0aXZlUm91dGUgPSBTdWJmb3JtTWFnaWNTZXJ2aWNlLmdldFJlbGF0aXZlUm91dGUodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgICAgIHRoaXMucGFyZW50TWdTdWJmb3JtU2VydmljZS5yb3V0ZXNEaWN0W2N1cnJlbnRBY3RpdmVSb3V0ZS5vdXRsZXRdID0gXCJcIjtcclxuXHJcbiAgICAgIFJvdXRlckNvbnRhaW5lck1hZ2ljQ29tcG9uZW50Lmxhc3RSb3V0ZSA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import { Component, Input, ViewContainerRef } from "@angular/core";
|
2
|
+
import { SubformMagicService } from "../services/subform.magic.service";
|
3
|
+
import { isNullOrUndefined } from '@magic-xpa/mscorelib';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "../services/subform.magic.service";
|
6
|
+
import * as i2 from "@angular/common";
|
7
|
+
import * as i3 from "ng-dynamic-component";
|
8
|
+
function SubformMagicComponent_ndc_dynamic_0_Template(rf, ctx) { if (rf & 1) {
|
9
|
+
i0.ɵɵelement(0, "ndc-dynamic", 1);
|
10
|
+
} if (rf & 2) {
|
11
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
12
|
+
i0.ɵɵproperty("ndcDynamicComponent", ctx_r0.Component)("ndcDynamicInputs", ctx_r0.Parameters);
|
13
|
+
} }
|
14
|
+
export class SubformMagicComponent {
|
15
|
+
set magic(val) { this.id = val; }
|
16
|
+
;
|
17
|
+
constructor(vcRef, mgSub) {
|
18
|
+
this.vcRef = vcRef;
|
19
|
+
this.mgSub = mgSub;
|
20
|
+
this.component = null;
|
21
|
+
this.component = (this.vcRef._hostLView).find(v => !isNullOrUndefined(v));
|
22
|
+
}
|
23
|
+
get Component() {
|
24
|
+
return this.mgSub.mgGetComp(this.id);
|
25
|
+
}
|
26
|
+
get Parameters() {
|
27
|
+
return this.mgSub.mgGetParameters(this.id);
|
28
|
+
}
|
29
|
+
}
|
30
|
+
SubformMagicComponent.ɵfac = function SubformMagicComponent_Factory(t) { return new (t || SubformMagicComponent)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i1.SubformMagicService)); };
|
31
|
+
SubformMagicComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SubformMagicComponent, selectors: [["magic-subform"]], inputs: { magic: "magic" }, decls: 1, vars: 1, consts: [[3, "ndcDynamicComponent", "ndcDynamicInputs", 4, "ngIf"], [3, "ndcDynamicComponent", "ndcDynamicInputs"]], template: function SubformMagicComponent_Template(rf, ctx) { if (rf & 1) {
|
32
|
+
i0.ɵɵtemplate(0, SubformMagicComponent_ndc_dynamic_0_Template, 1, 2, "ndc-dynamic", 0);
|
33
|
+
} if (rf & 2) {
|
34
|
+
i0.ɵɵproperty("ngIf", ctx.Component);
|
35
|
+
} }, dependencies: [i2.NgIf, i3.DynamicComponent, i3.DynamicIoDirective], encapsulation: 2 });
|
36
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubformMagicComponent, [{
|
37
|
+
type: Component,
|
38
|
+
args: [{
|
39
|
+
selector: 'magic-subform',
|
40
|
+
template: `
|
41
|
+
<ndc-dynamic
|
42
|
+
*ngIf="Component"
|
43
|
+
[ndcDynamicComponent]="Component"
|
44
|
+
[ndcDynamicInputs]="Parameters">
|
45
|
+
</ndc-dynamic>
|
46
|
+
`
|
47
|
+
}]
|
48
|
+
}], function () { return [{ type: i0.ViewContainerRef }, { type: i1.SubformMagicService }]; }, { magic: [{
|
49
|
+
type: Input,
|
50
|
+
args: ['magic']
|
51
|
+
}] }); })();
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZm9ybS5tYWdpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91aS9zdWJmb3JtLm1hZ2ljLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0lBUXJELGlDQUljOzs7SUFGWixzREFBaUMsdUNBQUE7O0FBTXZDLE1BQU0sT0FBTyxxQkFBcUI7SUFTaEMsSUFBb0IsS0FBSyxDQUFDLEdBQUcsSUFBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBVWpELFlBQW9CLEtBQXVCLEVBQVksS0FBMEI7UUFBN0QsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFBWSxVQUFLLEdBQUwsS0FBSyxDQUFxQjtRQUxqRixjQUFTLEdBQTJCLElBQUksQ0FBQztRQU92QyxJQUFJLENBQUMsU0FBUyxHQUFLLENBQU8sSUFBSSxDQUFDLEtBQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFFLENBQTRCLENBQUMsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFLRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBS0QsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7MEZBcENVLHFCQUFxQjswREFBckIscUJBQXFCO1FBUjlCLHNGQUljOztRQUhYLG9DQUFlOzt1RkFPVCxxQkFBcUI7Y0FYakMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixRQUFRLEVBQUs7Ozs7OztDQU1kO2FBQUM7cUdBWW9CLEtBQUs7a0JBQXhCLEtBQUs7bUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtUYXNrQmFzZU1hZ2ljQ29tcG9uZW50fSBmcm9tIFwiLi90YXNrLWJhc2UubWFnaWMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFN1YmZvcm1NYWdpY1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvc3ViZm9ybS5tYWdpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBNYWdpYyBzdWJmb3JtXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21hZ2ljLXN1YmZvcm0nLFxyXG4gIHRlbXBsYXRlOiAgICBgXHJcbiAgICA8bmRjLWR5bmFtaWNcclxuICAgICAgKm5nSWY9XCJDb21wb25lbnRcIiAgXHJcbiAgICAgIFtuZGNEeW5hbWljQ29tcG9uZW50XT1cIkNvbXBvbmVudFwiIFxyXG4gICAgICBbbmRjRHluYW1pY0lucHV0c109XCJQYXJhbWV0ZXJzXCI+XHJcbiAgICA8L25kYy1keW5hbWljPlxyXG5gfSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU3ViZm9ybU1hZ2ljQ29tcG9uZW50IHtcclxuICAvKipcclxuICAgICogQGlnbm9yZVxyXG4gICAgKi9cclxuICBpZCA6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgnbWFnaWMnKSBzZXQgbWFnaWModmFsKSB7dGhpcy5pZCA9IHZhbDsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbXBvbmVudDogVGFza0Jhc2VNYWdpY0NvbXBvbmVudCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcm90ZWN0ZWQgbWdTdWI6IFN1YmZvcm1NYWdpY1NlcnZpY2UpIHtcclxuICAgIC8vIEZvciBhbmd1bGFyIDEzIC0gZmluZCB0aGUgY29tcG9uZW50IGZyb20gX2hvc3RMVmlld1xyXG4gICAgdGhpcy5jb21wb25lbnQgPSAgICgoPGFueT50aGlzLnZjUmVmKS5faG9zdExWaWV3KS5maW5kKHYgPT4gIWlzTnVsbE9yVW5kZWZpbmVkKCh2IGFzIFRhc2tCYXNlTWFnaWNDb21wb25lbnQpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgZ2V0IENvbXBvbmVudCgpOiBDb21wb25lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMubWdTdWIubWdHZXRDb21wKHRoaXMuaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGdldCBQYXJhbWV0ZXJzKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5tZ1N1Yi5tZ0dldFBhcmFtZXRlcnModGhpcy5pZCk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
|
@@ -0,0 +1,86 @@
|
|
1
|
+
import { ChangeDetectorRef, Component, Input } from '@angular/core';
|
2
|
+
import { MagicProperties } from "@magic-xpa/utils";
|
3
|
+
import { isNullOrUndefined } from "@magic-xpa/mscorelib";
|
4
|
+
import { TaskMagicService } from "../services/task.magics.service";
|
5
|
+
import { SubformMagicService } from "../services/subform.magic.service";
|
6
|
+
import { TableMagicService } from "../services/table.magic.service";
|
7
|
+
import { MagicServices } from "../services/magic.services";
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "../services/magic.services";
|
10
|
+
export class TaskBaseMagicComponent {
|
11
|
+
constructor(ref, magicServices) {
|
12
|
+
this.ref = ref;
|
13
|
+
this.magicServices = magicServices;
|
14
|
+
this.magicProperties = MagicProperties;
|
15
|
+
}
|
16
|
+
get task() {
|
17
|
+
return this.magicServices.task;
|
18
|
+
}
|
19
|
+
get mgSub() {
|
20
|
+
return this.magicServices.subformService;
|
21
|
+
}
|
22
|
+
get tableService() {
|
23
|
+
return this.magicServices.tableService;
|
24
|
+
}
|
25
|
+
get mg() {
|
26
|
+
return this.magicServices.mgAccessorService;
|
27
|
+
}
|
28
|
+
get taskId() {
|
29
|
+
return this.task.taskId;
|
30
|
+
}
|
31
|
+
get screenFormGroup() {
|
32
|
+
return this.task.ScreenModeControls;
|
33
|
+
}
|
34
|
+
ngOnInit() {
|
35
|
+
this.task.detectChanges.pipe().subscribe(c => {
|
36
|
+
this.ref.detectChanges();
|
37
|
+
});
|
38
|
+
this.task.initTask(this.taskIdParam, this.taskDescription);
|
39
|
+
this.createFormControlsAccessor(this.screenFormGroup);
|
40
|
+
this.setInputDateFormat();
|
41
|
+
this.task.customPropertiesSubject.pipe().subscribe(property => {
|
42
|
+
this.PropertyChanged(property.propertyName, property.rowId, property.value);
|
43
|
+
});
|
44
|
+
this.task.recordsCountChangeSubject.pipe().subscribe(value => {
|
45
|
+
this.RecordsCountChanged(value);
|
46
|
+
});
|
47
|
+
this.task.mgLoadSubject.pipe().subscribe(value => {
|
48
|
+
this.mgOnLoad();
|
49
|
+
});
|
50
|
+
}
|
51
|
+
createFormControlsAccessor(formGroup) { }
|
52
|
+
setInputDateFormat() { }
|
53
|
+
PropertyChanged(propertyName, rowId, value) {
|
54
|
+
}
|
55
|
+
RecordsCountChanged(recordsCount) {
|
56
|
+
}
|
57
|
+
mgOnLoad() {
|
58
|
+
}
|
59
|
+
ngAfterViewInit() {
|
60
|
+
this.mgSub.init();
|
61
|
+
}
|
62
|
+
ngAfterContentChecked() {
|
63
|
+
if (!isNullOrUndefined(this.tableService.getPageSize()) && this.task.oldPageSize != this.tableService.getPageSize()) {
|
64
|
+
this.task.resize(this.tableService.getPageSize(), 0);
|
65
|
+
this.task.oldPageSize = this.tableService.getPageSize();
|
66
|
+
}
|
67
|
+
}
|
68
|
+
ngOnDestroy() {
|
69
|
+
this.task.dispose();
|
70
|
+
}
|
71
|
+
}
|
72
|
+
TaskBaseMagicComponent.ɵfac = function TaskBaseMagicComponent_Factory(t) { return new (t || TaskBaseMagicComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.MagicServices)); };
|
73
|
+
TaskBaseMagicComponent.ɵcmp = i0.ɵɵdefineComponent({ type: TaskBaseMagicComponent, selectors: [["task-magic"]], inputs: { taskIdParam: "taskIdParam", taskDescription: "taskDescription" }, features: [i0.ɵɵProvidersFeature([TaskMagicService, SubformMagicService, TableMagicService])], decls: 0, vars: 0, template: function TaskBaseMagicComponent_Template(rf, ctx) { }, encapsulation: 2 });
|
74
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskBaseMagicComponent, [{
|
75
|
+
type: Component,
|
76
|
+
args: [{
|
77
|
+
selector: 'task-magic',
|
78
|
+
providers: [TaskMagicService, SubformMagicService, TableMagicService],
|
79
|
+
template: ''
|
80
|
+
}]
|
81
|
+
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.MagicServices }]; }, { taskIdParam: [{
|
82
|
+
type: Input
|
83
|
+
}], taskDescription: [{
|
84
|
+
type: Input
|
85
|
+
}] }); })();
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1iYXNlLm1hZ2ljLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3VpL3Rhc2stYmFzZS5tYWdpYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVwRyxPQUFPLEVBQUUsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFXM0QsTUFBTSxPQUFPLHNCQUFzQjtJQXFCakMsWUFBc0IsR0FBc0IsRUFDekIsYUFBNEI7UUFEekIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFSL0Msb0JBQWUsR0FBRyxlQUFlLENBQUM7SUFTN0IsQ0FBQztJQU1OLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQU1ELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7SUFDM0MsQ0FBQztJQU1ELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQU1ELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFB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dXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWFnaWNQcm9wZXJ0aWVzfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuaW1wb3J0IHtUYXNrTWFnaWNTZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZXMvdGFzay5tYWdpY3Muc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdWJmb3JtTWFnaWNTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3N1YmZvcm0ubWFnaWMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUYWJsZU1hZ2ljU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy90YWJsZS5tYWdpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1hZ2ljU2VydmljZXMgfSBmcm9tIFwiLi4vc2VydmljZXMvbWFnaWMuc2VydmljZXNcIjtcclxuaW1wb3J0IHsgQWNjZXNzb3JNYWdpY1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvYWNjZXNzb3IubWFnaWMuc2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgY29tcG9uZW50IHJlcHJlc2VudGluZyBhIE1hZ2ljIHRhc2tcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGFzay1tYWdpYycsXHJcbiAgcHJvdmlkZXJzOiBbVGFza01hZ2ljU2VydmljZSwgU3ViZm9ybU1hZ2ljU2VydmljZSwgVGFibGVNYWdpY1NlcnZpY2VdLFxyXG4gIHRlbXBsYXRlOiAnJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFza0Jhc2VNYWdpY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgLyoqXHJcbiAgICogSWQgb2YgdGFzaywgdXNlZCBmb3IgaW5pdGlhbGl6aW5nIHRoZSB0YXNrIHNlcnZpY2VcclxuICAgKi9cclxuICBASW5wdXQoKSB0YXNrSWRQYXJhbTogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBASW5wdXQoKSB0YXNrRGVzY3JpcHRpb246IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIG1hZ2ljUHJvcGVydGllcyA9IE1hZ2ljUHJvcGVydGllcztcclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcmVmIGNoYW5nZXMtZGV0ZWN0b3Igb2JqZWN0XHJcbiAgICogQHBhcmFtIG1hZ2ljU2VydmljZXMgQWNjZXNzIHBvaW50IGZvciBhbGwgTWFnaWMgc2VydmljZXNcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICBwdWJsaWMgbWFnaWNTZXJ2aWNlczogTWFnaWNTZXJ2aWNlc1xyXG4gICkgeyAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBNYWdpYyB0YXNrIHNlcnZpY2VcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldCB0YXNrKCk6IFRhc2tNYWdpY1NlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMubWFnaWNTZXJ2aWNlcy50YXNrO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgTWFnaWMgc3ViZm9ybSBzZXJ2aWNlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXQgbWdTdWIoKTogU3ViZm9ybU1hZ2ljU2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY1NlcnZpY2VzLnN1YmZvcm1TZXJ2aWNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgTWFnaWMgdGFibGUgc2VydmljZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgZ2V0IHRhYmxlU2VydmljZSgpOiBUYWJsZU1hZ2ljU2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY1NlcnZpY2VzLnRhYmxlU2VydmljZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIE1hZ2ljIGFjY2Vzc29yIHNlcnZpY2VcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldCBtZygpOiBBY2Nlc3Nvck1hZ2ljU2VydmljZSAge1xyXG4gICAgcmV0dXJuIHRoaXMubWFnaWNTZXJ2aWNlcy5tZ0FjY2Vzc29yU2VydmljZTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0YXNrIElkXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXQgdGFza0lkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay50YXNrSWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBGb3JtR3JvdXAgZm9yIHNjcmVlbi1tb2RlIGZvcm1zXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXQgc2NyZWVuRm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLlNjcmVlbk1vZGVDb250cm9scztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMudGFzay5kZXRlY3RDaGFuZ2VzLnBpcGUoKS5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy50YXNrLmluaXRUYXNrKHRoaXMudGFza0lkUGFyYW0sIHRoaXMudGFza0Rlc2NyaXB0aW9uKTtcclxuXHJcbiAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sc0FjY2Vzc29yKHRoaXMuc2NyZWVuRm9ybUdyb3VwKTtcclxuICAgIHRoaXMuc2V0SW5wdXREYXRlRm9ybWF0KCk7XHJcblxyXG4gICAgLy8gc3ViY3JpYmUgdG8gY3VzdG9tIHByb3BlcnR5IGNoYW5nZXNcclxuICAgIHRoaXMudGFzay5jdXN0b21Qcm9wZXJ0aWVzU3ViamVjdC5waXBlKCkuc3Vic2NyaWJlKHByb3BlcnR5ID0+IHtcclxuICAgICAgdGhpcy5Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHkucHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5yb3dJZCwgcHJvcGVydHkudmFsdWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gc3ViY3JpYmUgdG8gcmVjb3JkcyBjb3VudCBjaGFuZ2VzXHJcbiAgICB0aGlzLnRhc2sucmVjb3Jkc0NvdW50Q2hhbmdlU3ViamVjdC5waXBlKCkuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgdGhpcy5SZWNvcmRzQ291bnRDaGFuZ2VkKHZhbHVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIHN1YmNyaWJlIHRvIG1nTG9hZCBjaGFuZ2VcclxuICAgIHRoaXMudGFzay5tZ0xvYWRTdWJqZWN0LnBpcGUoKS5zdWJzY3JpYmUodmFsdWUgPT57XHJcbiAgICAgIHRoaXMubWdPbkxvYWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNyZWF0ZUZvcm1Db250cm9sc0FjY2Vzc29yKGZvcm1Hcm91cDogRm9ybUdyb3VwKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgc2V0SW5wdXREYXRlRm9ybWF0ICgpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiBhbnkgY3VzdG9tIHByb3BlcnR5IGlzIHVwZGF0ZWQgaW4gTWFnaWNcclxuICAgKiBwcm9wZXJ0eU5hbWUgOiBuYW1lIG9mIHByb3BlcnR5IHdoaWNoIGlzIHVwZGF0ZWQuIFRoZSBmb3JtYXQgaXMgPGNvbnRyb2xuYW1lPn48cHJvcGVydHluYW1lPlxyXG4gICAqIHJvd0lkIDogcm93IG51bWJlciBvZiB0aGUgdXBkYXRlZCBwcm9wZXJ0eSBmb3IgY29udHJvbHMgaW4gdGFibGUgY29udHJvbCAoMCBmb3IgY29udHJvbHMgb3V0c2lkZSB0YWJsZSlcclxuICAgKiB2YWx1ZSA6IHVwZGF0ZWQgdmFsdWUgb2YgdGhlIHByb3BlcnR5XHJcbiAgICogQHJldHVybnMgOiB2b2lkXHJcbiAgICogVG8gdXNlIHRoZSBtZXRob2Qgb3ZlcnJpZGUgaXQgaW4geW91ciBjb21wb25lbnQgYW5kIGNoZWNrIHRoZSBwcm9wZXJ0eSBuYW1lIGFuZCB3cml0ZSB5b3UgY29kZSAuLmZvciBlZ1xyXG4gICAqIGlmKHByb3BlcnR5TmFtZSA9PSAnY29udHJvbG5hbWV+cHJvcGVydHlOYW1lJykgey8vIHlvdXIgY29kZX1cclxuICAgKiAgZWxzZSB7IC8vIHlvdXIgY29kZX1cclxuICAgKi9cclxuICBQcm9wZXJ0eUNoYW5nZWQocHJvcGVydHlOYW1lOnN0cmluZywgcm93SWQgOiBudW1iZXIsIHZhbHVlIDogYW55KSA6IHZvaWQge1xyXG4gICAgLy8gaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rIGJlY2F1c2UgdGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBpbiB0aGUgZGVyaXZlZCBjbGFzc1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjb3JkcyBjb3VudCBjaGFuZ2Ugc3ViamVjdCBpcyBzdWJzY3JpYmVkIHRvIGNoYW5nZSBpbiBpdHMgdmFsdWUuIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkXHJcbiAgICogYXMgdGhlIHZhbHVlIG9mIHJlY29yZHMgY291bnQgaXMgcmVjZWl2ZWQgYXQgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQHJldHVybnMgOiB2b2lkXHJcbiAgICogVG8gdXNlIHRoZSBtZXRob2Qgb3ZlcnJpZGUgaXQgaW4geW91ciBjb21wb25lbnQuXHJcbiAgICovXHJcbiAgUmVjb3Jkc0NvdW50Q2hhbmdlZChyZWNvcmRzQ291bnQgOiBudW1iZXIpIDogdm9pZCB7XHJcbiAgICAvLyBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsgYmVjYXVzZSB0aGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGluIHRoZSBkZXJpdmVkIGNsYXNzXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBvbmNlIGVuZ2luZSBpbmZvcm1zIFVJIGFib3V0IGxvYWRpbmcgb2YgZmlyc3Qgc2V0IG9mIGRhdGEgaXMgc2VudCB0byBjbGllbnRcclxuICAgKiBhbmQgY2xpZW50IGhhcyByZWFjaGVkIGl0cyBmaXJzdCBpZGxlIHRpbWUuXHJcbiAgICogQHJldHVybnMgOiB2b2lkXHJcbiAgICogVG8gdXNlIHRoZSBtZXRob2Qgb3ZlcnJpZGUgaXQgaW4geW91ciBjb21wb25lbnQuXHJcbiAgICovXHJcbiAgbWdPbkxvYWQoKSA6IHZvaWQge1xyXG4gICAgLy8gaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rIGJlY2F1c2UgdGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBpbiB0aGUgZGVyaXZlZCBjbGFzc1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLm1nU3ViLmluaXQoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIDogdm9pZCB7XHJcbiAgICBpZighaXNOdWxsT3JVbmRlZmluZWQodGhpcy50YWJsZVNlcnZpY2UuZ2V0UGFnZVNpemUoKSkgJiYgdGhpcy50YXNrLm9sZFBhZ2VTaXplICE9IHRoaXMudGFibGVTZXJ2aWNlLmdldFBhZ2VTaXplKCkpIHtcclxuICAgICAgdGhpcy50YXNrLnJlc2l6ZSh0aGlzLnRhYmxlU2VydmljZS5nZXRQYWdlU2l6ZSgpLCAwKTtcclxuICAgICAgdGhpcy50YXNrLm9sZFBhZ2VTaXplID0gdGhpcy50YWJsZVNlcnZpY2UuZ2V0UGFnZVNpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy50YXNrLmRpc3Bvc2UoKTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|
@@ -0,0 +1,54 @@
|
|
1
|
+
export class utils {
|
2
|
+
static getDistance(control, x, y) {
|
3
|
+
let left = control.clientLeft, top = control.clientTop;
|
4
|
+
let dx, dy;
|
5
|
+
const right = left + control.clientWidth;
|
6
|
+
const bottom = top + control.clientHeight;
|
7
|
+
if (x < left) {
|
8
|
+
dx = left - x;
|
9
|
+
}
|
10
|
+
else if (x > right) {
|
11
|
+
dx = x - right;
|
12
|
+
}
|
13
|
+
else {
|
14
|
+
dx = 0;
|
15
|
+
}
|
16
|
+
if (y < top) {
|
17
|
+
dy = top - y;
|
18
|
+
}
|
19
|
+
else if (y > bottom) {
|
20
|
+
dy = y - bottom;
|
21
|
+
}
|
22
|
+
else {
|
23
|
+
dy = 0;
|
24
|
+
}
|
25
|
+
const ret = (dx * dx + dy * dy);
|
26
|
+
return ret;
|
27
|
+
}
|
28
|
+
static getDimentions(el) {
|
29
|
+
let xPos = 0;
|
30
|
+
let yPos = 0;
|
31
|
+
let width = el.width;
|
32
|
+
let height = el.height;
|
33
|
+
while (el) {
|
34
|
+
if (el.tagName == "BODY") {
|
35
|
+
let xScroll = el.scrollLeft || document.documentElement.scrollLeft;
|
36
|
+
let yScroll = el.scrollTop || document.documentElement.scrollTop;
|
37
|
+
xPos += (el.offsetLeft - xScroll + el.clientLeft);
|
38
|
+
yPos += (el.offsetTop - yScroll + el.clientTop);
|
39
|
+
}
|
40
|
+
else {
|
41
|
+
xPos += (el.offsetLeft - el.scrollLeft + el.clientLeft);
|
42
|
+
yPos += (el.offsetTop - el.scrollTop + el.clientTop);
|
43
|
+
}
|
44
|
+
el = el.offsetParent;
|
45
|
+
}
|
46
|
+
return {
|
47
|
+
x: xPos,
|
48
|
+
y: yPos,
|
49
|
+
width: width,
|
50
|
+
height: height
|
51
|
+
};
|
52
|
+
}
|
53
|
+
}
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91aS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sS0FBSztJQUtoQixNQUFNLENBQUMsV0FBVyxDQUFDLE9BQWdCLEVBQUUsQ0FBUyxFQUFFLENBQVM7UUFFdkQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUV2RCxJQUFJLEVBQUUsRUFBRSxFQUFVLENBQUM7UUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFFMUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFO1lBQ1osRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7U0FDZjthQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRTtZQUNwQixFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUNoQjthQUFNO1lBQ0wsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNSO1FBRUQsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFO1lBQ1gsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDZDthQUFNLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRTtZQUNyQixFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztTQUNqQjthQUFNO1lBQ0wsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNSO1FBQ0QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUMvQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFLRCxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDckIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNyQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBRXZCLE9BQU8sRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLENBQUMsT0FBTyxJQUFJLE1BQU0sRUFBRTtnQkFFeEIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztnQkFDbkUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztnQkFFakUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDakQ7aUJBQU07Z0JBRUwsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN0RDtZQUVELEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO1NBRXRCO1FBQ0QsT0FBTztZQUNMLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQztJQUNKLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vLyBjbGFzcyB0byBob2xkIGd1aS1yZWxhdGVkIGhlbHBlciBtZXRob2RzXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbmV4cG9ydCBjbGFzcyB1dGlscyB7XHJcblxyXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gQ2FsY3VsYXRlIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBjb250cm9sIGFuZCB0aGUgc3VwcGxpZWQgeCx5IGNvb3JkaW5hdGVzXHJcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBzdGF0aWMgZ2V0RGlzdGFuY2UoY29udHJvbDogRWxlbWVudCwgeDogbnVtYmVyLCB5OiBudW1iZXIpOiBudW1iZXIge1xyXG5cclxuICAgIGxldCBsZWZ0ID0gY29udHJvbC5jbGllbnRMZWZ0LCB0b3AgPSBjb250cm9sLmNsaWVudFRvcDtcclxuXHJcbiAgICBsZXQgZHgsIGR5OiBudW1iZXI7XHJcbiAgICBjb25zdCByaWdodCA9IGxlZnQgKyBjb250cm9sLmNsaWVudFdpZHRoO1xyXG4gICAgY29uc3QgYm90dG9tID0gdG9wICsgY29udHJvbC5jbGllbnRIZWlnaHQ7XHJcblxyXG4gICAgaWYgKHggPCBsZWZ0KSB7XHJcbiAgICAgIGR4ID0gbGVmdCAtIHg7XHJcbiAgICB9IGVsc2UgaWYgKHggPiByaWdodCkge1xyXG4gICAgICBkeCA9IHggLSByaWdodDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGR4ID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeSA8IHRvcCkge1xyXG4gICAgICBkeSA9IHRvcCAtIHk7XHJcbiAgICB9IGVsc2UgaWYgKHkgPiBib3R0b20pIHtcclxuICAgICAgZHkgPSB5IC0gYm90dG9tO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZHkgPSAwO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV0ID0gKGR4ICogZHggKyBkeSAqIGR5KVxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy9cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIHN0YXRpYyBnZXREaW1lbnRpb25zKGVsKSB7XHJcbiAgICBsZXQgeFBvcyA9IDA7XHJcbiAgICBsZXQgeVBvcyA9IDA7XHJcbiAgICBsZXQgd2lkdGggPSBlbC53aWR0aDtcclxuICAgIGxldCBoZWlnaHQgPSBlbC5oZWlnaHQ7XHJcblxyXG4gICAgd2hpbGUgKGVsKSB7XHJcbiAgICAgIGlmIChlbC50YWdOYW1lID09IFwiQk9EWVwiKSB7XHJcbiAgICAgICAgLy8gZGVhbCB3aXRoIGJyb3dzZXIgcXVpcmtzIHdpdGggYm9keS93aW5kb3cvZG9jdW1lbnQgYW5kIHBhZ2Ugc2Nyb2xsXHJcbiAgICAgICAgbGV0IHhTY3JvbGwgPSBlbC5zY3JvbGxMZWZ0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0O1xyXG4gICAgICAgIGxldCB5U2Nyb2xsID0gZWwuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XHJcblxyXG4gICAgICAgIHhQb3MgKz0gKGVsLm9mZnNldExlZnQgLSB4U2Nyb2xsICsgZWwuY2xpZW50TGVmdCk7XHJcbiAgICAgICAgeVBvcyArPSAoZWwub2Zmc2V0VG9wIC0geVNjcm9sbCArIGVsLmNsaWVudFRvcCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZm9yIGFsbCBvdGhlciBub24tQk9EWSBlbGVtZW50c1xyXG4gICAgICAgIHhQb3MgKz0gKGVsLm9mZnNldExlZnQgLSBlbC5zY3JvbGxMZWZ0ICsgZWwuY2xpZW50TGVmdCk7XHJcbiAgICAgICAgeVBvcyArPSAoZWwub2Zmc2V0VG9wIC0gZWwuc2Nyb2xsVG9wICsgZWwuY2xpZW50VG9wKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZWwgPSBlbC5vZmZzZXRQYXJlbnQ7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgeDogeFBvcyxcclxuICAgICAgeTogeVBvcyxcclxuICAgICAgd2lkdGg6IHdpZHRoLFxyXG4gICAgICBoZWlnaHQ6IGhlaWdodFxyXG4gICAgfTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|