@firestitch/form 12.2.1 → 12.2.2

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 (99) hide show
  1. package/app/components/form-dialog-actions/form-dialog-actions.component.d.ts +22 -22
  2. package/app/consts/error-messages.const.d.ts +19 -19
  3. package/app/directives/form/form.directive.d.ts +108 -108
  4. package/app/directives/form-dialog-close.directive.d.ts +12 -12
  5. package/app/directives/submit-button.directive.d.ts +31 -31
  6. package/app/directives/validators/compare.directive.d.ts +15 -15
  7. package/app/directives/validators/control.directive.d.ts +48 -48
  8. package/app/directives/validators/daterange.directive.d.ts +13 -13
  9. package/app/directives/validators/email.directive.d.ts +13 -13
  10. package/app/directives/validators/emails.directive.d.ts +13 -13
  11. package/app/directives/validators/function.directive.d.ts +14 -14
  12. package/app/directives/validators/greater.directive.d.ts +13 -13
  13. package/app/directives/validators/integer.directive.d.ts +13 -13
  14. package/app/directives/validators/lesser.directive.d.ts +13 -13
  15. package/app/directives/validators/max.directive.d.ts +13 -13
  16. package/app/directives/validators/maxlength.directive.d.ts +13 -13
  17. package/app/directives/validators/min.directive.d.ts +13 -13
  18. package/app/directives/validators/minlength.directive.d.ts +13 -13
  19. package/app/directives/validators/no-fs-validators.directive.d.ts +13 -13
  20. package/app/directives/validators/numeric.directive.d.ts +13 -13
  21. package/app/directives/validators/pattern.directive.d.ts +13 -13
  22. package/app/directives/validators/phone.directive.d.ts +13 -13
  23. package/app/directives/validators/required.directive.d.ts +16 -16
  24. package/app/directives/validators/url.directive.d.ts +14 -14
  25. package/app/directives/validators/validate.directive.d.ts +14 -14
  26. package/app/enums/confirm-result.d.ts +7 -7
  27. package/app/enums/form-status.d.ts +9 -9
  28. package/app/fs-form.module.d.ts +36 -36
  29. package/app/guards/form-deactivate.guard.d.ts +12 -12
  30. package/app/helpers/confirm-result-continue.d.ts +1 -1
  31. package/app/helpers/confirm-unsaved.d.ts +5 -5
  32. package/app/helpers/get-form-errors.d.ts +2 -2
  33. package/app/helpers/index.d.ts +2 -2
  34. package/app/helpers/is-enabled.d.ts +1 -1
  35. package/app/interfaces/async-validator.d.ts +14 -14
  36. package/app/interfaces/confirm-config.d.ts +7 -7
  37. package/app/interfaces/confirm-tab-group.d.ts +10 -10
  38. package/app/interfaces/form-deactivate.d.ts +4 -4
  39. package/app/interfaces/index.d.ts +4 -4
  40. package/app/interfaces/submit-event.d.ts +5 -5
  41. package/app/interfaces/submitted-event.d.ts +6 -6
  42. package/app/interfaces/validator.d.ts +13 -13
  43. package/app/providers/validate-messages.provider.d.ts +25 -25
  44. package/app/services/fsform.service.d.ts +10 -10
  45. package/app/validators/validators.d.ts +12 -12
  46. package/bundles/firestitch-form.umd.js +2676 -2676
  47. package/bundles/firestitch-form.umd.js.map +1 -1
  48. package/esm2015/app/components/form-dialog-actions/form-dialog-actions.component.js +89 -89
  49. package/esm2015/app/consts/error-messages.const.js +19 -19
  50. package/esm2015/app/directives/form/form.directive.js +621 -621
  51. package/esm2015/app/directives/form-dialog-close.directive.js +30 -30
  52. package/esm2015/app/directives/submit-button.directive.js +131 -131
  53. package/esm2015/app/directives/validators/compare.directive.js +48 -48
  54. package/esm2015/app/directives/validators/control.directive.js +256 -256
  55. package/esm2015/app/directives/validators/daterange.directive.js +40 -40
  56. package/esm2015/app/directives/validators/email.directive.js +40 -40
  57. package/esm2015/app/directives/validators/emails.directive.js +40 -40
  58. package/esm2015/app/directives/validators/function.directive.js +30 -30
  59. package/esm2015/app/directives/validators/greater.directive.js +39 -39
  60. package/esm2015/app/directives/validators/integer.directive.js +40 -40
  61. package/esm2015/app/directives/validators/lesser.directive.js +39 -39
  62. package/esm2015/app/directives/validators/max.directive.js +35 -35
  63. package/esm2015/app/directives/validators/maxlength.directive.js +34 -34
  64. package/esm2015/app/directives/validators/min.directive.js +35 -35
  65. package/esm2015/app/directives/validators/minlength.directive.js +34 -34
  66. package/esm2015/app/directives/validators/no-fs-validators.directive.js +46 -46
  67. package/esm2015/app/directives/validators/numeric.directive.js +40 -40
  68. package/esm2015/app/directives/validators/pattern.directive.js +34 -34
  69. package/esm2015/app/directives/validators/phone.directive.js +40 -40
  70. package/esm2015/app/directives/validators/required.directive.js +70 -70
  71. package/esm2015/app/directives/validators/url.directive.js +46 -46
  72. package/esm2015/app/directives/validators/validate.directive.js +32 -32
  73. package/esm2015/app/enums/confirm-result.js +8 -8
  74. package/esm2015/app/enums/form-status.js +10 -10
  75. package/esm2015/app/fs-form.module.js +175 -175
  76. package/esm2015/app/guards/form-deactivate.guard.js +39 -39
  77. package/esm2015/app/helpers/confirm-result-continue.js +4 -4
  78. package/esm2015/app/helpers/confirm-unsaved.js +69 -69
  79. package/esm2015/app/helpers/get-form-errors.js +24 -24
  80. package/esm2015/app/helpers/index.js +2 -2
  81. package/esm2015/app/helpers/is-enabled.js +3 -3
  82. package/esm2015/app/interfaces/async-validator.js +1 -1
  83. package/esm2015/app/interfaces/confirm-config.js +1 -1
  84. package/esm2015/app/interfaces/confirm-tab-group.js +1 -1
  85. package/esm2015/app/interfaces/form-deactivate.js +1 -1
  86. package/esm2015/app/interfaces/index.js +4 -4
  87. package/esm2015/app/interfaces/submit-event.js +1 -1
  88. package/esm2015/app/interfaces/submitted-event.js +1 -1
  89. package/esm2015/app/interfaces/validator.js +1 -1
  90. package/esm2015/app/providers/validate-messages.provider.js +10 -10
  91. package/esm2015/app/services/fsform.service.js +24 -24
  92. package/esm2015/app/validators/validators.js +96 -96
  93. package/esm2015/firestitch-form.js +4 -4
  94. package/esm2015/public_api.js +35 -35
  95. package/fesm2015/firestitch-form.js +2119 -2119
  96. package/fesm2015/firestitch-form.js.map +1 -1
  97. package/firestitch-form.d.ts +5 -5
  98. package/package.json +1 -1
  99. package/public_api.d.ts +34 -34
