turbogui-angular 7.0.0 → 8.0.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 (150) hide show
  1. package/esm2020/main/controller/browser.service.mjs +48 -0
  2. package/esm2020/main/controller/dialog.service.mjs +324 -0
  3. package/esm2020/main/controller/globalerror.service.mjs +68 -0
  4. package/esm2020/main/controller/http.service.mjs +70 -0
  5. package/esm2020/main/controller/localization.service.mjs +22 -0
  6. package/esm2020/main/controller/notification.service.mjs +56 -0
  7. package/esm2020/main/controller/user.service.mjs +124 -0
  8. package/esm2020/main/controller/views.service.mjs +113 -0
  9. package/esm2020/main/model/modules/turbogui-angular.module.mjs +142 -0
  10. package/esm2020/main/view/animations/fade.animation.mjs +35 -0
  11. package/esm2020/main/view/components/busy-state-base/busy-state-base.component.mjs +38 -0
  12. package/esm2020/main/view/components/button-base/button-base.component.mjs +180 -0
  13. package/esm2020/main/view/components/button-container/button-container.component.mjs +34 -0
  14. package/esm2020/main/view/components/button-image/button-image.component.mjs +47 -0
  15. package/esm2020/main/view/components/dialog-error/dialog-error.component.mjs +41 -0
  16. package/esm2020/main/view/components/dialog-multiple-option/dialog-multiple-option.component.mjs +38 -0
  17. package/esm2020/main/view/components/dialog-single-option/dialog-single-option.component.mjs +41 -0
  18. package/esm2020/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.mjs +112 -0
  19. package/esm2020/main/view/components/dialog-two-option/dialog-two-option.component.mjs +42 -0
  20. package/{esm2015/main/view/components/views-container/views-container.component.js → esm2020/main/view/components/views-container/views-container.component.mjs} +15 -13
  21. package/esm2020/main/view/directives/AutoFocusOnDisplayDirective.mjs +39 -0
  22. package/esm2020/main/view/directives/AutoSelectTextOnFocusDirective.mjs +39 -0
  23. package/esm2020/main/view/directives/ElementCreatedDirective.mjs +42 -0
  24. package/esm2020/main/view/directives/ElementDestroyedDirective.mjs +42 -0
  25. package/{esm2015/public_api.js → esm2020/public_api.mjs} +1 -1
  26. package/esm2020/turbogui-angular.mjs +5 -0
  27. package/fesm2015/turbogui-angular.mjs +1953 -0
  28. package/fesm2015/turbogui-angular.mjs.map +1 -0
  29. package/{fesm2015/turbogui-angular.js → fesm2020/turbogui-angular.mjs} +368 -298
  30. package/fesm2020/turbogui-angular.mjs.map +1 -0
  31. package/main/controller/browser.service.d.ts +3 -8
  32. package/main/controller/browser.service.d.ts.map +1 -1
  33. package/main/controller/dialog.service.d.ts +3 -8
  34. package/main/controller/dialog.service.d.ts.map +1 -1
  35. package/main/controller/globalerror.service.d.ts +3 -0
  36. package/main/controller/globalerror.service.d.ts.map +1 -1
  37. package/main/controller/http.service.d.ts +3 -8
  38. package/main/controller/http.service.d.ts.map +1 -1
  39. package/main/controller/localization.service.d.ts +3 -8
  40. package/main/controller/localization.service.d.ts.map +1 -1
  41. package/main/controller/notification.service.d.ts +3 -8
  42. package/main/controller/notification.service.d.ts.map +1 -1
  43. package/main/controller/user.service.d.ts +3 -8
  44. package/main/controller/user.service.d.ts.map +1 -1
  45. package/main/controller/views.service.d.ts +3 -0
  46. package/main/controller/views.service.d.ts.map +1 -1
  47. package/main/model/modules/turbogui-angular.module.d.ts +23 -8
  48. package/main/model/modules/turbogui-angular.module.d.ts.map +1 -1
  49. package/main/view/animations/fade.animation.d.ts +3 -8
  50. package/main/view/animations/fade.animation.d.ts.map +1 -1
  51. package/main/view/components/busy-state-base/busy-state-base.component.d.ts +3 -8
  52. package/main/view/components/busy-state-base/busy-state-base.component.d.ts.map +1 -1
  53. package/main/view/components/button-base/button-base.component.d.ts +3 -0
  54. package/main/view/components/button-base/button-base.component.d.ts.map +1 -1
  55. package/main/view/components/button-container/button-container.component.d.ts +3 -8
  56. package/main/view/components/button-container/button-container.component.d.ts.map +1 -1
  57. package/main/view/components/button-image/button-image.component.d.ts +3 -0
  58. package/main/view/components/button-image/button-image.component.d.ts.map +1 -1
  59. package/main/view/components/dialog-error/dialog-error.component.d.ts +3 -8
  60. package/main/view/components/dialog-error/dialog-error.component.d.ts.map +1 -1
  61. package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts +3 -8
  62. package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts.map +1 -1
  63. package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts +3 -8
  64. package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts.map +1 -1
  65. package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts +3 -8
  66. package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts.map +1 -1
  67. package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts +3 -8
  68. package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts.map +1 -1
  69. package/main/view/components/views-container/views-container.component.d.ts +3 -0
  70. package/main/view/components/views-container/views-container.component.d.ts.map +1 -1
  71. package/main/view/directives/AutoFocusOnDisplayDirective.d.ts +3 -0
  72. package/main/view/directives/AutoFocusOnDisplayDirective.d.ts.map +1 -1
  73. package/main/view/directives/AutoSelectTextOnFocusDirective.d.ts +3 -0
  74. package/main/view/directives/AutoSelectTextOnFocusDirective.d.ts.map +1 -1
  75. package/main/view/directives/ElementCreatedDirective.d.ts +3 -0
  76. package/main/view/directives/ElementCreatedDirective.d.ts.map +1 -1
  77. package/main/view/directives/ElementDestroyedDirective.d.ts +3 -0
  78. package/main/view/directives/ElementDestroyedDirective.d.ts.map +1 -1
  79. package/package.json +24 -12
  80. package/turbogui-angular.d.ts +1 -2
  81. package/turbogui-angular.d.ts.map +1 -1
  82. package/bundles/turbogui-angular.umd.js +0 -2431
  83. package/bundles/turbogui-angular.umd.js.map +0 -1
  84. package/esm2015/main/controller/browser.service.js +0 -48
  85. package/esm2015/main/controller/dialog.service.js +0 -329
  86. package/esm2015/main/controller/globalerror.service.js +0 -65
  87. package/esm2015/main/controller/http.service.js +0 -70
  88. package/esm2015/main/controller/localization.service.js +0 -19
  89. package/esm2015/main/controller/notification.service.js +0 -53
  90. package/esm2015/main/controller/user.service.js +0 -125
  91. package/esm2015/main/controller/views.service.js +0 -113
  92. package/esm2015/main/model/modules/turbogui-angular.module.js +0 -93
  93. package/esm2015/main/view/animations/fade.animation.js +0 -32
  94. package/esm2015/main/view/components/busy-state-base/busy-state-base.component.js +0 -39
  95. package/esm2015/main/view/components/button-base/button-base.component.js +0 -149
  96. package/esm2015/main/view/components/button-container/button-container.component.js +0 -35
  97. package/esm2015/main/view/components/button-image/button-image.component.js +0 -46
  98. package/esm2015/main/view/components/dialog-error/dialog-error.component.js +0 -39
  99. package/esm2015/main/view/components/dialog-multiple-option/dialog-multiple-option.component.js +0 -36
  100. package/esm2015/main/view/components/dialog-single-option/dialog-single-option.component.js +0 -39
  101. package/esm2015/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.js +0 -108
  102. package/esm2015/main/view/components/dialog-two-option/dialog-two-option.component.js +0 -40
  103. package/esm2015/main/view/directives/AutoFocusOnDisplayDirective.js +0 -40
  104. package/esm2015/main/view/directives/AutoSelectTextOnFocusDirective.js +0 -39
  105. package/esm2015/main/view/directives/ElementCreatedDirective.js +0 -38
  106. package/esm2015/main/view/directives/ElementDestroyedDirective.js +0 -38
  107. package/esm2015/turbogui-angular.js +0 -7
  108. package/fesm2015/turbogui-angular.js.map +0 -1
  109. package/main/controller/browser.service.ngfactory.d.ts.map +0 -1
  110. package/main/controller/dialog.service.ngfactory.d.ts.map +0 -1
  111. package/main/controller/globalerror.service.ngfactory.d.ts.map +0 -1
  112. package/main/controller/http.service.ngfactory.d.ts.map +0 -1
  113. package/main/controller/localization.service.ngfactory.d.ts.map +0 -1
  114. package/main/controller/notification.service.ngfactory.d.ts.map +0 -1
  115. package/main/controller/user.service.ngfactory.d.ts.map +0 -1
  116. package/main/controller/views.service.ngfactory.d.ts.map +0 -1
  117. package/main/model/modules/turbogui-angular.module.ngfactory.d.ts.map +0 -1
  118. package/main/view/animations/fade.animation.ngfactory.d.ts.map +0 -1
  119. package/main/view/components/busy-state-base/busy-state-base.component.ngfactory.d.ts.map +0 -1
  120. package/main/view/components/busy-state-base/busy-state-base.component.scss.shim.ngstyle.d.ts.map +0 -1
  121. package/main/view/components/button-container/button-container.component.ngfactory.d.ts.map +0 -1
  122. package/main/view/components/button-container/button-container.component.scss.shim.ngstyle.d.ts.map +0 -1
  123. package/main/view/components/button-image/button-image.component.ngfactory.d.ts.map +0 -1
  124. package/main/view/components/button-image/button-image.component.scss.shim.ngstyle.d.ts.map +0 -1
  125. package/main/view/components/dialog-error/dialog-error.component.ngfactory.d.ts.map +0 -1
  126. package/main/view/components/dialog-error/dialog-error.component.scss.shim.ngstyle.d.ts.map +0 -1
  127. package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.ngfactory.d.ts.map +0 -1
  128. package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.scss.shim.ngstyle.d.ts.map +0 -1
  129. package/main/view/components/dialog-single-option/dialog-single-option.component.ngfactory.d.ts.map +0 -1
  130. package/main/view/components/dialog-single-option/dialog-single-option.component.scss.shim.ngstyle.d.ts.map +0 -1
  131. package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.ngfactory.d.ts.map +0 -1
  132. package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.scss.shim.ngstyle.d.ts.map +0 -1
  133. package/main/view/components/dialog-two-option/dialog-two-option.component.ngfactory.d.ts.map +0 -1
  134. package/main/view/components/dialog-two-option/dialog-two-option.component.scss.shim.ngstyle.d.ts.map +0 -1
  135. package/main/view/components/views-container/views-container.component.ngfactory.d.ts.map +0 -1
  136. package/main/view/components/views-container/views-container.component.scss.shim.ngstyle.d.ts.map +0 -1
  137. package/main/view/directives/AutoFocusOnDisplayDirective.ngfactory.d.ts.map +0 -1
  138. package/main/view/directives/AutoSelectTextOnFocusDirective.ngfactory.d.ts.map +0 -1
  139. package/main/view/directives/ElementCreatedDirective.ngfactory.d.ts.map +0 -1
  140. package/main/view/directives/ElementDestroyedDirective.ngfactory.d.ts.map +0 -1
  141. package/turbogui-angular.metadata.json +0 -1
  142. /package/{esm2015/main/controller/httpservice/HTTPServiceGetRequest.js → esm2020/main/controller/httpservice/HTTPServiceGetRequest.mjs} +0 -0
  143. /package/{esm2015/main/controller/httpservice/HTTPServicePostRequest.js → esm2020/main/controller/httpservice/HTTPServicePostRequest.mjs} +0 -0
  144. /package/{esm2015/main/managers/DelayedMethodCallManager.js → esm2020/main/managers/DelayedMethodCallManager.mjs} +0 -0
  145. /package/{esm2015/main/model/classes/GUINotification.js → esm2020/main/model/classes/GUINotification.mjs} +0 -0
  146. /package/{esm2015/main/model/classes/View.js → esm2020/main/model/classes/View.mjs} +0 -0
  147. /package/{esm2015/main/model/classes/ViewModel.js → esm2020/main/model/classes/ViewModel.mjs} +0 -0
  148. /package/{esm2015/main/model/classes/ViewService.js → esm2020/main/model/classes/ViewService.mjs} +0 -0
  149. /package/{esm2015/main/view/components/dialog-base/dialog-base.component.js → esm2020/main/view/components/dialog-base/dialog-base.component.mjs} +0 -0
  150. /package/{esm2015/main/view/components/dialog-options-base/dialog-options-base.component.js → esm2020/main/view/components/dialog-options-base/dialog-options-base.component.mjs} +0 -0
