info-library 2.15.1-beta → 3.0.0-beta

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 (184) hide show
  1. package/controls/alert/alert.component.d.ts +7 -7
  2. package/controls/autocomplete/autocomplete.component.d.ts +52 -51
  3. package/controls/big-checkbox/big-checkbox.component.d.ts +41 -41
  4. package/controls/card/card.component.d.ts +16 -16
  5. package/controls/card-menu/card-menu.component.d.ts +23 -23
  6. package/controls/checkbox/checkbox.component.d.ts +27 -27
  7. package/controls/chips/chips.component.d.ts +23 -23
  8. package/controls/date/date.component.d.ts +38 -37
  9. package/controls/date-month/date-month.component.d.ts +40 -39
  10. package/controls/editor/editor.component.d.ts +40 -40
  11. package/controls/grid/grid.component.d.ts +172 -172
  12. package/controls/input/input.component.d.ts +47 -37
  13. package/controls/input-list/input-list.component.d.ts +29 -29
  14. package/controls/list-checkbox/list-checkbox.component.d.ts +26 -26
  15. package/controls/message/message.component.d.ts +10 -10
  16. package/controls/multi-select/multi-select.component.d.ts +39 -37
  17. package/controls/paginator/paginator.component.d.ts +25 -25
  18. package/controls/select/select.component.d.ts +42 -41
  19. package/controls/timeline/timeline.component.d.ts +17 -17
  20. package/directives/mask.directive.d.ts +24 -24
  21. package/directives/unmask.directive.d.ts +12 -11
  22. package/enum/dialog-buttons.enum.d.ts +7 -7
  23. package/enum/index.d.ts +3 -3
  24. package/enum/modal-action.enum.d.ts +10 -10
  25. package/enum/page-action.enum.d.ts +8 -8
  26. package/esm2022/controls/alert/alert.component.mjs +72 -0
  27. package/esm2022/controls/autocomplete/autocomplete.component.mjs +265 -0
  28. package/esm2022/controls/big-checkbox/big-checkbox.component.mjs +300 -0
  29. package/esm2022/controls/card/card.component.mjs +83 -0
  30. package/esm2022/controls/card-menu/card-menu.component.mjs +143 -0
  31. package/esm2022/controls/checkbox/checkbox.component.mjs +93 -0
  32. package/esm2022/controls/chips/chips.component.mjs +114 -0
  33. package/esm2022/controls/date/date.component.mjs +173 -0
  34. package/esm2022/controls/date-month/date-month.component.mjs +181 -0
  35. package/esm2022/controls/editor/editor.component.mjs +139 -0
  36. package/esm2022/controls/grid/grid.component.mjs +1818 -0
  37. package/esm2022/controls/input/input.component.mjs +389 -0
  38. package/esm2022/controls/input-list/input-list.component.mjs +259 -0
  39. package/{esm2020 → esm2022}/controls/list-checkbox/list-checkbox.component.mjs +242 -238
  40. package/esm2022/controls/message/message.component.mjs +48 -0
  41. package/esm2022/controls/multi-select/multi-select.component.mjs +174 -0
  42. package/esm2022/controls/paginator/paginator.component.mjs +177 -0
  43. package/esm2022/controls/select/select.component.mjs +189 -0
  44. package/esm2022/controls/timeline/timeline.component.mjs +116 -0
  45. package/esm2022/directives/mask.directive.mjs +134 -0
  46. package/esm2022/directives/unmask.directive.mjs +35 -0
  47. package/{esm2020 → esm2022}/enum/dialog-buttons.enum.mjs +8 -8
  48. package/{esm2020 → esm2022}/enum/index.mjs +3 -3
  49. package/{esm2020 → esm2022}/enum/modal-action.enum.mjs +11 -11
  50. package/{esm2020 → esm2022}/enum/page-action.enum.mjs +9 -9
  51. package/{esm2020 → esm2022}/global-config.mjs +3 -3
  52. package/{esm2020 → esm2022}/info-library.mjs +4 -4
  53. package/esm2022/info-library.module.mjs +283 -0
  54. package/esm2022/layouts/dialog/dialog.component.mjs +192 -0
  55. package/esm2022/layouts/filter/filter.component.mjs +179 -0
  56. package/esm2022/layouts/loading/loading.component.mjs +40 -0
  57. package/esm2022/layouts/main/main.component.mjs +305 -0
  58. package/esm2022/layouts/modal/modal.component.mjs +273 -0
  59. package/esm2022/layouts/pagebar/pagebar.component.mjs +432 -0
  60. package/esm2022/layouts/sidebar/sidebar.component.mjs +447 -0
  61. package/esm2022/layouts/topbar/topbar.component.mjs +1032 -0
  62. package/esm2022/layouts/topmenu/topmenu.component.mjs +173 -0
  63. package/esm2022/model/app-config.model.mjs +14 -0
  64. package/esm2022/model/data-access.model.mjs +37 -0
  65. package/esm2022/model/dialog-result.model.mjs +9 -0
  66. package/esm2022/model/dialog.model.mjs +15 -0
  67. package/esm2022/model/form-prop.model.mjs +37 -0
  68. package/esm2022/model/grid-button.model.mjs +26 -0
  69. package/{esm2020 → esm2022}/model/index.mjs +14 -14
  70. package/esm2022/model/last-search.model.mjs +7 -0
  71. package/esm2022/model/login.model.mjs +11 -0
  72. package/esm2022/model/method-grid-button.model.mjs +11 -0
  73. package/esm2022/model/notification.model.mjs +13 -0
  74. package/{esm2020 → esm2022}/model/pagebar-buttons.model.mjs +15 -15
  75. package/esm2022/model/permission.model.mjs +6 -0
  76. package/esm2022/model/platform.model.mjs +20 -0
  77. package/esm2022/model/session.model.mjs +27 -0
  78. package/{esm2020 → esm2022}/pipe/index.mjs +2 -2
  79. package/esm2022/pipe/mask.pipe.mjs +38 -0
  80. package/esm2022/pipe/translate.pipe.mjs +27 -0
  81. package/{esm2020 → esm2022}/public_api.mjs +37 -36
  82. package/esm2022/service/authentication.service.mjs +411 -0
  83. package/esm2022/service/configuration.service.mjs +90 -0
  84. package/esm2022/service/data.service.mjs +129 -0
  85. package/{esm2020 → esm2022}/service/index.mjs +5 -5
  86. package/esm2022/service/theme.service.mjs +89 -0
  87. package/esm2022/service/translate.service.mjs +57 -0
  88. package/esm2022/utils/utilities.mjs +189 -0
  89. package/fesm2022/info-library.mjs +9364 -0
  90. package/fesm2022/info-library.mjs.map +1 -0
  91. package/global-config.d.ts +3 -3
  92. package/index.d.ts +5 -5
  93. package/info-library-3.0.0-beta.tgz +0 -0
  94. package/info-library.module.d.ts +61 -60
  95. package/layouts/dialog/dialog.component.d.ts +29 -29
  96. package/layouts/filter/filter.component.d.ts +24 -0
  97. package/layouts/loading/loading.component.d.ts +8 -8
  98. package/layouts/main/main.component.d.ts +60 -56
  99. package/layouts/modal/modal.component.d.ts +40 -39
  100. package/layouts/pagebar/pagebar.component.d.ts +45 -45
  101. package/layouts/sidebar/sidebar.component.d.ts +40 -40
  102. package/layouts/topbar/topbar.component.d.ts +69 -66
  103. package/layouts/topmenu/topmenu.component.d.ts +34 -34
  104. package/model/app-config.model.d.ts +13 -11
  105. package/model/data-access.model.d.ts +12 -12
  106. package/model/dialog-result.model.d.ts +6 -6
  107. package/model/dialog.model.d.ts +14 -14
  108. package/model/form-prop.model.d.ts +12 -12
  109. package/model/grid-button.model.d.ts +18 -18
  110. package/model/index.d.ts +14 -14
  111. package/model/last-search.model.d.ts +6 -6
  112. package/model/login.model.d.ts +6 -6
  113. package/model/method-grid-button.model.d.ts +6 -6
  114. package/model/notification.model.d.ts +12 -12
  115. package/model/pagebar-buttons.model.d.ts +10 -10
  116. package/model/permission.model.d.ts +5 -5
  117. package/model/platform.model.d.ts +16 -16
  118. package/model/session.model.d.ts +27 -22
  119. package/package.json +5 -11
  120. package/pipe/index.d.ts +2 -2
  121. package/pipe/mask.pipe.d.ts +8 -8
  122. package/pipe/translate.pipe.d.ts +10 -10
  123. package/public_api.d.ts +34 -33
  124. package/service/authentication.service.d.ts +63 -61
  125. package/service/configuration.service.d.ts +17 -14
  126. package/service/data.service.d.ts +41 -39
  127. package/service/index.d.ts +5 -5
  128. package/service/theme.service.d.ts +16 -16
  129. package/service/translate.service.d.ts +16 -16
  130. package/utils/utilities.d.ts +38 -27
  131. package/esm2020/controls/alert/alert.component.mjs +0 -74
  132. package/esm2020/controls/autocomplete/autocomplete.component.mjs +0 -258
  133. package/esm2020/controls/big-checkbox/big-checkbox.component.mjs +0 -298
  134. package/esm2020/controls/card/card.component.mjs +0 -77
  135. package/esm2020/controls/card-menu/card-menu.component.mjs +0 -145
  136. package/esm2020/controls/checkbox/checkbox.component.mjs +0 -93
  137. package/esm2020/controls/chips/chips.component.mjs +0 -113
  138. package/esm2020/controls/date/date.component.mjs +0 -141
  139. package/esm2020/controls/date-month/date-month.component.mjs +0 -148
  140. package/esm2020/controls/editor/editor.component.mjs +0 -135
  141. package/esm2020/controls/grid/grid.component.mjs +0 -1800
  142. package/esm2020/controls/input/input.component.mjs +0 -314
  143. package/esm2020/controls/input-list/input-list.component.mjs +0 -258
  144. package/esm2020/controls/message/message.component.mjs +0 -50
  145. package/esm2020/controls/multi-select/multi-select.component.mjs +0 -161
  146. package/esm2020/controls/paginator/paginator.component.mjs +0 -178
  147. package/esm2020/controls/select/select.component.mjs +0 -180
  148. package/esm2020/controls/timeline/timeline.component.mjs +0 -117
  149. package/esm2020/directives/mask.directive.mjs +0 -125
  150. package/esm2020/directives/unmask.directive.mjs +0 -28
  151. package/esm2020/info-library.module.mjs +0 -278
  152. package/esm2020/layouts/dialog/dialog.component.mjs +0 -188
  153. package/esm2020/layouts/loading/loading.component.mjs +0 -42
  154. package/esm2020/layouts/main/main.component.mjs +0 -258
  155. package/esm2020/layouts/modal/modal.component.mjs +0 -258
  156. package/esm2020/layouts/pagebar/pagebar.component.mjs +0 -404
  157. package/esm2020/layouts/sidebar/sidebar.component.mjs +0 -395
  158. package/esm2020/layouts/topbar/topbar.component.mjs +0 -868
  159. package/esm2020/layouts/topmenu/topmenu.component.mjs +0 -165
  160. package/esm2020/model/app-config.model.mjs +0 -14
  161. package/esm2020/model/data-access.model.mjs +0 -35
  162. package/esm2020/model/dialog-result.model.mjs +0 -8
  163. package/esm2020/model/dialog.model.mjs +0 -16
  164. package/esm2020/model/form-prop.model.mjs +0 -35
  165. package/esm2020/model/grid-button.model.mjs +0 -21
  166. package/esm2020/model/last-search.model.mjs +0 -9
  167. package/esm2020/model/login.model.mjs +0 -9
  168. package/esm2020/model/method-grid-button.model.mjs +0 -9
  169. package/esm2020/model/notification.model.mjs +0 -9
  170. package/esm2020/model/permission.model.mjs +0 -3
  171. package/esm2020/model/platform.model.mjs +0 -21
  172. package/esm2020/model/session.model.mjs +0 -8
  173. package/esm2020/pipe/mask.pipe.mjs +0 -34
  174. package/esm2020/pipe/translate.pipe.mjs +0 -26
  175. package/esm2020/service/authentication.service.mjs +0 -358
  176. package/esm2020/service/configuration.service.mjs +0 -59
  177. package/esm2020/service/data.service.mjs +0 -112
  178. package/esm2020/service/theme.service.mjs +0 -79
  179. package/esm2020/service/translate.service.mjs +0 -53
  180. package/esm2020/utils/utilities.mjs +0 -142
  181. package/fesm2015/info-library.mjs +0 -9312
  182. package/fesm2015/info-library.mjs.map +0 -1
  183. package/fesm2020/info-library.mjs +0 -8462
  184. package/fesm2020/info-library.mjs.map +0 -1
