@firestitch/form 14.0.2 → 16.0.0

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 (162) hide show
  1. package/app/components/confirm-unsaved/confirm-unsaved.component.d.ts +21 -21
  2. package/app/components/confirm-unsaved/index.d.ts +1 -1
  3. package/app/components/form-dialog-actions/form-dialog-actions.component.d.ts +22 -22
  4. package/app/components/form-dialog-actions/index.d.ts +1 -1
  5. package/app/components/form-template/form-template.component.d.ts +13 -13
  6. package/app/components/form-template/index.d.ts +1 -1
  7. package/app/components/form-template-outlet/form-template-outlet.component.d.ts +13 -13
  8. package/app/components/form-template-outlet/index.d.ts +1 -1
  9. package/app/components/index.d.ts +4 -4
  10. package/app/consts/error-messages.const.d.ts +21 -21
  11. package/app/directives/button.directive.d.ts +35 -35
  12. package/app/directives/form/form.directive.d.ts +122 -122
  13. package/app/directives/form/index.d.ts +1 -1
  14. package/app/directives/form-dialog-close.directive.d.ts +16 -16
  15. package/app/directives/form-template.directive.d.ts +10 -10
  16. package/app/directives/index.d.ts +6 -6
  17. package/app/directives/submit-button.directive.d.ts +6 -6
  18. package/app/directives/validators/compare.directive.d.ts +15 -15
  19. package/app/directives/validators/control.directive.d.ts +49 -49
  20. package/app/directives/validators/daterange.directive.d.ts +13 -13
  21. package/app/directives/validators/email.directive.d.ts +13 -13
  22. package/app/directives/validators/emails.directive.d.ts +13 -13
  23. package/app/directives/validators/function.directive.d.ts +15 -15
  24. package/app/directives/validators/greater-equal.directive.d.ts +13 -13
  25. package/app/directives/validators/greater.directive.d.ts +13 -13
  26. package/app/directives/validators/index.d.ts +22 -22
  27. package/app/directives/validators/integer.directive.d.ts +13 -13
  28. package/app/directives/validators/lesser-equal.directive.d.ts +13 -13
  29. package/app/directives/validators/lesser.directive.d.ts +13 -13
  30. package/app/directives/validators/max.directive.d.ts +13 -13
  31. package/app/directives/validators/maxlength.directive.d.ts +13 -13
  32. package/app/directives/validators/min.directive.d.ts +13 -13
  33. package/app/directives/validators/minlength.directive.d.ts +13 -13
  34. package/app/directives/validators/no-fs-validators.directive.d.ts +14 -14
  35. package/app/directives/validators/numeric.directive.d.ts +13 -13
  36. package/app/directives/validators/pattern.directive.d.ts +13 -13
  37. package/app/directives/validators/phone.directive.d.ts +13 -13
  38. package/app/directives/validators/required.directive.d.ts +16 -16
  39. package/app/directives/validators/url.directive.d.ts +14 -14
  40. package/app/directives/validators/validate.directive.d.ts +15 -15
  41. package/app/enums/confirm-result.d.ts +7 -7
  42. package/app/enums/form-status.d.ts +10 -10
  43. package/app/enums/index.d.ts +2 -2
  44. package/app/fs-form.module.d.ts +44 -44
  45. package/app/guards/form-deactivate.guard.d.ts +12 -12
  46. package/app/helpers/confirm-result-continue.d.ts +1 -1
  47. package/app/helpers/get-active-route.d.ts +2 -2
  48. package/app/helpers/get-form-errors.d.ts +2 -2
  49. package/app/helpers/index.d.ts +1 -1
  50. package/app/helpers/is-enabled.d.ts +1 -1
  51. package/app/interfaces/async-validator.d.ts +14 -14
  52. package/app/interfaces/confirm-config.d.ts +7 -7
  53. package/app/interfaces/confirm-tab-group.d.ts +10 -10
  54. package/app/interfaces/index.d.ts +4 -4
  55. package/app/interfaces/submit-event.d.ts +6 -6
  56. package/app/interfaces/submitted-event.d.ts +7 -7
  57. package/app/interfaces/validator.d.ts +13 -13
  58. package/app/providers/validate-messages.provider.d.ts +27 -27
  59. package/app/services/fsform.service.d.ts +20 -20
  60. package/app/validators/validators.d.ts +12 -12
  61. package/esm2022/app/components/confirm-unsaved/confirm-unsaved.component.mjs +51 -0
  62. package/{esm2020 → esm2022}/app/components/confirm-unsaved/index.mjs +1 -1
  63. package/esm2022/app/components/form-dialog-actions/form-dialog-actions.component.mjs +79 -0
  64. package/{esm2020 → esm2022}/app/components/form-dialog-actions/index.mjs +1 -1
  65. package/esm2022/app/components/form-template/form-template.component.mjs +34 -0
  66. package/{esm2020 → esm2022}/app/components/form-template/index.mjs +2 -2
  67. package/esm2022/app/components/form-template-outlet/form-template-outlet.component.mjs +32 -0
  68. package/{esm2020 → esm2022}/app/components/form-template-outlet/index.mjs +2 -2
  69. package/{esm2020 → esm2022}/app/components/index.mjs +4 -4
  70. package/{esm2020 → esm2022}/app/consts/error-messages.const.mjs +21 -21
  71. package/esm2022/app/directives/button.directive.mjs +172 -0
  72. package/esm2022/app/directives/form/form.directive.mjs +702 -0
  73. package/{esm2020 → esm2022}/app/directives/form/index.mjs +1 -1
  74. package/esm2022/app/directives/form-dialog-close.directive.mjs +57 -0
  75. package/esm2022/app/directives/form-template.directive.mjs +21 -0
  76. package/{esm2020 → esm2022}/app/directives/index.mjs +6 -6
  77. package/{esm2020 → esm2022}/app/directives/submit-button.directive.mjs +14 -14
  78. package/esm2022/app/directives/validators/compare.directive.mjs +48 -0
  79. package/esm2022/app/directives/validators/control.directive.mjs +269 -0
  80. package/esm2022/app/directives/validators/daterange.directive.mjs +42 -0
  81. package/esm2022/app/directives/validators/email.directive.mjs +42 -0
  82. package/esm2022/app/directives/validators/emails.directive.mjs +42 -0
  83. package/esm2022/app/directives/validators/function.directive.mjs +40 -0
  84. package/esm2022/app/directives/validators/greater-equal.directive.mjs +41 -0
  85. package/esm2022/app/directives/validators/greater.directive.mjs +41 -0
  86. package/{esm2020 → esm2022}/app/directives/validators/index.mjs +22 -22
  87. package/esm2022/app/directives/validators/integer.directive.mjs +40 -0
  88. package/esm2022/app/directives/validators/lesser-equal.directive.mjs +41 -0
  89. package/esm2022/app/directives/validators/lesser.directive.mjs +41 -0
  90. package/esm2022/app/directives/validators/max.directive.mjs +37 -0
  91. package/esm2022/app/directives/validators/maxlength.directive.mjs +36 -0
  92. package/esm2022/app/directives/validators/min.directive.mjs +37 -0
  93. package/esm2022/app/directives/validators/minlength.directive.mjs +36 -0
  94. package/{esm2020 → esm2022}/app/directives/validators/no-fs-validators.directive.mjs +53 -53
  95. package/esm2022/app/directives/validators/numeric.directive.mjs +42 -0
  96. package/esm2022/app/directives/validators/pattern.directive.mjs +36 -0
  97. package/esm2022/app/directives/validators/phone.directive.mjs +42 -0
  98. package/esm2022/app/directives/validators/required.directive.mjs +66 -0
  99. package/esm2022/app/directives/validators/url.directive.mjs +43 -0
  100. package/esm2022/app/directives/validators/validate.directive.mjs +42 -0
  101. package/{esm2020 → esm2022}/app/enums/confirm-result.mjs +8 -8
  102. package/{esm2020 → esm2022}/app/enums/form-status.mjs +11 -11
  103. package/{esm2020 → esm2022}/app/enums/index.mjs +2 -2
  104. package/esm2022/app/fs-form.module.mjs +209 -0
  105. package/esm2022/app/guards/form-deactivate.guard.mjs +44 -0
  106. package/{esm2020 → esm2022}/app/helpers/confirm-result-continue.mjs +4 -4
  107. package/{esm2020 → esm2022}/app/helpers/get-active-route.mjs +6 -6
  108. package/{esm2020 → esm2022}/app/helpers/get-form-errors.mjs +24 -24
  109. package/{esm2020 → esm2022}/app/helpers/index.mjs +1 -1
  110. package/{esm2020 → esm2022}/app/helpers/is-enabled.mjs +3 -3
  111. package/{esm2020 → esm2022}/app/interfaces/async-validator.mjs +1 -1
  112. package/{esm2020 → esm2022}/app/interfaces/confirm-config.mjs +1 -1
  113. package/{esm2020 → esm2022}/app/interfaces/confirm-tab-group.mjs +1 -1
  114. package/{esm2020 → esm2022}/app/interfaces/index.mjs +4 -4
  115. package/{esm2020 → esm2022}/app/interfaces/submit-event.mjs +1 -1
  116. package/{esm2020 → esm2022}/app/interfaces/submitted-event.mjs +1 -1
  117. package/{esm2020 → esm2022}/app/interfaces/validator.mjs +1 -1
  118. package/{esm2020 → esm2022}/app/providers/validate-messages.provider.mjs +10 -10
  119. package/esm2022/app/services/fsform.service.mjs +94 -0
  120. package/{esm2020 → esm2022}/app/validators/validators.mjs +92 -92
  121. package/{esm2020 → esm2022}/firestitch-form.mjs +4 -4
  122. package/{esm2020 → esm2022}/public_api.mjs +36 -36
  123. package/{fesm2020 → fesm2022}/firestitch-form.mjs +2497 -2434
  124. package/fesm2022/firestitch-form.mjs.map +1 -0
  125. package/index.d.ts +5 -5
  126. package/package.json +5 -11
  127. package/public_api.d.ts +34 -34
  128. package/esm2020/app/components/confirm-unsaved/confirm-unsaved.component.mjs +0 -44
  129. package/esm2020/app/components/form-dialog-actions/form-dialog-actions.component.mjs +0 -75
  130. package/esm2020/app/components/form-template/form-template.component.mjs +0 -31
  131. package/esm2020/app/components/form-template-outlet/form-template-outlet.component.mjs +0 -30
  132. package/esm2020/app/directives/button.directive.mjs +0 -166
  133. package/esm2020/app/directives/form/form.directive.mjs +0 -689
  134. package/esm2020/app/directives/form-dialog-close.directive.mjs +0 -54
  135. package/esm2020/app/directives/form-template.directive.mjs +0 -20
  136. package/esm2020/app/directives/validators/compare.directive.mjs +0 -47
  137. package/esm2020/app/directives/validators/control.directive.mjs +0 -258
  138. package/esm2020/app/directives/validators/daterange.directive.mjs +0 -41
  139. package/esm2020/app/directives/validators/email.directive.mjs +0 -41
  140. package/esm2020/app/directives/validators/emails.directive.mjs +0 -41
  141. package/esm2020/app/directives/validators/function.directive.mjs +0 -41
  142. package/esm2020/app/directives/validators/greater-equal.directive.mjs +0 -40
  143. package/esm2020/app/directives/validators/greater.directive.mjs +0 -40
  144. package/esm2020/app/directives/validators/integer.directive.mjs +0 -39
  145. package/esm2020/app/directives/validators/lesser-equal.directive.mjs +0 -40
  146. package/esm2020/app/directives/validators/lesser.directive.mjs +0 -40
  147. package/esm2020/app/directives/validators/max.directive.mjs +0 -36
  148. package/esm2020/app/directives/validators/maxlength.directive.mjs +0 -35
  149. package/esm2020/app/directives/validators/min.directive.mjs +0 -36
  150. package/esm2020/app/directives/validators/minlength.directive.mjs +0 -35
  151. package/esm2020/app/directives/validators/numeric.directive.mjs +0 -41
  152. package/esm2020/app/directives/validators/pattern.directive.mjs +0 -35
  153. package/esm2020/app/directives/validators/phone.directive.mjs +0 -41
  154. package/esm2020/app/directives/validators/required.directive.mjs +0 -69
  155. package/esm2020/app/directives/validators/url.directive.mjs +0 -45
  156. package/esm2020/app/directives/validators/validate.directive.mjs +0 -43
  157. package/esm2020/app/fs-form.module.mjs +0 -209
  158. package/esm2020/app/guards/form-deactivate.guard.mjs +0 -42
  159. package/esm2020/app/services/fsform.service.mjs +0 -92
  160. package/fesm2015/firestitch-form.mjs +0 -2579
  161. package/fesm2015/firestitch-form.mjs.map +0 -1
  162. package/fesm2020/firestitch-form.mjs.map +0 -1
