monkey-front-components 0.0.562 → 0.0.564

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 (180) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/components/base/base-component.mjs +330 -330
  3. package/esm2020/lib/components/base/base-dynamic-array.mjs +221 -221
  4. package/esm2020/lib/components/base/base-dynamic.mjs +102 -102
  5. package/esm2020/lib/components/base/base-scroll-component.mjs +55 -55
  6. package/esm2020/lib/components/base/base-validators.mjs +19 -19
  7. package/esm2020/lib/components/base/index.mjs +6 -6
  8. package/esm2020/lib/components/dynamic/button/button.component.mjs +52 -52
  9. package/esm2020/lib/components/dynamic/button/index.mjs +2 -2
  10. package/esm2020/lib/components/dynamic/dynamic-directive.mjs +95 -95
  11. package/esm2020/lib/components/dynamic/dynamic.module.mjs +84 -84
  12. package/esm2020/lib/components/dynamic/file-upload/file-upload.component.mjs +53 -53
  13. package/esm2020/lib/components/dynamic/file-upload/index.mjs +2 -2
  14. package/esm2020/lib/components/dynamic/form/dynamic-form-array.component.mjs +72 -72
  15. package/esm2020/lib/components/dynamic/form/dynamic-form.component.mjs +46 -46
  16. package/esm2020/lib/components/dynamic/form/index.mjs +3 -3
  17. package/esm2020/lib/components/dynamic/index.mjs +9 -9
  18. package/esm2020/lib/components/dynamic/input/index.mjs +2 -2
  19. package/esm2020/lib/components/dynamic/input/input.component.mjs +65 -65
  20. package/esm2020/lib/components/dynamic/input-phone/index.mjs +2 -2
  21. package/esm2020/lib/components/dynamic/input-phone/input-phone.component.mjs +65 -65
  22. package/esm2020/lib/components/dynamic/radio/index.mjs +2 -2
  23. package/esm2020/lib/components/dynamic/radio/radio.component.mjs +33 -33
  24. package/esm2020/lib/components/dynamic/select/index.mjs +2 -2
  25. package/esm2020/lib/components/dynamic/select/select.component.mjs +80 -80
  26. package/esm2020/lib/components/dynamic/select-search/index.mjs +2 -2
  27. package/esm2020/lib/components/dynamic/select-search/select-search.component.mjs +86 -86
  28. package/esm2020/lib/components/index.mjs +4 -4
  29. package/esm2020/lib/components/shared/filter/filter.component.mjs +142 -142
  30. package/esm2020/lib/components/shared/filter/filter.module.mjs +67 -67
  31. package/esm2020/lib/components/shared/filter/index.mjs +3 -3
  32. package/esm2020/lib/components/shared/filter/menu/index.mjs +2 -2
  33. package/esm2020/lib/components/shared/filter/menu/menu.component.mjs +120 -120
  34. package/esm2020/lib/components/shared/filter/menu/menu.module.mjs +70 -70
  35. package/esm2020/lib/components/shared/filter/options/children/children.component.mjs +50 -50
  36. package/esm2020/lib/components/shared/filter/options/children/index.mjs +2 -2
  37. package/esm2020/lib/components/shared/filter/options/currency/currency.component.mjs +46 -46
  38. package/esm2020/lib/components/shared/filter/options/currency/index.mjs +2 -2
  39. package/esm2020/lib/components/shared/filter/options/date-range/date-range.component.mjs +65 -65
  40. package/esm2020/lib/components/shared/filter/options/date-range/index.mjs +2 -2
  41. package/esm2020/lib/components/shared/filter/options/index.mjs +2 -2
  42. package/esm2020/lib/components/shared/filter/options/input/index.mjs +2 -2
  43. package/esm2020/lib/components/shared/filter/options/input/input.component.mjs +46 -46
  44. package/esm2020/lib/components/shared/filter/options/options.component.mjs +102 -102
  45. package/esm2020/lib/components/shared/filter/options/options.module.mjs +103 -103
  46. package/esm2020/lib/components/shared/filter/options/status/index.mjs +2 -2
  47. package/esm2020/lib/components/shared/filter/options/status/status.component.mjs +66 -66
  48. package/esm2020/lib/components/shared/filter/options/status-radio/index.mjs +2 -2
  49. package/esm2020/lib/components/shared/filter/options/status-radio/status-radio.component.mjs +37 -37
  50. package/esm2020/lib/components/shared/filter/selected/index.mjs +2 -2
  51. package/esm2020/lib/components/shared/filter/selected/item/children/children.component.mjs +57 -57
  52. package/esm2020/lib/components/shared/filter/selected/item/children/index.mjs +2 -2
  53. package/esm2020/lib/components/shared/filter/selected/item/currency/currency.component.mjs +29 -29
  54. package/esm2020/lib/components/shared/filter/selected/item/currency/index.mjs +2 -2
  55. package/esm2020/lib/components/shared/filter/selected/item/date-range/date-range.component.mjs +42 -42
  56. package/esm2020/lib/components/shared/filter/selected/item/date-range/index.mjs +2 -2
  57. package/esm2020/lib/components/shared/filter/selected/item/date-with-action/date-with-action.component.mjs +33 -33
  58. package/esm2020/lib/components/shared/filter/selected/item/date-with-action/index.mjs +2 -2
  59. package/esm2020/lib/components/shared/filter/selected/item/index.mjs +9 -9
  60. package/esm2020/lib/components/shared/filter/selected/item/input/index.mjs +2 -2
  61. package/esm2020/lib/components/shared/filter/selected/item/input/input.component.mjs +28 -28
  62. package/esm2020/lib/components/shared/filter/selected/item/item.component.mjs +75 -75
  63. package/esm2020/lib/components/shared/filter/selected/item/status/index.mjs +2 -2
  64. package/esm2020/lib/components/shared/filter/selected/item/status/status.component.mjs +39 -39
  65. package/esm2020/lib/components/shared/filter/selected/item/status-radio/index.mjs +2 -2
  66. package/esm2020/lib/components/shared/filter/selected/item/status-radio/status-radio.component.mjs +29 -29
  67. package/esm2020/lib/components/shared/filter/selected/selected.component.mjs +85 -80
  68. package/esm2020/lib/components/shared/filter/selected/selected.module.mjs +92 -92
  69. package/esm2020/lib/components/shared/index.mjs +5 -5
  70. package/esm2020/lib/components/shared/password-strength/index.mjs +3 -3
  71. package/esm2020/lib/components/shared/password-strength/password-strength.component.mjs +85 -85
  72. package/esm2020/lib/components/shared/password-strength/password-strength.mjs +2 -2
  73. package/esm2020/lib/components/shared/password-strength/password-strength.module.mjs +50 -50
  74. package/esm2020/lib/components/shared/products/filter/filter.component.mjs +36 -36
  75. package/esm2020/lib/components/shared/products/index.mjs +3 -3
  76. package/esm2020/lib/components/shared/products/products.component.mjs +91 -91
  77. package/esm2020/lib/components/shared/products/products.module.mjs +22 -22
  78. package/esm2020/lib/components/shared/products/providers/index.mjs +2 -2
  79. package/esm2020/lib/components/shared/products/providers/products.model.mjs +38 -38
  80. package/esm2020/lib/components/shared/progress-bar/index.mjs +4 -4
  81. package/esm2020/lib/components/shared/progress-bar/progress-bar.component.mjs +28 -28
  82. package/esm2020/lib/components/shared/progress-bar/progress-bar.module.mjs +18 -18
  83. package/esm2020/lib/components/shared/progress-bar/progress-bar.service.mjs +49 -49
  84. package/esm2020/lib/interfaces/field-config.mjs +2 -2
  85. package/esm2020/lib/interfaces/index.mjs +2 -2
  86. package/esm2020/monkey-front-components.mjs +4 -4
  87. package/esm2020/public-api.mjs +5 -5
  88. package/fesm2015/monkey-front-components.mjs +2912 -2904
  89. package/fesm2015/monkey-front-components.mjs.map +1 -1
  90. package/fesm2020/monkey-front-components.mjs +2889 -2884
  91. package/fesm2020/monkey-front-components.mjs.map +1 -1
  92. package/lib/components/base/base-component.d.ts +54 -54
  93. package/lib/components/base/base-dynamic-array.d.ts +34 -34
  94. package/lib/components/base/base-dynamic.d.ts +25 -25
  95. package/lib/components/base/base-scroll-component.d.ts +16 -16
  96. package/lib/components/base/base-validators.d.ts +1 -1
  97. package/lib/components/base/index.d.ts +5 -5
  98. package/lib/components/dynamic/button/button.component.d.ts +17 -17
  99. package/lib/components/dynamic/button/index.d.ts +1 -1
  100. package/lib/components/dynamic/dynamic-directive.d.ts +22 -22
  101. package/lib/components/dynamic/dynamic.module.d.ts +20 -20
  102. package/lib/components/dynamic/file-upload/file-upload.component.d.ts +17 -17
  103. package/lib/components/dynamic/file-upload/index.d.ts +1 -1
  104. package/lib/components/dynamic/form/dynamic-form-array.component.d.ts +16 -16
  105. package/lib/components/dynamic/form/dynamic-form.component.d.ts +14 -14
  106. package/lib/components/dynamic/form/index.d.ts +2 -2
  107. package/lib/components/dynamic/index.d.ts +8 -8
  108. package/lib/components/dynamic/input/index.d.ts +1 -1
  109. package/lib/components/dynamic/input/input.component.d.ts +20 -20
  110. package/lib/components/dynamic/input-phone/index.d.ts +1 -1
  111. package/lib/components/dynamic/input-phone/input-phone.component.d.ts +20 -20
  112. package/lib/components/dynamic/radio/index.d.ts +1 -1
  113. package/lib/components/dynamic/radio/radio.component.d.ts +11 -11
  114. package/lib/components/dynamic/select/index.d.ts +1 -1
  115. package/lib/components/dynamic/select/select.component.d.ts +16 -16
  116. package/lib/components/dynamic/select-search/index.d.ts +1 -1
  117. package/lib/components/dynamic/select-search/select-search.component.d.ts +18 -18
  118. package/lib/components/index.d.ts +3 -3
  119. package/lib/components/shared/filter/filter.component.d.ts +40 -40
  120. package/lib/components/shared/filter/filter.module.d.ts +14 -14
  121. package/lib/components/shared/filter/index.d.ts +2 -2
  122. package/lib/components/shared/filter/menu/index.d.ts +1 -1
  123. package/lib/components/shared/filter/menu/menu.component.d.ts +24 -24
  124. package/lib/components/shared/filter/menu/menu.module.d.ts +14 -14
  125. package/lib/components/shared/filter/options/children/children.component.d.ts +17 -17
  126. package/lib/components/shared/filter/options/children/index.d.ts +1 -1
  127. package/lib/components/shared/filter/options/currency/currency.component.d.ts +17 -17
  128. package/lib/components/shared/filter/options/currency/index.d.ts +1 -1
  129. package/lib/components/shared/filter/options/date-range/date-range.component.d.ts +24 -24
  130. package/lib/components/shared/filter/options/date-range/index.d.ts +1 -1
  131. package/lib/components/shared/filter/options/index.d.ts +1 -1
  132. package/lib/components/shared/filter/options/input/index.d.ts +1 -1
  133. package/lib/components/shared/filter/options/input/input.component.d.ts +17 -17
  134. package/lib/components/shared/filter/options/options.component.d.ts +28 -28
  135. package/lib/components/shared/filter/options/options.module.d.ts +19 -19
  136. package/lib/components/shared/filter/options/status/index.d.ts +1 -1
  137. package/lib/components/shared/filter/options/status/status.component.d.ts +19 -19
  138. package/lib/components/shared/filter/options/status-radio/index.d.ts +1 -1
  139. package/lib/components/shared/filter/options/status-radio/status-radio.component.d.ts +15 -15
  140. package/lib/components/shared/filter/selected/index.d.ts +1 -1
  141. package/lib/components/shared/filter/selected/item/children/children.component.d.ts +16 -16
  142. package/lib/components/shared/filter/selected/item/children/index.d.ts +1 -1
  143. package/lib/components/shared/filter/selected/item/currency/currency.component.d.ts +11 -11
  144. package/lib/components/shared/filter/selected/item/currency/index.d.ts +1 -1
  145. package/lib/components/shared/filter/selected/item/date-range/date-range.component.d.ts +12 -12
  146. package/lib/components/shared/filter/selected/item/date-range/index.d.ts +1 -1
  147. package/lib/components/shared/filter/selected/item/date-with-action/date-with-action.component.d.ts +11 -11
  148. package/lib/components/shared/filter/selected/item/date-with-action/index.d.ts +1 -1
  149. package/lib/components/shared/filter/selected/item/index.d.ts +8 -8
  150. package/lib/components/shared/filter/selected/item/input/index.d.ts +1 -1
  151. package/lib/components/shared/filter/selected/item/input/input.component.d.ts +11 -11
  152. package/lib/components/shared/filter/selected/item/item.component.d.ts +20 -20
  153. package/lib/components/shared/filter/selected/item/status/index.d.ts +1 -1
  154. package/lib/components/shared/filter/selected/item/status/status.component.d.ts +13 -13
  155. package/lib/components/shared/filter/selected/item/status-radio/index.d.ts +1 -1
  156. package/lib/components/shared/filter/selected/item/status-radio/status-radio.component.d.ts +11 -11
  157. package/lib/components/shared/filter/selected/selected.component.d.ts +19 -18
  158. package/lib/components/shared/filter/selected/selected.module.d.ts +22 -22
  159. package/lib/components/shared/index.d.ts +4 -4
  160. package/lib/components/shared/password-strength/index.d.ts +2 -2
  161. package/lib/components/shared/password-strength/password-strength.component.d.ts +23 -23
  162. package/lib/components/shared/password-strength/password-strength.d.ts +5 -5
  163. package/lib/components/shared/password-strength/password-strength.module.d.ts +12 -12
  164. package/lib/components/shared/products/filter/filter.component.d.ts +12 -12
  165. package/lib/components/shared/products/index.d.ts +2 -2
  166. package/lib/components/shared/products/products.component.d.ts +20 -20
  167. package/lib/components/shared/products/products.module.d.ts +11 -11
  168. package/lib/components/shared/products/providers/index.d.ts +1 -1
  169. package/lib/components/shared/products/providers/products.model.d.ts +13 -13
  170. package/lib/components/shared/progress-bar/index.d.ts +3 -3
  171. package/lib/components/shared/progress-bar/progress-bar.component.d.ts +12 -12
  172. package/lib/components/shared/progress-bar/progress-bar.module.d.ts +8 -8
  173. package/lib/components/shared/progress-bar/progress-bar.service.d.ts +14 -14
  174. package/lib/interfaces/field-config.d.ts +54 -54
  175. package/lib/interfaces/index.d.ts +1 -1
  176. package/monkey-front-components-0.0.564.tgz +0 -0
  177. package/monkey-front-components.d.ts +5 -5
  178. package/package.json +3 -3
  179. package/public-api.d.ts +1 -1
  180. package/monkey-front-components-0.0.562.tgz +0 -0
