@magic-xpa/angular 4.1100.0-dev4110.104 → 4.1100.0-dev4110.106

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.
Files changed (123) hide show
  1. package/esm2020/index.mjs +2 -59
  2. package/fesm2015/magic-xpa-angular.mjs +0 -4863
  3. package/fesm2015/magic-xpa-angular.mjs.map +1 -1
  4. package/fesm2020/magic-xpa-angular.mjs +0 -4681
  5. package/fesm2020/magic-xpa-angular.mjs.map +1 -1
  6. package/index.d.ts +1 -58
  7. package/package.json +3 -3
  8. package/esm2020/src/controls.metadata.model.mjs +0 -180
  9. package/esm2020/src/interfaces/sub-form-definition.iterface.mjs +0 -2
  10. package/esm2020/src/magic.core.module.mjs +0 -160
  11. package/esm2020/src/services/ISubformMagicService.mjs +0 -2
  12. package/esm2020/src/services/OverlayWindowService.mjs +0 -236
  13. package/esm2020/src/services/StylesMapManager.mjs +0 -28
  14. package/esm2020/src/services/accessor.magic.service.mjs +0 -356
  15. package/esm2020/src/services/commands-collector.magic.service.mjs +0 -46
  16. package/esm2020/src/services/component-list.magic.service.mjs +0 -46
  17. package/esm2020/src/services/confirmation.components.magic.provider.mjs +0 -21
  18. package/esm2020/src/services/engine.magic.service.mjs +0 -82
  19. package/esm2020/src/services/exit.magic.service.mjs +0 -13
  20. package/esm2020/src/services/magic-color.service.mjs +0 -99
  21. package/esm2020/src/services/magic.lazy.loader.service.mjs +0 -16
  22. package/esm2020/src/services/magic.providers.mjs +0 -25
  23. package/esm2020/src/services/magic.services.mjs +0 -31
  24. package/esm2020/src/services/mg-date-adapter.mjs +0 -109
  25. package/esm2020/src/services/overlay.conainer.magic.provider.mjs +0 -14
  26. package/esm2020/src/services/router-commands.magic.service.mjs +0 -28
  27. package/esm2020/src/services/subform.magic.service.mjs +0 -184
  28. package/esm2020/src/services/table.magic.service.mjs +0 -77
  29. package/esm2020/src/services/task.magics.service.mjs +0 -624
  30. package/esm2020/src/services/title.magic.service.mjs +0 -18
  31. package/esm2020/src/ui/GuiInteractiveExecutor.mjs +0 -105
  32. package/esm2020/src/ui/components/base-magic-alert.component.mjs +0 -23
  33. package/esm2020/src/ui/components/base-magic-confirm.component.mjs +0 -23
  34. package/esm2020/src/ui/components/magic-alert.component.mjs +0 -35
  35. package/esm2020/src/ui/components/magic-confirmation-box.component.mjs +0 -41
  36. package/esm2020/src/ui/directives/NonMagicControlDirective.mjs +0 -49
  37. package/esm2020/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.mjs +0 -28
  38. package/esm2020/src/ui/directives/magic/checkbox.magic.directive.mjs +0 -28
  39. package/esm2020/src/ui/directives/magic/combobox.magic.directive.mjs +0 -36
  40. package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.mjs +0 -27
  41. package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs +0 -52
  42. package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.mjs +0 -32
  43. package/esm2020/src/ui/directives/magic/input.noformcontrol.magic.directive.mjs +0 -27
  44. package/esm2020/src/ui/directives/magic/nocontrol.magic.directive.mjs +0 -193
  45. package/esm2020/src/ui/directives/magic/row.magic.directive.mjs +0 -58
  46. package/esm2020/src/ui/directives/magic-focus.directive.mjs +0 -19
  47. package/esm2020/src/ui/directives/magic.directive.mjs +0 -215
  48. package/esm2020/src/ui/directives/magicViewContainerRef.directive.mjs +0 -19
  49. package/esm2020/src/ui/directives/mgformat.magic.directive.mjs +0 -408
  50. package/esm2020/src/ui/directives/range-validator.magic.directive.mjs +0 -58
  51. package/esm2020/src/ui/magic-confirmationBox.mjs +0 -42
  52. package/esm2020/src/ui/magic-modal/base-magic-overlay-container.mjs +0 -22
  53. package/esm2020/src/ui/magic-modal/magic-modal-form.mjs +0 -8
  54. package/esm2020/src/ui/magic-modal/magic-modal-interface.mjs +0 -2
  55. package/esm2020/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +0 -121
  56. package/esm2020/src/ui/magic-modal/magic-overlay-container.mjs +0 -159
  57. package/esm2020/src/ui/magic-root.component.mjs +0 -203
  58. package/esm2020/src/ui/mgerror.magic.component.mjs +0 -119
  59. package/esm2020/src/ui/pipes/date.magic.pipe.mjs +0 -105
  60. package/esm2020/src/ui/pipes/time.magic.pipe.mjs +0 -51
  61. package/esm2020/src/ui/pipes/time24.magic.pipe.mjs +0 -34
  62. package/esm2020/src/ui/router-container.magic.component.mjs +0 -108
  63. package/esm2020/src/ui/subform.magic.component.mjs +0 -52
  64. package/esm2020/src/ui/task-base.magic.component.mjs +0 -86
  65. package/esm2020/src/ui/utils.mjs +0 -54
  66. package/src/controls.metadata.model.d.ts +0 -62
  67. package/src/interfaces/sub-form-definition.iterface.d.ts +0 -12
  68. package/src/magic.core.module.d.ts +0 -41
  69. package/src/services/ISubformMagicService.d.ts +0 -4
  70. package/src/services/OverlayWindowService.d.ts +0 -31
  71. package/src/services/StylesMapManager.d.ts +0 -5
  72. package/src/services/accessor.magic.service.d.ts +0 -69
  73. package/src/services/commands-collector.magic.service.d.ts +0 -15
  74. package/src/services/component-list.magic.service.d.ts +0 -23
  75. package/src/services/confirmation.components.magic.provider.d.ts +0 -8
  76. package/src/services/engine.magic.service.d.ts +0 -27
  77. package/src/services/exit.magic.service.d.ts +0 -6
  78. package/src/services/magic-color.service.d.ts +0 -19
  79. package/src/services/magic.lazy.loader.service.d.ts +0 -6
  80. package/src/services/magic.providers.d.ts +0 -107
  81. package/src/services/magic.services.d.ts +0 -16
  82. package/src/services/mg-date-adapter.d.ts +0 -40
  83. package/src/services/overlay.conainer.magic.provider.d.ts +0 -7
  84. package/src/services/router-commands.magic.service.d.ts +0 -17
  85. package/src/services/subform.magic.service.d.ts +0 -43
  86. package/src/services/table.magic.service.d.ts +0 -30
  87. package/src/services/task.magics.service.d.ts +0 -100
  88. package/src/services/title.magic.service.d.ts +0 -9
  89. package/src/ui/GuiInteractiveExecutor.d.ts +0 -22
  90. package/src/ui/components/base-magic-alert.component.d.ts +0 -10
  91. package/src/ui/components/base-magic-confirm.component.d.ts +0 -10
  92. package/src/ui/components/magic-alert.component.d.ts +0 -6
  93. package/src/ui/components/magic-confirmation-box.component.d.ts +0 -6
  94. package/src/ui/directives/NonMagicControlDirective.d.ts +0 -26
  95. package/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.d.ts +0 -9
  96. package/src/ui/directives/magic/checkbox.magic.directive.d.ts +0 -9
  97. package/src/ui/directives/magic/combobox.magic.directive.d.ts +0 -10
  98. package/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.d.ts +0 -7
  99. package/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.d.ts +0 -17
  100. package/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.d.ts +0 -7
  101. package/src/ui/directives/magic/input.noformcontrol.magic.directive.d.ts +0 -9
  102. package/src/ui/directives/magic/nocontrol.magic.directive.d.ts +0 -18
  103. package/src/ui/directives/magic/row.magic.directive.d.ts +0 -17
  104. package/src/ui/directives/magic-focus.directive.d.ts +0 -9
  105. package/src/ui/directives/magic.directive.d.ts +0 -44
  106. package/src/ui/directives/magicViewContainerRef.directive.d.ts +0 -8
  107. package/src/ui/directives/mgformat.magic.directive.d.ts +0 -31
  108. package/src/ui/directives/range-validator.magic.directive.d.ts +0 -17
  109. package/src/ui/magic-confirmationBox.d.ts +0 -6
  110. package/src/ui/magic-modal/base-magic-overlay-container.d.ts +0 -5
  111. package/src/ui/magic-modal/magic-modal-form.d.ts +0 -5
  112. package/src/ui/magic-modal/magic-modal-interface.d.ts +0 -10
  113. package/src/ui/magic-modal/magic-overlay-container-wrapper.d.ts +0 -31
  114. package/src/ui/magic-modal/magic-overlay-container.d.ts +0 -25
  115. package/src/ui/magic-root.component.d.ts +0 -40
  116. package/src/ui/mgerror.magic.component.d.ts +0 -20
  117. package/src/ui/pipes/date.magic.pipe.d.ts +0 -17
  118. package/src/ui/pipes/time.magic.pipe.d.ts +0 -11
  119. package/src/ui/pipes/time24.magic.pipe.d.ts +0 -10
  120. package/src/ui/router-container.magic.component.d.ts +0 -30
  121. package/src/ui/subform.magic.component.d.ts +0 -16
  122. package/src/ui/task-base.magic.component.d.ts +0 -34
  123. package/src/ui/utils.d.ts +0 -9