@@ -0,0 +1,209 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';
6
+ import { MatDialogModule } from '@angular/material/dialog';
7
+ import { FsDialogModule } from '@firestitch/dialog';
8
+ import { ConfirmUnsavedComponent, FsFormDialogActionsComponent, FsFormTemplateComponent, FsFormTemplateOutletComponent, } from './components';
9
+ import { FsFormGreaterEqualDirective, FsFormLesserEqualDirective, FsFormTemplateDirective, FsSubmitButtonDirective, } from './directives';
10
+ import { FsButtonDirective } from './directives/button.directive';
11
+ import { FsFormDialogCloseDirective } from './directives/form-dialog-close.directive';
12
+ import { FsFormDirective } from './directives/form/form.directive';
13
+ import { FsFormCompareDirective } from './directives/validators/compare.directive';
14
+ import { FsControlDirective } from './directives/validators/control.directive';
15
+ import { FsFormDateRangeDirective } from './directives/validators/daterange.directive';
16
+ import { FsFormEmailDirective } from './directives/validators/email.directive';
17
+ import { FsFormEmailsDirective } from './directives/validators/emails.directive';
18
+ import { FsFormFunctionDirective } from './directives/validators/function.directive';
19
+ import { FsFormGreaterDirective } from './directives/validators/greater.directive';
20
+ import { FsFormIntegerDirective } from './directives/validators/integer.directive';
21
+ import { FsFormLesserDirective } from './directives/validators/lesser.directive';
22
+ import { FsFormMaxDirective } from './directives/validators/max.directive';
23
+ import { FsFormMaxLengthDirective } from './directives/validators/maxlength.directive';
24
+ import { FsFormMinDirective } from './directives/validators/min.directive';
25
+ import { FsFormMinLengthDirective } from './directives/validators/minlength.directive';
26
+ import { FsFormNoFsValidatorsDirective } from './directives/validators/no-fs-validators.directive';
27
+ import { FsFormNumericDirective } from './directives/validators/numeric.directive';
28
+ import { FsFormPatternDirective } from './directives/validators/pattern.directive';
29
+ import { FsFormPhoneDirective } from './directives/validators/phone.directive';
30
+ import { FsFormRequiredDirective } from './directives/validators/required.directive';
31
+ import { FsFormUrlDirective } from './directives/validators/url.directive';
32
+ import { FsFormValidateDirective } from './directives/validators/validate.directive';
33
+ import * as i0 from "@angular/core";
34
+ export class FsFormModule {
35
+ static forRoot() {
36
+ /**
37
+ * Hack: https://github.com/angular/components/issues/20097
38
+ */
39
+ ErrorStateMatcher.prototype
40
+ .isErrorState = (control, form) => {
41
+ return control?.invalid && control?.touched && control?.dirty;
42
+ };
43
+ return {
44
+ ngModule: FsFormModule,
45
+ };
46
+ }
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
48
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FsFormModule, declarations: [FsFormDirective,
49
+ FsControlDirective,
50
+ FsFormRequiredDirective,
51
+ FsFormMinDirective,
52
+ FsFormMaxDirective,
53
+ FsFormMinLengthDirective,
54
+ FsFormMaxLengthDirective,
55
+ FsFormEmailDirective,
56
+ FsFormEmailsDirective,
57
+ FsFormPhoneDirective,
58
+ FsFormCompareDirective,
59
+ FsFormIntegerDirective,
60
+ FsFormNumericDirective,
61
+ FsFormPatternDirective,
62
+ FsFormFunctionDirective,
63
+ FsFormDateRangeDirective,
64
+ FsFormGreaterDirective,
65
+ FsFormGreaterEqualDirective,
66
+ FsFormLesserDirective,
67
+ FsFormLesserEqualDirective,
68
+ FsFormUrlDirective,
69
+ FsFormDialogCloseDirective,
70
+ FsFormValidateDirective,
71
+ FsFormDialogActionsComponent,
72
+ FsFormNoFsValidatorsDirective,
73
+ FsButtonDirective,
74
+ FsSubmitButtonDirective,
75
+ FsFormTemplateComponent,
76
+ FsFormTemplateDirective,
77
+ FsFormTemplateOutletComponent,
78
+ ConfirmUnsavedComponent], imports: [CommonModule,
79
+ FormsModule,
80
+ MatButtonModule,
81
+ MatDialogModule,
82
+ MatDialogModule,
83
+ FsDialogModule], exports: [FsFormDirective,
84
+ FsControlDirective,
85
+ FsFormRequiredDirective,
86
+ FsFormMinDirective,
87
+ FsFormMaxDirective,
88
+ FsFormMinLengthDirective,
89
+ FsFormMaxLengthDirective,
90
+ FsFormEmailDirective,
91
+ FsFormEmailsDirective,
92
+ FsFormPhoneDirective,
93
+ FsFormCompareDirective,
94
+ FsFormIntegerDirective,
95
+ FsFormNumericDirective,
96
+ FsFormPatternDirective,
97
+ FsFormFunctionDirective,
98
+ FsFormDateRangeDirective,
99
+ FsFormGreaterDirective,
100
+ FsFormGreaterEqualDirective,
101
+ FsFormLesserDirective,
102
+ FsFormLesserEqualDirective,
103
+ FsFormUrlDirective,
104
+ FsFormDialogCloseDirective,
105
+ FsFormValidateDirective,
106
+ FsFormDialogActionsComponent,
107
+ FsFormNoFsValidatorsDirective,
108
+ FsButtonDirective,
109
+ FsSubmitButtonDirective,
110
+ FsFormTemplateComponent,
111
+ FsFormTemplateDirective,
112
+ FsFormTemplateOutletComponent] });
113
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormModule, providers: [
114
+ {
115
+ provide: ErrorStateMatcher,
116
+ useClass: ShowOnDirtyErrorStateMatcher,
117
+ },
118
+ ], imports: [CommonModule,
119
+ FormsModule,
120
+ MatButtonModule,
121
+ MatDialogModule,
122
+ MatDialogModule,
123
+ FsDialogModule] });
124
+ }
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormModule, decorators: [{
126
+ type: NgModule,
127
+ args: [{
128
+ imports: [
129
+ CommonModule,
130
+ FormsModule,
131
+ MatButtonModule,
132
+ MatDialogModule,
133
+ MatDialogModule,
134
+ FsDialogModule,
135
+ ],
136
+ declarations: [
137
+ FsFormDirective,
138
+ FsControlDirective,
139
+ FsFormRequiredDirective,
140
+ FsFormMinDirective,
141
+ FsFormMaxDirective,
142
+ FsFormMinLengthDirective,
143
+ FsFormMaxLengthDirective,
144
+ FsFormEmailDirective,
145
+ FsFormEmailsDirective,
146
+ FsFormPhoneDirective,
147
+ FsFormCompareDirective,
148
+ FsFormIntegerDirective,
149
+ FsFormNumericDirective,
150
+ FsFormPatternDirective,
151
+ FsFormFunctionDirective,
152
+ FsFormDateRangeDirective,
153
+ FsFormGreaterDirective,
154
+ FsFormGreaterEqualDirective,
155
+ FsFormLesserDirective,
156
+ FsFormLesserEqualDirective,
157
+ FsFormUrlDirective,
158
+ FsFormDialogCloseDirective,
159
+ FsFormValidateDirective,
160
+ FsFormDialogActionsComponent,
161
+ FsFormNoFsValidatorsDirective,
162
+ FsButtonDirective,
163
+ FsSubmitButtonDirective,
164
+ FsFormTemplateComponent,
165
+ FsFormTemplateDirective,
166
+ FsFormTemplateOutletComponent,
167
+ ConfirmUnsavedComponent,
168
+ ],
169
+ exports: [
170
+ FsFormDirective,
171
+ FsControlDirective,
172
+ FsFormRequiredDirective,
173
+ FsFormMinDirective,
174
+ FsFormMaxDirective,
175
+ FsFormMinLengthDirective,
176
+ FsFormMaxLengthDirective,
177
+ FsFormEmailDirective,
178
+ FsFormEmailsDirective,
179
+ FsFormPhoneDirective,
180
+ FsFormCompareDirective,
181
+ FsFormIntegerDirective,
182
+ FsFormNumericDirective,
183
+ FsFormPatternDirective,
184
+ FsFormFunctionDirective,
185
+ FsFormDateRangeDirective,
186
+ FsFormGreaterDirective,
187
+ FsFormGreaterEqualDirective,
188
+ FsFormLesserDirective,
189
+ FsFormLesserEqualDirective,
190
+ FsFormUrlDirective,
191
+ FsFormDialogCloseDirective,
192
+ FsFormValidateDirective,
193
+ FsFormDialogActionsComponent,
194
+ FsFormNoFsValidatorsDirective,
195
+ FsButtonDirective,
196
+ FsSubmitButtonDirective,
197
+ FsFormTemplateComponent,
198
+ FsFormTemplateDirective,
199
+ FsFormTemplateOutletComponent,
200
+ ],
201
+ providers: [
202
+ {
203
+ provide: ErrorStateMatcher,
204
+ useClass: ShowOnDirtyErrorStateMatcher,
205
+ },
206
+ ],
207
+ }]
208
+ }] });
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2ZzLWZvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQTBDLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBRTdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFDTCx1QkFBdUIsRUFBRSw0QkFBNEIsRUFDckQsdUJBQXVCLEVBQUUsNkJBQTZCLEdBQ3ZELE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCwyQkFBMkIsRUFBRSwwQkFBMEIsRUFDdkQsdUJBQXVCLEVBQUUsdUJBQXVCLEdBQ2pELE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUs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d0JBQ3hCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0QixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsa0JBQWtCO3dCQUNsQiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsNkJBQTZCO3FCQUM5QjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLDRCQUE0Qjt5QkFDdkM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBGb3Jtc01vZHVsZSwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIsIFNob3dPbkRpcnR5RXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGlhbG9nJztcblxuaW1wb3J0IHtcbiAgQ29uZmlybVVuc2F2ZWRDb21wb25lbnQsIEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQsXG4gIEZzRm9ybVRlbXBsYXRlQ29tcG9uZW50LCBGc0Zvcm1UZW1wbGF0ZU91dGxldENvbXBvbmVudCxcbn0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEZzRm9ybUdyZWF0ZXJFcXVhbERpcmVjdGl2ZSwgRnNGb3JtTGVzc2VyRXF1YWxEaXJlY3RpdmUsXG4gIEZzRm9ybVRlbXBsYXRlRGlyZWN0aXZlLCBGc1N1Ym1pdEJ1dHRvbkRpcmVjdGl2ZSxcbn0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEZzQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtRGlhbG9nQ2xvc2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZm9ybS1kaWFsb2ctY2xvc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9mb3JtL2Zvcm0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybUNvbXBhcmVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb21wYXJlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0NvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1EYXRlUmFuZ2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9kYXRlcmFuZ2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybUVtYWlsRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvZW1haWwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybUVtYWlsc0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL2VtYWlscy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtRnVuY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9mdW5jdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtR3JlYXRlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL2dyZWF0ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybUludGVnZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9pbnRlZ2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1MZXNzZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9sZXNzZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybU1heERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL21heC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtTWF4TGVuZ3RoRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbWF4bGVuZ3RoLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1NaW5EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9taW4uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybU1pbkxlbmd0aERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL21pbmxlbmd0aC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtTm9Gc1ZhbGlkYXRvcnNEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9uby1mcy12YWxpZGF0b3JzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1OdW1lcmljRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbnVtZXJpYy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtUGF0dGVybkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL3BhdHRlcm4uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybVBob25lRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvcGhvbmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybVJlcXVpcmVkRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvcmVxdWlyZWQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybVVybERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL3VybC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtVmFsaWRhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy92YWxpZGF0ZS5kaXJlY3RpdmUnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG5cbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcblxuICAgIEZzRGlhbG9nTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGc0Zvcm1EaXJlY3RpdmUsXG4gICAgRnNDb250cm9sRGlyZWN0aXZlLFxuICAgIEZzRm9ybVJlcXVpcmVkRGlyZWN0aXZlLFxuICAgIEZzRm9ybU1pbkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1NYXhEaXJlY3RpdmUsXG4gICAgRnNGb3JtTWluTGVuZ3RoRGlyZWN0aXZlLFxuICAgIEZzRm9ybU1heExlbmd0aERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1FbWFpbERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1FbWFpbHNEaXJlY3RpdmUsXG4gICAgRnNGb3JtUGhvbmVEaXJlY3RpdmUsXG4gICAgRnNGb3JtQ29tcGFyZURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1JbnRlZ2VyRGlyZWN0aXZlLFxuICAgIEZzRm9ybU51bWVyaWNEaXJlY3RpdmUsXG4gICAgRnNGb3JtUGF0dGVybkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1GdW5jdGlvbkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1EYXRlUmFuZ2VEaXJlY3RpdmUsXG4gICAgRnNGb3JtR3JlYXRlckRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1HcmVhdGVyRXF1YWxEaXJlY3RpdmUsXG4gICAgRnNGb3JtTGVzc2VyRGlyZWN0aXZlLFxuICAgIEZzRm9ybUxlc3NlckVxdWFsRGlyZWN0aXZlLFxuICAgIEZzRm9ybVVybERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1WYWxpZGF0ZURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1EaWFsb2dBY3Rpb25zQ29tcG9uZW50LFxuICAgIEZzRm9ybU5vRnNWYWxpZGF0b3JzRGlyZWN0aXZlLFxuICAgIEZzQnV0dG9uRGlyZWN0aXZlLFxuICAgIEZzU3VibWl0QnV0dG9uRGlyZWN0aXZlLFxuICAgIEZzRm9ybVRlbXBsYXRlQ29tcG9uZW50LFxuICAgIEZzRm9ybVRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIEZzRm9ybVRlbXBsYXRlT3V0bGV0Q29tcG9uZW50LFxuICAgIENvbmZpcm1VbnNhdmVkQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRnNGb3JtRGlyZWN0aXZlLFxuICAgIEZzQ29udHJvbERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1SZXF1aXJlZERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1NaW5EaXJlY3RpdmUsXG4gICAgRnNGb3JtTWF4RGlyZWN0aXZlLFxuICAgIEZzRm9ybU1pbkxlbmd0aERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1NYXhMZW5ndGhEaXJlY3RpdmUsXG4gICAgRnNGb3JtRW1haWxEaXJlY3RpdmUsXG4gICAgRnNGb3JtRW1haWxzRGlyZWN0aXZlLFxuICAgIEZzRm9ybVBob25lRGlyZWN0aXZlLFxuICAgIEZzRm9ybUNvbXBhcmVEaXJlY3RpdmUsXG4gICAgRnNGb3JtSW50ZWdlckRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1OdW1lcmljRGlyZWN0aXZlLFxuICAgIEZzRm9ybVBhdHRlcm5EaXJlY3RpdmUsXG4gICAgRnNGb3JtRnVuY3Rpb25EaXJlY3RpdmUsXG4gICAgRnNGb3JtRGF0ZVJhbmdlRGlyZWN0aXZlLFxuICAgIEZzRm9ybUdyZWF0ZXJEaXJlY3RpdmUsXG4gICAgRnNGb3JtR3JlYXRlckVxdWFsRGlyZWN0aXZlLFxuICAgIEZzRm9ybUxlc3NlckRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1MZXNzZXJFcXVhbERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1VcmxEaXJlY3RpdmUsXG4gICAgRnNGb3JtRGlhbG9nQ2xvc2VEaXJlY3RpdmUsXG4gICAgRnNGb3JtVmFsaWRhdGVEaXJlY3RpdmUsXG4gICAgRnNGb3JtRGlhbG9nQWN0aW9uc0NvbXBvbmVudCxcbiAgICBGc0Zvcm1Ob0ZzVmFsaWRhdG9yc0RpcmVjdGl2ZSxcbiAgICBGc0J1dHRvbkRpcmVjdGl2ZSxcbiAgICBGc1N1Ym1pdEJ1dHRvbkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1UZW1wbGF0ZUNvbXBvbmVudCxcbiAgICBGc0Zvcm1UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1UZW1wbGF0ZU91dGxldENvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICB1c2VDbGFzczogU2hvd09uRGlydHlFcnJvclN0YXRlTWF0Y2hlcixcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0Zvcm1Nb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGc0Zvcm1Nb2R1bGU+IHtcblxuICAgIC8qKlxuICAgICAqIEhhY2s6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIwMDk3XG4gICAgICovXG4gICAgRXJyb3JTdGF0ZU1hdGNoZXIucHJvdG90eXBlXG4gICAgICAuaXNFcnJvclN0YXRlID0gKFxuICAgICAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgfCBudWxsLCBcbiAgICAgICAgZm9ybTogRm9ybUdyb3VwRGlyZWN0aXZlIHwgTmdGb3JtIHwgbnVsbCxcbiAgICAgICk6IGJvb2xlYW4gPT4ge1xuICAgICAgICByZXR1cm4gY29udHJvbD8uaW52YWxpZCAmJiBjb250cm9sPy50b3VjaGVkICYmIGNvbnRyb2w/LmRpcnR5O1xuICAgICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRnNGb3JtTW9kdWxlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ActivatedRoute } from '@angular/router';
3
+ import { of } from 'rxjs';
4
+ import { map } from 'rxjs/operators';
5
+ import { confirmResultContinue } from '../helpers';
6
+ import { getActiveRoute } from '../helpers/get-active-route';
7
+ import { FsForm } from '../services/fsform.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../services/fsform.service";
10
+ import * as i2 from "@angular/router";
11
+ export class FormDeactivateGuard {
12
+ _form;
13
+ _route;
14
+ constructor(_form, _route) {
15
+ this._form = _form;
16
+ this._route = _route;
17
+ }
18
+ canDeactivate() {
19
+ const route = getActiveRoute(this._route);
20
+ if (!route) {
21
+ console.error('Can not find route for FormDeactivateGuard checks');
22
+ return of(true);
23
+ }
24
+ const directives = this._form
25
+ .getFormDirectives(route.routeConfig.component);
26
+ if (!Array.isArray(directives) || directives.length === 0) {
27
+ console.error('Can not find a valid FsFormDirective');
28
+ return of(true);
29
+ }
30
+ return this._form.confirmUnsaved(directives)
31
+ .pipe(map((result) => {
32
+ return confirmResultContinue(result);
33
+ }));
34
+ }
35
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormDeactivateGuard, deps: [{ token: i1.FsForm }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
36
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormDeactivateGuard, providedIn: 'root' });
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormDeactivateGuard, decorators: [{
39
+ type: Injectable,
40
+ args: [{
41
+ providedIn: 'root',
42
+ }]
43
+ }], ctorParameters: function () { return [{ type: i1.FsForm }, { type: i2.ActivatedRoute }]; } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kZWFjdGl2YXRlLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9ndWFyZHMvZm9ybS1kZWFjdGl2YXRlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2pELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBTXBELE1BQU0sT0FBTyxtQkFBbUI7SUFHcEI7SUFDQTtJQUZWLFlBQ1UsS0FBYSxFQUNiLE1BQXNCO1FBRHRCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixXQUFNLEdBQU4sTUFBTSxDQUFnQjtJQUM3QixDQUFDO0lBRUcsYUFBYTtRQUNsQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7WUFFbkUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7UUFFRCxNQUFNLFVBQVUsR0FBc0IsSUFBSSxDQUFDLEtBQUs7YUFDN0MsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN6RCxPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFFdEQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQzthQUN6QyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDYixPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO3dHQS9CVSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBjb25maXJtUmVzdWx0Q29udGludWUgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IGdldEFjdGl2ZVJvdXRlIH0gZnJvbSAnLi4vaGVscGVycy9nZXQtYWN0aXZlLXJvdXRlJztcbmltcG9ydCB7IEZzRm9ybSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZzZm9ybS5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybURlYWN0aXZhdGVHdWFyZCAge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2Zvcm06IEZzRm9ybSxcbiAgICBwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge31cblxuICBwdWJsaWMgY2FuRGVhY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByb3V0ZSA9IGdldEFjdGl2ZVJvdXRlKHRoaXMuX3JvdXRlKTtcblxuICAgIGlmICghcm91dGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NhbiBub3QgZmluZCByb3V0ZSBmb3IgRm9ybURlYWN0aXZhdGVHdWFyZCBjaGVja3MnKTtcblxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGRpcmVjdGl2ZXM6IEZzRm9ybURpcmVjdGl2ZVtdID0gdGhpcy5fZm9ybVxuICAgICAgLmdldEZvcm1EaXJlY3RpdmVzKHJvdXRlLnJvdXRlQ29uZmlnLmNvbXBvbmVudCk7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGlyZWN0aXZlcykgfHwgZGlyZWN0aXZlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NhbiBub3QgZmluZCBhIHZhbGlkIEZzRm9ybURpcmVjdGl2ZScpO1xuXG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm0uY29uZmlybVVuc2F2ZWQoZGlyZWN0aXZlcylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb25maXJtUmVzdWx0Q29udGludWUocmVzdWx0KTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
- import { ConfirmResult } from '../enums/confirm-result';
2
- export function confirmResultContinue(result) {
3
- return result === ConfirmResult.Discard || result === ConfirmResult.Save || result === ConfirmResult.Pristine;
4
- }
1
+ import { ConfirmResult } from '../enums/confirm-result';
2
+ export function confirmResultContinue(result) {
3
+ return result === ConfirmResult.Discard || result === ConfirmResult.Save || result === ConfirmResult.Pristine;
4
+ }
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1yZXN1bHQtY29udGludWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2hlbHBlcnMvY29uZmlybS1yZXN1bHQtY29udGludWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxNQUFNO0lBQzFDLE9BQU8sTUFBTSxLQUFLLGFBQWEsQ0FBQyxPQUFPLElBQUksTUFBTSxLQUFLLGFBQWEsQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLGFBQWEsQ0FBQyxRQUFRLENBQUM7QUFDaEgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpcm1SZXN1bHQgfSBmcm9tICcuLi9lbnVtcy9jb25maXJtLXJlc3VsdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maXJtUmVzdWx0Q29udGludWUocmVzdWx0KSB7XG4gIHJldHVybiByZXN1bHQgPT09IENvbmZpcm1SZXN1bHQuRGlzY2FyZCB8fCByZXN1bHQgPT09IENvbmZpcm1SZXN1bHQuU2F2ZSB8fCByZXN1bHQgPT09IENvbmZpcm1SZXN1bHQuUHJpc3RpbmU7XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
- export function getActiveRoute(route) {
2
- while (route.firstChild) {
3
- route = route.firstChild;
4
- }
5
- return route;
6
- }
1
+ export function getActiveRoute(route) {
2
+ while (route.firstChild) {
3
+ route = route.firstChild;
4
+ }
5
+ return route;
6
+ }
7
7
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFjdGl2ZS1yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvaGVscGVycy9nZXQtYWN0aXZlLXJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBcUI7SUFDbEQsT0FBTyxLQUFLLENBQUMsVUFBVSxFQUFFO1FBQ3ZCLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO0tBQzFCO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3RpdmVSb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBBY3RpdmF0ZWRSb3V0ZSB7XG4gIHdoaWxlIChyb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgcm91dGUgPSByb3V0ZS5maXJzdENoaWxkO1xuICB9XG5cbiAgcmV0dXJuIHJvdXRlO1xufVxuIl19
@@ -1,25 +1,25 @@
1
- import { UntypedFormGroup } from '@angular/forms';
2
- export function getFormErrors(control, key) {
3
- let errors = null;
4
- if (control.invalid && control.errors) {
5
- errors = {
6
- [key]: { ...control.errors },
7
- };
8
- }
9
- if (control instanceof UntypedFormGroup) {
10
- Object.entries(control.controls)
11
- .forEach(([name, childControl]) => {
12
- const childErrors = getFormErrors(childControl, name);
13
- if (childErrors) {
14
- if (!errors) {
15
- errors = { ...childErrors };
16
- }
17
- else {
18
- Object.assign(errors, childErrors);
19
- }
20
- }
21
- });
22
- }
23
- return errors;
24
- }
1
+ import { UntypedFormGroup } from '@angular/forms';
2
+ export function getFormErrors(control, key) {
3
+ let errors = null;
4
+ if (control.invalid && control.errors) {
5
+ errors = {
6
+ [key]: { ...control.errors },
7
+ };
8
+ }
9
+ if (control instanceof UntypedFormGroup) {
10
+ Object.entries(control.controls)
11
+ .forEach(([name, childControl]) => {
12
+ const childErrors = getFormErrors(childControl, name);
13
+ if (childErrors) {
14
+ if (!errors) {
15
+ errors = { ...childErrors };
16
+ }
17
+ else {
18
+ Object.assign(errors, childErrors);
19
+ }
20
+ }
21
+ });
22
+ }
23
+ return errors;
24
+ }
25
25
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWZvcm0tZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9oZWxwZXJzL2dldC1mb3JtLWVycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLGdCQUFnQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBR3JGLE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBd0IsRUFBRSxHQUFXO0lBQ2pFLElBQUksTUFBTSxHQUE0QixJQUFJLENBQUM7SUFFM0MsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDckMsTUFBTSxHQUFHO1lBQ1AsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRTtTQUM3QixDQUFDO0tBQ0g7SUFFRCxJQUFJLE9BQU8sWUFBWSxnQkFBZ0IsRUFBRTtRQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7YUFDN0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUNoQyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXRELElBQUksV0FBVyxFQUFFO2dCQUNmLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ1gsTUFBTSxHQUFHLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQztpQkFDN0I7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7aUJBQ3BDO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztLQUNOO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGtleTogc3RyaW5nKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBsZXQgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKGNvbnRyb2wuaW52YWxpZCAmJiBjb250cm9sLmVycm9ycykge1xuICAgIGVycm9ycyA9IHtcbiAgICAgIFtrZXldOiB7IC4uLmNvbnRyb2wuZXJyb3JzIH0sXG4gICAgfTtcbiAgfVxuXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIE9iamVjdC5lbnRyaWVzKGNvbnRyb2wuY29udHJvbHMpXG4gICAgICAuZm9yRWFjaCgoW25hbWUsIGNoaWxkQ29udHJvbF0pID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGRFcnJvcnMgPSBnZXRGb3JtRXJyb3JzKGNoaWxkQ29udHJvbCwgbmFtZSk7XG5cbiAgICAgICAgaWYgKGNoaWxkRXJyb3JzKSB7XG4gICAgICAgICAgaWYgKCFlcnJvcnMpIHtcbiAgICAgICAgICAgIGVycm9ycyA9IHsgLi4uY2hpbGRFcnJvcnMgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihlcnJvcnMsIGNoaWxkRXJyb3JzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export * from './confirm-result-continue';
1
+ export * from './confirm-result-continue';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2hlbHBlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlybS1yZXN1bHQtY29udGludWUnO1xuXG4iXX0=
@@ -1,4 +1,4 @@
1
- export function isEnabled(value) {
2
- return value !== 'false' && (value || value === '');
3
- }
1
+ export function isEnabled(value) {
2
+ return value !== 'false' && (value || value === '');
3
+ }
4
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZW5hYmxlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvaGVscGVycy9pcy1lbmFibGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBVTtJQUNsQyxPQUFPLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNFbmFibGVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9PSAnZmFsc2UnICYmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gJycpO1xufVxuIl19
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9pbnRlcmZhY2VzL2FzeW5jLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRnNBc3luY1ZhbGlkYXRvciB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTWV0aG9kIHRoYXQgcGVyZm9ybXMgYXN5bmMgdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBjb250cm9sLlxuICAgKlxuICAgKiBAcGFyYW0gY29udHJvbCBUaGUgY29udHJvbCB0byB2YWxpZGF0ZSBhZ2FpbnN0LlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugb3Igb2JzZXJ2YWJsZSB0aGF0IHJlc29sdmVzIGEgbWFwIG9mIHZhbGlkYXRpb24gZXJyb3JzXG4gICAqIGlmIHZhbGlkYXRpb24gZmFpbHMsIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgdmFsaWRhdGVBc3luYyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+O1xufVxuIl19
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2ludGVyZmFjZXMvY29uZmlybS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUNvbmZpZyB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBzYXZlTGFiZWw/OiBzdHJpbmc7XG4gIGRpc2NhcmRMYWJlbD86IHN0cmluZztcbiAgY2FuY2VsTGFiZWw/OiBzdHJpbmc7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS10YWItZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2ludGVyZmFjZXMvY29uZmlybS10YWItZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdFRhYiwgTWF0VGFiR3JvdXAsIE1hdFRhYkhlYWRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybVRhYkdyb3VwIGV4dGVuZHMgTWF0VGFiR3JvdXAge1xuICBfb3JpZ2luYWxIYW5kbGVDbGljayh0YWI6IE1hdFRhYiwgdGFiSGVhZGVyOiBNYXRUYWJIZWFkZXIsIGluZGV4OiBudW1iZXIpOiB2b2lkO1xuICBfaGFuZGxDbGljayQ6IFN1YmplY3Q8eyB0YWI6IE1hdFRhYjsgdGFiSGVhZGVyOiBNYXRUYWJIZWFkZXI7IGlkeDogbnVtYmVyIH0+O1xufVxuIl19
@@ -1,5 +1,5 @@
1
- export * from './submit-event';
2
- export * from './submitted-event';
3
- export * from './confirm-config';
4
- export * from './confirm-tab-group';
1
+ export * from './submit-event';
2
+ export * from './submitted-event';
3
+ export * from './confirm-config';
4
+ export * from './confirm-tab-group';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3VibWl0LWV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3VibWl0dGVkLWV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlybS1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maXJtLXRhYi1ncm91cCc7XG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9pbnRlcmZhY2VzL3N1Ym1pdC1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibWl0RXZlbnQge1xuICBuZ0Zvcm06IE5nRm9ybTtcbiAgc3VibWl0dGVyOiBzdHJpbmc7ICBcbiAgY29uZmlybWVkPzogYm9vbGVhbixcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0dGVkLWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9pbnRlcmZhY2VzL3N1Ym1pdHRlZC1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibWl0dGVkRXZlbnQge1xuICBuZ0Zvcm06IE5nRm9ybSxcbiAgc3VibWl0dGVyOiBzdHJpbmcsXG4gIHJlc3BvbnNlOiBhbnksXG4gIGNvbmZpcm1lZD86IGJvb2xlYW4sXG59XG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9pbnRlcmZhY2VzL3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRnNWYWxpZGF0b3Ige1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1ldGhvZCB0aGF0IHBlcmZvcm1zIHN5bmNocm9ub3VzIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgcHJvdmlkZWQgY29udHJvbC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRyb2wgVGhlIGNvbnRyb2wgdG8gdmFsaWRhdGUgYWdhaW5zdC5cbiAgICpcbiAgICogQHJldHVybnMgQSBtYXAgb2YgdmFsaWRhdGlvbiBlcnJvcnMgaWYgdmFsaWRhdGlvbiBmYWlscyxcbiAgICogb3RoZXJ3aXNlIG51bGwuXG4gICAqL1xuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsO1xuXG59XG4iXX0=
@@ -1,11 +1,11 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { ERROR_MESSAGES } from '../consts/error-messages.const';
3
- export const VALIDATE_MESSAGES = new InjectionToken('fs.form.validate-messages');
4
- export const VALIDATE_MESSAGE_PROVIDER = {
5
- provide: VALIDATE_MESSAGES,
6
- useFactory: messageProviderFactory,
7
- };
8
- export function messageProviderFactory() {
9
- return { ...ERROR_MESSAGES };
10
- }
1
+ import { InjectionToken } from '@angular/core';
2
+ import { ERROR_MESSAGES } from '../consts/error-messages.const';
3
+ export const VALIDATE_MESSAGES = new InjectionToken('fs.form.validate-messages');
4
+ export const VALIDATE_MESSAGE_PROVIDER = {
5
+ provide: VALIDATE_MESSAGES,
6
+ useFactory: messageProviderFactory,
7
+ };
8
+ export function messageProviderFactory() {
9
+ return { ...ERROR_MESSAGES };
10
+ }
11
11
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtbWVzc2FnZXMucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVoRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FDakQsMkJBQTJCLENBQzVCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFVBQVUsRUFBRSxzQkFBc0I7Q0FDbkMsQ0FBQztBQUVGLE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsT0FBTyxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFUlJPUl9NRVNTQUdFUyB9IGZyb20gJy4uL2NvbnN0cy9lcnJvci1tZXNzYWdlcy5jb25zdCc7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFURV9NRVNTQUdFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihcbiAgJ2ZzLmZvcm0udmFsaWRhdGUtbWVzc2FnZXMnLFxuKTtcblxuZXhwb3J0IGNvbnN0IFZBTElEQVRFX01FU1NBR0VfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IFZBTElEQVRFX01FU1NBR0VTLFxuICB1c2VGYWN0b3J5OiBtZXNzYWdlUHJvdmlkZXJGYWN0b3J5LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1lc3NhZ2VQcm92aWRlckZhY3RvcnkoKSB7XG4gIHJldHVybiB7IC4uLkVSUk9SX01FU1NBR0VTIH07XG59XG5cbiJdfQ==
@@ -0,0 +1,94 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { MatDialog } from '@angular/material/dialog';
3
+ import { merge, of, Subject } from 'rxjs';
4
+ import { filter, first, map, mapTo, switchMap, take } from 'rxjs/operators';
5
+ import { ConfirmUnsavedComponent } from '../components/confirm-unsaved';
6
+ import { ConfirmResult } from '../enums';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/material/dialog";
9
+ export class FsForm {
10
+ _dialog;
11
+ // value is array for future possibilities of extension
12
+ _formDirectiveStore = new WeakMap();
13
+ _eventBus;
14
+ constructor(_dialog) {
15
+ this._dialog = _dialog;
16
+ this._eventBus = new Subject();
17
+ }
18
+ // @deprecated
19
+ broadcast(key, data) {
20
+ this._eventBus.next({ key, data });
21
+ }
22
+ // @deprecated
23
+ on(key) {
24
+ return this._eventBus.asObservable()
25
+ .pipe(filter((event) => event.key === key), map((event) => event.data));
26
+ }
27
+ registerFormDirective(routeComponent, directive) {
28
+ const directives = this.getFormDirectives(routeComponent) || [];
29
+ directives.push(directive);
30
+ this._formDirectiveStore.set(routeComponent, directives);
31
+ }
32
+ getFormDirectives(routeComponent) {
33
+ return this._formDirectiveStore.get(routeComponent);
34
+ }
35
+ removeFormDirective(routeComponent) {
36
+ this._formDirectiveStore.delete(routeComponent);
37
+ }
38
+ confirmUnsaved(directives) {
39
+ // TODO support for multiple directives per page
40
+ const form = directives[0];
41
+ if (!form.confirm || !form.ngForm.dirty) {
42
+ return of(ConfirmResult.Pristine);
43
+ }
44
+ let title = 'You Have Unsaved Changes';
45
+ let message = 'What would you like to do with your changes?';
46
+ let saveLabel = 'Save & Continue';
47
+ let discardLabel = 'Discard Changes & Continue';
48
+ let cancelLabel = 'Review Changes';
49
+ if (typeof form.confirm === 'object') {
50
+ title = form.confirm.title || title;
51
+ message = form.confirm.message || message;
52
+ saveLabel = form.confirm.saveLabel || saveLabel;
53
+ discardLabel = form.confirm.discardLabel || discardLabel;
54
+ cancelLabel = form.confirm.cancelLabel || cancelLabel;
55
+ }
56
+ return this._dialog.open(ConfirmUnsavedComponent, {
57
+ data: {
58
+ title,
59
+ message,
60
+ saveLabel,
61
+ discardLabel,
62
+ cancelLabel,
63
+ },
64
+ width: 'auto',
65
+ })
66
+ .afterClosed()
67
+ .pipe(switchMap((result) => {
68
+ if (!result) {
69
+ return of(ConfirmResult.Review);
70
+ }
71
+ if (result === 'discard') {
72
+ form.reset();
73
+ return of(ConfirmResult.Discard);
74
+ }
75
+ if (result === 'save') {
76
+ form.ngForm.control.markAsPristine();
77
+ form.triggerSubmit({ confirmed: true });
78
+ return merge(form.submitted
79
+ .pipe(first(), mapTo(ConfirmResult.Save)), form.invalid
80
+ .pipe(first(), mapTo(ConfirmResult.Invalid)))
81
+ .pipe(take(1));
82
+ }
83
+ }));
84
+ }
85
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsForm, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
86
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsForm, providedIn: 'root' });
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsForm, decorators: [{
89
+ type: Injectable,
90
+ args: [{
91
+ providedIn: 'root',
92
+ }]
93
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }]; } });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnNmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL3NlcnZpY2VzL2ZzZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3JELE9BQU8sRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFXekMsTUFBTSxPQUFPLE1BQU07SUFRUDtJQU5WLHVEQUF1RDtJQUMvQyxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBZ0MsQ0FBQztJQUVsRSxTQUFTLENBQTBCO0lBRTNDLFlBQ1UsT0FBa0I7UUFBbEIsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUUxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFrQixDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjO0lBQ1AsU0FBUyxDQUFDLEdBQVEsRUFBRSxJQUFVO1FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWM7SUFDUCxFQUFFLENBQUksR0FBUTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFO2FBQ2pDLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQ3BDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUM5QixDQUFDO0lBQ04sQ0FBQztJQUVNLHFCQUFxQixDQUFDLGNBQXlCLEVBQUUsU0FBMEI7UUFDaEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRSxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxjQUFjO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsY0FBYztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxjQUFjLENBQ25CLFVBQTZCO1FBRS9CLGdEQUFnRDtRQUM5QyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUN2QyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbkM7UUFFRCxJQUFJLEtBQUssR0FBRywwQkFBMEIsQ0FBQztRQUN2QyxJQUFJLE9BQU8sR0FBRyw4Q0FBOEMsQ0FBQztRQUM3RCxJQUFJLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUNsQyxJQUFJLFlBQVksR0FBRyw0QkFBNEIsQ0FBQztRQUNoRCxJQUFJLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztRQUVuQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDcEMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztZQUNwQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO1lBQzFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7WUFDaEQsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQztZQUN6RCxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDO1NBQ3ZEO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUNoRCxJQUFJLEVBQUU7Z0JBQ0osS0FBSztnQkFDTCxPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsWUFBWTtnQkFDWixXQUFXO2FBQ1o7WUFDRCxLQUFLLEVBQUUsTUFBTTtTQUNkLENBQUM7YUFDQyxXQUFXLEVBQUU7YUFDYixJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbkIsSUFBRyxDQUFDLE1BQU0sRUFBRTtnQkFDVixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDakM7WUFFRCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFFYixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEM7WUFFRCxJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBRXhDLE9BQU8sS0FBSyxDQUNWLElBQUksQ0FBQyxTQUFTO3FCQUNYLElBQUksQ0FDSCxLQUFLLEVBQUUsRUFDUCxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUMxQixFQUNILElBQUksQ0FBQyxPQUFPO3FCQUNULElBQUksQ0FDSCxLQUFLLEVBQUUsRUFDUCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUM3QixDQUFDO3FCQUNILElBQUksQ0FDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQzthQUNMO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7d0dBOUdVLE1BQU07NEdBQU4sTUFBTSxjQUZMLE1BQU07OzRGQUVQLE1BQU07a0JBSGxCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5cbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgbWFwLCBtYXBUbywgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb25maXJtVW5zYXZlZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uZmlybS11bnNhdmVkJztcbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb25maXJtUmVzdWx0IH0gZnJvbSAnLi4vZW51bXMnO1xuXG5pbnRlcmZhY2UgQnJvYWRjYXN0RXZlbnQge1xuICAgIGtleTogYW55O1xuICAgIGRhdGE/OiBhbnk7XG59XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybSB7XG5cbiAgLy8gdmFsdWUgaXMgYXJyYXkgZm9yIGZ1dHVyZSBwb3NzaWJpbGl0aWVzIG9mIGV4dGVuc2lvblxuICBwcml2YXRlIF9mb3JtRGlyZWN0aXZlU3RvcmUgPSBuZXcgV2Vha01hcDxUeXBlPGFueT4sIEZzRm9ybURpcmVjdGl2ZVtdPigpO1xuXG4gIHByaXZhdGUgX2V2ZW50QnVzOiBTdWJqZWN0PEJyb2FkY2FzdEV2ZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7XG4gICAgdGhpcy5fZXZlbnRCdXMgPSBuZXcgU3ViamVjdDxCcm9hZGNhc3RFdmVudD4oKTtcbiAgfVxuXG4gIC8vIEBkZXByZWNhdGVkXG4gIHB1YmxpYyBicm9hZGNhc3Qoa2V5OiBhbnksIGRhdGE/OiBhbnkpIHtcbiAgICB0aGlzLl9ldmVudEJ1cy5uZXh0KHsga2V5LCBkYXRhIH0pO1xuICB9XG5cbiAgLy8gQGRlcHJlY2F0ZWRcbiAgcHVibGljIG9uPFQ+KGtleTogYW55KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50QnVzLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQua2V5ID09PSBrZXkpLFxuICAgICAgICBtYXAoKGV2ZW50KSA9PiA8VD5ldmVudC5kYXRhKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJGb3JtRGlyZWN0aXZlKHJvdXRlQ29tcG9uZW50OiBUeXBlPGFueT4sIGRpcmVjdGl2ZTogRnNGb3JtRGlyZWN0aXZlKSB7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMuZ2V0Rm9ybURpcmVjdGl2ZXMocm91dGVDb21wb25lbnQpIHx8IFtdO1xuICAgIGRpcmVjdGl2ZXMucHVzaChkaXJlY3RpdmUpO1xuXG4gICAgdGhpcy5fZm9ybURpcmVjdGl2ZVN0b3JlLnNldChyb3V0ZUNvbXBvbmVudCwgZGlyZWN0aXZlcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybURpcmVjdGl2ZXMocm91dGVDb21wb25lbnQpOiBGc0Zvcm1EaXJlY3RpdmVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1EaXJlY3RpdmVTdG9yZS5nZXQocm91dGVDb21wb25lbnQpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUZvcm1EaXJlY3RpdmUocm91dGVDb21wb25lbnQpIHtcbiAgICB0aGlzLl9mb3JtRGlyZWN0aXZlU3RvcmUuZGVsZXRlKHJvdXRlQ29tcG9uZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maXJtVW5zYXZlZChcbiAgICBkaXJlY3RpdmVzOiBGc0Zvcm1EaXJlY3RpdmVbXSwgXG4gICk6IE9ic2VydmFibGU8Q29uZmlybVJlc3VsdD4ge1xuICAvLyBUT0RPIHN1cHBvcnQgZm9yIG11bHRpcGxlIGRpcmVjdGl2ZXMgcGVyIHBhZ2VcbiAgICBjb25zdCBmb3JtID0gZGlyZWN0aXZlc1swXTtcblxuICAgIGlmICghZm9ybS5jb25maXJtIHx8ICFmb3JtLm5nRm9ybS5kaXJ0eSkge1xuICAgICAgcmV0dXJuIG9mKENvbmZpcm1SZXN1bHQuUHJpc3RpbmUpO1xuICAgIH1cblxuICAgIGxldCB0aXRsZSA9ICdZb3UgSGF2ZSBVbnNhdmVkIENoYW5nZXMnO1xuICAgIGxldCBtZXNzYWdlID0gJ1doYXQgd291bGQgeW91IGxpa2UgdG8gZG8gd2l0aCB5b3VyIGNoYW5nZXM/JztcbiAgICBsZXQgc2F2ZUxhYmVsID0gJ1NhdmUgJiBDb250aW51ZSc7XG4gICAgbGV0IGRpc2NhcmRMYWJlbCA9ICdEaXNjYXJkIENoYW5nZXMgJiBDb250aW51ZSc7XG4gICAgbGV0IGNhbmNlbExhYmVsID0gJ1JldmlldyBDaGFuZ2VzJztcblxuICAgIGlmICh0eXBlb2YgZm9ybS5jb25maXJtID09PSAnb2JqZWN0Jykge1xuICAgICAgdGl0bGUgPSBmb3JtLmNvbmZpcm0udGl0bGUgfHwgdGl0bGU7XG4gICAgICBtZXNzYWdlID0gZm9ybS5jb25maXJtLm1lc3NhZ2UgfHwgbWVzc2FnZTtcbiAgICAgIHNhdmVMYWJlbCA9IGZvcm0uY29uZmlybS5zYXZlTGFiZWwgfHwgc2F2ZUxhYmVsO1xuICAgICAgZGlzY2FyZExhYmVsID0gZm9ybS5jb25maXJtLmRpc2NhcmRMYWJlbCB8fCBkaXNjYXJkTGFiZWw7XG4gICAgICBjYW5jZWxMYWJlbCA9IGZvcm0uY29uZmlybS5jYW5jZWxMYWJlbCB8fCBjYW5jZWxMYWJlbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZGlhbG9nLm9wZW4oQ29uZmlybVVuc2F2ZWRDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHNhdmVMYWJlbCxcbiAgICAgICAgZGlzY2FyZExhYmVsLFxuICAgICAgICBjYW5jZWxMYWJlbCxcbiAgICAgIH0sXG4gICAgICB3aWR0aDogJ2F1dG8nLCBcbiAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmKCFyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihDb25maXJtUmVzdWx0LlJldmlldyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgIGlmIChyZXN1bHQgPT09ICdkaXNjYXJkJykge1xuICAgICAgICAgICAgZm9ybS5yZXNldCgpO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YoQ29uZmlybVJlc3VsdC5EaXNjYXJkKTsgXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgICBmb3JtLm5nRm9ybS5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICBmb3JtLnRyaWdnZXJTdWJtaXQoeyBjb25maXJtZWQ6IHRydWUgfSk7XG4gICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICAgIGZvcm0uc3VibWl0dGVkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgICAgbWFwVG8oQ29uZmlybVJlc3VsdC5TYXZlKSxcbiAgICAgICAgICAgICAgICApLCBcbiAgICAgICAgICAgICAgZm9ybS5pbnZhbGlkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgICAgbWFwVG8oQ29uZmlybVJlc3VsdC5JbnZhbGlkKSxcbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbn1cbiJdfQ==