@magic-xpa/angular 4.1100.0-dev4110.25 → 4.1100.0-dev4110.252
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 → esm2022}/index.mjs +59 -59
- package/{esm2020 → esm2022}/magic-xpa-angular.mjs +1 -1
- package/esm2022/src/controls.metadata.model.mjs +183 -0
- package/{esm2020 → esm2022}/src/interfaces/sub-form-definition.iterface.mjs +1 -1
- package/{esm2020 → esm2022}/src/magic.core.module.mjs +159 -160
- package/{esm2020 → esm2022}/src/services/ISubformMagicService.mjs +1 -1
- package/esm2022/src/services/OverlayWindowService.mjs +244 -0
- package/esm2022/src/services/StylesMapManager.mjs +28 -0
- package/esm2022/src/services/accessor.magic.service.mjs +358 -0
- package/esm2022/src/services/commands-collector.magic.service.mjs +47 -0
- package/esm2022/src/services/component-list.magic.service.mjs +45 -0
- package/{esm2020 → esm2022}/src/services/confirmation.components.magic.provider.mjs +21 -21
- package/esm2022/src/services/engine.magic.service.mjs +80 -0
- package/{esm2020 → esm2022}/src/services/exit.magic.service.mjs +13 -13
- package/esm2022/src/services/magic-color.service.mjs +101 -0
- package/{esm2020 → esm2022}/src/services/magic.lazy.loader.service.mjs +16 -16
- package/{esm2020 → esm2022}/src/services/magic.providers.mjs +24 -24
- package/esm2022/src/services/magic.services.mjs +36 -0
- package/esm2022/src/services/mg-date-adapter.mjs +108 -0
- package/{esm2020 → esm2022}/src/services/overlay.conainer.magic.provider.mjs +14 -14
- package/esm2022/src/services/router-commands.magic.service.mjs +31 -0
- package/esm2022/src/services/subform.magic.service.mjs +194 -0
- package/esm2022/src/services/table.magic.service.mjs +81 -0
- package/esm2022/src/services/task.magics.service.mjs +637 -0
- package/esm2022/src/services/title.magic.service.mjs +19 -0
- package/esm2022/src/ui/GuiInteractiveExecutor.mjs +109 -0
- package/esm2022/src/ui/components/base-magic-alert.component.mjs +24 -0
- package/esm2022/src/ui/components/base-magic-confirm.component.mjs +24 -0
- package/esm2022/src/ui/components/magic-alert.component.mjs +36 -0
- package/esm2022/src/ui/components/magic-confirmation-box.component.mjs +42 -0
- package/esm2022/src/ui/directives/NonMagicControlDirective.mjs +58 -0
- package/esm2022/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.mjs +29 -0
- package/esm2022/src/ui/directives/magic/checkbox.magic.directive.mjs +29 -0
- package/esm2022/src/ui/directives/magic/combobox.magic.directive.mjs +37 -0
- package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.mjs +27 -0
- package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs +85 -0
- package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.mjs +32 -0
- package/esm2022/src/ui/directives/magic/input.noformcontrol.magic.directive.mjs +28 -0
- package/esm2022/src/ui/directives/magic/nocontrol.magic.directive.mjs +193 -0
- package/esm2022/src/ui/directives/magic/row.magic.directive.mjs +62 -0
- package/esm2022/src/ui/directives/magic-focus.directive.mjs +20 -0
- package/esm2022/src/ui/directives/magic.directive.mjs +229 -0
- package/esm2022/src/ui/directives/magicViewContainerRef.directive.mjs +20 -0
- package/esm2022/src/ui/directives/mgformat.magic.directive.mjs +579 -0
- package/esm2022/src/ui/directives/range-validator.magic.directive.mjs +60 -0
- package/{esm2020 → esm2022}/src/ui/magic-confirmationBox.mjs +42 -42
- package/{esm2020 → esm2022}/src/ui/magic-modal/base-magic-overlay-container.mjs +22 -22
- package/esm2022/src/ui/magic-modal/magic-modal-form.mjs +6 -0
- package/{esm2020 → esm2022}/src/ui/magic-modal/magic-modal-interface.mjs +1 -1
- package/esm2022/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +124 -0
- package/esm2022/src/ui/magic-modal/magic-overlay-container.mjs +162 -0
- package/esm2022/src/ui/magic-root.component.mjs +236 -0
- package/esm2022/src/ui/mgerror.magic.component.mjs +125 -0
- package/esm2022/src/ui/pipes/date.magic.pipe.mjs +106 -0
- package/esm2022/src/ui/pipes/time.magic.pipe.mjs +52 -0
- package/esm2022/src/ui/pipes/time24.magic.pipe.mjs +35 -0
- package/esm2022/src/ui/router-container.magic.component.mjs +115 -0
- package/{esm2020 → esm2022}/src/ui/subform.magic.component.mjs +50 -46
- package/esm2022/src/ui/task-base.magic.component.mjs +91 -0
- package/esm2022/src/ui/utils.mjs +54 -0
- package/{fesm2020 → fesm2022}/magic-xpa-angular.mjs +4827 -4444
- package/fesm2022/magic-xpa-angular.mjs.map +1 -0
- package/index.d.ts +58 -58
- package/package.json +10 -16
- package/src/controls.metadata.model.d.ts +62 -62
- package/src/interfaces/sub-form-definition.iterface.d.ts +12 -12
- package/src/magic.core.module.d.ts +41 -41
- package/src/services/ISubformMagicService.d.ts +4 -4
- package/src/services/OverlayWindowService.d.ts +30 -25
- package/src/services/StylesMapManager.d.ts +5 -5
- package/src/services/accessor.magic.service.d.ts +69 -69
- package/src/services/commands-collector.magic.service.d.ts +15 -15
- package/src/services/component-list.magic.service.d.ts +23 -23
- package/src/services/confirmation.components.magic.provider.d.ts +8 -8
- package/src/services/engine.magic.service.d.ts +27 -27
- package/src/services/exit.magic.service.d.ts +6 -6
- package/src/services/magic-color.service.d.ts +19 -19
- package/src/services/magic.lazy.loader.service.d.ts +6 -6
- package/src/services/magic.providers.d.ts +107 -107
- package/src/services/magic.services.d.ts +16 -16
- package/src/services/mg-date-adapter.d.ts +38 -40
- package/src/services/overlay.conainer.magic.provider.d.ts +7 -7
- package/src/services/router-commands.magic.service.d.ts +17 -17
- package/src/services/subform.magic.service.d.ts +43 -43
- package/src/services/table.magic.service.d.ts +30 -30
- package/src/services/task.magics.service.d.ts +100 -100
- package/src/services/title.magic.service.d.ts +9 -9
- package/src/ui/GuiInteractiveExecutor.d.ts +22 -21
- package/src/ui/components/base-magic-alert.component.d.ts +10 -10
- package/src/ui/components/base-magic-confirm.component.d.ts +10 -10
- package/src/ui/components/magic-alert.component.d.ts +6 -6
- package/src/ui/components/magic-confirmation-box.component.d.ts +6 -6
- package/src/ui/directives/NonMagicControlDirective.d.ts +26 -26
- package/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.d.ts +9 -9
- package/src/ui/directives/magic/checkbox.magic.directive.d.ts +9 -9
- package/src/ui/directives/magic/combobox.magic.directive.d.ts +10 -10
- package/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.d.ts +7 -7
- package/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.d.ts +23 -17
- package/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.d.ts +7 -7
- package/src/ui/directives/magic/input.noformcontrol.magic.directive.d.ts +9 -9
- package/src/ui/directives/magic/nocontrol.magic.directive.d.ts +18 -18
- package/src/ui/directives/magic/row.magic.directive.d.ts +17 -17
- package/src/ui/directives/magic-focus.directive.d.ts +9 -9
- package/src/ui/directives/magic.directive.d.ts +44 -44
- package/src/ui/directives/magicViewContainerRef.directive.d.ts +8 -8
- package/src/ui/directives/mgformat.magic.directive.d.ts +38 -31
- package/src/ui/directives/range-validator.magic.directive.d.ts +17 -17
- package/src/ui/magic-confirmationBox.d.ts +6 -6
- package/src/ui/magic-modal/base-magic-overlay-container.d.ts +5 -5
- package/src/ui/magic-modal/magic-modal-form.d.ts +5 -5
- package/src/ui/magic-modal/magic-modal-interface.d.ts +10 -10
- package/src/ui/magic-modal/magic-overlay-container-wrapper.d.ts +30 -31
- package/src/ui/magic-modal/magic-overlay-container.d.ts +24 -25
- package/src/ui/magic-root.component.d.ts +43 -40
- package/src/ui/mgerror.magic.component.d.ts +20 -20
- package/src/ui/pipes/date.magic.pipe.d.ts +17 -17
- package/src/ui/pipes/time.magic.pipe.d.ts +11 -11
- package/src/ui/pipes/time24.magic.pipe.d.ts +10 -10
- package/src/ui/router-container.magic.component.d.ts +29 -30
- package/src/ui/subform.magic.component.d.ts +16 -16
- package/src/ui/task-base.magic.component.d.ts +34 -34
- package/src/ui/utils.d.ts +9 -9
- package/esm2020/src/controls.metadata.model.mjs +0 -180
- package/esm2020/src/services/OverlayWindowService.mjs +0 -208
- package/esm2020/src/services/StylesMapManager.mjs +0 -28
- package/esm2020/src/services/accessor.magic.service.mjs +0 -356
- package/esm2020/src/services/commands-collector.magic.service.mjs +0 -46
- package/esm2020/src/services/component-list.magic.service.mjs +0 -46
- package/esm2020/src/services/engine.magic.service.mjs +0 -82
- package/esm2020/src/services/magic-color.service.mjs +0 -99
- package/esm2020/src/services/magic.services.mjs +0 -31
- package/esm2020/src/services/mg-date-adapter.mjs +0 -109
- package/esm2020/src/services/router-commands.magic.service.mjs +0 -28
- package/esm2020/src/services/subform.magic.service.mjs +0 -184
- package/esm2020/src/services/table.magic.service.mjs +0 -77
- package/esm2020/src/services/task.magics.service.mjs +0 -624
- package/esm2020/src/services/title.magic.service.mjs +0 -18
- package/esm2020/src/ui/GuiInteractiveExecutor.mjs +0 -98
- package/esm2020/src/ui/components/base-magic-alert.component.mjs +0 -23
- package/esm2020/src/ui/components/base-magic-confirm.component.mjs +0 -23
- package/esm2020/src/ui/components/magic-alert.component.mjs +0 -35
- package/esm2020/src/ui/components/magic-confirmation-box.component.mjs +0 -41
- package/esm2020/src/ui/directives/NonMagicControlDirective.mjs +0 -49
- package/esm2020/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.mjs +0 -28
- package/esm2020/src/ui/directives/magic/checkbox.magic.directive.mjs +0 -28
- package/esm2020/src/ui/directives/magic/combobox.magic.directive.mjs +0 -36
- package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.mjs +0 -27
- package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs +0 -52
- package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.mjs +0 -32
- package/esm2020/src/ui/directives/magic/input.noformcontrol.magic.directive.mjs +0 -27
- package/esm2020/src/ui/directives/magic/nocontrol.magic.directive.mjs +0 -193
- package/esm2020/src/ui/directives/magic/row.magic.directive.mjs +0 -58
- package/esm2020/src/ui/directives/magic-focus.directive.mjs +0 -19
- package/esm2020/src/ui/directives/magic.directive.mjs +0 -215
- package/esm2020/src/ui/directives/magicViewContainerRef.directive.mjs +0 -19
- package/esm2020/src/ui/directives/mgformat.magic.directive.mjs +0 -408
- package/esm2020/src/ui/directives/range-validator.magic.directive.mjs +0 -58
- package/esm2020/src/ui/magic-modal/magic-modal-form.mjs +0 -8
- package/esm2020/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +0 -121
- package/esm2020/src/ui/magic-modal/magic-overlay-container.mjs +0 -159
- package/esm2020/src/ui/magic-root.component.mjs +0 -203
- package/esm2020/src/ui/mgerror.magic.component.mjs +0 -119
- package/esm2020/src/ui/pipes/date.magic.pipe.mjs +0 -105
- package/esm2020/src/ui/pipes/time.magic.pipe.mjs +0 -51
- package/esm2020/src/ui/pipes/time24.magic.pipe.mjs +0 -34
- package/esm2020/src/ui/router-container.magic.component.mjs +0 -108
- package/esm2020/src/ui/task-base.magic.component.mjs +0 -86
- package/esm2020/src/ui/utils.mjs +0 -54
- package/fesm2015/magic-xpa-angular.mjs +0 -4832
- package/fesm2015/magic-xpa-angular.mjs.map +0 -1
- package/fesm2020/magic-xpa-angular.mjs.map +0 -1
@@ -0,0 +1,115 @@
|
|
1
|
+
import { Component, 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
|
+
activatedRoute;
|
21
|
+
router;
|
22
|
+
magic;
|
23
|
+
containerTaskService;
|
24
|
+
viewContainerRef;
|
25
|
+
componentList;
|
26
|
+
pendingCommandsCollector;
|
27
|
+
routerCommandsMagicService;
|
28
|
+
componentRef = null;
|
29
|
+
parentMgSubformService = null;
|
30
|
+
static lastRoute = "/";
|
31
|
+
static get LastRoute() {
|
32
|
+
return RouterContainerMagicComponent.lastRoute;
|
33
|
+
}
|
34
|
+
constructor(activatedRoute, router, magic, containerTaskService, viewContainerRef, componentList, pendingCommandsCollector, routerCommandsMagicService) {
|
35
|
+
this.activatedRoute = activatedRoute;
|
36
|
+
this.router = router;
|
37
|
+
this.magic = magic;
|
38
|
+
this.containerTaskService = containerTaskService;
|
39
|
+
this.viewContainerRef = viewContainerRef;
|
40
|
+
this.componentList = componentList;
|
41
|
+
this.pendingCommandsCollector = pendingCommandsCollector;
|
42
|
+
this.routerCommandsMagicService = routerCommandsMagicService;
|
43
|
+
}
|
44
|
+
ngOnInit() {
|
45
|
+
let subformMagicService = SubformMagicService.currentCallerMgSubformServiceRef;
|
46
|
+
let currentActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);
|
47
|
+
RouterContainerMagicComponent.lastRoute = this.router.url;
|
48
|
+
if (subformMagicService == null || subformMagicService.currentRouteDefinition === null) {
|
49
|
+
this.insertRouteEvent(currentActiveRoute);
|
50
|
+
SubformMagicService.routerContainers.push(this);
|
51
|
+
}
|
52
|
+
else {
|
53
|
+
this.initializeComponent();
|
54
|
+
}
|
55
|
+
}
|
56
|
+
insertRouteEvent(currentActiveRoute) {
|
57
|
+
let guiEvent = getGuiEventObj('RouterNavigate', null, 0);
|
58
|
+
guiEvent.RouterPath = currentActiveRoute.snapshot.routeConfig.path;
|
59
|
+
if (currentActiveRoute.snapshot.outlet !== 'primary')
|
60
|
+
guiEvent.RouterOutletName = currentActiveRoute.snapshot.outlet;
|
61
|
+
let calcRouterPath = currentActiveRoute.routeConfig.path;
|
62
|
+
if (calcRouterPath.length > 0) {
|
63
|
+
let routerPath = calcRouterPath;
|
64
|
+
let tokens = StrUtil.tokenize(routerPath, "/:");
|
65
|
+
guiEvent.RouterPath = tokens[0];
|
66
|
+
guiEvent.RouterParams = new List();
|
67
|
+
for (let i = 1; i < tokens.length; i++) {
|
68
|
+
guiEvent.RouterParams.push(currentActiveRoute.snapshot.params[tokens[i]]);
|
69
|
+
}
|
70
|
+
}
|
71
|
+
this.containerTaskService.insertEvent(guiEvent);
|
72
|
+
}
|
73
|
+
initializeComponent() {
|
74
|
+
let subformMagicService = SubformMagicService.currentCallerMgSubformServiceRef;
|
75
|
+
if (subformMagicService.currentRouteDefinition !== null) {
|
76
|
+
let comp = this.componentList.getComponent(subformMagicService.currentRouteDefinition.formName);
|
77
|
+
this.componentRef = this.viewContainerRef.createComponent(comp);
|
78
|
+
Object.assign(this.componentRef.instance, subformMagicService.currentRouteDefinition.parameters);
|
79
|
+
let myActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);
|
80
|
+
let routeParams = StrUtil.tokenize(myActiveRoute.snapshot.routeConfig.path, "/:");
|
81
|
+
subformMagicService.routesDict[myActiveRoute.snapshot.outlet] = routeParams[0];
|
82
|
+
this.parentMgSubformService = subformMagicService;
|
83
|
+
subformMagicService.currentRouteDefinition = null;
|
84
|
+
SubformMagicService.currentCallerMgSubformServiceRef = null;
|
85
|
+
let ignoreParamChange = true;
|
86
|
+
myActiveRoute.paramMap.subscribe(params => {
|
87
|
+
if (!ignoreParamChange)
|
88
|
+
this.insertRouteEvent(myActiveRoute);
|
89
|
+
ignoreParamChange = false;
|
90
|
+
});
|
91
|
+
this.parentMgSubformService.refreshView();
|
92
|
+
this.routerCommandsMagicService.ExecuteNextCommand();
|
93
|
+
}
|
94
|
+
}
|
95
|
+
ngOnDestroy() {
|
96
|
+
if (this.componentRef != null) {
|
97
|
+
this.componentRef.instance.task.close();
|
98
|
+
let currentActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);
|
99
|
+
this.parentMgSubformService.routesDict[currentActiveRoute.outlet] = "";
|
100
|
+
RouterContainerMagicComponent.lastRoute = this.router.url;
|
101
|
+
}
|
102
|
+
}
|
103
|
+
static ɵ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.ViewContainerRef), i0.ɵɵdirectiveInject(i4.ComponentListMagicService), i0.ɵɵdirectiveInject(i5.CommandsCollectorMagicService), i0.ɵɵdirectiveInject(i6.RouterCommandsMagicService)); };
|
104
|
+
static ɵcmp = i0.ɵɵdefineComponent({ type: RouterContainerMagicComponent, selectors: [["magic-route-outlet"]], decls: 0, vars: 0, template: function RouterContainerMagicComponent_Template(rf, ctx) { }, encapsulation: 2 });
|
105
|
+
}
|
106
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RouterContainerMagicComponent, [{
|
107
|
+
type: Component,
|
108
|
+
args: [{
|
109
|
+
selector: 'magic-route-outlet',
|
110
|
+
template: `
|
111
|
+
`
|
112
|
+
}]
|
113
|
+
}], () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.EngineMagicService }, { type: i3.TaskMagicService }, { type: i0.ViewContainerRef }, { type: i4.ComponentListMagicService }, { type: i5.CommandsCollectorMagicService }, { type: i6.RouterCommandsMagicService }], null); })();
|
114
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RouterContainerMagicComponent, { className: "RouterContainerMagicComponent", filePath: "src\\ui\\router-container.magic.component.ts", lineNumber: 22 }); })();
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWNvbnRhaW5lci5tYWdpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91aS9yb3V0ZXItY29udGFpbmVyLm1hZ2ljLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBYSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDN0YsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7O0FBVW5FLE1BQU0sT0FBTyw2QkFBNkI7SUFtQnBCO0lBQ0U7SUFDQTtJQUNGO0lBQ0E7SUFDQTtJQUNFO0lBQ0E7SUF6QmQsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNwQixzQkFBc0IsR0FBd0IsSUFBSSxDQUFDO0lBQ25ELE1BQU0sQ0FBQyxTQUFTLEdBQVcsR0FBRyxDQUFDO0lBRXZDLE1BQU0sS0FBSyxTQUFTO1FBQ2xCLE9BQU8sNkJBQTZCLENBQUMs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O1FBR1QsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksRUFDN0IsQ0FBQztZQUMwQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFbEUsSUFBSSxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbkYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFdkUsNkJBQTZCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO3VGQTdIVSw2QkFBNkI7K0NBQTdCLDZCQUE2Qjs7aUZBQTdCLDZCQUE2QjtjQUx6QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsUUFBUSxFQUFFO0dBQ1Q7YUFDRjs7a0ZBQ1ksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUYXNrQmFzZU1hZ2ljQ29tcG9uZW50IH0gZnJvbSAnLi90YXNrLWJhc2UubWFnaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW5naW5lTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZW5naW5lLm1hZ2ljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBnZXRHdWlFdmVudE9iaiwgSUd1aUV2ZW50IH0gZnJvbSAnQG1hZ2ljLXhwYS9lbmdpbmUnO1xyXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBTdHJVdGlsIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IENvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21wb25lbnQtbGlzdC5tYWdpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViZm9ybU1hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N1YmZvcm0ubWFnaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1hbmRzQ29sbGVjdG9yTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbWFuZHMtY29sbGVjdG9yLm1hZ2ljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JvdXRlci1jb21tYW5kcy5tYWdpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGFza01hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Rhc2subWFnaWNzLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIE1vY2sgY29tcG9uZW50LCBpbXBsZW1lbnRzIHJvdXRpbmcgYnkgY29ubmVjdGluZyB0aGUgcmVxdWVzdGVkIFVSTCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBNYWdpYyB0YXNrXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21hZ2ljLXJvdXRlLW91dGxldCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb3V0ZXJDb250YWluZXJNYWdpY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWYgPSBudWxsO1xyXG4gIHByaXZhdGUgcGFyZW50TWdTdWJmb3JtU2VydmljZTogU3ViZm9ybU1hZ2ljU2VydmljZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgbGFzdFJvdXRlOiBzdHJpbmcgPSBcIi9cIjtcclxuXHJcbiAgc3RhdGljIGdldCBMYXN0Um91dGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBSb3V0ZXJDb250YWluZXJNYWdpY0NvbXBvbmVudC5sYXN0Um91dGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAqIEBwYXJhbSBhY3RpdmF0ZWRSb3V0ZVxyXG4gICAqIEBwYXJhbSBtYWdpY1xyXG4gICAqIEBwYXJhbSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcclxuICAgKiBAcGFyYW0gdmlld0NvbnRhaW5lclJlZlxyXG4gICAqIEBwYXJhbSBjb21wb25lbnRMaXN0XHJcbiAgICogQHBhcmFtIHBlbmRpbmdDb21tYW5kc0NvbGxlY3RvclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgbWFnaWM6IEVuZ2luZU1hZ2ljU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNvbnRhaW5lclRhc2tTZXJ2aWNlOiBUYXNrTWFnaWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgICAgICAgICBwcml2YXRlIGNvbXBvbmVudExpc3Q6IENvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHBlbmRpbmdDb21tYW5kc0NvbGxlY3RvcjogQ29tbWFuZHNDb2xsZWN0b3JNYWdpY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlOiBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSkge31cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6YXRpb25cclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGxldCBzdWJmb3JtTWFnaWNTZXJ2aWNlOiBTdWJmb3JtTWFnaWNTZXJ2aWNlID0gU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjtcclxuXHJcbiAgICBsZXQgY3VycmVudEFjdGl2ZVJvdXRlID0gU3ViZm9ybU1hZ2ljU2VydmljZS5nZXRSZWxhdGl2ZVJvdXRlKHRoaXMuYWN0aXZhdGVkUm91dGUpO1xyXG5cclxuICAgIFJvdXRlckNvbnRhaW5lck1hZ2ljQ29tcG9uZW50Lmxhc3RSb3V0ZSA9IHRoaXMucm91dGVyLnVybDtcclxuXHJcbiAgICBpZiAoc3ViZm9ybU1hZ2ljU2VydmljZSA9PSBudWxsIHx8IHN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudFJvdXRlRGVmaW5pdGlvbiA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmluc2VydFJvdXRlRXZlbnQoY3VycmVudEFjdGl2ZVJvdXRlKTtcclxuXHJcbiAgICAgIFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyQ29udGFpbmVycy5wdXNoKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnNlcnRSb3V0ZUV2ZW50KGN1cnJlbnRBY3RpdmVSb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuICAgIGxldCBndWlFdmVudDogSUd1aUV2ZW50ID0gZ2V0R3VpRXZlbnRPYmooJ1JvdXRlck5hdmlnYXRlJywgbnVsbCwgMCk7XHJcbiAgICBndWlFdmVudC5Sb3V0ZXJQYXRoID0gY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGg7XHJcblxyXG4gICAgaWYgKGN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5vdXRsZXQgIT09ICdwcmltYXJ5JylcclxuICAgICAgZ3VpRXZlbnQuUm91dGVyT3V0bGV0TmFtZSA9IGN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5vdXRsZXQ7XHJcblxyXG5cclxuICAgIC8vIGlmIHRoaXMgaXMgTG9hZE9uRGVtYW5kTW9kdWxlTWFnaWNDb21wb25lbnQgaXQncyBtZWFuIHRoYXQgdGhpcyBpcyBsb2FkIG9uIGRlbWFuZCBtb2R1bGUgYW5kIHdlXHJcbiAgICAvLyBuZWVkIHRvIHRha2UgdGhlIHBhdGggZm9ybSByb3V0ZUNvbmZpZy5wYXRoXHJcblxyXG4gICAgbGV0IGNhbGNSb3V0ZXJQYXRoOiBzdHJpbmcgPSBjdXJyZW50QWN0aXZlUm91dGUucm91dGVDb25maWcucGF0aDtcclxuICAgIC8vIGFkZCB0aGUgUm91dGVyUGF0aCBvbmx5IGlmIGV4aXN0XHJcbiAgICBpZiAoY2FsY1JvdXRlclBhdGgubGVuZ3RoID4gMClcclxuICAgIHtcclxuICAgICAgbGV0IHJvdXRlclBhdGg6IHN0cmluZyA9IGNhbGNSb3V0ZXJQYXRoO1xyXG4gICAgICBsZXQgdG9rZW5zOiBzdHJpbmdbXSA9IFN0clV0aWwudG9rZW5pemUocm91dGVyUGF0aCwgXCIvOlwiKTtcclxuICAgICAgZ3VpRXZlbnQuUm91dGVyUGF0aCA9IHRva2Vuc1swXTtcclxuXHJcbiAgICAgIGd1aUV2ZW50LlJvdXRlclBhcmFtcyA9IG5ldyBMaXN0KCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZ3VpRXZlbnQuUm91dGVyUGFyYW1zLnB1c2goY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90LnBhcmFtc1t0b2tlbnNbaV1dKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29udGFpbmVyVGFza1NlcnZpY2UuaW5zZXJ0RXZlbnQoZ3VpRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZUNvbXBvbmVudCgpIHtcclxuICAgIC8vIHJlLWluaXQgc3ViZm9ybU1hZ2ljU2VydmljZSAgc2luY2UgaXQgbWF5IGNoYW5nZSBhZnRlciBleGVjdXRpbmcgXCJSb3V0ZXJOYXZpZ2F0ZVwiIGV2ZW50LlxyXG4gICAgbGV0IHN1YmZvcm1NYWdpY1NlcnZpY2U6IFN1YmZvcm1NYWdpY1NlcnZpY2UgPSBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmO1xyXG4gICAgaWYgKHN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudFJvdXRlRGVmaW5pdGlvbiAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgY29tcCA9IHRoaXMuY29tcG9uZW50TGlzdC5nZXRDb21wb25lbnQoc3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Um91dGVEZWZpbml0aW9uLmZvcm1OYW1lKTtcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXApO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLCBzdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRSb3V0ZURlZmluaXRpb24ucGFyYW1ldGVycyk7XHJcblxyXG5cclxuICAgICAgbGV0IG15QWN0aXZlUm91dGUgPSBTdWJmb3JtTWFnaWNTZXJ2aWNlLmdldFJlbGF0aXZlUm91dGUodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XHJcblxyXG4gICAgICBsZXQgcm91dGVQYXJhbXM6IHN0cmluZ1tdID0gU3RyVXRpbC50b2tlbml6ZShteUFjdGl2ZVJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGgsIFwiLzpcIik7XHJcbiAgICAgIHN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVzRGljdFtteUFjdGl2ZVJvdXRlLnNuYXBzaG90Lm91dGxldF0gPSByb3V0ZVBhcmFtc1swXTtcclxuXHJcbiAgICAgIHRoaXMucGFyZW50TWdTdWJmb3JtU2VydmljZSA9IHN1YmZvcm1NYWdpY1NlcnZpY2U7XHJcbiAgICAgIHN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudFJvdXRlRGVmaW5pdGlvbiA9IG51bGw7XHJcbiAgICAgIFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWYgPSBudWxsO1xyXG5cclxuICAgICAgLy9XaGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQsIHRoZW4gYWxzbyB3ZSBnZXQgdGhlIG5vdGlmaWNhdGlvbiBmb3IgcGFyYW1NYXAgc3Vic2NyaXB0aW9uLlxyXG4gICAgICAvL0J1dCBpbiB0aGlzIGNhc2UsICB3ZSBkbyBub3QgaGF2ZSB0byByYWlzZSB0aGUgZXZlbnQsIGJlY2F1c2UgbWFnaWMgZW5naW5lIGl0c2VsZiBoYXMgIGluaXRpYXRlZCB0aGUgcm91dGUgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzLlxyXG4gICAgICAvL1NvLCBjb250cm9sIGl0IHZpYSBpZ25vcmVQYXJhbUNoYW5nZSBmbGFnLlxyXG4gICAgICBsZXQgaWdub3JlUGFyYW1DaGFuZ2UgPSB0cnVlO1xyXG4gICAgICBteUFjdGl2ZVJvdXRlLnBhcmFtTWFwLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICAgIGlmICghaWdub3JlUGFyYW1DaGFuZ2UpXHJcbiAgICAgICAgICB0aGlzLmluc2VydFJvdXRlRXZlbnQobXlBY3RpdmVSb3V0ZSk7XHJcbiAgICAgICAgaWdub3JlUGFyYW1DaGFuZ2UgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnBhcmVudE1nU3ViZm9ybVNlcnZpY2UucmVmcmVzaFZpZXcoKTtcclxuXHJcbiAgICAgIHRoaXMucm91dGVyQ29tbWFuZHNNYWdpY1NlcnZpY2UuRXhlY3V0ZU5leHRDb21tYW5kKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhbnVwXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBUT0RPIFJvdXRpbmc6IENhbGwgY2xvc2UoKSBvbmx5IGlmIHRoZSB0YXNrIGlzIG5vdCBhbHJlYWR5IGNsb3NlZC5cclxuICAgIC8vIFRhc2sgY2FuIGJlIGNsb3NlZCB3aGVuIGEgcm91dGVyIGlzIG92ZXJsYXllZCBieSBhbm90aGVyIHRhc2sgdmlhIGNhbGwgb3BlcmF0aW9uLlxyXG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmICE9IG51bGwpXHJcbiAgICB7XHJcbiAgICAgICg8VGFza0Jhc2VNYWdpY0NvbXBvbmVudD50aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSkudGFzay5jbG9zZSgpO1xyXG5cclxuICAgICAgbGV0IGN1cnJlbnRBY3RpdmVSb3V0ZSA9IFN1YmZvcm1NYWdpY1NlcnZpY2UuZ2V0UmVsYXRpdmVSb3V0ZSh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcclxuICAgICAgdGhpcy5wYXJlbnRNZ1N1YmZvcm1TZXJ2aWNlLnJvdXRlc0RpY3RbY3VycmVudEFjdGl2ZVJvdXRlLm91dGxldF0gPSBcIlwiO1xyXG5cclxuICAgICAgUm91dGVyQ29udGFpbmVyTWFnaWNDb21wb25lbnQubGFzdFJvdXRlID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|
@@ -1,52 +1,56 @@
|
|
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
|
-
|
16
|
-
;
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
}
|
26
|
-
get
|
27
|
-
return this.mgSub.
|
28
|
-
}
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
} if (rf &
|
34
|
-
|
35
|
-
|
36
|
-
(
|
37
|
-
|
38
|
-
|
39
|
-
|
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
|
+
vcRef;
|
16
|
+
mgSub;
|
17
|
+
id;
|
18
|
+
set magic(val) { this.id = val; }
|
19
|
+
;
|
20
|
+
component = null;
|
21
|
+
constructor(vcRef, mgSub) {
|
22
|
+
this.vcRef = vcRef;
|
23
|
+
this.mgSub = mgSub;
|
24
|
+
this.component = (this.vcRef._hostLView).find(v => !isNullOrUndefined(v));
|
25
|
+
}
|
26
|
+
get Component() {
|
27
|
+
return this.mgSub.mgGetComp(this.id);
|
28
|
+
}
|
29
|
+
get Parameters() {
|
30
|
+
return this.mgSub.mgGetParameters(this.id);
|
31
|
+
}
|
32
|
+
static ɵfac = function SubformMagicComponent_Factory(t) { return new (t || SubformMagicComponent)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i1.SubformMagicService)); };
|
33
|
+
static ɵ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) {
|
34
|
+
i0.ɵɵtemplate(0, SubformMagicComponent_ndc_dynamic_0_Template, 1, 2, "ndc-dynamic", 0);
|
35
|
+
} if (rf & 2) {
|
36
|
+
i0.ɵɵproperty("ngIf", ctx.Component);
|
37
|
+
} }, dependencies: [i2.NgIf, i3.DynamicComponent, i3.DynamicIoDirective], encapsulation: 2 });
|
38
|
+
}
|
39
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubformMagicComponent, [{
|
40
|
+
type: Component,
|
41
|
+
args: [{
|
42
|
+
selector: 'magic-subform',
|
40
43
|
template: `
|
41
44
|
<ndc-dynamic
|
42
45
|
*ngIf="Component"
|
43
46
|
[ndcDynamicComponent]="Component"
|
44
47
|
[ndcDynamicInputs]="Parameters">
|
45
48
|
</ndc-dynamic>
|
46
|
-
`
|
47
|
-
}]
|
48
|
-
}],
|
49
|
-
type: Input,
|
50
|
-
args: ['magic']
|
51
|
-
}] }); })();
|
52
|
-
|
49
|
+
`
|
50
|
+
}]
|
51
|
+
}], () => [{ type: i0.ViewContainerRef }, { type: i1.SubformMagicService }], { magic: [{
|
52
|
+
type: Input,
|
53
|
+
args: ['magic']
|
54
|
+
}] }); })();
|
55
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SubformMagicComponent, { className: "SubformMagicComponent", filePath: "src\\ui\\subform.magic.component.ts", lineNumber: 20 }); })();
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZm9ybS5tYWdpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91aS9zdWJmb3JtLm1hZ2ljLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0lBUXJELGlDQUljOzs7SUFEWixBQURBLHNEQUFpQyx1Q0FDRjs7QUFLckMsTUFBTSxPQUFPLHFCQUFxQjtJQW1CWjtJQUFtQztJQWZ2RCxFQUFFLENBQVU7SUFLWixJQUFvQixLQUFLLENBQUMsR0FBRyxJQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFLakQsU0FBUyxHQUEyQixJQUFJLENBQUM7SUFLekMsWUFBb0IsS0FBdUIsRUFBWSxLQUEwQjtRQUE3RCxVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUFZLFVBQUssR0FBTCxLQUFLLENBQXFCO1FBRS9FLElBQUksQ0FBQyxTQUFTLEdBQUssQ0FBTyxJQUFJLENBQUMsS0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUUsQ0FBNEIsQ0FBQyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUtELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFLRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDOytFQXBDVSxxQkFBcUI7K0NBQXJCLHFCQUFxQjtZQVI5QixzRkFHa0M7O1lBRi9CLG9DQUFlOzs7aUZBT1QscUJBQXFCO2NBWGpDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFLOzs7Ozs7Q0FNZDthQUFDO21GQVlvQixLQUFLO2tCQUF4QixLQUFLO21CQUFDLE9BQU87O2tGQVRILHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtUYXNrQmFzZU1hZ2ljQ29tcG9uZW50fSBmcm9tIFwiLi90YXNrLWJhc2UubWFnaWMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFN1YmZvcm1NYWdpY1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvc3ViZm9ybS5tYWdpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBNYWdpYyBzdWJmb3JtXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21hZ2ljLXN1YmZvcm0nLFxyXG4gIHRlbXBsYXRlOiAgICBgXHJcbiAgICA8bmRjLWR5bmFtaWNcclxuICAgICAgKm5nSWY9XCJDb21wb25lbnRcIiAgXHJcbiAgICAgIFtuZGNEeW5hbWljQ29tcG9uZW50XT1cIkNvbXBvbmVudFwiIFxyXG4gICAgICBbbmRjRHluYW1pY0lucHV0c109XCJQYXJhbWV0ZXJzXCI+XHJcbiAgICA8L25kYy1keW5hbWljPlxyXG5gfSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU3ViZm9ybU1hZ2ljQ29tcG9uZW50IHtcclxuICAvKipcclxuICAgICogQGlnbm9yZVxyXG4gICAgKi9cclxuICBpZCA6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgnbWFnaWMnKSBzZXQgbWFnaWModmFsKSB7dGhpcy5pZCA9IHZhbDsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbXBvbmVudDogVGFza0Jhc2VNYWdpY0NvbXBvbmVudCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcm90ZWN0ZWQgbWdTdWI6IFN1YmZvcm1NYWdpY1NlcnZpY2UpIHtcclxuICAgIC8vIEZvciBhbmd1bGFyIDEzIC0gZmluZCB0aGUgY29tcG9uZW50IGZyb20gX2hvc3RMVmlld1xyXG4gICAgdGhpcy5jb21wb25lbnQgPSAgICgoPGFueT50aGlzLnZjUmVmKS5faG9zdExWaWV3KS5maW5kKHYgPT4gIWlzTnVsbE9yVW5kZWZpbmVkKCh2IGFzIFRhc2tCYXNlTWFnaWNDb21wb25lbnQpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgZ2V0IENvbXBvbmVudCgpOiBDb21wb25lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMubWdTdWIubWdHZXRDb21wKHRoaXMuaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGdldCBQYXJhbWV0ZXJzKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5tZ1N1Yi5tZ0dldFBhcmFtZXRlcnModGhpcy5pZCk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
|
@@ -0,0 +1,91 @@
|
|
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
|
+
ref;
|
12
|
+
magicServices;
|
13
|
+
taskIdParam;
|
14
|
+
taskDescription;
|
15
|
+
magicProperties = MagicProperties;
|
16
|
+
constructor(ref, magicServices) {
|
17
|
+
this.ref = ref;
|
18
|
+
this.magicServices = magicServices;
|
19
|
+
}
|
20
|
+
get task() {
|
21
|
+
return this.magicServices.task;
|
22
|
+
}
|
23
|
+
get mgSub() {
|
24
|
+
return this.magicServices.subformService;
|
25
|
+
}
|
26
|
+
get tableService() {
|
27
|
+
return this.magicServices.tableService;
|
28
|
+
}
|
29
|
+
get mg() {
|
30
|
+
return this.magicServices.mgAccessorService;
|
31
|
+
}
|
32
|
+
get taskId() {
|
33
|
+
return this.task.taskId;
|
34
|
+
}
|
35
|
+
get screenFormGroup() {
|
36
|
+
return this.task.ScreenModeControls;
|
37
|
+
}
|
38
|
+
ngOnInit() {
|
39
|
+
this.task.detectChanges.pipe().subscribe(c => {
|
40
|
+
this.ref.detectChanges();
|
41
|
+
});
|
42
|
+
this.task.initTask(this.taskIdParam, this.taskDescription);
|
43
|
+
this.createFormControlsAccessor(this.screenFormGroup);
|
44
|
+
this.setInputDateFormat();
|
45
|
+
this.task.customPropertiesSubject.pipe().subscribe(property => {
|
46
|
+
this.PropertyChanged(property.propertyName, property.rowId, property.value);
|
47
|
+
});
|
48
|
+
this.task.recordsCountChangeSubject.pipe().subscribe(value => {
|
49
|
+
this.RecordsCountChanged(value);
|
50
|
+
});
|
51
|
+
this.task.mgLoadSubject.pipe().subscribe(value => {
|
52
|
+
this.mgOnLoad();
|
53
|
+
});
|
54
|
+
}
|
55
|
+
createFormControlsAccessor(formGroup) { }
|
56
|
+
setInputDateFormat() { }
|
57
|
+
PropertyChanged(propertyName, rowId, value) {
|
58
|
+
}
|
59
|
+
RecordsCountChanged(recordsCount) {
|
60
|
+
}
|
61
|
+
mgOnLoad() {
|
62
|
+
}
|
63
|
+
ngAfterViewInit() {
|
64
|
+
this.mgSub.init();
|
65
|
+
}
|
66
|
+
ngAfterContentChecked() {
|
67
|
+
if (!isNullOrUndefined(this.tableService.getPageSize()) && this.task.oldPageSize != this.tableService.getPageSize()) {
|
68
|
+
this.task.resize(this.tableService.getPageSize(), 0);
|
69
|
+
this.task.oldPageSize = this.tableService.getPageSize();
|
70
|
+
}
|
71
|
+
}
|
72
|
+
ngOnDestroy() {
|
73
|
+
this.task.dispose();
|
74
|
+
}
|
75
|
+
static ɵfac = function TaskBaseMagicComponent_Factory(t) { return new (t || TaskBaseMagicComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.MagicServices)); };
|
76
|
+
static ɵ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 });
|
77
|
+
}
|
78
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskBaseMagicComponent, [{
|
79
|
+
type: Component,
|
80
|
+
args: [{
|
81
|
+
selector: 'task-magic',
|
82
|
+
providers: [TaskMagicService, SubformMagicService, TableMagicService],
|
83
|
+
template: ''
|
84
|
+
}]
|
85
|
+
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.MagicServices }], { taskIdParam: [{
|
86
|
+
type: Input
|
87
|
+
}], taskDescription: [{
|
88
|
+
type: Input
|
89
|
+
}] }); })();
|
90
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskBaseMagicComponent, { className: "TaskBaseMagicComponent", filePath: "src\\ui\\task-base.magic.component.ts", lineNumber: 20 }); })();
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1iYXNlLm1hZ2ljLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3VpL3Rhc2stYmFzZS5tYWdpYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVwRyxPQUFPLEVBQUUsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFXM0QsTUFBTSxPQUFPLHNCQUFzQjtJQXFCWDtJQUNIO0lBakJWLFdBQVcsQ0FBUztJQUlwQixlQUFlLENBQVM7SUFLakMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQU9sQyxZQUFzQixHQUFzQixFQUN6QixhQUE0QjtRQUR6QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUMxQyxDQUFDO0lBTU4sSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBTUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztJQUMzQyxDQUFDO0lBTUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBTUQsSUFB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Yjs4RUFNVSxXQUFXO2tCQUFuQixLQUFLO1lBSUcsZUFBZTtrQkFBdkIsS0FBSzs7a0ZBVEssc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYWdpY1Byb3BlcnRpZXN9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcblxyXG5pbXBvcnQge1Rhc2tNYWdpY1NlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy90YXNrLm1hZ2ljcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YmZvcm1NYWdpY1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvc3ViZm9ybS5tYWdpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRhYmxlTWFnaWNTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RhYmxlLm1hZ2ljLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWFnaWNTZXJ2aWNlcyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9tYWdpYy5zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBBY2Nlc3Nvck1hZ2ljU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9hY2Nlc3Nvci5tYWdpYy5zZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogQmFzZSBjb21wb25lbnQgcmVwcmVzZW50aW5nIGEgTWFnaWMgdGFza1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0YXNrLW1hZ2ljJyxcclxuICBwcm92aWRlcnM6IFtUYXNrTWFnaWNTZXJ2aWNlLCBTdWJmb3JtTWFnaWNTZXJ2aWNlLCBUYWJsZU1hZ2ljU2VydmljZV0sXHJcbiAgdGVtcGxhdGU6ICcnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYXNrQmFzZU1hZ2ljQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAvKipcclxuICAgKiBJZCBvZiB0YXNrLCB1c2VkIGZvciBpbml0aWFsaXppbmcgdGhlIHRhc2sgc2VydmljZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRhc2tJZFBhcmFtOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRhc2tEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgbWFnaWNQcm9wZXJ0aWVzID0gTWFnaWNQcm9wZXJ0aWVzO1xyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSByZWYgY2hhbmdlcy1kZXRlY3RvciBvYmplY3RcclxuICAgKiBAcGFyYW0gbWFnaWNTZXJ2aWNlcyBBY2Nlc3MgcG9pbnQgZm9yIGFsbCBNYWdpYyBzZXJ2aWNlc1xyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBtYWdpY1NlcnZpY2VzOiBNYWdpY1NlcnZpY2VzXHJcbiAgKSB7ICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIE1hZ2ljIHRhc2sgc2VydmljZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgZ2V0IHRhc2soKTogVGFza01hZ2ljU2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY1NlcnZpY2VzLnRhc2s7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBNYWdpYyBzdWJmb3JtIHNlcnZpY2VcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldCBtZ1N1YigpOiBTdWJmb3JtTWFnaWNTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLm1hZ2ljU2VydmljZXMuc3ViZm9ybVNlcnZpY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBNYWdpYyB0YWJsZSBzZXJ2aWNlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXQgdGFibGVTZXJ2aWNlKCk6IFRhYmxlTWFnaWNTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLm1hZ2ljU2VydmljZXMudGFibGVTZXJ2aWNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgTWFnaWMgYWNjZXNzb3Igc2VydmljZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgZ2V0IG1nKCk6IEFjY2Vzc29yTWFnaWNTZXJ2aWNlICB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY1NlcnZpY2VzLm1nQWNjZXNzb3JTZXJ2aWNlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRhc2sgSWRcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldCB0YXNrSWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLnRhc2tJZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIEZvcm1Hcm91cCBmb3Igc2NyZWVuLW1vZGUgZm9ybXNcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldCBzY3JlZW5Gb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suU2NyZWVuTW9kZUNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy50YXNrLmRldGVjdENoYW5nZXMucGlwZSgpLnN1YnNjcmliZShjID0+IHtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRhc2suaW5pdFRhc2sodGhpcy50YXNrSWRQYXJhbSwgdGhpcy50YXNrRGVzY3JpcHRpb24pO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2xzQWNjZXNzb3IodGhpcy5zY3JlZW5Gb3JtR3JvdXApO1xyXG4gICAgdGhpcy5zZXRJbnB1dERhdGVGb3JtYXQoKTtcclxuXHJcbiAgICAvLyBzdWJjcmliZSB0byBjdXN0b20gcHJvcGVydHkgY2hhbmdlc1xyXG4gICAgdGhpcy50YXNrLmN1c3RvbVByb3BlcnRpZXNTdWJqZWN0LnBpcGUoKS5zdWJzY3JpYmUocHJvcGVydHkgPT4ge1xyXG4gICAgICB0aGlzLlByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eS5wcm9wZXJ0eU5hbWUsIHByb3BlcnR5LnJvd0lkLCBwcm9wZXJ0eS52YWx1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBzdWJjcmliZSB0byByZWNvcmRzIGNvdW50IGNoYW5nZXNcclxuICAgIHRoaXMudGFzay5yZWNvcmRzQ291bnRDaGFuZ2VTdWJqZWN0LnBpcGUoKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICB0aGlzLlJlY29yZHNDb3VudENoYW5nZWQodmFsdWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gc3ViY3JpYmUgdG8gbWdMb2FkIGNoYW5nZVxyXG4gICAgdGhpcy50YXNrLm1nTG9hZFN1YmplY3QucGlwZSgpLnN1YnNjcmliZSh2YWx1ZSA9PntcclxuICAgICAgdGhpcy5tZ09uTG9hZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY3JlYXRlRm9ybUNvbnRyb2xzQWNjZXNzb3IoZm9ybUdyb3VwOiBGb3JtR3JvdXApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBzZXRJbnB1dERhdGVGb3JtYXQgKCkge31cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIGFueSBjdXN0b20gcHJvcGVydHkgaXMgdXBkYXRlZCBpbiBNYWdpY1xyXG4gICAqIHByb3BlcnR5TmFtZSA6IG5hbWUgb2YgcHJvcGVydHkgd2hpY2ggaXMgdXBkYXRlZC4gVGhlIGZvcm1hdCBpcyA8Y29udHJvbG5hbWU+fjxwcm9wZXJ0eW5hbWU+XHJcbiAgICogcm93SWQgOiByb3cgbnVtYmVyIG9mIHRoZSB1cGRhdGVkIHByb3BlcnR5IGZvciBjb250cm9scyBpbiB0YWJsZSBjb250cm9sICgwIGZvciBjb250cm9scyBvdXRzaWRlIHRhYmxlKVxyXG4gICAqIHZhbHVlIDogdXBkYXRlZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHlcclxuICAgKiBAcmV0dXJucyA6IHZvaWRcclxuICAgKiBUbyB1c2UgdGhlIG1ldGhvZCBvdmVycmlkZSBpdCBpbiB5b3VyIGNvbXBvbmVudCBhbmQgY2hlY2sgdGhlIHByb3BlcnR5IG5hbWUgYW5kIHdyaXRlIHlvdSBjb2RlIC4uZm9yIGVnXHJcbiAgICogaWYocHJvcGVydHlOYW1lID09ICdjb250cm9sbmFtZX5wcm9wZXJ0eU5hbWUnKSB7Ly8geW91ciBjb2RlfVxyXG4gICAqICBlbHNlIHsgLy8geW91ciBjb2RlfVxyXG4gICAqL1xyXG4gIFByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eU5hbWU6c3RyaW5nLCByb3dJZCA6IG51bWJlciwgdmFsdWUgOiBhbnkpIDogdm9pZCB7XHJcbiAgICAvLyBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsgYmVjYXVzZSB0aGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGluIHRoZSBkZXJpdmVkIGNsYXNzXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWNvcmRzIGNvdW50IGNoYW5nZSBzdWJqZWN0IGlzIHN1YnNjcmliZWQgdG8gY2hhbmdlIGluIGl0cyB2YWx1ZS4gVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWRcclxuICAgKiBhcyB0aGUgdmFsdWUgb2YgcmVjb3JkcyBjb3VudCBpcyByZWNlaXZlZCBhdCBmcm9tIHNlcnZlci5cclxuICAgKiBAcmV0dXJucyA6IHZvaWRcclxuICAgKiBUbyB1c2UgdGhlIG1ldGhvZCBvdmVycmlkZSBpdCBpbiB5b3VyIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBSZWNvcmRzQ291bnRDaGFuZ2VkKHJlY29yZHNDb3VudCA6IG51bWJlcikgOiB2b2lkIHtcclxuICAgIC8vIGludGVudGlvbmFsbHkgbGVmdCBibGFuayBiZWNhdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgaW4gdGhlIGRlcml2ZWQgY2xhc3NcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG9uY2UgZW5naW5lIGluZm9ybXMgVUkgYWJvdXQgbG9hZGluZyBvZiBmaXJzdCBzZXQgb2YgZGF0YSBpcyBzZW50IHRvIGNsaWVudFxyXG4gICAqIGFuZCBjbGllbnQgaGFzIHJlYWNoZWQgaXRzIGZpcnN0IGlkbGUgdGltZS5cclxuICAgKiBAcmV0dXJucyA6IHZvaWRcclxuICAgKiBUbyB1c2UgdGhlIG1ldGhvZCBvdmVycmlkZSBpdCBpbiB5b3VyIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBtZ09uTG9hZCgpIDogdm9pZCB7XHJcbiAgICAvLyBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsgYmVjYXVzZSB0aGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGluIHRoZSBkZXJpdmVkIGNsYXNzXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubWdTdWIuaW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkgOiB2b2lkIHtcclxuICAgIGlmKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLnRhYmxlU2VydmljZS5nZXRQYWdlU2l6ZSgpKSAmJiB0aGlzLnRhc2sub2xkUGFnZVNpemUgIT0gdGhpcy50YWJsZVNlcnZpY2UuZ2V0UGFnZVNpemUoKSkge1xyXG4gICAgICB0aGlzLnRhc2sucmVzaXplKHRoaXMudGFibGVTZXJ2aWNlLmdldFBhZ2VTaXplKCksIDApO1xyXG4gICAgICB0aGlzLnRhc2sub2xkUGFnZVNpemUgPSB0aGlzLnRhYmxlU2VydmljZS5nZXRQYWdlU2l6ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnRhc2suZGlzcG9zZSgpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91aS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sS0FBSztJQUtoQixNQUFNLENBQUMsV0FBVyxDQUFDLE9BQWdCLEVBQUUsQ0FBUyxFQUFFLENBQVM7UUFFdkQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUV2RCxJQUFJLEVBQUUsRUFBRSxFQUFVLENBQUM7UUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFFMUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDYixFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNoQixDQUFDO2FBQU0sSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFDckIsRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ1osRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO2FBQU0sSUFBSSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDdEIsRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDL0IsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBS0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQ3JCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDckIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUV2QixPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1YsSUFBSSxFQUFFLENBQUMsT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUV6QixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO2dCQUNuRSxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO2dCQUVqRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2xELElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsRCxDQUFDO2lCQUFNLENBQUM7Z0JBRU4sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBRUQsRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFFdkIsQ0FBQztRQUNELE9BQU87WUFDTCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUM7SUFDSixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy8gY2xhc3MgdG8gaG9sZCBndWktcmVsYXRlZCBoZWxwZXIgbWV0aG9kc1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5leHBvcnQgY2xhc3MgdXRpbHMge1xyXG5cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vIENhbGN1bGF0ZSB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgY29udHJvbCBhbmQgdGhlIHN1cHBsaWVkIHgseSBjb29yZGluYXRlc1xyXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgc3RhdGljIGdldERpc3RhbmNlKGNvbnRyb2w6IEVsZW1lbnQsIHg6IG51bWJlciwgeTogbnVtYmVyKTogbnVtYmVyIHtcclxuXHJcbiAgICBsZXQgbGVmdCA9IGNvbnRyb2wuY2xpZW50TGVmdCwgdG9wID0gY29udHJvbC5jbGllbnRUb3A7XHJcblxyXG4gICAgbGV0IGR4LCBkeTogbnVtYmVyO1xyXG4gICAgY29uc3QgcmlnaHQgPSBsZWZ0ICsgY29udHJvbC5jbGllbnRXaWR0aDtcclxuICAgIGNvbnN0IGJvdHRvbSA9IHRvcCArIGNvbnRyb2wuY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgIGlmICh4IDwgbGVmdCkge1xyXG4gICAgICBkeCA9IGxlZnQgLSB4O1xyXG4gICAgfSBlbHNlIGlmICh4ID4gcmlnaHQpIHtcclxuICAgICAgZHggPSB4IC0gcmlnaHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkeCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHkgPCB0b3ApIHtcclxuICAgICAgZHkgPSB0b3AgLSB5O1xyXG4gICAgfSBlbHNlIGlmICh5ID4gYm90dG9tKSB7XHJcbiAgICAgIGR5ID0geSAtIGJvdHRvbTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGR5ID0gMDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJldCA9IChkeCAqIGR4ICsgZHkgKiBkeSlcclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vXHJcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBzdGF0aWMgZ2V0RGltZW50aW9ucyhlbCkge1xyXG4gICAgbGV0IHhQb3MgPSAwO1xyXG4gICAgbGV0IHlQb3MgPSAwO1xyXG4gICAgbGV0IHdpZHRoID0gZWwud2lkdGg7XHJcbiAgICBsZXQgaGVpZ2h0ID0gZWwuaGVpZ2h0O1xyXG5cclxuICAgIHdoaWxlIChlbCkge1xyXG4gICAgICBpZiAoZWwudGFnTmFtZSA9PSBcIkJPRFlcIikge1xyXG4gICAgICAgIC8vIGRlYWwgd2l0aCBicm93c2VyIHF1aXJrcyB3aXRoIGJvZHkvd2luZG93L2RvY3VtZW50IGFuZCBwYWdlIHNjcm9sbFxyXG4gICAgICAgIGxldCB4U2Nyb2xsID0gZWwuc2Nyb2xsTGVmdCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcclxuICAgICAgICBsZXQgeVNjcm9sbCA9IGVsLnNjcm9sbFRvcCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xyXG5cclxuICAgICAgICB4UG9zICs9IChlbC5vZmZzZXRMZWZ0IC0geFNjcm9sbCArIGVsLmNsaWVudExlZnQpO1xyXG4gICAgICAgIHlQb3MgKz0gKGVsLm9mZnNldFRvcCAtIHlTY3JvbGwgKyBlbC5jbGllbnRUb3ApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGZvciBhbGwgb3RoZXIgbm9uLUJPRFkgZWxlbWVudHNcclxuICAgICAgICB4UG9zICs9IChlbC5vZmZzZXRMZWZ0IC0gZWwuc2Nyb2xsTGVmdCArIGVsLmNsaWVudExlZnQpO1xyXG4gICAgICAgIHlQb3MgKz0gKGVsLm9mZnNldFRvcCAtIGVsLnNjcm9sbFRvcCArIGVsLmNsaWVudFRvcCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGVsID0gZWwub2Zmc2V0UGFyZW50O1xyXG5cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHg6IHhQb3MsXHJcbiAgICAgIHk6IHlQb3MsXHJcbiAgICAgIHdpZHRoOiB3aWR0aCxcclxuICAgICAgaGVpZ2h0OiBoZWlnaHRcclxuICAgIH07XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|