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
@@ -0,0 +1,181 @@
1
+ import { Component, forwardRef, Input, ViewChild } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ import { MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from "@angular/material/core";
4
+ import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from "@angular/material-moment-adapter";
5
+ import { createTextMaskInputElement } from "text-mask-core/dist/textMaskCore";
6
+ import { createAutoCorrectedDatePipe } from "text-mask-addons";
7
+ import moment from "moment";
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "@angular/forms";
11
+ import * as i3 from "@angular/material/form-field";
12
+ import * as i4 from "@angular/material/input";
13
+ import * as i5 from "@angular/material/datepicker";
14
+ import * as i6 from "../../pipe/translate.pipe";
15
+ const _c0 = ["inputDate"];
16
+ function InfoDateMonthComponent_mat_form_field_0_Template(rf, ctx) { if (rf & 1) {
17
+ const _r5 = i0.ɵɵgetCurrentView();
18
+ i0.ɵɵelementStart(0, "mat-form-field")(1, "input", 1, 2);
19
+ i0.ɵɵlistener("ngModelChange", function InfoDateMonthComponent_mat_form_field_0_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.dateValue = $event); })("dateChange", function InfoDateMonthComponent_mat_form_field_0_Template_input_dateChange_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.onChangeValue()); })("input", function InfoDateMonthComponent_mat_form_field_0_Template_input_input_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.onInputDate($event.target.value)); })("keypress", function InfoDateMonthComponent_mat_form_field_0_Template_input_keypress_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.onKeyPress($event)); })("blur", function InfoDateMonthComponent_mat_form_field_0_Template_input_blur_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.onChangeValue()); });
20
+ i0.ɵɵpipe(3, "translate");
21
+ i0.ɵɵelementEnd();
22
+ i0.ɵɵelement(4, "mat-datepicker-toggle", 3);
23
+ i0.ɵɵelementStart(5, "mat-datepicker", 4, 5);
24
+ i0.ɵɵlistener("yearSelected", function InfoDateMonthComponent_mat_form_field_0_Template_mat_datepicker_yearSelected_5_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.chosenYearHandler($event)); })("monthSelected", function InfoDateMonthComponent_mat_form_field_0_Template_mat_datepicker_monthSelected_5_listener($event) { i0.ɵɵrestoreView(_r5); const _r3 = i0.ɵɵreference(6); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.chosenMonthHandler($event, _r3)); });
25
+ i0.ɵɵelementEnd()();
26
+ } if (rf & 2) {
27
+ const _r3 = i0.ɵɵreference(6);
28
+ const ctx_r0 = i0.ɵɵnextContext();
29
+ i0.ɵɵadvance(1);
30
+ i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(3, 7, ctx_r0.placeholder))("ngModel", ctx_r0.dateValue)("disabled", ctx_r0.disabled)("required", ctx_r0.required)("min", ctx_r0.minDate)("matDatepicker", _r3);
31
+ i0.ɵɵadvance(3);
32
+ i0.ɵɵproperty("for", _r3);
33
+ } }
34
+ function InfoDateMonthComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
35
+ const _r15 = i0.ɵɵgetCurrentView();
36
+ i0.ɵɵelementContainerStart(0);
37
+ i0.ɵɵelementStart(1, "input", 6, 2);
38
+ i0.ɵɵlistener("click", function InfoDateMonthComponent_ng_container_1_Template_input_click_1_listener() { i0.ɵɵrestoreView(_r15); const _r13 = i0.ɵɵreference(4); return i0.ɵɵresetView(_r13.open()); })("ngModelChange", function InfoDateMonthComponent_ng_container_1_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.dateValue = $event); })("dateChange", function InfoDateMonthComponent_ng_container_1_Template_input_dateChange_1_listener() { i0.ɵɵrestoreView(_r15); const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.onChangeValue()); })("input", function InfoDateMonthComponent_ng_container_1_Template_input_input_1_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.onInputDate($event.target.value)); });
39
+ i0.ɵɵelementEnd();
40
+ i0.ɵɵelementStart(3, "mat-datepicker", 4, 5);
41
+ i0.ɵɵlistener("yearSelected", function InfoDateMonthComponent_ng_container_1_Template_mat_datepicker_yearSelected_3_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r19 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r19.chosenYearHandler($event)); })("monthSelected", function InfoDateMonthComponent_ng_container_1_Template_mat_datepicker_monthSelected_3_listener($event) { i0.ɵɵrestoreView(_r15); const _r13 = i0.ɵɵreference(4); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.chosenMonthHandler($event, _r13)); });
42
+ i0.ɵɵelementEnd();
43
+ i0.ɵɵelementContainerEnd();
44
+ } if (rf & 2) {
45
+ const _r13 = i0.ɵɵreference(4);
46
+ const ctx_r1 = i0.ɵɵnextContext();
47
+ i0.ɵɵadvance(1);
48
+ i0.ɵɵproperty("ngModel", ctx_r1.dateValue)("disabled", ctx_r1.disabled)("required", ctx_r1.required)("min", ctx_r1.minDate)("matDatepicker", _r13);
49
+ } }
50
+ export const PT_BR_DATE_MONTH_FORMATS = {
51
+ parse: {
52
+ dateInput: 'MM/YYYY',
53
+ },
54
+ display: {
55
+ dateInput: 'MM/YYYY',
56
+ monthYearLabel: 'MMM YYYY',
57
+ dateA11yLabel: 'LL',
58
+ monthYearA11yLabel: 'MMMM YYYY',
59
+ },
60
+ };
61
+ export class InfoDateMonthComponent {
62
+ placeholder;
63
+ disabled = false;
64
+ required = false;
65
+ changeonlyonmonth = false;
66
+ minDate = new Date(1800, 0, 1);
67
+ button = false;
68
+ input;
69
+ dateValue;
70
+ dateMask;
71
+ onChange;
72
+ onTouched;
73
+ ngAfterViewInit() {
74
+ let config = {
75
+ mask: [/\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/],
76
+ guide: true,
77
+ placeholderChar: '_',
78
+ pipe: createAutoCorrectedDatePipe(PT_BR_DATE_MONTH_FORMATS.parse.dateInput.toLowerCase()),
79
+ modelClean: true,
80
+ keepCharPositions: false,
81
+ };
82
+ this.dateMask = createTextMaskInputElement(Object.assign({ inputElement: this.input.nativeElement }, config));
83
+ }
84
+ onInputDate(value) {
85
+ this.dateMask.update(value);
86
+ }
87
+ onChangeValue() {
88
+ if (this.onChange != null) {
89
+ if (moment(this.dateValue).isBefore(moment(this.minDate)))
90
+ this.dateValue = this.minDate;
91
+ this.onChange(this.dateValue);
92
+ }
93
+ }
94
+ writeValue(value) {
95
+ if (value == null || value == undefined)
96
+ this.dateValue = null;
97
+ else {
98
+ value = new Date(value);
99
+ value.setMinutes(value.getMinutes() + value.getTimezoneOffset());
100
+ value = new Date(value.getFullYear(), value.getMonth(), 1);
101
+ this.dateValue = value;
102
+ }
103
+ this.onChangeValue();
104
+ }
105
+ registerOnChange(fn) {
106
+ this.onChange = fn;
107
+ }
108
+ registerOnTouched(fn) {
109
+ this.onTouched = fn;
110
+ }
111
+ setDisabledState(isDisabled) {
112
+ this.disabled = isDisabled;
113
+ }
114
+ chosenYearHandler(value) {
115
+ if (this.changeonlyonmonth)
116
+ return;
117
+ let aux = new Date(value.year(), new Date(this.dateValue).getMonth(), 1);
118
+ this.dateValue = aux;
119
+ this.onChangeValue();
120
+ }
121
+ chosenMonthHandler(value, datepicker) {
122
+ let aux = new Date(value.year(), value.month(), 1);
123
+ this.dateValue = aux;
124
+ this.onChangeValue();
125
+ datepicker.close();
126
+ }
127
+ onKeyPress(e) {
128
+ if (e.keyCode == 13)
129
+ this.onChangeValue();
130
+ }
131
+ /** @nocollapse */ static ɵfac = function InfoDateMonthComponent_Factory(t) { return new (t || InfoDateMonthComponent)(); };
132
+ /** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoDateMonthComponent, selectors: [["info-date-month"]], viewQuery: function InfoDateMonthComponent_Query(rf, ctx) { if (rf & 1) {
133
+ i0.ɵɵviewQuery(_c0, 5);
134
+ } if (rf & 2) {
135
+ let _t;
136
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.input = _t.first);
137
+ } }, inputs: { placeholder: "placeholder", disabled: "disabled", required: "required", changeonlyonmonth: "changeonlyonmonth", minDate: "minDate", button: "button" }, features: [i0.ɵɵProvidersFeature([{
138
+ provide: NG_VALUE_ACCESSOR,
139
+ useExisting: forwardRef((() => InfoDateMonthComponent)),
140
+ multi: true
141
+ },
142
+ { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
143
+ { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
144
+ { provide: MAT_DATE_FORMATS, useValue: PT_BR_DATE_MONTH_FORMATS },
145
+ { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }])], decls: 2, vars: 2, consts: [[4, "ngIf"], ["matInput", "", 3, "placeholder", "ngModel", "disabled", "required", "min", "matDatepicker", "ngModelChange", "dateChange", "input", "keypress", "blur"], ["inputDate", ""], ["matSuffix", "", 3, "for"], ["startView", "multi-year", 3, "yearSelected", "monthSelected"], ["datepicker", ""], ["type", "button", 1, "mat-button", 3, "ngModel", "disabled", "required", "min", "matDatepicker", "click", "ngModelChange", "dateChange", "input"]], template: function InfoDateMonthComponent_Template(rf, ctx) { if (rf & 1) {
146
+ i0.ɵɵtemplate(0, InfoDateMonthComponent_mat_form_field_0_Template, 7, 9, "mat-form-field", 0);
147
+ i0.ɵɵtemplate(1, InfoDateMonthComponent_ng_container_1_Template, 5, 5, "ng-container", 0);
148
+ } if (rf & 2) {
149
+ i0.ɵɵproperty("ngIf", !ctx.button);
150
+ i0.ɵɵadvance(1);
151
+ i0.ɵɵproperty("ngIf", ctx.button);
152
+ } }, dependencies: [i1.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.RequiredValidator, i2.NgModel, i3.MatFormField, i3.MatSuffix, i4.MatInput, i5.MatDatepicker, i5.MatDatepickerInput, i5.MatDatepickerToggle, i6.InfoTranslatePipe], encapsulation: 2 });
153
+ }
154
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoDateMonthComponent, [{
155
+ type: Component,
156
+ args: [{ selector: 'info-date-month', providers: [{
157
+ provide: NG_VALUE_ACCESSOR,
158
+ useExisting: forwardRef((() => InfoDateMonthComponent)),
159
+ multi: true
160
+ },
161
+ { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
162
+ { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
163
+ { provide: MAT_DATE_FORMATS, useValue: PT_BR_DATE_MONTH_FORMATS },
164
+ { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }], template: "<mat-form-field *ngIf=\"!button\">\r\n <input matInput [placeholder]=\"placeholder | translate\" [(ngModel)]=\"dateValue\" [disabled]=\"disabled\" [required]=\"required\" [min]=\"minDate\"\r\n (dateChange)=\"onChangeValue()\" (input)=\"onInputDate($event.target.value)\" (keypress)=\"onKeyPress($event)\" (blur)=\"onChangeValue()\" [matDatepicker]=\"datepicker\" #inputDate >\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datepicker startView=\"multi-year\" (yearSelected)=\"chosenYearHandler($event)\" (monthSelected)=\"chosenMonthHandler($event, datepicker)\"></mat-datepicker>\r\n</mat-form-field>\r\n\r\n<ng-container *ngIf=\"button\">\r\n <input class=\"mat-button\" type=\"button\" (click)=\"datepicker.open()\" [(ngModel)]=\"dateValue\" [disabled]=\"disabled\" [required]=\"required\" [min]=\"minDate\"\r\n (dateChange)=\"onChangeValue()\" (input)=\"onInputDate($event.target.value)\" [matDatepicker]=\"datepicker\" #inputDate>\r\n\r\n <mat-datepicker #datepicker startView=\"multi-year\" (yearSelected)=\"chosenYearHandler($event)\" (monthSelected)=\"chosenMonthHandler($event, datepicker)\"></mat-datepicker>\r\n</ng-container>" }]
165
+ }], null, { placeholder: [{
166
+ type: Input
167
+ }], disabled: [{
168
+ type: Input
169
+ }], required: [{
170
+ type: Input
171
+ }], changeonlyonmonth: [{
172
+ type: Input
173
+ }], minDate: [{
174
+ type: Input
175
+ }], button: [{
176
+ type: Input
177
+ }], input: [{
178
+ type: ViewChild,
179
+ args: ['inputDate', { static: false }]
180
+ }] }); })();
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1tb250aC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2RhdGUtbW9udGgvZGF0ZS1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2RhdGUtbW9udGgvZGF0ZS1tb250aC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXRHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9ELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7SUNSNUIsc0NBQWdDLGtCQUFBO0lBQzRCLGdQQUF1QiwwS0FDMUQsZUFBQSxzQkFBZSxDQUFBLElBRDJDLHNLQUNoQyxlQUFBLHVDQUFnQyxDQUFBLElBREEsNEtBQ2MsZUFBQSx5QkFBa0IsQ0FBQSxJQURoQyw4SkFDMEMsZUFBQSxzQkFBZSxDQUFBLElBRHpEOztJQUEvRSxpQkFDbUw7SUFFbkwsMkNBQTRFO0lBQzVFLDRDQUF1SjtJQUFwRywyTUFBZ0IsZUFBQSxpQ0FBeUIsQ0FBQSxJQUFDLCtOQUFrQixlQUFBLHVDQUFzQyxDQUFBLElBQXhEO0lBQTBE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QUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDOUUsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFO29CQUNqRSxFQUFFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFJaEUsV0FBVztrQkFBbkIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBRXFDLEtBQUs7a0JBQS9DLFNBQVM7bUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1BVF9EQVRFX0xPQ0FMRSwgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQgeyBNb21lbnREYXRlQWRhcHRlciwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlclwiO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IGNyZWF0ZVRleHRNYXNrSW5wdXRFbGVtZW50IH0gZnJvbSBcInRleHQtbWFzay1jb3JlL2Rpc3QvdGV4dE1hc2tDb3JlXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUF1dG9Db3JyZWN0ZWREYXRlUGlwZSB9IGZyb20gXCJ0ZXh0LW1hc2stYWRkb25zXCI7XHJcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcblxyXG5leHBvcnQgY29uc3QgUFRfQlJfREFURV9NT05USF9GT1JNQVRTID0ge1xyXG4gICAgcGFyc2U6IHtcclxuICAgICAgICBkYXRlSW5wdXQ6ICdNTS9ZWVlZJyxcclxuICAgIH0sXHJcbiAgICBkaXNwbGF5OiB7XHJcbiAgICAgICAgZGF0ZUlucHV0OiAnTU0vWVlZWScsXHJcbiAgICAgICAgbW9udGhZZWFyTGFiZWw6ICdNTU0gWVlZWScsXHJcbiAgICAgICAgZGF0ZUExMXlMYWJlbDogJ0xMJyxcclxuICAgICAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIFlZWVknLFxyXG4gICAgfSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLWRhdGUtbW9udGgnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtbW9udGguY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEluZm9EYXRlTW9udGhDb21wb25lbnQpLFxyXG4gICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgeyBwcm92aWRlOiBNQVRfREFURV9MT0NBTEUsIHVzZVZhbHVlOiAncHQtQlInIH0sXHJcbiAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsIGRlcHM6IFtNQVRfREFURV9MT0NBTEVdIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBQVF9CUl9EQVRFX01PTlRIX0ZPUk1BVFMgfSxcclxuICAgIHsgcHJvdmlkZTogTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgdXNlVmFsdWU6IHsgdXNlVXRjOiB0cnVlIH0gfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9EYXRlTW9udGhDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgY2hhbmdlb25seW9ubW9udGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIG1pbkRhdGU6IERhdGUgPSBuZXcgRGF0ZSgxODAwLCAwLCAxKTtcclxuICAgIEBJbnB1dCgpIGJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0RGF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dDtcclxuXHJcbiAgICBkYXRlVmFsdWU6IGFueTtcclxuICAgIGRhdGVNYXNrOiBhbnk7XHJcbiAgICBvbkNoYW5nZTtcclxuICAgIG9uVG91Y2hlZDtcclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gICAgICAgIGxldCBjb25maWcgPSB7XHJcbiAgICAgICAgICAgIG1hc2s6IFsvXFxkLywgL1xcZC8sICcvJywgL1xcZC8sIC9cXGQvLCAvXFxkLywgL1xcZC9dLFxyXG4gICAgICAgICAgICBndWlkZTogdHJ1ZSxcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXJDaGFyOiAnXycsXHJcbiAgICAgICAgICAgIHBpcGU6IGNyZWF0ZUF1dG9Db3JyZWN0ZWREYXRlUGlwZShQVF9CUl9EQVRFX01PTlRIX0ZPUk1BVFMucGFyc2UuZGF0ZUlucHV0LnRvTG93ZXJDYXNlKCkpLFxyXG4gICAgICAgICAgICBtb2RlbENsZWFuOiB0cnVlLFxyXG4gICAgICAgICAgICBrZWVwQ2hhclBvc2l0aW9uczogZmFsc2UsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRlTWFzayA9IGNyZWF0ZVRleHRNYXNrSW5wdXRFbGVtZW50KFxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHsgaW5wdXRFbGVtZW50OiB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQgfSwgY29uZmlnKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgb25JbnB1dERhdGUodmFsdWUpIHtcclxuICAgICAgICB0aGlzLmRhdGVNYXNrLnVwZGF0ZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2VWYWx1ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5vbkNoYW5nZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChtb21lbnQodGhpcy5kYXRlVmFsdWUpLmlzQmVmb3JlKG1vbWVudCh0aGlzLm1pbkRhdGUpKSlcclxuICAgICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWUgPSB0aGlzLm1pbkRhdGU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZGF0ZVZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgICAgICB2YWx1ZS5zZXRNaW51dGVzKHZhbHVlLmdldE1pbnV0ZXMoKSArIHZhbHVlLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xyXG4gICAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCksIDEpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlVmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGNob3NlblllYXJIYW5kbGVyKHZhbHVlOiBNb21lbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5jaGFuZ2Vvbmx5b25tb250aClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGxldCBhdXggPSBuZXcgRGF0ZSh2YWx1ZS55ZWFyKCksIG5ldyBEYXRlKHRoaXMuZGF0ZVZhbHVlKS5nZXRNb250aCgpLCAxKTtcclxuICAgICAgICB0aGlzLmRhdGVWYWx1ZSA9IGF1eDtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlVmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaG9zZW5Nb250aEhhbmRsZXIodmFsdWU6IE1vbWVudCwgZGF0ZXBpY2tlcjogTWF0RGF0ZXBpY2tlcjxNb21lbnQ+KSB7XHJcbiAgICAgICAgbGV0IGF1eCA9IG5ldyBEYXRlKHZhbHVlLnllYXIoKSwgdmFsdWUubW9udGgoKSwgMSk7XHJcbiAgICAgICAgdGhpcy5kYXRlVmFsdWUgPSBhdXg7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICAgICAgZGF0ZXBpY2tlci5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBvbktleVByZXNzKGUpe1xyXG4gICAgICAgIGlmIChlLmtleUNvZGUgPT0gMTMpXHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VWYWx1ZSgpO1xyXG4gICAgfVxyXG59IiwiPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiIWJ1dHRvblwiPlxyXG4gICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiIFsobmdNb2RlbCldPVwiZGF0ZVZhbHVlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW21pbl09XCJtaW5EYXRlXCJcclxuICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJvbkNoYW5nZVZhbHVlKClcIiAoaW5wdXQpPVwib25JbnB1dERhdGUoJGV2ZW50LnRhcmdldC52YWx1ZSlcIiAoa2V5cHJlc3MpPVwib25LZXlQcmVzcygkZXZlbnQpXCIgKGJsdXIpPVwib25DaGFuZ2VWYWx1ZSgpXCIgW21hdERhdGVwaWNrZXJdPVwiZGF0ZXBpY2tlclwiICNpbnB1dERhdGUgPlxyXG5cclxuICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZXBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgPG1hdC1kYXRlcGlja2VyICNkYXRlcGlja2VyIHN0YXJ0Vmlldz1cIm11bHRpLXllYXJcIiAoeWVhclNlbGVjdGVkKT1cImNob3NlblllYXJIYW5kbGVyKCRldmVudClcIiAobW9udGhTZWxlY3RlZCk9XCJjaG9zZW5Nb250aEhhbmRsZXIoJGV2ZW50LCBkYXRlcGlja2VyKVwiPjwvbWF0LWRhdGVwaWNrZXI+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uXCI+XHJcbiAgICA8aW5wdXQgY2xhc3M9XCJtYXQtYnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkYXRlcGlja2VyLm9wZW4oKVwiIFsobmdNb2RlbCldPVwiZGF0ZVZhbHVlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW21pbl09XCJtaW5EYXRlXCJcclxuICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJvbkNoYW5nZVZhbHVlKClcIiAoaW5wdXQpPVwib25JbnB1dERhdGUoJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlcGlja2VyXCIgI2lucHV0RGF0ZT5cclxuXHJcbiAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVwaWNrZXIgc3RhcnRWaWV3PVwibXVsdGkteWVhclwiICh5ZWFyU2VsZWN0ZWQpPVwiY2hvc2VuWWVhckhhbmRsZXIoJGV2ZW50KVwiIChtb250aFNlbGVjdGVkKT1cImNob3Nlbk1vbnRoSGFuZGxlcigkZXZlbnQsIGRhdGVwaWNrZXIpXCI+PC9tYXQtZGF0ZXBpY2tlcj5cclxuPC9uZy1jb250YWluZXI+Il19
@@ -0,0 +1,139 @@
1
+ import { Component, forwardRef, Input, SecurityContext, ViewChild } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { DomSanitizer } from '@angular/platform-browser';
4
+ import { AngularEditorComponent } from '@kolkov/angular-editor';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/platform-browser";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "@kolkov/angular-editor";
9
+ const _c0 = ["editor"];
10
+ export class InfoEditorComponent {
11
+ _sanitizer;
12
+ editor;
13
+ required = false;
14
+ enabledhtmlmode = false;
15
+ sanitize = true;
16
+ get disabled() { return !(this.editorConfig || {}).editable; }
17
+ set disabled(value) { this.editorConfig.editable = !value; }
18
+ get height() { return (this.editorConfig || {}).height; }
19
+ set height(value) { this.editorConfig.height = value || 'auto'; }
20
+ get minheight() { return (this.editorConfig || {}).minHeight; }
21
+ set minheight(value) { this.editorConfig.minHeight = value || '0'; }
22
+ get maxheight() { return (this.editorConfig || {}).maxHeight; }
23
+ set maxheight(value) { this.editorConfig.maxHeight = value || 'auto'; }
24
+ get width() { return (this.editorConfig || {}).width; }
25
+ set width(value) { this.editorConfig.width = value || 'auto'; }
26
+ get minwidth() { return (this.editorConfig || {}).minWidth; }
27
+ set minwidth(value) { this.editorConfig.minWidth = value || '0'; }
28
+ value = '';
29
+ onChange;
30
+ onTouched;
31
+ focused = false;
32
+ id = null;
33
+ editorConfig = {
34
+ editable: true,
35
+ spellcheck: true,
36
+ height: 'auto',
37
+ minHeight: '0',
38
+ maxHeight: 'auto',
39
+ width: 'auto',
40
+ minWidth: '0',
41
+ translate: 'yes',
42
+ enableToolbar: true,
43
+ showToolbar: true,
44
+ defaultParagraphSeparator: '',
45
+ toolbarPosition: 'top',
46
+ sanitize: false,
47
+ fonts: [
48
+ { class: 'arial', name: 'Arial' },
49
+ { class: 'times-new-roman', name: 'Times New Roman' },
50
+ { class: 'calibri', name: 'Calibri' },
51
+ { class: 'comic-sans-ms', name: 'Comic Sans MS' }
52
+ ],
53
+ };
54
+ constructor(_sanitizer) {
55
+ this._sanitizer = _sanitizer;
56
+ }
57
+ ngOnInit() {
58
+ this.id = `editor-${this.getGuid()}`;
59
+ }
60
+ ngAfterViewInit() {
61
+ var _this = this;
62
+ document.querySelector(`#${this.id} .angular-editor-textarea`).addEventListener('focus', () => _this.focused = true);
63
+ document.querySelector(`#${this.id} .angular-editor-textarea`).addEventListener('blur', () => _this.focused = false);
64
+ document.querySelector(`#${this.id} .angular-editor-textarea`).addEventListener('mouseout', () => _this.editor.editorToolbar['editorService'].saveSelection());
65
+ }
66
+ getGuid() {
67
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
68
+ const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
69
+ return v.toString(16);
70
+ });
71
+ }
72
+ onChangeValue() {
73
+ if (this.sanitize)
74
+ this.value = this._sanitizer.sanitize(SecurityContext.HTML, this.value);
75
+ if (this.onChange != null)
76
+ this.onChange(this.value);
77
+ }
78
+ writeValue(modelValue) {
79
+ this.value = this.sanitize ? this._sanitizer.sanitize(SecurityContext.HTML, modelValue) : modelValue;
80
+ this.onChangeValue();
81
+ }
82
+ registerOnChange(fn) {
83
+ this.onChange = fn;
84
+ }
85
+ registerOnTouched(fn) {
86
+ this.onTouched = fn;
87
+ }
88
+ setDisabledState(isDisabled) {
89
+ this.disabled = isDisabled;
90
+ }
91
+ /** @nocollapse */ static ɵfac = function InfoEditorComponent_Factory(t) { return new (t || InfoEditorComponent)(i0.ɵɵdirectiveInject(i1.DomSanitizer)); };
92
+ /** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoEditorComponent, selectors: [["info-editor"]], viewQuery: function InfoEditorComponent_Query(rf, ctx) { if (rf & 1) {
93
+ i0.ɵɵviewQuery(_c0, 5);
94
+ } if (rf & 2) {
95
+ let _t;
96
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.editor = _t.first);
97
+ } }, inputs: { required: "required", enabledhtmlmode: "enabledhtmlmode", sanitize: "sanitize", disabled: "disabled", height: "height", minheight: "minheight", maxheight: "maxheight", width: "width", minwidth: "minwidth" }, features: [i0.ɵɵProvidersFeature([{
98
+ provide: NG_VALUE_ACCESSOR,
99
+ useExisting: forwardRef((() => InfoEditorComponent)),
100
+ multi: true
101
+ }])], decls: 2, vars: 6, consts: [["name", "editor", 3, "ngModel", "config", "required", "ngModelChange"], ["editor", ""]], template: function InfoEditorComponent_Template(rf, ctx) { if (rf & 1) {
102
+ i0.ɵɵelementStart(0, "angular-editor", 0, 1);
103
+ i0.ɵɵlistener("ngModelChange", function InfoEditorComponent_Template_angular_editor_ngModelChange_0_listener($event) { return ctx.value = $event; })("ngModelChange", function InfoEditorComponent_Template_angular_editor_ngModelChange_0_listener() { return ctx.onChangeValue(); });
104
+ i0.ɵɵelementEnd();
105
+ } if (rf & 2) {
106
+ i0.ɵɵproperty("ngModel", ctx.value)("config", ctx.editorConfig)("required", ctx.required);
107
+ i0.ɵɵattribute("id", ctx.id)("focused", ctx.focused)("htmlmode", ctx.enabledhtmlmode);
108
+ } }, dependencies: [i2.NgControlStatus, i2.RequiredValidator, i2.NgModel, i3.AngularEditorComponent], styles: ["[_nghost-%COMP%] [htmlmode=false] .angular-editor-toolbar-set #toggleEditorMode-{display:none}[_nghost-%COMP%] .angular-editor-toolbar-set #insertVideo-{display:none}[_nghost-%COMP%] .angular-editor-textarea{outline:none;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:solid 1px!important}[_nghost-%COMP%] .angular-editor-textarea[contenteditable=false]{border-bottom:dotted 1.5px lightgray!important}[_nghost-%COMP%] .angular-editor-wrapper:after{content:\"\";position:absolute;left:0;width:100%;height:2px;bottom:0;transform-origin:50%;transform:scaleX(.5);opacity:0;background-color:#000;transition:background-color .3s cubic-bezier(.55,0,.55,.2)}[_nghost-%COMP%] [focused=true] .angular-editor-wrapper:after{opacity:1;transform:scaleX(1);transition:transform .3s cubic-bezier(.25,.8,.25,1),opacity .1s cubic-bezier(.25,.8,.25,1),background-color .3s cubic-bezier(.25,.8,.25,1)}[_nghost-%COMP%] .ng-touched.ng-invalid .angular-editor-wrapper:after{background-color:#f44336!important}[_nghost-%COMP%] .ng-touched.ng-invalid .angular-editor-textarea[contenteditable=true]{border-bottom-color:#f44336!important}"] });
109
+ }
110
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoEditorComponent, [{
111
+ type: Component,
112
+ args: [{ selector: 'info-editor', providers: [{
113
+ provide: NG_VALUE_ACCESSOR,
114
+ useExisting: forwardRef((() => InfoEditorComponent)),
115
+ multi: true
116
+ }], template: "<angular-editor [attr.id]=\"id\" [attr.focused]=\"focused\" [attr.htmlmode]=\"enabledhtmlmode\" [(ngModel)]=\"value\" name=\"editor\" [config]=\"editorConfig\" (ngModelChange)=\"onChangeValue()\" [required]=\"required\" #editor></angular-editor>\r\n", styles: [":host ::ng-deep [htmlmode=false] .angular-editor-toolbar-set #toggleEditorMode-{display:none}:host ::ng-deep .angular-editor-toolbar-set #insertVideo-{display:none}:host ::ng-deep .angular-editor-textarea{outline:none;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:solid 1px!important}:host ::ng-deep .angular-editor-textarea[contenteditable=false]{border-bottom:dotted 1.5px lightgray!important}:host ::ng-deep .angular-editor-wrapper:after{content:\"\";position:absolute;left:0;width:100%;height:2px;bottom:0;transform-origin:50%;transform:scaleX(.5);opacity:0;background-color:#000;transition:background-color .3s cubic-bezier(.55,0,.55,.2)}:host ::ng-deep [focused=true] .angular-editor-wrapper:after{opacity:1;transform:scaleX(1);transition:transform .3s cubic-bezier(.25,.8,.25,1),opacity .1s cubic-bezier(.25,.8,.25,1),background-color .3s cubic-bezier(.25,.8,.25,1)}:host ::ng-deep .ng-touched.ng-invalid .angular-editor-wrapper:after{background-color:#f44336!important}:host ::ng-deep .ng-touched.ng-invalid .angular-editor-textarea[contenteditable=true]{border-bottom-color:#f44336!important}\n"] }]
117
+ }], function () { return [{ type: i1.DomSanitizer }]; }, { editor: [{
118
+ type: ViewChild,
119
+ args: ['editor']
120
+ }], required: [{
121
+ type: Input
122
+ }], enabledhtmlmode: [{
123
+ type: Input
124
+ }], sanitize: [{
125
+ type: Input
126
+ }], disabled: [{
127
+ type: Input
128
+ }], height: [{
129
+ type: Input
130
+ }], minheight: [{
131
+ type: Input
132
+ }], maxheight: [{
133
+ type: Input
134
+ }], width: [{
135
+ type: Input
136
+ }], minwidth: [{
137
+ type: Input
138
+ }] }); })();
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvY29udHJvbHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQTZDLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQVkzRyxNQUFNLE9BQU8sbUJBQW1CO0lBNkRWO0lBM0RDLE1BQU0sQ0FBeUI7SUFFM0MsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixlQUFlLEdBQVksS0FBSyxDQUFDO0lBQ2pDLFFBQVEsR0FBWSxJQUFJLENBQUM7SUFFbEMsSUFDSSxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFNUQsSUFDSSxNQUFNLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN6RCxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFD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SyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIFNlY3VyaXR5Q29udGV4dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb21wb25lbnQsIEFuZ3VsYXJFZGl0b3JDb25maWcsIEFuZ3VsYXJFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnQGtvbGtvdi9hbmd1bGFyLWVkaXRvcic7XHJcbiBcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbmZvLWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbmZvRWRpdG9yQ29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicpIGVkaXRvcjogQW5ndWxhckVkaXRvckNvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBlbmFibGVkaHRtbG1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzYW5pdGl6ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCkgeyByZXR1cm4gISh0aGlzLmVkaXRvckNvbmZpZyB8fCB7fSkuZWRpdGFibGU7IH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWUpIHsgdGhpcy5lZGl0b3JDb25maWcuZWRpdGFibGUgPSAhdmFsdWU7IH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgaGVpZ2h0KCkgeyByZXR1cm4gKHRoaXMuZWRpdG9yQ29uZmlnIHx8IHt9KS5oZWlnaHQ7IH1cclxuICBzZXQgaGVpZ2h0KHZhbHVlKSB7IHRoaXMuZWRpdG9yQ29uZmlnLmhlaWdodCA9IHZhbHVlIHx8ICdhdXRvJzsgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBtaW5oZWlnaHQoKSB7IHJldHVybiAodGhpcy5lZGl0b3JDb25maWcgfHwge30pLm1pbkhlaWdodDsgfVxyXG4gIHNldCBtaW5oZWlnaHQodmFsdWUpIHsgdGhpcy5lZGl0b3JDb25maWcubWluSGVpZ2h0ID0gdmFsdWUgfHwgJzAnOyB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IG1heGhlaWdodCgpIHsgcmV0dXJuICh0aGlzLmVkaXRvckNvbmZpZyB8fCB7fSkubWF4SGVpZ2h0OyB9XHJcbiAgc2V0IG1heGhlaWdodCh2YWx1ZSkgeyB0aGlzLmVkaXRvckNvbmZpZy5tYXhIZWlnaHQgPSB2YWx1ZSB8fCAnYXV0byc7IH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgd2lkdGgoKSB7IHJldHVybiAodGhpcy5lZGl0b3JDb25maWcgfHwge30pLndpZHRoOyB9XHJcbiAgc2V0IHdpZHRoKHZhbHVlKSB7IHRoaXMuZWRpdG9yQ29uZmlnLndpZHRoID0gdmFsdWUgfHwgJ2F1dG8nOyB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IG1pbndpZHRoKCkgeyByZXR1cm4gKHRoaXMuZWRpdG9yQ29uZmlnIHx8IHt9KS5taW5XaWR0aDsgfVxyXG4gIHNldCBtaW53aWR0aCh2YWx1ZSkgeyB0aGlzLmVkaXRvckNvbmZpZy5taW5XaWR0aCA9IHZhbHVlIHx8ICcwJzsgfVxyXG5cclxuICB2YWx1ZTogYW55ID0gJyc7XHJcbiAgXHJcbiAgb25DaGFuZ2U6IGFueTtcclxuICBvblRvdWNoZWQ6IGFueTtcclxuICBmb2N1c2VkID0gZmFsc2U7XHJcbiAgaWQgPSBudWxsO1xyXG5cclxuICBlZGl0b3JDb25maWc6IEFuZ3VsYXJFZGl0b3JDb25maWcgPSB7XHJcbiAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgIHNwZWxsY2hlY2s6IHRydWUsXHJcbiAgICBoZWlnaHQ6ICdhdXRvJyxcclxuICAgIG1pbkhlaWdodDogJzAnLFxyXG4gICAgbWF4SGVpZ2h0OiAnYXV0bycsXHJcbiAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgbWluV2lkdGg6ICcwJyxcclxuICAgIHRyYW5zbGF0ZTogJ3llcycsXHJcbiAgICBlbmFibGVUb29sYmFyOiB0cnVlLFxyXG4gICAgc2hvd1Rvb2xiYXI6IHRydWUsXHJcbiAgICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICAgIHRvb2xiYXJQb3NpdGlvbjogJ3RvcCcsXHJcbiAgICBzYW5pdGl6ZTogZmFsc2UsXHJcbiAgICBmb250czogW1xyXG4gICAgICB7Y2xhc3M6ICdhcmlhbCcsIG5hbWU6ICdBcmlhbCd9LFxyXG4gICAgICB7Y2xhc3M6ICd0aW1lcy1uZXctcm9tYW4nLCBuYW1lOiAnVGltZXMgTmV3IFJvbWFuJ30sXHJcbiAgICAgIHtjbGFzczogJ2NhbGlicmknLCBuYW1lOiAnQ2FsaWJyaSd9LFxyXG4gICAgICB7Y2xhc3M6ICdjb21pYy1zYW5zLW1zJywgbmFtZTogJ0NvbWljIFNhbnMgTVMnfVxyXG4gICAgXSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmlkID0gYGVkaXRvci0ke3RoaXMuZ2V0R3VpZCgpfWA7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7dGhpcy5pZH0gLmFuZ3VsYXItZWRpdG9yLXRleHRhcmVhYCkuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiBfdGhpcy5mb2N1c2VkID0gdHJ1ZSk7XHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHt0aGlzLmlkfSAuYW5ndWxhci1lZGl0b3ItdGV4dGFyZWFgKS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4gX3RoaXMuZm9jdXNlZCA9IGZhbHNlKTtcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3RoaXMuaWR9IC5hbmd1bGFyLWVkaXRvci10ZXh0YXJlYWApLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgKCkgPT4gX3RoaXMuZWRpdG9yLmVkaXRvclRvb2xiYXJbJ2VkaXRvclNlcnZpY2UnXS5zYXZlU2VsZWN0aW9uKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRHdWlkKCkgOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xyXG4gICAgICAgIGNvbnN0IHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwLCB2ID0gYyA9PT0gJ3gnID8gciA6ICggciAmIDB4MyB8IDB4OCApO1xyXG4gICAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLnNhbml0aXplKVxyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5fc2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCB0aGlzLnZhbHVlKTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUobW9kZWxWYWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5zYW5pdGl6ZSA/IHRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgbW9kZWxWYWx1ZSkgOiBtb2RlbFZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgfVxyXG4gIFxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICBcclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBcclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbiAgXHJcbn0iLCI8YW5ndWxhci1lZGl0b3IgW2F0dHIuaWRdPVwiaWRcIiBbYXR0ci5mb2N1c2VkXT1cImZvY3VzZWRcIiBbYXR0ci5odG1sbW9kZV09XCJlbmFibGVkaHRtbG1vZGVcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgbmFtZT1cImVkaXRvclwiIFtjb25maWddPVwiZWRpdG9yQ29uZmlnXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VWYWx1ZSgpXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgI2VkaXRvcj48L2FuZ3VsYXItZWRpdG9yPlxyXG4iXX0=