@@ -1,329 +0,0 @@
1
- /**
2
- * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
- *
4
- * Website : -> http://www.turbogui.org
5
- * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
- * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
- * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
- */
9
- import { ArrayUtils, NumericUtils } from 'turbocommons-ts';
10
- import { Injectable, ComponentFactoryResolver, Injector, ApplicationRef, RendererFactory2 } from '@angular/core';
11
- import { MatDialog } from '@angular/material/dialog';
12
- import { MatSnackBar } from '@angular/material/snack-bar';
13
- import { BusyStateBaseComponent } from '../view/components/busy-state-base/busy-state-base.component';
14
- import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';
15
- /**
16
- * Manages the application modal and non modal floating elements
17
- */
18
- export class DialogService {
19
- constructor(rendererFactory, matSnackBar, matDialog, injector, applicationRef, componentFactoryResolver) {
20
- this.matSnackBar = matSnackBar;
21
- this.matDialog = matDialog;
22
- this.injector = injector;
23
- this.applicationRef = applicationRef;
24
- this.componentFactoryResolver = componentFactoryResolver;
25
- /**
26
- * Used to modify the busy state component that is shown by default by the addModalBusyState() method.
27
- *
28
- * @see this.addModalBusyState()
29
- */
30
- this.customBusyStateComponentClass = BusyStateBaseComponent;
31
- /**
32
- * Check public getter for docs
33
- */
34
- this._isEnabled = true;
35
- /**
36
- * Tells if the main application is currently showing a busy state that blocks all user interaction
37
- */
38
- this._isShowingBusyState = false;
39
- /**
40
- * A reference to the modal busy state component that is initialized only the first time it is called.
41
- *
42
- * (To append the busy state dynamically, we use the Portal concept from the angular material library)
43
- */
44
- this._componentPortal = null;
45
- /**
46
- * A reference to the modal busy state container where the component will be added
47
- */
48
- this._modalBusyStateHost = null;
49
- /**
50
- * Tells if the manager is currently showing a snackbar element or not
51
- */
52
- this._isShowingSnackBar = false;
53
- /**
54
- * Contains a list of the dialogs that are currently visible to the user.
55
- * Each item in this list is a hash that is computed when dialog is created to uniquely identify it.
56
- *
57
- * Empty list means no dialogs are currently visible
58
- */
59
- this._activeDialogs = [];
60
- /**
61
- * Contains a list with all the MatDialog instances that are currently visible to the user.
62
- * The list uses the same order as the list of _activeDialogs hash values
63
- */
64
- this._activeDialogInstances = [];
65
- /**
66
- * Method that is used to delete the window beforeunload event listener once not used anymore
67
- */
68
- this._windowBeforeUnloadUnListen = null;
69
- /**
70
- * Method that is used to delete the document keydown event listener once not used anymore
71
- */
72
- this._documentKeydownUnlisten = null;
73
- /**
74
- * Method that is used to delete the document mousedown event listener once not used anymore
75
- */
76
- this._documentMousedownUnlisten = null;
77
- /**
78
- * Method that is used to delete the document pointerdown event listener once not used anymore
79
- */
80
- this._documentPointerdownUnlisten = null;
81
- this._renderer = rendererFactory.createRenderer(null, null);
82
- }
83
- /**
84
- * Tells if this dialog service is enabled or not. If dialog service is disabled, none of it's features will work
85
- * This is used to block all dialog features normally when shutting down the application
86
- *
87
- * Use with caution. When this is set to false, dialog service stops working.
88
- */
89
- set isEnabled(v) {
90
- if (v === this._isEnabled) {
91
- return;
92
- }
93
- this._isEnabled = v;
94
- }
95
- /**
96
- * Enables a warning that will be shown to the user when he/she tries to close the application.
97
- * This warning will prompt the user to continue with the exit process or cancel it.
98
- * The specific texts of this message are a generic ones and cannot be changed.
99
- *
100
- * IMPORTANT: This method must be called after the main application has been initialized in order to work,
101
- * otherwise it will do nothing.
102
- */
103
- addCloseApplicationWarning() {
104
- if (this._windowBeforeUnloadUnListen === null) {
105
- this._windowBeforeUnloadUnListen = this._renderer.listen('window', 'beforeunload', (event) => event.returnValue = true);
106
- }
107
- }
108
- /**
109
- * Remove the close application warning message if previously assigned
110
- */
111
- removeCloseApplicationWarning() {
112
- if (this._windowBeforeUnloadUnListen !== null) {
113
- this._windowBeforeUnloadUnListen();
114
- this._windowBeforeUnloadUnListen = null;
115
- }
116
- }
117
- /**
118
- * Change the application visual appearance so the user perceives that the application is
119
- * currently busy. While modal busy state is enabled, no user input is possible neither via
120
- * keyboard, mouse or touch. Use this state when performing server requests or operations that
121
- * must block the user interaction with the application.
122
- *
123
- * Note: We can modify the busy state component that is shown by this method. To do it, we must
124
- * set this.customBusyStateComponentClass property with our own custom busy state component class. (We can do it at
125
- * our main application component constructor for example). Our custom component must extend the
126
- * BusyStateBaseComponent one to add its own visual appearance.
127
- *
128
- * @see this.customBusyStateComponentClass
129
- */
130
- addModalBusyState() {
131
- if (!this._isEnabled || this._isShowingBusyState) {
132
- return;
133
- }
134
- this._disableUserInteraction();
135
- // Dynamically create the busy state component reference if this is the first time
136
- if (this._componentPortal === null) {
137
- this._componentPortal = new ComponentPortal(this.customBusyStateComponentClass);
138
- // Create a PortalHost with document.body as its anchor element
139
- this._modalBusyStateHost = new DomPortalOutlet(document.body, this.componentFactoryResolver, this.applicationRef, this.injector);
140
- }
141
- this._modalBusyStateHost.attach(this._componentPortal);
142
- this._isShowingBusyState = true;
143
- }
144
- /**
145
- * Tells if the application is currently locked in a modal busy state (caused by an addModalBusyState() call)
146
- */
147
- get isShowingBusyState() {
148
- return this._isShowingBusyState;
149
- }
150
- /**
151
- * Remove the application busy state and restore it back to normal user interaction
152
- */
153
- removeModalBusyState() {
154
- if (!this._isEnabled || !this._isShowingBusyState) {
155
- return;
156
- }
157
- if (this._componentPortal !== null) {
158
- this._modalBusyStateHost.detach();
159
- }
160
- this._enableUserInteraction();
161
- this._isShowingBusyState = false;
162
- }
163
- /**
164
- * TODO - adapt from TS version
165
- */
166
- addToolTip() {
167
- // TODO - adapt from TS version
168
- }
169
- /**
170
- * Show a non modal snackbar notification to the user (Only one snack-bar can ever be opened at the same time).
171
- *
172
- * Snackbars inform users of a process that an app has performed or will perform. They appear temporarily, towards the bottom or top of the screen.
173
- * They shouldn’t interrupt the user experience, and they don’t require user input to disappear.
174
- *
175
- * @param config A MatSnackBarConfig instance with the customizations we want for this snackbar
176
- * @param message The message to show on the snackbar
177
- * @param action If not empty, the text to place on the snackbar confirmation button
178
- * @param actionCallback A method to execute once the user clicks into the action button.
179
- *
180
- * @return void
181
- */
182
- addSnackBar(config, message, action = '', actionCallback = null) {
183
- if (!this._isEnabled) {
184
- return;
185
- }
186
- if (this._isShowingSnackBar) {
187
- throw new Error('Trying to show a snackbar while another one is still visible');
188
- }
189
- this._isShowingSnackBar = true;
190
- const snackBarRef = this.matSnackBar.open(message, action === '' ? undefined : action, config);
191
- if (actionCallback !== null) {
192
- snackBarRef.onAction().subscribe(() => {
193
- actionCallback();
194
- });
195
- }
196
- }
197
- /**
198
- * Tells if the application is currently showing a snackbar or not
199
- */
200
- get isShowingSnackBar() {
201
- return this._isShowingSnackBar;
202
- }
203
- /**
204
- * Force the removal of the snack bar dialog if it exists.
205
- *
206
- * If no snackbar is currently visible, this method will do nothing
207
- */
208
- removeSnackBar() {
209
- if (!this._isEnabled || !this._isShowingSnackBar) {
210
- return;
211
- }
212
- this.matSnackBar.dismiss();
213
- this._isShowingSnackBar = false;
214
- }
215
- /**
216
- * Show a dialog with one or more options that can be used to close it. We can use any of the predefined dialog types that are bundled with
217
- * this library or extend DialogOptionsBaseComponent to create our own custom ones.
218
- *
219
- * @param width Specify the css value for the maximum width the dialog will have. As the dialog is responsive, the value will be automatically
220
- reduced if the available screen is not enough, and will reach the desired value otherwise. Note that height will be adapted to the contents
221
- of the dialog and cannot be specified here. We can set a pixels, % or any other css accepted value. For example: '400px', '50%', etc.
222
- * @param texts A list with strings containing the dialog texts, sorted by importance. When dialog has a title, this should
223
- * be placed first, subtitle second and so (Each dialog may accept different kind of texts).
224
- * @param options A list of strings that will be used as button captions for each one of the accepted dialog options
225
- * @param dialogComponentClass A class for a component that extends DialogOptionsBaseComponent, which will be the
226
- * dialog visual element that is shown to the user.
227
- * @param callback A function that will be called after the dialog is closed and will receive an object with the numeric index and value for
228
- * the option that's been selected by the user.
229
- * @param modal True (default) if selecting an option is mandatory to close the dialog, false if the dialog can be closed
230
- * by the user by clicking outside it
231
- */
232
- addDialog(width, texts, options, dialogComponentClass, callback = null, modal = true) {
233
- if (!this._isEnabled) {
234
- return;
235
- }
236
- // Generate a string to uniquely identify this dialog on the list of active dialogs
237
- const dialogHash = texts.join('') + options.join('') + dialogComponentClass.name;
238
- // identical dialogs won't be allowed at the same time
239
- if (this._activeDialogs.includes(dialogHash)) {
240
- return;
241
- }
242
- const dialogRef = this.matDialog.open(dialogComponentClass, {
243
- width: width,
244
- disableClose: modal,
245
- autoFocus: false,
246
- closeOnNavigation: !modal,
247
- data: { texts: texts, options: options }
248
- });
249
- this._activeDialogs.push(dialogHash);
250
- this._activeDialogInstances.push(dialogRef);
251
- dialogRef.beforeClosed().subscribe((selectedOptionIndex) => {
252
- this._activeDialogs = ArrayUtils.removeElement(this._activeDialogs, dialogHash);
253
- this._activeDialogInstances = ArrayUtils.removeElement(this._activeDialogInstances, dialogRef);
254
- if (!NumericUtils.isInteger(selectedOptionIndex)) {
255
- if (modal) {
256
- throw new Error(`dialogRef.close() expects int value`);
257
- }
258
- else {
259
- selectedOptionIndex = -1;
260
- }
261
- }
262
- if (callback !== null) {
263
- let selectedOption = { index: selectedOptionIndex, value: '' };
264
- if (selectedOptionIndex >= 0) {
265
- selectedOption.value = options[selectedOptionIndex];
266
- }
267
- callback(selectedOption);
268
- }
269
- });
270
- }
271
- /**
272
- * Force the removal of all the dialogs that are currently visible.
273
- *
274
- * If no dialogs are currently visible, this method will do nothing
275
- */
276
- removeAllDialogs() {
277
- if (!this._isEnabled) {
278
- return;
279
- }
280
- for (const dialogRef of this._activeDialogInstances) {
281
- dialogRef.close(-1);
282
- }
283
- this._activeDialogs = [];
284
- this._activeDialogInstances = [];
285
- }
286
- /**
287
- * Block all the user interactions with the application (keyboard, touch, mouse, ...)
288
- */
289
- _disableUserInteraction() {
290
- if (this._documentKeydownUnlisten === null) {
291
- this._documentKeydownUnlisten = this._renderer.listen('document', 'keydown', (event) => event.preventDefault());
292
- }
293
- if (this._documentMousedownUnlisten === null) {
294
- this._documentMousedownUnlisten = this._renderer.listen('document', 'mousedown', (event) => event.preventDefault());
295
- }
296
- if (this._documentPointerdownUnlisten === null) {
297
- this._documentPointerdownUnlisten = this._renderer.listen('document', 'pointerdown', (event) => event.preventDefault());
298
- }
299
- }
300
- /**
301
- * Restore the user interactions that were previously disabled with _disableUserInteraction method
302
- */
303
- _enableUserInteraction() {
304
- if (this._documentKeydownUnlisten !== null) {
305
- this._documentKeydownUnlisten();
306
- this._documentKeydownUnlisten = null;
307
- }
308
- if (this._documentMousedownUnlisten !== null) {
309
- this._documentMousedownUnlisten();
310
- this._documentMousedownUnlisten = null;
311
- }
312
- if (this._documentPointerdownUnlisten !== null) {
313
- this._documentPointerdownUnlisten();
314
- this._documentMousedownUnlisten = null;
315
- }
316
- }
317
- }
318
- DialogService.decorators = [
319
- { type: Injectable }
320
- ];
321
- DialogService.ctorParameters = () => [
322
- { type: RendererFactory2 },
323
- { type: MatSnackBar },
324
- { type: MatDialog },
325
- { type: Injector },
326
- { type: ApplicationRef },
327
- { type: ComponentFactoryResolver }
328
- ];
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFRLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS3ZFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWE7SUF5RnRCLFlBQVksZUFBaUMsRUFDaEIsV0FBd0IsRUFDeEIsU0FBb0IsRUFDcEIsUUFBa0IsRUFDbEIsY0FBOEIsRUFDOUIsd0JBQWtEO1FBSmxELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQTNGL0U7Ozs7V0FJRztRQUNILGtDQUE2QixHQUFpQyxzQkFBc0IsQ0FBQztRQUdyRjs7V0FFRztRQUNLLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFHMUI7O1dBRUc7UUFDSyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFHcEM7Ozs7V0FJRztRQUNL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QSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBBcnJheVV0aWxzLCBOdW1lcmljVXRpbHMgfSBmcm9tICd0dXJib2NvbW1vbnMtdHMnO1xyXG5pbXBvcnQgeyBUeXBlLCBJbmplY3RhYmxlLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEluamVjdG9yLCBBcHBsaWNhdGlvblJlZiwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyLCBNYXRTbmFja0JhckNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvYnVzeS1zdGF0ZS1iYXNlL2J1c3ktc3RhdGUtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIERvbVBvcnRhbE91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctb3B0aW9ucy1iYXNlL2RpYWxvZy1vcHRpb25zLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctYmFzZS9kaWFsb2ctYmFzZS5jb21wb25lbnQnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIHRoZSBhcHBsaWNhdGlvbiBtb2RhbCBhbmQgbm9uIG1vZGFsIGZsb2F0aW5nIGVsZW1lbnRzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2VkIHRvIG1vZGlmeSB0aGUgYnVzeSBzdGF0ZSBjb21wb25lbnQgdGhhdCBpcyBzaG93biBieSBkZWZhdWx0IGJ5IHRoZSBhZGRNb2RhbEJ1c3lTdGF0ZSgpIG1ldGhvZC5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIHRoaXMuYWRkTW9kYWxCdXN5U3RhdGUoKVxyXG4gICAgICovXHJcbiAgICBjdXN0b21CdXN5U3RhdGVDb21wb25lbnRDbGFzczogVHlwZTxCdXN5U3RhdGVCYXNlQ29tcG9uZW50PiA9IEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQ7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgcHVibGljIGdldHRlciBmb3IgZG9jc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pc0VuYWJsZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoZSBtYWluIGFwcGxpY2F0aW9uIGlzIGN1cnJlbnRseSBzaG93aW5nIGEgYnVzeSBzdGF0ZSB0aGF0IGJsb2NrcyBhbGwgdXNlciBpbnRlcmFjdGlvblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pc1Nob3dpbmdCdXN5U3RhdGUgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgbW9kYWwgYnVzeSBzdGF0ZSBjb21wb25lbnQgdGhhdCBpcyBpbml0aWFsaXplZCBvbmx5IHRoZSBmaXJzdCB0aW1lIGl0IGlzIGNhbGxlZC5cclxuICAgICAqXHJcbiAgICAgKiAoVG8gYXBwZW5kIHRoZSBidXN5IHN0YXRlIGR5bmFtaWNhbGx5LCB3ZSB1c2UgdGhlIFBvcnRhbCBjb25jZXB0IGZyb20gdGhlIGFuZ3VsYXIgbWF0ZXJpYWwgbGlicmFyeSlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfY29tcG9uZW50UG9ydGFsOiBDb21wb25lbnRQb3J0YWw8QnVzeVN0YXRlQmFzZUNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgbW9kYWwgYnVzeSBzdGF0ZSBjb250YWluZXIgd2hlcmUgdGhlIGNvbXBvbmVudCB3aWxsIGJlIGFkZGVkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX21vZGFsQnVzeVN0YXRlSG9zdDogRG9tUG9ydGFsT3V0bGV0IHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhlIG1hbmFnZXIgaXMgY3VycmVudGx5IHNob3dpbmcgYSBzbmFja2JhciBlbGVtZW50IG9yIG5vdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pc1Nob3dpbmdTbmFja0JhciA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRhaW5zIGEgbGlzdCBvZiB0aGUgZGlhbG9ncyB0aGF0IGFyZSBjdXJyZW50bHkgdmlzaWJsZSB0byB0aGUgdXNlci5cclxuICAgICAqIEVhY2ggaXRlbSBpbiB0aGlzIGxpc3QgaXMgYSBoYXNoIHRoYXQgaXMgY29tcHV0ZWQgd2hlbiBkaWFsb2cgaXMgY3JlYXRlZCB0byB1bmlxdWVseSBpZGVudGlmeSBpdC5cclxuICAgICAqXHJcbiAgICAgKiBFbXB0eSBsaXN0IG1lYW5zIG5vIGRpYWxvZ3MgYXJlIGN1cnJlbnRseSB2aXNpYmxlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2FjdGl2ZURpYWxvZ3M6IHN0cmluZ1tdID0gW107XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udGFpbnMgYSBsaXN0IHdpdGggYWxsIHRoZSBNYXREaWFsb2cgaW5zdGFuY2VzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlIHRvIHRoZSB1c2VyLlxyXG4gICAgICogVGhlIGxpc3QgdXNlcyB0aGUgc2FtZSBvcmRlciBhcyB0aGUgbGlzdCBvZiBfYWN0aXZlRGlhbG9ncyBoYXNoIHZhbHVlc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hY3RpdmVEaWFsb2dJbnN0YW5jZXM6IE1hdERpYWxvZ1JlZjxEaWFsb2dCYXNlQ29tcG9uZW50PltdID0gW107XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCB0byBzdG9yZSB0aGUgaW5pdGlhbGl6ZWQgUmVuZGVyZXIgMiBpbnN0YW5jZSB0aGF0IGlzIHVzZWQgYnkgdGhpcyBjbGFzc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGVsZXRlIHRoZSB3aW5kb3cgYmVmb3JldW5sb2FkIGV2ZW50IGxpc3RlbmVyIG9uY2Ugbm90IHVzZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZWxldGUgdGhlIGRvY3VtZW50IGtleWRvd24gZXZlbnQgbGlzdGVuZXIgb25jZSBub3QgdXNlZCBhbnltb3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RvY3VtZW50S2V5ZG93blVubGlzdGVuOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRlbGV0ZSB0aGUgZG9jdW1lbnQgbW91c2Vkb3duIGV2ZW50IGxpc3RlbmVyIG9uY2Ugbm90IHVzZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRlbGV0ZSB0aGUgZG9jdW1lbnQgcG9pbnRlcmRvd24gZXZlbnQgbGlzdGVuZXIgb25jZSBub3QgdXNlZCBhbnltb3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0U25hY2tCYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZyxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSB7XHJcblxyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoaXMgZGlhbG9nIHNlcnZpY2UgaXMgZW5hYmxlZCBvciBub3QuIElmIGRpYWxvZyBzZXJ2aWNlIGlzIGRpc2FibGVkLCBub25lIG9mIGl0J3MgZmVhdHVyZXMgd2lsbCB3b3JrXHJcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gYmxvY2sgYWxsIGRpYWxvZyBmZWF0dXJlcyBub3JtYWxseSB3aGVuIHNodXR0aW5nIGRvd24gdGhlIGFwcGxpY2F0aW9uXHJcbiAgICAgKlxyXG4gICAgICogVXNlIHdpdGggY2F1dGlvbi4gV2hlbiB0aGlzIGlzIHNldCB0byBmYWxzZSwgZGlhbG9nIHNlcnZpY2Ugc3RvcHMgd29ya2luZy5cclxuICAgICAqL1xyXG4gICAgc2V0IGlzRW5hYmxlZCh2OiBib29sZWFuKSB7XHJcblxyXG4gICAgICAgIGlmICh2ID09PSB0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2lzRW5hYmxlZCA9IHY7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW5hYmxlcyBhIHdhcm5pbmcgdGhhdCB3aWxsIGJlIHNob3duIHRvIHRoZSB1c2VyIHdoZW4gaGUvc2hlIHRyaWVzIHRvIGNsb3NlIHRoZSBhcHBsaWNhdGlvbi5cclxuICAgICAqIFRoaXMgd2FybmluZyB3aWxsIHByb21wdCB0aGUgdXNlciB0byBjb250aW51ZSB3aXRoIHRoZSBleGl0IHByb2Nlc3Mgb3IgY2FuY2VsIGl0LlxyXG4gICAgICogVGhlIHNwZWNpZmljIHRleHRzIG9mIHRoaXMgbWVzc2FnZSBhcmUgYSBnZW5lcmljIG9uZXMgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkLlxyXG4gICAgICpcclxuICAgICAqIElNUE9SVEFOVDogVGhpcyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIG1haW4gYXBwbGljYXRpb24gaGFzIGJlZW4gaW5pdGlhbGl6ZWQgaW4gb3JkZXIgdG8gd29yayxcclxuICAgICAqIG90aGVyd2lzZSBpdCB3aWxsIGRvIG5vdGhpbmcuXHJcbiAgICAgKi9cclxuICAgIGFkZENsb3NlQXBwbGljYXRpb25XYXJuaW5nKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4gPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAnYmVmb3JldW5sb2FkJyxcclxuICAgICAgICAgICAgICAgIChldmVudCkgPT4gZXZlbnQucmV0dXJuVmFsdWUgPSB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIHRoZSBjbG9zZSBhcHBsaWNhdGlvbiB3YXJuaW5nIG1lc3NhZ2UgaWYgcHJldmlvdXNseSBhc3NpZ25lZFxyXG4gICAgICovXHJcbiAgICByZW1vdmVDbG9zZUFwcGxpY2F0aW9uV2FybmluZygpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoYW5nZSB0aGUgYXBwbGljYXRpb24gdmlzdWFsIGFwcGVhcmFuY2Ugc28gdGhlIHVzZXIgcGVyY2VpdmVzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGlzXHJcbiAgICAgKiBjdXJyZW50bHkgYnVzeS4gV2hpbGUgbW9kYWwgYnVzeSBzdGF0ZSBpcyBlbmFibGVkLCBubyB1c2VyIGlucHV0IGlzIHBvc3NpYmxlIG5laXRoZXIgdmlhXHJcbiAgICAgKiBrZXlib2FyZCwgbW91c2Ugb3IgdG91Y2guIFVzZSB0aGlzIHN0YXRlIHdoZW4gcGVyZm9ybWluZyBzZXJ2ZXIgcmVxdWVzdHMgb3Igb3BlcmF0aW9ucyB0aGF0XHJcbiAgICAgKiBtdXN0IGJsb2NrIHRoZSB1c2VyIGludGVyYWN0aW9uIHdpdGggdGhlIGFwcGxpY2F0aW9uLlxyXG4gICAgICpcclxuICAgICAqIE5vdGU6IFdlIGNhbiBtb2RpZnkgdGhlIGJ1c3kgc3RhdGUgY29tcG9uZW50IHRoYXQgaXMgc2hvd24gYnkgdGhpcyBtZXRob2QuIFRvIGRvIGl0LCB3ZSBtdXN0XHJcbiAgICAgKiBzZXQgdGhpcy5jdXN0b21CdXN5U3RhdGVDb21wb25lbnRDbGFzcyBwcm9wZXJ0eSB3aXRoIG91ciBvd24gY3VzdG9tIGJ1c3kgc3RhdGUgY29tcG9uZW50IGNsYXNzLiAoV2UgY2FuIGRvIGl0IGF0XHJcbiAgICAgKiBvdXIgbWFpbiBhcHBsaWNhdGlvbiBjb21wb25lbnQgY29uc3RydWN0b3IgZm9yIGV4YW1wbGUpLiBPdXIgY3VzdG9tIGNvbXBvbmVudCBtdXN0IGV4dGVuZCB0aGVcclxuICAgICAqIEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQgb25lIHRvIGFkZCBpdHMgb3duIHZpc3VhbCBhcHBlYXJhbmNlLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgdGhpcy5jdXN0b21CdXN5U3RhdGVDb21wb25lbnRDbGFzc1xyXG4gICAgICovXHJcbiAgICBhZGRNb2RhbEJ1c3lTdGF0ZSgpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQgfHwgdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9kaXNhYmxlVXNlckludGVyYWN0aW9uKCk7XHJcblxyXG4gICAgICAgIC8vIER5bmFtaWNhbGx5IGNyZWF0ZSB0aGUgYnVzeSBzdGF0ZSBjb21wb25lbnQgcmVmZXJlbmNlIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWVcclxuICAgICAgICBpZiAodGhpcy5fY29tcG9uZW50UG9ydGFsID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMuY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3MpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgUG9ydGFsSG9zdCB3aXRoIGRvY3VtZW50LmJvZHkgYXMgaXRzIGFuY2hvciBlbGVtZW50XHJcbiAgICAgICAgICAgIHRoaXMuX21vZGFsQnVzeVN0YXRlSG9zdCA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoXHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgKHRoaXMuX21vZGFsQnVzeVN0YXRlSG9zdCBhcyBEb21Qb3J0YWxPdXRsZXQpLmF0dGFjaCh0aGlzLl9jb21wb25lbnRQb3J0YWwpO1xyXG5cclxuICAgICAgICB0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgbG9ja2VkIGluIGEgbW9kYWwgYnVzeSBzdGF0ZSAoY2F1c2VkIGJ5IGFuIGFkZE1vZGFsQnVzeVN0YXRlKCkgY2FsbClcclxuICAgICAqL1xyXG4gICAgZ2V0IGlzU2hvd2luZ0J1c3lTdGF0ZSgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdGhlIGFwcGxpY2F0aW9uIGJ1c3kgc3RhdGUgYW5kIHJlc3RvcmUgaXQgYmFjayB0byBub3JtYWwgdXNlciBpbnRlcmFjdGlvblxyXG4gICAgICovXHJcbiAgICByZW1vdmVNb2RhbEJ1c3lTdGF0ZSgpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQgfHwgIXRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZSkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvbmVudFBvcnRhbCAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgKHRoaXMuX21vZGFsQnVzeVN0YXRlSG9zdCBhcyBEb21Qb3J0YWxPdXRsZXQpLmRldGFjaCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZW5hYmxlVXNlckludGVyYWN0aW9uKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogVE9ETyAtIGFkYXB0IGZyb20gVFMgdmVyc2lvblxyXG4gICAgICovXHJcbiAgICBhZGRUb29sVGlwKCkge1xyXG5cclxuICAgICAgICAvLyBUT0RPIC0gYWRhcHQgZnJvbSBUUyB2ZXJzaW9uXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyBhIG5vbiBtb2RhbCBzbmFja2JhciBub3RpZmljYXRpb24gdG8gdGhlIHVzZXIgKE9ubHkgb25lIHNuYWNrLWJhciBjYW4gZXZlciBiZSBvcGVuZWQgYXQgdGhlIHNhbWUgdGltZSkuXHJcbiAgICAgKlxyXG4gICAgICogU25hY2tiYXJzIGluZm9ybSB1c2VycyBvZiBhIHByb2Nlc3MgdGhhdCBhbiBhcHAgaGFzIHBlcmZvcm1lZCBvciB3aWxsIHBlcmZvcm0uIFRoZXkgYXBwZWFyIHRlbXBvcmFyaWx5LCB0b3dhcmRzIHRoZSBib3R0b20gb3IgdG9wIG9mIHRoZSBzY3JlZW4uXHJcbiAgICAgKiBUaGV5IHNob3VsZG7igJl0IGludGVycnVwdCB0aGUgdXNlciBleHBlcmllbmNlLCBhbmQgdGhleSBkb27igJl0IHJlcXVpcmUgdXNlciBpbnB1dCB0byBkaXNhcHBlYXIuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBBIE1hdFNuYWNrQmFyQ29uZmlnIGluc3RhbmNlIHdpdGggdGhlIGN1c3RvbWl6YXRpb25zIHdlIHdhbnQgZm9yIHRoaXMgc25hY2tiYXJcclxuICAgICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIHNob3cgb24gdGhlIHNuYWNrYmFyXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uIElmIG5vdCBlbXB0eSwgdGhlIHRleHQgdG8gcGxhY2Ugb24gdGhlIHNuYWNrYmFyIGNvbmZpcm1hdGlvbiBidXR0b25cclxuICAgICAqIEBwYXJhbSBhY3Rpb25DYWxsYmFjayBBIG1ldGhvZCB0byBleGVjdXRlIG9uY2UgdGhlIHVzZXIgY2xpY2tzIGludG8gdGhlIGFjdGlvbiBidXR0b24uXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybiB2b2lkXHJcbiAgICAgKi9cclxuICAgIGFkZFNuYWNrQmFyKGNvbmZpZzogTWF0U25hY2tCYXJDb25maWcsIG1lc3NhZ2U6IHN0cmluZywgYWN0aW9uID0gJycsIGFjdGlvbkNhbGxiYWNrOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBzaG93IGEgc25hY2tiYXIgd2hpbGUgYW5vdGhlciBvbmUgaXMgc3RpbGwgdmlzaWJsZScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5faXNTaG93aW5nU25hY2tCYXIgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBzbmFja0JhclJlZiA9IHRoaXMubWF0U25hY2tCYXIub3BlbihtZXNzYWdlLCBhY3Rpb24gPT09ICcnID8gdW5kZWZpbmVkIDogYWN0aW9uLCBjb25maWcpO1xyXG5cclxuICAgICAgICBpZiAoYWN0aW9uQ2FsbGJhY2sgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHNuYWNrQmFyUmVmLm9uQWN0aW9uKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBhY3Rpb25DYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGN1cnJlbnRseSBzaG93aW5nIGEgc25hY2tiYXIgb3Igbm90XHJcbiAgICAgKi9cclxuICAgIGdldCBpc1Nob3dpbmdTbmFja0JhcigpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvcmNlIHRoZSByZW1vdmFsIG9mIHRoZSBzbmFjayBiYXIgZGlhbG9nIGlmIGl0IGV4aXN0cy5cclxuICAgICAqXHJcbiAgICAgKiBJZiBubyBzbmFja2JhciBpcyBjdXJyZW50bHkgdmlzaWJsZSwgdGhpcyBtZXRob2Qgd2lsbCBkbyBub3RoaW5nXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZVNuYWNrQmFyKCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCB8fCAhdGhpcy5faXNTaG93aW5nU25hY2tCYXIpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubWF0U25hY2tCYXIuZGlzbWlzcygpO1xyXG5cclxuICAgICAgICB0aGlzLl9pc1Nob3dpbmdTbmFja0JhciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYSBkaWFsb2cgd2l0aCBvbmUgb3IgbW9yZSBvcHRpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2xvc2UgaXQuIFdlIGNhbiB1c2UgYW55IG9mIHRoZSBwcmVkZWZpbmVkIGRpYWxvZyB0eXBlcyB0aGF0IGFyZSBidW5kbGVkIHdpdGhcclxuICAgICAqIHRoaXMgbGlicmFyeSBvciBleHRlbmQgRGlhbG9nT3B0aW9uc0Jhc2VDb21wb25lbnQgdG8gY3JlYXRlIG91ciBvd24gY3VzdG9tIG9uZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHdpZHRoIFNwZWNpZnkgdGhlIGNzcyB2YWx1ZSBmb3IgdGhlIG1heGltdW0gd2lkdGggdGhlIGRpYWxvZyB3aWxsIGhhdmUuIEFzIHRoZSBkaWFsb2cgaXMgcmVzcG9uc2l2ZSwgdGhlIHZhbHVlIHdpbGwgYmUgYXV0b21hdGljYWxseVxyXG4gICAgICAgICAgICAgIHJlZHVjZWQgaWYgdGhlIGF2YWlsYWJsZSBzY3JlZW4gaXMgbm90IGVub3VnaCwgYW5kIHdpbGwgcmVhY2ggdGhlIGRlc2lyZWQgdmFsdWUgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgaGVpZ2h0IHdpbGwgYmUgYWRhcHRlZCB0byB0aGUgY29udGVudHNcclxuICAgICAgICAgICAgICBvZiB0aGUgZGlhbG9nIGFuZCBjYW5ub3QgYmUgc3BlY2lmaWVkIGhlcmUuIFdlIGNhbiBzZXQgYSBwaXhlbHMsICUgb3IgYW55IG90aGVyIGNzcyBhY2NlcHRlZCB2YWx1ZS4gRm9yIGV4YW1wbGU6ICc0MDBweCcsICc1MCUnLCBldGMuXHJcbiAgICAgKiBAcGFyYW0gdGV4dHMgQSBsaXN0IHdpdGggc3RyaW5ncyBjb250YWluaW5nIHRoZSBkaWFsb2cgdGV4dHMsIHNvcnRlZCBieSBpbXBvcnRhbmNlLiBXaGVuIGRpYWxvZyBoYXMgYSB0aXRsZSwgdGhpcyBzaG91bGRcclxuICAgICAqICAgICAgICBiZSBwbGFjZWQgZmlyc3QsIHN1YnRpdGxlIHNlY29uZCBhbmQgc28gKEVhY2ggZGlhbG9nIG1heSBhY2NlcHQgZGlmZmVyZW50IGtpbmQgb2YgdGV4dHMpLlxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgQSBsaXN0IG9mIHN0cmluZ3MgdGhhdCB3aWxsIGJlIHVzZWQgYXMgYnV0dG9uIGNhcHRpb25zIGZvciBlYWNoIG9uZSBvZiB0aGUgYWNjZXB0ZWQgZGlhbG9nIG9wdGlvbnNcclxuICAgICAqIEBwYXJhbSBkaWFsb2dDb21wb25lbnRDbGFzcyBBIGNsYXNzIGZvciBhIGNvbXBvbmVudCB0aGF0IGV4dGVuZHMgRGlhbG9nT3B0aW9uc0Jhc2VDb21wb25lbnQsIHdoaWNoIHdpbGwgYmUgdGhlXHJcbiAgICAgKiAgICAgICAgZGlhbG9nIHZpc3VhbCBlbGVtZW50IHRoYXQgaXMgc2hvd24gdG8gdGhlIHVzZXIuXHJcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBkaWFsb2cgaXMgY2xvc2VkIGFuZCB3aWxsIHJlY2VpdmUgYW4gb2JqZWN0IHdpdGggdGhlIG51bWVyaWMgaW5kZXggYW5kIHZhbHVlIGZvclxyXG4gICAgICogICAgICAgIHRoZSBvcHRpb24gdGhhdCdzIGJlZW4gc2VsZWN0ZWQgYnkgdGhlIHVzZXIuXHJcbiAgICAgKiBAcGFyYW0gbW9kYWwgVHJ1ZSAoZGVmYXVsdCkgaWYgc2VsZWN0aW5nIGFuIG9wdGlvbiBpcyBtYW5kYXRvcnkgdG8gY2xvc2UgdGhlIGRpYWxvZywgZmFsc2UgaWYgdGhlIGRpYWxvZyBjYW4gYmUgY2xvc2VkXHJcbiAgICAgKiAgICAgICAgYnkgdGhlIHVzZXIgYnkgY2xpY2tpbmcgb3V0c2lkZSBpdCBcclxuICAgICAqL1xyXG4gICAgYWRkRGlhbG9nKHdpZHRoOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgdGV4dHM6IHN0cmluZ1tdLFxyXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHN0cmluZ1tdLFxyXG4gICAgICAgICAgICAgIGRpYWxvZ0NvbXBvbmVudENsYXNzOiBUeXBlPERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICBjYWxsYmFjazogbnVsbCB8ICgoc2VsZWN0ZWRPcHRpb246IHtpbmRleDpudW1iZXIsIHZhbHVlOiBzdHJpbmd9KSA9PiB2b2lkKSA9IG51bGwsXHJcbiAgICAgICAgICAgICAgbW9kYWwgPSB0cnVlKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBHZW5lcmF0ZSBhIHN0cmluZyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGlzIGRpYWxvZyBvbiB0aGUgbGlzdCBvZiBhY3RpdmUgZGlhbG9nc1xyXG4gICAgICAgIGNvbnN0IGRpYWxvZ0hhc2ggPSB0ZXh0cy5qb2luKCcnKSArIG9wdGlvbnMuam9pbignJykgKyBkaWFsb2dDb21wb25lbnRDbGFzcy5uYW1lO1xyXG5cclxuICAgICAgICAvLyBpZGVudGljYWwgZGlhbG9ncyB3b24ndCBiZSBhbGxvd2VkIGF0IHRoZSBzYW1lIHRpbWVcclxuICAgICAgICBpZiAodGhpcy5fYWN0aXZlRGlhbG9ncy5pbmNsdWRlcyhkaWFsb2dIYXNoKSkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3BlbihkaWFsb2dDb21wb25lbnRDbGFzcywge1xyXG4gICAgICAgICAgICB3aWR0aDogd2lkdGgsXHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogbW9kYWwsXHJcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgICAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiAhbW9kYWwsXHJcbiAgICAgICAgICAgIGRhdGE6IHsgdGV4dHM6IHRleHRzLCBvcHRpb25zOiBvcHRpb25zIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dzLnB1c2goZGlhbG9nSGFzaCk7XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzLnB1c2goZGlhbG9nUmVmKTtcclxuXHJcbiAgICAgICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgoc2VsZWN0ZWRPcHRpb25JbmRleDogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dzID0gQXJyYXlVdGlscy5yZW1vdmVFbGVtZW50KHRoaXMuX2FjdGl2ZURpYWxvZ3MsIGRpYWxvZ0hhc2gpO1xyXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dJbnN0YW5jZXMgPSBBcnJheVV0aWxzLnJlbW92ZUVsZW1lbnQodGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzLCBkaWFsb2dSZWYpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFOdW1lcmljVXRpbHMuaXNJbnRlZ2VyKHNlbGVjdGVkT3B0aW9uSW5kZXgpKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYobW9kYWwpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZGlhbG9nUmVmLmNsb3NlKCkgZXhwZWN0cyBpbnQgdmFsdWVgKTtcclxuXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbkluZGV4ID0gLTE7XHJcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2sgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRPcHRpb24gPSB7aW5kZXg6IHNlbGVjdGVkT3B0aW9uSW5kZXgsIHZhbHVlOiAnJ307XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmKHNlbGVjdGVkT3B0aW9uSW5kZXggPj0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb24udmFsdWUgPSBvcHRpb25zW3NlbGVjdGVkT3B0aW9uSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIChjYWxsYmFjayBhcyAoKHNlbGVjdGVkT3B0aW9uOiB7aW5kZXg6bnVtYmVyLCB2YWx1ZTogc3RyaW5nfSkgPT4gdm9pZCkpKHNlbGVjdGVkT3B0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogRm9yY2UgdGhlIHJlbW92YWwgb2YgYWxsIHRoZSBkaWFsb2dzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlLlxyXG4gICAgICpcclxuICAgICAqIElmIG5vIGRpYWxvZ3MgYXJlIGN1cnJlbnRseSB2aXNpYmxlLCB0aGlzIG1ldGhvZCB3aWxsIGRvIG5vdGhpbmdcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlQWxsRGlhbG9ncygpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgZGlhbG9nUmVmIG9mIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcykge1xyXG5cclxuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKC0xKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9ncyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcyA9IFtdO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEJsb2NrIGFsbCB0aGUgdXNlciBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYXBwbGljYXRpb24gKGtleWJvYXJkLCB0b3VjaCwgbW91c2UsIC4uLilcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZGlzYWJsZVVzZXJJbnRlcmFjdGlvbigpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbiA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAna2V5ZG93bicsIChldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2Vkb3duJywgKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW4gPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbiA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAncG9pbnRlcmRvd24nLCAoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN0b3JlIHRoZSB1c2VyIGludGVyYWN0aW9ucyB0aGF0IHdlcmUgcHJldmlvdXNseSBkaXNhYmxlZCB3aXRoIF9kaXNhYmxlVXNlckludGVyYWN0aW9uIG1ldGhvZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9lbmFibGVVc2VySW50ZXJhY3Rpb24oKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4oKTtcclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4oKTtcclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW4oKTtcclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,65 +0,0 @@
1
- /**
2
- * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
- *
4
- * Website : -> http://www.turbogui.org
5
- * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
- * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
- * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
- */
9
- import { Injectable } from '@angular/core';
10
- /**
11
- * Captures all the application exceptions and performs any required action.
12
- * It also contains multiple general error management features.
13
- *
14
- * To define this class as your application error handler, you must add the following to your
15
- * main app module providers:
16
- * {
17
- * provide: ErrorHandler,
18
- * useClass: GlobalErrorService
19
- * },
20
- * GlobalErrorService
21
- *
22
- * You cannot access the error handler at runtime. If you need to modify any of the behaviours
23
- * or implement your custom ones, you must extend this class and set your new one as the error
24
- * handler provider.
25
- */
26
- export class GlobalErrorService {
27
- constructor() {
28
- /**
29
- * Enables or disables the error notification to user via an alert box
30
- * Extend this class and override this value on your custom error handle to change it
31
- */
32
- this.showExceptionsToUser = true;
33
- /**
34
- * Enables or disables the error notification to user via an alert box
35
- * Extend this class and override this value on your custom error handle to change it
36
- */
37
- this.showExceptionsOnConsole = true;
38
- /**
39
- * Defines the text that will be used for the alert that is shown to the user when an exception happens
40
- * and showExceptionsToUser is true
41
- * Extend this class and override this value on your custom error handle to change it
42
- */
43
- this.errorAlertMessage = 'Application exception:\n\n';
44
- }
45
- /**
46
- * Show an alert with the received error detail and also log it to the js console.
47
- *
48
- * Angular expects at least this method to be implemented on any class that is used as a global exception handler.
49
- *
50
- * @param error An error instance
51
- */
52
- handleError(error) {
53
- if (this.showExceptionsToUser) {
54
- alert(this.errorAlertMessage + error);
55
- }
56
- if (this.showExceptionsOnConsole) {
57
- console.log(error);
58
- }
59
- throw error;
60
- }
61
- }
62
- GlobalErrorService.decorators = [
63
- { type: Injectable }
64
- ];
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsZXJyb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vY29udHJvbGxlci9nbG9iYWxlcnJvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUd6RDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBSUk7OztXQUdHO1FBQ2MseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRzdDOzs7V0FHRztRQUNjLDRCQUF1QixHQUFHLElBQUksQ0FBQztRQUdoRDs7OztXQUlHO1FBQ2Msc0JBQWlCLEdBQUcsNEJBQTRCLENBQUM7SUF3QnRFLENBQUM7SUFyQkc7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLEtBQVU7UUFFbEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFFM0IsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBSSxLQUFnQixDQUFDLENBQUM7U0FDckQ7UUFFRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUU5QixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RCO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQzs7O1lBOUNKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBFcnJvckhhbmRsZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG4vKipcclxuICogQ2FwdHVyZXMgYWxsIHRoZSBhcHBsaWNhdGlvbiBleGNlcHRpb25zIGFuZCBwZXJmb3JtcyBhbnkgcmVxdWlyZWQgYWN0aW9uLlxyXG4gKiBJdCBhbHNvIGNvbnRhaW5zIG11bHRpcGxlIGdlbmVyYWwgZXJyb3IgbWFuYWdlbWVudCBmZWF0dXJlcy5cclxuICpcclxuICogVG8gZGVmaW5lIHRoaXMgY2xhc3MgYXMgeW91ciBhcHBsaWNhdGlvbiBlcnJvciBoYW5kbGVyLCB5b3UgbXVzdCBhZGQgdGhlIGZvbGxvd2luZyB0byB5b3VyXHJcbiAqIG1haW4gYXBwIG1vZHVsZSBwcm92aWRlcnM6XHJcbiAqICAgICAge1xyXG4gKiAgICAgICAgICBwcm92aWRlOiBFcnJvckhhbmRsZXIsXHJcbiAqICAgICAgICAgIHVzZUNsYXNzOiBHbG9iYWxFcnJvclNlcnZpY2VcclxuICogICAgICB9LFxyXG4gKiAgICAgIEdsb2JhbEVycm9yU2VydmljZVxyXG4gKlxyXG4gKiBZb3UgY2Fubm90IGFjY2VzcyB0aGUgZXJyb3IgaGFuZGxlciBhdCBydW50aW1lLiBJZiB5b3UgbmVlZCB0byBtb2RpZnkgYW55IG9mIHRoZSBiZWhhdmlvdXJzXHJcbiAqIG9yIGltcGxlbWVudCB5b3VyIGN1c3RvbSBvbmVzLCB5b3UgbXVzdCBleHRlbmQgdGhpcyBjbGFzcyBhbmQgc2V0IHlvdXIgbmV3IG9uZSBhcyB0aGUgZXJyb3JcclxuICogaGFuZGxlciBwcm92aWRlci5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEdsb2JhbEVycm9yU2VydmljZSBpbXBsZW1lbnRzIEVycm9ySGFuZGxlciB7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgZXJyb3Igbm90aWZpY2F0aW9uIHRvIHVzZXIgdmlhIGFuIGFsZXJ0IGJveFxyXG4gICAgICogRXh0ZW5kIHRoaXMgY2xhc3MgYW5kIG92ZXJyaWRlIHRoaXMgdmFsdWUgb24geW91ciBjdXN0b20gZXJyb3IgaGFuZGxlIHRvIGNoYW5nZSBpdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNob3dFeGNlcHRpb25zVG9Vc2VyID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBlcnJvciBub3RpZmljYXRpb24gdG8gdXNlciB2aWEgYW4gYWxlcnQgYm94XHJcbiAgICAgKiBFeHRlbmQgdGhpcyBjbGFzcyBhbmQgb3ZlcnJpZGUgdGhpcyB2YWx1ZSBvbiB5b3VyIGN1c3RvbSBlcnJvciBoYW5kbGUgdG8gY2hhbmdlIGl0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2hvd0V4Y2VwdGlvbnNPbkNvbnNvbGUgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgdGhlIHRleHQgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBhbGVydCB0aGF0IGlzIHNob3duIHRvIHRoZSB1c2VyIHdoZW4gYW4gZXhjZXB0aW9uIGhhcHBlbnNcclxuICAgICAqIGFuZCBzaG93RXhjZXB0aW9uc1RvVXNlciBpcyB0cnVlXHJcbiAgICAgKiBFeHRlbmQgdGhpcyBjbGFzcyBhbmQgb3ZlcnJpZGUgdGhpcyB2YWx1ZSBvbiB5b3VyIGN1c3RvbSBlcnJvciBoYW5kbGUgdG8gY2hhbmdlIGl0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JBbGVydE1lc3NhZ2UgPSAnQXBwbGljYXRpb24gZXhjZXB0aW9uOlxcblxcbic7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyBhbiBhbGVydCB3aXRoIHRoZSByZWNlaXZlZCBlcnJvciBkZXRhaWwgYW5kIGFsc28gbG9nIGl0IHRvIHRoZSBqcyBjb25zb2xlLlxyXG4gICAgICpcclxuICAgICAqIEFuZ3VsYXIgZXhwZWN0cyBhdCBsZWFzdCB0aGlzIG1ldGhvZCB0byBiZSBpbXBsZW1lbnRlZCBvbiBhbnkgY2xhc3MgdGhhdCBpcyB1c2VkIGFzIGEgZ2xvYmFsIGV4Y2VwdGlvbiBoYW5kbGVyLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBlcnJvciBBbiBlcnJvciBpbnN0YW5jZVxyXG4gICAgICovXHJcbiAgICBoYW5kbGVFcnJvcihlcnJvcjogYW55KSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNob3dFeGNlcHRpb25zVG9Vc2VyKSB7XHJcblxyXG4gICAgICAgICAgICBhbGVydCh0aGlzLmVycm9yQWxlcnRNZXNzYWdlICsgKGVycm9yIGFzIHN0cmluZykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0V4Y2VwdGlvbnNPbkNvbnNvbGUpIHtcclxuXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,70 +0,0 @@
1
- /**
2
- * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
- *
4
- * Website : -> http://www.turbogui.org
5
- * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
- * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
- * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
- */
9
- import { Injectable } from '@angular/core';
10
- import { HTTPManager, StringUtils } from 'turbocommons-ts';
11
- import { DialogService } from './dialog.service';
12
- import { DialogErrorComponent } from '../view/components/dialog-error/dialog-error.component';
13
- /**
14
- * Manages application http communications
15
- */
16
- export class HTTPService extends HTTPManager {
17
- constructor(dialogService) {
18
- super(true);
19
- this.dialogService = dialogService;
20
- }
21
- /**
22
- * The same method as HTTPManager.execute but with the ability to enable several options which are specific to this service:
23
- *
24
- * - HTTPService.NO_MODAL_BUSY_STATE To prevent the default behaviour of locking the UI while the request is running
25
- * - HTTPService.DISABLE_ERROR_HANDLING To prevent the default behaviour of showing a detailed error dialog when a request fails
26
- *
27
- * @see HTTPManager.execute()
28
- */
29
- execute(requests, finishedCallback = null, progressCallback = null, options = []) {
30
- if (options.indexOf(HTTPService.NO_MODAL_BUSY_STATE) < 0) {
31
- this.dialogService.addModalBusyState();
32
- }
33
- super.execute(requests, (results, anyError) => {
34
- if (options.indexOf(HTTPService.NO_MODAL_BUSY_STATE) < 0) {
35
- this.dialogService.removeModalBusyState();
36
- }
37
- if ((options.indexOf(HTTPService.DISABLE_ERROR_HANDLING) < 0) && anyError) {
38
- for (let result of results) {
39
- if (result.isError) {
40
- let errorMsg = result.errorMsg + '\n\n' + result.response;
41
- if (StringUtils.isEmpty(errorMsg)) {
42
- errorMsg = 'Unknown error. Make sure Internet connection is available';
43
- }
44
- this.dialogService.addDialog('600px', ['Error: ' + result.code, errorMsg], ['Ok'], DialogErrorComponent);
45
- }
46
- }
47
- }
48
- if (finishedCallback !== null) {
49
- finishedCallback(results, anyError);
50
- }
51
- }, progressCallback);
52
- }
53
- }
54
- /**
55
- * execute() method option that tells the service to avoid blocking the user interface with a modal busy state while the requests that are
56
- * launched by the execute method are running.
57
- */
58
- HTTPService.NO_MODAL_BUSY_STATE = 'NO_MODAL_BUSY_STATE';
59
- /**
60
- * execute() method option that tells the service to skip showing an error dialog when a request fails. We normally use this to handle the
61
- * errors by ourselves or if we want to hide the error dialog for a specific request.
62
- */
63
- HTTPService.DISABLE_ERROR_HANDLING = 'DISABLE_ERROR_HANDLING';
64
- HTTPService.decorators = [
65
- { type: Injectable }
66
- ];
67
- HTTPService.ctorParameters = () => [
68
- { type: DialogService }
69
- ];
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUEwQixXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFHOUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFdBQVc7SUFpQnhDLFlBQW1CLGFBQTRCO1FBRTNDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUZHLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBRy9DLENBQUM7SUFHRDs7Ozs7OztPQU9HO0lBQ0gsT0FBTyxDQUFDLFFBQXlFLEVBQ3pFLG1CQUE4SSxJQUFJLEVBQ2xKLG1CQUFtRixJQUFJLEVBQ3ZGLFVBQWdHLEVBQUU7UUFFdEcsSUFBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBQztZQUVyRCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDekM7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUUxQyxJQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFDO2dCQUVwRCxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0M7WUFFRCxJQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUM7Z0JBRXJFLEtBQUksSUFBSSxNQUFNLElBQUksT0FBTyxFQUFDO29CQUV0QixJQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUM7d0JBRWQsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQzt3QkFFMUQsSUFBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFDOzRCQUU3QixRQUFRLEdBQUcsMkRBQTJELENBQUM7eUJBQzFFO3dCQUVELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztxQkFDNUc7aUJBQ0o7YUFDSjtZQUVELElBQUcsZ0JBQWdCLEtBQUssSUFBSSxFQUFDO2dCQUV6QixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDdkM7UUFFSixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQixDQUFDOztBQXJFRDs7O0dBR0c7QUFDYSwrQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztBQUc1RDs7O0dBR0c7QUFDYSxrQ0FBc0IsR0FBRyx3QkFBd0IsQ0FBQzs7WUFmckUsVUFBVTs7O1lBUEYsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSFRUUE1hbmFnZXIsIEhUVFBNYW5hZ2VyQmFzZVJlcXVlc3QsIFN0cmluZ1V0aWxzIH0gZnJvbSAndHVyYm9jb21tb25zLXRzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dFcnJvckNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctZXJyb3IvZGlhbG9nLWVycm9yLmNvbXBvbmVudCc7XHJcblxyXG5cclxuLyoqXHJcbiAqIE1hbmFnZXMgYXBwbGljYXRpb24gaHR0cCBjb21tdW5pY2F0aW9uc1xyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSFRUUFNlcnZpY2UgZXh0ZW5kcyBIVFRQTWFuYWdlciB7XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBleGVjdXRlKCkgbWV0aG9kIG9wdGlvbiB0aGF0IHRlbGxzIHRoZSBzZXJ2aWNlIHRvIGF2b2lkIGJsb2NraW5nIHRoZSB1c2VyIGludGVyZmFjZSB3aXRoIGEgbW9kYWwgYnVzeSBzdGF0ZSB3aGlsZSB0aGUgcmVxdWVzdHMgdGhhdCBhcmVcclxuICAgICAqIGxhdW5jaGVkIGJ5IHRoZSBleGVjdXRlIG1ldGhvZCBhcmUgcnVubmluZy5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IE5PX01PREFMX0JVU1lfU1RBVEUgPSAnTk9fTU9EQUxfQlVTWV9TVEFURSc7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZXhlY3V0ZSgpIG1ldGhvZCBvcHRpb24gdGhhdCB0ZWxscyB0aGUgc2VydmljZSB0byBza2lwIHNob3dpbmcgYW4gZXJyb3IgZGlhbG9nIHdoZW4gYSByZXF1ZXN0IGZhaWxzLiBXZSBub3JtYWxseSB1c2UgdGhpcyB0byBoYW5kbGUgdGhlXHJcbiAgICAgKiBlcnJvcnMgYnkgb3Vyc2VsdmVzIG9yIGlmIHdlIHdhbnQgdG8gaGlkZSB0aGUgZXJyb3IgZGlhbG9nIGZvciBhIHNwZWNpZmljIHJlcXVlc3QuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZWFkb25seSBESVNBQkxFX0VSUk9SX0hBTkRMSU5HID0gJ0RJU0FCTEVfRVJST1JfSEFORExJTkcnO1xyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSkge1xyXG5cclxuICAgICAgICBzdXBlcih0cnVlKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzYW1lIG1ldGhvZCBhcyBIVFRQTWFuYWdlci5leGVjdXRlIGJ1dCB3aXRoIHRoZSBhYmlsaXR5IHRvIGVuYWJsZSBzZXZlcmFsIG9wdGlvbnMgd2hpY2ggYXJlIHNwZWNpZmljIHRvIHRoaXMgc2VydmljZTpcclxuICAgICAqXHJcbiAgICAgKiAtIEhUVFBTZXJ2aWNlLk5PX01PREFMX0JVU1lfU1RBVEUgVG8gcHJldmVudCB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgb2YgbG9ja2luZyB0aGUgVUkgd2hpbGUgdGhlIHJlcXVlc3QgaXMgcnVubmluZ1xyXG4gICAgICogLSBIVFRQU2VydmljZS5ESVNBQkxFX0VSUk9SX0hBTkRMSU5HIFRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHNob3dpbmcgYSBkZXRhaWxlZCBlcnJvciBkaWFsb2cgd2hlbiBhIHJlcXVlc3QgZmFpbHNcclxuICAgICAqXHJcbiAgICAgKiBAc2VlIEhUVFBNYW5hZ2VyLmV4ZWN1dGUoKVxyXG4gICAgICovXHJcbiAgICBleGVjdXRlKHJlcXVlc3RzOiBzdHJpbmd8c3RyaW5nW118SFRUUE1hbmFnZXJCYXNlUmVxdWVzdHxIVFRQTWFuYWdlckJhc2VSZXF1ZXN0W10sXHJcbiAgICAgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2s6ICgocmVzdWx0czoge3VybDpzdHJpbmcsIHJlc3BvbnNlOmFueSwgaXNFcnJvcjpib29sZWFuLCBlcnJvck1zZzpzdHJpbmcsIGNvZGU6bnVtYmVyfVtdLCBhbnlFcnJvcjpib29sZWFuKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsLFxyXG4gICAgICAgICAgICBwcm9ncmVzc0NhbGxiYWNrOiBudWxsIHwgKChjb21wbGV0ZWRVcmw6IHN0cmluZywgdG90YWxSZXF1ZXN0czogbnVtYmVyKSA9PiB2b2lkKSA9IG51bGwsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6ICh0eXBlb2YgSFRUUFNlcnZpY2UuTk9fTU9EQUxfQlVTWV9TVEFURXx0eXBlb2YgSFRUUFNlcnZpY2UuRElTQUJMRV9FUlJPUl9IQU5ETElORylbXSA9IFtdKXtcclxuICAgIFxyXG4gICAgICAgIGlmKG9wdGlvbnMuaW5kZXhPZihIVFRQU2VydmljZS5OT19NT0RBTF9CVVNZX1NUQVRFKSA8IDApe1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGRNb2RhbEJ1c3lTdGF0ZSgpOyBcclxuICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICBzdXBlci5leGVjdXRlKHJlcXVlc3RzLCAocmVzdWx0cywgYW55RXJyb3IpID0+IHsgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZihvcHRpb25zLmluZGV4T2YoSFRUUFNlcnZpY2UuTk9fTU9EQUxfQlVTWV9TVEFURSkgPCAwKXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZU1vZGFsQnVzeVN0YXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKChvcHRpb25zLmluZGV4T2YoSFRUUFNlcnZpY2UuRElTQUJMRV9FUlJPUl9IQU5ETElORykgPCAwKSAmJiBhbnlFcnJvcil7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgcmVzdWx0IG9mIHJlc3VsdHMpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdC5pc0Vycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvck1zZyA9IHJlc3VsdC5lcnJvck1zZyArICdcXG5cXG4nICsgcmVzdWx0LnJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoU3RyaW5nVXRpbHMuaXNFbXB0eShlcnJvck1zZykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTXNnID0gJ1Vua25vd24gZXJyb3IuIE1ha2Ugc3VyZSBJbnRlcm5ldCBjb25uZWN0aW9uIGlzIGF2YWlsYWJsZSc7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmFkZERpYWxvZygnNjAwcHgnLCBbJ0Vycm9yOiAnICsgcmVzdWx0LmNvZGUsIGVycm9yTXNnXSwgWydPayddLCBEaWFsb2dFcnJvckNvbXBvbmVudCk7ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKGZpbmlzaGVkQ2FsbGJhY2sgIT09IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBmaW5pc2hlZENhbGxiYWNrKHJlc3VsdHMsIGFueUVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgfSwgcHJvZ3Jlc3NDYWxsYmFjayk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,19 +0,0 @@
1
- /**
2
- * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
- *
4
- * Website : -> http://www.turbogui.org
5
- * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
- * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
- * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
- */
9
- import { Injectable } from '@angular/core';
10
- import { LocalizationManager } from 'turbocommons-ts';
11
- /**
12
- * Manages application text translations and languages
13
- */
14
- export class LocalizationService extends LocalizationManager {
15
- }
16
- LocalizationService.decorators = [
17
- { type: Injectable }
18
- ];
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHdEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsbUJBQW1COzs7WUFEM0QsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uTWFuYWdlciB9IGZyb20gJ3R1cmJvY29tbW9ucy10cyc7XHJcblxyXG5cclxuLyoqXHJcbiAqIE1hbmFnZXMgYXBwbGljYXRpb24gdGV4dCB0cmFuc2xhdGlvbnMgYW5kIGxhbmd1YWdlc1xyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSBleHRlbmRzIExvY2FsaXphdGlvbk1hbmFnZXIge1xyXG5cclxufVxyXG4iXX0=
@@ -1,53 +0,0 @@
1
- /**
2
- * TurboGUI is A library that helps with the most common and generic UI elements and functionalities
3
- *
4
- * Website : -> http://www.turbogui.org
5
- * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
6
- * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
7
- * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
- */
9
- import { Injectable } from '@angular/core';
10
- import { Subject } from 'rxjs';
11
- /**
12
- * This is the main application event bus.
13
- * All global events that happen on the application are broadcasted by this service, and
14
- * can be listened by any application element who previously subscribed
15
- */
16
- export class NotificationService {
17
- constructor() {
18
- /**
19
- * The Observable instance that handles subscriptions and notifications
20
- */
21
- this._notifications = new Subject();
22
- }
23
- /**
24
- * used by other services or components to subscribe to all notifications that are generated by this service
25
- *
26
- * @param notificationHandler A method that will be used to receive each notification as a GUINotification instance
27
- *
28
- * @returns The new subscription object. Make sure to unsubscribe when not required anymore
29
- */
30
- subscribe(notificationHandler) {
31
- return this._notifications.subscribe(notificationHandler);
32
- }
33
- /**
34
- * Launch a notification to anyone who may be listening
35
- *
36
- * @param notification A notification instance to launch
37
- */
38
- send(notification) {
39
- this._notifications.next(notification);
40
- }
41
- /**
42
- * End a previously initiated subscription
43
- *
44
- * @param subscription A previously created subscription instance from which we want to unsubscribe
45
- */
46
- unsubscribe(subscription) {
47
- return subscription.unsubscribe();
48
- }
49
- }
50
- NotificationService.decorators = [
51
- { type: Injectable }
52
- ];
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFJN0M7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFJSTs7V0FFRztRQUNjLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7SUFvQ3JFLENBQUM7SUFqQ0c7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLG1CQUEyRDtRQUVqRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUdEOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsWUFBNkI7UUFFOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUdEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsWUFBMEI7UUFFbEMsT0FBTyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQzs7O1lBMUNKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHVUlOb3RpZmljYXRpb24gfSBmcm9tICcuLi9tb2RlbC9jbGFzc2VzL0dVSU5vdGlmaWNhdGlvbic7XHJcblxyXG5cclxuLyoqXHJcbiAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbGljYXRpb24gZXZlbnQgYnVzLlxyXG4gKiBBbGwgZ2xvYmFsIGV2ZW50cyB0aGF0IGhhcHBlbiBvbiB0aGUgYXBwbGljYXRpb24gYXJlIGJyb2FkY2FzdGVkIGJ5IHRoaXMgc2VydmljZSwgYW5kXHJcbiAqIGNhbiBiZSBsaXN0ZW5lZCBieSBhbnkgYXBwbGljYXRpb24gZWxlbWVudCB3aG8gcHJldmlvdXNseSBzdWJzY3JpYmVkXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25TZXJ2aWNlIHtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgT2JzZXJ2YWJsZSBpbnN0YW5jZSB0aGF0IGhhbmRsZXMgc3Vic2NyaXB0aW9ucyBhbmQgbm90aWZpY2F0aW9uc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ub3RpZmljYXRpb25zID0gbmV3IFN1YmplY3Q8R1VJTm90aWZpY2F0aW9uPigpO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIHVzZWQgYnkgb3RoZXIgc2VydmljZXMgb3IgY29tcG9uZW50cyB0byBzdWJzY3JpYmUgdG8gYWxsIG5vdGlmaWNhdGlvbnMgdGhhdCBhcmUgZ2VuZXJhdGVkIGJ5IHRoaXMgc2VydmljZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBub3RpZmljYXRpb25IYW5kbGVyIEEgbWV0aG9kIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJlY2VpdmUgZWFjaCBub3RpZmljYXRpb24gYXMgYSBHVUlOb3RpZmljYXRpb24gaW5zdGFuY2VcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgbmV3IHN1YnNjcmlwdGlvbiBvYmplY3QuIE1ha2Ugc3VyZSB0byB1bnN1YnNjcmliZSB3aGVuIG5vdCByZXF1aXJlZCBhbnltb3JlXHJcbiAgICAgKi9cclxuICAgIHN1YnNjcmliZShub3RpZmljYXRpb25IYW5kbGVyOiAobm90aWZpY2F0aW9uOiBHVUlOb3RpZmljYXRpb24pID0+IGFueSkge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9ucy5zdWJzY3JpYmUobm90aWZpY2F0aW9uSGFuZGxlcik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGF1bmNoIGEgbm90aWZpY2F0aW9uIHRvIGFueW9uZSB3aG8gbWF5IGJlIGxpc3RlbmluZ1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBub3RpZmljYXRpb24gQSBub3RpZmljYXRpb24gaW5zdGFuY2UgdG8gbGF1bmNoXHJcbiAgICAgKi9cclxuICAgIHNlbmQobm90aWZpY2F0aW9uOiBHVUlOb3RpZmljYXRpb24pIHtcclxuXHJcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucy5uZXh0KG5vdGlmaWNhdGlvbik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW5kIGEgcHJldmlvdXNseSBpbml0aWF0ZWQgc3Vic2NyaXB0aW9uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHN1YnNjcmlwdGlvbiBBIHByZXZpb3VzbHkgY3JlYXRlZCBzdWJzY3JpcHRpb24gaW5zdGFuY2UgZnJvbSB3aGljaCB3ZSB3YW50IHRvIHVuc3Vic2NyaWJlXHJcbiAgICAgKi9cclxuICAgIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uKSB7XHJcblxyXG4gICAgICAgIHJldHVybiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxufVxyXG4iXX0=