@@ -1,176 +1,176 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FormsModule } from '@angular/forms';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { MatDialogModule } from '@angular/material/dialog';
6
- import { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';
7
- import { FsFormDirective } from './directives/form/form.directive';
8
- import { FsControlDirective } from './directives/validators/control.directive';
9
- import { FsFormRequiredDirective } from './directives/validators/required.directive';
10
- import { FsFormMinDirective } from './directives/validators/min.directive';
11
- import { FsFormMaxDirective } from './directives/validators/max.directive';
12
- import { FsFormMinLengthDirective } from './directives/validators/minlength.directive';
13
- import { FsFormMaxLengthDirective } from './directives/validators/maxlength.directive';
14
- import { FsFormEmailDirective } from './directives/validators/email.directive';
15
- import { FsFormEmailsDirective } from './directives/validators/emails.directive';
16
- import { FsFormPhoneDirective } from './directives/validators/phone.directive';
17
- import { FsFormCompareDirective } from './directives/validators/compare.directive';
18
- import { FsFormIntegerDirective } from './directives/validators/integer.directive';
19
- import { FsFormNumericDirective } from './directives/validators/numeric.directive';
20
- import { FsFormPatternDirective } from './directives/validators/pattern.directive';
21
- import { FsFormFunctionDirective } from './directives/validators/function.directive';
22
- import { FsFormGreaterDirective } from './directives/validators/greater.directive';
23
- import { FsFormDateRangeDirective } from './directives/validators/daterange.directive';
24
- import { FsFormLesserDirective } from './directives/validators/lesser.directive';
25
- import { FsFormUrlDirective } from './directives/validators/url.directive';
26
- import { FsFormDialogCloseDirective } from './directives/form-dialog-close.directive';
27
- import { FsSubmitButtonDirective } from './directives/submit-button.directive';
28
- import { FsFormValidateDirective } from './directives/validators/validate.directive';
29
- import { FsFormDialogActionsComponent } from './components/form-dialog-actions/form-dialog-actions.component';
30
- import { FsFormNoFsValidatorsDirective } from './directives/validators/no-fs-validators.directive';
31
- import * as i0 from "@angular/core";
32
- export class FsFormModule {
33
- static forRoot() {
34
- /**
35
- * Hack: https://github.com/angular/components/issues/20097
36
- */
37
- ErrorStateMatcher.prototype.isErrorState = (control, form) => {
38
- return (control === null || control === void 0 ? void 0 : control.invalid) && (control === null || control === void 0 ? void 0 : control.touched) && (control === null || control === void 0 ? void 0 : control.dirty);
39
- };
40
- return {
41
- ngModule: FsFormModule,
42
- };
43
- }
44
- }
45
- FsFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
46
- FsFormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormModule, declarations: [FsFormDirective,
47
- FsControlDirective,
48
- FsFormRequiredDirective,
49
- FsFormMinDirective,
50
- FsFormMaxDirective,
51
- FsFormMinLengthDirective,
52
- FsFormMaxLengthDirective,
53
- FsFormEmailDirective,
54
- FsFormEmailsDirective,
55
- FsFormPhoneDirective,
56
- FsFormCompareDirective,
57
- FsFormIntegerDirective,
58
- FsFormNumericDirective,
59
- FsFormPatternDirective,
60
- FsFormFunctionDirective,
61
- FsFormDateRangeDirective,
62
- FsFormGreaterDirective,
63
- FsFormLesserDirective,
64
- FsFormUrlDirective,
65
- FsFormDialogCloseDirective,
66
- FsSubmitButtonDirective,
67
- FsFormValidateDirective,
68
- FsFormDialogActionsComponent,
69
- FsFormNoFsValidatorsDirective], imports: [CommonModule,
70
- FormsModule,
71
- MatButtonModule,
72
- MatDialogModule], exports: [FsFormDirective,
73
- FsControlDirective,
74
- FsFormRequiredDirective,
75
- FsFormMinDirective,
76
- FsFormMaxDirective,
77
- FsFormMinLengthDirective,
78
- FsFormMaxLengthDirective,
79
- FsFormEmailDirective,
80
- FsFormEmailsDirective,
81
- FsFormPhoneDirective,
82
- FsFormCompareDirective,
83
- FsFormIntegerDirective,
84
- FsFormNumericDirective,
85
- FsFormPatternDirective,
86
- FsFormFunctionDirective,
87
- FsFormDateRangeDirective,
88
- FsFormGreaterDirective,
89
- FsFormLesserDirective,
90
- FsFormUrlDirective,
91
- FsFormDialogCloseDirective,
92
- FsSubmitButtonDirective,
93
- FsFormValidateDirective,
94
- FsFormDialogActionsComponent,
95
- FsFormNoFsValidatorsDirective] });
96
- FsFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormModule, providers: [
97
- {
98
- provide: ErrorStateMatcher,
99
- useClass: ShowOnDirtyErrorStateMatcher,
100
- },
101
- ], imports: [[
102
- CommonModule,
103
- FormsModule,
104
- MatButtonModule,
105
- MatDialogModule,
106
- ]] });
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormModule, decorators: [{
108
- type: NgModule,
109
- args: [{
110
- imports: [
111
- CommonModule,
112
- FormsModule,
113
- MatButtonModule,
114
- MatDialogModule,
115
- ],
116
- declarations: [
117
- FsFormDirective,
118
- FsControlDirective,
119
- FsFormRequiredDirective,
120
- FsFormMinDirective,
121
- FsFormMaxDirective,
122
- FsFormMinLengthDirective,
123
- FsFormMaxLengthDirective,
124
- FsFormEmailDirective,
125
- FsFormEmailsDirective,
126
- FsFormPhoneDirective,
127
- FsFormCompareDirective,
128
- FsFormIntegerDirective,
129
- FsFormNumericDirective,
130
- FsFormPatternDirective,
131
- FsFormFunctionDirective,
132
- FsFormDateRangeDirective,
133
- FsFormGreaterDirective,
134
- FsFormLesserDirective,
135
- FsFormUrlDirective,
136
- FsFormDialogCloseDirective,
137
- FsSubmitButtonDirective,
138
- FsFormValidateDirective,
139
- FsFormDialogActionsComponent,
140
- FsFormNoFsValidatorsDirective
141
- ],
142
- exports: [
143
- FsFormDirective,
144
- FsControlDirective,
145
- FsFormRequiredDirective,
146
- FsFormMinDirective,
147
- FsFormMaxDirective,
148
- FsFormMinLengthDirective,
149
- FsFormMaxLengthDirective,
150
- FsFormEmailDirective,
151
- FsFormEmailsDirective,
152
- FsFormPhoneDirective,
153
- FsFormCompareDirective,
154
- FsFormIntegerDirective,
155
- FsFormNumericDirective,
156
- FsFormPatternDirective,
157
- FsFormFunctionDirective,
158
- FsFormDateRangeDirective,
159
- FsFormGreaterDirective,
160
- FsFormLesserDirective,
161
- FsFormUrlDirective,
162
- FsFormDialogCloseDirective,
163
- FsSubmitButtonDirective,
164
- FsFormValidateDirective,
165
- FsFormDialogActionsComponent,
166
- FsFormNoFsValidatorsDirective,
167
- ],
168
- providers: [
169
- {
170
- provide: ErrorStateMatcher,
171
- useClass: ShowOnDirtyErrorStateMatcher,
172
- },
173
- ],
174
- }]
175
- }] });
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatDialogModule } from '@angular/material/dialog';
6
+ import { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';
7
+ import { FsFormDirective } from './directives/form/form.directive';
8
+ import { FsControlDirective } from './directives/validators/control.directive';
9
+ import { FsFormRequiredDirective } from './directives/validators/required.directive';
10
+ import { FsFormMinDirective } from './directives/validators/min.directive';
11
+ import { FsFormMaxDirective } from './directives/validators/max.directive';
12
+ import { FsFormMinLengthDirective } from './directives/validators/minlength.directive';
13
+ import { FsFormMaxLengthDirective } from './directives/validators/maxlength.directive';
14
+ import { FsFormEmailDirective } from './directives/validators/email.directive';
15
+ import { FsFormEmailsDirective } from './directives/validators/emails.directive';
16
+ import { FsFormPhoneDirective } from './directives/validators/phone.directive';
17
+ import { FsFormCompareDirective } from './directives/validators/compare.directive';
18
+ import { FsFormIntegerDirective } from './directives/validators/integer.directive';
19
+ import { FsFormNumericDirective } from './directives/validators/numeric.directive';
20
+ import { FsFormPatternDirective } from './directives/validators/pattern.directive';
21
+ import { FsFormFunctionDirective } from './directives/validators/function.directive';
22
+ import { FsFormGreaterDirective } from './directives/validators/greater.directive';
23
+ import { FsFormDateRangeDirective } from './directives/validators/daterange.directive';
24
+ import { FsFormLesserDirective } from './directives/validators/lesser.directive';
25
+ import { FsFormUrlDirective } from './directives/validators/url.directive';
26
+ import { FsFormDialogCloseDirective } from './directives/form-dialog-close.directive';
27
+ import { FsSubmitButtonDirective } from './directives/submit-button.directive';
28
+ import { FsFormValidateDirective } from './directives/validators/validate.directive';
29
+ import { FsFormDialogActionsComponent } from './components/form-dialog-actions/form-dialog-actions.component';
30
+ import { FsFormNoFsValidatorsDirective } from './directives/validators/no-fs-validators.directive';
31
+ import * as i0 from "@angular/core";
32
+ export class FsFormModule {
33
+ static forRoot() {
34
+ /**
35
+ * Hack: https://github.com/angular/components/issues/20097
36
+ */
37
+ ErrorStateMatcher.prototype.isErrorState = (control, form) => {
38
+ return (control === null || control === void 0 ? void 0 : control.invalid) && (control === null || control === void 0 ? void 0 : control.touched) && (control === null || control === void 0 ? void 0 : control.dirty);
39
+ };
40
+ return {
41
+ ngModule: FsFormModule,
42
+ };
43
+ }
44
+ }
45
+ FsFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
46
+ FsFormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormModule, declarations: [FsFormDirective,
47
+ FsControlDirective,
48
+ FsFormRequiredDirective,
49
+ FsFormMinDirective,
50
+ FsFormMaxDirective,
51
+ FsFormMinLengthDirective,
52
+ FsFormMaxLengthDirective,
53
+ FsFormEmailDirective,
54
+ FsFormEmailsDirective,
55
+ FsFormPhoneDirective,
56
+ FsFormCompareDirective,
57
+ FsFormIntegerDirective,
58
+ FsFormNumericDirective,
59
+ FsFormPatternDirective,
60
+ FsFormFunctionDirective,
61
+ FsFormDateRangeDirective,
62
+ FsFormGreaterDirective,
63
+ FsFormLesserDirective,
64
+ FsFormUrlDirective,
65
+ FsFormDialogCloseDirective,
66
+ FsSubmitButtonDirective,
67
+ FsFormValidateDirective,
68
+ FsFormDialogActionsComponent,
69
+ FsFormNoFsValidatorsDirective], imports: [CommonModule,
70
+ FormsModule,
71
+ MatButtonModule,
72
+ MatDialogModule], exports: [FsFormDirective,
73
+ FsControlDirective,
74
+ FsFormRequiredDirective,
75
+ FsFormMinDirective,
76
+ FsFormMaxDirective,
77
+ FsFormMinLengthDirective,
78
+ FsFormMaxLengthDirective,
79
+ FsFormEmailDirective,
80
+ FsFormEmailsDirective,
81
+ FsFormPhoneDirective,
82
+ FsFormCompareDirective,
83
+ FsFormIntegerDirective,
84
+ FsFormNumericDirective,
85
+ FsFormPatternDirective,
86
+ FsFormFunctionDirective,
87
+ FsFormDateRangeDirective,
88
+ FsFormGreaterDirective,
89
+ FsFormLesserDirective,
90
+ FsFormUrlDirective,
91
+ FsFormDialogCloseDirective,
92
+ FsSubmitButtonDirective,
93
+ FsFormValidateDirective,
94
+ FsFormDialogActionsComponent,
95
+ FsFormNoFsValidatorsDirective] });
96
+ FsFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormModule, providers: [
97
+ {
98
+ provide: ErrorStateMatcher,
99
+ useClass: ShowOnDirtyErrorStateMatcher,
100
+ },
101
+ ], imports: [[
102
+ CommonModule,
103
+ FormsModule,
104
+ MatButtonModule,
105
+ MatDialogModule,
106
+ ]] });
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormModule, decorators: [{
108
+ type: NgModule,
109
+ args: [{
110
+ imports: [
111
+ CommonModule,
112
+ FormsModule,
113
+ MatButtonModule,
114
+ MatDialogModule,
115
+ ],
116
+ declarations: [
117
+ FsFormDirective,
118
+ FsControlDirective,
119
+ FsFormRequiredDirective,
120
+ FsFormMinDirective,
121
+ FsFormMaxDirective,
122
+ FsFormMinLengthDirective,
123
+ FsFormMaxLengthDirective,
124
+ FsFormEmailDirective,
125
+ FsFormEmailsDirective,
126
+ FsFormPhoneDirective,
127
+ FsFormCompareDirective,
128
+ FsFormIntegerDirective,
129
+ FsFormNumericDirective,
130
+ FsFormPatternDirective,
131
+ FsFormFunctionDirective,
132
+ FsFormDateRangeDirective,
133
+ FsFormGreaterDirective,
134
+ FsFormLesserDirective,
135
+ FsFormUrlDirective,
136
+ FsFormDialogCloseDirective,
137
+ FsSubmitButtonDirective,
138
+ FsFormValidateDirective,
139
+ FsFormDialogActionsComponent,
140
+ FsFormNoFsValidatorsDirective
141
+ ],
142
+ exports: [
143
+ FsFormDirective,
144
+ FsControlDirective,
145
+ FsFormRequiredDirective,
146
+ FsFormMinDirective,
147
+ FsFormMaxDirective,
148
+ FsFormMinLengthDirective,
149
+ FsFormMaxLengthDirective,
150
+ FsFormEmailDirective,
151
+ FsFormEmailsDirective,
152
+ FsFormPhoneDirective,
153
+ FsFormCompareDirective,
154
+ FsFormIntegerDirective,
155
+ FsFormNumericDirective,
156
+ FsFormPatternDirective,
157
+ FsFormFunctionDirective,
158
+ FsFormDateRangeDirective,
159
+ FsFormGreaterDirective,
160
+ FsFormLesserDirective,
161
+ FsFormUrlDirective,
162
+ FsFormDialogCloseDirective,
163
+ FsSubmitButtonDirective,
164
+ FsFormValidateDirective,
165
+ FsFormDialogActionsComponent,
166
+ FsFormNoFsValidatorsDirective,
167
+ ],
168
+ providers: [
169
+ {
170
+ provide: ErrorStateMatcher,
171
+ useClass: ShowOnDirtyErrorStateMatcher,
172
+ },
173
+ ],
174
+ }]
175
+ }] });
176
176
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2ZzLWZvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW1DLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9B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bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIEZvcm1zTW9kdWxlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIsIFNob3dPbkRpcnR5RXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuaW1wb3J0IHsgRnNGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvY29udHJvbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtUmVxdWlyZWREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9yZXF1aXJlZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtTWluRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbWluLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1NYXhEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9tYXguZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybU1pbkxlbmd0aERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL21pbmxlbmd0aC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtTWF4TGVuZ3RoRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbWF4bGVuZ3RoLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1FbWFpbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL2VtYWlsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1FbWFpbHNEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9lbWFpbHMuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybVBob25lRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvcGhvbmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybUNvbXBhcmVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb21wYXJlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1JbnRlZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvaW50ZWdlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtTnVtZXJpY0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL251bWVyaWMuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybVBhdHRlcm5EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9wYXR0ZXJuLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1GdW5jdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL2Z1bmN0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1HcmVhdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvZ3JlYXRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtRGF0ZVJhbmdlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvZGF0ZXJhbmdlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1MZXNzZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9sZXNzZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybVVybERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL3VybC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtRGlhbG9nQ2xvc2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZm9ybS1kaWFsb2ctY2xvc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzU3VibWl0QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3N1Ym1pdC1idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybVZhbGlkYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvdmFsaWRhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1kaWFsb2ctYWN0aW9ucy9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGc0Zvcm1Ob0ZzVmFsaWRhdG9yc0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzL25vLWZzLXZhbGlkYXRvcnMuZGlyZWN0aXZlJztcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRnNGb3JtRGlyZWN0aXZlLFxuICAgIEZzQ29udHJvbERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1SZXF1aXJlZERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1NaW5EaXJlY3RpdmUsXG4gICAgRnNGb3JtTWF4RGlyZWN0aXZlLFxuICAgIEZzRm9ybU1pbkxlbmd0aERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1NYXhMZW5ndGhEaXJlY3RpdmUsXG4gICAgRnNGb3JtRW1haWxEaXJlY3RpdmUsXG4gICAgRnNGb3JtRW1haWxzRGlyZWN0aXZlLFxuICAgIEZzRm9ybVBob25lRGlyZWN0aXZlLFxuICAgIEZzRm9ybUNvbXBhcmVEaXJlY3RpdmUsXG4gICAgRnNGb3JtSW50ZWdlckRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1OdW1lcmljRGlyZWN0aXZlLFxuICAgIEZzRm9ybVBhdHRlcm5EaXJlY3RpdmUsXG4gICAgRnNGb3JtRnVuY3Rpb25EaXJlY3RpdmUsXG4gICAgRnNGb3JtRGF0ZVJhbmdlRGlyZWN0aXZlLFxuICAgIEZzRm9ybUdyZWF0ZXJEaXJlY3RpdmUsXG4gICAgRnNGb3JtTGVzc2VyRGlyZWN0aXZlLFxuICAgIEZzRm9ybVVybERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSxcbiAgICBGc1N1Ym1pdEJ1dHRvbkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1WYWxpZGF0ZURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1EaWFsb2dBY3Rpb25zQ29tcG9uZW50LFxuICAgIEZzRm9ybU5vRnNWYWxpZGF0b3JzRGlyZWN0aXZlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGc0Zvcm1EaXJlY3RpdmUsXG4gICAgRnNDb250cm9sRGlyZWN0aXZlLFxuICAgIEZzRm9ybVJlcXVpcmVkRGlyZWN0aXZlLFxuICAgIEZzRm9ybU1pbkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1NYXhEaXJlY3RpdmUsXG4gICAgRnNGb3JtTWluTGVuZ3RoRGlyZWN0aXZlLFxuICAgIEZzRm9ybU1heExlbmd0aERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1FbWFpbERpcmVjdGl2ZSxcbiAgICBGc0Zvcm1FbWFpbHNEaXJlY3RpdmUsXG4gICAgRnNGb3JtUGhvbmVEaXJlY3RpdmUsXG4gICAgRnNGb3JtQ29tcGFyZURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1JbnRlZ2VyRGlyZWN0aXZlLFxuICAgIEZzRm9ybU51bWVyaWNEaXJlY3RpdmUsXG4gICAgRnNGb3JtUGF0dGVybkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1GdW5jdGlvbkRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1EYXRlUmFuZ2VEaXJlY3RpdmUsXG4gICAgRnNGb3JtR3JlYXRlckRpcmVjdGl2ZSxcbiAgICBGc0Zvcm1MZXNzZXJEaXJlY3RpdmUsXG4gICAgRnNGb3JtVXJsRGlyZWN0aXZlLFxuICAgIEZzRm9ybURpYWxvZ0Nsb3NlRGlyZWN0aXZlLFxuICAgIEZzU3VibWl0QnV0dG9uRGlyZWN0aXZlLFxuICAgIEZzRm9ybVZhbGlkYXRlRGlyZWN0aXZlLFxuICAgIEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQsXG4gICAgRnNGb3JtTm9Gc1ZhbGlkYXRvcnNEaXJlY3RpdmUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgdXNlQ2xhc3M6IFNob3dPbkRpcnR5RXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGb3JtTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGc0Zvcm1Nb2R1bGU+IHtcblxuICAgIC8qKlxuICAgICAqIEhhY2s6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIwMDk3XG4gICAgICovXG4gICAgRXJyb3JTdGF0ZU1hdGNoZXIucHJvdG90eXBlLmlzRXJyb3JTdGF0ZSA9IChjb250cm9sOiBGb3JtQ29udHJvbCB8IG51bGwsIGZvcm06IEZvcm1Hcm91cERpcmVjdGl2ZSB8IE5nRm9ybSB8IG51bGwpOiBib29sZWFuID0+IHtcbiAgICAgIHJldHVybiBjb250cm9sPy5pbnZhbGlkICYmIGNvbnRyb2w/LnRvdWNoZWQgJiYgY29udHJvbD8uZGlydHk7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRnNGb3JtTW9kdWxlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,40 +1,40 @@
1
- import { Injectable } from '@angular/core';
2
- import { FsPrompt } from '@firestitch/prompt';
3
- import { of } from 'rxjs';
4
- import { FsFormDirective } from '../directives/form/form.directive';
5
- import { confirmUnsaved } from '../helpers/confirm-unsaved';
6
- import { map } from 'rxjs/operators';
7
- import { confirmResultContinue } from '../helpers';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@firestitch/prompt";
10
- export class FormDeactivateGuard {
11
- constructor(_prompt) {
12
- this._prompt = _prompt;
13
- }
14
- canDeactivate(directive) {
15
- if (!('getForm' in directive)) {
16
- const error = `Directive ${directive.constructor.name} does not property implement interface FormDeactivate`;
17
- console.error(error);
18
- return of(true);
19
- }
20
- const form = directive.getForm();
21
- if (!(form instanceof FsFormDirective)) {
22
- const error = `Directive ${directive.constructor.name}.getForm() does not return a valid FsFormDirective`;
23
- console.error(error);
24
- return of(true);
25
- }
26
- return confirmUnsaved(form, this._prompt)
27
- .pipe(map((result) => {
28
- return confirmResultContinue(result);
29
- }));
30
- }
31
- }
32
- FormDeactivateGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormDeactivateGuard, deps: [{ token: i1.FsPrompt }], target: i0.ɵɵFactoryTarget.Injectable });
33
- FormDeactivateGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormDeactivateGuard, providedIn: 'root' });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormDeactivateGuard, decorators: [{
35
- type: Injectable,
36
- args: [{
37
- providedIn: 'root'
38
- }]
39
- }], ctorParameters: function () { return [{ type: i1.FsPrompt }]; } });
1
+ import { Injectable } from '@angular/core';
2
+ import { FsPrompt } from '@firestitch/prompt';
3
+ import { of } from 'rxjs';
4
+ import { FsFormDirective } from '../directives/form/form.directive';
5
+ import { confirmUnsaved } from '../helpers/confirm-unsaved';
6
+ import { map } from 'rxjs/operators';
7
+ import { confirmResultContinue } from '../helpers';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@firestitch/prompt";
10
+ export class FormDeactivateGuard {
11
+ constructor(_prompt) {
12
+ this._prompt = _prompt;
13
+ }
14
+ canDeactivate(directive) {
15
+ if (!('getForm' in directive)) {
16
+ const error = `Directive ${directive.constructor.name} does not property implement interface FormDeactivate`;
17
+ console.error(error);
18
+ return of(true);
19
+ }
20
+ const form = directive.getForm();
21
+ if (!(form instanceof FsFormDirective)) {
22
+ const error = `Directive ${directive.constructor.name}.getForm() does not return a valid FsFormDirective`;
23
+ console.error(error);
24
+ return of(true);
25
+ }
26
+ return confirmUnsaved(form, this._prompt)
27
+ .pipe(map((result) => {
28
+ return confirmResultContinue(result);
29
+ }));
30
+ }
31
+ }
32
+ FormDeactivateGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormDeactivateGuard, deps: [{ token: i1.FsPrompt }], target: i0.ɵɵFactoryTarget.Injectable });
33
+ FormDeactivateGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormDeactivateGuard, providedIn: 'root' });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormDeactivateGuard, decorators: [{
35
+ type: Injectable,
36
+ args: [{
37
+ providedIn: 'root'
38
+ }]
39
+ }], ctorParameters: function () { return [{ type: i1.FsPrompt }]; } });
40
40
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kZWFjdGl2YXRlLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9ndWFyZHMvZm9ybS1kZWFjdGl2YXRlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFLbkQsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixZQUFvQixPQUFpQjtRQUFqQixZQUFPLEdBQVAsT0FBTyxDQUFVO0lBQUcsQ0FBQztJQUV6QyxhQUFhLENBQUMsU0FBeUI7UUFFckMsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxFQUFFO1lBQzdCLE1BQU0sS0FBSyxHQUFHLGFBQW1CLFNBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSx1REFBdUQsQ0FBQztZQUNwSCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsTUFBTSxJQUFJLEdBQW9CLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVsRCxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksZUFBZSxDQUFDLEVBQUU7WUFDdEMsTUFBTSxLQUFLLEdBQUcsYUFBYSxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksb0RBQW9ELENBQUM7WUFDMUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQjtRQUVELE9BQU8sY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ3RDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNiLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7O2lIQTFCVSxtQkFBbUI7cUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZzUHJvbXB0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvcHJvbXB0JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRm9ybURlYWN0aXZhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zvcm0tZGVhY3RpdmF0ZSc7XG5pbXBvcnQgeyBjb25maXJtVW5zYXZlZCB9IGZyb20gJy4uL2hlbHBlcnMvY29uZmlybS11bnNhdmVkJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvbmZpcm1SZXN1bHRDb250aW51ZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtRGVhY3RpdmF0ZUd1YXJkIGltcGxlbWVudHMgQ2FuRGVhY3RpdmF0ZTxhbnk+IHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wcm9tcHQ6IEZzUHJvbXB0KSB7fVxuXG4gIGNhbkRlYWN0aXZhdGUoZGlyZWN0aXZlOiBGb3JtRGVhY3RpdmF0ZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgaWYgKCEoJ2dldEZvcm0nIGluIGRpcmVjdGl2ZSkpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gYERpcmVjdGl2ZSAkeyg8YW55PmRpcmVjdGl2ZSkuY29uc3RydWN0b3IubmFtZX0gZG9lcyBub3QgcHJvcGVydHkgaW1wbGVtZW50IGludGVyZmFjZSBGb3JtRGVhY3RpdmF0ZWA7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtOiBGc0Zvcm1EaXJlY3RpdmUgPSBkaXJlY3RpdmUuZ2V0Rm9ybSgpO1xuXG4gICAgaWYgKCEoZm9ybSBpbnN0YW5jZW9mIEZzRm9ybURpcmVjdGl2ZSkpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gYERpcmVjdGl2ZSAke2RpcmVjdGl2ZS5jb25zdHJ1Y3Rvci5uYW1lfS5nZXRGb3JtKCkgZG9lcyBub3QgcmV0dXJuIGEgdmFsaWQgRnNGb3JtRGlyZWN0aXZlYDtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb25maXJtVW5zYXZlZChmb3JtLCB0aGlzLl9wcm9tcHQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICByZXR1cm4gY29uZmlybVJlc3VsdENvbnRpbnVlKHJlc3VsdCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxufVxuIl19
@@ -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,70 +1,70 @@
1
- import { Observable } from 'rxjs';
2
- import { first } from 'rxjs/operators';
3
- import { ConfirmResult } from '../enums/confirm-result';
4
- export function confirmUnsaved(form, prompt) {
5
- return new Observable(observer => {
6
- if (!form.confirm || !form.ngForm.dirty) {
7
- observer.next(ConfirmResult.Pristine);
8
- observer.complete();
9
- return;
10
- }
11
- let title = 'You Have Unsaved Changes';
12
- let message = 'What would you like to do with your changes?';
13
- let saveLabel = 'Save & Continue';
14
- let discardLabel = 'Discard Changes & Continue';
15
- let cancelLabel = 'Review Changes';
16
- if (typeof form.confirm === 'object') {
17
- title = form.confirm.title || title;
18
- message = form.confirm.message || message;
19
- saveLabel = form.confirm.saveLabel || saveLabel;
20
- discardLabel = form.confirm.discardLabel || discardLabel;
21
- cancelLabel = form.confirm.cancelLabel || cancelLabel;
22
- }
23
- prompt.confirm({
24
- title: title,
25
- template: message,
26
- dialogConfig: { width: 'auto' },
27
- buttons: [
28
- {
29
- label: saveLabel,
30
- color: 'primary',
31
- value: 'save'
32
- },
33
- {
34
- label: discardLabel,
35
- value: 'discard'
36
- },
37
- {
38
- label: cancelLabel,
39
- cancel: true
40
- }
41
- ]
42
- }).subscribe((value) => {
43
- if (value === 'discard') {
44
- observer.next(ConfirmResult.Discard);
45
- observer.complete();
46
- form.reset();
47
- }
48
- if (value === 'save') {
49
- form.submitted
50
- .pipe(first())
51
- .subscribe(() => {
52
- observer.next(ConfirmResult.Save);
53
- observer.complete();
54
- });
55
- form.invalid
56
- .pipe(first())
57
- .subscribe(() => {
58
- observer.next(ConfirmResult.Invalid);
59
- observer.complete();
60
- });
61
- form.ngForm.control.markAsPristine();
62
- form.ngForm.ngSubmit.emit();
63
- }
64
- }, (error) => {
65
- observer.next(ConfirmResult.Review);
66
- observer.complete();
67
- });
68
- });
69
- }
1
+ import { Observable } from 'rxjs';
2
+ import { first } from 'rxjs/operators';
3
+ import { ConfirmResult } from '../enums/confirm-result';
4
+ export function confirmUnsaved(form, prompt) {
5
+ return new Observable(observer => {
6
+ if (!form.confirm || !form.ngForm.dirty) {
7
+ observer.next(ConfirmResult.Pristine);
8
+ observer.complete();
9
+ return;
10
+ }
11
+ let title = 'You Have Unsaved Changes';
12
+ let message = 'What would you like to do with your changes?';
13
+ let saveLabel = 'Save & Continue';
14
+ let discardLabel = 'Discard Changes & Continue';
15
+ let cancelLabel = 'Review Changes';
16
+ if (typeof form.confirm === 'object') {
17
+ title = form.confirm.title || title;
18
+ message = form.confirm.message || message;
19
+ saveLabel = form.confirm.saveLabel || saveLabel;
20
+ discardLabel = form.confirm.discardLabel || discardLabel;
21
+ cancelLabel = form.confirm.cancelLabel || cancelLabel;
22
+ }
23
+ prompt.confirm({
24
+ title: title,
25
+ template: message,
26
+ dialogConfig: { width: 'auto' },
27
+ buttons: [
28
+ {
29
+ label: saveLabel,
30
+ color: 'primary',
31
+ value: 'save'
32
+ },
33
+ {
34
+ label: discardLabel,
35
+ value: 'discard'
36
+ },
37
+ {
38
+ label: cancelLabel,
39
+ cancel: true
40
+ }
41
+ ]
42
+ }).subscribe((value) => {
43
+ if (value === 'discard') {
44
+ observer.next(ConfirmResult.Discard);
45
+ observer.complete();
46
+ form.reset();
47
+ }
48
+ if (value === 'save') {
49
+ form.submitted
50
+ .pipe(first())
51
+ .subscribe(() => {
52
+ observer.next(ConfirmResult.Save);
53
+ observer.complete();
54
+ });
55
+ form.invalid
56
+ .pipe(first())
57
+ .subscribe(() => {
58
+ observer.next(ConfirmResult.Invalid);
59
+ observer.complete();
60
+ });
61
+ form.ngForm.control.markAsPristine();
62
+ form.ngForm.ngSubmit.emit();
63
+ }
64
+ }, (error) => {
65
+ observer.next(ConfirmResult.Review);
66
+ observer.complete();
67
+ });
68
+ });
69
+ }
70
70
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS11bnNhdmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9oZWxwZXJzL2NvbmZpcm0tdW5zYXZlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFxQixFQUFFLE1BQWdCO0lBQ3BFLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTztTQUNSO1FBRUQsSUFBSSxLQUFLLEdBQUcsMEJBQTBCLENBQUM7UUFDdkMsSUFBSSxPQUFPLEdBQUcsOENBQThDLENBQUM7UUFDN0QsSUFBSSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDbEMsSUFBSSxZQUFZLEdBQUcsNEJBQTRCLENBQUM7UUFDaEQsSUFBSSxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7UUFFbkMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQ3BDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7WUFDcEMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztZQUMxQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDO1lBQ2hELFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUM7WUFDekQsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQztTQUN2RDtRQUVELE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDYixLQUFLLEVBQUUsS0FBSztZQUNaLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDL0IsT0FBTyxFQUFFO2dCQUNQO29CQUNFLEtBQUssRUFBRSxTQUFTO29CQUNoQixLQUFLLEVBQUUsU0FBUztvQkFDaEIsS0FBSyxFQUFFLE1BQU07aUJBQ2Q7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLFlBQVk7b0JBQ25CLEtBQUssRUFBRSxTQUFTO2lCQUNqQjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsV0FBVztvQkFDbEIsTUFBTSxFQUFFLElBQUk7aUJBQ2I7YUFDRjtTQUNGLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUVyQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7Z0JBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1lBRUQsSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO2dCQUVwQixJQUFJLENBQUMsU0FBUztxQkFDYixJQUFJLENBQ0gsS0FBSyxFQUFFLENBQ1I7cUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDZCxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsT0FBTztxQkFDWCxJQUFJLENBQ0gsS0FBSyxFQUFFLENBQ1I7cUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDZCxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDckMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDN0I7UUFFSCxDQUFDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNoQixRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29uZmlybVJlc3VsdCB9IGZyb20gJy4uL2VudW1zL2NvbmZpcm0tcmVzdWx0JztcblxuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlybVVuc2F2ZWQoZm9ybTogRnNGb3JtRGlyZWN0aXZlLCBwcm9tcHQ6IEZzUHJvbXB0KTogT2JzZXJ2YWJsZTxDb25maXJtUmVzdWx0PiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG5cbiAgICBpZiAoIWZvcm0uY29uZmlybSB8fCAhZm9ybS5uZ0Zvcm0uZGlydHkpIHtcbiAgICAgIG9ic2VydmVyLm5leHQoQ29uZmlybVJlc3VsdC5QcmlzdGluZSk7XG4gICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB0aXRsZSA9ICdZb3UgSGF2ZSBVbnNhdmVkIENoYW5nZXMnO1xuICAgIGxldCBtZXNzYWdlID0gJ1doYXQgd291bGQgeW91IGxpa2UgdG8gZG8gd2l0aCB5b3VyIGNoYW5nZXM/JztcbiAgICBsZXQgc2F2ZUxhYmVsID0gJ1NhdmUgJiBDb250aW51ZSc7XG4gICAgbGV0IGRpc2NhcmRMYWJlbCA9ICdEaXNjYXJkIENoYW5nZXMgJiBDb250aW51ZSc7XG4gICAgbGV0IGNhbmNlbExhYmVsID0gJ1JldmlldyBDaGFuZ2VzJztcblxuICAgIGlmICh0eXBlb2YgZm9ybS5jb25maXJtID09PSAnb2JqZWN0Jykge1xuICAgICAgdGl0bGUgPSBmb3JtLmNvbmZpcm0udGl0bGUgfHwgdGl0bGU7XG4gICAgICBtZXNzYWdlID0gZm9ybS5jb25maXJtLm1lc3NhZ2UgfHwgbWVzc2FnZTtcbiAgICAgIHNhdmVMYWJlbCA9IGZvcm0uY29uZmlybS5zYXZlTGFiZWwgfHwgc2F2ZUxhYmVsO1xuICAgICAgZGlzY2FyZExhYmVsID0gZm9ybS5jb25maXJtLmRpc2NhcmRMYWJlbCB8fCBkaXNjYXJkTGFiZWw7XG4gICAgICBjYW5jZWxMYWJlbCA9IGZvcm0uY29uZmlybS5jYW5jZWxMYWJlbCB8fCBjYW5jZWxMYWJlbDtcbiAgICB9XG5cbiAgICBwcm9tcHQuY29uZmlybSh7XG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICB0ZW1wbGF0ZTogbWVzc2FnZSxcbiAgICAgIGRpYWxvZ0NvbmZpZzogeyB3aWR0aDogJ2F1dG8nIH0sXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogc2F2ZUxhYmVsLFxuICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgdmFsdWU6ICdzYXZlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IGRpc2NhcmRMYWJlbCxcbiAgICAgICAgICB2YWx1ZTogJ2Rpc2NhcmQnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogY2FuY2VsTGFiZWwsXG4gICAgICAgICAgY2FuY2VsOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gJ2Rpc2NhcmQnKSB7XG4gICAgICAgIG9ic2VydmVyLm5leHQoQ29uZmlybVJlc3VsdC5EaXNjYXJkKTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgZm9ybS5yZXNldCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09ICdzYXZlJykge1xuXG4gICAgICAgIGZvcm0uc3VibWl0dGVkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpcnN0KClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KENvbmZpcm1SZXN1bHQuU2F2ZSk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9ybS5pbnZhbGlkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpcnN0KClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KENvbmZpcm1SZXN1bHQuSW52YWxpZCk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9ybS5uZ0Zvcm0uY29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICBmb3JtLm5nRm9ybS5uZ1N1Ym1pdC5lbWl0KCk7XG4gICAgICB9XG5cbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgb2JzZXJ2ZXIubmV4dChDb25maXJtUmVzdWx0LlJldmlldyk7XG4gICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==