@arsedizioni/ars-utils 18.5.61 → 19.0.1

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 (178) hide show
  1. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +14 -12
  2. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  3. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +41 -41
  4. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  5. package/fesm2022/arsedizioni-ars-utils-core.mjs +99 -99
  6. package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
  7. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +15 -13
  8. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs.map +1 -1
  9. package/fesm2022/arsedizioni-ars-utils-help.mjs +13 -13
  10. package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
  11. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +14 -12
  12. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  13. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +6 -6
  14. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
  15. package/fesm2022/arsedizioni-ars-utils-tinymce.mjs +7 -7
  16. package/fesm2022/arsedizioni-ars-utils-tinymce.mjs.map +1 -1
  17. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +58 -58
  18. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
  19. package/fesm2022/arsedizioni-ars-utils-ui.mjs +34 -34
  20. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  21. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +7 -7
  22. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs.map +1 -1
  23. package/fesm2022/arsedizioni-ars-utils.mjs.map +1 -1
  24. package/package.json +9 -33
  25. package/clipper.ui/ui/clipper.scss +0 -530
  26. package/esm2022/arsedizioni-ars-utils.mjs +0 -5
  27. package/esm2022/clipper.common/arsedizioni-ars-utils-clipper.common.mjs +0 -5
  28. package/esm2022/clipper.common/common/common.module.mjs +0 -16
  29. package/esm2022/clipper.common/common/definitions.mjs +0 -2041
  30. package/esm2022/clipper.common/common/interceptors/auth.interceptor.mjs +0 -100
  31. package/esm2022/clipper.common/common/messages.mjs +0 -36
  32. package/esm2022/clipper.common/common/services/clipper.service.mjs +0 -1009
  33. package/esm2022/clipper.common/public_api.mjs +0 -5
  34. package/esm2022/clipper.ui/arsedizioni-ars-utils-clipper.ui.mjs +0 -5
  35. package/esm2022/clipper.ui/documents.mjs +0 -50
  36. package/esm2022/clipper.ui/public_api.mjs +0 -18
  37. package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +0 -766
  38. package/esm2022/clipper.ui/ui/document/document.component.mjs +0 -688
  39. package/esm2022/clipper.ui/ui/document-index/document-index.component.mjs +0 -118
  40. package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +0 -441
  41. package/esm2022/clipper.ui/ui/document-menu/document-menu.component.mjs +0 -217
  42. package/esm2022/clipper.ui/ui/references/references.component.mjs +0 -380
  43. package/esm2022/clipper.ui/ui/search-calendar/search-calendar.component.mjs +0 -116
  44. package/esm2022/clipper.ui/ui/search-dialog/search-dialog.component.mjs +0 -339
  45. package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +0 -251
  46. package/esm2022/clipper.ui/ui/search-free-text-help/search-free-text-help.component.mjs +0 -17
  47. package/esm2022/clipper.ui/ui/search-free-text-query-builder/search-free-text-query-builder.component.mjs +0 -106
  48. package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +0 -120
  49. package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +0 -531
  50. package/esm2022/core/arsedizioni-ars-utils-core.mjs +0 -5
  51. package/esm2022/core/core.module.mjs +0 -151
  52. package/esm2022/core/dateFnsAdapter.mjs +0 -203
  53. package/esm2022/core/definitions.mjs +0 -47
  54. package/esm2022/core/directives/autoFocusDirective.mjs +0 -22
  55. package/esm2022/core/directives/changeDateIntervalDirective.mjs +0 -48
  56. package/esm2022/core/directives/copyClipboardDirective.mjs +0 -46
  57. package/esm2022/core/directives/validators.mjs +0 -502
  58. package/esm2022/core/pipes/format.pipe.mjs +0 -53
  59. package/esm2022/core/pipes/replace.pipe.mjs +0 -29
  60. package/esm2022/core/pipes/safe-html.pipe.mjs +0 -24
  61. package/esm2022/core/pipes/safe-url.pipe.mjs +0 -24
  62. package/esm2022/core/pipes/search-callback.pipe.mjs +0 -21
  63. package/esm2022/core/pipes/search-filter.pipe.mjs +0 -50
  64. package/esm2022/core/public_api.mjs +0 -22
  65. package/esm2022/core/selectable.mjs +0 -131
  66. package/esm2022/core/services/broadcast.service.mjs +0 -35
  67. package/esm2022/core/services/broadcastChannelManager.mjs +0 -80
  68. package/esm2022/core/services/environment.service.mjs +0 -29
  69. package/esm2022/core/services/screen.service.mjs +0 -23
  70. package/esm2022/core/services/theme.service.mjs +0 -140
  71. package/esm2022/core/system.mjs +0 -664
  72. package/esm2022/evolution.common/arsedizioni-ars-utils-evolution.common.mjs +0 -5
  73. package/esm2022/evolution.common/common/common.module.mjs +0 -16
  74. package/esm2022/evolution.common/common/definitions.mjs +0 -454
  75. package/esm2022/evolution.common/common/interceptors/auth.interceptor.mjs +0 -100
  76. package/esm2022/evolution.common/common/messages.mjs +0 -8
  77. package/esm2022/evolution.common/common/services/evolution.service.mjs +0 -488
  78. package/esm2022/evolution.common/public_api.mjs +0 -5
  79. package/esm2022/help/arsedizioni-ars-utils-help.mjs +0 -5
  80. package/esm2022/help/components/help-viewer/help-viewer.component.mjs +0 -442
  81. package/esm2022/help/definitions.mjs +0 -2
  82. package/esm2022/help/help.module.mjs +0 -12
  83. package/esm2022/help/public_api.mjs +0 -7
  84. package/esm2022/help/services/help.service.mjs +0 -77
  85. package/esm2022/public_api.mjs +0 -15
  86. package/esm2022/support.common/arsedizioni-ars-utils-support.common.mjs +0 -5
  87. package/esm2022/support.common/common/common.module.mjs +0 -16
  88. package/esm2022/support.common/common/definitions.mjs +0 -29
  89. package/esm2022/support.common/common/interceptors/auth.interceptor.mjs +0 -100
  90. package/esm2022/support.common/common/messages.mjs +0 -13
  91. package/esm2022/support.common/common/services/support.service.mjs +0 -287
  92. package/esm2022/support.common/public_api.mjs +0 -8
  93. package/esm2022/support.ui/arsedizioni-ars-utils-support.ui.mjs +0 -5
  94. package/esm2022/support.ui/public_api.mjs +0 -5
  95. package/esm2022/support.ui/ui/notifications-browser/notification/notification.component.mjs +0 -80
  96. package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +0 -233
  97. package/esm2022/tinymce/arsedizioni-ars-utils-tinymce.mjs +0 -5
  98. package/esm2022/tinymce/full-screen-editor/full-screen-editor.component.mjs +0 -48
  99. package/esm2022/tinymce/public_api.mjs +0 -7
  100. package/esm2022/tinymce/tinymce.module.mjs +0 -19
  101. package/esm2022/tinymce/utils.mjs +0 -150
  102. package/esm2022/ui/arsedizioni-ars-utils-ui.mjs +0 -5
  103. package/esm2022/ui/public_api.mjs +0 -12
  104. package/esm2022/ui/ui/components/button-selector/button-selector.component.mjs +0 -150
  105. package/esm2022/ui/ui/components/button-toggle/button-toggle.component.mjs +0 -51
  106. package/esm2022/ui/ui/components/calendar-empty-header/calendar-empy-header.component.mjs +0 -30
  107. package/esm2022/ui/ui/components/chips-selector/chips-selector.component.mjs +0 -272
  108. package/esm2022/ui/ui/components/file-input/file-input.component.mjs +0 -264
  109. package/esm2022/ui/ui/components/file-preview/file-preview.component.mjs +0 -73
  110. package/esm2022/ui/ui/components/filter-bar/filter-bar.component.mjs +0 -356
  111. package/esm2022/ui/ui/definitions.mjs +0 -2
  112. package/esm2022/ui/ui/dialogs/busy/busy-dialog.component.mjs +0 -47
  113. package/esm2022/ui/ui/dialogs/confirm/confirm-dialog.component.mjs +0 -101
  114. package/esm2022/ui/ui/dialogs/credentials/credentials-dialog.component.mjs +0 -86
  115. package/esm2022/ui/ui/dialogs/info/info-dialog.component.mjs +0 -51
  116. package/esm2022/ui/ui/dialogs/prompt/prompt-dialog.component.mjs +0 -77
  117. package/esm2022/ui/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +0 -79
  118. package/esm2022/ui/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +0 -72
  119. package/esm2022/ui/ui/dialogs/recover-password/recover-password-dialog.component.mjs +0 -49
  120. package/esm2022/ui/ui/dialogs/reset-password/reset-password-dialog.component.mjs +0 -89
  121. package/esm2022/ui/ui/dialogs/select/select-dialog.component.mjs +0 -374
  122. package/esm2022/ui/ui/dialogs/select-file/select-file-dialog.component.mjs +0 -106
  123. package/esm2022/ui/ui/dialogs/select-picture/select-picture-dialog.component.mjs +0 -62
  124. package/esm2022/ui/ui/dialogs/select-tree/select-tree-dialog.component.mjs +0 -277
  125. package/esm2022/ui/ui/dialogs/send-to/send-to-dialog.component.mjs +0 -90
  126. package/esm2022/ui/ui/dialogs/toast/toast.component.mjs +0 -32
  127. package/esm2022/ui/ui/directives/resize-table-column.directive.mjs +0 -63
  128. package/esm2022/ui/ui/filters.mjs +0 -43
  129. package/esm2022/ui/ui/paginatorIntl.mjs +0 -34
  130. package/esm2022/ui/ui/services/dialog.service.mjs +0 -417
  131. package/esm2022/ui/ui/services/ui.service.mjs +0 -21
  132. package/esm2022/ui/ui/ui.module.mjs +0 -21
  133. package/esm2022/ui.application/arsedizioni-ars-utils-ui.application.mjs +0 -5
  134. package/esm2022/ui.application/public_api.mjs +0 -21
  135. package/esm2022/ui.application/ui/components/button-selector/button-selector.component.mjs +0 -150
  136. package/esm2022/ui.application/ui/components/button-toggle/button-toggle.component.mjs +0 -51
  137. package/esm2022/ui.application/ui/components/calendar-empty-header/calendar-empy-header.component.mjs +0 -30
  138. package/esm2022/ui.application/ui/components/chips-selector/chips-selector.component.mjs +0 -272
  139. package/esm2022/ui.application/ui/components/file-input/file-input.component.mjs +0 -264
  140. package/esm2022/ui.application/ui/components/file-preview/file-preview.component.mjs +0 -73
  141. package/esm2022/ui.application/ui/components/filter-bar/filter-bar.component.mjs +0 -356
  142. package/esm2022/ui.application/ui/definitions.mjs +0 -31
  143. package/esm2022/ui.application/ui/dialogs/prompt/prompt-dialog.component.mjs +0 -77
  144. package/esm2022/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +0 -79
  145. package/esm2022/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +0 -72
  146. package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +0 -374
  147. package/esm2022/ui.application/ui/dialogs/select-file/select-file-dialog.component.mjs +0 -106
  148. package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs +0 -62
  149. package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +0 -277
  150. package/esm2022/ui.application/ui/dialogs/send-to/send-to-dialog.component.mjs +0 -90
  151. package/esm2022/ui.application/ui/directives/resize-table-column.directive.mjs +0 -63
  152. package/esm2022/ui.application/ui/filters.mjs +0 -43
  153. package/esm2022/ui.application/ui/services/applicationDialog.service.mjs +0 -304
  154. package/esm2022/ui.application/ui/ui.module.mjs +0 -30
  155. package/esm2022/ui.oauth/arsedizioni-ars-utils-ui.oauth.mjs +0 -5
  156. package/esm2022/ui.oauth/public_api.mjs +0 -6
  157. package/esm2022/ui.oauth/ui/components/login/login-oauth.component.mjs +0 -199
  158. package/esm2022/ui.oauth/ui/definitions.mjs +0 -7
  159. package/esm2022/ui.oauth/ui/ui.module.mjs +0 -13
  160. package/styles/ui.colors.scss +0 -77
  161. package/styles/ui.scss +0 -318
  162. package/ui/ui/components/button-selector/button-selector.component.d.ts +0 -52
  163. package/ui/ui/components/button-toggle/button-toggle.component.d.ts +0 -28
  164. package/ui/ui/components/calendar-empty-header/calendar-empy-header.component.d.ts +0 -11
  165. package/ui/ui/components/chips-selector/chips-selector.component.d.ts +0 -82
  166. package/ui/ui/components/file-input/file-input.component.d.ts +0 -88
  167. package/ui/ui/components/file-preview/file-preview.component.d.ts +0 -26
  168. package/ui/ui/components/filter-bar/filter-bar.component.d.ts +0 -83
  169. package/ui/ui/dialogs/prompt/prompt-dialog.component.d.ts +0 -18
  170. package/ui/ui/dialogs/prompt-date/prompt-date-dialog.component.d.ts +0 -18
  171. package/ui/ui/dialogs/prompt-time/prompt-time-dialog.component.d.ts +0 -18
  172. package/ui/ui/dialogs/select/select-dialog.component.d.ts +0 -122
  173. package/ui/ui/dialogs/select-file/select-file-dialog.component.d.ts +0 -36
  174. package/ui/ui/dialogs/select-picture/select-picture-dialog.component.d.ts +0 -26
  175. package/ui/ui/dialogs/select-tree/select-tree-dialog.component.d.ts +0 -98
  176. package/ui/ui/dialogs/send-to/send-to-dialog.component.d.ts +0 -28
  177. package/ui/ui/directives/resize-table-column.directive.d.ts +0 -19
  178. package/ui/ui/filters.d.ts +0 -57