@@ -1,330 +1,330 @@
1
- import { Subject } from 'rxjs';
2
- import { Directive } from '@angular/core';
3
- import { takeUntil } from 'rxjs/operators';
4
- import { MonkeyUtils } from 'monkey-style-guide';
5
- import { MonkeyEcxCommonsService, MonkeyEcxUtils, ValidateUtils, Validators } from 'monkey-front-core';
6
- import * as i0 from "@angular/core";
7
- export class BaseComponent {
8
- constructor() {
9
- this.__paginationOptions = null;
10
- this.__isMobile = this.isMobile();
11
- this.__locales = ['pt-BR', 'es-CL', 'en-US'];
12
- this.__unsubscribeAll = new Subject();
13
- }
14
- isMobile() {
15
- const isMobileWidth = (window.screen.width <= 640) ||
16
- (window.matchMedia &&
17
- window.matchMedia('only screen and (max-width: 640px)').matches);
18
- return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile/i.test(navigator.userAgent)) || isMobileWidth;
19
- }
20
- handlePagination(create = true) {
21
- const { __paginationOptions } = this;
22
- if (__paginationOptions) {
23
- const { mainElement, service } = __paginationOptions;
24
- const element = document.getElementById(mainElement);
25
- if (element) {
26
- element.scroll = null;
27
- element.onscroll = null;
28
- element.removeEventListener('scroll', element.eventListeners('scroll'));
29
- element.removeEventListener('scroll', element.eventListeners('scroll')[0]);
30
- if (create) {
31
- element.addEventListener('scroll', () => {
32
- const { scrollTop, scrollHeight, offsetHeight } = element;
33
- const contentHeight = scrollHeight - offsetHeight;
34
- if (contentHeight <= scrollTop) {
35
- service.doPagination();
36
- }
37
- });
38
- }
39
- }
40
- }
41
- }
42
- handleSupport(supportControls) {
43
- const { service, show } = supportControls;
44
- const method = show ? 'show' : 'hide';
45
- service[method.toLowerCase()]();
46
- }
47
- handleTranslate(translateOptions) {
48
- const { service } = translateOptions;
49
- service.__oni18nDataChanged$
50
- .pipe(takeUntil(this.__unsubscribeAll))
51
- .subscribe(() => {
52
- const data = service.__i18n;
53
- if (data) {
54
- this.__i18n = data;
55
- }
56
- });
57
- }
58
- handleViewScroll(options) {
59
- const { elementId, service } = options;
60
- if (elementId === service?.__savedState?.scrollElementId) {
61
- this.goScroll(elementId);
62
- service.__savedState.scrollElementId = null;
63
- }
64
- }
65
- getErrorFirstMessageTranslated(formControl = null) {
66
- if (formControl?.hasError('required'))
67
- return 'FIELD-REQUIRED';
68
- if (formControl?.hasError('invalid'))
69
- return 'FIELD-INVALID';
70
- if (formControl?.hasError('email'))
71
- return 'INVALID-EMAIL';
72
- if (formControl?.hasError('minlength'))
73
- return 'MIN-LENGTH';
74
- if (formControl?.hasError('maxlength'))
75
- return 'MAX-LENGTH';
76
- if (formControl?.hasError('max'))
77
- return 'MAX';
78
- if (formControl?.hasError('min'))
79
- return 'MIN';
80
- if (formControl?.hasError('passwordsNotMatching'))
81
- return 'MATCH-PASSWORD';
82
- if (formControl?.hasError('invalidDate'))
83
- return 'INVALID-DATE';
84
- if (formControl?.hasError('invalidTrue'))
85
- return 'INVALID-TRUE';
86
- if (formControl?.hasError('invalidCpfCnpj'))
87
- return 'INVALID-DOCUMENT';
88
- if (formControl?.hasError('invalidZipCode'))
89
- return 'INVALID-ZIPCODE';
90
- if (formControl?.hasError('invalidCombo'))
91
- return 'INVALID-COMBO';
92
- if (formControl?.hasError('invalidUrl'))
93
- return 'INVALID-URL';
94
- if (formControl?.hasError('invalidUnlockRegister')) {
95
- return 'INVALID-UNLOCK-REGISTER';
96
- }
97
- if (formControl?.hasError('dateStartMustBeLessThanAnd')) {
98
- return 'DATE-START-MUST-BE-LESS-THAN-AND';
99
- }
100
- if (formControl?.hasError('dateEndMustBeGreaterThanStart')) {
101
- return 'DATE-END-MUST-BE-GREATER-THAN-SART';
102
- }
103
- if (formControl?.hasError('phone'))
104
- return 'INVALID-PHONE';
105
- if (formControl?.hasError('invalidValueGreaterThanZero'))
106
- return 'INVALID-GREATER-THAN-ZERO';
107
- return 'FIELD-INVALID';
108
- }
109
- getErrorLastMessageNotTranslated(formControl = null) {
110
- if (formControl?.hasError('minlength')) {
111
- return `${formControl?.getError('minlength').requiredLength} caracteres.`;
112
- }
113
- if (formControl?.hasError('maxlength')) {
114
- return `${formControl?.getError('maxlength').requiredLength} caracteres.`;
115
- }
116
- if (formControl?.hasError('max')) {
117
- return `${formControl?.getError('max').max}`;
118
- }
119
- if (formControl?.hasError('min')) {
120
- return `${formControl?.getError('min').min}`;
121
- }
122
- return '';
123
- }
124
- validateFormWithTranslate(f, index) {
125
- const formErrors = f.value;
126
- if (f.status === 'VALID')
127
- return true;
128
- if (!formErrors)
129
- return true;
130
- Object.entries(formErrors).forEach(([key, value]) => {
131
- const control = f.get(key);
132
- formErrors[key] = '';
133
- if (control && !control.valid) {
134
- const msg = {
135
- first: `ERRORS.${this.getErrorFirstMessageTranslated(f.get(key))}`,
136
- last: this.getErrorLastMessageNotTranslated(f.get(key))
137
- };
138
- formErrors[key] = msg;
139
- }
140
- });
141
- if (MonkeyUtils.persistNullEmptyUndefined(index)) {
142
- this.__monkeyecxFormErrors[index || 0] = formErrors;
143
- }
144
- else {
145
- this.__monkeyecxFormErrors = formErrors;
146
- }
147
- return false;
148
- }
149
- copyToClipboard(val) {
150
- const selBox = document.createElement('textarea');
151
- selBox.style.position = 'fixed';
152
- selBox.style.left = '0';
153
- selBox.style.top = '0';
154
- selBox.style.opacity = '0';
155
- selBox.value = val;
156
- document.body.appendChild(selBox);
157
- selBox.focus();
158
- selBox.select();
159
- document.execCommand('copy');
160
- document.body.removeChild(selBox);
161
- }
162
- validateForm(f, index, alias) {
163
- const formErrors = f.value;
164
- if (f.status === 'VALID')
165
- return true;
166
- if (!formErrors)
167
- return true;
168
- Object.entries(formErrors).forEach(([key, value]) => {
169
- const control = f.get(key);
170
- formErrors[key] = '';
171
- if (control && !control.valid) {
172
- const msg = {
173
- firstMessage: `ERRORS.${this.getErrorFirstMessageTranslated(f.get(key))}`,
174
- lastMessage: this.getErrorLastMessageNotTranslated(f.get(key))
175
- };
176
- formErrors[key] = msg;
177
- }
178
- });
179
- if (MonkeyUtils.persistNullEmptyUndefined(index)) {
180
- this.__monkeyecxFormErrors[index || 0] = formErrors;
181
- }
182
- else {
183
- let obj;
184
- if (alias) {
185
- obj = {
186
- [alias]: {
187
- ...formErrors
188
- }
189
- };
190
- }
191
- else {
192
- obj = formErrors;
193
- }
194
- this.__monkeyecxFormErrors = {
195
- ...this.__monkeyecxFormErrors,
196
- ...obj
197
- };
198
- }
199
- f.markAllAsTouched();
200
- return false;
201
- }
202
- clearAllServiceData(clearData) {
203
- const context = this;
204
- Object.values(context).forEach((ctx) => {
205
- if (ctx instanceof MonkeyEcxCommonsService) {
206
- ctx.clear(clearData);
207
- }
208
- });
209
- }
210
- ngOnInit(args) {
211
- if (args?.paginationOptions) {
212
- this.__paginationOptions = args?.paginationOptions;
213
- this.handlePagination();
214
- }
215
- if (args?.supportControls) {
216
- this.handleSupport(args?.supportControls);
217
- }
218
- if (args?.translateOptions) {
219
- this.handleTranslate(args?.translateOptions);
220
- }
221
- if (args?.scrollOptions) {
222
- this.handleViewScroll(args.scrollOptions);
223
- }
224
- }
225
- ngOnDestroy(clearData = true) {
226
- this.__unsubscribeAll.next();
227
- this.__unsubscribeAll.complete();
228
- this.clearAllServiceData(clearData);
229
- this.handlePagination(false);
230
- }
231
- handleErrorFromServices(error, f) {
232
- this.__monkeyecxFormErrors = null;
233
- if (error.type === 'Parameter_Error') {
234
- Object.entries(f.value).forEach(([key, value]) => {
235
- error.notifications.forEach((_) => {
236
- const field = _.split(':')[0];
237
- const description = _.split(':')[1];
238
- if (field === key) {
239
- const msg = {
240
- firstMessage: '',
241
- lastMessage: description
242
- };
243
- this.__monkeyecxFormErrors = {
244
- ...this.__monkeyecxFormErrors,
245
- [key]: msg
246
- };
247
- f.controls[key].setErrors({
248
- incorrect: true
249
- });
250
- }
251
- });
252
- });
253
- }
254
- f.markAllAsTouched();
255
- }
256
- goBack() {
257
- window.history.back();
258
- }
259
- goScroll(id) {
260
- const element = document.getElementById(id);
261
- if (element)
262
- element.scrollIntoView();
263
- }
264
- getEmbeddedData(data, field) {
265
- const { _embedded } = data;
266
- return _embedded ? _embedded[field] : null;
267
- }
268
- openWindow(url) {
269
- window.open(`${url}`, '_blank');
270
- }
271
- fillI18n(data) {
272
- this.__i18n = data;
273
- }
274
- getCountryPrefix(country) {
275
- return {
276
- br: 55,
277
- cl: 56
278
- }[country];
279
- }
280
- getCountryCurrencyChartFormat(country) {
281
- return {
282
- br: 'R$ #,###,##0.00',
283
- cl: 'CLP #,###,##0'
284
- }[country];
285
- }
286
- getCountryDocumentMask(type, country) {
287
- return MonkeyEcxUtils.getDocumentMask(type, country);
288
- }
289
- getCountryDocumentPlaceholder(type, country) {
290
- return MonkeyEcxUtils.getDocumentPlaceholder(type, country);
291
- }
292
- getCountryValidators(country) {
293
- return {
294
- br: {
295
- governmentId: ValidateUtils.DocumentValidator,
296
- zipCode: Validators.zipCodeByCountry(country)
297
- },
298
- cl: {
299
- governmentId: ValidateUtils.DocumentRutValidator,
300
- zipCode: Validators.zipCodeByCountry(country)
301
- }
302
- }[country];
303
- }
304
- isAbleToHandlePagination() {
305
- const { __paginationOptions } = this;
306
- if (__paginationOptions) {
307
- const { service } = __paginationOptions;
308
- const links = service.__links;
309
- if (links && links?.next)
310
- return true;
311
- }
312
- return false;
313
- }
314
- onHandlePagination() {
315
- const { __paginationOptions } = this;
316
- if (__paginationOptions) {
317
- const { service } = __paginationOptions;
318
- service.doPagination();
319
- }
320
- }
321
- }
322
- BaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
323
- BaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BaseComponent, selector: "[baseComponent]", ngImport: i0 });
324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseComponent, decorators: [{
325
- type: Directive,
326
- args: [{
327
- selector: '[baseComponent]'
328
- }]
329
- }], ctorParameters: function () { return []; } });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsdUJBQXVCLEVBTXZCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsVUFBVSxFQUNYLE1BQU0sbUJBQW1CLENBQUM7O0FBSzNCLE1BQU0sT0FBZ0IsYUFBYTtJQWVqQztRQVZBLHdCQUFtQixHQUFzQyxJQUFJLENBQUM7UUFJOUQsZUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU3QixjQUFTLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBS3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxRQUFRO1FBQ2QsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUM7WUFDaEQsQ0FBQyxNQUFNLENBQUMsVUFBVTtnQkFDaEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLE9BQU8sQ0FDaEUsQ0FBQztRQUNKLE9BQU8sQ0FBQyxtREFBbUQsQ0FBQyxJQUFJLENBQzlELFNBQVMsQ0FBQyxTQUFTLENBQ3BCLENBQUMsSUFBSSxhQUFhLENBQUM7SUFDdEIsQ0FBQztJQUVPLGdC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QUUsR0FBRyxtQkFBbUIsQ0FBQztZQUN4QyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDOzswR0E1Vm1CLGFBQWE7OEZBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUhsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPbkRlc3Ryb3ksIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTW9ua2V5VXRpbHMgfSBmcm9tICdtb25rZXktc3R5bGUtZ3VpZGUnO1xuaW1wb3J0IHtcbiAgTW9ua2V5RWN4Q29tbW9uc1NlcnZpY2UsXG4gIE1vbmtleUVjeEVycm9yUmVzcG9uc2UsXG4gIE1vbmtleUVjeFBhZ2luYXRpb25PcHRpb25zLFxuICBNb25rZXlFY3hTY3JvbGxPcHRpb25zLFxuICBNb25rZXlFY3hTdXBwb3J0T3B0aW9ucyxcbiAgTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucyxcbiAgTW9ua2V5RWN4VXRpbHMsXG4gIFZhbGlkYXRlVXRpbHMsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnbW9ua2V5LWZyb250LWNvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYmFzZUNvbXBvbmVudF0nXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBfX21vbmtleWVjeEZvcm1FcnJvcnM6IGFueSB8IGFueVtdO1xuXG4gIF9fdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8YW55PjtcblxuICBfX3BhZ2luYXRpb25PcHRpb25zOiBNb25rZXlFY3hQYWdpbmF0aW9uT3B0aW9ucyB8IG51bGwgPSBudWxsO1xuXG4gIF9faTE4bjogYW55O1xuXG4gIF9faXNNb2JpbGUgPSB0aGlzLmlzTW9iaWxlKCk7XG5cbiAgX19sb2NhbGVzID0gWydwdC1CUicsICdlcy1DTCcsICdlbi1VUyddO1xuXG4gIHByaXZhdGUgcGFnaW5hdGlvbkZ1bmM6IGFueTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fX3Vuc3Vic2NyaWJlQWxsID0gbmV3IFN1YmplY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNNb2JpbGUoKSB7XG4gICAgY29uc3QgaXNNb2JpbGVXaWR0aCA9ICh3aW5kb3cuc2NyZWVuLndpZHRoIDw9IDY0MCkgfHxcbiAgICAgICh3aW5kb3cubWF0Y2hNZWRpYSAmJlxuICAgICAgICB3aW5kb3cubWF0Y2hNZWRpYSgnb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KScpLm1hdGNoZXNcbiAgICAgICk7XG4gICAgcmV0dXJuICgvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8TW9iaWxlL2kudGVzdChcbiAgICAgIG5hdmlnYXRvci51c2VyQWdlbnRcbiAgICApKSB8fCBpc01vYmlsZVdpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVQYWdpbmF0aW9uKGNyZWF0ZSA9IHRydWUpIHtcbiAgICBjb25zdCB7IF9fcGFnaW5hdGlvbk9wdGlvbnMgfSA9IHRoaXM7XG5cbiAgICBpZiAoX19wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgY29uc3QgeyBtYWluRWxlbWVudCwgc2VydmljZSB9ID0gX19wYWdpbmF0aW9uT3B0aW9ucztcblxuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1haW5FbGVtZW50KTtcblxuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5zY3JvbGwgPSBudWxsO1xuICAgICAgICBlbGVtZW50Lm9uc2Nyb2xsID0gbnVsbDtcblxuICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChlbGVtZW50IGFzIGFueSkuZXZlbnRMaXN0ZW5lcnMoJ3Njcm9sbCcpKTtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZWxlbWVudCBhcyBhbnkpLmV2ZW50TGlzdGVuZXJzKCdzY3JvbGwnKVswXSk7XG4gICAgICAgIGlmIChjcmVhdGUpIHtcbiAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIG9mZnNldEhlaWdodCB9ID0gZWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBzY3JvbGxIZWlnaHQgLSBvZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChjb250ZW50SGVpZ2h0IDw9IHNjcm9sbFRvcCkge1xuICAgICAgICAgICAgICBzZXJ2aWNlLmRvUGFnaW5hdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdXBwb3J0KHN1cHBvcnRDb250cm9sczogTW9ua2V5RWN4U3VwcG9ydE9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHNlcnZpY2UsIHNob3cgfSA9IHN1cHBvcnRDb250cm9scztcbiAgICBjb25zdCBtZXRob2QgPSBzaG93ID8gJ3Nob3cnIDogJ2hpZGUnO1xuICAgIHNlcnZpY2VbbWV0aG9kLnRvTG93ZXJDYXNlKCldKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRyYW5zbGF0ZSh0cmFuc2xhdGVPcHRpb25zOiBNb25rZXlFY3hUcmFuc2xhdGVPcHRpb25zKSB7XG4gICAgY29uc3QgeyBzZXJ2aWNlIH0gPSB0cmFuc2xhdGVPcHRpb25zO1xuICAgIHNlcnZpY2UuX19vbmkxOG5EYXRhQ2hhbmdlZCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9fdW5zdWJzY3JpYmVBbGwpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBzZXJ2aWNlLl9faTE4bjtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICB0aGlzLl9faTE4biA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWaWV3U2Nyb2xsKG9wdGlvbnM6IE1vbmtleUVjeFNjcm9sbE9wdGlvbnMpIHtcbiAgICBjb25zdCB7IGVsZW1lbnRJZCwgc2VydmljZSB9ID0gb3B0aW9ucztcblxuICAgIGlmIChlbGVtZW50SWQgPT09IHNlcnZpY2U/Ll9fc2F2ZWRTdGF0ZT8uc2Nyb2xsRWxlbWVudElkKSB7XG4gICAgICB0aGlzLmdvU2Nyb2xsKGVsZW1lbnRJZCk7XG5cbiAgICAgIHNlcnZpY2UuX19zYXZlZFN0YXRlLnNjcm9sbEVsZW1lbnRJZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFcnJvckZpcnN0TWVzc2FnZVRyYW5zbGF0ZWQoZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBudWxsKSB7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcigncmVxdWlyZWQnKSkgcmV0dXJuICdGSUVMRC1SRVFVSVJFRCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZCcpKSByZXR1cm4gJ0ZJRUxELUlOVkFMSUQnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2VtYWlsJykpIHJldHVybiAnSU5WQUxJRC1FTUFJTCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHJldHVybiAnTUlOLUxFTkdUSCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHJldHVybiAnTUFYLUxFTkdUSCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWF4JykpIHJldHVybiAnTUFYJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdtaW4nKSkgcmV0dXJuICdNSU4nO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ3Bhc3N3b3Jkc05vdE1hdGNoaW5nJykpIHJldHVybiAnTUFUQ0gtUEFTU1dPUkQnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWREYXRlJykpIHJldHVybiAnSU5WQUxJRC1EQVRFJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkVHJ1ZScpKSByZXR1cm4gJ0lOVkFMSUQtVFJVRSc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZENwZkNucGonKSkgcmV0dXJuICdJTlZBTElELURPQ1VNRU5UJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkWmlwQ29kZScpKSByZXR1cm4gJ0lOVkFMSUQtWklQQ09ERSc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZENvbWJvJykpIHJldHVybiAnSU5WQUxJRC1DT01CTyc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZFVybCcpKSByZXR1cm4gJ0lOVkFMSUQtVVJMJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkVW5sb2NrUmVnaXN0ZXInKSkgeyByZXR1cm4gJ0lOVkFMSUQtVU5MT0NLLVJFR0lTVEVSJzsgfVxuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2RhdGVTdGFydE11c3RCZUxlc3NUaGFuQW5kJykpIHtcbiAgICAgIHJldHVybiAnREFURS1TVEFSVC1NVVNULUJFLUxFU1MtVEhBTi1BTkQnO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdkYXRlRW5kTXVzdEJlR3JlYXRlclRoYW5TdGFydCcpKSB7XG4gICAgICByZXR1cm4gJ0RBVEUtRU5ELU1VU1QtQkUtR1JFQVRFUi1USEFOLVNBUlQnO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdwaG9uZScpKSByZXR1cm4gJ0lOVkFMSUQtUEhPTkUnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWRWYWx1ZUdyZWF0ZXJUaGFuWmVybycpKSByZXR1cm4gJ0lOVkFMSUQtR1JFQVRFUi1USEFOLVpFUk8nO1xuXG4gICAgcmV0dXJuICdGSUVMRC1JTlZBTElEJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JMYXN0TWVzc2FnZU5vdFRyYW5zbGF0ZWQoZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBudWxsKSB7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgIHJldHVybiBgJHtmb3JtQ29udHJvbD8uZ2V0RXJyb3IoJ21pbmxlbmd0aCcpLnJlcXVpcmVkTGVuZ3RofSBjYXJhY3RlcmVzLmA7XG4gICAgfVxuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICByZXR1cm4gYCR7Zm9ybUNvbnRyb2w/LmdldEVycm9yKCdtYXhsZW5ndGgnKS5yZXF1aXJlZExlbmd0aH0gY2FyYWN0ZXJlcy5gO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdtYXgnKSkgeyByZXR1cm4gYCR7Zm9ybUNvbnRyb2w/LmdldEVycm9yKCdtYXgnKS5tYXh9YDsgfVxuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ21pbicpKSB7IHJldHVybiBgJHtmb3JtQ29udHJvbD8uZ2V0RXJyb3IoJ21pbicpLm1pbn1gOyB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGVGb3JtV2l0aFRyYW5zbGF0ZShmOiBGb3JtR3JvdXAsIGluZGV4PzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZm9ybUVycm9yczogYW55ID0gZi52YWx1ZTtcblxuICAgIGlmIChmLnN0YXR1cyA9PT0gJ1ZBTElEJykgcmV0dXJuIHRydWU7XG5cbiAgICBpZiAoIWZvcm1FcnJvcnMpIHJldHVybiB0cnVlO1xuICAgIE9iamVjdC5lbnRyaWVzKGZvcm1FcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGYuZ2V0KGtleSk7XG4gICAgICBmb3JtRXJyb3JzW2tleV0gPSAnJztcbiAgICAgIGlmIChjb250cm9sICYmICFjb250cm9sLnZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IHtcbiAgICAgICAgICBmaXJzdDogYEVSUk9SUy4ke3RoaXMuZ2V0RXJyb3JGaXJzdE1lc3NhZ2VUcmFuc2xhdGVkKGYuZ2V0KGtleSkpfWAsXG4gICAgICAgICAgbGFzdDogdGhpcy5nZXRFcnJvckxhc3RNZXNzYWdlTm90VHJhbnNsYXRlZChmLmdldChrZXkpKVxuICAgICAgICB9O1xuICAgICAgICBmb3JtRXJyb3JzW2tleV0gPSBtc2c7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoTW9ua2V5VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChpbmRleCkpIHsgdGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnNbaW5kZXggfHwgMF0gPSBmb3JtRXJyb3JzOyB9IGVsc2Uge1xuICAgICAgdGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnMgPSBmb3JtRXJyb3JzO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBjb3B5VG9DbGlwYm9hcmQodmFsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xuICAgIHNlbEJveC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgc2VsQm94LnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgc2VsQm94LnN0eWxlLnRvcCA9ICcwJztcbiAgICBzZWxCb3guc3R5bGUub3BhY2l0eSA9ICcwJztcbiAgICBzZWxCb3gudmFsdWUgPSB2YWw7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzZWxCb3gpO1xuICAgIHNlbEJveC5mb2N1cygpO1xuICAgIHNlbEJveC5zZWxlY3QoKTtcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2VsQm94KTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZUZvcm0oZjogRm9ybUdyb3VwLCBpbmRleD86IG51bWJlciwgYWxpYXM/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBmb3JtRXJyb3JzOiBhbnkgPSBmLnZhbHVlO1xuICAgIGlmIChmLnN0YXR1cyA9PT0gJ1ZBTElEJykgcmV0dXJuIHRydWU7XG5cbiAgICBpZiAoIWZvcm1FcnJvcnMpIHJldHVybiB0cnVlO1xuICAgIE9iamVjdC5lbnRyaWVzKGZvcm1FcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGYuZ2V0KGtleSk7XG4gICAgICBmb3JtRXJyb3JzW2tleV0gPSAnJztcbiAgICAgIGlmIChjb250cm9sICYmICFjb250cm9sLnZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IHtcbiAgICAgICAgICBmaXJzdE1lc3NhZ2U6IGBFUlJPUlMuJHt0aGlzLmdldEVycm9yRmlyc3RNZXNzYWdlVHJhbnNsYXRlZChcbiAgICAgICAgICAgIGYuZ2V0KGtleSlcbiAgICAgICAgICApfWAsXG4gICAgICAgICAgbGFzdE1lc3NhZ2U6IHRoaXMuZ2V0RXJyb3JMYXN0TWVzc2FnZU5vdFRyYW5zbGF0ZWQoZi5nZXQoa2V5KSlcbiAgICAgICAgfTtcbiAgICAgICAgZm9ybUVycm9yc1trZXldID0gbXNnO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKE1vbmtleVV0aWxzLnBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQoaW5kZXgpKSB7XG4gICAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9yc1tpbmRleCB8fCAwXSA9IGZvcm1FcnJvcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBvYmo6IGFueTtcblxuICAgICAgaWYgKGFsaWFzKSB7XG4gICAgICAgIG9iaiA9IHtcbiAgICAgICAgICBbYWxpYXNdOiB7XG4gICAgICAgICAgICAuLi5mb3JtRXJyb3JzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqID0gZm9ybUVycm9ycztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnMgPSB7XG4gICAgICAgIC4uLnRoaXMuX19tb25rZXllY3hGb3JtRXJyb3JzLFxuICAgICAgICAuLi5vYmpcbiAgICAgIH07XG4gICAgfVxuICAgIGYubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckFsbFNlcnZpY2VEYXRhKGNsZWFyRGF0YTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzO1xuICAgIE9iamVjdC52YWx1ZXMoY29udGV4dCkuZm9yRWFjaCgoY3R4OiBhbnkpID0+IHtcbiAgICAgIGlmIChjdHggaW5zdGFuY2VvZiBNb25rZXlFY3hDb21tb25zU2VydmljZSkge1xuICAgICAgICBjdHguY2xlYXIoY2xlYXJEYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdChhcmdzOiB7XG4gICAgcGFnaW5hdGlvbk9wdGlvbnM/OiBNb25rZXlFY3hQYWdpbmF0aW9uT3B0aW9ucztcbiAgICBzdXBwb3J0Q29udHJvbHM/OiBNb25rZXlFY3hTdXBwb3J0T3B0aW9ucztcbiAgICBzY3JvbGxPcHRpb25zPzogTW9ua2V5RWN4U2Nyb2xsT3B0aW9ucztcbiAgICB0cmFuc2xhdGVPcHRpb25zPzogTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucztcbiAgfSkge1xuICAgIGlmIChhcmdzPy5wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgdGhpcy5fX3BhZ2luYXRpb25PcHRpb25zID0gYXJncz8ucGFnaW5hdGlvbk9wdGlvbnM7XG4gICAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKGFyZ3M/LnN1cHBvcnRDb250cm9scykge1xuICAgICAgdGhpcy5oYW5kbGVTdXBwb3J0KGFyZ3M/LnN1cHBvcnRDb250cm9scyk7XG4gICAgfVxuICAgIGlmIChhcmdzPy50cmFuc2xhdGVPcHRpb25zKSB7XG4gICAgICB0aGlzLmhhbmRsZVRyYW5zbGF0ZShhcmdzPy50cmFuc2xhdGVPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKGFyZ3M/LnNjcm9sbE9wdGlvbnMpIHtcbiAgICAgIHRoaXMuaGFuZGxlVmlld1Njcm9sbChhcmdzLnNjcm9sbE9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveShjbGVhckRhdGE6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgdGhpcy5fX3Vuc3Vic2NyaWJlQWxsLm5leHQoKTtcbiAgICB0aGlzLl9fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcbiAgICB0aGlzLmNsZWFyQWxsU2VydmljZURhdGEoY2xlYXJEYXRhKTtcbiAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb24oZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUVycm9yRnJvbVNlcnZpY2VzKGVycm9yOiBNb25rZXlFY3hFcnJvclJlc3BvbnNlLCBmOiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9ycyA9IG51bGw7XG4gICAgaWYgKGVycm9yLnR5cGUgPT09ICdQYXJhbWV0ZXJfRXJyb3InKSB7XG4gICAgICBPYmplY3QuZW50cmllcyhmLnZhbHVlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgZXJyb3Iubm90aWZpY2F0aW9ucy5mb3JFYWNoKChfOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IF8uc3BsaXQoJzonKVswXTtcbiAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IF8uc3BsaXQoJzonKVsxXTtcbiAgICAgICAgICBpZiAoZmllbGQgPT09IGtleSkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0ge1xuICAgICAgICAgICAgICBmaXJzdE1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgICBsYXN0TWVzc2FnZTogZGVzY3JpcHRpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9ycyA9IHtcbiAgICAgICAgICAgICAgLi4udGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnMsXG4gICAgICAgICAgICAgIFtrZXldOiBtc2dcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmLmNvbnRyb2xzW2tleV0uc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgaW5jb3JyZWN0OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZi5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgZ29CYWNrKCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1Njcm9sbChpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICB9XG5cbiAgcHVibGljIGdldEVtYmVkZGVkRGF0YShkYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBhbnlbXSB8IGFueSB7XG4gICAgY29uc3QgeyBfZW1iZWRkZWQgfSA9IGRhdGE7XG4gICAgcmV0dXJuIF9lbWJlZGRlZCA/IF9lbWJlZGRlZFtmaWVsZF0gOiBudWxsO1xuICB9XG5cbiAgcHVibGljIG9wZW5XaW5kb3codXJsOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cub3BlbihgJHt1cmx9YCwgJ19ibGFuaycpO1xuICB9XG5cbiAgcHVibGljIGZpbGxJMThuKGRhdGE6IGFueSkge1xuICAgIHRoaXMuX19pMThuID0gZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5UHJlZml4KGNvdW50cnk6IHN0cmluZykge1xuICAgIHJldHVybiB7XG4gICAgICBicjogNTUsXG4gICAgICBjbDogNTZcbiAgICB9W2NvdW50cnldO1xuICB9XG5cbiAgcHVibGljIGdldENvdW50cnlDdXJyZW5jeUNoYXJ0Rm9ybWF0KGNvdW50cnk6IHN0cmluZykge1xuICAgIHJldHVybiB7XG4gICAgICBicjogJ1IkICMsIyMjLCMjMC4wMCcsXG4gICAgICBjbDogJ0NMUCAjLCMjIywjIzAnXG4gICAgfVtjb3VudHJ5XTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5RG9jdW1lbnRNYXNrKHR5cGU6ICdDUEYnIHwgJ0NQTkonIHwgJycsIGNvdW50cnk6IHN0cmluZykge1xuICAgIHJldHVybiBNb25rZXlFY3hVdGlscy5nZXREb2N1bWVudE1hc2sodHlwZSwgY291bnRyeSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyeURvY3VtZW50UGxhY2Vob2xkZXIodHlwZTogJ0NQRicgfCAnQ1BOSicgfCAnJywgY291bnRyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIE1vbmtleUVjeFV0aWxzLmdldERvY3VtZW50UGxhY2Vob2xkZXIodHlwZSwgY291bnRyeSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyeVZhbGlkYXRvcnMoY291bnRyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJyOiB7XG4gICAgICAgIGdvdmVybm1lbnRJZDogVmFsaWRhdGVVdGlscy5Eb2N1bWVudFZhbGlkYXRvcixcbiAgICAgICAgemlwQ29kZTogVmFsaWRhdG9ycy56aXBDb2RlQnlDb3VudHJ5KGNvdW50cnkpXG4gICAgICB9LFxuICAgICAgY2w6IHtcbiAgICAgICAgZ292ZXJubWVudElkOiBWYWxpZGF0ZVV0aWxzLkRvY3VtZW50UnV0VmFsaWRhdG9yLFxuICAgICAgICB6aXBDb2RlOiBWYWxpZGF0b3JzLnppcENvZGVCeUNvdW50cnkoY291bnRyeSlcbiAgICAgIH1cbiAgICB9W2NvdW50cnldO1xuICB9XG5cbiAgcHVibGljIGlzQWJsZVRvSGFuZGxlUGFnaW5hdGlvbigpIHtcbiAgICBjb25zdCB7IF9fcGFnaW5hdGlvbk9wdGlvbnMgfSA9IHRoaXM7XG5cbiAgICBpZiAoX19wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgY29uc3QgeyBzZXJ2aWNlIH0gPSBfX3BhZ2luYXRpb25PcHRpb25zO1xuXG4gICAgICBjb25zdCBsaW5rcyA9IHNlcnZpY2UuX19saW5rcztcbiAgICAgIGlmIChsaW5rcyAmJiBsaW5rcz8ubmV4dCkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkhhbmRsZVBhZ2luYXRpb24oKSB7XG4gICAgY29uc3QgeyBfX3BhZ2luYXRpb25PcHRpb25zIH0gPSB0aGlzO1xuXG4gICAgaWYgKF9fcGFnaW5hdGlvbk9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHsgc2VydmljZSB9ID0gX19wYWdpbmF0aW9uT3B0aW9ucztcbiAgICAgIHNlcnZpY2UuZG9QYWdpbmF0aW9uKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
1
+ import { Subject } from 'rxjs';
2
+ import { Directive } from '@angular/core';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { MonkeyUtils } from 'monkey-style-guide';
5
+ import { MonkeyEcxCommonsService, MonkeyEcxUtils, ValidateUtils, Validators } from 'monkey-front-core';
6
+ import * as i0 from "@angular/core";
7
+ export class BaseComponent {
8
+ constructor() {
9
+ this.__paginationOptions = null;
10
+ this.__isMobile = this.isMobile();
11
+ this.__locales = ['pt-BR', 'es-CL', 'en-US'];
12
+ this.__unsubscribeAll = new Subject();
13
+ }
14
+ isMobile() {
15
+ const isMobileWidth = (window.screen.width <= 640) ||
16
+ (window.matchMedia &&
17
+ window.matchMedia('only screen and (max-width: 640px)').matches);
18
+ return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile/i.test(navigator.userAgent)) || isMobileWidth;
19
+ }
20
+ handlePagination(create = true) {
21
+ const { __paginationOptions } = this;
22
+ if (__paginationOptions) {
23
+ const { mainElement, service } = __paginationOptions;
24
+ const element = document.getElementById(mainElement);
25
+ if (element) {
26
+ element.scroll = null;
27
+ element.onscroll = null;
28
+ element.removeEventListener('scroll', element.eventListeners('scroll'));
29
+ element.removeEventListener('scroll', element.eventListeners('scroll')[0]);
30
+ if (create) {
31
+ element.addEventListener('scroll', () => {
32
+ const { scrollTop, scrollHeight, offsetHeight } = element;
33
+ const contentHeight = scrollHeight - offsetHeight;
34
+ if (contentHeight <= scrollTop) {
35
+ service.doPagination();
36
+ }
37
+ });
38
+ }
39
+ }
40
+ }
41
+ }
42
+ handleSupport(supportControls) {
43
+ const { service, show } = supportControls;
44
+ const method = show ? 'show' : 'hide';
45
+ service[method.toLowerCase()]();
46
+ }
47
+ handleTranslate(translateOptions) {
48
+ const { service } = translateOptions;
49
+ service.__oni18nDataChanged$
50
+ .pipe(takeUntil(this.__unsubscribeAll))
51
+ .subscribe(() => {
52
+ const data = service.__i18n;
53
+ if (data) {
54
+ this.__i18n = data;
55
+ }
56
+ });
57
+ }
58
+ handleViewScroll(options) {
59
+ const { elementId, service } = options;
60
+ if (elementId === service?.__savedState?.scrollElementId) {
61
+ this.goScroll(elementId);
62
+ service.__savedState.scrollElementId = null;
63
+ }
64
+ }
65
+ getErrorFirstMessageTranslated(formControl = null) {
66
+ if (formControl?.hasError('required'))
67
+ return 'FIELD-REQUIRED';
68
+ if (formControl?.hasError('invalid'))
69
+ return 'FIELD-INVALID';
70
+ if (formControl?.hasError('email'))
71
+ return 'INVALID-EMAIL';
72
+ if (formControl?.hasError('minlength'))
73
+ return 'MIN-LENGTH';
74
+ if (formControl?.hasError('maxlength'))
75
+ return 'MAX-LENGTH';
76
+ if (formControl?.hasError('max'))
77
+ return 'MAX';
78
+ if (formControl?.hasError('min'))
79
+ return 'MIN';
80
+ if (formControl?.hasError('passwordsNotMatching'))
81
+ return 'MATCH-PASSWORD';
82
+ if (formControl?.hasError('invalidDate'))
83
+ return 'INVALID-DATE';
84
+ if (formControl?.hasError('invalidTrue'))
85
+ return 'INVALID-TRUE';
86
+ if (formControl?.hasError('invalidCpfCnpj'))
87
+ return 'INVALID-DOCUMENT';
88
+ if (formControl?.hasError('invalidZipCode'))
89
+ return 'INVALID-ZIPCODE';
90
+ if (formControl?.hasError('invalidCombo'))
91
+ return 'INVALID-COMBO';
92
+ if (formControl?.hasError('invalidUrl'))
93
+ return 'INVALID-URL';
94
+ if (formControl?.hasError('invalidUnlockRegister')) {
95
+ return 'INVALID-UNLOCK-REGISTER';
96
+ }
97
+ if (formControl?.hasError('dateStartMustBeLessThanAnd')) {
98
+ return 'DATE-START-MUST-BE-LESS-THAN-AND';
99
+ }
100
+ if (formControl?.hasError('dateEndMustBeGreaterThanStart')) {
101
+ return 'DATE-END-MUST-BE-GREATER-THAN-SART';
102
+ }
103
+ if (formControl?.hasError('phone'))
104
+ return 'INVALID-PHONE';
105
+ if (formControl?.hasError('invalidValueGreaterThanZero'))
106
+ return 'INVALID-GREATER-THAN-ZERO';
107
+ return 'FIELD-INVALID';
108
+ }
109
+ getErrorLastMessageNotTranslated(formControl = null) {
110
+ if (formControl?.hasError('minlength')) {
111
+ return `${formControl?.getError('minlength').requiredLength} caracteres.`;
112
+ }
113
+ if (formControl?.hasError('maxlength')) {
114
+ return `${formControl?.getError('maxlength').requiredLength} caracteres.`;
115
+ }
116
+ if (formControl?.hasError('max')) {
117
+ return `${formControl?.getError('max').max}`;
118
+ }
119
+ if (formControl?.hasError('min')) {
120
+ return `${formControl?.getError('min').min}`;
121
+ }
122
+ return '';
123
+ }
124
+ validateFormWithTranslate(f, index) {
125
+ const formErrors = f.value;
126
+ if (f.status === 'VALID')
127
+ return true;
128
+ if (!formErrors)
129
+ return true;
130
+ Object.entries(formErrors).forEach(([key, value]) => {
131
+ const control = f.get(key);
132
+ formErrors[key] = '';
133
+ if (control && !control.valid) {
134
+ const msg = {
135
+ first: `ERRORS.${this.getErrorFirstMessageTranslated(f.get(key))}`,
136
+ last: this.getErrorLastMessageNotTranslated(f.get(key))
137
+ };
138
+ formErrors[key] = msg;
139
+ }
140
+ });
141
+ if (MonkeyUtils.persistNullEmptyUndefined(index)) {
142
+ this.__monkeyecxFormErrors[index || 0] = formErrors;
143
+ }
144
+ else {
145
+ this.__monkeyecxFormErrors = formErrors;
146
+ }
147
+ return false;
148
+ }
149
+ copyToClipboard(val) {
150
+ const selBox = document.createElement('textarea');
151
+ selBox.style.position = 'fixed';
152
+ selBox.style.left = '0';
153
+ selBox.style.top = '0';
154
+ selBox.style.opacity = '0';
155
+ selBox.value = val;
156
+ document.body.appendChild(selBox);
157
+ selBox.focus();
158
+ selBox.select();
159
+ document.execCommand('copy');
160
+ document.body.removeChild(selBox);
161
+ }
162
+ validateForm(f, index, alias) {
163
+ const formErrors = f.value;
164
+ if (f.status === 'VALID')
165
+ return true;
166
+ if (!formErrors)
167
+ return true;
168
+ Object.entries(formErrors).forEach(([key, value]) => {
169
+ const control = f.get(key);
170
+ formErrors[key] = '';
171
+ if (control && !control.valid) {
172
+ const msg = {
173
+ firstMessage: `ERRORS.${this.getErrorFirstMessageTranslated(f.get(key))}`,
174
+ lastMessage: this.getErrorLastMessageNotTranslated(f.get(key))
175
+ };
176
+ formErrors[key] = msg;
177
+ }
178
+ });
179
+ if (MonkeyUtils.persistNullEmptyUndefined(index)) {
180
+ this.__monkeyecxFormErrors[index || 0] = formErrors;
181
+ }
182
+ else {
183
+ let obj;
184
+ if (alias) {
185
+ obj = {
186
+ [alias]: {
187
+ ...formErrors
188
+ }
189
+ };
190
+ }
191
+ else {
192
+ obj = formErrors;
193
+ }
194
+ this.__monkeyecxFormErrors = {
195
+ ...this.__monkeyecxFormErrors,
196
+ ...obj
197
+ };
198
+ }
199
+ f.markAllAsTouched();
200
+ return false;
201
+ }
202
+ clearAllServiceData(clearData) {
203
+ const context = this;
204
+ Object.values(context).forEach((ctx) => {
205
+ if (ctx instanceof MonkeyEcxCommonsService) {
206
+ ctx.clear(clearData);
207
+ }
208
+ });
209
+ }
210
+ ngOnInit(args) {
211
+ if (args?.paginationOptions) {
212
+ this.__paginationOptions = args?.paginationOptions;
213
+ this.handlePagination();
214
+ }
215
+ if (args?.supportControls) {
216
+ this.handleSupport(args?.supportControls);
217
+ }
218
+ if (args?.translateOptions) {
219
+ this.handleTranslate(args?.translateOptions);
220
+ }
221
+ if (args?.scrollOptions) {
222
+ this.handleViewScroll(args.scrollOptions);
223
+ }
224
+ }
225
+ ngOnDestroy(clearData = true) {
226
+ this.__unsubscribeAll.next();
227
+ this.__unsubscribeAll.complete();
228
+ this.clearAllServiceData(clearData);
229
+ this.handlePagination(false);
230
+ }
231
+ handleErrorFromServices(error, f) {
232
+ this.__monkeyecxFormErrors = null;
233
+ if (error.type === 'Parameter_Error') {
234
+ Object.entries(f.value).forEach(([key, value]) => {
235
+ error.notifications.forEach((_) => {
236
+ const field = _.split(':')[0];
237
+ const description = _.split(':')[1];
238
+ if (field === key) {
239
+ const msg = {
240
+ firstMessage: '',
241
+ lastMessage: description
242
+ };
243
+ this.__monkeyecxFormErrors = {
244
+ ...this.__monkeyecxFormErrors,
245
+ [key]: msg
246
+ };
247
+ f.controls[key].setErrors({
248
+ incorrect: true
249
+ });
250
+ }
251
+ });
252
+ });
253
+ }
254
+ f.markAllAsTouched();
255
+ }
256
+ goBack() {
257
+ window.history.back();
258
+ }
259
+ goScroll(id) {
260
+ const element = document.getElementById(id);
261
+ if (element)
262
+ element.scrollIntoView();
263
+ }
264
+ getEmbeddedData(data, field) {
265
+ const { _embedded } = data;
266
+ return _embedded ? _embedded[field] : null;
267
+ }
268
+ openWindow(url) {
269
+ window.open(`${url}`, '_blank');
270
+ }
271
+ fillI18n(data) {
272
+ this.__i18n = data;
273
+ }
274
+ getCountryPrefix(country) {
275
+ return {
276
+ br: 55,
277
+ cl: 56
278
+ }[country];
279
+ }
280
+ getCountryCurrencyChartFormat(country) {
281
+ return {
282
+ br: 'R$ #,###,##0.00',
283
+ cl: 'CLP #,###,##0'
284
+ }[country];
285
+ }
286
+ getCountryDocumentMask(type, country) {
287
+ return MonkeyEcxUtils.getDocumentMask(type, country);
288
+ }
289
+ getCountryDocumentPlaceholder(type, country) {
290
+ return MonkeyEcxUtils.getDocumentPlaceholder(type, country);
291
+ }
292
+ getCountryValidators(country) {
293
+ return {
294
+ br: {
295
+ governmentId: ValidateUtils.DocumentValidator,
296
+ zipCode: Validators.zipCodeByCountry(country)
297
+ },
298
+ cl: {
299
+ governmentId: ValidateUtils.DocumentRutValidator,
300
+ zipCode: Validators.zipCodeByCountry(country)
301
+ }
302
+ }[country];
303
+ }
304
+ isAbleToHandlePagination() {
305
+ const { __paginationOptions } = this;
306
+ if (__paginationOptions) {
307
+ const { service } = __paginationOptions;
308
+ const links = service.__links;
309
+ if (links && links?.next)
310
+ return true;
311
+ }
312
+ return false;
313
+ }
314
+ onHandlePagination() {
315
+ const { __paginationOptions } = this;
316
+ if (__paginationOptions) {
317
+ const { service } = __paginationOptions;
318
+ service.doPagination();
319
+ }
320
+ }
321
+ }
322
+ BaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
323
+ BaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: BaseComponent, selector: "[baseComponent]", ngImport: i0 });
324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseComponent, decorators: [{
325
+ type: Directive,
326
+ args: [{
327
+ selector: '[baseComponent]'
328
+ }]
329
+ }], ctorParameters: function () { return []; } });
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsdUJBQXVCLEVBTXZCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsVUFBVSxFQUNYLE1BQU0sbUJBQW1CLENBQUM7O0FBSzNCLE1BQU0sT0FBZ0IsYUFBYTtJQWVqQztRQVZBLHdCQUFtQixHQUFzQyxJQUFJLENBQUM7UUFJOUQsZUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU3QixjQUFTLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBS3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxRQUFRO1FBQ2QsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUM7WUFDaEQsQ0FBQyxNQUFNLENBQUMsVUFBVTtnQkFDaEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLE9BQU8sQ0FDaEUsQ0FBQztRQUNKLE9BQU8sQ0FBQyxtREFBbUQsQ0FBQyxJQUFJLENBQzlELFNBQVMsQ0FBQyxTQUFTLENBQ3BCLENBQUMsSUFBSSxhQUFhLENBQUM7SUFDdEIsQ0FBQztJQUVPLGdC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QUUsR0FBRyxtQkFBbUIsQ0FBQztZQUN4QyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDOzsyR0E1Vm1CLGFBQWE7K0ZBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUhsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPbkRlc3Ryb3ksIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTW9ua2V5VXRpbHMgfSBmcm9tICdtb25rZXktc3R5bGUtZ3VpZGUnO1xuaW1wb3J0IHtcbiAgTW9ua2V5RWN4Q29tbW9uc1NlcnZpY2UsXG4gIE1vbmtleUVjeEVycm9yUmVzcG9uc2UsXG4gIE1vbmtleUVjeFBhZ2luYXRpb25PcHRpb25zLFxuICBNb25rZXlFY3hTY3JvbGxPcHRpb25zLFxuICBNb25rZXlFY3hTdXBwb3J0T3B0aW9ucyxcbiAgTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucyxcbiAgTW9ua2V5RWN4VXRpbHMsXG4gIFZhbGlkYXRlVXRpbHMsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnbW9ua2V5LWZyb250LWNvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYmFzZUNvbXBvbmVudF0nXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBfX21vbmtleWVjeEZvcm1FcnJvcnM6IGFueSB8IGFueVtdO1xuXG4gIF9fdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8YW55PjtcblxuICBfX3BhZ2luYXRpb25PcHRpb25zOiBNb25rZXlFY3hQYWdpbmF0aW9uT3B0aW9ucyB8IG51bGwgPSBudWxsO1xuXG4gIF9faTE4bjogYW55O1xuXG4gIF9faXNNb2JpbGUgPSB0aGlzLmlzTW9iaWxlKCk7XG5cbiAgX19sb2NhbGVzID0gWydwdC1CUicsICdlcy1DTCcsICdlbi1VUyddO1xuXG4gIHByaXZhdGUgcGFnaW5hdGlvbkZ1bmM6IGFueTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fX3Vuc3Vic2NyaWJlQWxsID0gbmV3IFN1YmplY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNNb2JpbGUoKSB7XG4gICAgY29uc3QgaXNNb2JpbGVXaWR0aCA9ICh3aW5kb3cuc2NyZWVuLndpZHRoIDw9IDY0MCkgfHxcbiAgICAgICh3aW5kb3cubWF0Y2hNZWRpYSAmJlxuICAgICAgICB3aW5kb3cubWF0Y2hNZWRpYSgnb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KScpLm1hdGNoZXNcbiAgICAgICk7XG4gICAgcmV0dXJuICgvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8TW9iaWxlL2kudGVzdChcbiAgICAgIG5hdmlnYXRvci51c2VyQWdlbnRcbiAgICApKSB8fCBpc01vYmlsZVdpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVQYWdpbmF0aW9uKGNyZWF0ZSA9IHRydWUpIHtcbiAgICBjb25zdCB7IF9fcGFnaW5hdGlvbk9wdGlvbnMgfSA9IHRoaXM7XG5cbiAgICBpZiAoX19wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgY29uc3QgeyBtYWluRWxlbWVudCwgc2VydmljZSB9ID0gX19wYWdpbmF0aW9uT3B0aW9ucztcblxuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1haW5FbGVtZW50KTtcblxuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5zY3JvbGwgPSBudWxsO1xuICAgICAgICBlbGVtZW50Lm9uc2Nyb2xsID0gbnVsbDtcblxuICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChlbGVtZW50IGFzIGFueSkuZXZlbnRMaXN0ZW5lcnMoJ3Njcm9sbCcpKTtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZWxlbWVudCBhcyBhbnkpLmV2ZW50TGlzdGVuZXJzKCdzY3JvbGwnKVswXSk7XG4gICAgICAgIGlmIChjcmVhdGUpIHtcbiAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIG9mZnNldEhlaWdodCB9ID0gZWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBzY3JvbGxIZWlnaHQgLSBvZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChjb250ZW50SGVpZ2h0IDw9IHNjcm9sbFRvcCkge1xuICAgICAgICAgICAgICBzZXJ2aWNlLmRvUGFnaW5hdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdXBwb3J0KHN1cHBvcnRDb250cm9sczogTW9ua2V5RWN4U3VwcG9ydE9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHNlcnZpY2UsIHNob3cgfSA9IHN1cHBvcnRDb250cm9scztcbiAgICBjb25zdCBtZXRob2QgPSBzaG93ID8gJ3Nob3cnIDogJ2hpZGUnO1xuICAgIHNlcnZpY2VbbWV0aG9kLnRvTG93ZXJDYXNlKCldKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRyYW5zbGF0ZSh0cmFuc2xhdGVPcHRpb25zOiBNb25rZXlFY3hUcmFuc2xhdGVPcHRpb25zKSB7XG4gICAgY29uc3QgeyBzZXJ2aWNlIH0gPSB0cmFuc2xhdGVPcHRpb25zO1xuICAgIHNlcnZpY2UuX19vbmkxOG5EYXRhQ2hhbmdlZCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9fdW5zdWJzY3JpYmVBbGwpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBzZXJ2aWNlLl9faTE4bjtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICB0aGlzLl9faTE4biA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWaWV3U2Nyb2xsKG9wdGlvbnM6IE1vbmtleUVjeFNjcm9sbE9wdGlvbnMpIHtcbiAgICBjb25zdCB7IGVsZW1lbnRJZCwgc2VydmljZSB9ID0gb3B0aW9ucztcblxuICAgIGlmIChlbGVtZW50SWQgPT09IHNlcnZpY2U/Ll9fc2F2ZWRTdGF0ZT8uc2Nyb2xsRWxlbWVudElkKSB7XG4gICAgICB0aGlzLmdvU2Nyb2xsKGVsZW1lbnRJZCk7XG5cbiAgICAgIHNlcnZpY2UuX19zYXZlZFN0YXRlLnNjcm9sbEVsZW1lbnRJZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFcnJvckZpcnN0TWVzc2FnZVRyYW5zbGF0ZWQoZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBudWxsKSB7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcigncmVxdWlyZWQnKSkgcmV0dXJuICdGSUVMRC1SRVFVSVJFRCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZCcpKSByZXR1cm4gJ0ZJRUxELUlOVkFMSUQnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2VtYWlsJykpIHJldHVybiAnSU5WQUxJRC1FTUFJTCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHJldHVybiAnTUlOLUxFTkdUSCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHJldHVybiAnTUFYLUxFTkdUSCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWF4JykpIHJldHVybiAnTUFYJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdtaW4nKSkgcmV0dXJuICdNSU4nO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ3Bhc3N3b3Jkc05vdE1hdGNoaW5nJykpIHJldHVybiAnTUFUQ0gtUEFTU1dPUkQnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWREYXRlJykpIHJldHVybiAnSU5WQUxJRC1EQVRFJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkVHJ1ZScpKSByZXR1cm4gJ0lOVkFMSUQtVFJVRSc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZENwZkNucGonKSkgcmV0dXJuICdJTlZBTElELURPQ1VNRU5UJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkWmlwQ29kZScpKSByZXR1cm4gJ0lOVkFMSUQtWklQQ09ERSc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZENvbWJvJykpIHJldHVybiAnSU5WQUxJRC1DT01CTyc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZFVybCcpKSByZXR1cm4gJ0lOVkFMSUQtVVJMJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkVW5sb2NrUmVnaXN0ZXInKSkgeyByZXR1cm4gJ0lOVkFMSUQtVU5MT0NLLVJFR0lTVEVSJzsgfVxuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2RhdGVTdGFydE11c3RCZUxlc3NUaGFuQW5kJykpIHtcbiAgICAgIHJldHVybiAnREFURS1TVEFSVC1NVVNULUJFLUxFU1MtVEhBTi1BTkQnO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdkYXRlRW5kTXVzdEJlR3JlYXRlclRoYW5TdGFydCcpKSB7XG4gICAgICByZXR1cm4gJ0RBVEUtRU5ELU1VU1QtQkUtR1JFQVRFUi1USEFOLVNBUlQnO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdwaG9uZScpKSByZXR1cm4gJ0lOVkFMSUQtUEhPTkUnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWRWYWx1ZUdyZWF0ZXJUaGFuWmVybycpKSByZXR1cm4gJ0lOVkFMSUQtR1JFQVRFUi1USEFOLVpFUk8nO1xuXG4gICAgcmV0dXJuICdGSUVMRC1JTlZBTElEJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JMYXN0TWVzc2FnZU5vdFRyYW5zbGF0ZWQoZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBudWxsKSB7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgIHJldHVybiBgJHtmb3JtQ29udHJvbD8uZ2V0RXJyb3IoJ21pbmxlbmd0aCcpLnJlcXVpcmVkTGVuZ3RofSBjYXJhY3RlcmVzLmA7XG4gICAgfVxuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICByZXR1cm4gYCR7Zm9ybUNvbnRyb2w/LmdldEVycm9yKCdtYXhsZW5ndGgnKS5yZXF1aXJlZExlbmd0aH0gY2FyYWN0ZXJlcy5gO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdtYXgnKSkgeyByZXR1cm4gYCR7Zm9ybUNvbnRyb2w/LmdldEVycm9yKCdtYXgnKS5tYXh9YDsgfVxuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ21pbicpKSB7IHJldHVybiBgJHtmb3JtQ29udHJvbD8uZ2V0RXJyb3IoJ21pbicpLm1pbn1gOyB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGVGb3JtV2l0aFRyYW5zbGF0ZShmOiBGb3JtR3JvdXAsIGluZGV4PzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZm9ybUVycm9yczogYW55ID0gZi52YWx1ZTtcblxuICAgIGlmIChmLnN0YXR1cyA9PT0gJ1ZBTElEJykgcmV0dXJuIHRydWU7XG5cbiAgICBpZiAoIWZvcm1FcnJvcnMpIHJldHVybiB0cnVlO1xuICAgIE9iamVjdC5lbnRyaWVzKGZvcm1FcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGYuZ2V0KGtleSk7XG4gICAgICBmb3JtRXJyb3JzW2tleV0gPSAnJztcbiAgICAgIGlmIChjb250cm9sICYmICFjb250cm9sLnZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IHtcbiAgICAgICAgICBmaXJzdDogYEVSUk9SUy4ke3RoaXMuZ2V0RXJyb3JGaXJzdE1lc3NhZ2VUcmFuc2xhdGVkKGYuZ2V0KGtleSkpfWAsXG4gICAgICAgICAgbGFzdDogdGhpcy5nZXRFcnJvckxhc3RNZXNzYWdlTm90VHJhbnNsYXRlZChmLmdldChrZXkpKVxuICAgICAgICB9O1xuICAgICAgICBmb3JtRXJyb3JzW2tleV0gPSBtc2c7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoTW9ua2V5VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChpbmRleCkpIHsgdGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnNbaW5kZXggfHwgMF0gPSBmb3JtRXJyb3JzOyB9IGVsc2Uge1xuICAgICAgdGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnMgPSBmb3JtRXJyb3JzO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBjb3B5VG9DbGlwYm9hcmQodmFsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xuICAgIHNlbEJveC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgc2VsQm94LnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgc2VsQm94LnN0eWxlLnRvcCA9ICcwJztcbiAgICBzZWxCb3guc3R5bGUub3BhY2l0eSA9ICcwJztcbiAgICBzZWxCb3gudmFsdWUgPSB2YWw7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzZWxCb3gpO1xuICAgIHNlbEJveC5mb2N1cygpO1xuICAgIHNlbEJveC5zZWxlY3QoKTtcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2VsQm94KTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZUZvcm0oZjogRm9ybUdyb3VwLCBpbmRleD86IG51bWJlciwgYWxpYXM/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBmb3JtRXJyb3JzOiBhbnkgPSBmLnZhbHVlO1xuICAgIGlmIChmLnN0YXR1cyA9PT0gJ1ZBTElEJykgcmV0dXJuIHRydWU7XG5cbiAgICBpZiAoIWZvcm1FcnJvcnMpIHJldHVybiB0cnVlO1xuICAgIE9iamVjdC5lbnRyaWVzKGZvcm1FcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGYuZ2V0KGtleSk7XG4gICAgICBmb3JtRXJyb3JzW2tleV0gPSAnJztcbiAgICAgIGlmIChjb250cm9sICYmICFjb250cm9sLnZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IHtcbiAgICAgICAgICBmaXJzdE1lc3NhZ2U6IGBFUlJPUlMuJHt0aGlzLmdldEVycm9yRmlyc3RNZXNzYWdlVHJhbnNsYXRlZChcbiAgICAgICAgICAgIGYuZ2V0KGtleSlcbiAgICAgICAgICApfWAsXG4gICAgICAgICAgbGFzdE1lc3NhZ2U6IHRoaXMuZ2V0RXJyb3JMYXN0TWVzc2FnZU5vdFRyYW5zbGF0ZWQoZi5nZXQoa2V5KSlcbiAgICAgICAgfTtcbiAgICAgICAgZm9ybUVycm9yc1trZXldID0gbXNnO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKE1vbmtleVV0aWxzLnBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQoaW5kZXgpKSB7XG4gICAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9yc1tpbmRleCB8fCAwXSA9IGZvcm1FcnJvcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBvYmo6IGFueTtcblxuICAgICAgaWYgKGFsaWFzKSB7XG4gICAgICAgIG9iaiA9IHtcbiAgICAgICAgICBbYWxpYXNdOiB7XG4gICAgICAgICAgICAuLi5mb3JtRXJyb3JzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqID0gZm9ybUVycm9ycztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnMgPSB7XG4gICAgICAgIC4uLnRoaXMuX19tb25rZXllY3hGb3JtRXJyb3JzLFxuICAgICAgICAuLi5vYmpcbiAgICAgIH07XG4gICAgfVxuICAgIGYubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckFsbFNlcnZpY2VEYXRhKGNsZWFyRGF0YTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzO1xuICAgIE9iamVjdC52YWx1ZXMoY29udGV4dCkuZm9yRWFjaCgoY3R4OiBhbnkpID0+IHtcbiAgICAgIGlmIChjdHggaW5zdGFuY2VvZiBNb25rZXlFY3hDb21tb25zU2VydmljZSkge1xuICAgICAgICBjdHguY2xlYXIoY2xlYXJEYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdChhcmdzOiB7XG4gICAgcGFnaW5hdGlvbk9wdGlvbnM/OiBNb25rZXlFY3hQYWdpbmF0aW9uT3B0aW9ucztcbiAgICBzdXBwb3J0Q29udHJvbHM/OiBNb25rZXlFY3hTdXBwb3J0T3B0aW9ucztcbiAgICBzY3JvbGxPcHRpb25zPzogTW9ua2V5RWN4U2Nyb2xsT3B0aW9ucztcbiAgICB0cmFuc2xhdGVPcHRpb25zPzogTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucztcbiAgfSkge1xuICAgIGlmIChhcmdzPy5wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgdGhpcy5fX3BhZ2luYXRpb25PcHRpb25zID0gYXJncz8ucGFnaW5hdGlvbk9wdGlvbnM7XG4gICAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKGFyZ3M/LnN1cHBvcnRDb250cm9scykge1xuICAgICAgdGhpcy5oYW5kbGVTdXBwb3J0KGFyZ3M/LnN1cHBvcnRDb250cm9scyk7XG4gICAgfVxuICAgIGlmIChhcmdzPy50cmFuc2xhdGVPcHRpb25zKSB7XG4gICAgICB0aGlzLmhhbmRsZVRyYW5zbGF0ZShhcmdzPy50cmFuc2xhdGVPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKGFyZ3M/LnNjcm9sbE9wdGlvbnMpIHtcbiAgICAgIHRoaXMuaGFuZGxlVmlld1Njcm9sbChhcmdzLnNjcm9sbE9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveShjbGVhckRhdGE6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgdGhpcy5fX3Vuc3Vic2NyaWJlQWxsLm5leHQoKTtcbiAgICB0aGlzLl9fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcbiAgICB0aGlzLmNsZWFyQWxsU2VydmljZURhdGEoY2xlYXJEYXRhKTtcbiAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb24oZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUVycm9yRnJvbVNlcnZpY2VzKGVycm9yOiBNb25rZXlFY3hFcnJvclJlc3BvbnNlLCBmOiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9ycyA9IG51bGw7XG4gICAgaWYgKGVycm9yLnR5cGUgPT09ICdQYXJhbWV0ZXJfRXJyb3InKSB7XG4gICAgICBPYmplY3QuZW50cmllcyhmLnZhbHVlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgZXJyb3Iubm90aWZpY2F0aW9ucy5mb3JFYWNoKChfOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IF8uc3BsaXQoJzonKVswXTtcbiAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IF8uc3BsaXQoJzonKVsxXTtcbiAgICAgICAgICBpZiAoZmllbGQgPT09IGtleSkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0ge1xuICAgICAgICAgICAgICBmaXJzdE1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgICBsYXN0TWVzc2FnZTogZGVzY3JpcHRpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9ycyA9IHtcbiAgICAgICAgICAgICAgLi4udGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnMsXG4gICAgICAgICAgICAgIFtrZXldOiBtc2dcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmLmNvbnRyb2xzW2tleV0uc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgaW5jb3JyZWN0OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZi5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgZ29CYWNrKCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1Njcm9sbChpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICB9XG5cbiAgcHVibGljIGdldEVtYmVkZGVkRGF0YShkYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBhbnlbXSB8IGFueSB7XG4gICAgY29uc3QgeyBfZW1iZWRkZWQgfSA9IGRhdGE7XG4gICAgcmV0dXJuIF9lbWJlZGRlZCA/IF9lbWJlZGRlZFtmaWVsZF0gOiBudWxsO1xuICB9XG5cbiAgcHVibGljIG9wZW5XaW5kb3codXJsOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cub3BlbihgJHt1cmx9YCwgJ19ibGFuaycpO1xuICB9XG5cbiAgcHVibGljIGZpbGxJMThuKGRhdGE6IGFueSkge1xuICAgIHRoaXMuX19pMThuID0gZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5UHJlZml4KGNvdW50cnk6IHN0cmluZykge1xuICAgIHJldHVybiB7XG4gICAgICBicjogNTUsXG4gICAgICBjbDogNTZcbiAgICB9W2NvdW50cnldO1xuICB9XG5cbiAgcHVibGljIGdldENvdW50cnlDdXJyZW5jeUNoYXJ0Rm9ybWF0KGNvdW50cnk6IHN0cmluZykge1xuICAgIHJldHVybiB7XG4gICAgICBicjogJ1IkICMsIyMjLCMjMC4wMCcsXG4gICAgICBjbDogJ0NMUCAjLCMjIywjIzAnXG4gICAgfVtjb3VudHJ5XTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5RG9jdW1lbnRNYXNrKHR5cGU6ICdDUEYnIHwgJ0NQTkonIHwgJycsIGNvdW50cnk6IHN0cmluZykge1xuICAgIHJldHVybiBNb25rZXlFY3hVdGlscy5nZXREb2N1bWVudE1hc2sodHlwZSwgY291bnRyeSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyeURvY3VtZW50UGxhY2Vob2xkZXIodHlwZTogJ0NQRicgfCAnQ1BOSicgfCAnJywgY291bnRyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIE1vbmtleUVjeFV0aWxzLmdldERvY3VtZW50UGxhY2Vob2xkZXIodHlwZSwgY291bnRyeSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyeVZhbGlkYXRvcnMoY291bnRyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJyOiB7XG4gICAgICAgIGdvdmVybm1lbnRJZDogVmFsaWRhdGVVdGlscy5Eb2N1bWVudFZhbGlkYXRvcixcbiAgICAgICAgemlwQ29kZTogVmFsaWRhdG9ycy56aXBDb2RlQnlDb3VudHJ5KGNvdW50cnkpXG4gICAgICB9LFxuICAgICAgY2w6IHtcbiAgICAgICAgZ292ZXJubWVudElkOiBWYWxpZGF0ZVV0aWxzLkRvY3VtZW50UnV0VmFsaWRhdG9yLFxuICAgICAgICB6aXBDb2RlOiBWYWxpZGF0b3JzLnppcENvZGVCeUNvdW50cnkoY291bnRyeSlcbiAgICAgIH1cbiAgICB9W2NvdW50cnldO1xuICB9XG5cbiAgcHVibGljIGlzQWJsZVRvSGFuZGxlUGFnaW5hdGlvbigpIHtcbiAgICBjb25zdCB7IF9fcGFnaW5hdGlvbk9wdGlvbnMgfSA9IHRoaXM7XG5cbiAgICBpZiAoX19wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgY29uc3QgeyBzZXJ2aWNlIH0gPSBfX3BhZ2luYXRpb25PcHRpb25zO1xuXG4gICAgICBjb25zdCBsaW5rcyA9IHNlcnZpY2UuX19saW5rcztcbiAgICAgIGlmIChsaW5rcyAmJiBsaW5rcz8ubmV4dCkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkhhbmRsZVBhZ2luYXRpb24oKSB7XG4gICAgY29uc3QgeyBfX3BhZ2luYXRpb25PcHRpb25zIH0gPSB0aGlzO1xuXG4gICAgaWYgKF9fcGFnaW5hdGlvbk9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHsgc2VydmljZSB9ID0gX19wYWdpbmF0aW9uT3B0aW9ucztcbiAgICAgIHNlcnZpY2UuZG9QYWdpbmF0aW9uKCk7XG4gICAgfVxuICB9XG59XG4iXX0=