@lagoshny/ngx-validation-messages 17.0.2 → 17.1.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 17.1.0 (2025-12-01)
2
+ #### Updated lib to standalone
3
+ Migration from NgModule system to standalone.
4
+
5
+ >Changed lib configuration, check new approach in README.md.
6
+
1
7
  ## 17.0.0 (2025-11-30)
2
8
  #### Updated angular
3
9
  Updated to Angular 17.
package/README.md CHANGED
@@ -22,26 +22,29 @@
22
22
  <br />
23
23
  <br />
24
24
 
25
- ## ⭐Compatible with Angular 12.x.x - 13.x.x versions that uses `Ivy compilation`.
26
-
25
+ ## ⭐Compatible with Angular 14.x.x-17.x.x versions that uses `Ivy compilation` and `NgModule`/`standalone` components.
27
26
 
28
27
  ### ⚠ If you use old `View Engine` compilation or Angular 6.x.x - 11.x.x you need to use [2.x.x](https://github.com/lagoshny/ngx-validation-messages/tree/lts-view-engine) lib version.
29
28
  >
30
29
  >See more about it [here](https://github.com/lagoshny/ngx-validation-messages/blob/master/CHANGELOG.md#300-2021-12-23).
31
30
 
32
- ### 💡 New versioning policy.
33
-
31
+ ### 💡 Old versioning policy.
34
32
  - Versions that work with old `View Engine` compilation [`2.0.0`-`2.x.x`].
35
33
 
36
34
  - Versions that work with new `Ivy` compilation [`3.0.0`-`x.x.x`].
35
+ -
36
+ ### 💡 New versioning policy.
37
+ Now lib version matches to Angular supported version.
37
38
 
39
+ For example lastest 17.x.x lib version supports for Angular 17.
38
40
 
39
41
  This library allows you to decrease boilerplate code when handling validations error messages.
40
42
  ## Contents
41
43
  1. [Changelog](#Changelog)
42
44
  1. [Getting started](#Getting-started)
43
45
  1. [Installation](#Installation)
44
- 2. [Base configuration](#Base-configuration)
46
+ 2. [Base configuration Standalone](#Base-configuration-standalone)
47
+ 2. [Base configuration NgModule](#Base-configuration-ngmodule)
45
48
  2. [Usage](#Usage)
46
49
  1. [Template driven approach (ngModel)](#1-template-driven-approach-ngmodel)
47
50
  2. [Form driven approach (reactive)](#2-form-driven-approach-reactive)
@@ -65,26 +68,81 @@ This library allows you to decrease boilerplate code when handling validations e
65
68
  npm install @lagoshny/ngx-validation-messages@latest --save
66
69
  ```
67
70
 
68
- ### Base configuration
69
-
71
+ ### Base configuration Standalone
72
+ If you use standalone components in your Angular application use this configuration style:
73
+
74
+ To work with main `NgxValidationMessagesComponent` which decrease boilerplate validation code you need
75
+ in the root application configuration file import `provideNgxValidationMessages` and pass configuration which contains validation messages for validators:
76
+ ```typescript
77
+ // ...
78
+ import { provideNgxValidationMessages } from '@lagoshny/ngx-validation-messages';
79
+
80
+ export const appConfig: ApplicationConfig = {
81
+ providers: [
82
+ // ...
83
+ provideNgxValidationMessages({
84
+ messages: {
85
+ // Key is validator name, value is validator message
86
+ required: 'This is required filed!',
87
+ // If validator gets params, you can specify params placeholder in the validation message
88
+ // to get validator params values for constructing more detail message
89
+ maxlength: 'Max count symbols are #[requiredLength]',
90
+ minlength: 'Min count symbols are #[requiredLength]'
91
+ }
92
+ }),
93
+ // ...
94
+ ]
95
+ }
96
+ // ...
97
+ ```
98
+
99
+ ##### Note: validator's name specified in configuration case sensitive, if you will use name 'maxLength' instead 'maxlength' your message will not apply. In `console output` you will see error about it.
100
+
101
+ In your components where you want to use `NgxValidationMessagesComponent`, you need simple import
102
+ `NgxValidationMessagesComponent`:
103
+
104
+ ```typescript
105
+ // ...
106
+ import { NgxValidationMessagesComponent } from '@lagoshny/ngx-validation-messages';
107
+
108
+ @Component({
109
+ standalone: true,
110
+ selector: 'some-selector',
111
+ templateUrl: './some-template.component.html',
112
+ imports: [
113
+ NgxValidationMessagesComponent,
114
+ ],
115
+ })
116
+ export class SomeModule {
117
+ }
118
+ // ...
119
+ ```
120
+
121
+ After that you can use the `NgxValidationMessagesComponent` in your templates, about it see below.
122
+
123
+ ### Base configuration NgModule
124
+ If you use old `NgModule` in your Angular application use this configuration style:
125
+
70
126
  To work with main `NgxValidationMessagesComponent` which decrease boilerplate validation code you need
71
127
  in the root application module import `NgxValidationMessagesModule` passing configuration which contains validation messages for validators:
72
128
  ```typescript
73
129
  // ...
74
- import { NgxValidationMessagesModule } from '@lagoshny/ngx-validation-messages';
130
+ import { provideNgxValidationMessages } from '@lagoshny/ngx-validation-messages';
75
131
 
76
132
  @NgModule({
77
- imports: [
78
- NgxValidationMessagesModule.forRoot({
79
- messages: {
80
- // Key is validator name, value is validator message
81
- required: 'This is required filed!',
82
- // If validator gets params, you can specify params placeholder in the validation message
83
- // to get validator params values for constructing more detail message
84
- maxlength: 'Max count symbols are #[requiredLength]',
85
- minlength: 'Min count symbols are #[requiredLength]'
86
- }
87
- })
133
+ providers: [
134
+ // ...
135
+ provideNgxValidationMessages({
136
+ messages: {
137
+ // Key is validator name, value is validator message
138
+ required: 'This is required filed!',
139
+ // If validator gets params, you can specify params placeholder in the validation message
140
+ // to get validator params values for constructing more detail message
141
+ maxlength: 'Max count symbols are #[requiredLength]',
142
+ minlength: 'Min count symbols are #[requiredLength]'
143
+ }
144
+ }),
145
+ // ...
88
146
  ]
89
147
  })
90
148
  export class AppRootModule {
@@ -95,14 +153,15 @@ export class AppRootModule {
95
153
  ##### Note: validator's name specified in configuration case sensitive, if you will use name 'maxLength' instead 'maxlength' your message will not apply. In `console output` you will see error about it.
96
154
 
97
155
  In other modules where you want to use `NgxValidationMessagesComponent`, you need simple import
98
- `NgxValidationMessagesModule`:
156
+ `NgxValidationMessagesComponent`:
157
+
99
158
  ```typescript
100
159
  // ...
101
- import { NgxValidationMessagesModule } from '@lagoshny/ngx-validation-messages';
160
+ import { NgxValidationMessagesComponent } from '@lagoshny/ngx-validation-messages';
102
161
 
103
162
  @NgModule({
104
163
  imports: [
105
- NgxValidationMessagesModule
164
+ NgxValidationMessagesComponent,
106
165
  ]
107
166
  })
108
167
  export class SomeModule {
@@ -111,7 +170,6 @@ export class SomeModule {
111
170
  ```
112
171
  After that you can use the `NgxValidationMessagesComponent` in your templates, about it see below.
113
172
 
114
-
115
173
  ### Usage
116
174
  #### 1. Template driven approach (ngModel)
117
175
  Usually, when you need to show validation message to a user you need to do in your component's template something like this:
@@ -249,14 +307,14 @@ Also you can override configured error messages for concrete case in standard wa
249
307
 
250
308
  ## How it works?
251
309
 
252
- In both cases `NgxValidationMessagesComponent` will get validation messages for each applied to form control validator from passed configuration object to `NgxValidationMessagesModule`
310
+ In both cases `NgxValidationMessagesComponent` will get validation messages for each applied to form control validator from passed configuration object to `provideNgxValidationMessages`
253
311
 
254
312
  For example, if you pass configuration like this:
255
313
 
256
314
  ````typescript
257
315
  //...
258
316
 
259
- NgxValidationMessagesModule.forRoot({
317
+ provideNgxValidationMessages({
260
318
  messages: {
261
319
  required: 'This is required filed!',
262
320
  minlength: 'Min count symbols are #[requiredLength]'
@@ -281,7 +339,7 @@ For example **maxlength or minlength** standard validators return passed length
281
339
  ## Advanced configuration
282
340
  ### Override configured validation messages
283
341
 
284
- If you want to specify a different message for some validator in the concrete HTML template you can use one of the following ways to override configured validation messages passed to `NgxValidationMessagesModule`.
342
+ If you want to specify a different message for some validator in the concrete HTML template you can use one of the following ways to override configured validation messages passed to `provideNgxValidationMessages`.
285
343
 
286
344
  #### 1. Use `NgxCustomMessageComponent` to override validation message with custom HTML-tag component
287
345
 
@@ -333,11 +391,11 @@ The second way to override message is using directive applied to child `<ngx-va
333
391
 
334
392
  ### Custom display validation messages styles
335
393
 
336
- If you want to change display default validation message styles, you can set custom CSS classes in the passed configuration for `NgxValidationMessagesModule` use optional param ***validationMessagesStyle***:
394
+ If you want to change display default validation message styles, you can set custom CSS classes in the passed configuration for `provideNgxValidationMessages` use optional param ***validationMessagesStyle***:
337
395
  ```typescript
338
396
  //...
339
397
 
340
- NgxValidationMessagesModule.forRoot({
398
+ provideNgxValidationMessages({
341
399
  messages: {
342
400
  required: 'This is required filed!',
343
401
  minlength: 'Min count symbols are #[requiredLength]'
@@ -411,7 +469,7 @@ After that you can define validation message for range validator like this:
411
469
  ```typescript
412
470
  //...
413
471
 
414
- NgxValidationMessagesModule.forRoot({
472
+ provideNgxValidationMessages({
415
473
  messages: {
416
474
  // You use validator name as range because you return error object with key 'range'
417
475
  // also you can use params placeholders returned in error 'range' object
@@ -1,4 +1,5 @@
1
1
  import { Component, ElementRef, Input, ViewChild } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
2
3
  import * as i0 from "@angular/core";
3
4
  /**
4
5
  * Component allows specifying custom validation message for the specified
@@ -16,19 +17,23 @@ export class NgxCustomMessageComponent {
16
17
  */
17
18
  message;
18
19
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxCustomMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgxCustomMessageComponent, selector: "ngx-custom-message", inputs: { validatorName: ["forValidator", "validatorName"] }, viewQueries: [{ propertyName: "message", first: true, predicate: ["message"], descendants: true }], ngImport: i0, template: `
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgxCustomMessageComponent, isStandalone: true, selector: "ngx-custom-message", inputs: { validatorName: ["forValidator", "validatorName"] }, viewQueries: [{ propertyName: "message", first: true, predicate: ["message"], descendants: true }], ngImport: i0, template: `
20
21
  <div #message>
21
22
  <ng-content></ng-content>
22
- </div>`, isInline: true });
23
+ </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
23
24
  }
24
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxCustomMessageComponent, decorators: [{
25
26
  type: Component,
26
27
  args: [{
28
+ standalone: true,
27
29
  selector: 'ngx-custom-message',
28
30
  template: `
29
31
  <div #message>
30
32
  <ng-content></ng-content>
31
- </div>`
33
+ </div>`,
34
+ imports: [
35
+ CommonModule,
36
+ ]
32
37
  }]
33
38
  }], propDecorators: { validatorName: [{
34
39
  type: Input,
@@ -37,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
37
42
  type: ViewChild,
38
43
  args: ['message']
39
44
  }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWN1c3RvbS1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvY29tcG9uZW50cy9uZ3gtY3VzdG9tLW1lc3NhZ2Uvbmd4LWN1c3RvbS1tZXNzYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV4RTs7Ozs7R0FLRztBQVFILE1BQU0sT0FBTyx5QkFBeUI7SUFFcEM7O09BRUc7SUFFSSxhQUFhLENBQVM7SUFFN0I7O09BRUc7SUFFSSxPQUFPLENBQWE7d0dBWmhCLHlCQUF5Qjs0RkFBekIseUJBQXlCLDROQUwxQjs7O1dBR0Q7OzRGQUVFLHlCQUF5QjtrQkFQckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUU7OztXQUdEO2lCQUNWOzhCQU9RLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsY0FBYztnQkFPZCxPQUFPO3NCQURiLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIENvbXBvbmVudCBhbGxvd3Mgc3BlY2lmeWluZyBjdXN0b20gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciB0aGUgc3BlY2lmaWVkXG4gKiB2YWxpZGF0b3IgdG8gb3ZlcnJpZGUgZGVmYXVsdCBtZXNzYWdlLlxuICpcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCBhcyBjaGlsZCBpbiB7QGxpbmsgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29tcG9uZW50fS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWN1c3RvbS1tZXNzYWdlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICNtZXNzYWdlPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PmBcbn0pXG5leHBvcnQgY2xhc3MgTmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB2YWxpZGF0b3IgZm9yIHdoaWNoIHlvdSB3YW50IHRvIG92ZXJyaWRlIHRoZSBtZXNzYWdlLlxuICAgKi9cbiAgQElucHV0KCdmb3JWYWxpZGF0b3InKVxuICBwdWJsaWMgdmFsaWRhdG9yTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250YWlucyBvdmVycmlkZGVuIG1lc3NhZ2UgZm9yIHZhbGlkYXRvci5cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ21lc3NhZ2UnKVxuICBwdWJsaWMgbWVzc2FnZTogRWxlbWVudFJlZjtcblxufVxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWN1c3RvbS1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvY29tcG9uZW50cy9uZ3gtY3VzdG9tLW1lc3NhZ2Uvbmd4LWN1c3RvbS1tZXNzYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFN0M7Ozs7O0dBS0c7QUFZSCxNQUFNLE9BQU8seUJBQXlCO0lBRXBDOztPQUVHO0lBRUksYUFBYSxDQUFTO0lBRTdCOztPQUVHO0lBRUksT0FBTyxDQUFhO3dHQVpoQix5QkFBeUI7NEZBQXpCLHlCQUF5QixnUEFSMUI7OztXQUdELDJEQUVQLFlBQVk7OzRGQUdILHlCQUF5QjtrQkFYckMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFOzs7V0FHRDtvQkFDVCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtpQkFDRjs4QkFPUSxhQUFhO3NCQURuQixLQUFLO3VCQUFDLGNBQWM7Z0JBT2QsT0FBTztzQkFEYixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBDb21wb25lbnQgYWxsb3dzIHNwZWNpZnlpbmcgY3VzdG9tIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgdGhlIHNwZWNpZmllZFxuICogdmFsaWRhdG9yIHRvIG92ZXJyaWRlIGRlZmF1bHQgbWVzc2FnZS5cbiAqXG4gKiBVc2UgdGhpcyBjb21wb25lbnQgYXMgY2hpbGQgaW4ge0BsaW5rIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbXBvbmVudH0uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ25neC1jdXN0b20tbWVzc2FnZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjbWVzc2FnZT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5gLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnQge1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdmFsaWRhdG9yIGZvciB3aGljaCB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGUgbWVzc2FnZS5cbiAgICovXG4gIEBJbnB1dCgnZm9yVmFsaWRhdG9yJylcbiAgcHVibGljIHZhbGlkYXRvck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQ29udGFpbnMgb3ZlcnJpZGRlbiBtZXNzYWdlIGZvciB2YWxpZGF0b3IuXG4gICAqL1xuICBAVmlld0NoaWxkKCdtZXNzYWdlJylcbiAgcHVibGljIG1lc3NhZ2U6IEVsZW1lbnRSZWY7XG5cbn1cbiJdfQ==
@@ -3,6 +3,8 @@ import { NgxValidatorNameDirective } from '../../directivies/ngx-validator-name.
3
3
  import { NGX_VALIDATION_MESSAGES_CONFIG } from '../../interface/ngx-validation-messages.config';
4
4
  import { NgxValidationMessagesService } from '../../service/ngx-validation-messages.service';
5
5
  import { NgxCustomMessageComponent } from '../ngx-custom-message/ngx-custom-message.component';
6
+ import { CommonModule } from '@angular/common';
7
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
8
  import * as i0 from "@angular/core";
7
9
  import * as i1 from "../../service/ngx-validation-messages.service";
8
10
  import * as i2 from "@angular/common";
@@ -91,11 +93,14 @@ export class NgxValidationMessagesComponent {
91
93
  });
92
94
  }
93
95
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesComponent, deps: [{ token: NGX_VALIDATION_MESSAGES_CONFIG }, { token: i1.NgxValidationMessagesService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
94
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgxValidationMessagesComponent, selector: "ngx-validation-messages, [ngxValidationMessages]", inputs: { formControl: ["for", "formControl"] }, queries: [{ propertyName: "customMsgComponent", predicate: NgxCustomMessageComponent }, { propertyName: "customMsgDirective", predicate: NgxValidatorNameDirective }], ngImport: i0, template: "<!--To show error messages standalone without component-->\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n <ng-content></ng-content>\n </span>\n</div>\n\n<ng-container *ngIf=\"errorMessages.length > 0\">\n\n <!--To show error messages in material ui style-->\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\n <ng-container *ngFor=\"let message of errorMessages\">\n <mat-error>{{ message }}</mat-error>\n </ng-container>\n </ng-container>\n\n <!--To show error messages in user style-->\n <ng-template #withoutMaterial>\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <div *ngFor=\"let message of errorMessages\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n {{ message }}\n </span>\n </div>\n </div>\n </ng-template>\n\n</ng-container>\n", styles: [".ngx_vm__def_error_block{position:relative;display:inline-block;width:100%;margin-bottom:10px;margin-top:2px;padding:8px;border-radius:0;background:#c51244;box-shadow:1px 1px 1px #aaa;opacity:.8}.ngx_vm__def_error_text{color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] });
96
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgxValidationMessagesComponent, isStandalone: true, selector: "ngx-validation-messages, [ngxValidationMessages]", inputs: { formControl: ["for", "formControl"] }, queries: [{ propertyName: "customMsgComponent", predicate: NgxCustomMessageComponent }, { propertyName: "customMsgDirective", predicate: NgxValidatorNameDirective }], ngImport: i0, template: "<!--To show error messages standalone without component-->\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n <ng-content></ng-content>\n </span>\n</div>\n\n<ng-container *ngIf=\"errorMessages.length > 0\">\n\n <!--To show error messages in material ui style-->\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\n <ng-container *ngFor=\"let message of errorMessages\">\n <mat-error>{{ message }}</mat-error>\n </ng-container>\n </ng-container>\n\n <!--To show error messages in user style-->\n <ng-template #withoutMaterial>\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <div *ngFor=\"let message of errorMessages\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n {{ message }}\n </span>\n </div>\n </div>\n </ng-template>\n\n</ng-container>\n", styles: [".ngx_vm__def_error_block{position:relative;display:inline-block;width:100%;margin-bottom:10px;margin-top:2px;padding:8px;border-radius:0;background:#c51244;box-shadow:1px 1px 1px #aaa;opacity:.8}.ngx_vm__def_error_text{color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] });
95
97
  }
96
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesComponent, decorators: [{
97
99
  type: Component,
98
- args: [{ selector: 'ngx-validation-messages, [ngxValidationMessages]', template: "<!--To show error messages standalone without component-->\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n <ng-content></ng-content>\n </span>\n</div>\n\n<ng-container *ngIf=\"errorMessages.length > 0\">\n\n <!--To show error messages in material ui style-->\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\n <ng-container *ngFor=\"let message of errorMessages\">\n <mat-error>{{ message }}</mat-error>\n </ng-container>\n </ng-container>\n\n <!--To show error messages in user style-->\n <ng-template #withoutMaterial>\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <div *ngFor=\"let message of errorMessages\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n {{ message }}\n </span>\n </div>\n </div>\n </ng-template>\n\n</ng-container>\n", styles: [".ngx_vm__def_error_block{position:relative;display:inline-block;width:100%;margin-bottom:10px;margin-top:2px;padding:8px;border-radius:0;background:#c51244;box-shadow:1px 1px 1px #aaa;opacity:.8}.ngx_vm__def_error_text{color:#fff}\n"] }]
100
+ args: [{ standalone: true, selector: 'ngx-validation-messages, [ngxValidationMessages]', imports: [
101
+ CommonModule,
102
+ MatFormFieldModule,
103
+ ], template: "<!--To show error messages standalone without component-->\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n <ng-content></ng-content>\n </span>\n</div>\n\n<ng-container *ngIf=\"errorMessages.length > 0\">\n\n <!--To show error messages in material ui style-->\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\n <ng-container *ngFor=\"let message of errorMessages\">\n <mat-error>{{ message }}</mat-error>\n </ng-container>\n </ng-container>\n\n <!--To show error messages in user style-->\n <ng-template #withoutMaterial>\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <div *ngFor=\"let message of errorMessages\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n {{ message }}\n </span>\n </div>\n </div>\n </ng-template>\n\n</ng-container>\n", styles: [".ngx_vm__def_error_block{position:relative;display:inline-block;width:100%;margin-bottom:10px;margin-top:2px;padding:8px;border-radius:0;background:#c51244;box-shadow:1px 1px 1px #aaa;opacity:.8}.ngx_vm__def_error_text{color:#fff}\n"] }]
99
104
  }], ctorParameters: () => [{ type: undefined, decorators: [{
100
105
  type: Inject,
101
106
  args: [NGX_VALIDATION_MESSAGES_CONFIG]
@@ -109,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
109
114
  type: ContentChildren,
110
115
  args: [NgxValidatorNameDirective]
111
116
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMvc3JjL2xpYi9jb21wb25lbnRzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvY29tcG9uZW50cy9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDM0YsT0FBTyxFQUNMLDhCQUE4QixFQUUvQixNQUFNLGdEQUFnRCxDQUFDO0FBQ3hELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7OztBQUUvRjs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sOEJBQThCO0lBNkJrQjtJQUN2QztJQUNBO0lBN0JwQjs7T0FFRztJQUVJLFdBQVcsQ0FBTTtJQUV4Qjs7T0FFRztJQUVJLGtCQUFrQixDQUFDO0lBRTFCOztPQUVHO0lBRUksa0JBQWtCLENBQUM7SUFFbkIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUUvQjs7T0FFRztJQUNLLFlBQVksR0FBRyxPQUFPLENBQUM7SUFFdkIsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO0lBRTNDLFlBQTJELG1CQUFnRCxFQUN2Riw0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O2dCQU9uQyxrQkFBa0I7c0JBRHhCLGVBQWU7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4VmFsaWRhdG9yTmFtZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2aWVzL25neC12YWxpZGF0b3ItbmFtZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgTkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHLFxuICBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWdcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLmNvbmZpZyc7XG5pbXBvcnQgeyBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9uZ3gtY3VzdG9tLW1lc3NhZ2Uvbmd4LWN1c3RvbS1tZXNzYWdlLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIHZhbGlkYXRpb24gbWVzc2FnZXMsIHN1cHBvcnRzIGNoaWxkIGNvbXBvbmVudHMgb2YgdHlwZSB7QGxpbmsgTmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudH1cbiAqIGFuZCBodG1sIGVsZW1lbnRzIHdpdGggZGlyZWN0aXZlIHtAbGluayBOZ3hWYWxpZGF0b3JOYW1lRGlyZWN0aXZlfSB0byBvdmVycmlkZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcywgW25neFZhbGlkYXRpb25NZXNzYWdlc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIC8qKlxuICAgKiBGb3JtIGNvbnRyb2wgZm9yIHdoaWNoIG5lZWQgdG8gc2hvdyB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICAgKi9cbiAgQElucHV0KCdmb3InKVxuICBwdWJsaWMgZm9ybUNvbnRyb2w6IGFueTtcblxuICAvKipcbiAgICogQ29udGFpbnMge0BsaW5rIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnR9IGlmIHByZXNlbnQuXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnQpXG4gIHB1YmxpYyBjdXN0b21Nc2dDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5zIHtAbGluayBOZ3hWYWxpZGF0b3JOYW1lRGlyZWN0aXZlfSBpZiBwcmVzZW50LlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihOZ3hWYWxpZGF0b3JOYW1lRGlyZWN0aXZlKVxuICBwdWJsaWMgY3VzdG9tTXNnRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyBpc01hdGVyaWFsRXJyb3IgPSBmYWxzZTtcblxuICAvKipcbiAgICogS2V5IHRvIGdldCBkZWZhdWx0IHZhbGlkYXRpb24gbWVzc2FnZS5cbiAgICovXG4gIHByaXZhdGUgZGVmYXVsdEVycm9yID0gJ2Vycm9yJztcblxuICBwcml2YXRlIG1hdGVyaWFsRXJyb3JFbGVtZW50ID0gJ01BVC1FUlJPUic7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChOR1hfVkFMSURBVElPTl9NRVNTQUdFU19DT05GSUcpIHB1YmxpYyBuZ3hWYWxpZGF0aW9uQ29uZmlnOiBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWcsXG4gICAgICAgICAgICAgIHByaXZhdGUgbmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZTogTmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBkaXJlY3RpdmVFbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpcmVjdGl2ZUVsZW1lbnRSZWYgJiYgdGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICYmIHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lKSB7XG4gICAgICB0aGlzLmlzTWF0ZXJpYWxFcnJvciA9IHRoaXMubWF0ZXJpYWxFcnJvckVsZW1lbnQudG9Mb2NhbGVVcHBlckNhc2UoKVxuICAgICAgICA9PT0gdGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb2NhbGVVcHBlckNhc2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCB2YWxpZGF0aW9uIG1lc3NhZ2VzIGZvciBzcGVjaWZpZWQgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcHVibGljIGdldCBlcnJvck1lc3NhZ2VzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc3VsdDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sIHx8ICF0aGlzLmZvcm1Db250cm9sLmVycm9ycykge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgaWYgKHRoaXMuY3VzdG9tTXNnQ29tcG9uZW50ICYmIHRoaXMuY3VzdG9tTXNnQ29tcG9uZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvY2Vzc2luZ0N1c3RvbU1lc3NhZ2VzKHRoaXMuY3VzdG9tTXNnQ29tcG9uZW50KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY3VzdG9tTXNnRGlyZWN0aXZlICYmIHRoaXMuY3VzdG9tTXNnRGlyZWN0aXZlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvY2Vzc2luZ0N1c3RvbU1lc3NhZ2VzKHRoaXMuY3VzdG9tTXNnRGlyZWN0aXZlKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBpZiAodGhpcy5mb3JtQ29udHJvbC5lcnJvcnMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpXG4gICAgICAgICYmICh0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQgfHwgdGhpcy5mb3JtQ29udHJvbC5kaXJ0eSkpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW3Byb3BlcnR5XS5jdXN0b21NZXNzYWdlcyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbcHJvcGVydHldLmN1c3RvbU1lc3NhZ2VzKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbcHJvcGVydHldLmN1c3RvbU1lc3NhZ2UpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmZvcm1Db250cm9sLmVycm9yc1twcm9wZXJ0eV0uY3VzdG9tTWVzc2FnZSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyA9XG4gICAgICAgICAgdGhpcy5uZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLmdldFZhbGlkYXRvckVycm9yTWVzc2FnZXMocHJvcGVydHksIHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW3Byb3BlcnR5XSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHZhbGlkYXRpb25NZXNzYWdlIHx8IHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW3Byb3BlcnR5XS5tZXNzYWdlXG4gICAgICAgICAgfHwgdGhpcy5uZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLmdldFZhbGlkYXRvckVycm9yTWVzc2FnZXModGhpcy5kZWZhdWx0RXJyb3IpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc2luZ0N1c3RvbU1lc3NhZ2VzKGN1c3RvbU1lc3NhZ2U6IFF1ZXJ5TGlzdDxhbnk+KTogdm9pZCB7XG4gICAgY3VzdG9tTWVzc2FnZS5mb3JFYWNoKChtc2c6IGFueSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmZvcm1Db250cm9sLmVycm9yc1ttc2cudmFsaWRhdG9yTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IG1lc3NhZ2UgPSAobXNnIGluc3RhbmNlb2YgTmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudClcbiAgICAgICAgPyBtc2cubWVzc2FnZS5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA6IG1zZy5tZXNzYWdlO1xuICAgICAgbWVzc2FnZSA9IHRoaXMubmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZS5leHBhbmRQYXJhbWV0ZXJpemVkVGVtcGxhdGVNZXNzYWdlKG1lc3NhZ2UsIHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW21zZy52YWxpZGF0b3JOYW1lXSk7XG5cbiAgICAgIHR5cGVvZiB0aGlzLmZvcm1Db250cm9sLmVycm9yc1ttc2cudmFsaWRhdG9yTmFtZV0gPT09ICdvYmplY3QnXG4gICAgICAgID8gdGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbbXNnLnZhbGlkYXRvck5hbWVdLmN1c3RvbU1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgICAgIDogdGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbbXNnLnZhbGlkYXRvck5hbWVdID0ge2N1c3RvbU1lc3NhZ2U6IG1lc3NhZ2V9O1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjwhLS1UbyBzaG93IGVycm9yIG1lc3NhZ2VzIHN0YW5kYWxvbmUgd2l0aG91dCBjb21wb25lbnQtLT5cbjxkaXYgKm5nSWY9XCIhZm9ybUNvbnRyb2wgJiYgY3VzdG9tTXNnQ29tcG9uZW50Lmxlbmd0aCA9PSAwICYmIGN1c3RvbU1zZ0RpcmVjdGl2ZS5sZW5ndGggPT0gMFwiXG4gICAgIFtuZ0NsYXNzXT1cIm5neFZhbGlkYXRpb25Db25maWc/LnZhbGlkYXRpb25NZXNzYWdlc1N0eWxlPy5ibG9ja0NsYXNzTmFtZXMgfHwgJ25neF92bV9fZGVmX2Vycm9yX2Jsb2NrJ1wiPlxuIDxzcGFuIFtuZ0NsYXNzXT1cIm5neFZhbGlkYXRpb25Db25maWc/LnZhbGlkYXRpb25NZXNzYWdlc1N0eWxlPy50ZXh0Q2xhc3NOYW1lcyB8fCAnbmd4X3ZtX19kZWZfZXJyb3JfdGV4dCdcIj5cbiAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiA8L3NwYW4+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yTWVzc2FnZXMubGVuZ3RoID4gMFwiPlxuXG4gIDwhLS1UbyBzaG93IGVycm9yIG1lc3NhZ2VzIGluIG1hdGVyaWFsIHVpIHN0eWxlLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc01hdGVyaWFsRXJyb3I7IGVsc2Ugd2l0aG91dE1hdGVyaWFsXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzXCI+XG4gICAgICA8bWF0LWVycm9yPnt7IG1lc3NhZ2UgfX08L21hdC1lcnJvcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLVRvIHNob3cgZXJyb3IgbWVzc2FnZXMgaW4gdXNlciBzdHlsZS0tPlxuICA8bmctdGVtcGxhdGUgI3dpdGhvdXRNYXRlcmlhbD5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cIm5neFZhbGlkYXRpb25Db25maWc/LnZhbGlkYXRpb25NZXNzYWdlc1N0eWxlPy5ibG9ja0NsYXNzTmFtZXMgfHwgJ25neF92bV9fZGVmX2Vycm9yX2Jsb2NrJ1wiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzXCI+XG4gICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIm5neFZhbGlkYXRpb25Db25maWc/LnZhbGlkYXRpb25NZXNzYWdlc1N0eWxlPy50ZXh0Q2xhc3NOYW1lcyB8fCAnbmd4X3ZtX19kZWZfZXJyb3JfdGV4dCdcIj5cbiAgICAgICAgICB7eyBtZXNzYWdlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMvc3JjL2xpYi9jb21wb25lbnRzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvY29tcG9uZW50cy9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUNMLDhCQUE4QixFQUUvQixNQUFNLGdEQUFnRCxDQUFDO0FBQ3hELE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQzNGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7QUFFaEU7OztHQUdHO0FBV0gsTUFBTSxPQUFPLDhCQUE4QjtJQTZCa0I7SUFDdkM7SUFDQTtJQTdCcEI7O09BRUc7SUFFSSxXQUFXLENBQU07SUFFeEI7O09BRUc7SUFFSSxrQkFBa0IsQ0FBTTtJQUUvQjs7T0FFRztJQUVJLGtCQUFrQixDQUFNO0lBRXhCLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFF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Q0FDSSxJQUFJLFlBQ04sa0RBQWtELFdBR25EO3dCQUNQLFlBQVk7d0JBQ1osa0JBQWtCO3FCQUNuQjs7MEJBK0JZLE1BQU07MkJBQUMsOEJBQThCOzZHQXZCM0MsV0FBVztzQkFEakIsS0FBSzt1QkFBQyxLQUFLO2dCQU9MLGtCQUFrQjtzQkFEeEIsZUFBZTt1QkFBQyx5QkFBeUI7Z0JBT25DLGtCQUFrQjtzQkFEeEIsZUFBZTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ3hWYWxpZGF0b3JOYW1lRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9kaXJlY3Rpdmllcy9uZ3gtdmFsaWRhdG9yLW5hbWUuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gIE5HWF9WQUxJREFUSU9OX01FU1NBR0VTX0NPTkZJRyxcbiAgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29uZmlnXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb25maWcnO1xuaW1wb3J0IHtOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtOZ3hDdXN0b21NZXNzYWdlQ29tcG9uZW50fSBmcm9tICcuLi9uZ3gtY3VzdG9tLW1lc3NhZ2Uvbmd4LWN1c3RvbS1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgdmFsaWRhdGlvbiBtZXNzYWdlcywgc3VwcG9ydHMgY2hpbGQgY29tcG9uZW50cyBvZiB0eXBlIHtAbGluayBOZ3hDdXN0b21NZXNzYWdlQ29tcG9uZW50fVxuICogYW5kIGh0bWwgZWxlbWVudHMgd2l0aCBkaXJlY3RpdmUge0BsaW5rIE5neFZhbGlkYXRvck5hbWVEaXJlY3RpdmV9IHRvIG92ZXJyaWRlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLCBbbmd4VmFsaWRhdGlvbk1lc3NhZ2VzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIC8qKlxuICAgKiBGb3JtIGNvbnRyb2wgZm9yIHdoaWNoIG5lZWQgdG8gc2hvdyB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICAgKi9cbiAgQElucHV0KCdmb3InKVxuICBwdWJsaWMgZm9ybUNvbnRyb2w6IGFueTtcblxuICAvKipcbiAgICogQ29udGFpbnMge0BsaW5rIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnR9IGlmIHByZXNlbnQuXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnQpXG4gIHB1YmxpYyBjdXN0b21Nc2dDb21wb25lbnQ6IGFueTtcblxuICAvKipcbiAgICogQ29udGFpbnMge0BsaW5rIE5neFZhbGlkYXRvck5hbWVEaXJlY3RpdmV9IGlmIHByZXNlbnQuXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKE5neFZhbGlkYXRvck5hbWVEaXJlY3RpdmUpXG4gIHB1YmxpYyBjdXN0b21Nc2dEaXJlY3RpdmU6IGFueTtcblxuICBwdWJsaWMgaXNNYXRlcmlhbEVycm9yID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEtleSB0byBnZXQgZGVmYXVsdCB2YWxpZGF0aW9uIG1lc3NhZ2UuXG4gICAqL1xuICBwcml2YXRlIGRlZmF1bHRFcnJvciA9ICdlcnJvcic7XG5cbiAgcHJpdmF0ZSBtYXRlcmlhbEVycm9yRWxlbWVudCA9ICdNQVQtRVJST1InO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHKSBwdWJsaWMgbmd4VmFsaWRhdGlvbkNvbmZpZzogTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29uZmlnLFxuICAgICAgICAgICAgICBwcml2YXRlIG5neFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2U6IE5neFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZGlyZWN0aXZlRWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmICYmIHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAmJiB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZSkge1xuICAgICAgdGhpcy5pc01hdGVyaWFsRXJyb3IgPSB0aGlzLm1hdGVyaWFsRXJyb3JFbGVtZW50LnRvTG9jYWxlVXBwZXJDYXNlKClcbiAgICAgICAgPT09IHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG9jYWxlVXBwZXJDYXNlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgdmFsaWRhdGlvbiBtZXNzYWdlcyBmb3Igc3BlY2lmaWVkIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZXJyb3JNZXNzYWdlcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCByZXN1bHQ6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCB8fCAhdGhpcy5mb3JtQ29udHJvbC5lcnJvcnMpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmN1c3RvbU1zZ0NvbXBvbmVudCAmJiB0aGlzLmN1c3RvbU1zZ0NvbXBvbmVudC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2Nlc3NpbmdDdXN0b21NZXNzYWdlcyh0aGlzLmN1c3RvbU1zZ0NvbXBvbmVudCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmN1c3RvbU1zZ0RpcmVjdGl2ZSAmJiB0aGlzLmN1c3RvbU1zZ0RpcmVjdGl2ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2Nlc3NpbmdDdXN0b21NZXNzYWdlcyh0aGlzLmN1c3RvbU1zZ0RpcmVjdGl2ZSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiB0aGlzLmZvcm1Db250cm9sLmVycm9ycykge1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzLmhhc093blByb3BlcnR5KHByb3BlcnR5KVxuICAgICAgICAmJiAodGhpcy5mb3JtQ29udHJvbC50b3VjaGVkIHx8IHRoaXMuZm9ybUNvbnRyb2wuZGlydHkpKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sLmVycm9yc1twcm9wZXJ0eV0uY3VzdG9tTWVzc2FnZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW3Byb3BlcnR5XS5jdXN0b21NZXNzYWdlcyk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW3Byb3BlcnR5XS5jdXN0b21NZXNzYWdlKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbcHJvcGVydHldLmN1c3RvbU1lc3NhZ2UpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcgPVxuICAgICAgICAgIHRoaXMubmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZS5nZXRWYWxpZGF0b3JFcnJvck1lc3NhZ2VzKHByb3BlcnR5LCB0aGlzLmZvcm1Db250cm9sLmVycm9yc1twcm9wZXJ0eV0pO1xuICAgICAgICByZXN1bHQucHVzaCh2YWxpZGF0aW9uTWVzc2FnZSB8fCB0aGlzLmZvcm1Db250cm9sLmVycm9yc1twcm9wZXJ0eV0ubWVzc2FnZVxuICAgICAgICAgIHx8IHRoaXMubmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZS5nZXRWYWxpZGF0b3JFcnJvck1lc3NhZ2VzKHRoaXMuZGVmYXVsdEVycm9yKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NpbmdDdXN0b21NZXNzYWdlcyhjdXN0b21NZXNzYWdlOiBRdWVyeUxpc3Q8YW55Pik6IHZvaWQge1xuICAgIGN1c3RvbU1lc3NhZ2UuZm9yRWFjaCgobXNnOiBhbnkpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbbXNnLnZhbGlkYXRvck5hbWVdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBtZXNzYWdlID0gKG1zZyBpbnN0YW5jZW9mIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnQpXG4gICAgICAgID8gbXNnLm1lc3NhZ2UubmF0aXZlRWxlbWVudC5pbm5lclRleHQgOiBtc2cubWVzc2FnZTtcbiAgICAgIG1lc3NhZ2UgPSB0aGlzLm5neFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2UuZXhwYW5kUGFyYW1ldGVyaXplZFRlbXBsYXRlTWVzc2FnZShtZXNzYWdlLCB0aGlzLmZvcm1Db250cm9sLmVycm9yc1ttc2cudmFsaWRhdG9yTmFtZV0pO1xuXG4gICAgICB0eXBlb2YgdGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbbXNnLnZhbGlkYXRvck5hbWVdID09PSAnb2JqZWN0J1xuICAgICAgICA/IHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW21zZy52YWxpZGF0b3JOYW1lXS5jdXN0b21NZXNzYWdlID0gbWVzc2FnZVxuICAgICAgICA6IHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW21zZy52YWxpZGF0b3JOYW1lXSA9IHtjdXN0b21NZXNzYWdlOiBtZXNzYWdlfTtcbiAgICB9KTtcbiAgfVxuXG59XG4iLCI8IS0tVG8gc2hvdyBlcnJvciBtZXNzYWdlcyBzdGFuZGFsb25lIHdpdGhvdXQgY29tcG9uZW50LS0+XG48ZGl2ICpuZ0lmPVwiIWZvcm1Db250cm9sICYmIGN1c3RvbU1zZ0NvbXBvbmVudC5sZW5ndGggPT0gMCAmJiBjdXN0b21Nc2dEaXJlY3RpdmUubGVuZ3RoID09IDBcIlxuICAgICBbbmdDbGFzc109XCJuZ3hWYWxpZGF0aW9uQ29uZmlnPy52YWxpZGF0aW9uTWVzc2FnZXNTdHlsZT8uYmxvY2tDbGFzc05hbWVzIHx8ICduZ3hfdm1fX2RlZl9lcnJvcl9ibG9jaydcIj5cbiA8c3BhbiBbbmdDbGFzc109XCJuZ3hWYWxpZGF0aW9uQ29uZmlnPy52YWxpZGF0aW9uTWVzc2FnZXNTdHlsZT8udGV4dENsYXNzTmFtZXMgfHwgJ25neF92bV9fZGVmX2Vycm9yX3RleHQnXCI+XG4gICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gPC9zcGFuPlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDBcIj5cblxuICA8IS0tVG8gc2hvdyBlcnJvciBtZXNzYWdlcyBpbiBtYXRlcmlhbCB1aSBzdHlsZS0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNYXRlcmlhbEVycm9yOyBlbHNlIHdpdGhvdXRNYXRlcmlhbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgZXJyb3JNZXNzYWdlc1wiPlxuICAgICAgPG1hdC1lcnJvcj57eyBtZXNzYWdlIH19PC9tYXQtZXJyb3I+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS1UbyBzaG93IGVycm9yIG1lc3NhZ2VzIGluIHVzZXIgc3R5bGUtLT5cbiAgPG5nLXRlbXBsYXRlICN3aXRob3V0TWF0ZXJpYWw+XG4gICAgPGRpdiBbbmdDbGFzc109XCJuZ3hWYWxpZGF0aW9uQ29uZmlnPy52YWxpZGF0aW9uTWVzc2FnZXNTdHlsZT8uYmxvY2tDbGFzc05hbWVzIHx8ICduZ3hfdm1fX2RlZl9lcnJvcl9ibG9jaydcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgZXJyb3JNZXNzYWdlc1wiPlxuICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJuZ3hWYWxpZGF0aW9uQ29uZmlnPy52YWxpZGF0aW9uTWVzc2FnZXNTdHlsZT8udGV4dENsYXNzTmFtZXMgfHwgJ25neF92bV9fZGVmX2Vycm9yX3RleHQnXCI+XG4gICAgICAgICAge3sgbWVzc2FnZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -25,14 +25,15 @@ export class NgxValidatorNameDirective {
25
25
  this.message = this.elem.nativeElement.innerText;
26
26
  }
27
27
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidatorNameDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
28
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NgxValidatorNameDirective, selector: "[ngxValidatorName]", inputs: { validatorName: "validatorName" }, ngImport: i0 });
28
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NgxValidatorNameDirective, isStandalone: true, selector: "[ngxValidatorName]", inputs: { validatorName: "validatorName" }, ngImport: i0 });
29
29
  }
30
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidatorNameDirective, decorators: [{
31
31
  type: Directive,
32
32
  args: [{
33
+ standalone: true,
33
34
  selector: '[ngxValidatorName]'
34
35
  }]
35
36
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { validatorName: [{
36
37
  type: Input
37
38
  }] } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRvci1uYW1lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvZGlyZWN0aXZpZXMvbmd4LXZhbGlkYXRvci1uYW1lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU1RTs7Ozs7OztHQU9HO0FBSUgsTUFBTSxPQUFPLHlCQUF5QjtJQWFoQjtJQVhwQjs7T0FFRztJQUVJLGFBQWEsQ0FBUztJQUU3Qjs7T0FFRztJQUNJLE9BQU8sQ0FBUztJQUV2QixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3BDLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQ25ELENBQUM7d0dBbEJVLHlCQUF5Qjs0RkFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9COytFQU9RLGFBQWE7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQWxsb3dzIHRvIHNwZWNpZnkgY3VzdG9tIHZhbGlkYXRvciBtZXNzYWdlIHRvIG92ZXJyaWRlIGRlZmF1bHQgbWVzc2FnZS5cbiAqXG4gKiBJdCdzIGFsdGVybmF0aXZlIGZvciB7QGxpbmsgTmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudH0uXG4gKiBJZiB5b3Ugd2FudCB0byB1c2Ugc3RhbmRhcmQgaHRtbCB0YWdzIHRvIGRlZmluZSBjdXN0b20gbWVzc2FnZSwgdXNlIHRoaXMgZGlyZWN0aXZlIG9uIGh0bWwgdGFnIHdpdGhpblxuICoge0BsaW5rIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbXBvbmVudH0gc3BlY2lmeWluZyB2YWxpZGF0b3IgbmFtZSBhcyBkaXJlY3RpdmUgcGFyYW1ldGVyLFxuICogb3RoZXJ3aXNlIHVzZSB7QGxpbmsgTmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudH0uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ3hWYWxpZGF0b3JOYW1lXSdcbn0pXG5leHBvcnQgY2xhc3MgTmd4VmFsaWRhdG9yTmFtZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdmFsaWRhdG9yIGZvciB3aGljaCB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGUgbWVzc2FnZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2YWxpZGF0b3JOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5zIG92ZXJyaWRkZW4gbWVzc2FnZSBmb3IgdmFsaWRhdG9yLlxuICAgKi9cbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW06IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlID0gdGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0O1xuICB9XG5cbn1cbiJdfQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRvci1uYW1lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvZGlyZWN0aXZpZXMvbmd4LXZhbGlkYXRvci1uYW1lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU1RTs7Ozs7OztHQU9HO0FBS0gsTUFBTSxPQUFPLHlCQUF5QjtJQWFoQjtJQVhwQjs7T0FFRztJQUVJLGFBQWEsQ0FBUztJQUU3Qjs7T0FFRztJQUNJLE9BQU8sQ0FBUztJQUV2QixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3BDLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQ25ELENBQUM7d0dBbEJVLHlCQUF5Qjs0RkFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsb0JBQW9CO2lCQUMvQjsrRUFPUSxhQUFhO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFsbG93cyB0byBzcGVjaWZ5IGN1c3RvbSB2YWxpZGF0b3IgbWVzc2FnZSB0byBvdmVycmlkZSBkZWZhdWx0IG1lc3NhZ2UuXG4gKlxuICogSXQncyBhbHRlcm5hdGl2ZSBmb3Ige0BsaW5rIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnR9LlxuICogSWYgeW91IHdhbnQgdG8gdXNlIHN0YW5kYXJkIGh0bWwgdGFncyB0byBkZWZpbmUgY3VzdG9tIG1lc3NhZ2UsIHVzZSB0aGlzIGRpcmVjdGl2ZSBvbiBodG1sIHRhZyB3aXRoaW5cbiAqIHtAbGluayBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb21wb25lbnR9IHNwZWNpZnlpbmcgdmFsaWRhdG9yIG5hbWUgYXMgZGlyZWN0aXZlIHBhcmFtZXRlcixcbiAqIG90aGVyd2lzZSB1c2Uge0BsaW5rIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnR9LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbbmd4VmFsaWRhdG9yTmFtZV0nXG59KVxuZXhwb3J0IGNsYXNzIE5neFZhbGlkYXRvck5hbWVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHZhbGlkYXRvciBmb3Igd2hpY2ggeW91IHdhbnQgdG8gb3ZlcnJpZGUgdGhlIG1lc3NhZ2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdmFsaWRhdG9yTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250YWlucyBvdmVycmlkZGVuIG1lc3NhZ2UgZm9yIHZhbGlkYXRvci5cbiAgICovXG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtOiBFbGVtZW50UmVmKSB7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LmlubmVyVGV4dDtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { NGX_VALIDATION_MESSAGES_CONFIG } from './interface/ngx-validation-messages.config';
2
+ export { NGX_VALIDATION_MESSAGES_CONFIG } from './interface/ngx-validation-messages.config';
3
+ export { NgxCustomMessageComponent } from './components/ngx-custom-message/ngx-custom-message.component';
4
+ export { NgxValidationMessagesComponent } from './components/ngx-validation-messages/ngx-validation-messages.component';
5
+ export { NgxValidatorNameDirective } from './directivies/ngx-validator-name.directive';
6
+ export function provideNgxValidationMessages(config) {
7
+ return [
8
+ {
9
+ provide: NGX_VALIDATION_MESSAGES_CONFIG,
10
+ useValue: config
11
+ }
12
+ ];
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMucHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMvc3JjL2xpYi9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDhCQUE4QixFQUErQixNQUFNLDRDQUE0QyxDQUFDO0FBRXpILE9BQU8sRUFBQyw4QkFBOEIsRUFBOEIsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2SCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUN2RyxPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSx3RUFBd0UsQ0FBQztBQUN0SCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUVyRixNQUFNLFVBQVUsNEJBQTRCLENBQUMsTUFBbUM7SUFDOUUsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLDhCQUE4QjtZQUN2QyxRQUFRLEVBQUUsTUFBTTtTQUNqQjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHLCBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb25maWcnO1xyXG5cclxuZXhwb3J0IHtOR1hfVkFMSURBVElPTl9NRVNTQUdFU19DT05GSUcsIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZ30gZnJvbSAnLi9pbnRlcmZhY2Uvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29uZmlnJztcclxuZXhwb3J0IHtOZ3hDdXN0b21NZXNzYWdlQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvbmd4LWN1c3RvbS1tZXNzYWdlL25neC1jdXN0b20tbWVzc2FnZS5jb21wb25lbnQnO1xyXG5leHBvcnQge05neFZhbGlkYXRpb25NZXNzYWdlc0NvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7Tmd4VmFsaWRhdG9yTmFtZURpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3Rpdmllcy9uZ3gtdmFsaWRhdG9yLW5hbWUuZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTmd4VmFsaWRhdGlvbk1lc3NhZ2VzKGNvbmZpZzogTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29uZmlnKTogUHJvdmlkZXJbXSB7XHJcbiAgcmV0dXJuIFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHLFxyXG4gICAgICB1c2VWYWx1ZTogY29uZmlnXHJcbiAgICB9XHJcbiAgXTtcclxufVxyXG4iXX0=
@@ -62,12 +62,15 @@ export class NgxValidationMessagesService {
62
62
  }, obj);
63
63
  }
64
64
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService, deps: [{ token: NGX_VALIDATION_MESSAGES_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
65
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService });
65
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService, providedIn: 'root' });
66
66
  }
67
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService, decorators: [{
68
- type: Injectable
68
+ type: Injectable,
69
+ args: [{
70
+ providedIn: 'root',
71
+ }]
69
72
  }], ctorParameters: () => [{ type: undefined, decorators: [{
70
73
  type: Inject,
71
74
  args: [NGX_VALIDATION_MESSAGES_CONFIG]
72
75
  }] }] });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvc2VydmljZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBK0IsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFFMUg7OztHQUdHO0FBRUgsTUFBTSxPQUFPLDRCQUE0QjtJQVNxQjtJQVByRCxNQUFNLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUU3Qzs7T0FFRztJQUNLLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXRELFlBQTRELGNBQTJDO1FBQTNDLG1CQUFjLEdBQWQsY0FBYyxDQUE2QjtJQUN2RyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLHlCQUF5QixDQUFDLGFBQXFCLEVBQUUsTUFBZTtRQUNyRSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3hELE1BQU0saUJBQWlCLEdBQVcsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsR0FBRyxhQUFhO2tCQUNoRSwyRkFBMkYsQ0FBQyxDQUFDO1FBQ25HLENBQUM7UUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUMsa0NBQWtDLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztJQUVNLGtDQUFrQyxDQUFDLEdBQVcsRUFBRSxNQUFjO1FBQ25FLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMxQixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxZQUFZLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNuQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDZixPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7d0dBL0RVLDRCQUE0QixrQkFTbkIsOEJBQThCOzRHQVR2Qyw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVU7OzBCQVVJLE1BQU07MkJBQUMsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR1hfVkFMSURBVElPTl9NRVNTQUdFU19DT05GSUcsIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb25maWcnO1xuXG4vKipcbiAqIFNlcnZpY2UgYWxsb3dzIGdldHRpbmcgdmFsaWRhdGlvbiBtZXNzYWdlcyBmcm9tIGNsaWVudCdzIHNldHRpbmdzLlxuICogSW5qZWN0aW5nIHtAbGluayBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWd9IHRvIGdldCBjbGllbnQncyBjb25maWd1cmF0aW9uIHdpdGggdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5neFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2Uge1xuXG4gIHB1YmxpYyBzdGF0aWMgU0VSVkVSX0VSUk9SUyA9ICdzZXJ2ZXJFcnJvcnMnO1xuXG4gIC8qKlxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gZmluZCBwYXJhbXMgcGxhY2Vob2xkZXIgJyNbcGFyYW1OYW1lXScuXG4gICAqL1xuICBwcml2YXRlIHBhcmFtc1JlZ0V4cCA9IG5ldyBSZWdFeHAoLyNbW2EtekEtWl9cXFxcLV0qXS8pO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHKSBwcml2YXRlIG1lc3NhZ2VzQ29uZmlnOiBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWcpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBzcGVjaWZpZWQgdmFsaWRhdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsaWRhdG9yTmFtZSBmb3Igd2hpY2ggdG8gZ2V0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHBhcmFtcyBwYXNzZWQgZnJvbSB2YWxpZGF0b3IgZm9yIG1vcmUgZGV0YWlsZWQgdmFsaWRhdGlvbiBtZXNzYWdlXG4gICAqXG4gICAqIEByZXR1cm5zIHN0cmluZyB2YWxpZGF0aW9uIG1lc3NhZ2VcbiAgICovXG4gIHB1YmxpYyBnZXRWYWxpZGF0b3JFcnJvck1lc3NhZ2VzKHZhbGlkYXRvck5hbWU6IHN0cmluZywgcGFyYW1zPzogb2JqZWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZXMgPSB0aGlzLm1lc3NhZ2VzQ29uZmlnLm1lc3NhZ2VzO1xuICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcgPSB2YWxpZGF0aW9uTWVzc2FnZXNbdmFsaWRhdG9yTmFtZV07XG5cbiAgICBpZiAoIXZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbGlkYXRpb24gbWVzc2FnZSBmb3IgdmFsaWRhdG9yOiAnICsgdmFsaWRhdG9yTmFtZVxuICAgICAgICArICcgY2Fubm90IGJlIGZvdW5kLCBwbGVhc2UgY2hlY2sgdmFsaWRhdGlvbiBtZXNzYWdlIGtleSBmb3IgdmFsaWRhdG9yIGl0IGlzIGNhc2Ugc2Vuc2l0aXZlLicpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4cGFuZFBhcmFtZXRlcml6ZWRUZW1wbGF0ZU1lc3NhZ2UodmFsaWRhdGlvbk1lc3NhZ2UsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlO1xuICB9XG5cbiAgcHVibGljIGV4cGFuZFBhcmFtZXRlcml6ZWRUZW1wbGF0ZU1lc3NhZ2UobXNnOiBzdHJpbmcsIHBhcmFtczogb2JqZWN0KTogc3RyaW5nIHtcbiAgICB3aGlsZSAodGhpcy5wYXJhbXNSZWdFeHAudGVzdChtc2cpKSB7XG4gICAgICBjb25zdCBmb3VuZFBhcmFtcyA9IHRoaXMucGFyYW1zUmVnRXhwLmV4ZWMobXNnKTtcbiAgICAgIGZvdW5kUGFyYW1zLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbVBsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnI1snLCAnJykucmVwbGFjZSgnXScsICcnKTtcbiAgICAgICAgbXNnID0gbXNnLnJlcGxhY2UocGFyYW1QbGFjZWhvbGRlciwgdGhpcy5nZXRQYXJhbWV0ZXIocGFyYW1zLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1zZztcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHV0aWxpdGFyaWFuIG1ldGhvZCB0byBnZXQgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC5cbiAgICogaWYgdGhlcmUgaXMgbm8gcHJvcGVydHksIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIG9iaiBmcm9tIHdoaWNoIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIG9idGFpbmVkXG4gICAqIEBwYXJhbSBwcm9wIHByb3BlcnR5IG5hbWVcbiAgICpcbiAgICogQHJldHVybiBwcm9wZXJ0eSB2YWx1ZSBvciBlbXB0eSBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgZ2V0UGFyYW1ldGVyKG9iajogb2JqZWN0LCBwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwcm9wLnNwbGl0KCcuJylcbiAgICAgIC5yZWR1Y2UoKG0sIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIG0gJiYgdHlwZW9mIG0gPT09ICdvYmplY3QnID8gbVtpXSA6ICcnO1xuICAgICAgfSwgb2JqKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBzdGF0aWMgYXBwbHlTZXJ2ZXJFcnJvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsLCBzZXJ2ZXJFcnJvcjogU2VydmVyRXJyb3IpOiB2b2lkIHtcbiAgLy8gICBpZiAoIWNvbnRyb2wpIHtcbiAgLy8gICAgIHJldHVybjtcbiAgLy8gICB9XG4gIC8vICAgaWYgKGNvbnRyb2wuZ2V0RXJyb3IoTmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZS5TRVJWRVJfRVJST1JTKSkge1xuICAvLyAgICAgY29uc3QgZXhpc3RpbmdFcnJvck1lc3NhZ2VzID0gY29udHJvbC5nZXRFcnJvcihOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLlNFUlZFUl9FUlJPUlMpO1xuICAvLyAgICAgaWYgKF8uaXNBcnJheShleGlzdGluZ0Vycm9yTWVzc2FnZXMuY3VzdG9tTWVzc2FnZXMpICYmXG4gIC8vICAgICAgIGV4aXN0aW5nRXJyb3JNZXNzYWdlcy5jdXN0b21NZXNzYWdlcy5pbmRleE9mKHNlcnZlckVycm9yLm1lc3NhZ2UpID09PSAtMSkge1xuICAvLyAgICAgICBleGlzdGluZ0Vycm9yTWVzc2FnZXMuY3VzdG9tTWVzc2FnZXMucHVzaChzZXJ2ZXJFcnJvci5tZXNzYWdlKTtcbiAgLy8gICAgIH1cbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgY29udHJvbC5zZXRFcnJvcnMoe1tOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLlNFUlZFUl9FUlJPUlNdOiB7Y3VzdG9tTWVzc2FnZXM6IFtzZXJ2ZXJFcnJvci5tZXNzYWdlXX19KTtcbiAgLy8gICB9XG4gIC8vICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIC8vIH1cblxufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvc2VydmljZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBK0IsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFFMUg7OztHQUdHO0FBSUgsTUFBTSxPQUFPLDRCQUE0QjtJQVNxQjtJQVByRCxNQUFNLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUU3Qzs7T0FFRztJQUNLLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXRELFlBQTRELGNBQTJDO1FBQTNDLG1CQUFjLEdBQWQsY0FBYyxDQUE2QjtJQUN2RyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLHlCQUF5QixDQUFDLGFBQXFCLEVBQUUsTUFBZTtRQUNyRSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3hELE1BQU0saUJBQWlCLEdBQVcsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsR0FBRyxhQUFhO2tCQUNoRSwyRkFBMkYsQ0FBQyxDQUFDO1FBQ25HLENBQUM7UUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUMsa0NBQWtDLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztJQUVNLGtDQUFrQyxDQUFDLEdBQVcsRUFBRSxNQUFjO1FBQ25FLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMxQixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxZQUFZLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNuQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDZixPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7d0dBL0RVLDRCQUE0QixrQkFTbkIsOEJBQThCOzRHQVR2Qyw0QkFBNEIsY0FGM0IsTUFBTTs7NEZBRVAsNEJBQTRCO2tCQUh4QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBVWMsTUFBTTsyQkFBQyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HWF9WQUxJREFUSU9OX01FU1NBR0VTX0NPTkZJRywgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLmNvbmZpZyc7XG5cbi8qKlxuICogU2VydmljZSBhbGxvd3MgZ2V0dGluZyB2YWxpZGF0aW9uIG1lc3NhZ2VzIGZyb20gY2xpZW50J3Mgc2V0dGluZ3MuXG4gKiBJbmplY3Rpbmcge0BsaW5rIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZ30gdG8gZ2V0IGNsaWVudCdzIGNvbmZpZ3VyYXRpb24gd2l0aCB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZSB7XG5cbiAgcHVibGljIHN0YXRpYyBTRVJWRVJfRVJST1JTID0gJ3NlcnZlckVycm9ycyc7XG5cbiAgLyoqXG4gICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBmaW5kIHBhcmFtcyBwbGFjZWhvbGRlciAnI1twYXJhbU5hbWVdJy5cbiAgICovXG4gIHByaXZhdGUgcGFyYW1zUmVnRXhwID0gbmV3IFJlZ0V4cCgvI1tbYS16QS1aX1xcXFwtXSpdLyk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChOR1hfVkFMSURBVElPTl9NRVNTQUdFU19DT05GSUcpIHByaXZhdGUgbWVzc2FnZXNDb25maWc6IE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZykge1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIHNwZWNpZmllZCB2YWxpZGF0b3IuXG4gICAqXG4gICAqIEBwYXJhbSB2YWxpZGF0b3JOYW1lIGZvciB3aGljaCB0byBnZXQgbWVzc2FnZVxuICAgKiBAcGFyYW0gcGFyYW1zIHBhc3NlZCBmcm9tIHZhbGlkYXRvciBmb3IgbW9yZSBkZXRhaWxlZCB2YWxpZGF0aW9uIG1lc3NhZ2VcbiAgICpcbiAgICogQHJldHVybnMgc3RyaW5nIHZhbGlkYXRpb24gbWVzc2FnZVxuICAgKi9cbiAgcHVibGljIGdldFZhbGlkYXRvckVycm9yTWVzc2FnZXModmFsaWRhdG9yTmFtZTogc3RyaW5nLCBwYXJhbXM/OiBvYmplY3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlcyA9IHRoaXMubWVzc2FnZXNDb25maWcubWVzc2FnZXM7XG4gICAgY29uc3QgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyA9IHZhbGlkYXRpb25NZXNzYWdlc1t2YWxpZGF0b3JOYW1lXTtcblxuICAgIGlmICghdmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmFsaWRhdGlvbiBtZXNzYWdlIGZvciB2YWxpZGF0b3I6ICcgKyB2YWxpZGF0b3JOYW1lXG4gICAgICAgICsgJyBjYW5ub3QgYmUgZm91bmQsIHBsZWFzZSBjaGVjayB2YWxpZGF0aW9uIG1lc3NhZ2Uga2V5IGZvciB2YWxpZGF0b3IgaXQgaXMgY2FzZSBzZW5zaXRpdmUuJyk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kUGFyYW1ldGVyaXplZFRlbXBsYXRlTWVzc2FnZSh2YWxpZGF0aW9uTWVzc2FnZSwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gIH1cblxuICBwdWJsaWMgZXhwYW5kUGFyYW1ldGVyaXplZFRlbXBsYXRlTWVzc2FnZShtc2c6IHN0cmluZywgcGFyYW1zOiBvYmplY3QpOiBzdHJpbmcge1xuICAgIHdoaWxlICh0aGlzLnBhcmFtc1JlZ0V4cC50ZXN0KG1zZykpIHtcbiAgICAgIGNvbnN0IGZvdW5kUGFyYW1zID0gdGhpcy5wYXJhbXNSZWdFeHAuZXhlYyhtc2cpO1xuICAgICAgZm91bmRQYXJhbXMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtUGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCcjWycsICcnKS5yZXBsYWNlKCddJywgJycpO1xuICAgICAgICBtc2cgPSBtc2cucmVwbGFjZShwYXJhbVBsYWNlaG9sZGVyLCB0aGlzLmdldFBhcmFtZXRlcihwYXJhbXMsIHZhbHVlKSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXNnO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgdXRpbGl0YXJpYW4gbWV0aG9kIHRvIGdldCBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0LlxuICAgKiBpZiB0aGVyZSBpcyBubyBwcm9wZXJ0eSwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLlxuICAgKlxuICAgKiBAcGFyYW0gb2JqIGZyb20gd2hpY2ggdGhlIHByb3BlcnR5IG11c3QgYmUgb2J0YWluZWRcbiAgICogQHBhcmFtIHByb3AgcHJvcGVydHkgbmFtZVxuICAgKlxuICAgKiBAcmV0dXJuIHByb3BlcnR5IHZhbHVlIG9yIGVtcHR5IHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRQYXJhbWV0ZXIob2JqOiBvYmplY3QsIHByb3A6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHByb3Auc3BsaXQoJy4nKVxuICAgICAgLnJlZHVjZSgobSwgaSkgPT4ge1xuICAgICAgICByZXR1cm4gbSAmJiB0eXBlb2YgbSA9PT0gJ29iamVjdCcgPyBtW2ldIDogJyc7XG4gICAgICB9LCBvYmopO1xuICB9XG5cbiAgLy8gcHVibGljIHN0YXRpYyBhcHBseVNlcnZlckVycm9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwsIHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcik6IHZvaWQge1xuICAvLyAgIGlmICghY29udHJvbCkge1xuICAvLyAgICAgcmV0dXJuO1xuICAvLyAgIH1cbiAgLy8gICBpZiAoY29udHJvbC5nZXRFcnJvcihOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLlNFUlZFUl9FUlJPUlMpKSB7XG4gIC8vICAgICBjb25zdCBleGlzdGluZ0Vycm9yTWVzc2FnZXMgPSBjb250cm9sLmdldEVycm9yKE5neFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2UuU0VSVkVSX0VSUk9SUyk7XG4gIC8vICAgICBpZiAoXy5pc0FycmF5KGV4aXN0aW5nRXJyb3JNZXNzYWdlcy5jdXN0b21NZXNzYWdlcykgJiZcbiAgLy8gICAgICAgZXhpc3RpbmdFcnJvck1lc3NhZ2VzLmN1c3RvbU1lc3NhZ2VzLmluZGV4T2Yoc2VydmVyRXJyb3IubWVzc2FnZSkgPT09IC0xKSB7XG4gIC8vICAgICAgIGV4aXN0aW5nRXJyb3JNZXNzYWdlcy5jdXN0b21NZXNzYWdlcy5wdXNoKHNlcnZlckVycm9yLm1lc3NhZ2UpO1xuICAvLyAgICAgfVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBjb250cm9sLnNldEVycm9ycyh7W05neFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2UuU0VSVkVSX0VSUk9SU106IHtjdXN0b21NZXNzYWdlczogW3NlcnZlckVycm9yLm1lc3NhZ2VdfX0pO1xuICAvLyAgIH1cbiAgLy8gICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgLy8gfVxuXG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  /*
2
2
  * Public API Surface of ngx-validation-messages
3
3
  */
4
- export * from './lib/ngx-validation-messages.module';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXZhbGlkYXRpb24tbWVzc2FnZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMubW9kdWxlJztcbiJdfQ==
4
+ export * from './lib/ngx-validation-messages.providers';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXZhbGlkYXRpb24tbWVzc2FnZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMucHJvdmlkZXJzJztcbiJdfQ==
@@ -1,10 +1,12 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, ViewChild, Input, Component, Directive, Inject, Injectable, ContentChildren } from '@angular/core';
1
3
  import * as i2 from '@angular/common';
2
4
  import { CommonModule } from '@angular/common';
3
- import * as i0 from '@angular/core';
4
- import { ViewChild, Input, Component, Directive, InjectionToken, Inject, Injectable, ContentChildren, NgModule } from '@angular/core';
5
5
  import * as i3 from '@angular/material/form-field';
6
6
  import { MatFormFieldModule } from '@angular/material/form-field';
7
7
 
8
+ const NGX_VALIDATION_MESSAGES_CONFIG = new InjectionToken('NgxValidationMessagesConfig');
9
+
8
10
  /**
9
11
  * Component allows specifying custom validation message for the specified
10
12
  * validator to override default message.
@@ -21,19 +23,23 @@ class NgxCustomMessageComponent {
21
23
  */
22
24
  message;
23
25
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxCustomMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgxCustomMessageComponent, selector: "ngx-custom-message", inputs: { validatorName: ["forValidator", "validatorName"] }, viewQueries: [{ propertyName: "message", first: true, predicate: ["message"], descendants: true }], ngImport: i0, template: `
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgxCustomMessageComponent, isStandalone: true, selector: "ngx-custom-message", inputs: { validatorName: ["forValidator", "validatorName"] }, viewQueries: [{ propertyName: "message", first: true, predicate: ["message"], descendants: true }], ngImport: i0, template: `
25
27
  <div #message>
26
28
  <ng-content></ng-content>
27
- </div>`, isInline: true });
29
+ </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
28
30
  }
29
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxCustomMessageComponent, decorators: [{
30
32
  type: Component,
31
33
  args: [{
34
+ standalone: true,
32
35
  selector: 'ngx-custom-message',
33
36
  template: `
34
37
  <div #message>
35
38
  <ng-content></ng-content>
36
- </div>`
39
+ </div>`,
40
+ imports: [
41
+ CommonModule,
42
+ ]
37
43
  }]
38
44
  }], propDecorators: { validatorName: [{
39
45
  type: Input,
@@ -68,19 +74,18 @@ class NgxValidatorNameDirective {
68
74
  this.message = this.elem.nativeElement.innerText;
69
75
  }
70
76
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidatorNameDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
71
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NgxValidatorNameDirective, selector: "[ngxValidatorName]", inputs: { validatorName: "validatorName" }, ngImport: i0 });
77
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NgxValidatorNameDirective, isStandalone: true, selector: "[ngxValidatorName]", inputs: { validatorName: "validatorName" }, ngImport: i0 });
72
78
  }
73
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidatorNameDirective, decorators: [{
74
80
  type: Directive,
75
81
  args: [{
82
+ standalone: true,
76
83
  selector: '[ngxValidatorName]'
77
84
  }]
78
85
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { validatorName: [{
79
86
  type: Input
80
87
  }] } });
81
88
 
82
- const NGX_VALIDATION_MESSAGES_CONFIG = new InjectionToken('NgxValidationMessagesConfig');
83
-
84
89
  /**
85
90
  * Service allows getting validation messages from client's settings.
86
91
  * Injecting {@link NgxValidationMessagesConfig} to get client's configuration with validation messages.
@@ -142,10 +147,13 @@ class NgxValidationMessagesService {
142
147
  }, obj);
143
148
  }
144
149
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService, deps: [{ token: NGX_VALIDATION_MESSAGES_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
145
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService });
150
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService, providedIn: 'root' });
146
151
  }
147
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService, decorators: [{
148
- type: Injectable
153
+ type: Injectable,
154
+ args: [{
155
+ providedIn: 'root',
156
+ }]
149
157
  }], ctorParameters: () => [{ type: undefined, decorators: [{
150
158
  type: Inject,
151
159
  args: [NGX_VALIDATION_MESSAGES_CONFIG]
@@ -235,11 +243,14 @@ class NgxValidationMessagesComponent {
235
243
  });
236
244
  }
237
245
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesComponent, deps: [{ token: NGX_VALIDATION_MESSAGES_CONFIG }, { token: NgxValidationMessagesService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
238
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgxValidationMessagesComponent, selector: "ngx-validation-messages, [ngxValidationMessages]", inputs: { formControl: ["for", "formControl"] }, queries: [{ propertyName: "customMsgComponent", predicate: NgxCustomMessageComponent }, { propertyName: "customMsgDirective", predicate: NgxValidatorNameDirective }], ngImport: i0, template: "<!--To show error messages standalone without component-->\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n <ng-content></ng-content>\n </span>\n</div>\n\n<ng-container *ngIf=\"errorMessages.length > 0\">\n\n <!--To show error messages in material ui style-->\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\n <ng-container *ngFor=\"let message of errorMessages\">\n <mat-error>{{ message }}</mat-error>\n </ng-container>\n </ng-container>\n\n <!--To show error messages in user style-->\n <ng-template #withoutMaterial>\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <div *ngFor=\"let message of errorMessages\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n {{ message }}\n </span>\n </div>\n </div>\n </ng-template>\n\n</ng-container>\n", styles: [".ngx_vm__def_error_block{position:relative;display:inline-block;width:100%;margin-bottom:10px;margin-top:2px;padding:8px;border-radius:0;background:#c51244;box-shadow:1px 1px 1px #aaa;opacity:.8}.ngx_vm__def_error_text{color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] });
246
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgxValidationMessagesComponent, isStandalone: true, selector: "ngx-validation-messages, [ngxValidationMessages]", inputs: { formControl: ["for", "formControl"] }, queries: [{ propertyName: "customMsgComponent", predicate: NgxCustomMessageComponent }, { propertyName: "customMsgDirective", predicate: NgxValidatorNameDirective }], ngImport: i0, template: "<!--To show error messages standalone without component-->\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n <ng-content></ng-content>\n </span>\n</div>\n\n<ng-container *ngIf=\"errorMessages.length > 0\">\n\n <!--To show error messages in material ui style-->\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\n <ng-container *ngFor=\"let message of errorMessages\">\n <mat-error>{{ message }}</mat-error>\n </ng-container>\n </ng-container>\n\n <!--To show error messages in user style-->\n <ng-template #withoutMaterial>\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <div *ngFor=\"let message of errorMessages\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n {{ message }}\n </span>\n </div>\n </div>\n </ng-template>\n\n</ng-container>\n", styles: [".ngx_vm__def_error_block{position:relative;display:inline-block;width:100%;margin-bottom:10px;margin-top:2px;padding:8px;border-radius:0;background:#c51244;box-shadow:1px 1px 1px #aaa;opacity:.8}.ngx_vm__def_error_text{color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] });
239
247
  }
240
248
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesComponent, decorators: [{
241
249
  type: Component,
242
- args: [{ selector: 'ngx-validation-messages, [ngxValidationMessages]', template: "<!--To show error messages standalone without component-->\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n <ng-content></ng-content>\n </span>\n</div>\n\n<ng-container *ngIf=\"errorMessages.length > 0\">\n\n <!--To show error messages in material ui style-->\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\n <ng-container *ngFor=\"let message of errorMessages\">\n <mat-error>{{ message }}</mat-error>\n </ng-container>\n </ng-container>\n\n <!--To show error messages in user style-->\n <ng-template #withoutMaterial>\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <div *ngFor=\"let message of errorMessages\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n {{ message }}\n </span>\n </div>\n </div>\n </ng-template>\n\n</ng-container>\n", styles: [".ngx_vm__def_error_block{position:relative;display:inline-block;width:100%;margin-bottom:10px;margin-top:2px;padding:8px;border-radius:0;background:#c51244;box-shadow:1px 1px 1px #aaa;opacity:.8}.ngx_vm__def_error_text{color:#fff}\n"] }]
250
+ args: [{ standalone: true, selector: 'ngx-validation-messages, [ngxValidationMessages]', imports: [
251
+ CommonModule,
252
+ MatFormFieldModule,
253
+ ], template: "<!--To show error messages standalone without component-->\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n <ng-content></ng-content>\n </span>\n</div>\n\n<ng-container *ngIf=\"errorMessages.length > 0\">\n\n <!--To show error messages in material ui style-->\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\n <ng-container *ngFor=\"let message of errorMessages\">\n <mat-error>{{ message }}</mat-error>\n </ng-container>\n </ng-container>\n\n <!--To show error messages in user style-->\n <ng-template #withoutMaterial>\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <div *ngFor=\"let message of errorMessages\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n {{ message }}\n </span>\n </div>\n </div>\n </ng-template>\n\n</ng-container>\n", styles: [".ngx_vm__def_error_block{position:relative;display:inline-block;width:100%;margin-bottom:10px;margin-top:2px;padding:8px;border-radius:0;background:#c51244;box-shadow:1px 1px 1px #aaa;opacity:.8}.ngx_vm__def_error_text{color:#fff}\n"] }]
243
254
  }], ctorParameters: () => [{ type: undefined, decorators: [{
244
255
  type: Inject,
245
256
  args: [NGX_VALIDATION_MESSAGES_CONFIG]
@@ -254,48 +265,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
254
265
  args: [NgxValidatorNameDirective]
255
266
  }] } });
256
267
 
257
- class NgxValidationMessagesModule {
258
- static forRoot(config) {
259
- return {
260
- ngModule: NgxValidationMessagesModule,
261
- providers: [
262
- NgxValidationMessagesService,
263
- {
264
- provide: NGX_VALIDATION_MESSAGES_CONFIG,
265
- useValue: config
266
- }
267
- ]
268
- };
269
- }
270
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
271
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesModule, declarations: [NgxValidationMessagesComponent,
272
- NgxCustomMessageComponent,
273
- NgxValidatorNameDirective], imports: [CommonModule,
274
- MatFormFieldModule], exports: [NgxValidationMessagesComponent,
275
- NgxCustomMessageComponent,
276
- NgxValidatorNameDirective] });
277
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesModule, imports: [CommonModule,
278
- MatFormFieldModule] });
268
+ function provideNgxValidationMessages(config) {
269
+ return [
270
+ {
271
+ provide: NGX_VALIDATION_MESSAGES_CONFIG,
272
+ useValue: config
273
+ }
274
+ ];
279
275
  }
280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesModule, decorators: [{
281
- type: NgModule,
282
- args: [{
283
- imports: [
284
- CommonModule,
285
- MatFormFieldModule,
286
- ],
287
- declarations: [
288
- NgxValidationMessagesComponent,
289
- NgxCustomMessageComponent,
290
- NgxValidatorNameDirective
291
- ],
292
- exports: [
293
- NgxValidationMessagesComponent,
294
- NgxCustomMessageComponent,
295
- NgxValidatorNameDirective
296
- ]
297
- }]
298
- }] });
299
276
 
300
277
  /*
301
278
  * Public API Surface of ngx-validation-messages
@@ -305,5 +282,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
305
282
  * Generated bundle index. Do not edit.
306
283
  */
307
284
 
308
- export { NGX_VALIDATION_MESSAGES_CONFIG, NgxCustomMessageComponent, NgxValidationMessagesComponent, NgxValidationMessagesModule, NgxValidatorNameDirective };
285
+ export { NGX_VALIDATION_MESSAGES_CONFIG, NgxCustomMessageComponent, NgxValidationMessagesComponent, NgxValidatorNameDirective, provideNgxValidationMessages };
309
286
  //# sourceMappingURL=lagoshny-ngx-validation-messages.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lagoshny-ngx-validation-messages.mjs","sources":["../../../projects/ngx-validation-messages/src/lib/components/ngx-custom-message/ngx-custom-message.component.ts","../../../projects/ngx-validation-messages/src/lib/directivies/ngx-validator-name.directive.ts","../../../projects/ngx-validation-messages/src/lib/interface/ngx-validation-messages.config.ts","../../../projects/ngx-validation-messages/src/lib/service/ngx-validation-messages.service.ts","../../../projects/ngx-validation-messages/src/lib/components/ngx-validation-messages/ngx-validation-messages.component.ts","../../../projects/ngx-validation-messages/src/lib/components/ngx-validation-messages/ngx-validation-messages.component.html","../../../projects/ngx-validation-messages/src/lib/ngx-validation-messages.module.ts","../../../projects/ngx-validation-messages/src/public-api.ts","../../../projects/ngx-validation-messages/src/lagoshny-ngx-validation-messages.ts"],"sourcesContent":["import { Component, ElementRef, Input, ViewChild } from '@angular/core';\n\n/**\n * Component allows specifying custom validation message for the specified\n * validator to override default message.\n *\n * Use this component as child in {@link NgxValidationMessagesComponent}.\n */\n@Component({\n selector: 'ngx-custom-message',\n template: `\n <div #message>\n <ng-content></ng-content>\n </div>`\n})\nexport class NgxCustomMessageComponent {\n\n /**\n * The name of the validator for which you want to override the message.\n */\n @Input('forValidator')\n public validatorName: string;\n\n /**\n * Contains overridden message for validator.\n */\n @ViewChild('message')\n public message: ElementRef;\n\n}\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\n\n/**\n * Allows to specify custom validator message to override default message.\n *\n * It's alternative for {@link NgxCustomMessageComponent}.\n * If you want to use standard html tags to define custom message, use this directive on html tag within\n * {@link NgxValidationMessagesComponent} specifying validator name as directive parameter,\n * otherwise use {@link NgxCustomMessageComponent}.\n */\n@Directive({\n selector: '[ngxValidatorName]'\n})\nexport class NgxValidatorNameDirective implements AfterViewInit {\n\n /**\n * The name of the validator for which you want to override the message.\n */\n @Input()\n public validatorName: string;\n\n /**\n * Contains overridden message for validator.\n */\n public message: string;\n\n constructor(private elem: ElementRef) {\n }\n\n public ngAfterViewInit(): void {\n this.message = this.elem.nativeElement.innerText;\n }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const NGX_VALIDATION_MESSAGES_CONFIG: InjectionToken<NgxValidationMessagesConfig>\n = new InjectionToken<NgxValidationMessagesConfig>('NgxValidationMessagesConfig');\n\nexport interface NgxValidationMessagesConfig {\n\n /**\n * Object contains validation messages in validatorName: validatorMessage format.\n */\n messages: {\n [validatorName: string]: string;\n };\n\n /**\n * Define custom styles to display validation messages.\n */\n validationMessagesStyle?: {\n blockClassNames?: string;\n textClassNames?: string;\n };\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { NGX_VALIDATION_MESSAGES_CONFIG, NgxValidationMessagesConfig } from '../interface/ngx-validation-messages.config';\n\n/**\n * Service allows getting validation messages from client's settings.\n * Injecting {@link NgxValidationMessagesConfig} to get client's configuration with validation messages.\n */\n@Injectable()\nexport class NgxValidationMessagesService {\n\n public static SERVER_ERRORS = 'serverErrors';\n\n /**\n * Regular expression to find params placeholder '#[paramName]'.\n */\n private paramsRegExp = new RegExp(/#[[a-zA-Z_\\\\-]*]/);\n\n constructor(@Inject(NGX_VALIDATION_MESSAGES_CONFIG) private messagesConfig: NgxValidationMessagesConfig) {\n }\n\n /**\n * Get validation message for specified validator.\n *\n * @param validatorName for which to get message\n * @param params passed from validator for more detailed validation message\n *\n * @returns string validation message\n */\n public getValidatorErrorMessages(validatorName: string, params?: object): string {\n const validationMessages = this.messagesConfig.messages;\n const validationMessage: string = validationMessages[validatorName];\n\n if (!validationMessage) {\n throw new Error('Validation message for validator: ' + validatorName\n + ' cannot be found, please check validation message key for validator it is case sensitive.');\n }\n\n if (params) {\n return this.expandParameterizedTemplateMessage(validationMessage, params);\n }\n\n return validationMessage;\n }\n\n public expandParameterizedTemplateMessage(msg: string, params: object): string {\n while (this.paramsRegExp.test(msg)) {\n const foundParams = this.paramsRegExp.exec(msg);\n foundParams.forEach(value => {\n const paramPlaceholder = value;\n value = value.replace('#[', '').replace(']', '');\n msg = msg.replace(paramPlaceholder, this.getParameter(params, value));\n });\n }\n\n return msg;\n }\n\n /**\n * A utilitarian method to get a property from an object.\n * if there is no property, an empty string is returned.\n *\n * @param obj from which the property must be obtained\n * @param prop property name\n *\n * @return property value or empty string\n */\n private getParameter(obj: object, prop: string): string {\n return prop.split('.')\n .reduce((m, i) => {\n return m && typeof m === 'object' ? m[i] : '';\n }, obj);\n }\n\n // public static applyServerError(control: AbstractControl | null, serverError: ServerError): void {\n // if (!control) {\n // return;\n // }\n // if (control.getError(NgxValidationMessagesService.SERVER_ERRORS)) {\n // const existingErrorMessages = control.getError(NgxValidationMessagesService.SERVER_ERRORS);\n // if (_.isArray(existingErrorMessages.customMessages) &&\n // existingErrorMessages.customMessages.indexOf(serverError.message) === -1) {\n // existingErrorMessages.customMessages.push(serverError.message);\n // }\n // } else {\n // control.setErrors({[NgxValidationMessagesService.SERVER_ERRORS]: {customMessages: [serverError.message]}});\n // }\n // control.markAsTouched();\n // }\n\n}\n","import { AfterViewInit, Component, ContentChildren, ElementRef, Inject, Input, QueryList } from '@angular/core';\nimport { NgxValidatorNameDirective } from '../../directivies/ngx-validator-name.directive';\nimport {\n NGX_VALIDATION_MESSAGES_CONFIG,\n NgxValidationMessagesConfig\n} from '../../interface/ngx-validation-messages.config';\nimport { NgxValidationMessagesService } from '../../service/ngx-validation-messages.service';\nimport { NgxCustomMessageComponent } from '../ngx-custom-message/ngx-custom-message.component';\n\n/**\n * Component for displaying validation messages, supports child components of type {@link NgxCustomMessageComponent}\n * and html elements with directive {@link NgxValidatorNameDirective} to override validation messages.\n */\n@Component({\n selector: 'ngx-validation-messages, [ngxValidationMessages]',\n templateUrl: './ngx-validation-messages.component.html',\n styleUrls: ['./ngx-validation-messages.component.scss']\n})\nexport class NgxValidationMessagesComponent implements AfterViewInit {\n\n /**\n * Form control for which need to show validation messages.\n */\n @Input('for')\n public formControl: any;\n\n /**\n * Contains {@link NgxCustomMessageComponent} if present.\n */\n @ContentChildren(NgxCustomMessageComponent)\n public customMsgComponent;\n\n /**\n * Contains {@link NgxValidatorNameDirective} if present.\n */\n @ContentChildren(NgxValidatorNameDirective)\n public customMsgDirective;\n\n public isMaterialError = false;\n\n /**\n * Key to get default validation message.\n */\n private defaultError = 'error';\n\n private materialErrorElement = 'MAT-ERROR';\n\n constructor(@Inject(NGX_VALIDATION_MESSAGES_CONFIG) public ngxValidationConfig: NgxValidationMessagesConfig,\n private ngxValidationMessagesService: NgxValidationMessagesService,\n private directiveElementRef: ElementRef) {\n }\n\n public ngAfterViewInit(): void {\n if (this.directiveElementRef && this.directiveElementRef.nativeElement\n && this.directiveElementRef.nativeElement.nodeName) {\n this.isMaterialError = this.materialErrorElement.toLocaleUpperCase()\n === this.directiveElementRef.nativeElement.nodeName.toLocaleUpperCase();\n }\n }\n\n /**\n * Get all validation messages for specified form control.\n */\n public get errorMessages(): Array<string> {\n const result: Array<string> = [];\n\n if (!this.formControl || !this.formControl.errors) {\n return result;\n }\n if (this.customMsgComponent && this.customMsgComponent.length > 0) {\n this.processingCustomMessages(this.customMsgComponent);\n }\n if (this.customMsgDirective && this.customMsgDirective.length > 0) {\n this.processingCustomMessages(this.customMsgDirective);\n }\n\n for (const property in this.formControl.errors) {\n if (this.formControl.errors.hasOwnProperty(property)\n && (this.formControl.touched || this.formControl.dirty)) {\n if (this.formControl.errors[property].customMessages instanceof Array) {\n result.push(...this.formControl.errors[property].customMessages);\n continue;\n }\n if (this.formControl.errors[property].customMessage) {\n result.push(this.formControl.errors[property].customMessage);\n continue;\n }\n const validationMessage: string =\n this.ngxValidationMessagesService.getValidatorErrorMessages(property, this.formControl.errors[property]);\n result.push(validationMessage || this.formControl.errors[property].message\n || this.ngxValidationMessagesService.getValidatorErrorMessages(this.defaultError));\n }\n }\n return result;\n }\n\n private processingCustomMessages(customMessage: QueryList<any>): void {\n customMessage.forEach((msg: any) => {\n if (!this.formControl.errors[msg.validatorName]) {\n return;\n }\n let message = (msg instanceof NgxCustomMessageComponent)\n ? msg.message.nativeElement.innerText : msg.message;\n message = this.ngxValidationMessagesService.expandParameterizedTemplateMessage(message, this.formControl.errors[msg.validatorName]);\n\n typeof this.formControl.errors[msg.validatorName] === 'object'\n ? this.formControl.errors[msg.validatorName].customMessage = message\n : this.formControl.errors[msg.validatorName] = {customMessage: message};\n });\n }\n\n}\n","<!--To show error messages standalone without component-->\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n <ng-content></ng-content>\n </span>\n</div>\n\n<ng-container *ngIf=\"errorMessages.length > 0\">\n\n <!--To show error messages in material ui style-->\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\n <ng-container *ngFor=\"let message of errorMessages\">\n <mat-error>{{ message }}</mat-error>\n </ng-container>\n </ng-container>\n\n <!--To show error messages in user style-->\n <ng-template #withoutMaterial>\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <div *ngFor=\"let message of errorMessages\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n {{ message }}\n </span>\n </div>\n </div>\n </ng-template>\n\n</ng-container>\n","import {CommonModule} from '@angular/common';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {NgxCustomMessageComponent} from './components/ngx-custom-message/ngx-custom-message.component';\nimport {NgxValidationMessagesComponent} from './components/ngx-validation-messages/ngx-validation-messages.component';\nimport {NgxValidatorNameDirective} from './directivies/ngx-validator-name.directive';\nimport {NGX_VALIDATION_MESSAGES_CONFIG, NgxValidationMessagesConfig} from './interface/ngx-validation-messages.config';\nimport {NgxValidationMessagesService} from './service/ngx-validation-messages.service';\nimport {MatFormFieldModule} from '@angular/material/form-field';\n\nexport {NGX_VALIDATION_MESSAGES_CONFIG, NgxValidationMessagesConfig} from './interface/ngx-validation-messages.config';\nexport {NgxCustomMessageComponent} from './components/ngx-custom-message/ngx-custom-message.component';\nexport {NgxValidationMessagesComponent} from './components/ngx-validation-messages/ngx-validation-messages.component';\nexport {NgxValidatorNameDirective} from './directivies/ngx-validator-name.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n MatFormFieldModule,\n ],\n declarations: [\n NgxValidationMessagesComponent,\n NgxCustomMessageComponent,\n NgxValidatorNameDirective\n ],\n exports: [\n NgxValidationMessagesComponent,\n NgxCustomMessageComponent,\n NgxValidatorNameDirective\n ]\n})\nexport class NgxValidationMessagesModule {\n static forRoot(config: NgxValidationMessagesConfig): ModuleWithProviders<NgxValidationMessagesModule> {\n return {\n ngModule: NgxValidationMessagesModule,\n providers: [\n NgxValidationMessagesService,\n {\n provide: NGX_VALIDATION_MESSAGES_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","/*\n * Public API Surface of ngx-validation-messages\n */\nexport * from './lib/ngx-validation-messages.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxValidationMessagesService"],"mappings":"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"}
1
+ {"version":3,"file":"lagoshny-ngx-validation-messages.mjs","sources":["../../../projects/ngx-validation-messages/src/lib/interface/ngx-validation-messages.config.ts","../../../projects/ngx-validation-messages/src/lib/components/ngx-custom-message/ngx-custom-message.component.ts","../../../projects/ngx-validation-messages/src/lib/directivies/ngx-validator-name.directive.ts","../../../projects/ngx-validation-messages/src/lib/service/ngx-validation-messages.service.ts","../../../projects/ngx-validation-messages/src/lib/components/ngx-validation-messages/ngx-validation-messages.component.ts","../../../projects/ngx-validation-messages/src/lib/components/ngx-validation-messages/ngx-validation-messages.component.html","../../../projects/ngx-validation-messages/src/lib/ngx-validation-messages.providers.ts","../../../projects/ngx-validation-messages/src/public-api.ts","../../../projects/ngx-validation-messages/src/lagoshny-ngx-validation-messages.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const NGX_VALIDATION_MESSAGES_CONFIG: InjectionToken<NgxValidationMessagesConfig>\n = new InjectionToken<NgxValidationMessagesConfig>('NgxValidationMessagesConfig');\n\nexport interface NgxValidationMessagesConfig {\n\n /**\n * Object contains validation messages in validatorName: validatorMessage format.\n */\n messages: {\n [validatorName: string]: string;\n };\n\n /**\n * Define custom styles to display validation messages.\n */\n validationMessagesStyle?: {\n blockClassNames?: string;\n textClassNames?: string;\n };\n\n}\n","import {Component, ElementRef, Input, ViewChild} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n/**\n * Component allows specifying custom validation message for the specified\n * validator to override default message.\n *\n * Use this component as child in {@link NgxValidationMessagesComponent}.\n */\n@Component({\n standalone: true,\n selector: 'ngx-custom-message',\n template: `\n <div #message>\n <ng-content></ng-content>\n </div>`,\n imports: [\n CommonModule,\n ]\n})\nexport class NgxCustomMessageComponent {\n\n /**\n * The name of the validator for which you want to override the message.\n */\n @Input('forValidator')\n public validatorName: string;\n\n /**\n * Contains overridden message for validator.\n */\n @ViewChild('message')\n public message: ElementRef;\n\n}\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\n\n/**\n * Allows to specify custom validator message to override default message.\n *\n * It's alternative for {@link NgxCustomMessageComponent}.\n * If you want to use standard html tags to define custom message, use this directive on html tag within\n * {@link NgxValidationMessagesComponent} specifying validator name as directive parameter,\n * otherwise use {@link NgxCustomMessageComponent}.\n */\n@Directive({\n standalone: true,\n selector: '[ngxValidatorName]'\n})\nexport class NgxValidatorNameDirective implements AfterViewInit {\n\n /**\n * The name of the validator for which you want to override the message.\n */\n @Input()\n public validatorName: string;\n\n /**\n * Contains overridden message for validator.\n */\n public message: string;\n\n constructor(private elem: ElementRef) {\n }\n\n public ngAfterViewInit(): void {\n this.message = this.elem.nativeElement.innerText;\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { NGX_VALIDATION_MESSAGES_CONFIG, NgxValidationMessagesConfig } from '../interface/ngx-validation-messages.config';\n\n/**\n * Service allows getting validation messages from client's settings.\n * Injecting {@link NgxValidationMessagesConfig} to get client's configuration with validation messages.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxValidationMessagesService {\n\n public static SERVER_ERRORS = 'serverErrors';\n\n /**\n * Regular expression to find params placeholder '#[paramName]'.\n */\n private paramsRegExp = new RegExp(/#[[a-zA-Z_\\\\-]*]/);\n\n constructor(@Inject(NGX_VALIDATION_MESSAGES_CONFIG) private messagesConfig: NgxValidationMessagesConfig) {\n }\n\n /**\n * Get validation message for specified validator.\n *\n * @param validatorName for which to get message\n * @param params passed from validator for more detailed validation message\n *\n * @returns string validation message\n */\n public getValidatorErrorMessages(validatorName: string, params?: object): string {\n const validationMessages = this.messagesConfig.messages;\n const validationMessage: string = validationMessages[validatorName];\n\n if (!validationMessage) {\n throw new Error('Validation message for validator: ' + validatorName\n + ' cannot be found, please check validation message key for validator it is case sensitive.');\n }\n\n if (params) {\n return this.expandParameterizedTemplateMessage(validationMessage, params);\n }\n\n return validationMessage;\n }\n\n public expandParameterizedTemplateMessage(msg: string, params: object): string {\n while (this.paramsRegExp.test(msg)) {\n const foundParams = this.paramsRegExp.exec(msg);\n foundParams.forEach(value => {\n const paramPlaceholder = value;\n value = value.replace('#[', '').replace(']', '');\n msg = msg.replace(paramPlaceholder, this.getParameter(params, value));\n });\n }\n\n return msg;\n }\n\n /**\n * A utilitarian method to get a property from an object.\n * if there is no property, an empty string is returned.\n *\n * @param obj from which the property must be obtained\n * @param prop property name\n *\n * @return property value or empty string\n */\n private getParameter(obj: object, prop: string): string {\n return prop.split('.')\n .reduce((m, i) => {\n return m && typeof m === 'object' ? m[i] : '';\n }, obj);\n }\n\n // public static applyServerError(control: AbstractControl | null, serverError: ServerError): void {\n // if (!control) {\n // return;\n // }\n // if (control.getError(NgxValidationMessagesService.SERVER_ERRORS)) {\n // const existingErrorMessages = control.getError(NgxValidationMessagesService.SERVER_ERRORS);\n // if (_.isArray(existingErrorMessages.customMessages) &&\n // existingErrorMessages.customMessages.indexOf(serverError.message) === -1) {\n // existingErrorMessages.customMessages.push(serverError.message);\n // }\n // } else {\n // control.setErrors({[NgxValidationMessagesService.SERVER_ERRORS]: {customMessages: [serverError.message]}});\n // }\n // control.markAsTouched();\n // }\n\n}\n","import {AfterViewInit, Component, ContentChildren, ElementRef, Inject, Input, QueryList} from '@angular/core';\nimport {NgxValidatorNameDirective} from '../../directivies/ngx-validator-name.directive';\nimport {\n NGX_VALIDATION_MESSAGES_CONFIG,\n NgxValidationMessagesConfig\n} from '../../interface/ngx-validation-messages.config';\nimport {NgxValidationMessagesService} from '../../service/ngx-validation-messages.service';\nimport {NgxCustomMessageComponent} from '../ngx-custom-message/ngx-custom-message.component';\nimport {CommonModule} from '@angular/common';\nimport {MatFormFieldModule} from '@angular/material/form-field';\n\n/**\n * Component for displaying validation messages, supports child components of type {@link NgxCustomMessageComponent}\n * and html elements with directive {@link NgxValidatorNameDirective} to override validation messages.\n */\n@Component({\n standalone: true,\n selector: 'ngx-validation-messages, [ngxValidationMessages]',\n templateUrl: './ngx-validation-messages.component.html',\n styleUrls: ['./ngx-validation-messages.component.scss'],\n imports: [\n CommonModule,\n MatFormFieldModule,\n ]\n})\nexport class NgxValidationMessagesComponent implements AfterViewInit {\n\n /**\n * Form control for which need to show validation messages.\n */\n @Input('for')\n public formControl: any;\n\n /**\n * Contains {@link NgxCustomMessageComponent} if present.\n */\n @ContentChildren(NgxCustomMessageComponent)\n public customMsgComponent: any;\n\n /**\n * Contains {@link NgxValidatorNameDirective} if present.\n */\n @ContentChildren(NgxValidatorNameDirective)\n public customMsgDirective: any;\n\n public isMaterialError = false;\n\n /**\n * Key to get default validation message.\n */\n private defaultError = 'error';\n\n private materialErrorElement = 'MAT-ERROR';\n\n constructor(@Inject(NGX_VALIDATION_MESSAGES_CONFIG) public ngxValidationConfig: NgxValidationMessagesConfig,\n private ngxValidationMessagesService: NgxValidationMessagesService,\n private directiveElementRef: ElementRef) {\n }\n\n public ngAfterViewInit(): void {\n if (this.directiveElementRef && this.directiveElementRef.nativeElement\n && this.directiveElementRef.nativeElement.nodeName) {\n this.isMaterialError = this.materialErrorElement.toLocaleUpperCase()\n === this.directiveElementRef.nativeElement.nodeName.toLocaleUpperCase();\n }\n }\n\n /**\n * Get all validation messages for specified form control.\n */\n public get errorMessages(): Array<string> {\n const result: Array<string> = [];\n\n if (!this.formControl || !this.formControl.errors) {\n return result;\n }\n if (this.customMsgComponent && this.customMsgComponent.length > 0) {\n this.processingCustomMessages(this.customMsgComponent);\n }\n if (this.customMsgDirective && this.customMsgDirective.length > 0) {\n this.processingCustomMessages(this.customMsgDirective);\n }\n\n for (const property in this.formControl.errors) {\n if (this.formControl.errors.hasOwnProperty(property)\n && (this.formControl.touched || this.formControl.dirty)) {\n if (this.formControl.errors[property].customMessages instanceof Array) {\n result.push(...this.formControl.errors[property].customMessages);\n continue;\n }\n if (this.formControl.errors[property].customMessage) {\n result.push(this.formControl.errors[property].customMessage);\n continue;\n }\n const validationMessage: string =\n this.ngxValidationMessagesService.getValidatorErrorMessages(property, this.formControl.errors[property]);\n result.push(validationMessage || this.formControl.errors[property].message\n || this.ngxValidationMessagesService.getValidatorErrorMessages(this.defaultError));\n }\n }\n return result;\n }\n\n private processingCustomMessages(customMessage: QueryList<any>): void {\n customMessage.forEach((msg: any) => {\n if (!this.formControl.errors[msg.validatorName]) {\n return;\n }\n let message = (msg instanceof NgxCustomMessageComponent)\n ? msg.message.nativeElement.innerText : msg.message;\n message = this.ngxValidationMessagesService.expandParameterizedTemplateMessage(message, this.formControl.errors[msg.validatorName]);\n\n typeof this.formControl.errors[msg.validatorName] === 'object'\n ? this.formControl.errors[msg.validatorName].customMessage = message\n : this.formControl.errors[msg.validatorName] = {customMessage: message};\n });\n }\n\n}\n","<!--To show error messages standalone without component-->\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n <ng-content></ng-content>\n </span>\n</div>\n\n<ng-container *ngIf=\"errorMessages.length > 0\">\n\n <!--To show error messages in material ui style-->\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\n <ng-container *ngFor=\"let message of errorMessages\">\n <mat-error>{{ message }}</mat-error>\n </ng-container>\n </ng-container>\n\n <!--To show error messages in user style-->\n <ng-template #withoutMaterial>\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\n <div *ngFor=\"let message of errorMessages\">\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\n {{ message }}\n </span>\n </div>\n </div>\n </ng-template>\n\n</ng-container>\n","import { Provider } from '@angular/core';\r\nimport { NGX_VALIDATION_MESSAGES_CONFIG, NgxValidationMessagesConfig } from './interface/ngx-validation-messages.config';\r\n\r\nexport {NGX_VALIDATION_MESSAGES_CONFIG, NgxValidationMessagesConfig} from './interface/ngx-validation-messages.config';\r\nexport {NgxCustomMessageComponent} from './components/ngx-custom-message/ngx-custom-message.component';\r\nexport {NgxValidationMessagesComponent} from './components/ngx-validation-messages/ngx-validation-messages.component';\r\nexport {NgxValidatorNameDirective} from './directivies/ngx-validator-name.directive';\r\n\r\nexport function provideNgxValidationMessages(config: NgxValidationMessagesConfig): Provider[] {\r\n return [\r\n {\r\n provide: NGX_VALIDATION_MESSAGES_CONFIG,\r\n useValue: config\r\n }\r\n ];\r\n}\r\n","/*\n * Public API Surface of ngx-validation-messages\n */\nexport * from './lib/ngx-validation-messages.providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxValidationMessagesService"],"mappings":"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"}
@@ -16,5 +16,5 @@ export declare class NgxCustomMessageComponent {
16
16
  */
17
17
  message: ElementRef;
18
18
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxCustomMessageComponent, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxCustomMessageComponent, "ngx-custom-message", never, { "validatorName": { "alias": "forValidator"; "required": false; }; }, {}, never, ["*"], false, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxCustomMessageComponent, "ngx-custom-message", never, { "validatorName": { "alias": "forValidator"; "required": false; }; }, {}, never, ["*"], true, never>;
20
20
  }
@@ -36,5 +36,5 @@ export declare class NgxValidationMessagesComponent implements AfterViewInit {
36
36
  get errorMessages(): Array<string>;
37
37
  private processingCustomMessages;
38
38
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxValidationMessagesComponent, never>;
39
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxValidationMessagesComponent, "ngx-validation-messages, [ngxValidationMessages]", never, { "formControl": { "alias": "for"; "required": false; }; }, {}, ["customMsgComponent", "customMsgDirective"], ["*"], false, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxValidationMessagesComponent, "ngx-validation-messages, [ngxValidationMessages]", never, { "formControl": { "alias": "for"; "required": false; }; }, {}, ["customMsgComponent", "customMsgDirective"], ["*"], true, never>;
40
40
  }
@@ -21,5 +21,5 @@ export declare class NgxValidatorNameDirective implements AfterViewInit {
21
21
  constructor(elem: ElementRef);
22
22
  ngAfterViewInit(): void;
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxValidatorNameDirective, never>;
24
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgxValidatorNameDirective, "[ngxValidatorName]", never, { "validatorName": { "alias": "validatorName"; "required": false; }; }, {}, never, never, false, never>;
24
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxValidatorNameDirective, "[ngxValidatorName]", never, { "validatorName": { "alias": "validatorName"; "required": false; }; }, {}, never, never, true, never>;
25
25
  }
@@ -0,0 +1,7 @@
1
+ import { Provider } from '@angular/core';
2
+ import { NgxValidationMessagesConfig } from './interface/ngx-validation-messages.config';
3
+ export { NGX_VALIDATION_MESSAGES_CONFIG, NgxValidationMessagesConfig } from './interface/ngx-validation-messages.config';
4
+ export { NgxCustomMessageComponent } from './components/ngx-custom-message/ngx-custom-message.component';
5
+ export { NgxValidationMessagesComponent } from './components/ngx-validation-messages/ngx-validation-messages.component';
6
+ export { NgxValidatorNameDirective } from './directivies/ngx-validator-name.directive';
7
+ export declare function provideNgxValidationMessages(config: NgxValidationMessagesConfig): Provider[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lagoshny/ngx-validation-messages",
3
- "version": "17.0.2",
3
+ "version": "17.1.0",
4
4
  "description": "This module allows to simplify display form validator validation messages using single component.",
5
5
  "readme": "README.md",
6
6
  "author": "Ilya Lagoshny <ilya@lagoshny.ru>",
package/public-api.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './lib/ngx-validation-messages.module';
1
+ export * from './lib/ngx-validation-messages.providers';
@@ -1,56 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { NgxCustomMessageComponent } from './components/ngx-custom-message/ngx-custom-message.component';
4
- import { NgxValidationMessagesComponent } from './components/ngx-validation-messages/ngx-validation-messages.component';
5
- import { NgxValidatorNameDirective } from './directivies/ngx-validator-name.directive';
6
- import { NGX_VALIDATION_MESSAGES_CONFIG } from './interface/ngx-validation-messages.config';
7
- import { NgxValidationMessagesService } from './service/ngx-validation-messages.service';
8
- import { MatFormFieldModule } from '@angular/material/form-field';
9
- import * as i0 from "@angular/core";
10
- export { NGX_VALIDATION_MESSAGES_CONFIG } from './interface/ngx-validation-messages.config';
11
- export { NgxCustomMessageComponent } from './components/ngx-custom-message/ngx-custom-message.component';
12
- export { NgxValidationMessagesComponent } from './components/ngx-validation-messages/ngx-validation-messages.component';
13
- export { NgxValidatorNameDirective } from './directivies/ngx-validator-name.directive';
14
- export class NgxValidationMessagesModule {
15
- static forRoot(config) {
16
- return {
17
- ngModule: NgxValidationMessagesModule,
18
- providers: [
19
- NgxValidationMessagesService,
20
- {
21
- provide: NGX_VALIDATION_MESSAGES_CONFIG,
22
- useValue: config
23
- }
24
- ]
25
- };
26
- }
27
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
28
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesModule, declarations: [NgxValidationMessagesComponent,
29
- NgxCustomMessageComponent,
30
- NgxValidatorNameDirective], imports: [CommonModule,
31
- MatFormFieldModule], exports: [NgxValidationMessagesComponent,
32
- NgxCustomMessageComponent,
33
- NgxValidatorNameDirective] });
34
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesModule, imports: [CommonModule,
35
- MatFormFieldModule] });
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesModule, decorators: [{
38
- type: NgModule,
39
- args: [{
40
- imports: [
41
- CommonModule,
42
- MatFormFieldModule,
43
- ],
44
- declarations: [
45
- NgxValidationMessagesComponent,
46
- NgxCustomMessageComponent,
47
- NgxValidatorNameDirective
48
- ],
49
- exports: [
50
- NgxValidationMessagesComponent,
51
- NgxCustomMessageComponent,
52
- NgxValidatorNameDirective
53
- ]
54
- }]
55
- }] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMvc3JjL2xpYi9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBc0IsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBQ3RILE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyw4QkFBOEIsRUFBOEIsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2SCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN2RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFaEUsT0FBTyxFQUFDLDhCQUE4QixFQUE4QixNQUFNLDRDQUE0QyxDQUFDO0FBQ3ZILE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBQ3RILE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBa0JyRixNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBbUM7UUFDaEQsT0FBTztZQUNMLFFBQVEsRUFBRSwyQkFBMkI7WUFDckMsU0FBUyxFQUFFO2dCQUNULDRCQUE0QjtnQkFDNUI7b0JBQ0UsT0FBTyxFQUFFLDhCQUE4QjtvQkFDdkMsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzt3R0FaVSwyQkFBMkI7eUdBQTNCLDJCQUEyQixpQkFWcEMsOEJBQThCO1lBQzlCLHlCQUF5QjtZQUN6Qix5QkFBeUIsYUFOekIsWUFBWTtZQUNaLGtCQUFrQixhQVFsQiw4QkFBOEI7WUFDOUIseUJBQXlCO1lBQ3pCLHlCQUF5Qjt5R0FHaEIsMkJBQTJCLFlBZHBDLFlBQVk7WUFDWixrQkFBa0I7OzRGQWFULDJCQUEyQjtrQkFoQnZDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osa0JBQWtCO3FCQUNuQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osOEJBQThCO3dCQUM5Qix5QkFBeUI7d0JBQ3pCLHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDhCQUE4Qjt3QkFDOUIseUJBQXlCO3dCQUN6Qix5QkFBeUI7cUJBQzFCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Tmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL25neC1jdXN0b20tbWVzc2FnZS9uZ3gtY3VzdG9tLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7Tmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29tcG9uZW50JztcbmltcG9ydCB7Tmd4VmFsaWRhdG9yTmFtZURpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3Rpdmllcy9uZ3gtdmFsaWRhdG9yLW5hbWUuZGlyZWN0aXZlJztcbmltcG9ydCB7TkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHLCBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWd9IGZyb20gJy4vaW50ZXJmYWNlL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLmNvbmZpZyc7XG5pbXBvcnQge05neFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2V9IGZyb20gJy4vc2VydmljZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcblxuZXhwb3J0IHtOR1hfVkFMSURBVElPTl9NRVNTQUdFU19DT05GSUcsIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZ30gZnJvbSAnLi9pbnRlcmZhY2Uvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29uZmlnJztcbmV4cG9ydCB7Tmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL25neC1jdXN0b20tbWVzc2FnZS9uZ3gtY3VzdG9tLW1lc3NhZ2UuY29tcG9uZW50JztcbmV4cG9ydCB7Tmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29tcG9uZW50JztcbmV4cG9ydCB7Tmd4VmFsaWRhdG9yTmFtZURpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3Rpdmllcy9uZ3gtdmFsaWRhdG9yLW5hbWUuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbXBvbmVudCxcbiAgICBOZ3hDdXN0b21NZXNzYWdlQ29tcG9uZW50LFxuICAgIE5neFZhbGlkYXRvck5hbWVEaXJlY3RpdmVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbXBvbmVudCxcbiAgICBOZ3hDdXN0b21NZXNzYWdlQ29tcG9uZW50LFxuICAgIE5neFZhbGlkYXRvck5hbWVEaXJlY3RpdmVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Tmd4VmFsaWRhdGlvbk1lc3NhZ2VzTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IE5HWF9WQUxJREFUSU9OX01FU1NBR0VTX0NPTkZJRyxcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,18 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { NgxValidationMessagesConfig } from './interface/ngx-validation-messages.config';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./components/ngx-validation-messages/ngx-validation-messages.component";
5
- import * as i2 from "./components/ngx-custom-message/ngx-custom-message.component";
6
- import * as i3 from "./directivies/ngx-validator-name.directive";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "@angular/material/form-field";
9
- export { NGX_VALIDATION_MESSAGES_CONFIG, NgxValidationMessagesConfig } from './interface/ngx-validation-messages.config';
10
- export { NgxCustomMessageComponent } from './components/ngx-custom-message/ngx-custom-message.component';
11
- export { NgxValidationMessagesComponent } from './components/ngx-validation-messages/ngx-validation-messages.component';
12
- export { NgxValidatorNameDirective } from './directivies/ngx-validator-name.directive';
13
- export declare class NgxValidationMessagesModule {
14
- static forRoot(config: NgxValidationMessagesConfig): ModuleWithProviders<NgxValidationMessagesModule>;
15
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxValidationMessagesModule, never>;
16
- static ɵmod: i0.ɵɵNgModuleDeclaration<NgxValidationMessagesModule, [typeof i1.NgxValidationMessagesComponent, typeof i2.NgxCustomMessageComponent, typeof i3.NgxValidatorNameDirective], [typeof i4.CommonModule, typeof i5.MatFormFieldModule], [typeof i1.NgxValidationMessagesComponent, typeof i2.NgxCustomMessageComponent, typeof i3.NgxValidatorNameDirective]>;
17
- static ɵinj: i0.ɵɵInjectorDeclaration<NgxValidationMessagesModule>;
18
- }