@magic-xpa/gui 4.1100.0-dev4110.98 → 4.1100.0

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 (195) hide show
  1. package/README.md +7 -7
  2. package/{esm2020 → esm2022}/index.mjs +71 -71
  3. package/{esm2020 → esm2022}/magic-xpa-gui.mjs +1 -1
  4. package/esm2022/src/Commands.mjs +184 -0
  5. package/esm2022/src/Events.mjs +425 -0
  6. package/{esm2020 → esm2022}/src/EventsProcessor.mjs +66 -66
  7. package/{esm2020 → esm2022}/src/FocusManager.mjs +33 -33
  8. package/esm2022/src/GuiConstants.mjs +68 -0
  9. package/{esm2020 → esm2022}/src/GuiEnums.mjs +301 -300
  10. package/esm2022/src/GuiEnvironment.mjs +4 -0
  11. package/{esm2020 → esm2022}/src/IFlowMonitorQueue.mjs +1 -1
  12. package/esm2022/src/Manager.mjs +91 -0
  13. package/esm2022/src/UIBridge.mjs +33 -0
  14. package/{esm2020 → esm2022}/src/env/IEnvironment.mjs +1 -1
  15. package/{esm2020 → esm2022}/src/gui/ControlBase.mjs +2 -2
  16. package/esm2022/src/gui/GuiMgControl.mjs +123 -0
  17. package/{esm2020 → esm2022}/src/gui/GuiMgForm.mjs +3 -3
  18. package/esm2022/src/gui/KeyboardItem.mjs +135 -0
  19. package/esm2022/src/gui/LastFocusedVal.mjs +11 -0
  20. package/esm2022/src/gui/MgValue.mjs +16 -0
  21. package/{esm2020 → esm2022}/src/gui/PropParentInterface.mjs +1 -1
  22. package/{esm2020 → esm2022}/src/gui/low/DialogHandler.mjs +6 -6
  23. package/esm2022/src/gui/low/GuiCommand.mjs +68 -0
  24. package/esm2022/src/gui/low/GuiCommandQueue.mjs +35 -0
  25. package/esm2022/src/gui/low/GuiInteractive.mjs +178 -0
  26. package/esm2022/src/gui/low/Style.mjs +20 -0
  27. package/esm2022/src/management/RuntimeContextBase.mjs +42 -0
  28. package/esm2022/src/management/data/BlobType.mjs +281 -0
  29. package/esm2022/src/management/data/DcValues.mjs +214 -0
  30. package/{esm2020 → esm2022}/src/management/data/DcValuesBuilderBase.mjs +95 -95
  31. package/esm2022/src/management/data/FieldDef.mjs +331 -0
  32. package/{esm2020 → esm2022}/src/management/data/FieldsTable.mjs +54 -54
  33. package/esm2022/src/management/data/GuiDataViewBase.mjs +88 -0
  34. package/esm2022/src/management/data/GuiFieldBase.mjs +82 -0
  35. package/{esm2020 → esm2022}/src/management/data/IRecord.mjs +1 -1
  36. package/{esm2020 → esm2022}/src/management/data/IReferencedObject.mjs +1 -1
  37. package/esm2022/src/management/data/NUM_TYPE.mjs +1739 -0
  38. package/esm2022/src/management/data/ObjectReferenceBase.mjs +48 -0
  39. package/esm2022/src/management/data/ObjectReferencesCollection.mjs +27 -0
  40. package/{esm2020 → esm2022}/src/management/data/RecordUtils.mjs +360 -360
  41. package/esm2022/src/management/data/VectorType.mjs +612 -0
  42. package/esm2022/src/management/data/VectorTypeBase.mjs +88 -0
  43. package/{esm2020 → esm2022}/src/management/events/IActionManager.mjs +1 -1
  44. package/{esm2020 → esm2022}/src/management/events/IGuiEventsManager.mjs +1 -1
  45. package/esm2022/src/management/exp/ExpressionInterface.mjs +244 -0
  46. package/esm2022/src/management/exp/GuiExpressionEvaluator.mjs +305 -0
  47. package/esm2022/src/management/gui/ControlTable.mjs +118 -0
  48. package/esm2022/src/management/gui/DisplayConvertor.mjs +1649 -0
  49. package/esm2022/src/management/gui/FieldValidator.mjs +711 -0
  50. package/esm2022/src/management/gui/GuiControlPropertyAdapter.mjs +24 -0
  51. package/{esm2020 → esm2022}/src/management/gui/GuiFormPropertyAdapter.mjs +10 -10
  52. package/esm2022/src/management/gui/HebrewDate.mjs +278 -0
  53. package/esm2022/src/management/gui/Helps.mjs +237 -0
  54. package/esm2022/src/management/gui/MgControlBase.mjs +1869 -0
  55. package/esm2022/src/management/gui/MgFormBase.mjs +741 -0
  56. package/esm2022/src/management/gui/PIC.mjs +1185 -0
  57. package/{esm2020 → esm2022}/src/management/gui/PropDefaults.mjs +229 -229
  58. package/{esm2020 → esm2022}/src/management/gui/PropInterface.mjs +246 -245
  59. package/esm2022/src/management/gui/PropTable.mjs +221 -0
  60. package/esm2022/src/management/gui/Property.mjs +1362 -0
  61. package/esm2022/src/management/gui/ValidationDetails.mjs +248 -0
  62. package/{esm2020 → esm2022}/src/management/gui/ValidationDetailsBase.mjs +93 -93
  63. package/{esm2020 → esm2022}/src/management/gui/WrongFormatException.mjs +29 -29
  64. package/esm2022/src/management/tasks/GuiDataCollection.mjs +4 -0
  65. package/esm2022/src/management/tasks/GuiTaskBase.mjs +511 -0
  66. package/{esm2020 → esm2022}/src/management/tasks/IMGDataTable.mjs +1 -1
  67. package/{esm2020 → esm2022}/src/management/tasks/ITask.mjs +1 -1
  68. package/esm2022/src/management/tasks/MgTimer.mjs +21 -0
  69. package/esm2022/src/management/tasks/TaskDefinitionId.mjs +54 -0
  70. package/{esm2020 → esm2022}/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -41
  71. package/{esm2020 → esm2022}/src/util/MemoryUtil.mjs +34 -34
  72. package/esm2022/src/util/ObjectReference.mjs +36 -0
  73. package/esm2022/src/util/UsernamePasswordCredentials.mjs +52 -0
  74. package/{fesm2020 → fesm2022}/magic-xpa-gui.mjs +16086 -16095
  75. package/fesm2022/magic-xpa-gui.mjs.map +1 -0
  76. package/index.d.ts +70 -70
  77. package/package.json +6 -12
  78. package/src/Commands.d.ts +40 -40
  79. package/src/Events.d.ts +157 -155
  80. package/src/EventsProcessor.d.ts +13 -13
  81. package/src/FocusManager.d.ts +8 -8
  82. package/src/GuiConstants.d.ts +65 -65
  83. package/src/GuiEnums.d.ts +283 -282
  84. package/src/GuiEnvironment.d.ts +4 -4
  85. package/src/IFlowMonitorQueue.d.ts +3 -3
  86. package/src/Manager.d.ts +26 -26
  87. package/src/UIBridge.d.ts +16 -16
  88. package/src/env/IEnvironment.d.ts +31 -31
  89. package/src/gui/ControlBase.d.ts +4 -4
  90. package/src/gui/GuiMgControl.d.ts +38 -38
  91. package/src/gui/GuiMgForm.d.ts +3 -3
  92. package/src/gui/KeyboardItem.d.ts +18 -18
  93. package/src/gui/LastFocusedVal.d.ts +7 -7
  94. package/src/gui/MgValue.d.ts +15 -15
  95. package/src/gui/PropParentInterface.d.ts +13 -13
  96. package/src/gui/low/DialogHandler.d.ts +4 -4
  97. package/src/gui/low/GuiCommand.d.ts +37 -37
  98. package/src/gui/low/GuiCommandQueue.d.ts +13 -13
  99. package/src/gui/low/GuiInteractive.d.ts +55 -55
  100. package/src/gui/low/Style.d.ts +19 -19
  101. package/src/management/RuntimeContextBase.d.ts +23 -23
  102. package/src/management/data/BlobType.d.ts +29 -29
  103. package/src/management/data/DcValues.d.ts +33 -33
  104. package/src/management/data/DcValuesBuilderBase.d.ts +17 -17
  105. package/src/management/data/FieldDef.d.ts +53 -53
  106. package/src/management/data/FieldsTable.d.ts +16 -16
  107. package/src/management/data/GuiDataViewBase.d.ts +27 -27
  108. package/src/management/data/GuiFieldBase.d.ts +17 -17
  109. package/src/management/data/IRecord.d.ts +12 -12
  110. package/src/management/data/IReferencedObject.d.ts +5 -5
  111. package/src/management/data/NUM_TYPE.d.ts +103 -103
  112. package/src/management/data/ObjectReferenceBase.d.ts +16 -16
  113. package/src/management/data/ObjectReferencesCollection.d.ts +10 -10
  114. package/src/management/data/RecordUtils.d.ts +21 -21
  115. package/src/management/data/VectorType.d.ts +52 -52
  116. package/src/management/data/VectorTypeBase.d.ts +8 -8
  117. package/src/management/events/IActionManager.d.ts +7 -7
  118. package/src/management/events/IGuiEventsManager.d.ts +20 -20
  119. package/src/management/exp/ExpressionInterface.d.ts +242 -242
  120. package/src/management/exp/GuiExpressionEvaluator.d.ts +47 -47
  121. package/src/management/gui/ControlTable.d.ts +28 -28
  122. package/src/management/gui/DisplayConvertor.d.ts +103 -103
  123. package/src/management/gui/FieldValidator.d.ts +35 -35
  124. package/src/management/gui/GuiControlPropertyAdapter.d.ts +40 -40
  125. package/src/management/gui/GuiFormPropertyAdapter.d.ts +17 -17
  126. package/src/management/gui/HebrewDate.d.ts +46 -46
  127. package/src/management/gui/Helps.d.ts +51 -51
  128. package/src/management/gui/MgControlBase.d.ts +225 -223
  129. package/src/management/gui/MgFormBase.d.ts +160 -160
  130. package/src/management/gui/PIC.d.ts +108 -108
  131. package/src/management/gui/PropDefaults.d.ts +7 -7
  132. package/src/management/gui/PropInterface.d.ts +244 -243
  133. package/src/management/gui/PropTable.d.ts +33 -33
  134. package/src/management/gui/Property.d.ts +121 -121
  135. package/src/management/gui/ValidationDetails.d.ts +52 -52
  136. package/src/management/gui/ValidationDetailsBase.d.ts +14 -14
  137. package/src/management/gui/WrongFormatException.d.ts +9 -9
  138. package/src/management/tasks/GuiDataCollection.d.ts +4 -4
  139. package/src/management/tasks/GuiTaskBase.d.ts +150 -150
  140. package/src/management/tasks/IMGDataTable.d.ts +10 -10
  141. package/src/management/tasks/ITask.d.ts +6 -6
  142. package/src/management/tasks/MgTimer.d.ts +8 -8
  143. package/src/management/tasks/TaskDefinitionId.d.ts +16 -16
  144. package/src/management/tasks/TaskDefinitionIdTableSaxHandler.d.ts +7 -7
  145. package/src/util/MemoryUtil.d.ts +6 -6
  146. package/src/util/ObjectReference.d.ts +9 -9
  147. package/src/util/UsernamePasswordCredentials.d.ts +18 -18
  148. package/esm2020/src/Commands.mjs +0 -184
  149. package/esm2020/src/Events.mjs +0 -420
  150. package/esm2020/src/GuiConstants.mjs +0 -68
  151. package/esm2020/src/GuiEnvironment.mjs +0 -4
  152. package/esm2020/src/Manager.mjs +0 -91
  153. package/esm2020/src/UIBridge.mjs +0 -32
  154. package/esm2020/src/gui/GuiMgControl.mjs +0 -125
  155. package/esm2020/src/gui/KeyboardItem.mjs +0 -135
  156. package/esm2020/src/gui/LastFocusedVal.mjs +0 -11
  157. package/esm2020/src/gui/MgValue.mjs +0 -16
  158. package/esm2020/src/gui/low/GuiCommand.mjs +0 -66
  159. package/esm2020/src/gui/low/GuiCommandQueue.mjs +0 -35
  160. package/esm2020/src/gui/low/GuiInteractive.mjs +0 -176
  161. package/esm2020/src/gui/low/Style.mjs +0 -20
  162. package/esm2020/src/management/RuntimeContextBase.mjs +0 -43
  163. package/esm2020/src/management/data/BlobType.mjs +0 -281
  164. package/esm2020/src/management/data/DcValues.mjs +0 -214
  165. package/esm2020/src/management/data/FieldDef.mjs +0 -331
  166. package/esm2020/src/management/data/GuiDataViewBase.mjs +0 -90
  167. package/esm2020/src/management/data/GuiFieldBase.mjs +0 -82
  168. package/esm2020/src/management/data/NUM_TYPE.mjs +0 -1741
  169. package/esm2020/src/management/data/ObjectReferenceBase.mjs +0 -48
  170. package/esm2020/src/management/data/ObjectReferencesCollection.mjs +0 -29
  171. package/esm2020/src/management/data/VectorType.mjs +0 -612
  172. package/esm2020/src/management/data/VectorTypeBase.mjs +0 -88
  173. package/esm2020/src/management/exp/ExpressionInterface.mjs +0 -244
  174. package/esm2020/src/management/exp/GuiExpressionEvaluator.mjs +0 -307
  175. package/esm2020/src/management/gui/ControlTable.mjs +0 -118
  176. package/esm2020/src/management/gui/DisplayConvertor.mjs +0 -1679
  177. package/esm2020/src/management/gui/FieldValidator.mjs +0 -711
  178. package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +0 -22
  179. package/esm2020/src/management/gui/HebrewDate.mjs +0 -278
  180. package/esm2020/src/management/gui/Helps.mjs +0 -237
  181. package/esm2020/src/management/gui/MgControlBase.mjs +0 -1858
  182. package/esm2020/src/management/gui/MgFormBase.mjs +0 -741
  183. package/esm2020/src/management/gui/PIC.mjs +0 -1185
  184. package/esm2020/src/management/gui/PropTable.mjs +0 -221
  185. package/esm2020/src/management/gui/Property.mjs +0 -1356
  186. package/esm2020/src/management/gui/ValidationDetails.mjs +0 -248
  187. package/esm2020/src/management/tasks/GuiDataCollection.mjs +0 -4
  188. package/esm2020/src/management/tasks/GuiTaskBase.mjs +0 -510
  189. package/esm2020/src/management/tasks/MgTimer.mjs +0 -21
  190. package/esm2020/src/management/tasks/TaskDefinitionId.mjs +0 -54
  191. package/esm2020/src/util/ObjectReference.mjs +0 -36
  192. package/esm2020/src/util/UsernamePasswordCredentials.mjs +0 -52
  193. package/fesm2015/magic-xpa-gui.mjs +0 -16391
  194. package/fesm2015/magic-xpa-gui.mjs.map +0 -1
  195. package/fesm2020/magic-xpa-gui.mjs.map +0 -1
