coer-elements 0.0.23 → 0.0.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (181) hide show
  1. package/components/index.d.ts +5 -0
  2. package/components/lib/coer-button/coer-button.component.d.ts +44 -0
  3. package/components/lib/coer-checkbox/coer-checkbox.component.d.ts +28 -0
  4. package/components/lib/coer-filebox/coer-filebox.component.d.ts +33 -0
  5. package/components/lib/coer-form/coer-form.component.d.ts +33 -0
  6. package/components/lib/coer-grid/coer-grid.component.d.ts +53 -0
  7. package/components/lib/coer-grid/coer-grid.extension.d.ts +103 -0
  8. package/components/lib/coer-grid/coer-grid.templates.d.ts +9 -0
  9. package/components/lib/coer-modal/coer-modal.component.d.ts +38 -0
  10. package/components/lib/coer-numberbox/coer-numberbox.component.d.ts +55 -0
  11. package/components/lib/coer-page-title/coer-page-title.component.d.ts +12 -0
  12. package/components/lib/coer-selectbox/coer-selectbox.component.d.ts +75 -0
  13. package/components/lib/coer-switch/coer-switch.component.d.ts +31 -0
  14. package/components/lib/coer-tab/coer-tab.component.d.ts +35 -0
  15. package/components/lib/coer-textarea/coer-textarea.component.d.ts +51 -0
  16. package/components/lib/coer-textbox/coer-textbox.component.d.ts +57 -0
  17. package/components/lib/components.module.d.ts +30 -0
  18. package/components/public-api.d.ts +15 -0
  19. package/directives/index.d.ts +5 -0
  20. package/directives/lib/coer-ref.directive.d.ts +14 -0
  21. package/directives/lib/directives.module.d.ts +8 -0
  22. package/directives/lib/life-cycle.directive.d.ts +16 -0
  23. package/directives/public-api.d.ts +3 -0
  24. package/esm2022/components/coer-elements-components.mjs +5 -0
  25. package/esm2022/components/lib/coer-button/coer-button.component.mjs +133 -0
  26. package/esm2022/components/lib/coer-checkbox/coer-checkbox.component.mjs +83 -0
  27. package/esm2022/components/lib/coer-filebox/coer-filebox.component.mjs +102 -0
  28. package/esm2022/components/lib/coer-form/coer-form.component.mjs +101 -0
  29. package/esm2022/components/lib/coer-grid/coer-grid.component.mjs +512 -0
  30. package/esm2022/components/lib/coer-grid/coer-grid.extension.mjs +408 -0
  31. package/esm2022/components/lib/coer-grid/coer-grid.templates.mjs +30 -0
  32. package/esm2022/components/lib/coer-modal/coer-modal.component.mjs +107 -0
  33. package/esm2022/components/lib/coer-numberbox/coer-numberbox.component.mjs +258 -0
  34. package/esm2022/components/lib/coer-page-title/coer-page-title.component.mjs +44 -0
  35. package/esm2022/components/lib/coer-selectbox/coer-selectbox.component.mjs +338 -0
  36. package/esm2022/components/lib/coer-switch/coer-switch.component.mjs +93 -0
  37. package/esm2022/components/lib/coer-tab/coer-tab.component.mjs +116 -0
  38. package/esm2022/components/lib/coer-textarea/coer-textarea.component.mjs +156 -0
  39. package/esm2022/components/lib/coer-textbox/coer-textbox.component.mjs +195 -0
  40. package/esm2022/components/lib/components.module.mjs +129 -0
  41. package/esm2022/components/public-api.mjs +16 -0
  42. package/esm2022/directives/coer-elements-directives.mjs +5 -0
  43. package/esm2022/directives/lib/coer-ref.directive.mjs +23 -0
  44. package/esm2022/directives/lib/directives.module.mjs +25 -0
  45. package/esm2022/directives/lib/life-cycle.directive.mjs +33 -0
  46. package/esm2022/directives/public-api.mjs +4 -0
  47. package/esm2022/interfaces/coer-elements-interfaces.mjs +5 -0
  48. package/esm2022/interfaces/lib/app-source.interface.mjs +2 -0
  49. package/esm2022/interfaces/lib/coer-filebox/file-image.interface.mjs +2 -0
  50. package/esm2022/interfaces/lib/coer-filebox/file.interface.mjs +2 -0
  51. package/esm2022/interfaces/lib/coer-grid/grid-button-by-row.interface.mjs +2 -0
  52. package/esm2022/interfaces/lib/coer-grid/grid-checkbox.interface.mjs +2 -0
  53. package/esm2022/interfaces/lib/coer-grid/grid-coer-numberbox.interface.mjs +2 -0
  54. package/esm2022/interfaces/lib/coer-grid/grid-coer-selectbox.interface.mjs +2 -0
  55. package/esm2022/interfaces/lib/coer-grid/grid-coer-switch.interface.mjs +2 -0
  56. package/esm2022/interfaces/lib/coer-grid/grid-coer-textbox.interface.mjs +2 -0
  57. package/esm2022/interfaces/lib/coer-grid/grid-column.interface.mjs +2 -0
  58. package/esm2022/interfaces/lib/coer-grid/grid-data-source.interface.mjs +2 -0
  59. package/esm2022/interfaces/lib/coer-grid/grid-header-button.interface.mjs +2 -0
  60. package/esm2022/interfaces/lib/coer-grid/grid-header-export-button.interface.mjs +2 -0
  61. package/esm2022/interfaces/lib/coer-grid/grid-header.interface.mjs +2 -0
  62. package/esm2022/interfaces/lib/coer-grid/grid-import.interface.mjs +2 -0
  63. package/esm2022/interfaces/lib/coer-grid/grid-input-checkbox.interface.mjs +2 -0
  64. package/esm2022/interfaces/lib/coer-grid/grid-input-switch-change.interface.mjs +2 -0
  65. package/esm2022/interfaces/lib/coer-grid/grid-input-textbox.interface.mjs +2 -0
  66. package/esm2022/interfaces/lib/coer-grid/grid-item.interface.mjs +2 -0
  67. package/esm2022/interfaces/lib/coer-grid/grid-keyup-enter.interface.mjs +2 -0
  68. package/esm2022/interfaces/lib/coer-grid/grid-length.interface.mjs +2 -0
  69. package/esm2022/interfaces/lib/coer-grid/grid-search.interface.mjs +2 -0
  70. package/esm2022/interfaces/lib/coer-grid/grid-sort.interface.mjs +2 -0
  71. package/esm2022/interfaces/lib/coer-menu/menu-option-selected.interface.mjs +2 -0
  72. package/esm2022/interfaces/lib/coer-menu/menu-selected.interface.mjs +2 -0
  73. package/esm2022/interfaces/lib/coer-menu/menu.interface.mjs +2 -0
  74. package/esm2022/interfaces/lib/coer-ref.interface.mjs +2 -0
  75. package/esm2022/interfaces/lib/page-title/breadcrumb.interface.mjs +2 -0
  76. package/esm2022/interfaces/lib/page-title/go-back.interface.mjs +2 -0
  77. package/esm2022/interfaces/lib/screen-size.interface.mjs +2 -0
  78. package/esm2022/interfaces/lib/service/http-request.interface.mjs +2 -0
  79. package/esm2022/interfaces/lib/service/http-response.interface.mjs +2 -0
  80. package/esm2022/interfaces/lib/service/patch.interface.mjs +2 -0
  81. package/esm2022/interfaces/public-api.mjs +39 -0
  82. package/esm2022/pipes/coer-elements-pipes.mjs +5 -0
  83. package/esm2022/pipes/lib/html.pipe.mjs +18 -0
  84. package/esm2022/pipes/lib/no-image.pipe.mjs +23 -0
  85. package/esm2022/pipes/lib/numeric-format.pipe.mjs +15 -0
  86. package/esm2022/pipes/lib/pipes.module.mjs +31 -0
  87. package/esm2022/pipes/public-api.mjs +5 -0
  88. package/esm2022/signals/coer-elements-signals.mjs +5 -0
  89. package/esm2022/signals/lib/breakpoint.signal.mjs +4 -0
  90. package/esm2022/signals/lib/is-loading.signal.mjs +3 -0
  91. package/esm2022/signals/lib/is-menu-open.signal.mjs +3 -0
  92. package/esm2022/signals/lib/is-modal-open.signal.mjs +3 -0
  93. package/esm2022/signals/lib/menu.signal.mjs +3 -0
  94. package/esm2022/signals/public-api.mjs +6 -0
  95. package/esm2022/tools/coer-elements-tools.mjs +5 -0
  96. package/esm2022/tools/lib/breadcrumbs.class.mjs +63 -0
  97. package/esm2022/tools/lib/coer-alert/coer-alert.component.mjs +228 -0
  98. package/esm2022/tools/lib/control-value.class.mjs +46 -0
  99. package/esm2022/tools/lib/date-time.class.mjs +29 -0
  100. package/esm2022/tools/lib/files.class.mjs +91 -0
  101. package/esm2022/tools/lib/menu.class.mjs +23 -0
  102. package/esm2022/tools/lib/page.class.mjs +156 -0
  103. package/esm2022/tools/lib/screen.class.mjs +51 -0
  104. package/esm2022/tools/lib/service.class.mjs +247 -0
  105. package/esm2022/tools/lib/source.class.mjs +80 -0
  106. package/esm2022/tools/lib/tools.mjs +220 -0
  107. package/esm2022/tools/public-api.mjs +12 -0
  108. package/fesm2022/coer-elements-components.mjs +2718 -0
  109. package/fesm2022/coer-elements-components.mjs.map +1 -0
  110. package/fesm2022/coer-elements-directives.mjs +82 -0
  111. package/fesm2022/coer-elements-directives.mjs.map +1 -0
  112. package/fesm2022/coer-elements-interfaces.mjs +6 -0
  113. package/fesm2022/coer-elements-interfaces.mjs.map +1 -0
  114. package/fesm2022/coer-elements-pipes.mjs +83 -0
  115. package/fesm2022/coer-elements-pipes.mjs.map +1 -0
  116. package/fesm2022/coer-elements-signals.mjs +19 -0
  117. package/fesm2022/coer-elements-signals.mjs.map +1 -0
  118. package/fesm2022/coer-elements-tools.mjs +1223 -0
  119. package/fesm2022/coer-elements-tools.mjs.map +1 -0
  120. package/interfaces/index.d.ts +5 -0
  121. package/interfaces/lib/app-source.interface.d.ts +4 -0
  122. package/interfaces/lib/coer-filebox/file-image.interface.d.ts +14 -0
  123. package/interfaces/lib/coer-filebox/file.interface.d.ts +5 -0
  124. package/interfaces/lib/coer-grid/grid-button-by-row.interface.d.ts +6 -0
  125. package/interfaces/lib/coer-grid/grid-checkbox.interface.d.ts +5 -0
  126. package/interfaces/lib/coer-grid/grid-coer-numberbox.interface.d.ts +12 -0
  127. package/interfaces/lib/coer-grid/grid-coer-selectbox.interface.d.ts +9 -0
  128. package/interfaces/lib/coer-grid/grid-coer-switch.interface.d.ts +6 -0
  129. package/interfaces/lib/coer-grid/grid-coer-textbox.interface.d.ts +11 -0
  130. package/interfaces/lib/coer-grid/grid-column.interface.d.ts +22 -0
  131. package/interfaces/lib/coer-grid/grid-data-source.interface.d.ts +6 -0
  132. package/interfaces/lib/coer-grid/grid-header-button.interface.d.ts +8 -0
  133. package/interfaces/lib/coer-grid/grid-header-export-button.interface.d.ts +10 -0
  134. package/interfaces/lib/coer-grid/grid-header.interface.d.ts +5 -0
  135. package/interfaces/lib/coer-grid/grid-import.interface.d.ts +4 -0
  136. package/interfaces/lib/coer-grid/grid-input-checkbox.interface.d.ts +5 -0
  137. package/interfaces/lib/coer-grid/grid-input-switch-change.interface.d.ts +5 -0
  138. package/interfaces/lib/coer-grid/grid-input-textbox.interface.d.ts +5 -0
  139. package/interfaces/lib/coer-grid/grid-item.interface.d.ts +5 -0
  140. package/interfaces/lib/coer-grid/grid-keyup-enter.interface.d.ts +6 -0
  141. package/interfaces/lib/coer-grid/grid-length.interface.d.ts +5 -0
  142. package/interfaces/lib/coer-grid/grid-search.interface.d.ts +4 -0
  143. package/interfaces/lib/coer-grid/grid-sort.interface.d.ts +5 -0
  144. package/interfaces/lib/coer-menu/menu-option-selected.interface.d.ts +9 -0
  145. package/interfaces/lib/coer-menu/menu-selected.interface.d.ts +10 -0
  146. package/interfaces/lib/coer-menu/menu.interface.d.ts +6 -0
  147. package/interfaces/lib/coer-ref.interface.d.ts +10 -0
  148. package/interfaces/lib/page-title/breadcrumb.interface.d.ts +6 -0
  149. package/interfaces/lib/page-title/go-back.interface.d.ts +6 -0
  150. package/interfaces/lib/screen-size.interface.d.ts +5 -0
  151. package/interfaces/lib/service/http-request.interface.d.ts +10 -0
  152. package/interfaces/lib/service/http-response.interface.d.ts +6 -0
  153. package/interfaces/lib/service/patch.interface.d.ts +5 -0
  154. package/interfaces/public-api.d.ts +33 -0
  155. package/package.json +37 -1
  156. package/pipes/index.d.ts +5 -0
  157. package/pipes/lib/html.pipe.d.ts +10 -0
  158. package/pipes/lib/no-image.pipe.d.ts +7 -0
  159. package/pipes/lib/numeric-format.pipe.d.ts +7 -0
  160. package/pipes/lib/pipes.module.d.ts +9 -0
  161. package/pipes/public-api.d.ts +4 -0
  162. package/signals/index.d.ts +5 -0
  163. package/signals/lib/breakpoint.signal.d.ts +1 -0
  164. package/signals/lib/is-loading.signal.d.ts +1 -0
  165. package/signals/lib/is-menu-open.signal.d.ts +1 -0
  166. package/signals/lib/is-modal-open.signal.d.ts +1 -0
  167. package/signals/lib/menu.signal.d.ts +2 -0
  168. package/signals/public-api.d.ts +5 -0
  169. package/tools/index.d.ts +5 -0
  170. package/tools/lib/breadcrumbs.class.d.ts +18 -0
  171. package/tools/lib/coer-alert/coer-alert.component.d.ts +23 -0
  172. package/tools/lib/control-value.class.d.ts +25 -0
  173. package/tools/lib/date-time.class.d.ts +13 -0
  174. package/tools/lib/files.class.d.ts +16 -0
  175. package/tools/lib/menu.class.d.ts +8 -0
  176. package/tools/lib/page.class.d.ts +60 -0
  177. package/tools/lib/screen.class.d.ts +13 -0
  178. package/tools/lib/service.class.d.ts +39 -0
  179. package/tools/lib/source.class.d.ts +20 -0
  180. package/tools/lib/tools.d.ts +34 -0
  181. package/tools/public-api.d.ts +11 -0