@@ -1,236 +0,0 @@
1
- import { ComponentFactoryResolver, Injectable, Injector, Compiler } from "@angular/core";
2
- import { ComponentListMagicService } from "./component-list.magic.service";
3
- import { EngineMagicService } from "./engine.magic.service";
4
- import { getGuiEventObj } from "@magic-xpa/engine";
5
- import { OverlayContainerMagicProvider } from "./overlay.conainer.magic.provider";
6
- import { MagicOverlayContainerWrapper } from "../ui/magic-modal/magic-overlay-container-wrapper";
7
- import { ConfirmationComponentsMagicProvider } from "./confirmation.components.magic.provider";
8
- import { OverlayType, Styles } from "@magic-xpa/gui";
9
- import { confirmationBox } from "../ui/magic-confirmationBox";
10
- import { isNullOrUndefined } from "@magic-xpa/mscorelib";
11
- import { MagicLazyLoaderService } from "./magic.lazy.loader.service";
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "./component-list.magic.service";
14
- import * as i2 from "./engine.magic.service";
15
- import * as i3 from "./magic.lazy.loader.service";
16
- import * as i4 from "./overlay.conainer.magic.provider";
17
- import * as i5 from "./confirmation.components.magic.provider";
18
- export class OverlayWindowService {
19
- constructor(componentFactoryResolver, componentList, engineMagicService, magicLazyModuleLoader, injector, compiler, overlayContainerMagicProvider, confirmationComponentsMagicProvider) {
20
- this.componentFactoryResolver = componentFactoryResolver;
21
- this.componentList = componentList;
22
- this.engineMagicService = engineMagicService;
23
- this.magicLazyModuleLoader = magicLazyModuleLoader;
24
- this.injector = injector;
25
- this.compiler = compiler;
26
- this.overlayContainerMagicProvider = overlayContainerMagicProvider;
27
- this.confirmationComponentsMagicProvider = confirmationComponentsMagicProvider;
28
- this.overlayWindowFocusManager = null;
29
- this.changeDetectorRef = null;
30
- }
31
- init(overlayWindowsContainerViewRef, rootMagicElement, changeDetectorRef) {
32
- this.overlayWindowsContainerViewRef = overlayWindowsContainerViewRef;
33
- this.overlayWindowFocusManager = new OverlayWindowFocusManager(rootMagicElement);
34
- this.changeDetectorRef = changeDetectorRef;
35
- }
36
- loadAndOpenModule(formName, taskId, taskDescription) {
37
- let moduleRef = this.componentList.getModuleRef(formName);
38
- if (moduleRef == null) {
39
- let lazyLoadModule = this.componentList.getLazyLoadModuleData(formName);
40
- if (lazyLoadModule != null) {
41
- let moduleName = lazyLoadModule.moduleName.replace("Magic", "");
42
- moduleName = moduleName.replace("Module", "");
43
- this.magicLazyModuleLoader.Load(moduleName).then(m => {
44
- const compiled = this.compiler.compileModuleAndAllComponentsSync(m[lazyLoadModule.moduleName]);
45
- moduleRef = compiled.ngModuleFactory.create(this.injector);
46
- this.open(formName, taskId, taskDescription);
47
- this.finishConfirmation(Styles.MSGBOX_BUTTON_OK, true);
48
- });
49
- }
50
- }
51
- else {
52
- this.open(formName, taskId, taskDescription);
53
- this.finishConfirmation(Styles.MSGBOX_BUTTON_OK, true);
54
- }
55
- }
56
- open(formName, taskId, taskDescription) {
57
- let comp = this.componentList.lazyLoadModulesMap != null && this.componentList.lazyLoadModulesMap.hasOwnProperty(formName) ? null : this.componentList.getComponent(formName);
58
- let parameters = { taskIdParam: taskId, taskDescription: taskDescription };
59
- let componentRef = this.createModalComponent({ MagicFormName: formName, ModalComp: comp, ModalCompParameters: parameters }, this.overlayContainerMagicProvider.getComponent(), OverlayType.Overlay);
60
- componentRef.instance.onClose.subscribe(() => {
61
- let guiEvent = getGuiEventObj("close", null, 0);
62
- guiEvent.TaskID = taskId;
63
- this.engineMagicService.insertEvent(guiEvent);
64
- });
65
- this.changeDetectorRef.detectChanges();
66
- }
67
- close(commandStr) {
68
- this.overlayWindowsContainerViewRef.remove();
69
- this.overlayWindowFocusManager.popDialog();
70
- let guiEvent1 = getGuiEventObj("dispose", null, 0);
71
- guiEvent1.TaskID = commandStr;
72
- this.engineMagicService.insertEvent(guiEvent1);
73
- }
74
- openConfirmationBox(title, msg, style) {
75
- if (this.confirmationComponentsMagicProvider.showDefaultConfirmations()) {
76
- let res = confirmationBox.showConfirmationBox(title, msg, style);
77
- this.finishConfirmation(style, res);
78
- }
79
- else {
80
- let comp = confirmationBox.isConfirmBox(style) ? this.confirmationComponentsMagicProvider.getConfirmtionComponent() : this.confirmationComponentsMagicProvider.getAlertComponent();
81
- let overlayType = confirmationBox.isConfirmBox(style) ? OverlayType.ConfirmationBox : OverlayType.Alert;
82
- let componentRef = this.createModalComponent({ title: title, message: msg }, comp, overlayType);
83
- componentRef.instance.onClose.subscribe((res) => {
84
- this.overlayWindowsContainerViewRef.remove();
85
- this.overlayWindowFocusManager.popDialog();
86
- this.finishConfirmation(style, res);
87
- });
88
- }
89
- }
90
- finishConfirmation(style, result) {
91
- let guiEvent = getGuiEventObj("confirmationClosed", null, 0);
92
- guiEvent.keyCode = confirmationBox.convertToExcpectedResultBox(style, result);
93
- this.engineMagicService.insertEvent(guiEvent);
94
- }
95
- createModalComponent(parameters, component, overlayType) {
96
- let componentRef;
97
- let magicModalContainerParameters = {
98
- Component: component,
99
- Parameters: parameters,
100
- OverlayTypeParam: overlayType
101
- };
102
- const factory = this.componentFactoryResolver.resolveComponentFactory(MagicOverlayContainerWrapper);
103
- let viewCRef = this.overlayWindowsContainerViewRef;
104
- componentRef = viewCRef.createComponent(factory);
105
- Object.assign(componentRef.instance, magicModalContainerParameters);
106
- this.overlayWindowFocusManager.pushDialog(componentRef.instance.GetRootElement());
107
- componentRef.instance.DetectChanges();
108
- return componentRef;
109
- }
110
- }
111
- OverlayWindowService.ɵfac = function OverlayWindowService_Factory(t) { return new (t || OverlayWindowService)(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i1.ComponentListMagicService), i0.ɵɵinject(i2.EngineMagicService), i0.ɵɵinject(i3.MagicLazyLoaderService), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i0.Compiler), i0.ɵɵinject(i4.OverlayContainerMagicProvider), i0.ɵɵinject(i5.ConfirmationComponentsMagicProvider)); };
112
- OverlayWindowService.ɵprov = i0.ɵɵdefineInjectable({ token: OverlayWindowService, factory: OverlayWindowService.ɵfac, providedIn: 'root' });
113
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OverlayWindowService, [{
114
- type: Injectable,
115
- args: [{
116
- providedIn: 'root'
117
- }]
118
- }], function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.ComponentListMagicService }, { type: i2.EngineMagicService }, { type: i3.MagicLazyLoaderService }, { type: i0.Injector }, { type: i0.Compiler }, { type: i4.OverlayContainerMagicProvider }, { type: i5.ConfirmationComponentsMagicProvider }]; }, null); })();
119
- class OverlayWindowFocusManager {
120
- constructor(rootMagicElement) {
121
- this.rootMagicElement = null;
122
- this.openDialogList = new Array(0);
123
- this.ignoreUtilFocusChanges = false;
124
- this.lastFocus = null;
125
- this.focusListener = null;
126
- this.rootMagicElement = rootMagicElement;
127
- }
128
- pushDialog(rootElement) {
129
- if (this.openDialogList.length === 0) {
130
- this.focusListener = this.trapFocus.bind(this);
131
- document.addEventListener('focus', this.focusListener, true);
132
- }
133
- this.openDialogList.push(new DialogInfo(rootElement, (document.activeElement instanceof HTMLElement ? document.activeElement : null)));
134
- }
135
- popDialog() {
136
- const dialogInfo = this.openDialogList.pop();
137
- this.attemptFocus(dialogInfo.FocusElementOnClose);
138
- if (this.openDialogList.length === 0) {
139
- document.removeEventListener('focus', this.focusListener, true);
140
- this.focusListener = null;
141
- }
142
- }
143
- trapFocus(event) {
144
- if (this.ignoreUtilFocusChanges) {
145
- return;
146
- }
147
- if (this.openDialogList.length > 0) {
148
- var currentDialog = this.openDialogList[this.openDialogList.length - 1].RootElement;
149
- if (currentDialog.contains(event.target)) {
150
- this.lastFocus = event.target;
151
- }
152
- else {
153
- if (this.rootMagicElement.contains(event.target)) {
154
- this.focusFirstDescendant(currentDialog);
155
- if (this.lastFocus == document.activeElement) {
156
- this.focusLastDescendant(currentDialog);
157
- }
158
- }
159
- this.lastFocus = document.activeElement;
160
- }
161
- }
162
- }
163
- focusFirstDescendant(element) {
164
- for (var i = 0; i < element.childNodes.length; i++) {
165
- var child = element.childNodes[i];
166
- if (this.attemptFocus(child) ||
167
- this.focusFirstDescendant(child)) {
168
- return true;
169
- }
170
- }
171
- return false;
172
- }
173
- ;
174
- focusLastDescendant(element) {
175
- for (var i = element.childNodes.length - 1; i >= 0; i--) {
176
- var child = element.childNodes[i];
177
- if (this.attemptFocus(child) ||
178
- this.focusLastDescendant(child)) {
179
- return true;
180
- }
181
- }
182
- return false;
183
- }
184
- ;
185
- attemptFocus(element) {
186
- if (!this.isFocusable(element)) {
187
- return false;
188
- }
189
- this.ignoreUtilFocusChanges = true;
190
- try {
191
- element.focus();
192
- }
193
- catch (e) {
194
- }
195
- this.ignoreUtilFocusChanges = false;
196
- return (document.activeElement === element);
197
- }
198
- ;
199
- isFocusable(element) {
200
- if (isNullOrUndefined(element))
201
- return false;
202
- if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)) {
203
- return true;
204
- }
205
- else if (element.tabIndex < 0)
206
- return false;
207
- if (element.disabled) {
208
- return false;
209
- }
210
- switch (element.nodeName) {
211
- case 'A':
212
- return !!element.href && element.rel != 'ignore';
213
- case 'INPUT':
214
- return element.type != 'hidden' && element.type != 'file';
215
- case 'BUTTON':
216
- case 'SELECT':
217
- case 'TEXTAREA':
218
- return true;
219
- default:
220
- return false;
221
- }
222
- }
223
- }
224
- class DialogInfo {
225
- constructor(rootElement, focusElementOnClose) {
226
- this.rootElement = rootElement;
227
- this.focusElementOnClose = focusElementOnClose;
228
- }
229
- get RootElement() {
230
- return this.rootElement;
231
- }
232
- get FocusElementOnClose() {
233
- return this.focusElementOnClose;
234
- }
235
- }
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3ZlcmxheVdpbmRvd1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9zZXJ2aWNlcy9PdmVybGF5V2luZG93U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsd0JBQXdCLEVBQWdCLFVBQVUsRUFBRSxRQUFRLEVBQXFCLFFBQVEsRUFHNUcsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHlCQUF5QixFQUFhLE1BQU0sZ0NBQWdDLENBQUM7QUFDckYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFZLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBV25FLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsWUFBb0Isd0JBQWtELEVBQ2hELGFBQXVDLEVBQ3ZDLGtCQUFzQyxFQUN4QyxxQkFBNkMsRUFDN0MsUUFBa0IsRUFDbEIsUUFBa0IsRUFDbEIsNkJBQTRELEVBQzVELG1DQUF3RTtRQVB4RSw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2hELGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN2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LFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQztZQUM1RCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxVQUFVO2dCQUNiLE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVU7SUFLZCxZQUFZLFdBQXdCLEVBQUUsbUJBQWdDO1FBQ3BFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBJbmplY3RvciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBpbGVyLFxyXG4gIE5nTW9kdWxlUmVmLFxyXG4gIFZpZXdDb250YWluZXJSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UsIE1vZHVsZURhdGF9IGZyb20gXCIuL2NvbXBvbmVudC1saXN0Lm1hZ2ljLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtFbmdpbmVNYWdpY1NlcnZpY2V9IGZyb20gXCIuL2VuZ2luZS5tYWdpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SUd1aUV2ZW50LCBnZXRHdWlFdmVudE9ian0gZnJvbSBcIkBtYWdpYy14cGEvZW5naW5lXCI7XHJcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXJNYWdpY1Byb3ZpZGVyIH0gZnJvbSBcIi4vb3ZlcmxheS5jb25haW5lci5tYWdpYy5wcm92aWRlclwiO1xyXG5pbXBvcnQgeyBNYWdpY092ZXJsYXlDb250YWluZXJXcmFwcGVyIH0gZnJvbSBcIi4uL3VpL21hZ2ljLW1vZGFsL21hZ2ljLW92ZXJsYXktY29udGFpbmVyLXdyYXBwZXJcIjtcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uQ29tcG9uZW50c01hZ2ljUHJvdmlkZXIgfSBmcm9tIFwiLi9jb25maXJtYXRpb24uY29tcG9uZW50cy5tYWdpYy5wcm92aWRlclwiO1xyXG5pbXBvcnQgeyBPdmVybGF5VHlwZSwgU3R5bGVzIH0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7IGNvbmZpcm1hdGlvbkJveCB9IGZyb20gXCIuLi91aS9tYWdpYy1jb25maXJtYXRpb25Cb3hcIjtcclxuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtNYWdpY0xhenlMb2FkZXJTZXJ2aWNlfSBmcm9tIFwiLi9tYWdpYy5sYXp5LmxvYWRlci5zZXJ2aWNlXCI7XHJcblxyXG5cclxuXHJcblxyXG4vKipcclxuICogU2VydmljZSBtYW5hZ2luZyBvdmVybGF5IHdpbmRvd3NcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOidyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT3ZlcmxheVdpbmRvd1NlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBjb21wb25lbnRMaXN0OkNvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGVuZ2luZU1hZ2ljU2VydmljZTogRW5naW5lTWFnaWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbWFnaWNMYXp5TW9kdWxlTG9hZGVyOiBNYWdpY0xhenlMb2FkZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgb3ZlcmxheUNvbnRhaW5lck1hZ2ljUHJvdmlkZXI6IE92ZXJsYXlDb250YWluZXJNYWdpY1Byb3ZpZGVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uQ29tcG9uZW50c01hZ2ljUHJvdmlkZXI6IENvbmZpcm1hdGlvbkNvbXBvbmVudHNNYWdpY1Byb3ZpZGVyKSB7XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgdmlldyByZWZlcmVuY2Ugb2YgY29udGFpbmVyIG9mIG92ZXJsYXkgd2luZG93XHJcbiAgcHJpdmF0ZSBvdmVybGF5V2luZG93c0NvbnRhaW5lclZpZXdSZWY6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gIHByaXZhdGUgb3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlcjogT3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlciA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmID0gbnVsbDtcclxuXHJcbiAgaW5pdChvdmVybGF5V2luZG93c0NvbnRhaW5lclZpZXdSZWY6IFZpZXdDb250YWluZXJSZWYsIHJvb3RNYWdpY0VsZW1lbnQ6IEVsZW1lbnQsIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy5vdmVybGF5V2luZG93c0NvbnRhaW5lclZpZXdSZWYgPSBvdmVybGF5V2luZG93c0NvbnRhaW5lclZpZXdSZWY7XHJcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3dGb2N1c01hbmFnZXIgPSBuZXcgT3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlcihyb290TWFnaWNFbGVtZW50KTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgPSBjaGFuZ2VEZXRlY3RvclJlZjtcclxuICB9XHJcblxyXG4gIGxvYWRBbmRPcGVuTW9kdWxlIChmb3JtTmFtZTogc3RyaW5nLCB0YXNrSWQ6IHN0cmluZywgdGFza0Rlc2NyaXB0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4gPSB0aGlzLmNvbXBvbmVudExpc3QuZ2V0TW9kdWxlUmVmKGZvcm1OYW1lKTtcclxuXHJcbiAgICBpZiAobW9kdWxlUmVmID09IG51bGwpIHtcclxuICAgICAgbGV0IGxhenlMb2FkTW9kdWxlOiBNb2R1bGVEYXRhID0gdGhpcy5jb21wb25lbnRMaXN0LmdldExhenlMb2FkTW9kdWxlRGF0YShmb3JtTmFtZSk7XHJcblxyXG4gICAgICBpZiAobGF6eUxvYWRNb2R1bGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgbGV0IG1vZHVsZU5hbWUgPSBsYXp5TG9hZE1vZHVsZS5tb2R1bGVOYW1lLnJlcGxhY2UoXCJNYWdpY1wiLCBcIlwiKTtcclxuICAgICAgICAgIG1vZHVsZU5hbWUgPSBtb2R1bGVOYW1lLnJlcGxhY2UoXCJNb2R1bGVcIiwgXCJcIik7XHJcbiAgICAgICAgICB0aGlzLm1hZ2ljTGF6eU1vZHVsZUxvYWRlci5Mb2FkKG1vZHVsZU5hbWUpLnRoZW4obSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBpbGVkID0gdGhpcy5jb21waWxlci5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c1N5bmMoPGFueT5tW2xhenlMb2FkTW9kdWxlLm1vZHVsZU5hbWVdKTtcclxuICAgICAgICAgICAgbW9kdWxlUmVmID0gY29tcGlsZWQubmdNb2R1bGVGYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcclxuICAgICAgICAgICAgdGhpcy5vcGVuKGZvcm1OYW1lLCB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMuZmluaXNoQ29uZmlybWF0aW9uKFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LLCB0cnVlKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuKGZvcm1OYW1lLCB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbik7XHJcbiAgICAgIHRoaXMuZmluaXNoQ29uZmlybWF0aW9uKFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW4oZm9ybU5hbWU6IHN0cmluZywgdGFza0lkOiBzdHJpbmcsIHRhc2tEZXNjcmlwdGlvbjogc3RyaW5nKSB7XHJcblxyXG4gICAgLy8gZm9yIG92ZXJsYXkgd2hpY2ggYXJlIGxhenkgbG9hZGVkIGRvbid0IGZpbmQgZGF0YSBpbiBjb21wb25lbnQtbGlzdFxyXG4gICAgbGV0IGNvbXAgPSAgdGhpcy5jb21wb25lbnRMaXN0LmxhenlMb2FkTW9kdWxlc01hcCAhPSBudWxsICYmIHRoaXMuY29tcG9uZW50TGlzdC5sYXp5TG9hZE1vZHVsZXNNYXAuaGFzT3duUHJvcGVydHkoZm9ybU5hbWUpID8gbnVsbCA6dGhpcy5jb21wb25lbnRMaXN0LmdldENvbXBvbmVudChmb3JtTmFtZSk7XHJcbiAgICBsZXQgcGFyYW1ldGVycyA9IHsgdGFza0lkUGFyYW06IHRhc2tJZCwgdGFza0Rlc2NyaXB0aW9uOiB0YXNrRGVzY3JpcHRpb24gfTtcclxuXHJcbiAgICBsZXQgY29tcG9uZW50UmVmID0gdGhpcy5jcmVhdGVNb2RhbENvbXBvbmVudCh7IE1hZ2ljRm9ybU5hbWU6IGZvcm1OYW1lLCBNb2RhbENvbXA6IGNvbXAsIE1vZGFsQ29tcFBhcmFtZXRlcnM6IHBhcmFtZXRlcnN9LCA8Q29tcG9uZW50PnRoaXMub3ZlcmxheUNvbnRhaW5lck1hZ2ljUHJvdmlkZXIuZ2V0Q29tcG9uZW50KCksIE92ZXJsYXlUeXBlLk92ZXJsYXkpO1xyXG5cclxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5vbkNsb3NlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGxldCBndWlFdmVudDogSUd1aUV2ZW50ID0gZ2V0R3VpRXZlbnRPYmooXCJjbG9zZVwiLCBudWxsLCAwKTtcclxuICAgICAgZ3VpRXZlbnQuVGFza0lEID0gdGFza0lkO1xyXG4gICAgICB0aGlzLmVuZ2luZU1hZ2ljU2VydmljZS5pbnNlcnRFdmVudChndWlFdmVudCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL3VzaW5nIHRoZSBzYW1lIGNoYW5nZURldGVjdG9yUmVmIGZyb20gcm9vdC1jb21wb25lbnRcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoY29tbWFuZFN0cjogc3RyaW5nKSB7XHJcbiAgICAvLyBDbG9zZSB0aGUgb3ZlcmxheSBieSByZW1vdmluZyB0aGUgb3ZlcmxheSB3aW5kb3cgZnJvbSBpdHMgY29udGFpbmVyXHJcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3dzQ29udGFpbmVyVmlld1JlZi5yZW1vdmUoKTtcclxuICAgIHRoaXMub3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlci5wb3BEaWFsb2coKTtcclxuXHJcbiAgICBsZXQgZ3VpRXZlbnQxOiBJR3VpRXZlbnQgPSBnZXRHdWlFdmVudE9iaihcImRpc3Bvc2VcIiwgbnVsbCwgMCk7XHJcbiAgICBndWlFdmVudDEuVGFza0lEID0gY29tbWFuZFN0cjtcclxuICAgIHRoaXMuZW5naW5lTWFnaWNTZXJ2aWNlLmluc2VydEV2ZW50KGd1aUV2ZW50MSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBDb25maXJtYXRpb24gYm94XHJcbiAgICogQHBhcmFtIHRpdGxlIHRpdGxlIG9mIHRoZSBib3hcclxuICAgKiBAcGFyYW0gbXNnIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gc3R5bGUgTWFnaWMgc3R5bGVcclxuICAgKi9cclxuICAgb3BlbkNvbmZpcm1hdGlvbkJveCggdGl0bGU6IHN0cmluZywgbXNnOiBzdHJpbmcsIHN0eWxlOiBTdHlsZXMpIHtcclxuXHJcbiAgICAgLy9zaG93IGRlZmF1bHQgY29uZmlybWF0aW9uc1xyXG4gICAgaWYgKHRoaXMuY29uZmlybWF0aW9uQ29tcG9uZW50c01hZ2ljUHJvdmlkZXIuc2hvd0RlZmF1bHRDb25maXJtYXRpb25zKCkpXHJcbiAgICB7XHJcbiAgICAgIGxldCByZXMgPSBjb25maXJtYXRpb25Cb3guc2hvd0NvbmZpcm1hdGlvbkJveCh0aXRsZSwgbXNnLCBzdHlsZSk7XHJcbiAgICAgIHRoaXMuZmluaXNoQ29uZmlybWF0aW9uKCBzdHlsZSwgcmVzKTtcclxuXHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICB7XHJcbiAgICAgIC8vc2hvdyBjdXN0b20gY29uZmlybWF0aW9uc1xyXG4gICAgICBsZXQgY29tcCA9IGNvbmZpcm1hdGlvbkJveC5pc0NvbmZpcm1Cb3goc3R5bGUpID8gdGhpcy5jb25maXJtYXRpb25Db21wb25lbnRzTWFnaWNQcm92aWRlci5nZXRDb25maXJtdGlvbkNvbXBvbmVudCgpIDp0aGlzLmNvbmZpcm1hdGlvbkNvbXBvbmVudHNNYWdpY1Byb3ZpZGVyLmdldEFsZXJ0Q29tcG9uZW50KCkgIDtcclxuICAgICAgbGV0IG92ZXJsYXlUeXBlID0gY29uZmlybWF0aW9uQm94LmlzQ29uZmlybUJveChzdHlsZSk/IE92ZXJsYXlUeXBlLkNvbmZpcm1hdGlvbkJveCA6IE92ZXJsYXlUeXBlLkFsZXJ0O1xyXG4gICAgICBsZXQgY29tcG9uZW50UmVmID0gdGhpcy5jcmVhdGVNb2RhbENvbXBvbmVudCh7IHRpdGxlOiB0aXRsZSwgbWVzc2FnZTogbXNnIH0sIGNvbXAsIG92ZXJsYXlUeXBlKTtcclxuXHJcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5vbkNsb3NlLnN1YnNjcmliZSgocmVzIDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVdpbmRvd3NDb250YWluZXJWaWV3UmVmLnJlbW92ZSgpO1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlci5wb3BEaWFsb2coKTtcclxuICAgICAgICB0aGlzLmZpbmlzaENvbmZpcm1hdGlvbiggc3R5bGUsIHJlcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gY2xvc2Ugb2YgdGhlIGNvbmZpcm1hdGlvblxyXG4gICAqIEBwYXJhbSBzdHlsZSBNYWdpYyBzdHlsZVxyXG4gICAqIEBwYXJhbSByZXN1bHRcclxuICAgKi9cclxuICBmaW5pc2hDb25maXJtYXRpb24oc3R5bGU6IFN0eWxlcywgcmVzdWx0OiBib29sZWFuICkge1xyXG4gICAgbGV0IGd1aUV2ZW50OiBJR3VpRXZlbnQgPSBnZXRHdWlFdmVudE9iaihcImNvbmZpcm1hdGlvbkNsb3NlZFwiLCBudWxsLCAwKTtcclxuICAgIGd1aUV2ZW50LmtleUNvZGUgPSA8bnVtYmVyPmNvbmZpcm1hdGlvbkJveC5jb252ZXJ0VG9FeGNwZWN0ZWRSZXN1bHRCb3goc3R5bGUsIHJlc3VsdCk7XHJcbiAgICB0aGlzLmVuZ2luZU1hZ2ljU2VydmljZS5pbnNlcnRFdmVudChndWlFdmVudCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjcmVhdGVzIGEgbW9kYWwgY29tcG9uZW50LiBDYW4gYmUgdXNlZCBmb3Igb3ZlcmxheSwgbWVzc2FnZSBib3ggb3IgY29uZmlybWF0aW9uIGJveFxyXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIGNvbXBvbmVudCdzIHBhcmFtZXRlcnNcclxuICAgKiBAcGFyYW0gY29tcG9uZW50IGNvbXBvbmVudHMgdG8gY3JlYXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVNb2RhbENvbXBvbmVudChwYXJhbWV0ZXJzOiBhbnksIGNvbXBvbmVudDogQ29tcG9uZW50LCBvdmVybGF5VHlwZTogT3ZlcmxheVR5cGUpOiBDb21wb25lbnRSZWY8YW55PiB7XHJcbiAgICBsZXQgY29tcG9uZW50UmVmO1xyXG4gICAgbGV0IG1hZ2ljTW9kYWxDb250YWluZXJQYXJhbWV0ZXJzID0ge1xyXG4gICAgICBDb21wb25lbnQ6IGNvbXBvbmVudCxcclxuICAgICAgUGFyYW1ldGVyczogcGFyYW1ldGVycyxcclxuICAgICAgT3ZlcmxheVR5cGVQYXJhbTogb3ZlcmxheVR5cGVcclxuXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIENyZWF0ZSB0aGUgVUkgY29tcG9uZW50IG9mIG1vZGFsIHdpbmRvd1xyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KE1hZ2ljT3ZlcmxheUNvbnRhaW5lcldyYXBwZXIpO1xyXG4gICAgbGV0IHZpZXdDUmVmIDogVmlld0NvbnRhaW5lclJlZiA9IDxWaWV3Q29udGFpbmVyUmVmPnRoaXMub3ZlcmxheVdpbmRvd3NDb250YWluZXJWaWV3UmVmO1xyXG4gICAgY29tcG9uZW50UmVmID0gdmlld0NSZWYuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xyXG5cclxuICAgIC8vIFNldCB0aGUgZGF0YSB0byBuZXdseSBjcmVhdGVkIGNvbXBvbmVudFxyXG4gICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRSZWYuaW5zdGFuY2UsIG1hZ2ljTW9kYWxDb250YWluZXJQYXJhbWV0ZXJzKTtcclxuXHJcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3dGb2N1c01hbmFnZXIucHVzaERpYWxvZyhjb21wb25lbnRSZWYuaW5zdGFuY2UuR2V0Um9vdEVsZW1lbnQoKSk7XHJcblxyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLkRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgT3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlclxyXG57XHJcbiAgcHJpdmF0ZSByb290TWFnaWNFbGVtZW50OiBFbGVtZW50ID0gbnVsbDtcclxuICBwcml2YXRlIG9wZW5EaWFsb2dMaXN0OiBBcnJheTxEaWFsb2dJbmZvPiA9IG5ldyBBcnJheSgwKTtcclxuICBwcml2YXRlIGlnbm9yZVV0aWxGb2N1c0NoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGxhc3RGb2N1cyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBmb2N1c0xpc3RlbmVyID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IgKHJvb3RNYWdpY0VsZW1lbnQ6IEVsZW1lbnQpIHtcclxuICAgIHRoaXMucm9vdE1hZ2ljRWxlbWVudCA9IHJvb3RNYWdpY0VsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwdXNoRGlhbG9nKHJvb3RFbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgaWYgKHRoaXMub3BlbkRpYWxvZ0xpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZm9jdXNMaXN0ZW5lciA9IHRoaXMudHJhcEZvY3VzLmJpbmQodGhpcyk7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5mb2N1c0xpc3RlbmVyLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wZW5EaWFsb2dMaXN0LnB1c2gobmV3IERpYWxvZ0luZm8ocm9vdEVsZW1lbnQsIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyA8SFRNTEVsZW1lbnQ+ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA6IG51bGwpKSk7XHJcbiAgfVxyXG5cclxuICBwb3BEaWFsb2coKSB7XHJcbiAgICBjb25zdCBkaWFsb2dJbmZvID0gdGhpcy5vcGVuRGlhbG9nTGlzdC5wb3AoKTtcclxuICAgIHRoaXMuYXR0ZW1wdEZvY3VzKGRpYWxvZ0luZm8uRm9jdXNFbGVtZW50T25DbG9zZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3BlbkRpYWxvZ0xpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5mb2N1c0xpc3RlbmVyLCB0cnVlKTtcclxuICAgICAgdGhpcy5mb2N1c0xpc3RlbmVyID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyYXBGb2N1cyAoZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmlnbm9yZVV0aWxGb2N1c0NoYW5nZXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wZW5EaWFsb2dMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFyIGN1cnJlbnREaWFsb2cgPSB0aGlzLm9wZW5EaWFsb2dMaXN0W3RoaXMub3BlbkRpYWxvZ0xpc3QubGVuZ3RoIC0gMV0uUm9vdEVsZW1lbnQ7XHJcbiAgICAgIGlmIChjdXJyZW50RGlhbG9nLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgICB0aGlzLmxhc3RGb2N1cyA9IGV2ZW50LnRhcmdldDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5yb290TWFnaWNFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgICAgIHRoaXMuZm9jdXNGaXJzdERlc2NlbmRhbnQoY3VycmVudERpYWxvZyk7XHJcbiAgICAgICAgICBpZiAodGhpcy5sYXN0Rm9jdXMgPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzTGFzdERlc2NlbmRhbnQoY3VycmVudERpYWxvZyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdEZvY3VzID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb2N1c0ZpcnN0RGVzY2VuZGFudCAoZWxlbWVudCkge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIGNoaWxkID0gZWxlbWVudC5jaGlsZE5vZGVzW2ldO1xyXG4gICAgICBpZiAodGhpcy5hdHRlbXB0Rm9jdXMoY2hpbGQpIHx8XHJcbiAgICAgICAgdGhpcy5mb2N1c0ZpcnN0RGVzY2VuZGFudChjaGlsZCkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZm9jdXNMYXN0RGVzY2VuZGFudCAoZWxlbWVudCkge1xyXG4gICAgZm9yICh2YXIgaSA9IGVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICB2YXIgY2hpbGQgPSBlbGVtZW50LmNoaWxkTm9kZXNbaV07XHJcbiAgICAgIGlmICh0aGlzLmF0dGVtcHRGb2N1cyhjaGlsZCkgfHxcclxuICAgICAgICB0aGlzLmZvY3VzTGFzdERlc2NlbmRhbnQoY2hpbGQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGF0dGVtcHRGb2N1cyAoZWxlbWVudCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRm9jdXNhYmxlKGVsZW1lbnQpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlnbm9yZVV0aWxGb2N1c0NoYW5nZXMgPSB0cnVlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgZWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgIH1cclxuICAgIHRoaXMuaWdub3JlVXRpbEZvY3VzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgcmV0dXJuIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlbGVtZW50KTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGlzRm9jdXNhYmxlIChlbGVtZW50KSB7XHJcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoZWxlbWVudCkpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoZWxlbWVudC50YWJJbmRleCA+IDAgfHwgKGVsZW1lbnQudGFiSW5kZXggPT09IDAgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RhYkluZGV4JykgIT09IG51bGwpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZWxlbWVudC50YWJJbmRleCA8IDApXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoZWxlbWVudC5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChlbGVtZW50Lm5vZGVOYW1lKSB7XHJcbiAgICAgIGNhc2UgJ0EnOlxyXG4gICAgICAgIHJldHVybiAhIWVsZW1lbnQuaHJlZiAmJiBlbGVtZW50LnJlbCAhPSAnaWdub3JlJztcclxuICAgICAgY2FzZSAnSU5QVVQnOlxyXG4gICAgICAgIHJldHVybiBlbGVtZW50LnR5cGUgIT0gJ2hpZGRlbicgJiYgZWxlbWVudC50eXBlICE9ICdmaWxlJztcclxuICAgICAgY2FzZSAnQlVUVE9OJzpcclxuICAgICAgY2FzZSAnU0VMRUNUJzpcclxuICAgICAgY2FzZSAnVEVYVEFSRUEnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIERpYWxvZ0luZm9cclxue1xyXG4gIHByaXZhdGUgcm9vdEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgZm9jdXNFbGVtZW50T25DbG9zZTogSFRNTEVsZW1lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHJvb3RFbGVtZW50OiBIVE1MRWxlbWVudCwgZm9jdXNFbGVtZW50T25DbG9zZTogSFRNTEVsZW1lbnQpIHtcclxuICAgIHRoaXMucm9vdEVsZW1lbnQgPSByb290RWxlbWVudDtcclxuICAgIHRoaXMuZm9jdXNFbGVtZW50T25DbG9zZSA9IGZvY3VzRWxlbWVudE9uQ2xvc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgUm9vdEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMucm9vdEVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBnZXQgRm9jdXNFbGVtZW50T25DbG9zZSgpOiBIVE1MRWxlbWVudCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb2N1c0VsZW1lbnRPbkNsb3NlO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
@@ -1,28 +0,0 @@
1
- import { MagicProperties } from "@magic-xpa/utils";
2
- import { NString, isNullOrUndefined } from "@magic-xpa/mscorelib";
3
- export class StylesMapManager {
4
- static magicValueGetStyle(styleName, magicValue) {
5
- let style = "";
6
- if (!isNullOrUndefined(magicValue)) {
7
- let value = StylesMapManager.StylesMap.get(styleName);
8
- if (value.constructor === Map) {
9
- style = value.get(magicValue);
10
- }
11
- else if (value.constructor === String) {
12
- style = NString.Format(value.toString(), magicValue);
13
- }
14
- }
15
- return style;
16
- }
17
- }
18
- StylesMapManager.StylesMap = new Map([
19
- [MagicProperties.LineDivider, new Map([[true, "solid"], [false, "hidden"]])],
20
- [MagicProperties.ImageFile, "url('\{0}\')"],
21
- [MagicProperties.Wallpaper, "url('\{0}\')"]
22
- ]);
23
- StylesMapManager.MagicPropertyToHtmlAttributeMap = new Map([
24
- [MagicProperties.LineDivider, "border-bottom-style"],
25
- [MagicProperties.ImageFile, "background-image"],
26
- [MagicProperties.Wallpaper, "background-image"]
27
- ]);
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3R5bGVzTWFwTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL1N0eWxlc01hcE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQTtBQUsvRCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixNQUFNLENBQUMsa0JBQWtCLENBQUMsU0FBaUIsRUFBRSxVQUFlO1FBQzFELElBQUksS0FBSyxHQUFXLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssR0FBRyxFQUFFO2dCQUM3QixLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMvQjtpQkFDSSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssTUFBTSxFQUFFO2dCQUNyQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDdEQ7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7QUE5Qk0sMEJBQVMsR0FBcUIsSUFBSSxHQUFHLENBQzFDO0lBQ0UsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLElBQUksR0FBRyxDQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUM7SUFDM0MsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQztDQUM1QyxDQUNGLENBQUM7QUFFSyxnREFBK0IsR0FBd0IsSUFBSSxHQUFHLENBQ25FO0lBQ0UsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLHFCQUFxQixDQUFDO0lBQ3BELENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQztJQUMvQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUM7Q0FDaEQsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYWdpY1Byb3BlcnRpZXN9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCJcclxuaW1wb3J0IHtOU3RyaW5nLCBpc051bGxPclVuZGVmaW5lZH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCJcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3R5bGVzTWFwTWFuYWdlciB7XHJcbiAgc3RhdGljIFN0eWxlc01hcDogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KFxyXG4gICAgW1xyXG4gICAgICBbTWFnaWNQcm9wZXJ0aWVzLkxpbmVEaXZpZGVyLCBuZXcgTWFwPGFueSwgYW55PihbW3RydWUsIFwic29saWRcIl0sIFtmYWxzZSwgXCJoaWRkZW5cIl1dKV0sXHJcbiAgICAgIFtNYWdpY1Byb3BlcnRpZXMuSW1hZ2VGaWxlLCBcInVybCgnXFx7MH1cXCcpXCJdLFxyXG4gICAgICBbTWFnaWNQcm9wZXJ0aWVzLldhbGxwYXBlciwgXCJ1cmwoJ1xcezB9XFwnKVwiXVxyXG4gICAgXVxyXG4gICk7XHJcblxyXG4gIHN0YXRpYyBNYWdpY1Byb3BlcnR5VG9IdG1sQXR0cmlidXRlTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oXHJcbiAgICBbXHJcbiAgICAgIFtNYWdpY1Byb3BlcnRpZXMuTGluZURpdmlkZXIsIFwiYm9yZGVyLWJvdHRvbS1zdHlsZVwiXSxcclxuICAgICAgW01hZ2ljUHJvcGVydGllcy5JbWFnZUZpbGUsIFwiYmFja2dyb3VuZC1pbWFnZVwiXSxcclxuICAgICAgW01hZ2ljUHJvcGVydGllcy5XYWxscGFwZXIsIFwiYmFja2dyb3VuZC1pbWFnZVwiXVxyXG4gICAgXVxyXG4gICk7XHJcblxyXG4gIHN0YXRpYyBtYWdpY1ZhbHVlR2V0U3R5bGUoc3R5bGVOYW1lOiBzdHJpbmcsIG1hZ2ljVmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgc3R5bGU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChtYWdpY1ZhbHVlKSkge1xyXG4gICAgICBsZXQgdmFsdWUgPSBTdHlsZXNNYXBNYW5hZ2VyLlN0eWxlc01hcC5nZXQoc3R5bGVOYW1lKTtcclxuICAgICAgaWYgKHZhbHVlLmNvbnN0cnVjdG9yID09PSBNYXApIHtcclxuICAgICAgICBzdHlsZSA9IHZhbHVlLmdldChtYWdpY1ZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSB7XHJcbiAgICAgICAgc3R5bGUgPSBOU3RyaW5nLkZvcm1hdCh2YWx1ZS50b1N0cmluZygpLCBtYWdpY1ZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdHlsZTtcclxuICB9XHJcbn1cclxuIl19