@@ -1,417 +0,0 @@
1
- import { Overlay } from '@angular/cdk/overlay';
2
- import { ComponentPortal } from '@angular/cdk/portal';
3
- import { PlatformLocation } from '@angular/common';
4
- import { inject, Injectable } from '@angular/core';
5
- import { MatDialog } from '@angular/material/dialog';
6
- import { MatSnackBar } from '@angular/material/snack-bar';
7
- import { SystemUtils } from '@arsedizioni/ars-utils/core';
8
- import { first } from 'rxjs/operators';
9
- import { BusyDialogComponent } from '../dialogs/busy/busy-dialog.component';
10
- import { ConfirmDialogComponent } from '../dialogs/confirm/confirm-dialog.component';
11
- import { InfoDialogComponent } from '../dialogs/info/info-dialog.component';
12
- import { ToastComponent } from '../dialogs/toast/toast.component';
13
- import { UIService } from './ui.service';
14
- import * as i0 from "@angular/core";
15
- export class DialogService extends UIService {
16
- constructor() {
17
- super();
18
- this.dialog = inject(MatDialog);
19
- this.overlay = inject(Overlay);
20
- this.snackBar = inject(MatSnackBar);
21
- this.location = inject(PlatformLocation);
22
- this.popHistory = [];
23
- this.popState = true;
24
- this.poppingState = false;
25
- // Handle dialog close when back button is clicked
26
- this.location.onPopState(() => {
27
- if (!this.poppingState) {
28
- const count = this.dialog.openDialogs.length;
29
- if (count > 0) {
30
- // Disable pop sate if case
31
- this.popState = false;
32
- // Close dialog
33
- this.dialog.openDialogs[count - 1].close();
34
- }
35
- }
36
- else
37
- this.poppingState = false;
38
- });
39
- }
40
- /**
41
- * Clear url from # in case of page reload
42
- * @param resetPoppingState: true if popping state should be set to false
43
- */
44
- clearUrl(resetPoppingState = false) {
45
- const url = location.href;
46
- let l = url.length;
47
- while (l >= 0 && url[l - 1] === '#')
48
- l--;
49
- if (l < url.length)
50
- history.replaceState({}, '', url.substring(0, l));
51
- if (resetPoppingState)
52
- this.poppingState = false;
53
- }
54
- /**
55
- * Close all dialogs
56
- */
57
- closeAll() {
58
- this.dialog.openDialogs.forEach(n => {
59
- n.close();
60
- });
61
- }
62
- /**
63
- * Open a dialog
64
- * @param component : the component
65
- * @param config : the config
66
- * @returns: the dialog object
67
- */
68
- open(component, config) {
69
- if (!SystemUtils.isBrowser())
70
- return null;
71
- this.clearBusy();
72
- return this.openDialog(component, config);
73
- }
74
- /**
75
- * Open a dialog
76
- * @param component : the component
77
- * @param config : the config
78
- * @returns : the dialog object
79
- */
80
- openDialog(component, config) {
81
- // We will take care of navigation
82
- config.closeOnNavigation = false;
83
- let d = this.dialog.open(component, config);
84
- d.afterOpened().subscribe(() => {
85
- this.pushDialog(d.id);
86
- });
87
- d.beforeClosed().subscribe(() => {
88
- this.popDialog(d.id);
89
- });
90
- d.afterClosed().subscribe(() => {
91
- // Final cleanup of middle objects
92
- this.errorDialogRef = null;
93
- });
94
- return d;
95
- }
96
- /**
97
- * Returns the element height including margins
98
- * @param element - element
99
- * @returns the height
100
- */
101
- outerHeight(element) {
102
- if (!SystemUtils.isBrowser())
103
- return 0;
104
- const height = element.offsetHeight, style = window.getComputedStyle(element);
105
- let h = ['top', 'bottom']
106
- .map(side => parseInt(style.getPropertyValue('margin-' + side)))
107
- .reduce((total, side) => total + side, height);
108
- return h;
109
- }
110
- /**
111
- * Return current dialog height
112
- */
113
- getCurrentDialogHeight() {
114
- if (!SystemUtils.isBrowser())
115
- return 0;
116
- const count = this.popHistory.length;
117
- if (count > 0) {
118
- let id = this.popHistory[count - 1].id;
119
- let elem = document.getElementById(id);
120
- if (elem && elem.clientHeight > 0)
121
- return elem.clientHeight;
122
- }
123
- return 0;
124
- }
125
- /**
126
- * Return current dialog scrollable height
127
- */
128
- getCurrentDialogScrollableHeight(fixedPartsClassName, minimalHeight) {
129
- if (!SystemUtils.isBrowser())
130
- return 0;
131
- let h = this.getCurrentDialogHeight();
132
- if (h < minimalHeight) {
133
- h = minimalHeight;
134
- }
135
- if (fixedPartsClassName) {
136
- fixedPartsClassName.forEach(n => {
137
- const elems = document.getElementsByClassName(n);
138
- if (elems) {
139
- for (let i = 0; i < elems.length; i++) {
140
- h -= this.outerHeight(elems[i]);
141
- }
142
- }
143
- });
144
- }
145
- return h;
146
- }
147
- /**
148
- * Push a dialog info the history
149
- */
150
- pushDialog(id) {
151
- if (!SystemUtils.isBrowser())
152
- return;
153
- let index = history.length;
154
- history.pushState({ index: index }, null, location.href + '#');
155
- this.popHistory.push({ id: id, value: index });
156
- }
157
- /**
158
- * Pop a dialog from the history
159
- */
160
- popDialog(id = null) {
161
- if (!SystemUtils.isBrowser())
162
- return;
163
- if (this.popState) {
164
- this.poppingState = true;
165
- let popped = 1;
166
- if (id) {
167
- const p = this.popHistory.findIndex((n) => n.id === id);
168
- if (p != -1) {
169
- popped = this.popHistory[p].value - history.state.index;
170
- if (popped)
171
- popped++;
172
- else
173
- popped = 1;
174
- this.popHistory.splice(p, 1);
175
- }
176
- const url = location.href;
177
- let l = url.length;
178
- while (l >= 0 && url[l - 1] === '#' && popped > 0) {
179
- l--;
180
- popped--;
181
- }
182
- if (l < url.length)
183
- history.replaceState({}, '', url.substring(0, l));
184
- }
185
- }
186
- this.popState = true;
187
- }
188
- /**
189
- * Create the busy overlay
190
- * @param type: the type of spinner to create
191
- * @returns: the new overlay
192
- */
193
- createBusy() {
194
- return this.overlay.create({
195
- hasBackdrop: true,
196
- backdropClass: 'busy-backdrop',
197
- positionStrategy: this.overlay.position()
198
- .global()
199
- .centerHorizontally()
200
- .centerVertically()
201
- });
202
- }
203
- /**
204
- * Clear busy dialog
205
- */
206
- clearBusy() {
207
- this.busyComponentRef?.destroy();
208
- this.busyDialogRef?.detach();
209
- }
210
- /**
211
- * Update busy dialog
212
- * @param message : new message
213
- * @param progress : new progress
214
- * @param progressMode : new mode (default = 'indeterminate')
215
- * @param type: new type (default = 'hourglass')
216
- * @param action : action to do during the execution (optional)
217
- * @returns true if a new popup has been opened
218
- */
219
- setBusy(message, progress = -1, progressMode = 'indeterminate', type = 'bar', action = null) {
220
- const exists = this.busyDialogRef?.hasAttached();
221
- if (exists) {
222
- this.busyComponentRef.instance.set(message, progress, progressMode, type); // Use the same
223
- }
224
- else {
225
- // Open new
226
- if (!this.busyDialogRef) {
227
- this.busyDialogRef = this.createBusy();
228
- }
229
- this.busyComponentRef = this.busyDialogRef.attach(new ComponentPortal(BusyDialogComponent));
230
- this.busyComponentRef.instance.set(message, progress, progressMode, type);
231
- if (action) {
232
- action
233
- .pipe(first())
234
- .subscribe(() => {
235
- this.clearBusy();
236
- });
237
- }
238
- }
239
- return !exists;
240
- }
241
- /**
242
- * Display a busy dialog
243
- * @param message : new message
244
- * @param progress : new progress
245
- * @param progressMode : new mode (default = 'indeterminate')
246
- * @param action : action to do during the execution (optional)
247
- * @returns true if a new popup has been opened
248
- */
249
- busy(message, progress = -1, progressMode = 'indeterminate', action = null) {
250
- return this.setBusy(message, progress, progressMode, 'bar', action);
251
- }
252
- /**
253
- * Display a busy indeterminate dialog as hourglass
254
- * @param message : new message
255
- * @param action : action to do during the execution (optional)
256
- * @returns true if a new popup has been opened
257
- */
258
- busyHourglass(message, action = null) {
259
- return this.setBusy(message, null, null, 'hourglass', action);
260
- }
261
- /**
262
- * Display a busy spinner dialog
263
- * @param message : new message
264
- * @param progress : new progress
265
- * @param progressMode : new mode (default = 'indeterminate')
266
- * @param action : action to do during the execution (optional)
267
- * @returns true if a new popup has been opened
268
- */
269
- busySpinner(message, progress = -1, progressMode = 'indeterminate', action = null) {
270
- return this.setBusy(message, progress, progressMode, 'spinner', action);
271
- }
272
- /**
273
- * Display a wait spinner
274
- * @param action : action to do during the execution (optional)
275
- * @returns true if a new popup has been opened
276
- */
277
- wait(action = null) {
278
- return this.setBusy(null, null, null, 'wait', action);
279
- }
280
- /**
281
- * Display an information dialog
282
- * @param message : message
283
- * @param title : dialog title
284
- * @param okCaption : ok button caption
285
- * @param width: the preferred width
286
- * @param dismissAfter: if specified, the dialog will be closed after dismissAfter milliseconds
287
- * @param details: if specified, the details info
288
- * @param onNavigate: the callback to use for navigation. Default is null
289
- */
290
- info(message, title = 'Informazioni', okCaption = 'Ok', width = 500, dismissAfter = null, details = null, onNavigate = null) {
291
- this.clearBusy();
292
- return this.open(InfoDialogComponent, {
293
- ariaLabel: 'informazioni',
294
- autoFocus: true,
295
- restoreFocus: false,
296
- data: {
297
- message: message,
298
- title: title,
299
- okCaption: okCaption,
300
- dismissAfter: dismissAfter,
301
- details: details,
302
- onNavigate: onNavigate,
303
- appearance: 'fill'
304
- },
305
- closeOnNavigation: false,
306
- minWidth: '375px',
307
- maxWidth: width + 'px',
308
- width: '100%'
309
- });
310
- }
311
- /**
312
- * Display an error dialog
313
- * @param message : message
314
- * @param log : the error log
315
- * @param title : dialog title
316
- * @param okCaption : ok button caption
317
- * @param width: the preferred width
318
- * @param dismissAfter: if specified, the dialog will be closed after dismissAfter milliseconds
319
- */
320
- error(message, log = null, title = 'Errore', okCaption = 'Ok', width = 500, dismissAfter = null) {
321
- this.clearBusy();
322
- if (this.errorDialogRef) {
323
- // Just change current error
324
- this.errorDialogRef.componentInstance.setData({
325
- message: message,
326
- title: title,
327
- details: log,
328
- okCaption: okCaption,
329
- dismissAfter: dismissAfter
330
- });
331
- return this.errorDialogRef;
332
- }
333
- this.errorDialogRef = this.open(InfoDialogComponent, {
334
- ariaLabel: 'errore',
335
- autoFocus: true,
336
- restoreFocus: false,
337
- data: {
338
- message: message,
339
- title: title,
340
- details: log,
341
- okCaption: okCaption,
342
- dismissAfter: dismissAfter,
343
- appearance: 'fill'
344
- },
345
- closeOnNavigation: false,
346
- minWidth: '375px',
347
- maxWidth: width + 'px',
348
- width: '100%'
349
- });
350
- return this.errorDialogRef;
351
- }
352
- /**
353
- * Display toast
354
- * @param message : message to display
355
- * @param duration : duration in msec
356
- * @param icon : the mat-icon to display
357
- * @param actionCaption action button caption
358
- */
359
- toast(message, duration = 2000, icon = 'check', actionCaption = null) {
360
- this.clearBusy();
361
- if (duration === -1)
362
- duration = 2000; // default
363
- let toastRef = this.snackBar.openFromComponent(ToastComponent, {
364
- duration: duration,
365
- data: {
366
- message: message,
367
- icon: icon,
368
- actionCaption: actionCaption
369
- }
370
- });
371
- toastRef.instance.action.subscribe(() => {
372
- toastRef.dismiss();
373
- });
374
- return toastRef;
375
- }
376
- /**
377
- * Display a confirm dialog
378
- * @param message : html message
379
- * @param title : dialog title
380
- * @param okCaption : ok button caption
381
- * @param cancelCaption : cancel button caption
382
- * @param otherCaption : other button caption
383
- * @param options: check box options
384
- * @param width: the preferred width
385
- */
386
- confirm(message, title = 'Conferma', okCaption = 'Si', cancelCaption = 'No', otherCaption = null, options = null, width = 500, details = null) {
387
- return this.open(ConfirmDialogComponent, {
388
- ariaLabel: 'conferma',
389
- autoFocus: true,
390
- restoreFocus: false,
391
- data: {
392
- message: message,
393
- title: title,
394
- okCaption: okCaption,
395
- cancelCaption: cancelCaption,
396
- otherCaption: otherCaption,
397
- options: options,
398
- details: details,
399
- appearance: 'fill'
400
- },
401
- closeOnNavigation: false,
402
- disableClose: true,
403
- minWidth: '375px',
404
- maxWidth: width + 'px',
405
- width: '100%'
406
- });
407
- }
408
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
409
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DialogService, providedIn: 'root' }); }
410
- }
411
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DialogService, decorators: [{
412
- type: Injectable,
413
- args: [{
414
- providedIn: 'root'
415
- }]
416
- }], ctorParameters: () => [] });
417
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkvdWkvc2VydmljZXMvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFrQixNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUNMLG1CQUFtQixFQUNwQixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFDTCxzQkFBc0IsRUFHdkIsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsbUJBQW1CLEVBRXBCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBYSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBVXpDLE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBUztJQWExQztRQUNFLEtBQUssRUFBRSxDQUFDO1FBWkYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLGFBQVEsR0FBRyxNQUFN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QUk7WUFDdEIsS0FBSyxFQUFFLE1BQU07U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXZjVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciwgTWF0U25hY2tCYXJSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBTeXN0ZW1VdGlscyB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgQnVzeURpYWxvZ0NvbXBvbmVudFxyXG59IGZyb20gJy4uL2RpYWxvZ3MvYnVzeS9idXN5LWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIENvbmZpcm1EaWFsb2dDb21wb25lbnQsXHJcbiAgQ29uZmlybURpYWxvZ0RhdGEsXHJcbiAgQ29uZmlybURpYWxvZ09wdGlvblxyXG59IGZyb20gJy4uL2RpYWxvZ3MvY29uZmlybS9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIEluZm9EaWFsb2dDb21wb25lbnQsXHJcbiAgSW5mb0RpYWxvZ0RhdGFcclxufSBmcm9tICcuLi9kaWFsb2dzL2luZm8vaW5mby1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9hc3RDb21wb25lbnQsIFRvYXN0RGF0YSB9IGZyb20gJy4uL2RpYWxvZ3MvdG9hc3QvdG9hc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVUlTZXJ2aWNlIH0gZnJvbSAnLi91aS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURpYWxvZ1NlcnZpY2Uge1xyXG5cclxufVxyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2UgZXh0ZW5kcyBVSVNlcnZpY2UgIHtcclxuXHJcbiAgcHJpdmF0ZSBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcclxuICBwcml2YXRlIG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XHJcbiAgcHJpdmF0ZSBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XHJcbiAgcHJpdmF0ZSBsb2NhdGlvbiA9IGluamVjdChQbGF0Zm9ybUxvY2F0aW9uKTtcclxuICBwcml2YXRlIGJ1c3lEaWFsb2dSZWY6IE92ZXJsYXlSZWY7XHJcbiAgcHJpdmF0ZSBidXN5Q29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8QnVzeURpYWxvZ0NvbXBvbmVudD47XHJcbiAgcHJpdmF0ZSBlcnJvckRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEluZm9EaWFsb2dDb21wb25lbnQ+O1xyXG4gIHByaXZhdGUgcG9wSGlzdG9yeTogYW55ID0gW107XHJcbiAgcHJpdmF0ZSBwb3BTdGF0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHJpdmF0ZSBwb3BwaW5nU3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIC8vIEhhbmRsZSBkaWFsb2cgY2xvc2Ugd2hlbiBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkXHJcbiAgICB0aGlzLmxvY2F0aW9uLm9uUG9wU3RhdGUoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucG9wcGluZ1N0YXRlKSB7XHJcbiAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGNvdW50ID4gMCkge1xyXG4gICAgICAgICAgLy8gRGlzYWJsZSBwb3Agc2F0ZSBpZiBjYXNlXHJcbiAgICAgICAgICB0aGlzLnBvcFN0YXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAvLyBDbG9zZSBkaWFsb2dcclxuICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzW2NvdW50IC0gMV0uY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB0aGlzLnBvcHBpbmdTdGF0ZSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB1cmwgZnJvbSAjIGluIGNhc2Ugb2YgcGFnZSByZWxvYWRcclxuICAgKiBAcGFyYW0gcmVzZXRQb3BwaW5nU3RhdGU6IHRydWUgaWYgcG9wcGluZyBzdGF0ZSBzaG91bGQgYmUgc2V0IHRvIGZhbHNlXHJcbiAgICovXHJcbiAgY2xlYXJVcmwocmVzZXRQb3BwaW5nU3RhdGU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgY29uc3QgdXJsID0gbG9jYXRpb24uaHJlZjtcclxuICAgIGxldCBsID0gdXJsLmxlbmd0aDtcclxuICAgIHdoaWxlIChsID49IDAgJiYgdXJsW2wgLSAxXSA9PT0gJyMnKSBsLS07XHJcbiAgICBpZiAobCA8IHVybC5sZW5ndGgpXHJcbiAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgdXJsLnN1YnN0cmluZygwLCBsKSk7XHJcbiAgICBpZiAocmVzZXRQb3BwaW5nU3RhdGUpXHJcbiAgICAgIHRoaXMucG9wcGluZ1N0YXRlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBhbGwgZGlhbG9nc1xyXG4gICAqL1xyXG4gIGNsb3NlQWxsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MuZm9yRWFjaChuID0+IHtcclxuICAgICAgbi5jbG9zZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBjb21wb25lbnQgOiB0aGUgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIGNvbmZpZyA6IHRoZSBjb25maWdcclxuICAgKiBAcmV0dXJuczogdGhlIGRpYWxvZyBvYmplY3RcclxuICAgKi9cclxuICBvcGVuKGNvbXBvbmVudDogYW55LCBjb25maWc6IGFueSk6IE1hdERpYWxvZ1JlZjxhbnk+IHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybiBudWxsO1xyXG4gICAgdGhpcy5jbGVhckJ1c3koKTtcclxuICAgIHJldHVybiB0aGlzLm9wZW5EaWFsb2coY29tcG9uZW50LCBjb25maWcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBPcGVuIGEgZGlhbG9nXHJcbiAqIEBwYXJhbSBjb21wb25lbnQgOiB0aGUgY29tcG9uZW50XHJcbiAqIEBwYXJhbSBjb25maWcgOiB0aGUgY29uZmlnXHJcbiAqIEByZXR1cm5zIDogdGhlIGRpYWxvZyBvYmplY3RcclxuICovXHJcbiAgcHJpdmF0ZSBvcGVuRGlhbG9nKGNvbXBvbmVudDogYW55LCBjb25maWc6IGFueSk6IE1hdERpYWxvZ1JlZjxhbnk+IHtcclxuICAgIC8vIFdlIHdpbGwgdGFrZSBjYXJlIG9mIG5hdmlnYXRpb25cclxuICAgIGNvbmZpZy5jbG9zZU9uTmF2aWdhdGlvbiA9IGZhbHNlO1xyXG4gICAgbGV0IGQgPSB0aGlzLmRpYWxvZy5vcGVuKGNvbXBvbmVudCwgY29uZmlnKTtcclxuICAgIGQuYWZ0ZXJPcGVuZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnB1c2hEaWFsb2coZC5pZCk7XHJcbiAgICB9KTtcclxuICAgIGQuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5wb3BEaWFsb2coZC5pZCk7XHJcbiAgICB9KTtcclxuICAgIGQuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyBGaW5hbCBjbGVhbnVwIG9mIG1pZGRsZSBvYmplY3RzXHJcbiAgICAgIHRoaXMuZXJyb3JEaWFsb2dSZWYgPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGVsZW1lbnQgaGVpZ2h0IGluY2x1ZGluZyBtYXJnaW5zXHJcbiAgICogQHBhcmFtIGVsZW1lbnQgLSBlbGVtZW50XHJcbiAgICogQHJldHVybnMgdGhlIGhlaWdodFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb3V0ZXJIZWlnaHQoZWxlbWVudDogYW55KTogbnVtYmVyIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybiAwO1xyXG4gICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQsXHJcbiAgICAgIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XHJcbiAgICBsZXQgaCA9IFsndG9wJywgJ2JvdHRvbSddXHJcbiAgICAgIC5tYXAoc2lkZSA9PiBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdtYXJnaW4tJyArIHNpZGUpKSlcclxuICAgICAgLnJlZHVjZSgodG90YWwsIHNpZGUpID0+IHRvdGFsICsgc2lkZSwgaGVpZ2h0KTtcclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIGN1cnJlbnQgZGlhbG9nIGhlaWdodFxyXG4gICAqL1xyXG4gIGdldEN1cnJlbnREaWFsb2dIZWlnaHQoKTogbnVtYmVyIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybiAwO1xyXG4gICAgY29uc3QgY291bnQgPSB0aGlzLnBvcEhpc3RvcnkubGVuZ3RoO1xyXG4gICAgaWYgKGNvdW50ID4gMCkge1xyXG4gICAgICBsZXQgaWQgPSB0aGlzLnBvcEhpc3RvcnlbY291bnQgLSAxXS5pZDtcclxuICAgICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgIGlmIChlbGVtICYmIGVsZW0uY2xpZW50SGVpZ2h0ID4gMCkgcmV0dXJuIGVsZW0uY2xpZW50SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gY3VycmVudCBkaWFsb2cgc2Nyb2xsYWJsZSBoZWlnaHRcclxuICAgKi9cclxuICBnZXRDdXJyZW50RGlhbG9nU2Nyb2xsYWJsZUhlaWdodChcclxuICAgIGZpeGVkUGFydHNDbGFzc05hbWU6IHN0cmluZ1tdLFxyXG4gICAgbWluaW1hbEhlaWdodDogbnVtYmVyXHJcbiAgKTogbnVtYmVyIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybiAwO1xyXG4gICAgbGV0IGggPSB0aGlzLmdldEN1cnJlbnREaWFsb2dIZWlnaHQoKTtcclxuICAgIGlmIChoIDwgbWluaW1hbEhlaWdodCkge1xyXG4gICAgICBoID0gbWluaW1hbEhlaWdodDtcclxuICAgIH1cclxuICAgIGlmIChmaXhlZFBhcnRzQ2xhc3NOYW1lKSB7XHJcbiAgICAgIGZpeGVkUGFydHNDbGFzc05hbWUuZm9yRWFjaChuID0+IHtcclxuICAgICAgICBjb25zdCBlbGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobik7XHJcbiAgICAgICAgaWYgKGVsZW1zKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGggLT0gdGhpcy5vdXRlckhlaWdodChlbGVtc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHVzaCBhIGRpYWxvZyBpbmZvIHRoZSBoaXN0b3J5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwdXNoRGlhbG9nKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybjtcclxuICAgIGxldCBpbmRleCA9IGhpc3RvcnkubGVuZ3RoO1xyXG4gICAgaGlzdG9yeS5wdXNoU3RhdGUoeyBpbmRleDogaW5kZXggfSwgbnVsbCwgbG9jYXRpb24uaHJlZiArICcjJyk7XHJcbiAgICB0aGlzLnBvcEhpc3RvcnkucHVzaCh7IGlkOiBpZCwgdmFsdWU6IGluZGV4IH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9wIGEgZGlhbG9nIGZyb20gdGhlIGhpc3RvcnlcclxuICAgKi9cclxuICBwcml2YXRlIHBvcERpYWxvZyhpZDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLnBvcFN0YXRlKSB7XHJcbiAgICAgIHRoaXMucG9wcGluZ1N0YXRlID0gdHJ1ZTtcclxuICAgICAgbGV0IHBvcHBlZCA9IDE7XHJcbiAgICAgIGlmIChpZCkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB0aGlzLnBvcEhpc3RvcnkuZmluZEluZGV4KChuOiBhbnkpID0+IG4uaWQgPT09IGlkKTtcclxuICAgICAgICBpZiAocCAhPSAtMSkge1xyXG4gICAgICAgICAgcG9wcGVkID0gdGhpcy5wb3BIaXN0b3J5W3BdLnZhbHVlIC0gaGlzdG9yeS5zdGF0ZS5pbmRleDtcclxuICAgICAgICAgIGlmIChwb3BwZWQpIHBvcHBlZCsrO1xyXG4gICAgICAgICAgZWxzZSBwb3BwZWQgPSAxO1xyXG4gICAgICAgICAgdGhpcy5wb3BIaXN0b3J5LnNwbGljZShwLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdXJsID0gbG9jYXRpb24uaHJlZjtcclxuICAgICAgICBsZXQgbCA9IHVybC5sZW5ndGg7XHJcbiAgICAgICAgd2hpbGUgKGwgPj0gMCAmJiB1cmxbbCAtIDFdID09PSAnIycgJiYgcG9wcGVkID4gMCkge1xyXG4gICAgICAgICAgbC0tO1xyXG4gICAgICAgICAgcG9wcGVkLS07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsIDwgdXJsLmxlbmd0aClcclxuICAgICAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgdXJsLnN1YnN0cmluZygwLCBsKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucG9wU3RhdGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIHRoZSBidXN5IG92ZXJsYXlcclxuICAgKiBAcGFyYW0gdHlwZTogdGhlIHR5cGUgb2Ygc3Bpbm5lciB0byBjcmVhdGVcclxuICAgKiBAcmV0dXJuczogdGhlIG5ldyBvdmVybGF5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVCdXN5KCk6IE92ZXJsYXlSZWYge1xyXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3BDbGFzczogJ2J1c3ktYmFja2Ryb3AnLFxyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxyXG4gICAgICAgIC5nbG9iYWwoKVxyXG4gICAgICAgIC5jZW50ZXJIb3Jpem9udGFsbHkoKVxyXG4gICAgICAgIC5jZW50ZXJWZXJ0aWNhbGx5KClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgYnVzeSBkaWFsb2dcclxuICAgKi9cclxuICBjbGVhckJ1c3koKSB7XHJcbiAgICB0aGlzLmJ1c3lDb21wb25lbnRSZWY/LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuYnVzeURpYWxvZ1JlZj8uZGV0YWNoKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGJ1c3kgZGlhbG9nXHJcbiAgICogQHBhcmFtIG1lc3NhZ2UgOiBuZXcgbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBwcm9ncmVzcyA6IG5ldyBwcm9ncmVzc1xyXG4gICAqIEBwYXJhbSBwcm9ncmVzc01vZGUgOiBuZXcgbW9kZSAoZGVmYXVsdCA9ICdpbmRldGVybWluYXRlJylcclxuICAgKiBAcGFyYW0gdHlwZTogbmV3IHR5cGUgKGRlZmF1bHQgPSAnaG91cmdsYXNzJylcclxuICAgKiBAcGFyYW0gYWN0aW9uIDogYWN0aW9uIHRvIGRvIGR1cmluZyB0aGUgZXhlY3V0aW9uIChvcHRpb25hbClcclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGEgbmV3IHBvcHVwIGhhcyBiZWVuIG9wZW5lZFxyXG4gICAqL1xyXG4gIHNldEJ1c3koXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBwcm9ncmVzczogbnVtYmVyID0gLTEsXHJcbiAgICBwcm9ncmVzc01vZGU6ICdkZXRlcm1pbmF0ZScgfCAnaW5kZXRlcm1pbmF0ZScgPSAnaW5kZXRlcm1pbmF0ZScsXHJcbiAgICB0eXBlOiAnYmFyJyB8ICdzcGlubmVyJyB8ICd3YWl0JyB8ICdob3VyZ2xhc3MnID0gJ2JhcicsXHJcbiAgICBhY3Rpb246IE9ic2VydmFibGU8T2JqZWN0PiB8IG51bGwgPSBudWxsXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBleGlzdHMgPSB0aGlzLmJ1c3lEaWFsb2dSZWY/Lmhhc0F0dGFjaGVkKCk7XHJcbiAgICBpZiAoZXhpc3RzKSB7XHJcbiAgICAgIHRoaXMuYnVzeUNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXQobWVzc2FnZSwgcHJvZ3Jlc3MsIHByb2dyZXNzTW9kZSwgdHlwZSk7IC8vIFVzZSB0aGUgc2FtZSAgICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gT3BlbiBuZXdcclxuICAgICAgaWYgKCF0aGlzLmJ1c3lEaWFsb2dSZWYpIHtcclxuICAgICAgICB0aGlzLmJ1c3lEaWFsb2dSZWYgPSB0aGlzLmNyZWF0ZUJ1c3koKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmJ1c3lDb21wb25lbnRSZWYgPSB0aGlzLmJ1c3lEaWFsb2dSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoQnVzeURpYWxvZ0NvbXBvbmVudCkpO1xyXG4gICAgICB0aGlzLmJ1c3lDb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0KG1lc3NhZ2UsIHByb2dyZXNzLCBwcm9ncmVzc01vZGUsIHR5cGUpO1xyXG4gICAgICBpZiAoYWN0aW9uKSB7XHJcbiAgICAgICAgYWN0aW9uXHJcbiAgICAgICAgICAucGlwZShmaXJzdCgpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJCdXN5KCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICFleGlzdHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGEgYnVzeSBkaWFsb2dcclxuICAgKiBAcGFyYW0gbWVzc2FnZSA6IG5ldyBtZXNzYWdlXHJcbiAgICogQHBhcmFtIHByb2dyZXNzIDogbmV3IHByb2dyZXNzXHJcbiAgICogQHBhcmFtIHByb2dyZXNzTW9kZSA6IG5ldyBtb2RlIChkZWZhdWx0ID0gJ2luZGV0ZXJtaW5hdGUnKVxyXG4gICAqIEBwYXJhbSBhY3Rpb24gOiBhY3Rpb24gdG8gZG8gZHVyaW5nIHRoZSBleGVjdXRpb24gKG9wdGlvbmFsKVxyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYSBuZXcgcG9wdXAgaGFzIGJlZW4gb3BlbmVkXHJcbiAgICovXHJcbiAgYnVzeShtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBwcm9ncmVzczogbnVtYmVyID0gLTEsXHJcbiAgICBwcm9ncmVzc01vZGU6ICdkZXRlcm1pbmF0ZScgfCAnaW5kZXRlcm1pbmF0ZScgPSAnaW5kZXRlcm1pbmF0ZScsXHJcbiAgICBhY3Rpb246IE9ic2VydmFibGU8T2JqZWN0PiB8IG51bGwgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRCdXN5KG1lc3NhZ2UsIHByb2dyZXNzLCBwcm9ncmVzc01vZGUsICdiYXInLCBhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgICAvKipcclxuICAgKiBEaXNwbGF5IGEgYnVzeSBpbmRldGVybWluYXRlIGRpYWxvZyBhcyBob3VyZ2xhc3NcclxuICAgKiBAcGFyYW0gbWVzc2FnZSA6IG5ldyBtZXNzYWdlXHJcbiAgICogQHBhcmFtIGFjdGlvbiA6IGFjdGlvbiB0byBkbyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiAob3B0aW9uYWwpXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICAgKi9cclxuICAgIGJ1c3lIb3VyZ2xhc3MobWVzc2FnZTogc3RyaW5nLFxyXG4gICAgICBhY3Rpb246IE9ic2VydmFibGU8T2JqZWN0PiB8IG51bGwgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNldEJ1c3kobWVzc2FnZSwgbnVsbCwgbnVsbCwgJ2hvdXJnbGFzcycsIGFjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gIC8qKlxyXG4gKiBEaXNwbGF5IGEgYnVzeSBzcGlubmVyIGRpYWxvZ1xyXG4gKiBAcGFyYW0gbWVzc2FnZSA6IG5ldyBtZXNzYWdlXHJcbiAqIEBwYXJhbSBwcm9ncmVzcyA6IG5ldyBwcm9ncmVzc1xyXG4gKiBAcGFyYW0gcHJvZ3Jlc3NNb2RlIDogbmV3IG1vZGUgKGRlZmF1bHQgPSAnaW5kZXRlcm1pbmF0ZScpXHJcbiAqIEBwYXJhbSBhY3Rpb24gOiBhY3Rpb24gdG8gZG8gZHVyaW5nIHRoZSBleGVjdXRpb24gKG9wdGlvbmFsKVxyXG4gKiBAcmV0dXJucyB0cnVlIGlmIGEgbmV3IHBvcHVwIGhhcyBiZWVuIG9wZW5lZFxyXG4gKi9cclxuICBidXN5U3Bpbm5lcihtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBwcm9ncmVzczogbnVtYmVyID0gLTEsXHJcbiAgICBwcm9ncmVzc01vZGU6ICdkZXRlcm1pbmF0ZScgfCAnaW5kZXRlcm1pbmF0ZScgPSAnaW5kZXRlcm1pbmF0ZScsXHJcbiAgICBhY3Rpb246IE9ic2VydmFibGU8T2JqZWN0PiB8IG51bGwgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRCdXN5KG1lc3NhZ2UsIHByb2dyZXNzLCBwcm9ncmVzc01vZGUsICdzcGlubmVyJywgYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRGlzcGxheSBhIHdhaXQgc3Bpbm5lciBcclxuICAqIEBwYXJhbSBhY3Rpb24gOiBhY3Rpb24gdG8gZG8gZHVyaW5nIHRoZSBleGVjdXRpb24gKG9wdGlvbmFsKVxyXG4gICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICAqL1xyXG4gIHdhaXQoXHJcbiAgICBhY3Rpb246IE9ic2VydmFibGU8T2JqZWN0PiB8IG51bGwgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRCdXN5KG51bGwsIG51bGwsIG51bGwsICd3YWl0JywgYWN0aW9uKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGFuIGluZm9ybWF0aW9uIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbWVzc2FnZVxyXG4gICAqIEBwYXJhbSB0aXRsZSA6IGRpYWxvZyB0aXRsZVxyXG4gICAqIEBwYXJhbSBva0NhcHRpb24gOiBvayBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSB3aWR0aDogdGhlIHByZWZlcnJlZCB3aWR0aFxyXG4gICAqIEBwYXJhbSBkaXNtaXNzQWZ0ZXI6IGlmIHNwZWNpZmllZCwgdGhlIGRpYWxvZyB3aWxsIGJlIGNsb3NlZCBhZnRlciBkaXNtaXNzQWZ0ZXIgbWlsbGlzZWNvbmRzXHJcbiAgICogQHBhcmFtIGRldGFpbHM6IGlmIHNwZWNpZmllZCwgdGhlIGRldGFpbHMgaW5mb1xyXG4gICAqIEBwYXJhbSBvbk5hdmlnYXRlOiB0aGUgY2FsbGJhY2sgdG8gdXNlIGZvciBuYXZpZ2F0aW9uLiBEZWZhdWx0IGlzIG51bGxcclxuICAgKi9cclxuICBpbmZvKFxyXG4gICAgbWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdGl0bGU6IHN0cmluZyA9ICdJbmZvcm1hemlvbmknLFxyXG4gICAgb2tDYXB0aW9uOiBzdHJpbmcgPSAnT2snLFxyXG4gICAgd2lkdGg6IG51bWJlciA9IDUwMCxcclxuICAgIGRpc21pc3NBZnRlcjogbnVtYmVyIHwgbnVsbCA9IG51bGwsXHJcbiAgICBkZXRhaWxzOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcclxuICAgIG9uTmF2aWdhdGU6ICh1cmw6IHN0cmluZykgPT4gdm9pZCA9IG51bGxcclxuICApOiBNYXREaWFsb2dSZWY8SW5mb0RpYWxvZ0NvbXBvbmVudD4ge1xyXG4gICAgdGhpcy5jbGVhckJ1c3koKTtcclxuICAgIHJldHVybiB0aGlzLm9wZW4oSW5mb0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdpbmZvcm1hemlvbmknLFxyXG4gICAgICBhdXRvRm9jdXM6IHRydWUsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBkaXNtaXNzQWZ0ZXI6IGRpc21pc3NBZnRlcixcclxuICAgICAgICBkZXRhaWxzOiBkZXRhaWxzLFxyXG4gICAgICAgIG9uTmF2aWdhdGU6IG9uTmF2aWdhdGUsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogJ2ZpbGwnXHJcbiAgICAgIH0gYXMgSW5mb0RpYWxvZ0RhdGEsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiB3aWR0aCArICdweCcsXHJcbiAgICAgIHdpZHRoOiAnMTAwJSdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhbiBlcnJvciBkaWFsb2dcclxuICAgKiBAcGFyYW0gbWVzc2FnZSA6IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gbG9nIDogdGhlIGVycm9yIGxvZ1xyXG4gICAqIEBwYXJhbSB0aXRsZSA6IGRpYWxvZyB0aXRsZVxyXG4gICAqIEBwYXJhbSBva0NhcHRpb24gOiBvayBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSB3aWR0aDogdGhlIHByZWZlcnJlZCB3aWR0aFxyXG4gICAqIEBwYXJhbSBkaXNtaXNzQWZ0ZXI6IGlmIHNwZWNpZmllZCwgdGhlIGRpYWxvZyB3aWxsIGJlIGNsb3NlZCBhZnRlciBkaXNtaXNzQWZ0ZXIgbWlsbGlzZWNvbmRzICAgXHJcbiAgICovXHJcbiAgZXJyb3IoXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBsb2c6IHN0cmluZyB8IG51bGwgPSBudWxsLFxyXG4gICAgdGl0bGU6IHN0cmluZyA9ICdFcnJvcmUnLFxyXG4gICAgb2tDYXB0aW9uOiBzdHJpbmcgPSAnT2snLFxyXG4gICAgd2lkdGg6IG51bWJlciA9IDUwMCxcclxuICAgIGRpc21pc3NBZnRlcjogbnVtYmVyIHwgbnVsbCA9IG51bGwsXHJcbiAgKTogTWF0RGlhbG9nUmVmPEluZm9EaWFsb2dDb21wb25lbnQ+IHtcclxuICAgIHRoaXMuY2xlYXJCdXN5KCk7XHJcbiAgICBpZiAodGhpcy5lcnJvckRpYWxvZ1JlZikge1xyXG4gICAgICAvLyBKdXN0IGNoYW5nZSBjdXJyZW50IGVycm9yXHJcbiAgICAgIHRoaXMuZXJyb3JEaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uuc2V0RGF0YSh7XHJcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgZGV0YWlsczogbG9nLFxyXG4gICAgICAgIG9rQ2FwdGlvbjogb2tDYXB0aW9uLFxyXG4gICAgICAgIGRpc21pc3NBZnRlcjogZGlzbWlzc0FmdGVyXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvckRpYWxvZ1JlZjtcclxuICAgIH1cclxuICAgIHRoaXMuZXJyb3JEaWFsb2dSZWYgPSB0aGlzLm9wZW4oSW5mb0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdlcnJvcmUnLFxyXG4gICAgICBhdXRvRm9jdXM6IHRydWUsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBkZXRhaWxzOiBsb2csXHJcbiAgICAgICAgb2tDYXB0aW9uOiBva0NhcHRpb24sXHJcbiAgICAgICAgZGlzbWlzc0FmdGVyOiBkaXNtaXNzQWZ0ZXIsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogJ2ZpbGwnXHJcbiAgICAgIH0gYXMgSW5mb0RpYWxvZ0RhdGEsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiB3aWR0aCArICdweCcsXHJcbiAgICAgIHdpZHRoOiAnMTAwJSdcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuZXJyb3JEaWFsb2dSZWY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IHRvYXN0XHJcbiAgICogQHBhcmFtIG1lc3NhZ2UgOiBtZXNzYWdlIHRvIGRpc3BsYXlcclxuICAgKiBAcGFyYW0gZHVyYXRpb24gOiBkdXJhdGlvbiBpbiBtc2VjXHJcbiAgICogQHBhcmFtIGljb24gOiB0aGUgbWF0LWljb24gdG8gZGlzcGxheVxyXG4gICAqIEBwYXJhbSBhY3Rpb25DYXB0aW9uIGFjdGlvbiBidXR0b24gY2FwdGlvblxyXG4gICAqL1xyXG4gIHRvYXN0KFxyXG4gICAgbWVzc2FnZTogc3RyaW5nLFxyXG4gICAgZHVyYXRpb246IG51bWJlciA9IDIwMDAsXHJcbiAgICBpY29uOiBzdHJpbmcgPSAnY2hlY2snLFxyXG4gICAgYWN0aW9uQ2FwdGlvbjogc3RyaW5nIHwgbnVsbCA9IG51bGxcclxuICApOiBNYXRTbmFja0JhclJlZjxUb2FzdENvbXBvbmVudD4ge1xyXG4gICAgdGhpcy5jbGVhckJ1c3koKTtcclxuICAgIGlmIChkdXJhdGlvbiA9PT0gLTEpIGR1cmF0aW9uID0gMjAwMDsgLy8gZGVmYXVsdFxyXG4gICAgbGV0IHRvYXN0UmVmID0gdGhpcy5zbmFja0Jhci5vcGVuRnJvbUNvbXBvbmVudChUb2FzdENvbXBvbmVudCwge1xyXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIGljb246IGljb24sXHJcbiAgICAgICAgYWN0aW9uQ2FwdGlvbjogYWN0aW9uQ2FwdGlvblxyXG4gICAgICB9IGFzIFRvYXN0RGF0YVxyXG4gICAgfSk7XHJcbiAgICB0b2FzdFJlZi5pbnN0YW5jZS5hY3Rpb24uc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdG9hc3RSZWYuZGlzbWlzcygpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdG9hc3RSZWY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGEgY29uZmlybSBkaWFsb2dcclxuICAgKiBAcGFyYW0gbWVzc2FnZSA6IGh0bWwgbWVzc2FnZVxyXG4gICAqIEBwYXJhbSB0aXRsZSA6IGRpYWxvZyB0aXRsZVxyXG4gICAqIEBwYXJhbSBva0NhcHRpb24gOiBvayBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSBjYW5jZWxDYXB0aW9uIDogY2FuY2VsIGJ1dHRvbiBjYXB0aW9uXHJcbiAgICogQHBhcmFtIG90aGVyQ2FwdGlvbiA6IG90aGVyIGJ1dHRvbiBjYXB0aW9uXHJcbiAgICogQHBhcmFtIG9wdGlvbnM6IGNoZWNrIGJveCBvcHRpb25zXHJcbiAgICogQHBhcmFtIHdpZHRoOiB0aGUgcHJlZmVycmVkIHdpZHRoXHJcbiAgICovXHJcbiAgY29uZmlybShcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHRpdGxlOiBzdHJpbmcgPSAnQ29uZmVybWEnLFxyXG4gICAgb2tDYXB0aW9uOiBzdHJpbmcgPSAnU2knLFxyXG4gICAgY2FuY2VsQ2FwdGlvbjogc3RyaW5nID0gJ05vJyxcclxuICAgIG90aGVyQ2FwdGlvbjogc3RyaW5nIHwgbnVsbCA9IG51bGwsXHJcbiAgICBvcHRpb25zOiBDb25maXJtRGlhbG9nT3B0aW9uW10gfCBudWxsID0gbnVsbCxcclxuICAgIHdpZHRoOiBudW1iZXIgPSA1MDAsXHJcbiAgICBkZXRhaWxzOiBzdHJpbmcgfCBudWxsID0gbnVsbFxyXG4gICkge1xyXG4gICAgcmV0dXJuIHRoaXMub3BlbihDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2NvbmZlcm1hJyxcclxuICAgICAgYXV0b0ZvY3VzOiB0cnVlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgb2tDYXB0aW9uOiBva0NhcHRpb24sXHJcbiAgICAgICAgY2FuY2VsQ2FwdGlvbjogY2FuY2VsQ2FwdGlvbixcclxuICAgICAgICBvdGhlckNhcHRpb246IG90aGVyQ2FwdGlvbixcclxuICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxyXG4gICAgICAgIGRldGFpbHM6IGRldGFpbHMsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogJ2ZpbGwnXHJcbiAgICAgIH0gYXMgQ29uZmlybURpYWxvZ0RhdGEsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgd2lkdGg6ICcxMDAlJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
@@ -1,21 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class UIService {
4
- constructor() {
5
- this._appearance = "fill";
6
- }
7
- get appearance() { return this._appearance; }
8
- ;
9
- set appearance(value) {
10
- this._appearance = value ?? "fill";
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: UIService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
13
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: UIService, providedIn: 'root' }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: UIService, decorators: [{
16
- type: Injectable,
17
- args: [{
18
- providedIn: 'root'
19
- }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS91aS9zZXJ2aWNlcy91aS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxTQUFTO0lBSHRCO1FBS1UsZ0JBQVcsR0FBdUIsTUFBTSxDQUFDO0tBS2xEO0lBSkMsSUFBSSxVQUFVLEtBQUksT0FBUSxJQUFJLENBQUMsV0FBVyxDQUFBLENBQUEsQ0FBQztJQUFBLENBQUM7SUFDNUMsSUFBSSxVQUFVLENBQUMsS0FBZ0M7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLElBQUksTUFBTSxDQUFDO0lBQ3JDLENBQUM7K0dBTlUsU0FBUzttSEFBVCxTQUFTLGNBRlIsTUFBTTs7NEZBRVAsU0FBUztrQkFIckIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVUlTZXJ2aWNlIHtcclxuIFxyXG4gIHByaXZhdGUgX2FwcGVhcmFuY2U6IFwiZmlsbFwiIHwgXCJvdXRsaW5lXCIgPSBcImZpbGxcIjtcclxuICBnZXQgYXBwZWFyYW5jZSgpIHtyZXR1cm4gIHRoaXMuX2FwcGVhcmFuY2V9O1xyXG4gIHNldCBhcHBlYXJhbmNlKHZhbHVlOiBcImZpbGxcIiB8IFwib3V0bGluZVwiIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fYXBwZWFyYW5jZSA9IHZhbHVlID8/IFwiZmlsbFwiO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,21 +0,0 @@
1
- import { NgModule } from "@angular/core";
2
- import { ArsCoreModule } from '@arsedizioni/ars-utils/core';
3
- import * as i0 from "@angular/core";
4
- export class ArsUIModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: ArsUIModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.10", ngImport: i0, type: ArsUIModule, imports: [ArsCoreModule] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: ArsUIModule, imports: [ArsCoreModule] }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: ArsUIModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- imports: [
13
- ArsCoreModule
14
- ]
15
- }]
16
- }] });
17
- export * from "./definitions";
18
- export * from "./paginatorIntl";
19
- export * from "./services/dialog.service";
20
- export * from "./services/ui.service";
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpL3VpL3VpLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFPNUQsTUFBTSxPQUFPLFdBQVc7K0dBQVgsV0FBVztnSEFBWCxXQUFXLFlBSGhCLGFBQWE7Z0hBR1IsV0FBVyxZQUhoQixhQUFhOzs0RkFHUixXQUFXO2tCQUx2QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxhQUFhO3FCQUNoQjtpQkFDSjs7QUFHRCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQXJzQ29yZU1vZHVsZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIEFyc0NvcmVNb2R1bGVcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFyc1VJTW9kdWxlIHt9XHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi9kZWZpbml0aW9uc1wiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9wYWdpbmF0b3JJbnRsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3NlcnZpY2VzL3VpLnNlcnZpY2VcIjtcclxuXHJcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJzZWRpemlvbmktYXJzLXV0aWxzLXVpLmFwcGxpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL2Fyc2VkaXppb25pLWFycy11dGlscy11aS5hcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
@@ -1,21 +0,0 @@
1
- /*
2
- * Public API Surface of ars-utils
3
- */
4
- export * from './ui/ui.module';
5
- export * from './ui/dialogs/prompt/prompt-dialog.component';
6
- export * from './ui/dialogs/prompt-date/prompt-date-dialog.component';
7
- export * from './ui/dialogs/prompt-time/prompt-time-dialog.component';
8
- export * from './ui/dialogs/select-file/select-file-dialog.component';
9
- export * from './ui/dialogs/select-picture/select-picture-dialog.component';
10
- export * from './ui/dialogs/select-tree/select-tree-dialog.component';
11
- export * from './ui/dialogs/select/select-dialog.component';
12
- export * from './ui/dialogs/send-to/send-to-dialog.component';
13
- export * from './ui/components/file-input/file-input.component';
14
- export * from './ui/components/file-preview/file-preview.component';
15
- export * from './ui/components/filter-bar/filter-bar.component';
16
- export * from './ui/components/calendar-empty-header/calendar-empy-header.component';
17
- export * from './ui/components/chips-selector/chips-selector.component';
18
- export * from './ui/components/button-selector/button-selector.component';
19
- export * from './ui/components/button-toggle/button-toggle.component';
20
- export * from './ui/directives/resize-table-column.directive';
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbi9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLCtDQUErQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFycy11dGlsc1xyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi91aS91aS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpL2RpYWxvZ3MvcHJvbXB0L3Byb21wdC1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi91aS9kaWFsb2dzL3Byb21wdC1kYXRlL3Byb21wdC1kYXRlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpL2RpYWxvZ3MvcHJvbXB0LXRpbWUvcHJvbXB0LXRpbWUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWkvZGlhbG9ncy9zZWxlY3QtZmlsZS9zZWxlY3QtZmlsZS1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi91aS9kaWFsb2dzL3NlbGVjdC1waWN0dXJlL3NlbGVjdC1waWN0dXJlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpL2RpYWxvZ3Mvc2VsZWN0LXRyZWUvc2VsZWN0LXRyZWUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWkvZGlhbG9ncy9zZWxlY3Qvc2VsZWN0LWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpL2RpYWxvZ3Mvc2VuZC10by9zZW5kLXRvLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpL2NvbXBvbmVudHMvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWkvY29tcG9uZW50cy9maWxlLXByZXZpZXcvZmlsZS1wcmV2aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWkvY29tcG9uZW50cy9maWx0ZXItYmFyL2ZpbHRlci1iYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi91aS9jb21wb25lbnRzL2NhbGVuZGFyLWVtcHR5LWhlYWRlci9jYWxlbmRhci1lbXB5LWhlYWRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpL2NvbXBvbmVudHMvY2hpcHMtc2VsZWN0b3IvY2hpcHMtc2VsZWN0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi91aS9jb21wb25lbnRzL2J1dHRvbi1zZWxlY3Rvci9idXR0b24tc2VsZWN0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi91aS9jb21wb25lbnRzL2J1dHRvbi10b2dnbGUvYnV0dG9uLXRvZ2dsZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpL2RpcmVjdGl2ZXMvcmVzaXplLXRhYmxlLWNvbHVtbi5kaXJlY3RpdmUnO1xyXG5cclxuXHJcbiJdfQ==