@@ -1,314 +0,0 @@
1
- import { Component, forwardRef, Input, Output, EventEmitter } from "@angular/core";
2
- import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/forms";
6
- import * as i3 from "@angular/material/icon";
7
- import * as i4 from "@angular/material/form-field";
8
- import * as i5 from "@angular/material/input";
9
- import * as i6 from "ng2-currency-mask";
10
- import * as i7 from "../../directives/mask.directive";
11
- import * as i8 from "../../directives/unmask.directive";
12
- import * as i9 from "../../pipe/translate.pipe";
13
- function InfoInputComponent_mat_form_field_0_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
14
- i0.ɵɵelementStart(0, "mat-icon", 6);
15
- i0.ɵɵtext(1);
16
- i0.ɵɵelementEnd();
17
- } if (rf & 2) {
18
- const ctx_r4 = i0.ɵɵnextContext(2);
19
- i0.ɵɵadvance(1);
20
- i0.ɵɵtextInterpolate(ctx_r4.iconPrefix);
21
- } }
22
- function InfoInputComponent_mat_form_field_0_mat_icon_4_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelementStart(0, "mat-icon", 7);
24
- i0.ɵɵtext(1);
25
- i0.ɵɵelementEnd();
26
- } if (rf & 2) {
27
- const ctx_r5 = i0.ɵɵnextContext(2);
28
- i0.ɵɵadvance(1);
29
- i0.ɵɵtextInterpolate(ctx_r5.iconSuffix);
30
- } }
31
- function InfoInputComponent_mat_form_field_0_mat_icon_5_Template(rf, ctx) { if (rf & 1) {
32
- const _r8 = i0.ɵɵgetCurrentView();
33
- i0.ɵɵelementStart(0, "mat-icon", 8);
34
- i0.ɵɵlistener("click", function InfoInputComponent_mat_form_field_0_mat_icon_5_Template_mat_icon_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.type = ctx_r7.type == "password" ? "text" : "password"); });
35
- i0.ɵɵtext(1);
36
- i0.ɵɵelementEnd();
37
- } if (rf & 2) {
38
- const ctx_r6 = i0.ɵɵnextContext(2);
39
- i0.ɵɵadvance(1);
40
- i0.ɵɵtextInterpolate1("visibility", ctx_r6.type == "password" ? "" : "_off", "");
41
- } }
42
- function InfoInputComponent_mat_form_field_0_Template(rf, ctx) { if (rf & 1) {
43
- const _r10 = i0.ɵɵgetCurrentView();
44
- i0.ɵɵelementStart(0, "mat-form-field");
45
- i0.ɵɵtemplate(1, InfoInputComponent_mat_form_field_0_mat_icon_1_Template, 2, 1, "mat-icon", 2);
46
- i0.ɵɵelementStart(2, "input", 3);
47
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_0_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.value = $event); })("input", function InfoInputComponent_mat_form_field_0_Template_input_input_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_0_Template_input_blur_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onBlur()); });
48
- i0.ɵɵpipe(3, "translate");
49
- i0.ɵɵelementEnd();
50
- i0.ɵɵtemplate(4, InfoInputComponent_mat_form_field_0_mat_icon_4_Template, 2, 1, "mat-icon", 4);
51
- i0.ɵɵtemplate(5, InfoInputComponent_mat_form_field_0_mat_icon_5_Template, 2, 1, "mat-icon", 5);
52
- i0.ɵɵelementEnd();
53
- } if (rf & 2) {
54
- const ctx_r0 = i0.ɵɵnextContext();
55
- i0.ɵɵadvance(1);
56
- i0.ɵɵproperty("ngIf", ctx_r0.iconPrefix);
57
- i0.ɵɵadvance(1);
58
- i0.ɵɵproperty("type", ctx_r0.type)("step", ctx_r0.step)("min", ctx_r0.min)("max", ctx_r0.max)("tabindex", ctx_r0.tabindex)("placeholder", i0.ɵɵpipeBind1(3, 14, ctx_r0.placeholder))("ngModel", ctx_r0.value)("maxlength", ctx_r0.maxlength)("readonly", ctx_r0.readonly)("disabled", ctx_r0.disabled)("required", ctx_r0.required);
59
- i0.ɵɵadvance(2);
60
- i0.ɵɵproperty("ngIf", ctx_r0.iconSuffix);
61
- i0.ɵɵadvance(1);
62
- i0.ɵɵproperty("ngIf", ctx_r0.passwordMode);
63
- } }
64
- function InfoInputComponent_mat_form_field_1_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "mat-icon", 6);
66
- i0.ɵɵtext(1);
67
- i0.ɵɵelementEnd();
68
- } if (rf & 2) {
69
- const ctx_r13 = i0.ɵɵnextContext(2);
70
- i0.ɵɵadvance(1);
71
- i0.ɵɵtextInterpolate(ctx_r13.iconPrefix);
72
- } }
73
- function InfoInputComponent_mat_form_field_1_input_2_Template(rf, ctx) { if (rf & 1) {
74
- const _r18 = i0.ɵɵgetCurrentView();
75
- i0.ɵɵelementStart(0, "input", 11);
76
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_1_input_2_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r17.value = $event); })("ngModelChange", function InfoInputComponent_mat_form_field_1_input_2_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r19 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r19.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_1_input_2_Template_input_blur_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r20 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r20.onBlur()); });
77
- i0.ɵɵpipe(1, "translate");
78
- i0.ɵɵelementEnd();
79
- } if (rf & 2) {
80
- const ctx_r14 = i0.ɵɵnextContext(2);
81
- i0.ɵɵproperty("tabindex", ctx_r14.tabindex)("placeholder", i0.ɵɵpipeBind1(1, 7, ctx_r14.placeholder))("ngModel", ctx_r14.value)("readonly", ctx_r14.readonly)("disabled", ctx_r14.disabled)("required", ctx_r14.required)("options", ctx_r14.maskOptions);
82
- } }
83
- function InfoInputComponent_mat_form_field_1_input_3_Template(rf, ctx) { if (rf & 1) {
84
- const _r22 = i0.ɵɵgetCurrentView();
85
- i0.ɵɵelementStart(0, "input", 12);
86
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_1_input_3_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.value = $event); })("ngModelChange", function InfoInputComponent_mat_form_field_1_input_3_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_1_input_3_Template_input_blur_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r24 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r24.onBlur()); });
87
- i0.ɵɵpipe(1, "translate");
88
- i0.ɵɵelementEnd();
89
- } if (rf & 2) {
90
- const ctx_r15 = i0.ɵɵnextContext(2);
91
- i0.ɵɵproperty("tabindex", ctx_r15.tabindex)("placeholder", i0.ɵɵpipeBind1(1, 7, ctx_r15.placeholder))("ngModel", ctx_r15.value)("readonly", ctx_r15.readonly)("disabled", ctx_r15.disabled)("required", ctx_r15.required)("setmask", ctx_r15.customMask);
92
- } }
93
- function InfoInputComponent_mat_form_field_1_mat_icon_4_Template(rf, ctx) { if (rf & 1) {
94
- i0.ɵɵelementStart(0, "mat-icon", 7);
95
- i0.ɵɵtext(1);
96
- i0.ɵɵelementEnd();
97
- } if (rf & 2) {
98
- const ctx_r16 = i0.ɵɵnextContext(2);
99
- i0.ɵɵadvance(1);
100
- i0.ɵɵtextInterpolate(ctx_r16.iconSuffix);
101
- } }
102
- function InfoInputComponent_mat_form_field_1_Template(rf, ctx) { if (rf & 1) {
103
- i0.ɵɵelementStart(0, "mat-form-field");
104
- i0.ɵɵtemplate(1, InfoInputComponent_mat_form_field_1_mat_icon_1_Template, 2, 1, "mat-icon", 2);
105
- i0.ɵɵtemplate(2, InfoInputComponent_mat_form_field_1_input_2_Template, 2, 9, "input", 9);
106
- i0.ɵɵtemplate(3, InfoInputComponent_mat_form_field_1_input_3_Template, 2, 9, "input", 10);
107
- i0.ɵɵtemplate(4, InfoInputComponent_mat_form_field_1_mat_icon_4_Template, 2, 1, "mat-icon", 4);
108
- i0.ɵɵelementEnd();
109
- } if (rf & 2) {
110
- const ctx_r1 = i0.ɵɵnextContext();
111
- i0.ɵɵadvance(1);
112
- i0.ɵɵproperty("ngIf", ctx_r1.iconPrefix);
113
- i0.ɵɵadvance(1);
114
- i0.ɵɵproperty("ngIf", ctx_r1.customMask == null);
115
- i0.ɵɵadvance(1);
116
- i0.ɵɵproperty("ngIf", ctx_r1.customMask != null);
117
- i0.ɵɵadvance(1);
118
- i0.ɵɵproperty("ngIf", ctx_r1.iconSuffix);
119
- } }
120
- function InfoInputComponent_mat_form_field_2_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
121
- i0.ɵɵelementStart(0, "mat-icon", 6);
122
- i0.ɵɵtext(1);
123
- i0.ɵɵelementEnd();
124
- } if (rf & 2) {
125
- const ctx_r25 = i0.ɵɵnextContext(2);
126
- i0.ɵɵadvance(1);
127
- i0.ɵɵtextInterpolate(ctx_r25.iconPrefix);
128
- } }
129
- function InfoInputComponent_mat_form_field_2_Template(rf, ctx) { if (rf & 1) {
130
- const _r27 = i0.ɵɵgetCurrentView();
131
- i0.ɵɵelementStart(0, "mat-form-field");
132
- i0.ɵɵtemplate(1, InfoInputComponent_mat_form_field_2_mat_icon_1_Template, 2, 1, "mat-icon", 2);
133
- i0.ɵɵelementStart(2, "textarea", 13);
134
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_2_Template_textarea_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r26.value = $event); })("input", function InfoInputComponent_mat_form_field_2_Template_textarea_input_2_listener() { i0.ɵɵrestoreView(_r27); const ctx_r28 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r28.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_2_Template_textarea_blur_2_listener() { i0.ɵɵrestoreView(_r27); const ctx_r29 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r29.onBlur()); });
135
- i0.ɵɵpipe(3, "translate");
136
- i0.ɵɵelementEnd()();
137
- } if (rf & 2) {
138
- const ctx_r2 = i0.ɵɵnextContext();
139
- i0.ɵɵadvance(1);
140
- i0.ɵɵproperty("ngIf", ctx_r2.iconPrefix);
141
- i0.ɵɵadvance(1);
142
- i0.ɵɵproperty("tabindex", ctx_r2.tabindex)("placeholder", i0.ɵɵpipeBind1(3, 9, ctx_r2.placeholder))("ngModel", ctx_r2.value)("rows", ctx_r2.rows)("maxlength", ctx_r2.maxlength)("readonly", ctx_r2.readonly)("disabled", ctx_r2.disabled)("required", ctx_r2.required);
143
- } }
144
- function InfoInputComponent_mat_form_field_3_mat_icon_7_Template(rf, ctx) { if (rf & 1) {
145
- i0.ɵɵelementStart(0, "mat-icon", 7);
146
- i0.ɵɵtext(1);
147
- i0.ɵɵelementEnd();
148
- } if (rf & 2) {
149
- const ctx_r31 = i0.ɵɵnextContext(2);
150
- i0.ɵɵadvance(1);
151
- i0.ɵɵtextInterpolate(ctx_r31.iconSuffix);
152
- } }
153
- function InfoInputComponent_mat_form_field_3_Template(rf, ctx) { if (rf & 1) {
154
- const _r33 = i0.ɵɵgetCurrentView();
155
- i0.ɵɵelementStart(0, "mat-form-field", 14)(1, "div", 15)(2, "input", 16, 17);
156
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_3_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.value = $event); })("change", function InfoInputComponent_mat_form_field_3_Template_input_change_2_listener() { i0.ɵɵrestoreView(_r33); const ctx_r34 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r34.writeValue(ctx_r34.value)); });
157
- i0.ɵɵelementEnd();
158
- i0.ɵɵelementStart(4, "div", 18);
159
- i0.ɵɵlistener("click", function InfoInputComponent_mat_form_field_3_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r33); const _r30 = i0.ɵɵreference(3); return i0.ɵɵresetView(_r30.click()); });
160
- i0.ɵɵelementEnd();
161
- i0.ɵɵelementStart(5, "input", 19);
162
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_3_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r36 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r36.value = $event); })("input", function InfoInputComponent_mat_form_field_3_Template_input_input_5_listener() { i0.ɵɵrestoreView(_r33); const ctx_r37 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r37.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_3_Template_input_blur_5_listener() { i0.ɵɵrestoreView(_r33); const ctx_r38 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r38.onBlur()); });
163
- i0.ɵɵpipe(6, "translate");
164
- i0.ɵɵelementEnd();
165
- i0.ɵɵtemplate(7, InfoInputComponent_mat_form_field_3_mat_icon_7_Template, 2, 1, "mat-icon", 4);
166
- i0.ɵɵelementEnd()();
167
- } if (rf & 2) {
168
- const ctx_r3 = i0.ɵɵnextContext();
169
- i0.ɵɵadvance(2);
170
- i0.ɵɵproperty("ngModel", ctx_r3.value)("readonly", ctx_r3.readonly)("disabled", ctx_r3.disabled);
171
- i0.ɵɵadvance(2);
172
- i0.ɵɵstyleProp("background-color", ctx_r3.value);
173
- i0.ɵɵadvance(1);
174
- i0.ɵɵproperty("tabindex", ctx_r3.tabindex)("placeholder", i0.ɵɵpipeBind1(6, 13, ctx_r3.placeholder))("ngModel", ctx_r3.value)("maxlength", ctx_r3.maxlength)("readonly", ctx_r3.readonly)("disabled", ctx_r3.disabled)("required", ctx_r3.required);
175
- i0.ɵɵadvance(2);
176
- i0.ɵɵproperty("ngIf", ctx_r3.iconSuffix);
177
- } }
178
- export class InfoInputComponent {
179
- constructor() {
180
- this.disabled = false;
181
- this.readonly = false;
182
- this.required = false;
183
- this.type = 'text';
184
- this.rows = 1;
185
- this.tabindex = 0;
186
- this.iconPrefix = '';
187
- this.iconSuffix = '';
188
- this.min = -99999999999999.999999999;
189
- this.max = 99999999999999.999999999;
190
- this.step = null;
191
- this.onblur = new EventEmitter();
192
- this.maskOptions = {
193
- align: 'right',
194
- allowNegative: true,
195
- decimal: ',',
196
- precision: 2,
197
- prefix: '',
198
- suffix: '',
199
- thousands: '.'
200
- };
201
- this.value = '';
202
- this.customMask = null;
203
- this.passwordMode = false;
204
- this.methodIsmask = null;
205
- }
206
- ngOnInit() {
207
- this.passwordMode = this.type.toLocaleLowerCase() == 'password';
208
- }
209
- get ismask() {
210
- return this.methodIsmask;
211
- }
212
- set ismask(value) {
213
- this.methodIsmask = value;
214
- if (this.methodIsmask != null) {
215
- this.methodIsmask = this.methodIsmask.toLowerCase();
216
- if (this.methodIsmask == 'int')
217
- this.maskOptions.precision = 0;
218
- else if (this.methodIsmask[0] == 'n' && (this.methodIsmask.length == 2 || this.methodIsmask.length == 3))
219
- this.maskOptions.precision = parseInt(this.methodIsmask.replace('n', ''));
220
- else
221
- this.customMask = this.methodIsmask;
222
- }
223
- }
224
- onBlur() {
225
- if (this.type == 'number' || (this.ismask != null && this.ismask.startsWith("n"))) {
226
- if (this.min != null)
227
- this.value = this.min > Number(this.value) ? null : this.value;
228
- if (this.max != null)
229
- this.value = this.max < Number(this.value) ? null : this.value;
230
- this.onChangeValue();
231
- }
232
- if (this.onblur != null)
233
- this.onblur.emit(this.value);
234
- }
235
- onChangeValue() {
236
- if (this.onChange != null)
237
- this.onChange(this.value);
238
- }
239
- writeValue(modelValue) {
240
- this.value = modelValue;
241
- this.onChangeValue();
242
- }
243
- registerOnChange(fn) {
244
- this.onChange = fn;
245
- }
246
- registerOnTouched(fn) {
247
- this.onTouched = fn;
248
- }
249
- setDisabledState(isDisabled) {
250
- this.disabled = isDisabled;
251
- }
252
- }
253
- /** @nocollapse */ InfoInputComponent.ɵfac = function InfoInputComponent_Factory(t) { return new (t || InfoInputComponent)(); };
254
- /** @nocollapse */ InfoInputComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoInputComponent, selectors: [["info-input"]], inputs: { placeholder: "placeholder", disabled: "disabled", readonly: "readonly", required: "required", maxlength: "maxlength", type: "type", rows: "rows", tabindex: "tabindex", iconPrefix: "iconPrefix", iconSuffix: "iconSuffix", min: "min", max: "max", step: "step", ismask: "ismask" }, outputs: { onblur: "onblur" }, features: [i0.ɵɵProvidersFeature([
255
- {
256
- provide: NG_VALUE_ACCESSOR,
257
- useExisting: forwardRef((() => InfoInputComponent)),
258
- multi: true
259
- }
260
- ])], decls: 4, vars: 4, consts: [[4, "ngIf"], ["class", "input-color", 4, "ngIf"], ["matPrefix", "", "style", "color: #aaa", 4, "ngIf"], ["matInput", "", 3, "type", "step", "min", "max", "tabindex", "placeholder", "ngModel", "maxlength", "readonly", "disabled", "required", "ngModelChange", "input", "blur"], ["matSuffix", "", "style", "color: #aaa", 4, "ngIf"], ["class", "show-password", "matSuffix", "", 3, "click", 4, "ngIf"], ["matPrefix", "", 2, "color", "#aaa"], ["matSuffix", "", 2, "color", "#aaa"], ["matSuffix", "", 1, "show-password", 3, "click"], ["matInput", "", "currencyMask", "", 3, "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "options", "ngModelChange", "blur", 4, "ngIf"], ["matInput", "", "unmask", "", 3, "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "setmask", "ngModelChange", "blur", 4, "ngIf"], ["matInput", "", "currencyMask", "", 3, "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "options", "ngModelChange", "blur"], ["matInput", "", "unmask", "", 3, "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "setmask", "ngModelChange", "blur"], ["matInput", "", 3, "tabindex", "placeholder", "ngModel", "rows", "maxlength", "readonly", "disabled", "required", "ngModelChange", "input", "blur"], [1, "input-color"], [1, "input-color-container"], ["type", "color", 2, "width", "0px", "visibility", "hidden", 3, "ngModel", "readonly", "disabled", "ngModelChange", "change"], ["colorInput", ""], [1, "color-picker", 3, "click"], ["matInput", "", "type", "text", 3, "tabindex", "placeholder", "ngModel", "maxlength", "readonly", "disabled", "required", "ngModelChange", "input", "blur"]], template: function InfoInputComponent_Template(rf, ctx) { if (rf & 1) {
261
- i0.ɵɵtemplate(0, InfoInputComponent_mat_form_field_0_Template, 6, 16, "mat-form-field", 0);
262
- i0.ɵɵtemplate(1, InfoInputComponent_mat_form_field_1_Template, 5, 4, "mat-form-field", 0);
263
- i0.ɵɵtemplate(2, InfoInputComponent_mat_form_field_2_Template, 4, 11, "mat-form-field", 0);
264
- i0.ɵɵtemplate(3, InfoInputComponent_mat_form_field_3_Template, 8, 15, "mat-form-field", 1);
265
- } if (rf & 2) {
266
- i0.ɵɵproperty("ngIf", ctx.type != "color" && ctx.type != "textarea" && ctx.ismask == null);
267
- i0.ɵɵadvance(1);
268
- i0.ɵɵproperty("ngIf", ctx.type != "color" && ctx.type != "textarea" && ctx.ismask != null);
269
- i0.ɵɵadvance(1);
270
- i0.ɵɵproperty("ngIf", ctx.type == "textarea");
271
- i0.ɵɵadvance(1);
272
- i0.ɵɵproperty("ngIf", ctx.type == "color");
273
- } }, dependencies: [i1.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.RequiredValidator, i2.MaxLengthValidator, i2.NgModel, i3.MatIcon, i4.MatFormField, i4.MatPrefix, i4.MatSuffix, i5.MatInput, i6.CurrencyMaskDirective, i7.InfoMaskDirective, i8.InfoUnmaskDirective, i9.InfoTranslatePipe], styles: ["[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .mat-form-field-label{transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1),margin .4s cubic-bezier(.25,.8,.25,1)}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%]:not(.mat-form-field-should-float) .mat-form-field-label{margin-left:40px}[_nghost-%COMP%] .input-color.mat-form-field-should-float[_ngcontent-%COMP%] .mat-form-field-label{margin-left:0}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .input-color-container[_ngcontent-%COMP%]{display:flex}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .input-color-container[_ngcontent-%COMP%] input[type=color][_ngcontent-%COMP%]{width:0px;height:0px;visibility:hidden}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .input-color-container[_ngcontent-%COMP%] .color-picker[_ngcontent-%COMP%]{width:30px;border:solid 1px black;border-radius:5px;margin-right:5px}"] });
274
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoInputComponent, [{
275
- type: Component,
276
- args: [{ selector: 'info-input', providers: [
277
- {
278
- provide: NG_VALUE_ACCESSOR,
279
- useExisting: forwardRef((() => InfoInputComponent)),
280
- multi: true
281
- }
282
- ], template: "<mat-form-field *ngIf=\"type != 'color' && type != 'textarea' && ismask == null\" >\r\n <mat-icon *ngIf=\"iconPrefix\" matPrefix style=\"color: #aaa\">{{iconPrefix}}</mat-icon>\r\n \r\n <input matInput [type]=\"type\" [step]=\"step\" [min]=\"min\" [max]=\"max\" [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (input)=\"onChangeValue()\" (blur)=\"onBlur()\"\r\n [maxlength]=\"maxlength\" [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\">\r\n\r\n <mat-icon *ngIf=\"iconSuffix\" matSuffix style=\"color: #aaa\">{{iconSuffix}}</mat-icon>\r\n <mat-icon class=\"show-password\" *ngIf=\"passwordMode\" (click)=\"type = (type == 'password') ? 'text' : 'password'\" matSuffix >visibility{{ type == 'password' ? '' : '_off' }}</mat-icon>\r\n</mat-form-field>\r\n\r\n<mat-form-field *ngIf=\"type != 'color' && type != 'textarea' && ismask != null\">\r\n <mat-icon *ngIf=\"iconPrefix\" matPrefix style=\"color: #aaa\">{{iconPrefix}}</mat-icon>\r\n\r\n <input matInput [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (ngModelChange)=\"onChangeValue()\" (blur)=\"onBlur()\" *ngIf=\"customMask == null\"\r\n [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\" [options]=\"maskOptions\" currencyMask>\r\n\r\n <input matInput [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (ngModelChange)=\"onChangeValue()\" (blur)=\"onBlur()\" *ngIf=\"customMask != null\"\r\n [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\" [setmask]=\"customMask\" unmask >\r\n\r\n <mat-icon *ngIf=\"iconSuffix\" matSuffix style=\"color: #aaa\">{{iconSuffix}}</mat-icon>\r\n</mat-form-field>\r\n\r\n<mat-form-field *ngIf=\"type == 'textarea'\">\r\n <mat-icon *ngIf=\"iconPrefix\" matPrefix style=\"color: #aaa\">{{iconPrefix}}</mat-icon>\r\n \r\n <textarea matInput [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (input)=\"onChangeValue()\" (blur)=\"onBlur()\" [rows]=\"rows\"\r\n [maxlength]=\"maxlength\" [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\"></textarea>\r\n</mat-form-field>\r\n\r\n<mat-form-field class=\"input-color\" *ngIf=\"type == 'color'\">\r\n \r\n <div class=\"input-color-container\">\r\n <input #colorInput style=\"width: 0px;visibility: hidden;\" type=\"color\" [(ngModel)]=\"value\" (change)=\"writeValue(value)\" [readonly]=\"readonly\" [disabled]=\"disabled\">\r\n <div class=\"color-picker\" [style.background-color]=\"value\" (click)=\"colorInput.click()\"></div>\r\n \r\n <input matInput type=\"text\" [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (input)=\"onChangeValue()\" (blur)=\"onBlur()\"\r\n [maxlength]=\"maxlength\" [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\">\r\n \r\n <mat-icon *ngIf=\"iconSuffix\" matSuffix style=\"color: #aaa\">{{iconSuffix}}</mat-icon>\r\n </div>\r\n</mat-form-field>", styles: [":host .input-color ::ng-deep .mat-form-field-label{transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1),margin .4s cubic-bezier(.25,.8,.25,1)}:host .input-color:not(.mat-form-field-should-float) ::ng-deep .mat-form-field-label{margin-left:40px}:host .input-color.mat-form-field-should-float ::ng-deep .mat-form-field-label{margin-left:0}:host .input-color .input-color-container{display:flex}:host .input-color .input-color-container input[type=color]{width:0px;height:0px;visibility:hidden}:host .input-color .input-color-container .color-picker{width:30px;border:solid 1px black;border-radius:5px;margin-right:5px}\n"] }]
283
- }], null, { placeholder: [{
284
- type: Input
285
- }], disabled: [{
286
- type: Input
287
- }], readonly: [{
288
- type: Input
289
- }], required: [{
290
- type: Input
291
- }], maxlength: [{
292
- type: Input
293
- }], type: [{
294
- type: Input
295
- }], rows: [{
296
- type: Input
297
- }], tabindex: [{
298
- type: Input
299
- }], iconPrefix: [{
300
- type: Input
301
- }], iconSuffix: [{
302
- type: Input
303
- }], min: [{
304
- type: Input
305
- }], max: [{
306
- type: Input
307
- }], step: [{
308
- type: Input
309
- }], onblur: [{
310
- type: Output
311
- }], ismask: [{
312
- type: Input
313
- }] }); })();
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy9jb250cm9scy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDQXJFLG1DQUEyRDtJQUFBLFlBQWM7SUFBQSxpQkFBVzs7O0lBQXpCLGVBQWM7SUFBZCx1Q0FBYzs7O0lBS3pFLG1DQUEyRDtJQUFBLFlBQWM7SUFBQSxpQkFBVzs7O0lBQXpCLGVBQWM7SUFBZCx1Q0FBYzs7OztJQUN6RSxtQ0FBNEg7SUFBdkUsb09BQXlCLFVBQVUsR0FBSSxNQUFNLEdBQUcsVUFBVSxLQUFDO0lBQVksWUFBZ0Q7SUFBQSxpQkFBVzs7O0lBQTNELGVBQWdEO0lBQWhELGdGQUFnRDs7OztJQVBoTCxzQ0FBaUY7SUFDN0UsOEZBQW9GO0lBRXBGLGdDQUM4RjtJQURvQyx5T0FBbUIsOEpBQVUsZUFBQSx1QkFBZSxDQUFBLElBQXpCLDRKQUFtQyxlQUFBLGdCQUFRLENBQUEsSUFBM0M7O0lBQXJKLGlCQUM4RjtJQUU5Riw4RkFBb0Y7SUFDcEYsOEZBQXVMO0lBQzNMLGlCQUFpQjs7O0lBUEYsZUFBZ0I7SUFBaEIsd0NBQWdCO0lBRVgsZUFBYTtJQUFiLGtDQUFhLHFCQUFBLG1CQUFBLG1CQUFBLDZCQUFBLDBEQUFBLHlCQUFBLCtCQUFBLDZCQUFBLDZCQUFBLDZCQUFBO0lBR2xCLGVBQWdCO0lBQWhC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LE1BQU07a0JBQWYsTUFBTTtZQXdCSCxNQUFNO2tCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnaW5mby1pbnB1dCcsXHJcbiAgICBzdHlsZVVybHM6IFsgJ2lucHV0LmNvbXBvbmVudC5zY3NzJyBdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdpbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6W1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEluZm9JbnB1dENvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0lucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIG1heGxlbmd0aDogYW55O1xyXG4gICAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gJ3RleHQnO1xyXG4gICAgQElucHV0KCkgcm93czogbnVtYmVyID0gMTtcclxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXIgPSAwO1xyXG4gICAgQElucHV0KCkgaWNvblByZWZpeDogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBpY29uU3VmZml4OiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIG1pbjogbnVtYmVyID0gLTk5OTk5OTk5OTk5OTk5Ljk5OTk5OTk5OTtcclxuICAgIEBJbnB1dCgpIG1heDogbnVtYmVyID0gOTk5OTk5OTk5OTk5OTkuOTk5OTk5OTk5O1xyXG4gICAgQElucHV0KCkgc3RlcDogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25ibHVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgXHJcbiAgICBtYXNrT3B0aW9uczogYW55ID0ge1xyXG4gICAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICAgIGFsbG93TmVnYXRpdmU6IHRydWUsXHJcbiAgICAgICAgZGVjaW1hbDogJywnLFxyXG4gICAgICAgIHByZWNpc2lvbjogMixcclxuICAgICAgICBwcmVmaXg6ICcnLFxyXG4gICAgICAgIHN1ZmZpeDogJycsXHJcbiAgICAgICAgdGhvdXNhbmRzOiAnLidcclxuICAgIH07XHJcbiAgICBcclxuICAgIHZhbHVlOiBzdHJpbmcgPSAnJztcclxuICAgIGN1c3RvbU1hc2s6IHN0cmluZyA9IG51bGw7XHJcbiAgICBvbkNoYW5nZTogYW55O1xyXG4gICAgb25Ub3VjaGVkOiBhbnk7XHJcbiAgICBwYXNzd29yZE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHsgXHJcbiAgICAgICAgdGhpcy5wYXNzd29yZE1vZGUgPSB0aGlzLnR5cGUudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSAncGFzc3dvcmQnO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbWV0aG9kSXNtYXNrOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBpc21hc2soKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5tZXRob2RJc21hc2s7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGlzbWFzayh2YWx1ZSl7XHJcbiAgICAgICAgdGhpcy5tZXRob2RJc21hc2sgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWV0aG9kSXNtYXNrICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5tZXRob2RJc21hc2sgPSB0aGlzLm1ldGhvZElzbWFzay50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHRoaXMubWV0aG9kSXNtYXNrID09ICdpbnQnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrT3B0aW9ucy5wcmVjaXNpb24gPSAwO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tZXRob2RJc21hc2tbMF0gPT0gJ24nICYmICh0aGlzLm1ldGhvZElzbWFzay5sZW5ndGggPT0gMiB8fCB0aGlzLm1ldGhvZElzbWFzay5sZW5ndGggPT0gMykpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hc2tPcHRpb25zLnByZWNpc2lvbiA9IHBhcnNlSW50KHRoaXMubWV0aG9kSXNtYXNrLnJlcGxhY2UoJ24nLCAnJykpO1xyXG5cclxuICAgICAgICAgICAgZWxzZSB0aGlzLmN1c3RvbU1hc2sgPSB0aGlzLm1ldGhvZElzbWFzaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25CbHVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ251bWJlcicgfHwgKHRoaXMuaXNtYXNrICE9IG51bGwgJiYgdGhpcy5pc21hc2suc3RhcnRzV2l0aChcIm5cIikpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1pbiAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluID4gTnVtYmVyKHRoaXMudmFsdWUpID8gbnVsbCA6IHRoaXMudmFsdWU7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXggIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1heCA8IE51bWJlcih0aGlzLnZhbHVlKSA/IG51bGwgOiB0aGlzLnZhbHVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5vbmJsdXIgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5vbmJsdXIuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZVZhbHVlKCl7XHJcbiAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICB3cml0ZVZhbHVlKG1vZGVsVmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBtb2RlbFZhbHVlO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICB9XHJcbn0iLCI8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJ0eXBlICE9ICdjb2xvcicgJiYgdHlwZSAhPSAndGV4dGFyZWEnICYmIGlzbWFzayA9PSBudWxsXCIgPlxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblByZWZpeFwiIG1hdFByZWZpeCBzdHlsZT1cImNvbG9yOiAjYWFhXCI+e3tpY29uUHJlZml4fX08L21hdC1pY29uPlxyXG4gICAgXHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgW3R5cGVdPVwidHlwZVwiIFtzdGVwXT1cInN0ZXBcIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW3RhYmluZGV4XT1cInRhYmluZGV4XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChpbnB1dCk9XCJvbkNoYW5nZVZhbHVlKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cclxuXHJcbiAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uU3VmZml4XCIgbWF0U3VmZml4IHN0eWxlPVwiY29sb3I6ICNhYWFcIj57e2ljb25TdWZmaXh9fTwvbWF0LWljb24+XHJcbiAgICA8bWF0LWljb24gY2xhc3M9XCJzaG93LXBhc3N3b3JkXCIgKm5nSWY9XCJwYXNzd29yZE1vZGVcIiAoY2xpY2spPVwidHlwZSA9ICh0eXBlID09ICdwYXNzd29yZCcpID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ1wiIG1hdFN1ZmZpeCA+dmlzaWJpbGl0eXt7IHR5cGUgPT0gJ3Bhc3N3b3JkJyA/ICcnIDogJ19vZmYnIH19PC9tYXQtaWNvbj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbjxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInR5cGUgIT0gJ2NvbG9yJyAmJiB0eXBlICE9ICd0ZXh0YXJlYScgJiYgaXNtYXNrICE9IG51bGxcIj5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25QcmVmaXhcIiBtYXRQcmVmaXggc3R5bGU9XCJjb2xvcjogI2FhYVwiPnt7aWNvblByZWZpeH19PC9tYXQtaWNvbj5cclxuXHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgW3RhYmluZGV4XT1cInRhYmluZGV4XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlVmFsdWUoKVwiIChibHVyKT1cIm9uQmx1cigpXCIgKm5nSWY9XCJjdXN0b21NYXNrID09IG51bGxcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtvcHRpb25zXT1cIm1hc2tPcHRpb25zXCIgY3VycmVuY3lNYXNrPlxyXG5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VWYWx1ZSgpXCIgKGJsdXIpPVwib25CbHVyKClcIiAqbmdJZj1cImN1c3RvbU1hc2sgIT0gbnVsbFwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW3NldG1hc2tdPVwiY3VzdG9tTWFza1wiIHVubWFzayA+XHJcblxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblN1ZmZpeFwiIG1hdFN1ZmZpeCBzdHlsZT1cImNvbG9yOiAjYWFhXCI+e3tpY29uU3VmZml4fX08L21hdC1pY29uPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwidHlwZSA9PSAndGV4dGFyZWEnXCI+XHJcbiAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uUHJlZml4XCIgbWF0UHJlZml4IHN0eWxlPVwiY29sb3I6ICNhYWFcIj57e2ljb25QcmVmaXh9fTwvbWF0LWljb24+XHJcbiAgICBcclxuICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKGlucHV0KT1cIm9uQ2hhbmdlVmFsdWUoKVwiIChibHVyKT1cIm9uQmx1cigpXCIgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIj48L3RleHRhcmVhPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtY29sb3JcIiAqbmdJZj1cInR5cGUgPT0gJ2NvbG9yJ1wiPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29sb3ItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGlucHV0ICNjb2xvcklucHV0IHN0eWxlPVwid2lkdGg6IDBweDt2aXNpYmlsaXR5OiBoaWRkZW47XCIgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChjaGFuZ2UpPVwid3JpdGVWYWx1ZSh2YWx1ZSlcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3ItcGlja2VyXCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwidmFsdWVcIiAoY2xpY2spPVwiY29sb3JJbnB1dC5jbGljaygpXCI+PC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgW3RhYmluZGV4XT1cInRhYmluZGV4XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChpbnB1dCk9XCJvbkNoYW5nZVZhbHVlKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cclxuICAgICAgICBcclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uU3VmZml4XCIgbWF0U3VmZml4IHN0eWxlPVwiY29sb3I6ICNhYWFcIj57e2ljb25TdWZmaXh9fTwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuPC9tYXQtZm9ybS1maWVsZD4iXX0=