@@ -1,67 +1,67 @@
1
- import { Debug } from '@magic-xpa/mscorelib';
2
- import { InternalInterface, MgControlType } from '@magic-xpa/utils';
3
- import { Events } from './Events';
4
- import { Manager } from './Manager';
5
- import { MgFormBase } from './management/gui/MgFormBase';
6
- import { PropInterface } from './management/gui/PropInterface';
7
- export class EventsProcessor {
8
- constructor() {
9
- this.RegisterHandlers();
10
- this.RegisterSubclassHandlers();
11
- }
12
- RegisterHandlers() {
13
- Events.KeyDownEvent = this.processKeyDown.bind(this);
14
- Events.MouseDownEvent = this.processMouseDown;
15
- Events.DblClickEvent = this.processDblClick;
16
- Events.CloseFormEvent = this.processFormClose;
17
- Events.ColumnClickEvent = this.ProcessColumnClick;
18
- }
19
- processKeyDown(guiMgForm, guiMgCtrl, modifier, keyCode, start, end, text, isActChar, suggestedValue, handled) {
20
- let eventHandled = handled;
21
- let mgControlBase = guiMgCtrl;
22
- let mgFormBase = guiMgForm;
23
- Manager.EventsManager.AddKeyboardEvent(mgFormBase, mgControlBase, modifier, keyCode, start, end, text, isActChar, suggestedValue, InternalInterface.MG_ACT_CTRL_KEYDOWN);
24
- return eventHandled;
25
- }
26
- processFormClose(guiMgForm) {
27
- let clrHandledEvent = false;
28
- let mgFormBase = guiMgForm;
29
- if (MgFormBase.ShouldPutActOnFormClose())
30
- Manager.EventsManager.addGuiTriggeredEventTaskAndCodeAndRaisedBy(mgFormBase.getTask(), InternalInterface.MG_ACT_HIT);
31
- Manager.EventsManager.addGuiTriggeredEventWithTaskAndCode(mgFormBase.getTask(), InternalInterface.MG_ACT_CLOSE);
32
- return clrHandledEvent;
33
- }
34
- processMouseDown(guiMgForm, guiMgCtrl, dotNetArgs, leftClickWasPressed, line, onMultiMark, canProduceClick) {
35
- let mgControl = guiMgCtrl;
36
- if (mgControl === null) {
37
- Debug.Assert(guiMgForm !== null);
38
- Manager.EventsManager.addGuiTriggeredEventWithTaskAndCodeAndOnMultiMark(guiMgForm.getTask(), InternalInterface.MG_ACT_HIT);
39
- }
40
- else {
41
- if (mgControl.isSubform()) {
42
- mgControl.OnSubformClick();
43
- }
44
- else {
45
- if (mgControl.RaiseControlHitOnMouseDown(leftClickWasPressed)) {
46
- Manager.EventsManager.addGuiTriggeredEventWithCtrlAndCodeAndLine(mgControl, InternalInterface.MG_ACT_CTRL_HIT, line);
47
- }
48
- if (leftClickWasPressed && canProduceClick) {
49
- if (mgControl.Type !== MgControlType.CTRL_TYPE_BUTTON && mgControl.Type !== MgControlType.CTRL_TYPE_CHECKBOX) {
50
- Manager.EventsManager.addGuiTriggeredEventWithCtrlAndCodeAndLine(mgControl, InternalInterface.MG_ACT_WEB_CLICK, line);
51
- }
52
- }
53
- }
54
- }
55
- }
56
- processDblClick(guiMgCtrl, line) {
57
- let mgControl = guiMgCtrl;
58
- if (!mgControl.GetComputedBooleanProperty(PropInterface.PROP_TYPE_ENABLED, true, line))
59
- return;
60
- Manager.EventsManager.addGuiTriggeredEventWithCtrlAndCodeAndLine(mgControl, InternalInterface.MG_ACT_WEB_ON_DBLICK, line);
61
- }
62
- ProcessColumnClick(guiColumnCtrl, direction, columnHeader) {
63
- let mgColumnControl = guiColumnCtrl;
64
- Manager.EventsManager.AddColumnClickEvent(mgColumnControl, direction, columnHeader);
65
- }
66
- }
1
+ import { Debug } from '@magic-xpa/mscorelib';
2
+ import { InternalInterface, MgControlType } from '@magic-xpa/utils';
3
+ import { Events } from './Events';
4
+ import { Manager } from './Manager';
5
+ import { MgFormBase } from './management/gui/MgFormBase';
6
+ import { PropInterface } from './management/gui/PropInterface';
7
+ export class EventsProcessor {
8
+ constructor() {
9
+ this.RegisterHandlers();
10
+ this.RegisterSubclassHandlers();
11
+ }
12
+ RegisterHandlers() {
13
+ Events.KeyDownEvent = this.processKeyDown.bind(this);
14
+ Events.MouseDownEvent = this.processMouseDown;
15
+ Events.DblClickEvent = this.processDblClick;
16
+ Events.CloseFormEvent = this.processFormClose;
17
+ Events.ColumnClickEvent = this.ProcessColumnClick;
18
+ }
19
+ processKeyDown(guiMgForm, guiMgCtrl, modifier, keyCode, start, end, text, isActChar, suggestedValue, handled) {
20
+ let eventHandled = handled;
21
+ let mgControlBase = guiMgCtrl;
22
+ let mgFormBase = guiMgForm;
23
+ Manager.EventsManager.AddKeyboardEvent(mgFormBase, mgControlBase, modifier, keyCode, start, end, text, isActChar, suggestedValue, InternalInterface.MG_ACT_CTRL_KEYDOWN);
24
+ return eventHandled;
25
+ }
26
+ processFormClose(guiMgForm) {
27
+ let clrHandledEvent = false;
28
+ let mgFormBase = guiMgForm;
29
+ if (MgFormBase.ShouldPutActOnFormClose())
30
+ Manager.EventsManager.addGuiTriggeredEventTaskAndCodeAndRaisedBy(mgFormBase.getTask(), InternalInterface.MG_ACT_HIT);
31
+ Manager.EventsManager.addGuiTriggeredEventWithTaskAndCode(mgFormBase.getTask(), InternalInterface.MG_ACT_CLOSE);
32
+ return clrHandledEvent;
33
+ }
34
+ processMouseDown(guiMgForm, guiMgCtrl, dotNetArgs, leftClickWasPressed, line, onMultiMark, canProduceClick) {
35
+ let mgControl = guiMgCtrl;
36
+ if (mgControl === null) {
37
+ Debug.Assert(guiMgForm !== null);
38
+ Manager.EventsManager.addGuiTriggeredEventWithTaskAndCodeAndOnMultiMark(guiMgForm.getTask(), InternalInterface.MG_ACT_HIT);
39
+ }
40
+ else {
41
+ if (mgControl.isSubform()) {
42
+ mgControl.OnSubformClick();
43
+ }
44
+ else {
45
+ if (mgControl.RaiseControlHitOnMouseDown(leftClickWasPressed)) {
46
+ Manager.EventsManager.addGuiTriggeredEventWithCtrlAndCodeAndLine(mgControl, InternalInterface.MG_ACT_CTRL_HIT, line);
47
+ }
48
+ if (leftClickWasPressed && canProduceClick) {
49
+ if (mgControl.Type !== MgControlType.CTRL_TYPE_BUTTON && mgControl.Type !== MgControlType.CTRL_TYPE_CHECKBOX) {
50
+ Manager.EventsManager.addGuiTriggeredEventWithCtrlAndCodeAndLine(mgControl, InternalInterface.MG_ACT_WEB_CLICK, line);
51
+ }
52
+ }
53
+ }
54
+ }
55
+ }
56
+ processDblClick(guiMgCtrl, line) {
57
+ let mgControl = guiMgCtrl;
58
+ if (!mgControl.GetComputedBooleanProperty(PropInterface.PROP_TYPE_ENABLED, true, line))
59
+ return;
60
+ Manager.EventsManager.addGuiTriggeredEventWithCtrlAndCodeAndLine(mgControl, InternalInterface.MG_ACT_WEB_ON_DBLICK, line);
61
+ }
62
+ ProcessColumnClick(guiColumnCtrl, direction, columnHeader) {
63
+ let mgColumnControl = guiColumnCtrl;
64
+ Manager.EventsManager.AddColumnClickEvent(mgColumnControl, direction, columnHeader);
65
+ }
66
+ }
67
67
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRzUHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9FdmVudHNQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR2hDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFbEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU03RCxNQUFNLE9BQWlCLGVBQWU7SUFDcEM7UUFDRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBR08sZ0JBQWdCO1FBQ3RCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRTlDLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDcEQsQ0FBQztJQXFCRCxjQUFjLENBQUMsU0FBb0IsRUFBRSxTQUF1QixFQUFFLFFBQW1CLEVBQUUsT0FBZSxFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLFNBQWtCLEVBQUUs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QUFDLENBQUM7SUFDdEYsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZWJ1Z30gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQge0ludGVybmFsSW50ZXJmYWNlLCBNZ0NvbnRyb2xUeXBlfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHtHdWlNZ0Zvcm19IGZyb20gJy4vZ3VpL0d1aU1nRm9ybSc7XHJcbmltcG9ydCB7RXZlbnRzfSBmcm9tICcuL0V2ZW50cyc7XHJcbmltcG9ydCB7R3VpTWdDb250cm9sfSBmcm9tICcuL2d1aS9HdWlNZ0NvbnRyb2wnO1xyXG5pbXBvcnQge01nQ29udHJvbEJhc2V9IGZyb20gJy4vbWFuYWdlbWVudC9ndWkvTWdDb250cm9sQmFzZSc7XHJcbmltcG9ydCB7TWFuYWdlcn0gZnJvbSAnLi9NYW5hZ2VyJztcclxuaW1wb3J0IHtNb2RpZmllcnN9IGZyb20gJy4vR3VpRW51bXMnO1xyXG5pbXBvcnQge01nRm9ybUJhc2V9IGZyb20gJy4vbWFuYWdlbWVudC9ndWkvTWdGb3JtQmFzZSc7XHJcbmltcG9ydCB7UHJvcEludGVyZmFjZX0gZnJvbSAnLi9tYW5hZ2VtZW50L2d1aS9Qcm9wSW50ZXJmYWNlJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICgxKSByZWdpc3RlcnMgYW5kIGltcGxlbWVudHMgaGFuZGxlcnMgZm9yIGV2ZW50cyB0aGF0IGNhbiBiZSBzZXJ2ZWQgbG9jYWxseSBieSBNZ0d1aS5kbGwuXHJcbi8vLyAoMikgcmVxdWVzdHMgc3ViY2xhc3NlcyB0byByZWdpc3RlciB0aGVpciBoYW5kbGVycyAoJ1RlbXBsYXRlIE1ldGhvZCcgZGVzaWduIHBhdHRlcm4pLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgIGFic3RyYWN0IGNsYXNzIEV2ZW50c1Byb2Nlc3NvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLlJlZ2lzdGVySGFuZGxlcnMoKTtcclxuICAgIHRoaXMuUmVnaXN0ZXJTdWJjbGFzc0hhbmRsZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmVnaXN0ZXIgYW5kIGltcGxlbWVudCBoYW5kbGVycyBmb3IgZXZlbnRzIHRoYXQgY2FuIGJlIHNlcnZlZCBsb2NhbGx5IGJ5IE1nR3VpLmRsbC48L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBSZWdpc3RlckhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgRXZlbnRzLktleURvd25FdmVudCA9IHRoaXMucHJvY2Vzc0tleURvd24uYmluZCh0aGlzKTtcclxuXHJcbiAgICBFdmVudHMuTW91c2VEb3duRXZlbnQgPSB0aGlzLnByb2Nlc3NNb3VzZURvd247XHJcbiAgICBFdmVudHMuRGJsQ2xpY2tFdmVudCA9IHRoaXMucHJvY2Vzc0RibENsaWNrO1xyXG4gICAgRXZlbnRzLkNsb3NlRm9ybUV2ZW50ID0gdGhpcy5wcm9jZXNzRm9ybUNsb3NlO1xyXG5cclxuICAgIEV2ZW50cy5Db2x1bW5DbGlja0V2ZW50ID0gdGhpcy5Qcm9jZXNzQ29sdW1uQ2xpY2s7XHJcbiAgfVxyXG5cclxuICAvLyByZXF1ZXN0IHN1YmNsYXNzZXMgdG8gcmVnaXN0ZXIgaGFuZGxlcnMgdGhhdCB0aGV5IHdpbGwgaW1wbGVtZW50ICgnVGVtcGxhdGUgTWV0aG9kJyBkZXNpZ24gcGF0dGVybikuXHJcbiAgYWJzdHJhY3QgUmVnaXN0ZXJTdWJjbGFzc0hhbmRsZXJzKCk7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5QYXNzIGtleWNvZGUgYW5kIG1vZGlmaWVyIHRvIGJyaWRnZSwgYnJpZGdlIHRoZW4gY29udmVydHMgaXQgdG8ga2V5Ym9hcmQgYWN0aW9uIGFuZCBhZGRzIGluIE1nQ29yZS5kbGxcclxuICAvLy8gZXZlbnRzIHF1ZXVlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibW9kaWZpZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImtleUNvZGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0YXJ0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbmRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNhcmV0UG9zXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0ZXh0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpbVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNBY3RDaGFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdWdnZXN0ZWRWYWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiQ29tYm9Jc0Ryb3BEb3duXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoYW5kbGVkXCI+Ym9vbGVhbiB2YXJpYWJsZSBldmVudCBpcyBoYW5kbGVkIG9yIG5vdC48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBvbmx5IGlmIHdlIGhhdmUgaGFuZGxlZCB0aGUgS2V5RG93biBldmVudCAob3RoZXJ3aXNlIHRoZSBDTFIgc2hvdWxkIGhhbmRsZSkuIElmIHRydWUgbWFnaWMgd2lsbCBoYW5kbGUgZWxzZSBDTFIgd2lsbCBoYW5kbGUuPC9yZXR1cm5zPlxyXG4gIHByb2Nlc3NLZXlEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgbW9kaWZpZXI6IE1vZGlmaWVycywga2V5Q29kZTogbnVtYmVyLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nLCBpc0FjdENoYXI6IGJvb2xlYW4sIHN1Z2dlc3RlZFZhbHVlOiBzdHJpbmcsIGhhbmRsZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGxldCBldmVudEhhbmRsZWQ6IGJvb2xlYW4gPSBoYW5kbGVkO1xyXG5cclxuICAgIGxldCBtZ0NvbnRyb2xCYXNlOiBNZ0NvbnRyb2xCYXNlID0gPE1nQ29udHJvbEJhc2U+Z3VpTWdDdHJsO1xyXG4gICAgbGV0IG1nRm9ybUJhc2U6IE1nRm9ybUJhc2UgPSA8TWdGb3JtQmFzZT5ndWlNZ0Zvcm07XHJcblxyXG4gICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLkFkZEtleWJvYXJkRXZlbnQobWdGb3JtQmFzZSwgbWdDb250cm9sQmFzZSwgbW9kaWZpZXIsIGtleUNvZGUsIHN0YXJ0LCBlbmQsIHRleHQsIGlzQWN0Q2hhciwgc3VnZ2VzdGVkVmFsdWUsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0tFWURPV04pO1xyXG5cclxuICAgIHJldHVybiBldmVudEhhbmRsZWQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBGdW5jdGlvbiBoYW5kbGluZyBmb3JtIGNsb3NlIGV2ZW50LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+dHJ1ZSBpZiBldmVudCBpcyBDTFIgaGFuZGxlZCBlbHNlIGZhbHNlLjwvcmV0dXJucz5cclxuICBwcm9jZXNzRm9ybUNsb3NlKGd1aU1nRm9ybTogR3VpTWdGb3JtKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY2xySGFuZGxlZEV2ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgbWdGb3JtQmFzZTogTWdGb3JtQmFzZSA9IDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybTtcclxuXHJcbiAgICBpZiAoTWdGb3JtQmFzZS5TaG91bGRQdXRBY3RPbkZvcm1DbG9zZSgpKVxyXG4gICAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRUYXNrQW5kQ29kZUFuZFJhaXNlZEJ5KG1nRm9ybUJhc2UuZ2V0VGFzaygpLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElUKTtcclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZShtZ0Zvcm1CYXNlLmdldFRhc2soKSwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMT1NFKTtcclxuXHJcbiAgICByZXR1cm4gY2xySGFuZGxlZEV2ZW50O1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkb3ROZXRBcmdzXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxlZnRDbGlja1dhc1ByZXNzZWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBwcm9jZXNzTW91c2VEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgZG90TmV0QXJnczogYW55W10sIGxlZnRDbGlja1dhc1ByZXNzZWQ6IGJvb2xlYW4sIGxpbmU6IG51bWJlciwgb25NdWx0aU1hcms6IGJvb2xlYW4sIGNhblByb2R1Y2VDbGljazogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPmd1aU1nQ3RybDtcclxuXHJcbiAgICBpZiAobWdDb250cm9sID09PSBudWxsKSB7XHJcbiAgICAgIERlYnVnLkFzc2VydChndWlNZ0Zvcm0gIT09IG51bGwpO1xyXG4gICAgICAvLyBBcyBpbiBvbmxpbmUuIGNsaWNraW5nIG9uIGEgZm9ybSByZXN1bHRzIGluIEFDVF9ISVRcclxuICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aFRhc2tBbmRDb2RlQW5kT25NdWx0aU1hcmsoKDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybSkuZ2V0VGFzaygpLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElUKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAobWdDb250cm9sLmlzU3ViZm9ybSgpKSB7XHJcbiAgICAgICAgbWdDb250cm9sLk9uU3ViZm9ybUNsaWNrKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKG1nQ29udHJvbC5SYWlzZUNvbnRyb2xIaXRPbk1vdXNlRG93bihsZWZ0Q2xpY2tXYXNQcmVzc2VkKSkge1xyXG4gICAgICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRDb2RlQW5kTGluZShtZ0NvbnRyb2wsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0hJVCwgbGluZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsZWZ0Q2xpY2tXYXNQcmVzc2VkICYmIGNhblByb2R1Y2VDbGljaykge1xyXG4gICAgICAgICAgLy8gZml4ZWQgYnVnIzkyNzk0MlxyXG4gICAgICAgICAgLy8gd2UgbmV2ZXIgZ2V0IHRvIHRoaXMgbWV0aG9kIHdpdGggdGhlIGNvbnRyb2wgdHlwZSBidXR0b24gJiBjaGVja2JveC5cclxuICAgICAgICAgIC8vIGZvciBidXR0b24gJiBjaGVja2JveCwgd2Ugc2VudCB0aGUgdHJpZ2dlciBNR19BQ1RfV0VCX0NMSUNLIGluIEV2ZW50c01hbmFnZXIuaGFuZGxlTW91c2VVcCgpIHRoYXQgY2FsbFxyXG4gICAgICAgICAgLy8gZnJvbSBzaW11bGF0ZVNlbGVjdGlvbigpXHJcbiAgICAgICAgICAvLyB0aGUgXCJpZlwiIGlzIG9ubHkgZm9yIG1ha2Ugc3VyZSB0aGF0IGlmIHdlIHdpbGwgZ2V0IGl0IChpbiB0aGUgZmV0dXJlKSB3ZSB3aWxsIG5vdCBiZSBzZW50IHRoZSBzYW1lIHRyaWdnZXIgdHdpY2VcclxuICAgICAgICAgIGlmIChtZ0NvbnRyb2wuVHlwZSAhPT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQlVUVE9OICYmIG1nQ29udHJvbC5UeXBlICE9PSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9DSEVDS0JPWCkge1xyXG4gICAgICAgICAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRXaXRoQ3RybEFuZENvZGVBbmRMaW5lKG1nQ29udHJvbCwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQl9DTElDSywgbGluZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cHJvY2VzcyBcImRibGNsaWNrXCIgZXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj50aGUgY29udHJvbCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPiB0aGUgbGluZSBvZiB0aGUgbXVsdGlsaW5lIGNvbnRyb2wgPC9wYXJhbT5cclxuICBwcml2YXRlIHByb2Nlc3NEYmxDbGljayhndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgbWdDb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gPE1nQ29udHJvbEJhc2U+Z3VpTWdDdHJsO1xyXG4gICAgaWYgKCFtZ0NvbnRyb2wuR2V0Q29tcHV0ZWRCb29sZWFuUHJvcGVydHkoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRU5BQkxFRCwgdHJ1ZSwgbGluZSkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICAvLyByYWlzaW5nIHRoZSBpbnRlcm5hbCBldmVudHMgOiBNR19BQ1RfU0VMRUNUIGFuZCBNR19BQ1RfWk9PTSB3YXMgbW92ZWQgdG8gY29tbW9uSGFuZGxlciB1bmRlciB0aGVcclxuICAgIC8vIE1HX0FDVF9XRUJfT05fREJMSUNLIGNhc2UuXHJcbiAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCB0aGVuIHRoZSBiZWhhdmlvciBvZiBvbmxpbmUgYmVjYXVzZSB3ZSBmaXhlZCBRQ1IgIzk5MDgzNiBvbmx5IGluIHJpY2guXHJcbiAgICAvLyBJbiByaWNoLCAxc3QgZGJjbGljayBpcyByYWlzZWQuIFRoZW4gaWYgdGhlcmUgaXMgYSBoYW5kbGVyIG9uIGl0IHdpdGggcHJvcG9nYXRlID0nWUVTJywgb25seSB0aGVuIHRoZSB6b29tL3NlbGVjdFxyXG4gICAgLy8gd2lsbCBiZSByYWlzZWQuIEEgUHJvcGFnYXRlICdOTycgd2lsbCBibG9jayB0aGVtLlxyXG5cclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhDdHJsQW5kQ29kZUFuZExpbmUobWdDb250cm9sLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0VCX09OX0RCTElDSywgbGluZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGhhbmRsZSBDb2x1bW4gQ2xpY2sgZXZlbnQgb24gQ29sdW1uIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlDb2x1bW5DdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkaXJlY3Rpb25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbHVtbkhlYWRlclwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBQcm9jZXNzQ29sdW1uQ2xpY2soZ3VpQ29sdW1uQ3RybDogR3VpTWdDb250cm9sLCBkaXJlY3Rpb246IG51bWJlciwgY29sdW1uSGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBtZ0NvbHVtbkNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSA8TWdDb250cm9sQmFzZT5ndWlDb2x1bW5DdHJsO1xyXG4gICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLkFkZENvbHVtbkNsaWNrRXZlbnQobWdDb2x1bW5Db250cm9sLCBkaXJlY3Rpb24sIGNvbHVtbkhlYWRlcik7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
@@ -1,34 +1,34 @@
1
- import { Commands } from "./Commands";
2
- import { Events } from "./Events";
3
- import { CommandType } from "./GuiEnums";
4
- import { GuiControlPropertyAdapter } from "./management/gui/GuiControlPropertyAdapter";
5
- export class FocusManager {
6
- static async SetFocus(ctrlOrItask, lineOrCtrl, line, activateForm) {
7
- if (ctrlOrItask instanceof GuiControlPropertyAdapter) {
8
- await FocusManager.SetFocus_0(ctrlOrItask, lineOrCtrl);
9
- return;
10
- }
11
- await FocusManager.SetFocus_1(ctrlOrItask, lineOrCtrl, line, activateForm);
12
- }
13
- static async SetFocus_0(ctrl, line) {
14
- await FocusManager.SetFocus(ctrl.getForm().getTask(), ctrl, line, true);
15
- }
16
- static async SetFocus_1(itask, ctrl, line, activateForm) {
17
- let task = itask;
18
- if (task.isAborting())
19
- return;
20
- Events.OnCtrlFocus(itask, ctrl);
21
- if (ctrl !== null) {
22
- if (!await ctrl.isParkable(true))
23
- return;
24
- Commands.addBoolWithLine(CommandType.SET_FOCUS, ctrl, (line >= 0) ? line : ctrl.getDisplayLine(false), activateForm);
25
- }
26
- else {
27
- let formObject = task.IsSubForm
28
- ? task.getForm().getSubFormCtrl()
29
- : task.getForm();
30
- Commands.addBoolWithLine(CommandType.SET_FOCUS, formObject, 0, activateForm);
31
- }
32
- }
33
- }
1
+ import { Commands } from "./Commands";
2
+ import { Events } from "./Events";
3
+ import { CommandType } from "./GuiEnums";
4
+ import { GuiControlPropertyAdapter } from "./management/gui/GuiControlPropertyAdapter";
5
+ export class FocusManager {
6
+ static async SetFocus(ctrlOrItask, lineOrCtrl, line, activateForm) {
7
+ if (ctrlOrItask instanceof GuiControlPropertyAdapter) {
8
+ await FocusManager.SetFocus_0(ctrlOrItask, lineOrCtrl);
9
+ return;
10
+ }
11
+ await FocusManager.SetFocus_1(ctrlOrItask, lineOrCtrl, line, activateForm);
12
+ }
13
+ static async SetFocus_0(ctrl, line) {
14
+ await FocusManager.SetFocus(ctrl.getForm().getTask(), ctrl, line, true);
15
+ }
16
+ static async SetFocus_1(itask, ctrl, line, activateForm) {
17
+ let task = itask;
18
+ if (task.isAborting())
19
+ return;
20
+ Events.OnCtrlFocus(itask, ctrl);
21
+ if (ctrl !== null) {
22
+ if (!await ctrl.isParkable(true))
23
+ return;
24
+ Commands.addBoolWithLine(CommandType.SET_FOCUS, ctrl, (line >= 0) ? line : ctrl.getDisplayLine(false), activateForm);
25
+ }
26
+ else {
27
+ let formObject = task.IsSubForm
28
+ ? task.getForm().getSubFormCtrl()
29
+ : task.getForm();
30
+ Commands.addBoolWithLine(CommandType.SET_FOCUS, formObject, 0, activateForm);
31
+ }
32
+ }
33
+ }
34
34
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9jdXNNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9Gb2N1c01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUd0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFdkYsTUFBTSxPQUFPLFlBQVk7SUFLdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBZ0IsRUFBRSxVQUFlLEVBQUUsSUFBYSxFQUFFLFlBQXNCO1FBQzVGLElBQUksV0FBVyxZQUFZLHlCQUF5QixFQUFFO1lBQ3BELE1BQU0sWUFBWSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkQsT0FBTztTQUNSO1FBQ0QsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFPTyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUErQixFQUFFLElBQVk7UUFDM0UsTUFBTSxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFTTyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFZLEVBQUUsSUFBK0IsRUFBRSxJQUFZLEVBQUUsWUFBcUI7UUFDaEgsSUFBSSxJQUFJLEdBQTZCLEtBQUssQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsT0FBTztRQUVULE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWhDLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDOUIsT0FBTztZQUNULFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUN0SDthQUNJO1lBQ0gsSUFBSSxVQUFVLEdBQVEsSUFBSSxDQUFDLFNBQVM7Z0JBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFO2dCQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRW5CLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQzlFO0lBQ0gsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZHMgfSBmcm9tIFwiLi9Db21tYW5kc1wiO1xyXG5pbXBvcnQgeyBHdWlUYXNrQmFzZSB9IGZyb20gXCIuL21hbmFnZW1lbnQvdGFza3MvR3VpVGFza0Jhc2VcIjtcclxuaW1wb3J0IHsgSVRhc2sgfSBmcm9tIFwiLi9tYW5hZ2VtZW50L3Rhc2tzL0lUYXNrXCI7XHJcbmltcG9ydCB7IEV2ZW50cyB9IGZyb20gXCIuL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBDb21tYW5kVHlwZSB9IGZyb20gXCIuL0d1aUVudW1zXCI7XHJcbmltcG9ydCB7IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIgfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2d1aS9HdWlDb250cm9sUHJvcGVydHlBZGFwdGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgRm9jdXNNYW5hZ2VyXHJcbntcclxuXHJcbiAgc3RhdGljIGFzeW5jIFNldEZvY3VzKGN0cmw6IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIsIGxpbmU6IG51bWJlcik6IFByb21pc2U8dm9pZD47XHJcbiAgc3RhdGljIGFzeW5jIFNldEZvY3VzKGl0YXNrOiBJVGFzaywgY3RybDogR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlciwgbGluZTogbnVtYmVyLCBhY3RpdmF0ZUZvcm06IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+O1xyXG4gIHN0YXRpYyBhc3luYyBTZXRGb2N1cyhjdHJsT3JJdGFzazogYW55LCBsaW5lT3JDdHJsOiBhbnksIGxpbmU/OiBudW1iZXIsIGFjdGl2YXRlRm9ybT86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChjdHJsT3JJdGFzayBpbnN0YW5jZW9mIEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIpIHtcclxuICAgICAgYXdhaXQgRm9jdXNNYW5hZ2VyLlNldEZvY3VzXzAoY3RybE9ySXRhc2ssIGxpbmVPckN0cmwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBhd2FpdCBGb2N1c01hbmFnZXIuU2V0Rm9jdXNfMShjdHJsT3JJdGFzaywgbGluZU9yQ3RybCwgbGluZSwgYWN0aXZhdGVGb3JtKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGZvY3VzIHRvIHRoZSBzcGVjaWZpZWQgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIFNldEZvY3VzXzAoY3RybDogR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlciwgbGluZTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCBGb2N1c01hbmFnZXIuU2V0Rm9jdXMoY3RybC5nZXRGb3JtKCkuZ2V0VGFzaygpLCBjdHJsLCBsaW5lLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGZvY3VzIHRvIHRoZSBzcGVjaWZpZWQgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpdGFza1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFjdGl2YXRlRm9ybVwiPmFjdGl2YXRlIGEgZm9ybSBvciBub3Q8L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIFNldEZvY3VzXzEoaXRhc2s6IElUYXNrLCBjdHJsOiBHdWlDb250cm9sUHJvcGVydHlBZGFwdGVyLCBsaW5lOiBudW1iZXIsIGFjdGl2YXRlRm9ybTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHRhc2s6IEd1aVRhc2tCYXNlID0gPEd1aVRhc2tCYXNlPml0YXNrO1xyXG4gICAgaWYgKHRhc2suaXNBYm9ydGluZygpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgRXZlbnRzLk9uQ3RybEZvY3VzKGl0YXNrLCBjdHJsKTtcclxuXHJcbiAgICBpZiAoY3RybCAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoIWF3YWl0IGN0cmwuaXNQYXJrYWJsZSh0cnVlKSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIENvbW1hbmRzLmFkZEJvb2xXaXRoTGluZShDb21tYW5kVHlwZS5TRVRfRk9DVVMsIGN0cmwsIChsaW5lID49IDApID8gbGluZSA6IGN0cmwuZ2V0RGlzcGxheUxpbmUoZmFsc2UpLCBhY3RpdmF0ZUZvcm0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBmb3JtT2JqZWN0OiBhbnkgPSB0YXNrLklzU3ViRm9ybVxyXG4gICAgICAgID8gdGFzay5nZXRGb3JtKCkuZ2V0U3ViRm9ybUN0cmwoKVxyXG4gICAgICAgIDogdGFzay5nZXRGb3JtKCk7XHJcblxyXG4gICAgICBDb21tYW5kcy5hZGRCb29sV2l0aExpbmUoQ29tbWFuZFR5cGUuU0VUX0ZPQ1VTLCBmb3JtT2JqZWN0LCAwLCBhY3RpdmF0ZUZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,68 @@
1
+ import { Int32 } from "@magic-xpa/mscorelib";
2
+ export class GuiConstants {
3
+ static DEFAULT_LIST_VALUE = -1;
4
+ static DEFAULT_VALUE_INT = -999999;
5
+ static ALL_LINES = -1;
6
+ static NO_ROW_SELECTED = Int32.MinValue;
7
+ static RIA_MOBILE_UNSUPPORTED_CONTROL_ERROR = "control is not supported for mobile RIA deployment";
8
+ static RIA_MOBILE_UNSUPPORTED_CONTROL_ERROR_WINDOW_6 = "control is not supported for mobile RIA deployment on Window 6 standard";
9
+ static TOOL_HEIGHT = 17;
10
+ static TOOL_WIDTH = 16;
11
+ static STR_DISPLAY_MEMBER = "DisplayMember";
12
+ static STR_VALUE_MEMBER = "ValueMember";
13
+ static PARENT_TYPE_TASK = 'T';
14
+ static PARENT_TYPE_FORM = 'F';
15
+ static PARENT_TYPE_CONTROL = 'C';
16
+ static GENERIC_PROPERTY_BASE_ID = 10000;
17
+ static TABBING_CYCLE_REMAIN_IN_CURRENT_RECORD = 'R';
18
+ static TABBING_CYCLE_MOVE_TO_NEXT_RECORD = 'N';
19
+ static TABBING_CYCLE_MOVE_TO_PARENT_TASK = 'P';
20
+ static BLOB_PREFIX_ELEMENTS_COUNT = 5;
21
+ static KEY_DOWN = 40;
22
+ static KEY_RIGHT = 39;
23
+ static KEY_UP = 38;
24
+ static KEY_LEFT = 37;
25
+ static KEY_HOME = 36;
26
+ static KEY_END = 35;
27
+ static KEY_PG_DOWN = 34;
28
+ static KEY_PG_UP = 33;
29
+ static KEY_SPACE = 32;
30
+ static KEY_F12 = 123;
31
+ static KEY_F1 = 112;
32
+ static KEY_9 = 57;
33
+ static KEY_0 = 48;
34
+ static KEY_Z = 90;
35
+ static KEY_A = 65;
36
+ static KEY_DELETE = 46;
37
+ static KEY_INSERT = 45;
38
+ static KEY_BACKSPACE = 8;
39
+ static KEY_TAB = 9;
40
+ static KEY_RETURN = 13;
41
+ static KEY_ESC = 27;
42
+ static KEY_CAPS_LOCK = 20;
43
+ static KEY_POINT1 = 190;
44
+ static KEY_POINT2 = 110;
45
+ static KEY_COMMA = 188;
46
+ static KEY_CTRL = 17;
47
+ static KEY_ALT = 18;
48
+ static LOGON_CAPTION = "Logon - ";
49
+ static ENTER_UID_TTL = "Please enter your user ID and password.";
50
+ static GROUP_BOX_TITLE_MAX_SIZE = 62;
51
+ static MSG_CAPTION_MAX_SIZE = 56;
52
+ static LABEL_CAPTION_MAX_SIZE = 9;
53
+ static PASSWORD_CAPTION_MAX_SIZE = 19;
54
+ static REPLACE_ALL_TEXT = -1;
55
+ static STR_LOGON_RTL = "LogonRTL";
56
+ static STR_LOGO_WIN_ICON_URL = "LogonWindowIconURL";
57
+ static STR_LOGON_IMAGE_URL = "LogonImageURL";
58
+ static STR_LOGON_WIN_TITLE = "LogonWindowTitle";
59
+ static STR_LOGON_GROUP_TITLE = "LogonGroupTitle";
60
+ static STR_LOGON_MSG_CAPTION = "LogonMessageCaption";
61
+ static STR_LOGON_USER_ID_CAPTION = "LogonUserIDCaption";
62
+ static STR_LOGON_PASS_CAPTION = "LogonPasswordCaption";
63
+ static STR_LOGON_OK_CAPTION = "LogonOKCaption";
64
+ static STR_LOGON_CANCEL_CAPTION = "LogonCancelCaption";
65
+ constructor() {
66
+ }
67
+ }
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9HdWlDb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTNDLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLE1BQU0sQ0FBQyxrQkFBa0IsR0FBVyxDQUFDLENBQUMsQ0FBQztJQUN2QyxNQUFNLENBQUMsaUJBQWlCLEdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDM0MsTUFBTSxDQUFDLFNBQVMsR0FBVyxDQUFDLENBQUMsQ0FBQztJQUM5QixNQUFNLENBQUMsZUFBZSxHQUFXLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFHaEQsTUFBTSxDQUFDLG9DQUFvQyxHQUFXLG9EQUFvRCxDQUFDO0lBQzNHLE1BQU0sQ0FBQyw2Q0FBNkMsR0FBVyx5RUFBeUUsQ0FBQztJQUN6SSxNQUFNLENBQUMsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUNoQyxNQUFNLENBQUMsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUcvQixNQUFNLENBQUMsa0JBQWtCLEdBQVcsZUFBZSxDQUFDO0lBQ3BELE1BQU0sQ0FBQyxnQkFBZ0IsR0FBVyxhQUFhLENBQUM7SUFHaEQsTUFBTSxDQUFDLGdCQUFnQixHQUFXLEdBQUcsQ0FBQztJQUN0QyxNQUFNLENBQUMsZ0JBQWdCLEdBQVcsR0FBRyxDQUFDO0lBQ3RDLE1BQU0sQ0FBQyxtQkFBbUIsR0FBVyxHQUFHLENBQUM7SUFJekMsTUFBTSxDQUFDLHdCQUF3QixHQUFXLEtBQUssQ0FBQztJQUdoRCxNQUFNLENBQUMsc0NBQXNDLEdBQVcsR0FBRyxDQUFDO0lBQzVELE1BQU0sQ0FBQyxpQ0FBaUMsR0FBVyxHQUFHLENBQUM7SUFDdkQsTUFBTSxDQUFDLGlDQUFpQyxHQUFXLEdBQUcsQ0FBQztJQUd2RCxNQUFNLENBQUMsMEJBQTBCLEdBQVcsQ0FBQyxDQUFDO0lBRzlDLE1BQU0sQ0FBQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQzdCLE1BQU0sQ0FBQyxTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQzlCLE1BQU0sQ0FBQyxNQUFNLEdBQVcsRUFBRSxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQzdCLE1BQU0sQ0FBQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQzdCLE1BQU0sQ0FBQyxPQUFPLEdBQVcsRUFBRSxDQUFDO0lBQzVCLE1BQU0sQ0FBQyxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQzlCLE1BQU0sQ0FBQyxTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQzlCLE1BQU0sQ0FBQyxPQUFPLEdBQVcsR0FBRyxDQUFDO0lBQzdCLE1BQU0sQ0FBQyxNQUFNLEdBQVcsR0FBRyxDQUFDO0lBQzVCLE1BQU0sQ0FBQyxLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxhQUFhLEdBQVcsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sQ0FBQyxPQUFPLEdBQVcsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxPQUFPLEdBQVcsRUFBRSxDQUFDO0lBQzVCLE1BQU0sQ0FBQyxhQUFhLEdBQVcsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sQ0FBQyxVQUFVLEdBQVcsR0FBRyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxVQUFVLEdBQVcsR0FBRyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxTQUFTLEdBQVcsR0FBRyxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxRQUFRLEdBQVksRUFBRSxDQUFDO0lBQzlCLE1BQU0sQ0FBQyxPQUFPLEdBQVksRUFBRSxDQUFDO0lBRzdCLE1BQU0sQ0FBQyxhQUFhLEdBQVcsVUFBVSxDQUFDO0lBQzFDLE1BQU0sQ0FBQyxhQUFhLEdBQVcseUNBQXlDLENBQUM7SUFFekUsTUFBTSxDQUFDLHdCQUF3QixHQUFXLEVBQUUsQ0FBQztJQUM3QyxNQUFNLENBQUMsb0JBQW9CLEdBQVcsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sQ0FBQyxzQkFBc0IsR0FBVyxDQUFDLENBQUM7SUFDMUMsTUFBTSxDQUFDLHlCQUF5QixHQUFXLEVBQUUsQ0FBQztJQUU5QyxNQUFNLENBQUMsZ0JBQWdCLEdBQVcsQ0FBQyxDQUFDLENBQUM7SUFHckMsTUFBTSxDQUFDLGFBQWEsR0FBVyxVQUFVLENBQUM7SUFDMUMsTUFBTSxDQUFDLHFCQUFxQixHQUFXLG9CQUFvQixDQUFDO0lBQzVELE1BQU0sQ0FBQyxtQkFBbUIsR0FBVyxlQUFlLENBQUM7SUFDckQsTUFBTSxDQUFDLG1CQUFtQixHQUFXLGtCQUFrQixDQUFDO0lBQ3hELE1BQU0sQ0FBQyxxQkFBcUIsR0FBVyxpQkFBaUIsQ0FBQztJQUN6RCxNQUFNLENBQUMscUJBQXFCLEdBQVcscUJBQXFCLENBQUM7SUFDN0QsTUFBTSxDQUFDLHlCQUF5QixHQUFXLG9CQUFvQixDQUFDO0lBQ2hFLE1BQU0sQ0FBQyxzQkFBc0IsR0FBVyxzQkFBc0IsQ0FBQztJQUMvRCxNQUFNLENBQUMsb0JBQW9CLEdBQVcsZ0JBQWdCLENBQUM7SUFDdkQsTUFBTSxDQUFDLHdCQUF3QixHQUFXLG9CQUFvQixDQUFDO0lBRS9EO0lBQ0EsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50MzJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEd1aUNvbnN0YW50cyB7XHJcbiAgc3RhdGljIERFRkFVTFRfTElTVF9WQUxVRTogbnVtYmVyID0gLTE7XHJcbiAgc3RhdGljIERFRkFVTFRfVkFMVUVfSU5UOiBudW1iZXIgPSAtOTk5OTk5O1xyXG4gIHN0YXRpYyBBTExfTElORVM6IG51bWJlciA9IC0xO1xyXG4gIHN0YXRpYyBOT19ST1dfU0VMRUNURUQ6IG51bWJlciA9IEludDMyLk1pblZhbHVlOyAvLyBubyByb3cgc2VsZWN0ZWQgLSBmb3IgZW1wdHkgZGF0YXZpZXdcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlJDIG1vYmlsZSB1bnN1cHBvcnRlZCBjb250cm9scyBtZXNzYWdlIHN0cmluZzwvc3VtbWFyeT5cclxuICBzdGF0aWMgUklBX01PQklMRV9VTlNVUFBPUlRFRF9DT05UUk9MX0VSUk9SOiBzdHJpbmcgPSBcImNvbnRyb2wgaXMgbm90IHN1cHBvcnRlZCBmb3IgbW9iaWxlIFJJQSBkZXBsb3ltZW50XCI7XHJcbiAgc3RhdGljIFJJQV9NT0JJTEVfVU5TVVBQT1JURURfQ09OVFJPTF9FUlJPUl9XSU5ET1dfNjogc3RyaW5nID0gXCJjb250cm9sIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG1vYmlsZSBSSUEgZGVwbG95bWVudCBvbiBXaW5kb3cgNiBzdGFuZGFyZFwiO1xyXG4gIHN0YXRpYyBUT09MX0hFSUdIVDogbnVtYmVyID0gMTc7XHJcbiAgc3RhdGljIFRPT0xfV0lEVEg6IG51bWJlciA9IDE2O1xyXG5cclxuICAvLy8gPHN1bW1hcnk+RGF0YSBCaW5kaW5nIGNvbnN0YW50czwvc3VtbWFyeT5cclxuICBzdGF0aWMgU1RSX0RJU1BMQVlfTUVNQkVSOiBzdHJpbmcgPSBcIkRpc3BsYXlNZW1iZXJcIjtcclxuICBzdGF0aWMgU1RSX1ZBTFVFX01FTUJFUjogc3RyaW5nID0gXCJWYWx1ZU1lbWJlclwiO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+cGFyZW50IHR5cGU8L3N1bW1hcnk+XHJcbiAgc3RhdGljIFBBUkVOVF9UWVBFX1RBU0s6IHN0cmluZyA9ICdUJztcclxuICBzdGF0aWMgUEFSRU5UX1RZUEVfRk9STTogc3RyaW5nID0gJ0YnO1xyXG4gIHN0YXRpYyBQQVJFTlRfVFlQRV9DT05UUk9MOiBzdHJpbmcgPSAnQyc7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5wcm9wZXJ0aWVzPC9zdW1tYXJ5PlxyXG5cclxuICBzdGF0aWMgR0VORVJJQ19QUk9QRVJUWV9CQVNFX0lEOiBudW1iZXIgPSAxMDAwMDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnRhYmJpbmcgY3ljbGU8L3N1bW1hcnk+XHJcbiAgc3RhdGljIFRBQkJJTkdfQ1lDTEVfUkVNQUlOX0lOX0NVUlJFTlRfUkVDT1JEOiBzdHJpbmcgPSAnUic7XHJcbiAgc3RhdGljIFRBQkJJTkdfQ1lDTEVfTU9WRV9UT19ORVhUX1JFQ09SRDogc3RyaW5nID0gJ04nO1xyXG4gIHN0YXRpYyBUQUJCSU5HX0NZQ0xFX01PVkVfVE9fUEFSRU5UX1RBU0s6IHN0cmluZyA9ICdQJztcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmJsb2JzPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBCTE9CX1BSRUZJWF9FTEVNRU5UU19DT1VOVDogbnVtYmVyID0gNTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmtleSBjb2Rlczwvc3VtbWFyeT5cclxuICBzdGF0aWMgS0VZX0RPV046IG51bWJlciA9IDQwO1xyXG4gIHN0YXRpYyBLRVlfUklHSFQ6IG51bWJlciA9IDM5O1xyXG4gIHN0YXRpYyBLRVlfVVA6IG51bWJlciA9IDM4O1xyXG4gIHN0YXRpYyBLRVlfTEVGVDogbnVtYmVyID0gMzc7XHJcbiAgc3RhdGljIEtFWV9IT01FOiBudW1iZXIgPSAzNjtcclxuICBzdGF0aWMgS0VZX0VORDogbnVtYmVyID0gMzU7XHJcbiAgc3RhdGljIEtFWV9QR19ET1dOOiBudW1iZXIgPSAzNDtcclxuICBzdGF0aWMgS0VZX1BHX1VQOiBudW1iZXIgPSAzMztcclxuICBzdGF0aWMgS0VZX1NQQUNFOiBudW1iZXIgPSAzMjtcclxuICBzdGF0aWMgS0VZX0YxMjogbnVtYmVyID0gMTIzO1xyXG4gIHN0YXRpYyBLRVlfRjE6IG51bWJlciA9IDExMjtcclxuICBzdGF0aWMgS0VZXzk6IG51bWJlciA9IDU3O1xyXG4gIHN0YXRpYyBLRVlfMDogbnVtYmVyID0gNDg7XHJcbiAgc3RhdGljIEtFWV9aOiBudW1iZXIgPSA5MDtcclxuICBzdGF0aWMgS0VZX0E6IG51bWJlciA9IDY1O1xyXG4gIHN0YXRpYyBLRVlfREVMRVRFOiBudW1iZXIgPSA0NjtcclxuICBzdGF0aWMgS0VZX0lOU0VSVDogbnVtYmVyID0gNDU7XHJcbiAgc3RhdGljIEtFWV9CQUNLU1BBQ0U6IG51bWJlciA9IDg7XHJcbiAgc3RhdGljIEtFWV9UQUI6IG51bWJlciA9IDk7XHJcbiAgc3RhdGljIEtFWV9SRVRVUk46IG51bWJlciA9IDEzO1xyXG4gIHN0YXRpYyBLRVlfRVNDOiBudW1iZXIgPSAyNztcclxuICBzdGF0aWMgS0VZX0NBUFNfTE9DSzogbnVtYmVyID0gMjA7XHJcbiAgc3RhdGljIEtFWV9QT0lOVDE6IG51bWJlciA9IDE5MDtcclxuICBzdGF0aWMgS0VZX1BPSU5UMjogbnVtYmVyID0gMTEwO1xyXG4gIHN0YXRpYyBLRVlfQ09NTUE6IG51bWJlciA9IDE4ODtcclxuICBzdGF0aWMgS0VZX0NUUkwgOiBudW1iZXIgPSAxNztcclxuICBzdGF0aWMgS0VZX0FMVCA6IG51bWJlciA9IDE4O1xyXG5cclxuICAvLyBhdXRoZW50aWNhdGlvblxyXG4gIHN0YXRpYyBMT0dPTl9DQVBUSU9OOiBzdHJpbmcgPSBcIkxvZ29uIC0gXCI7XHJcbiAgc3RhdGljIEVOVEVSX1VJRF9UVEw6IHN0cmluZyA9IFwiUGxlYXNlIGVudGVyIHlvdXIgdXNlciBJRCBhbmQgcGFzc3dvcmQuXCI7XHJcblxyXG4gIHN0YXRpYyBHUk9VUF9CT1hfVElUTEVfTUFYX1NJWkU6IG51bWJlciA9IDYyO1xyXG4gIHN0YXRpYyBNU0dfQ0FQVElPTl9NQVhfU0laRTogbnVtYmVyID0gNTY7XHJcbiAgc3RhdGljIExBQkVMX0NBUFRJT05fTUFYX1NJWkU6IG51bWJlciA9IDk7XHJcbiAgc3RhdGljIFBBU1NXT1JEX0NBUFRJT05fTUFYX1NJWkU6IG51bWJlciA9IDE5O1xyXG5cclxuICBzdGF0aWMgUkVQTEFDRV9BTExfVEVYVDogbnVtYmVyID0gLTE7XHJcblxyXG4gIC8vIGV4ZWN1dGlvbiBwcm9wZXJ0eSBuYW1lcyB1c2VkIGZvciBjdXN0b21pemluZyBsb2dvbiBzY3JlZW5cclxuICBzdGF0aWMgU1RSX0xPR09OX1JUTDogc3RyaW5nID0gXCJMb2dvblJUTFwiO1xyXG4gIHN0YXRpYyBTVFJfTE9HT19XSU5fSUNPTl9VUkw6IHN0cmluZyA9IFwiTG9nb25XaW5kb3dJY29uVVJMXCI7XHJcbiAgc3RhdGljIFNUUl9MT0dPTl9JTUFHRV9VUkw6IHN0cmluZyA9IFwiTG9nb25JbWFnZVVSTFwiO1xyXG4gIHN0YXRpYyBTVFJfTE9HT05fV0lOX1RJVExFOiBzdHJpbmcgPSBcIkxvZ29uV2luZG93VGl0bGVcIjtcclxuICBzdGF0aWMgU1RSX0xPR09OX0dST1VQX1RJVExFOiBzdHJpbmcgPSBcIkxvZ29uR3JvdXBUaXRsZVwiO1xyXG4gIHN0YXRpYyBTVFJfTE9HT05fTVNHX0NBUFRJT046IHN0cmluZyA9IFwiTG9nb25NZXNzYWdlQ2FwdGlvblwiO1xyXG4gIHN0YXRpYyBTVFJfTE9HT05fVVNFUl9JRF9DQVBUSU9OOiBzdHJpbmcgPSBcIkxvZ29uVXNlcklEQ2FwdGlvblwiO1xyXG4gIHN0YXRpYyBTVFJfTE9HT05fUEFTU19DQVBUSU9OOiBzdHJpbmcgPSBcIkxvZ29uUGFzc3dvcmRDYXB0aW9uXCI7XHJcbiAgc3RhdGljIFNUUl9MT0dPTl9PS19DQVBUSU9OOiBzdHJpbmcgPSBcIkxvZ29uT0tDYXB0aW9uXCI7XHJcbiAgc3RhdGljIFNUUl9MT0dPTl9DQU5DRUxfQ0FQVElPTjogc3RyaW5nID0gXCJMb2dvbkNhbmNlbENhcHRpb25cIjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==