@@ -0,0 +1,228 @@
1
+ import { Component } from '@angular/core';
2
+ import { Tools } from '../tools';
3
+ import * as bootstrap from 'bootstrap';
4
+ import Swal from 'sweetalert2';
5
+ import * as i0 from "@angular/core";
6
+ export class CoerAlert {
7
+ /** */
8
+ Success(message = null, title = null, icon = null, autohide = 3000) {
9
+ //Title
10
+ if (Tools.IsOnlyWhiteSpace(title))
11
+ title = 'Success';
12
+ const alertSuccessTitle = document.getElementById('alert-success-title');
13
+ alertSuccessTitle.textContent = title;
14
+ //Icon
15
+ icon = this.GetIcon(title, icon, 'bi-check-circle fa-beat');
16
+ const alertSuccessIcon = document.getElementById('alert-success-icon');
17
+ this.SetIcon(alertSuccessIcon, icon);
18
+ //Message
19
+ if (Tools.IsNull(message))
20
+ message = '';
21
+ const alertSuccessMessage = document.getElementById('alert-success-message');
22
+ alertSuccessMessage.innerHTML = message;
23
+ //Toast
24
+ const alertSuccess = document.getElementById('alert-success');
25
+ this.SetAutoHide(alertSuccess, autohide);
26
+ const toast = bootstrap.Toast.getOrCreateInstance(alertSuccess);
27
+ toast.show();
28
+ }
29
+ /** */
30
+ Error(message = null, title = null, icon = null, autohide = 3000) {
31
+ //Title
32
+ if (Tools.IsOnlyWhiteSpace(title))
33
+ title = 'Error';
34
+ const alertErrorTitle = document.getElementById('alert-error-title');
35
+ alertErrorTitle.textContent = title;
36
+ //Icon
37
+ icon = this.GetIcon(title, icon, 'bi-exclamation-octagon fa-beat');
38
+ const alertErrorIcon = document.getElementById('alert-error-icon');
39
+ this.SetIcon(alertErrorIcon, icon);
40
+ //Message
41
+ if (Tools.IsNull(message))
42
+ message = '';
43
+ const alertErrorBody = document.getElementById('alert-error-message');
44
+ alertErrorBody.innerHTML = message;
45
+ //Toast
46
+ const alertError = document.getElementById('alert-error');
47
+ this.SetAutoHide(alertError, autohide);
48
+ const toast = bootstrap.Toast.getOrCreateInstance(alertError);
49
+ toast.show();
50
+ }
51
+ /** */
52
+ Info(message = null, title = null, icon = null, autohide = 3000) {
53
+ //Title
54
+ if (Tools.IsOnlyWhiteSpace(title))
55
+ title = 'Info';
56
+ const alertInfoTitle = document.getElementById('alert-info-title');
57
+ alertInfoTitle.textContent = title;
58
+ //Icon
59
+ icon = this.GetIcon(title, icon, 'bi-info-circle fa-beat');
60
+ const alertInfoIcon = document.getElementById('alert-info-icon');
61
+ this.SetIcon(alertInfoIcon, icon);
62
+ //Message
63
+ if (Tools.IsNull(message))
64
+ message = '';
65
+ const alertInfoBody = document.getElementById('alert-info-message');
66
+ alertInfoBody.innerHTML = message;
67
+ //Toast
68
+ const alertInfo = document.getElementById('alert-info');
69
+ this.SetAutoHide(alertInfo, autohide);
70
+ const toast = bootstrap.Toast.getOrCreateInstance(alertInfo);
71
+ toast.show();
72
+ }
73
+ /** */
74
+ Warning(message = null, title = null, icon = null, autohide = 3000) {
75
+ //Title
76
+ if (Tools.IsOnlyWhiteSpace(title))
77
+ title = 'Warning';
78
+ const alertWarningTitle = document.getElementById('alert-warning-title');
79
+ alertWarningTitle.textContent = title;
80
+ //Icon
81
+ icon = this.GetIcon(title, icon, 'bi-exclamation-triangle-fill fa-beat');
82
+ const alertWarningIcon = document.getElementById('alert-warning-icon');
83
+ this.SetIcon(alertWarningIcon, icon);
84
+ //Message
85
+ if (Tools.IsNull(message))
86
+ message = '';
87
+ const alertWarningBody = document.getElementById('alert-warning-message');
88
+ alertWarningBody.innerHTML = message;
89
+ //Toast
90
+ const alertWarning = document.getElementById('alert-warning');
91
+ this.SetAutoHide(alertWarning, autohide);
92
+ const toast = bootstrap.Toast.getOrCreateInstance(alertWarning);
93
+ toast.show();
94
+ }
95
+ /** */
96
+ Close(alert) {
97
+ return new Promise(Resolve => {
98
+ const element = document.getElementById(alert);
99
+ const toast = bootstrap.Toast.getOrCreateInstance(element);
100
+ toast.hide();
101
+ setTimeout(() => { Resolve(); }, 200);
102
+ });
103
+ }
104
+ /** */
105
+ Confirm(message = 'Proceed?', alertType = 'warning', icon = null) {
106
+ return new Promise(Resolve => {
107
+ let color;
108
+ let iconType;
109
+ switch (alertType) {
110
+ case 'danger':
111
+ {
112
+ if (Tools.IsNull(icon))
113
+ icon = 'bi-exclamation-octagon';
114
+ iconType = 'error';
115
+ color = '#dc3545'; //red
116
+ break;
117
+ }
118
+ ;
119
+ case 'success':
120
+ {
121
+ if (Tools.IsNull(icon))
122
+ icon = 'bi-check-circle';
123
+ iconType = 'info';
124
+ color = '#198754'; //green
125
+ break;
126
+ }
127
+ ;
128
+ case 'info':
129
+ {
130
+ if (Tools.IsNull(icon))
131
+ icon = 'bi-info-circle';
132
+ iconType = 'error';
133
+ color = '#0d6efd'; //blue
134
+ break;
135
+ }
136
+ ;
137
+ default: {
138
+ if (Tools.IsNull(icon))
139
+ icon = 'bi-exclamation-triangle-fill';
140
+ iconType = 'warning';
141
+ color = '#ffc107'; //yellow
142
+ break;
143
+ }
144
+ }
145
+ switch (icon) {
146
+ case 'delete':
147
+ icon = 'fa-regular fa-trash-can';
148
+ break;
149
+ }
150
+ Swal.fire({
151
+ icon: iconType,
152
+ iconColor: 'transparent',
153
+ iconHtml: `<i class="${icon}" style="color: ${color};"></i>`,
154
+ html: message,
155
+ showConfirmButton: true,
156
+ confirmButtonText: 'Yes',
157
+ confirmButtonColor: color,
158
+ focusConfirm: true,
159
+ showDenyButton: true,
160
+ denyButtonColor: color,
161
+ focusDeny: false,
162
+ reverseButtons: true,
163
+ allowOutsideClick: false,
164
+ allowEscapeKey: false,
165
+ allowEnterKey: true,
166
+ customClass: {
167
+ denyButton: 'sweet-alert-button',
168
+ confirmButton: 'sweet-alert-button'
169
+ }
170
+ }).then(({ value }) => setTimeout(() => Resolve(value)));
171
+ });
172
+ }
173
+ /** */
174
+ SetIcon(element, icon) {
175
+ for (const item of [...element.classList.value.split(' ')]) {
176
+ if (item.length > 0) {
177
+ element.classList.remove(item);
178
+ element.classList.remove('q');
179
+ }
180
+ }
181
+ icon = icon.trim();
182
+ const hasWhiteSpaces = / /;
183
+ if (hasWhiteSpaces.test(icon)) {
184
+ const classes = icon.split(' ');
185
+ for (const icon of classes)
186
+ element.classList.add(icon);
187
+ }
188
+ else
189
+ element.classList.add(icon);
190
+ }
191
+ /** */
192
+ SetAutoHide(element, autohide) {
193
+ element.removeAttribute('data-bs-autohide');
194
+ element.removeAttribute('data-bs-delay');
195
+ if (autohide && autohide > 0) {
196
+ if (autohide < 1000)
197
+ autohide = 1000;
198
+ element.setAttribute('data-bs-autohide', 'true');
199
+ element.setAttribute('data-bs-delay', String(autohide));
200
+ }
201
+ else
202
+ element.setAttribute('data-bs-autohide', 'false');
203
+ }
204
+ /** */
205
+ GetIcon(title, icon, iconDefault) {
206
+ if (icon == null || icon == '') {
207
+ title = title.replaceAll(' ', '').toUpperCase();
208
+ switch (title) {
209
+ case 'ENABLED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';
210
+ case 'ACTIVE': return 'fa-solid fa-thumbs-up fa-flip-horizontal';
211
+ case 'ACTIVED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';
212
+ case 'DISABLE': return 'fa-solid fa-thumbs-down fa-flip-horizontal';
213
+ case 'DISABLED': return 'fa-solid fa-thumbs-down fa-flip-horizontal';
214
+ case 'DELETE': return 'fa-regular fa-trash-can';
215
+ case 'DELETED': return 'fa-regular fa-trash-can';
216
+ default: return iconDefault;
217
+ }
218
+ }
219
+ return icon;
220
+ }
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerAlert, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CoerAlert, isStandalone: true, selector: "coer-alert", ngImport: i0, template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }); }
223
+ }
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerAlert, decorators: [{
225
+ type: Component,
226
+ args: [{ selector: 'coer-alert', standalone: true, template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }]
227
+ }] });
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1hbGVydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL3Rvb2xzL2xpYi9jb2VyLWFsZXJ0L2NvZXItYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy90b29scy9saWIvY29lci1hbGVydC9jb2VyLWFsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUE7O0FBUTlCLE1BQU0sT0FBTyxTQUFTO0lBRWxCLE1BQU07SUFDQyxPQUFPLENBQUMsVUFBeUIsSUFBSSxFQUFFLFFBQXVCLElBQUksRUFBRSxPQUFzQixJQUFJLEVBQUUsV0FBMEIsSUFBSTtRQUNqSSxPQUFPO1FBQ1AsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1lBQUUsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUNyRCxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUUsQ0FBQztRQUMxRSxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXRDLE1BQU07UUFDTixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFNLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFFLENBQUM7UUFDeEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FB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S0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLDBDQUEwQyxDQUFDO2dCQUNsRSxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sNENBQTRDLENBQUM7Z0JBQ3BFLEtBQUssVUFBVSxDQUFDLENBQUMsT0FBTyw0Q0FBNEMsQ0FBQztnQkFDckUsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLHlCQUF5QixDQUFDO2dCQUNoRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8seUJBQXlCLENBQUM7Z0JBQ2pELE9BQU8sQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDO1lBQ2hDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzsrR0E5T1EsU0FBUzttR0FBVCxTQUFTLHNFQ1h0QiwrckVBdURROzs0RkQ1Q0ssU0FBUztrQkFOckIsU0FBUzsrQkFDSSxZQUFZLGNBR1YsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb29scyB9IGZyb20gJy4uL3Rvb2xzJztcclxuaW1wb3J0ICogYXMgYm9vdHN0cmFwIGZyb20gJ2Jvb3RzdHJhcCc7XHJcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NvZXItYWxlcnQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZXItYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29lci1hbGVydC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lckFsZXJ0IHtcclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsLCB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCA9IDMwMDApOiB2b2lkIHtcclxuICAgICAgICAvL1RpdGxlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzT25seVdoaXRlU3BhY2UodGl0bGUpKSB0aXRsZSA9ICdTdWNjZXNzJztcclxuICAgICAgICBjb25zdCBhbGVydFN1Y2Nlc3NUaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1zdWNjZXNzLXRpdGxlJykhO1xyXG4gICAgICAgIGFsZXJ0U3VjY2Vzc1RpdGxlLnRleHRDb250ZW50ID0gdGl0bGU7XHJcblxyXG4gICAgICAgIC8vSWNvblxyXG4gICAgICAgIGljb24gPSB0aGlzLkdldEljb24odGl0bGUhLCBpY29uLCAnYmktY2hlY2stY2lyY2xlIGZhLWJlYXQnKTtcclxuICAgICAgICBjb25zdCBhbGVydFN1Y2Nlc3NJY29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LXN1Y2Nlc3MtaWNvbicpITtcclxuICAgICAgICB0aGlzLlNldEljb24oYWxlcnRTdWNjZXNzSWNvbiwgaWNvbik7XHJcblxyXG4gICAgICAgIC8vTWVzc2FnZVxyXG4gICAgICAgIGlmIChUb29scy5Jc051bGwobWVzc2FnZSkpIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICBjb25zdCBhbGVydFN1Y2Nlc3NNZXNzYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LXN1Y2Nlc3MtbWVzc2FnZScpITtcclxuICAgICAgICBhbGVydFN1Y2Nlc3NNZXNzYWdlLmlubmVySFRNTCA9IG1lc3NhZ2UhO1xyXG5cclxuICAgICAgICAvL1RvYXN0XHJcbiAgICAgICAgY29uc3QgYWxlcnRTdWNjZXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LXN1Y2Nlc3MnKSE7XHJcbiAgICAgICAgdGhpcy5TZXRBdXRvSGlkZShhbGVydFN1Y2Nlc3MsIGF1dG9oaWRlKTtcclxuXHJcbiAgICAgICAgY29uc3QgdG9hc3QgPSBib290c3RyYXAuVG9hc3QuZ2V0T3JDcmVhdGVJbnN0YW5jZShhbGVydFN1Y2Nlc3MpO1xyXG4gICAgICAgIHRvYXN0LnNob3coKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgRXJyb3IobWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIHRpdGxlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgaWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGF1dG9oaWRlOiBudW1iZXIgfCBudWxsID0gMzAwMCk6IHZvaWQge1xyXG4gICAgICAgIC8vVGl0bGVcclxuICAgICAgICBpZiAoVG9vbHMuSXNPbmx5V2hpdGVTcGFjZSh0aXRsZSkpIHRpdGxlID0gJ0Vycm9yJztcclxuICAgICAgICBjb25zdCBhbGVydEVycm9yVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtZXJyb3ItdGl0bGUnKSE7XHJcbiAgICAgICAgYWxlcnRFcnJvclRpdGxlLnRleHRDb250ZW50ID0gdGl0bGU7XHJcblxyXG4gICAgICAgIC8vSWNvblxyXG4gICAgICAgIGljb24gPSB0aGlzLkdldEljb24odGl0bGUhLCBpY29uLCAnYmktZXhjbGFtYXRpb24tb2N0YWdvbiBmYS1iZWF0Jyk7XHJcbiAgICAgICAgY29uc3QgYWxlcnRFcnJvckljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtZXJyb3ItaWNvbicpITtcclxuICAgICAgICB0aGlzLlNldEljb24oYWxlcnRFcnJvckljb24sIGljb24pO1xyXG5cclxuICAgICAgICAvL01lc3NhZ2VcclxuICAgICAgICBpZiAoVG9vbHMuSXNOdWxsKG1lc3NhZ2UpKSBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRFcnJvckJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtZXJyb3ItbWVzc2FnZScpITtcclxuICAgICAgICBhbGVydEVycm9yQm9keS5pbm5lckhUTUwgPSBtZXNzYWdlITtcclxuXHJcbiAgICAgICAgLy9Ub2FzdFxyXG4gICAgICAgIGNvbnN0IGFsZXJ0RXJyb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtZXJyb3InKSE7XHJcbiAgICAgICAgdGhpcy5TZXRBdXRvSGlkZShhbGVydEVycm9yLCBhdXRvaGlkZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRvYXN0ID0gYm9vdHN0cmFwLlRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UoYWxlcnRFcnJvcik7XHJcbiAgICAgICAgdG9hc3Quc2hvdygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBJbmZvKG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsLCB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCA9IDMwMDApOiB2b2lkIHtcclxuICAgICAgICAvL1RpdGxlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzT25seVdoaXRlU3BhY2UodGl0bGUpKSB0aXRsZSA9ICdJbmZvJztcclxuICAgICAgICBjb25zdCBhbGVydEluZm9UaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1pbmZvLXRpdGxlJykhO1xyXG4gICAgICAgIGFsZXJ0SW5mb1RpdGxlLnRleHRDb250ZW50ID0gdGl0bGU7XHJcblxyXG4gICAgICAgIC8vSWNvblxyXG4gICAgICAgIGljb24gPSB0aGlzLkdldEljb24odGl0bGUhLCBpY29uLCAnYmktaW5mby1jaXJjbGUgZmEtYmVhdCcpO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0SW5mb0ljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtaW5mby1pY29uJykhO1xyXG4gICAgICAgIHRoaXMuU2V0SWNvbihhbGVydEluZm9JY29uLCBpY29uKTtcclxuXHJcbiAgICAgICAgLy9NZXNzYWdlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzTnVsbChtZXNzYWdlKSkgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0SW5mb0JvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtaW5mby1tZXNzYWdlJykhO1xyXG4gICAgICAgIGFsZXJ0SW5mb0JvZHkuaW5uZXJIVE1MID0gbWVzc2FnZSE7XHJcblxyXG4gICAgICAgIC8vVG9hc3RcclxuICAgICAgICBjb25zdCBhbGVydEluZm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtaW5mbycpITtcclxuICAgICAgICB0aGlzLlNldEF1dG9IaWRlKGFsZXJ0SW5mbywgYXV0b2hpZGUpO1xyXG5cclxuICAgICAgICBjb25zdCB0b2FzdCA9IGJvb3RzdHJhcC5Ub2FzdC5nZXRPckNyZWF0ZUluc3RhbmNlKGFsZXJ0SW5mbyk7XHJcbiAgICAgICAgdG9hc3Quc2hvdygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBXYXJuaW5nKG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsLCB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCA9IDMwMDApOiB2b2lkIHtcclxuICAgICAgICAvL1RpdGxlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzT25seVdoaXRlU3BhY2UodGl0bGUpKSB0aXRsZSA9ICdXYXJuaW5nJztcclxuICAgICAgICBjb25zdCBhbGVydFdhcm5pbmdUaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC13YXJuaW5nLXRpdGxlJykhO1xyXG4gICAgICAgIGFsZXJ0V2FybmluZ1RpdGxlLnRleHRDb250ZW50ID0gdGl0bGU7XHJcblxyXG4gICAgICAgIC8vSWNvblxyXG4gICAgICAgIGljb24gPSB0aGlzLkdldEljb24odGl0bGUhLCBpY29uLCAnYmktZXhjbGFtYXRpb24tdHJpYW5nbGUtZmlsbCBmYS1iZWF0Jyk7XHJcbiAgICAgICAgY29uc3QgYWxlcnRXYXJuaW5nSWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC13YXJuaW5nLWljb24nKSE7XHJcbiAgICAgICAgdGhpcy5TZXRJY29uKGFsZXJ0V2FybmluZ0ljb24sIGljb24pO1xyXG5cclxuICAgICAgICAvL01lc3NhZ2VcclxuICAgICAgICBpZiAoVG9vbHMuSXNOdWxsKG1lc3NhZ2UpKSBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRXYXJuaW5nQm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC13YXJuaW5nLW1lc3NhZ2UnKSE7XHJcbiAgICAgICAgYWxlcnRXYXJuaW5nQm9keS5pbm5lckhUTUwgPSBtZXNzYWdlITtcclxuXHJcbiAgICAgICAgLy9Ub2FzdFxyXG4gICAgICAgIGNvbnN0IGFsZXJ0V2FybmluZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC13YXJuaW5nJykhO1xyXG4gICAgICAgIHRoaXMuU2V0QXV0b0hpZGUoYWxlcnRXYXJuaW5nLCBhdXRvaGlkZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRvYXN0ID0gYm9vdHN0cmFwLlRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UoYWxlcnRXYXJuaW5nKTtcclxuICAgICAgICB0b2FzdC5zaG93KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIENsb3NlKGFsZXJ0OiAnYWxlcnQtc3VjY2VzcycgfCAnYWxlcnQtZXJyb3InIHwgJ2FsZXJ0LWluZm8nIHwgJ2FsZXJ0LXdhcm5pbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWxlcnQpITtcclxuICAgICAgICAgICAgY29uc3QgdG9hc3QgPSBib290c3RyYXAuVG9hc3QuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50KTtcclxuICAgICAgICAgICAgdG9hc3QuaGlkZSgpO1xyXG5cclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IFJlc29sdmUoKSB9LCAyMDApO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIENvbmZpcm0oXHJcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nID0gJ1Byb2NlZWQ/JyxcclxuICAgICAgICBhbGVydFR5cGU6ICd3YXJuaW5nJyB8ICdkYW5nZXInIHwgJ3N1Y2Nlc3MnIHwgJ2luZm8nID0gJ3dhcm5pbmcnLFxyXG4gICAgICAgIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBsZXQgY29sb3I6IHN0cmluZztcclxuICAgICAgICAgICAgbGV0IGljb25UeXBlOiAnd2FybmluZycgfCAnZXJyb3InIHwgJ3N1Y2Nlc3MnIHwgJ2luZm8nO1xyXG4gICAgICAgICAgICBzd2l0Y2goYWxlcnRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYW5nZXInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTnVsbChpY29uKSkgaWNvbiA9ICdiaS1leGNsYW1hdGlvbi1vY3RhZ29uJztcclxuICAgICAgICAgICAgICAgICAgICBpY29uVHlwZSA9ICdlcnJvcic7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAnI2RjMzU0NSc7IC8vcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTnVsbChpY29uKSkgaWNvbiA9ICdiaS1jaGVjay1jaXJjbGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGljb25UeXBlID0gJ2luZm8nO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yID0gJyMxOTg3NTQnOyAvL2dyZWVuXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8nOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTnVsbChpY29uKSkgaWNvbiA9ICdiaS1pbmZvLWNpcmNsZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWNvblR5cGUgPSAnZXJyb3InO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yID0gJyMwZDZlZmQnOyAvL2JsdWVcclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTnVsbChpY29uKSkgaWNvbiA9ICdiaS1leGNsYW1hdGlvbi10cmlhbmdsZS1maWxsJztcclxuICAgICAgICAgICAgICAgICAgICBpY29uVHlwZSA9ICd3YXJuaW5nJztcclxuICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICcjZmZjMTA3JzsgLy95ZWxsb3dcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc3dpdGNoKGljb24pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6IGljb24gPSAnZmEtcmVndWxhciBmYS10cmFzaC1jYW4nOyBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICAgIGljb246IGljb25UeXBlLFxyXG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICAgICAgaWNvbkh0bWw6IGA8aSBjbGFzcz1cIiR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiAke2NvbG9yfTtcIj48L2k+YCxcclxuICAgICAgICAgICAgICAgIGh0bWw6IG1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnWWVzJyxcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogY29sb3IsXHJcbiAgICAgICAgICAgICAgICBmb2N1c0NvbmZpcm06IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzaG93RGVueUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRlbnlCdXR0b25Db2xvcjogY29sb3IsXHJcbiAgICAgICAgICAgICAgICBmb2N1c0Rlbnk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBhbGxvd091dHNpZGVDbGljazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0VzY2FwZUtleTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0VudGVyS2V5OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBkZW55QnV0dG9uOiAnc3dlZXQtYWxlcnQtYnV0dG9uJyxcclxuICAgICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiAnc3dlZXQtYWxlcnQtYnV0dG9uJ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KS50aGVuKCh7IHZhbHVlIH0pID0+IHNldFRpbWVvdXQoKCkgPT4gUmVzb2x2ZSh2YWx1ZSkpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIFNldEljb24oZWxlbWVudDogSFRNTEVsZW1lbnQsIGljb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBbLi4uZWxlbWVudC5jbGFzc0xpc3QudmFsdWUuc3BsaXQoJyAnKV0pIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdxJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGljb24gPSBpY29uLnRyaW0oKTtcclxuICAgICAgICBjb25zdCBoYXNXaGl0ZVNwYWNlczogUmVnRXhwID0gLyAvO1xyXG4gICAgICAgIGlmIChoYXNXaGl0ZVNwYWNlcy50ZXN0KGljb24pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzZXMgPSBpY29uLnNwbGl0KCcgJyk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWNvbiBvZiBjbGFzc2VzKSBlbGVtZW50LmNsYXNzTGlzdC5hZGQoaWNvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChpY29uKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIFNldEF1dG9IaWRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWJzLWF1dG9oaWRlJyk7XHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtYnMtZGVsYXknKTtcclxuXHJcbiAgICAgICAgaWYgKGF1dG9oaWRlICYmIGF1dG9oaWRlID4gMCkge1xyXG4gICAgICAgICAgICBpZiAoYXV0b2hpZGUgPCAxMDAwKSBhdXRvaGlkZSA9IDEwMDA7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLWF1dG9oaWRlJywgJ3RydWUnKTtcclxuICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtZGVsYXknLCBTdHJpbmcoYXV0b2hpZGUpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtYXV0b2hpZGUnLCAnZmFsc2UnKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIEdldEljb24odGl0bGU6IHN0cmluZywgaWNvbjogc3RyaW5nIHwgbnVsbCwgaWNvbkRlZmF1bHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKGljb24gPT0gbnVsbCB8fCBpY29uID09ICcnKSB7XHJcbiAgICAgICAgICAgIHRpdGxlID0gdGl0bGUucmVwbGFjZUFsbCgnICcsICcnKS50b1VwcGVyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgc3dpdGNoKHRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdFTkFCTEVEJzogcmV0dXJuICdmYS1zb2xpZCBmYS10aHVtYnMtdXAgZmEtZmxpcC1ob3Jpem9udGFsJztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0FDVElWRSc6IHJldHVybiAnZmEtc29saWQgZmEtdGh1bWJzLXVwIGZhLWZsaXAtaG9yaXpvbnRhbCc7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdBQ1RJVkVEJzogcmV0dXJuICdmYS1zb2xpZCBmYS10aHVtYnMtdXAgZmEtZmxpcC1ob3Jpem9udGFsJztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RJU0FCTEUnOiByZXR1cm4gJ2ZhLXNvbGlkIGZhLXRodW1icy1kb3duIGZhLWZsaXAtaG9yaXpvbnRhbCc7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdESVNBQkxFRCc6IHJldHVybiAnZmEtc29saWQgZmEtdGh1bWJzLWRvd24gZmEtZmxpcC1ob3Jpem9udGFsJztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RFTEVURSc6IHJldHVybiAnZmEtcmVndWxhciBmYS10cmFzaC1jYW4nO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnREVMRVRFRCc6IHJldHVybiAnZmEtcmVndWxhciBmYS10cmFzaC1jYW4nO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGljb25EZWZhdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaWNvbjtcclxuICAgIH1cclxufSIsIjxhc2lkZSBjbGFzcz1cInRvYXN0LWNvbnRhaW5lciBjb2VyLWFsZXJ0XCI+XHJcbiAgICA8IS0tIFN1Y2Nlc3MgLS0+XHJcbiAgICA8ZGl2IGlkPVwiYWxlcnQtc3VjY2Vzc1wiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzPVwidG9hc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGlkPVwiYWxlcnQtc3VjY2Vzcy1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGlkPVwiYWxlcnQtc3VjY2Vzcy10aXRsZVwiPjwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQ2xvc2UoJ2FsZXJ0LXN1Y2Nlc3MnKVwiIGNsYXNzPVwiYnRuLWNsb3NlIGJ0bi1jbG9zZS13aGl0ZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtYm9keVwiPlxyXG4gICAgICAgICAgICA8cHJlIGlkPVwiYWxlcnQtc3VjY2Vzcy1tZXNzYWdlXCI+PC9wcmU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPCEtLSBFcnJvciAtLT5cclxuICAgIDxkaXYgaWQ9XCJhbGVydC1lcnJvclwiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzPVwidG9hc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGlkPVwiYWxlcnQtZXJyb3ItaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgPHN0cm9uZyBpZD1cImFsZXJ0LWVycm9yLXRpdGxlXCI+PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJDbG9zZSgnYWxlcnQtZXJyb3InKVwiIGNsYXNzPVwiYnRuLWNsb3NlIGJ0bi1jbG9zZS13aGl0ZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtYm9keVwiPlxyXG4gICAgICAgICAgICA8cHJlIGlkPVwiYWxlcnQtZXJyb3ItbWVzc2FnZVwiPjwvcHJlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwhLS0gSW5mbyAtLT5cclxuICAgIDxkaXYgaWQ9XCJhbGVydC1pbmZvXCIgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgY2xhc3M9XCJ0b2FzdFwiPlxyXG4gICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aSBpZD1cImFsZXJ0LWluZm8taWNvblwiPjwvaT5cclxuICAgICAgICAgICAgPHN0cm9uZyBpZD1cImFsZXJ0LWluZm8tdGl0bGVcIj48L3N0cm9uZz5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkNsb3NlKCdhbGVydC1pbmZvJylcIiBjbGFzcz1cImJ0bi1jbG9zZSBidG4tY2xvc2Utd2hpdGVcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWJvZHlcIj5cclxuICAgICAgICAgICAgPHByZSBpZD1cImFsZXJ0LWluZm8tbWVzc2FnZVwiPjwvcHJlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwhLS0gV2FybmluZyAtLT5cclxuICAgIDxkaXYgaWQ9XCJhbGVydC13YXJuaW5nXCIgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgY2xhc3M9XCJ0b2FzdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGkgaWQ9XCJhbGVydC13YXJuaW5nLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgaWQ9XCJhbGVydC13YXJuaW5nLXRpdGxlXCI+PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJDbG9zZSgnYWxlcnQtd2FybmluZycpXCIgY2xhc3M9XCJidG4tY2xvc2VcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWJvZHlcIj5cclxuICAgICAgICAgICAgPHByZSBpZD1cImFsZXJ0LXdhcm5pbmctbWVzc2FnZVwiPjwvcHJlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvYXNpZGU+Il19
@@ -0,0 +1,46 @@
1
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
2
+ import { forwardRef } from "@angular/core";
3
+ export const CONTROL_VALUE = (component) => {
4
+ return {
5
+ provide: NG_VALUE_ACCESSOR,
6
+ useExisting: forwardRef(() => component),
7
+ multi: true
8
+ };
9
+ };
10
+ export class ControlValue {
11
+ constructor() {
12
+ this._isTouched = false;
13
+ }
14
+ get isTouched() {
15
+ return this._isTouched;
16
+ }
17
+ /** */
18
+ SetValue(value) {
19
+ if (typeof this._UpdateValue === 'function') {
20
+ this._UpdateValue(value);
21
+ }
22
+ this._value = value;
23
+ }
24
+ /** */
25
+ SetTouched(isTouched) {
26
+ if (typeof this._IsTouched === 'function') {
27
+ this._IsTouched(isTouched);
28
+ }
29
+ this._isTouched = isTouched;
30
+ }
31
+ /** */
32
+ writeValue(value) {
33
+ this._value = value;
34
+ }
35
+ /** */
36
+ registerOnChange(callback) {
37
+ this._UpdateValue = callback;
38
+ }
39
+ /** */
40
+ registerOnTouched(callback) {
41
+ this._IsTouched = callback;
42
+ }
43
+ /** */
44
+ setDisabledState(isDisabled) { }
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvdG9vbHMvbGliL2NvbnRyb2wtdmFsdWUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUksU0FBWSxFQUFFLEVBQUU7SUFDN0MsT0FBTztRQUNILE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDeEMsS0FBSyxFQUFFLElBQUk7S0FDZCxDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBR0QsTUFBTSxPQUFPLFlBQVk7SUFBekI7UUFJWSxlQUFVLEdBQVksS0FBSyxDQUFDO0lBa0R4QyxDQUFDO0lBN0NHLElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUdELE1BQU07SUFDSSxRQUFRLENBQUMsS0FBVTtRQUN6QixJQUFHLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBR0QsTUFBTTtJQUNDLFVBQVUsQ0FBQyxTQUFrQjtRQUNoQyxJQUFHLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBR0QsTUFBTTtJQUNDLFVBQVUsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFHRCxNQUFNO0lBQ0MsZ0JBQWdCLENBQUMsUUFBa0I7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUdELE1BQU07SUFDQyxpQkFBaUIsQ0FBQyxRQUFrQjtRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBR0QsTUFBTTtJQUNDLGdCQUFnQixDQUFDLFVBQW1CLElBQVMsQ0FBQztDQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBDT05UUk9MX1ZBTFVFID0gPFQ+KGNvbXBvbmVudDogVCkgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBjb21wb25lbnQpLFxyXG4gICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFZhbHVlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIC8vVmFyaWFibGVzXHJcbiAgICBwcm90ZWN0ZWQgX3ZhbHVlOiBhbnk7XHJcbiAgICBwcml2YXRlIF9pc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBfVXBkYXRlVmFsdWUhOiBGdW5jdGlvbjtcclxuICAgIHByaXZhdGUgX0lzVG91Y2hlZCE6IEZ1bmN0aW9uO1xyXG5cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzVG91Y2hlZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXNUb3VjaGVkO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBTZXRWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYodHlwZW9mIHRoaXMuX1VwZGF0ZVZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX1VwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIFNldFRvdWNoZWQoaXNUb3VjaGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaWYodHlwZW9mIHRoaXMuX0lzVG91Y2hlZCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLl9Jc1RvdWNoZWQoaXNUb3VjaGVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2lzVG91Y2hlZCA9IGlzVG91Y2hlZDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9VcGRhdGVWYWx1ZSA9IGNhbGxiYWNrO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9Jc1RvdWNoZWQgPSBjYWxsYmFjaztcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge31cclxufSJdfQ==
@@ -0,0 +1,29 @@
1
+ import moment from "moment";
2
+ export class DateTime {
3
+ /** Get UTC Offset */
4
+ static GetOffset() {
5
+ return moment().utcOffset();
6
+ }
7
+ /** YYYY-MM-DD HH:mm:ss */
8
+ static GetFormatDB(date) {
9
+ if ((typeof date === 'string'))
10
+ date = date.replaceAll('/', '-');
11
+ return moment(date).format('YYYY-MM-DD HH:mm:ss');
12
+ }
13
+ /** Convert UTC Date to Local Zone */
14
+ static ToLocalZone(date) {
15
+ date = DateTime.GetFormatDB(date);
16
+ return moment(date).add(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');
17
+ }
18
+ /** Convert Local Zone Date to UTC */
19
+ static ToUTC(date) {
20
+ date = DateTime.GetFormatDB(date);
21
+ return moment(date).subtract(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');
22
+ }
23
+ /** DD MMM YYYY */
24
+ static GetDateFormat(date) {
25
+ date = DateTime.GetFormatDB(date);
26
+ return moment(date).parseZone().local(true).format('DD MMM YYYY');
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy90b29scy9saWIvZGF0ZS10aW1lLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sUUFBUTtJQUNqQixxQkFBcUI7SUFDZCxNQUFNLENBQUMsU0FBUztRQUNuQixPQUFPLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFHRCwwQkFBMEI7SUFDbkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFtQztRQUN6RCxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDO1lBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFHRCxxQ0FBcUM7SUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFtQztRQUN6RCxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFHRCxxQ0FBcUM7SUFDOUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFtQztRQUNuRCxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFHRCxrQkFBa0I7SUFDWCxNQUFNLENBQUMsYUFBYSxDQUFDLElBQW1DO1FBQzNELElBQUksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWUge1xyXG4gICAgLyoqIEdldCBVVEMgT2Zmc2V0ICovXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldE9mZnNldCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQoKS51dGNPZmZzZXQoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIFlZWVktTU0tREQgSEg6bW06c3MgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0Rm9ybWF0REIoZGF0ZTogc3RyaW5nIHwgRGF0ZSB8IG1vbWVudC5Nb21lbnQpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICgodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSkgZGF0ZSA9IGRhdGUucmVwbGFjZUFsbCgnLycsICctJyk7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIENvbnZlcnQgVVRDIERhdGUgdG8gTG9jYWwgWm9uZSAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBUb0xvY2FsWm9uZShkYXRlOiBzdHJpbmcgfCBEYXRlIHwgbW9tZW50Lk1vbWVudCk6IHN0cmluZyB7XHJcbiAgICAgICAgZGF0ZSA9IERhdGVUaW1lLkdldEZvcm1hdERCKGRhdGUpO1xyXG4gICAgICAgIHJldHVybiBtb21lbnQoZGF0ZSkuYWRkKERhdGVUaW1lLkdldE9mZnNldCgpLCAnbWludXRlcycpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogQ29udmVydCBMb2NhbCBab25lIERhdGUgdG8gVVRDICovXHJcbiAgICBwdWJsaWMgc3RhdGljIFRvVVRDKGRhdGU6IHN0cmluZyB8IERhdGUgfCBtb21lbnQuTW9tZW50KTogc3RyaW5nIHtcclxuICAgICAgICBkYXRlID0gRGF0ZVRpbWUuR2V0Rm9ybWF0REIoZGF0ZSk7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5zdWJ0cmFjdChEYXRlVGltZS5HZXRPZmZzZXQoKSwgJ21pbnV0ZXMnKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEREIE1NTSBZWVlZICovXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldERhdGVGb3JtYXQoZGF0ZTogc3RyaW5nIHwgRGF0ZSB8IG1vbWVudC5Nb21lbnQpOiBzdHJpbmcge1xyXG4gICAgICAgIGRhdGUgPSBEYXRlVGltZS5HZXRGb3JtYXREQihkYXRlKTtcclxuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLnBhcnNlWm9uZSgpLmxvY2FsKHRydWUpLmZvcm1hdCgnREQgTU1NIFlZWVknKTtcclxuICAgIH1cclxufSJdfQ==
@@ -0,0 +1,91 @@
1
+ import { Tools } from "./tools";
2
+ import * as XLSX from 'xlsx';
3
+ export class Files {
4
+ static { this.EXCEL_EXTENSIONS = ['xls', 'xlsx', 'csv']; }
5
+ /** Get Extension File */
6
+ static GetExtension(file) {
7
+ const fileName = file.name;
8
+ if (fileName.includes('.')) {
9
+ let worlds = fileName.split('.');
10
+ if (worlds.length > 0) {
11
+ let extension = worlds.pop();
12
+ extension = extension.trim().toLowerCase();
13
+ if (extension.length > 0)
14
+ return extension;
15
+ }
16
+ }
17
+ return null;
18
+ }
19
+ /** Is Excel File */
20
+ static IsExcel(file) {
21
+ const EXTENSION = Files.GetExtension(file);
22
+ return Tools.IsNotNull(EXTENSION)
23
+ ? this.EXCEL_EXTENSIONS.includes(EXTENSION)
24
+ : false;
25
+ }
26
+ /** Read excel file */
27
+ static ReadExcel(file) {
28
+ return new Promise(Resolve => {
29
+ let columns = [];
30
+ let rows = [];
31
+ const reader = new FileReader();
32
+ reader.readAsArrayBuffer(file);
33
+ reader.onload = () => {
34
+ const dataBytes = new Uint8Array(reader.result);
35
+ if (dataBytes) {
36
+ const workbook = XLSX.read(dataBytes, {});
37
+ const sheet = workbook.Sheets[workbook.SheetNames[0]];
38
+ let dataSheet = XLSX.utils.sheet_to_json(sheet, {
39
+ header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
40
+ });
41
+ //Get Headers
42
+ for (const column in dataSheet[0]) {
43
+ columns.push(Tools.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));
44
+ }
45
+ //Get Rows
46
+ rows = XLSX.utils.sheet_to_json(sheet, { header: columns });
47
+ rows.shift();
48
+ rows = rows.map(row => {
49
+ const item = Tools.BreakReference(row);
50
+ delete item['__rowNum__'];
51
+ return item;
52
+ });
53
+ }
54
+ Resolve({ columns, rows });
55
+ };
56
+ reader.onerror = () => { Resolve({ columns, rows }); };
57
+ });
58
+ }
59
+ /** Export to excel file */
60
+ static ExportExcel(data, fileName = 'coer_report', sheetName = 'Sheet1') {
61
+ sheetName = Tools.CleanUpBlanks(sheetName);
62
+ fileName = Tools.CleanUpBlanks(fileName);
63
+ if (fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {
64
+ if (fileName.includes('.xls')) {
65
+ fileName = fileName.replaceAll('.xls', '.xlsx');
66
+ }
67
+ if (fileName.includes('.csv')) {
68
+ fileName = fileName.replaceAll('.csv', '.xlsx');
69
+ }
70
+ }
71
+ else {
72
+ fileName += '.xlsx';
73
+ }
74
+ const WORK_SHEET = XLSX.utils.json_to_sheet(data);
75
+ const WORK_BOOK = XLSX.utils.book_new();
76
+ XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, sheetName);
77
+ XLSX.writeFile(WORK_BOOK, fileName);
78
+ }
79
+ /** Convert file to string base64 */
80
+ static ConvertToBase64(file) {
81
+ return new Promise(Resolve => {
82
+ const reader = new FileReader();
83
+ reader.readAsDataURL(file);
84
+ reader.onload = () => {
85
+ Resolve(reader.result?.toString() || '');
86
+ };
87
+ reader.onerror = () => Resolve('');
88
+ });
89
+ }
90
+ }
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL3Rvb2xzL2xpYi9maWxlcy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE1BQU0sT0FBTyxLQUFLO2FBQ1MscUJBQWdCLEdBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTNFLHlCQUF5QjtJQUNsQixNQUFNLENBQUMsWUFBWSxDQUFDLElBQVU7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUUzQixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBYSxDQUFDO1lBRTdDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRyxDQUFDO2dCQUM5QixTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUMvQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFHRCxvQkFBb0I7SUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLElBQVU7UUFDNUIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1lB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QUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNqQixPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUE7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29scyB9IGZyb20gXCIuL3Rvb2xzXCI7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsZXMge1xyXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFWENFTF9FWFRFTlNJT05TOiBzdHJpbmdbXSA9IFsneGxzJywgJ3hsc3gnLCAnY3N2J107XHJcblxyXG4gICAgLyoqIEdldCBFeHRlbnNpb24gRmlsZSAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBHZXRFeHRlbnNpb24oZmlsZTogRmlsZSk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gZmlsZS5uYW1lO1xyXG5cclxuICAgICAgICBpZiAoZmlsZU5hbWUuaW5jbHVkZXMoJy4nKSkge1xyXG4gICAgICAgICAgICBsZXQgd29ybGRzID0gZmlsZU5hbWUuc3BsaXQoJy4nKSBhcyBzdHJpbmdbXTtcclxuXHJcbiAgICAgICAgICAgIGlmICh3b3JsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHdvcmxkcy5wb3AoKSE7XHJcbiAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBleHRlbnNpb24udHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uLmxlbmd0aCA+IDApIHJldHVybiBleHRlbnNpb247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogSXMgRXhjZWwgRmlsZSAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBJc0V4Y2VsKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBFWFRFTlNJT04gPSBGaWxlcy5HZXRFeHRlbnNpb24oZmlsZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBUb29scy5Jc05vdE51bGwoRVhURU5TSU9OKVxyXG4gICAgICAgICAgICA/IHRoaXMuRVhDRUxfRVhURU5TSU9OUy5pbmNsdWRlcyhFWFRFTlNJT04hKVxyXG4gICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogUmVhZCBleGNlbCBmaWxlICovXHJcbiAgICBwdWJsaWMgc3RhdGljIFJlYWRFeGNlbDxUPihmaWxlOiBGaWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHsgY29sdW1uczogc3RyaW5nW107IHJvd3M6IFRbXTsgfT4oUmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgcm93czogVFtdID0gW107XHJcblxyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XHJcblxyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YUJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkocmVhZGVyLnJlc3VsdCBhcyBhbnkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkYXRhQnl0ZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrYm9vayA9IFhMU1gucmVhZChkYXRhQnl0ZXMsIHt9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGVldCA9IHdvcmtib29rLlNoZWV0c1t3b3JrYm9vay5TaGVldE5hbWVzWzBdXTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YVNoZWV0OiBhbnlbXSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbihzaGVldCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IFsnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJ11cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy9HZXQgSGVhZGVyc1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcihjb25zdCBjb2x1bW4gaW4gZGF0YVNoZWV0WzBdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMucHVzaChUb29scy5GaXJzdENoYXJUb0xvd2VyKFN0cmluZyhkYXRhU2hlZXRbMF1bY29sdW1uXSkucmVwbGFjZUFsbCgnICcsICcnKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy9HZXQgUm93c1xyXG4gICAgICAgICAgICAgICAgICAgIHJvd3MgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24oc2hlZXQsIHsgaGVhZGVyOiBjb2x1bW5zIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvd3Muc2hpZnQoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcm93cyA9IHJvd3MubWFwKHJvdyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBUb29scy5CcmVha1JlZmVyZW5jZTxhbnk+KHJvdyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtWydfX3Jvd051bV9fJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIFJlc29sdmUoeyBjb2x1bW5zLCByb3dzIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHsgUmVzb2x2ZSh7IGNvbHVtbnMsIHJvd3MgfSkgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogRXhwb3J0IHRvIGV4Y2VsIGZpbGUgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgRXhwb3J0RXhjZWw8VD4oZGF0YTogVFtdLCBmaWxlTmFtZTogc3RyaW5nID0gJ2NvZXJfcmVwb3J0Jywgc2hlZXROYW1lOiBzdHJpbmcgPSAnU2hlZXQxJykge1xyXG4gICAgICAgIHNoZWV0TmFtZSA9IFRvb2xzLkNsZWFuVXBCbGFua3Moc2hlZXROYW1lKTtcclxuICAgICAgICBmaWxlTmFtZSA9IFRvb2xzLkNsZWFuVXBCbGFua3MoZmlsZU5hbWUpO1xyXG5cclxuICAgICAgICBpZihmaWxlTmFtZS5lbmRzV2l0aCgnLnhscycpIHx8IGZpbGVOYW1lLmVuZHNXaXRoKCcueGxzeCcpIHx8IGZpbGVOYW1lLmVuZHNXaXRoKCcuY3N2JykpIHtcclxuICAgICAgICAgICAgaWYgKGZpbGVOYW1lLmluY2x1ZGVzKCcueGxzJykpIHtcclxuICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUucmVwbGFjZUFsbCgnLnhscycsICcueGxzeCcpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZmlsZU5hbWUuaW5jbHVkZXMoJy5jc3YnKSkge1xyXG4gICAgICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlQWxsKCcuY3N2JywgJy54bHN4Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmaWxlTmFtZSArPSAnLnhsc3gnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgV09SS19TSEVFVCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChkYXRhKTtcclxuICAgICAgICBjb25zdCBXT1JLX0JPT0sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XHJcbiAgICAgICAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldChXT1JLX0JPT0ssIFdPUktfU0hFRVQsIHNoZWV0TmFtZSk7XHJcbiAgICAgICAgWExTWC53cml0ZUZpbGUoV09SS19CT09LLCBmaWxlTmFtZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBDb252ZXJ0IGZpbGUgdG8gc3RyaW5nIGJhc2U2NCAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBDb252ZXJ0VG9CYXNlNjQoZmlsZTogRmlsZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuXHJcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBSZXNvbHZlKHJlYWRlci5yZXN1bHQ/LnRvU3RyaW5nKCkgfHwgJycpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZWFkZXIub25lcnJvciA9ICgpID0+IFJlc29sdmUoJycpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il19
@@ -0,0 +1,23 @@
1
+ export class Menu {
2
+ static { this.storage = 'COER-System'; }
3
+ /** */
4
+ static Set(menu) {
5
+ let storage = sessionStorage.getItem(this.storage);
6
+ if (storage)
7
+ storage = JSON.parse(storage);
8
+ storage = Object.assign({}, storage, { menu });
9
+ sessionStorage.setItem(this.storage, JSON.stringify(storage));
10
+ }
11
+ /** */
12
+ static Get() {
13
+ let storage = sessionStorage.getItem(this.storage);
14
+ if (storage) {
15
+ storage = JSON.parse(storage);
16
+ if (storage.hasOwnProperty('menu')) {
17
+ return storage.menu;
18
+ }
19
+ }
20
+ return null;
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvdG9vbHMvbGliL21lbnUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLElBQUk7YUFFVyxZQUFPLEdBQUcsYUFBYSxDQUFDO0lBRWhELE1BQU07SUFDQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQXlCO1FBQ3ZDLElBQUksT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBUSxDQUFDO1FBQzFELElBQUksT0FBTztZQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUdELE1BQU07SUFDQyxNQUFNLENBQUMsR0FBRztRQUNiLElBQUksT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBUSxDQUFDO1FBRTFELElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU5QixJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3hCLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElNZW51T3B0aW9uU2VsZWN0ZWQgfSBmcm9tIFwiY29lci1lbGVtZW50cy9pbnRlcmZhY2VzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgTWVudSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgc3RvcmFnZSA9ICdDT0VSLVN5c3RlbSc7XHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgc3RhdGljIFNldChtZW51OiBJTWVudU9wdGlvblNlbGVjdGVkKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZSkgYXMgYW55O1xyXG4gICAgICAgIGlmIChzdG9yYWdlKSBzdG9yYWdlID0gSlNPTi5wYXJzZShzdG9yYWdlKTtcclxuICAgICAgICBzdG9yYWdlID0gT2JqZWN0LmFzc2lnbih7fSwgc3RvcmFnZSwgeyBtZW51IH0pO1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlLCBKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBHZXQoKTogSU1lbnVPcHRpb25TZWxlY3RlZCB8IG51bGwge1xyXG4gICAgICAgIGxldCBzdG9yYWdlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2UpIGFzIGFueTtcclxuXHJcbiAgICAgICAgaWYgKHN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgc3RvcmFnZSA9IEpTT04ucGFyc2Uoc3RvcmFnZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoc3RvcmFnZS5oYXNPd25Qcm9wZXJ0eSgnbWVudScpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmFnZS5tZW51O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufSJdfQ==