@eui/components 16.1.0 → 16.1.1-snapshot-1691048797192

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.
@@ -61,6 +61,9 @@
61
61
  <tr>
62
62
  <td class="col-md-4">
63
63
  <ul class="index-list">
64
+ <li>
65
+ <a href="#asyncMimeTypeExtensionValidator" title="packages/eui/packages/components/eui-file-upload/utils/eui-file-upload.validators.ts" ><b>asyncMimeTypeExtensionValidator</b>&nbsp;&nbsp;&nbsp;(packages/.../eui-file-upload.validators.ts)</a>
66
+ </li>
64
67
  <li>
65
68
  <a href="#BaseComponentMixinBase" title="packages/eui/packages/components/shared/input.directive.ts" ><b>BaseComponentMixinBase</b>&nbsp;&nbsp;&nbsp;(packages/.../input.directive.ts)</a>
66
69
  </li>
@@ -323,6 +326,165 @@
323
326
  </table>
324
327
  </section>
325
328
 
329
+ <h3>packages/eui/packages/components/eui-file-upload/utils/eui-file-upload.validators.ts</h3>
330
+ <section data-compodoc="block-properties">
331
+ <h3></h3> <table class="table table-sm table-bordered">
332
+ <tbody>
333
+ <tr>
334
+ <td class="col-md-4">
335
+ <a name="asyncMimeTypeExtensionValidator"></a>
336
+ <span class="name">
337
+ <span ><b>asyncMimeTypeExtensionValidator</b></span>
338
+ <a href="#asyncMimeTypeExtensionValidator"><span class="icon ion-ios-link"></span></a>
339
+ </span>
340
+ </td>
341
+ </tr>
342
+ <tr>
343
+ <td class="col-md-4">
344
+ <i>Default value : </i><code>(mimeTypes: MimeType[]): AsyncValidatorFn &#x3D;&gt;
345
+ (control: AbstractControl): Promise&lt;ValidationErrors | null&gt; | Observable&lt;ValidationErrors | null&gt; &#x3D;&gt; {
346
+ if (control.value) {
347
+ const fileErrorObservables: Observable&lt;ValidationErrors | null&gt;[] &#x3D; [];
348
+ // iterate over files
349
+ control.value.forEach((file: File) &#x3D;&gt; {
350
+ // push observable which will check the mime validation type
351
+ fileErrorObservables.push(validateFileMimeType(file, mimeTypes));
352
+ });
353
+ return zip(...fileErrorObservables).pipe(
354
+ map((fileErrors) &#x3D;&gt; {
355
+ const errors &#x3D; fileErrors.filter((fileError) &#x3D;&gt; fileError !&#x3D;&#x3D; null);
356
+ // Error should be { fileName: FileType }
357
+ return { invalidMimeFileType: errors };
358
+ })
359
+ );
360
+ }
361
+ return of(null);
362
+ }</code>
363
+ </td>
364
+ </tr>
365
+
366
+
367
+ </tbody>
368
+ </table>
369
+ <table class="table table-sm table-bordered">
370
+ <tbody>
371
+ <tr>
372
+ <td class="col-md-4">
373
+ <a name="maxFilesValidator"></a>
374
+ <span class="name">
375
+ <span ><b>maxFilesValidator</b></span>
376
+ <a href="#maxFilesValidator"><span class="icon ion-ios-link"></span></a>
377
+ </span>
378
+ </td>
379
+ </tr>
380
+ <tr>
381
+ <td class="col-md-4">
382
+ <i>Default value : </i><code>(maxFiles: number): ValidatorFn &#x3D;&gt;
383
+ (control: AbstractControl): { maxFiles: number } | null &#x3D;&gt;
384
+ control.value &amp;&amp; control.value.length &gt; maxFiles ? { maxFiles } : null</code>
385
+ </td>
386
+ </tr>
387
+
388
+
389
+ </tbody>
390
+ </table>
391
+ <table class="table table-sm table-bordered">
392
+ <tbody>
393
+ <tr>
394
+ <td class="col-md-4">
395
+ <a name="maxSizeValidator"></a>
396
+ <span class="name">
397
+ <span ><b>maxSizeValidator</b></span>
398
+ <a href="#maxSizeValidator"><span class="icon ion-ios-link"></span></a>
399
+ </span>
400
+ </td>
401
+ </tr>
402
+ <tr>
403
+ <td class="col-md-4">
404
+ <i>Default value : </i><code>(maxSize: number): ValidatorFn &#x3D;&gt;
405
+ (control: AbstractControl): { maxSize: number } | null &#x3D;&gt; {
406
+ let totalSize &#x3D; 0;
407
+ if (control.value) {
408
+ control.value.forEach((file: File) &#x3D;&gt; {
409
+ totalSize +&#x3D; file.size;
410
+ });
411
+ }
412
+
413
+ return control.value &amp;&amp; totalSize &gt; maxSize * 1.024 ? { maxSize } : null;
414
+ }</code>
415
+ </td>
416
+ </tr>
417
+
418
+
419
+ </tbody>
420
+ </table>
421
+ <table class="table table-sm table-bordered">
422
+ <tbody>
423
+ <tr>
424
+ <td class="col-md-4">
425
+ <a name="mimeTypeExtensionValidator"></a>
426
+ <span class="name">
427
+ <span ><b>mimeTypeExtensionValidator</b></span>
428
+ <a href="#mimeTypeExtensionValidator"><span class="icon ion-ios-link"></span></a>
429
+ </span>
430
+ </td>
431
+ </tr>
432
+ <tr>
433
+ <td class="col-md-4">
434
+ <i>Default value : </i><code>(mimeTypes: string[]): ValidatorFn &#x3D;&gt;
435
+ (control: AbstractControl): { invalidFileExtension: string[] } | null &#x3D;&gt; {
436
+ const invalidFileExtension: string[] &#x3D; [];
437
+ if (control.value) {
438
+ control.value.forEach((file: File) &#x3D;&gt; {
439
+ if (mimeTypes.indexOf(file.type) &#x3D;&#x3D;&#x3D; -1) {
440
+ invalidFileExtension.push(file.name);
441
+ }
442
+ });
443
+ }
444
+
445
+ return control.value &amp;&amp; invalidFileExtension.length &gt; 0 ? { invalidFileExtension } : null;
446
+ }</code>
447
+ </td>
448
+ </tr>
449
+
450
+
451
+ </tbody>
452
+ </table>
453
+ <table class="table table-sm table-bordered">
454
+ <tbody>
455
+ <tr>
456
+ <td class="col-md-4">
457
+ <a name="validateFileMimeType"></a>
458
+ <span class="name">
459
+ <span ><b>validateFileMimeType</b></span>
460
+ <a href="#validateFileMimeType"><span class="icon ion-ios-link"></span></a>
461
+ </span>
462
+ </td>
463
+ </tr>
464
+ <tr>
465
+ <td class="col-md-4">
466
+ <i>Default value : </i><code>(file: File, mimeTypes: MimeType[]): Observable&lt;{ [key: string]: any }&gt; &#x3D;&gt; {
467
+ return new Observable&lt;{ [p: string]: any }&gt;((subscriber) &#x3D;&gt; {
468
+ const reader &#x3D; new FileReader();
469
+ reader.onloadend &#x3D; (): void &#x3D;&gt; {
470
+ const buffer &#x3D; reader.result as ArrayBuffer;
471
+ const headerBytes &#x3D; new Uint8Array(buffer).slice(0, 8);
472
+ const mime &#x3D; getMimeType(headerBytes);
473
+ if (mimeTypes.indexOf(mime) &#x3D;&#x3D;&#x3D; -1) {
474
+ subscriber.next({ [file.name]: mime });
475
+ }
476
+ subscriber.complete();
477
+ };
478
+ reader.readAsArrayBuffer(file);
479
+ });
480
+ }</code>
481
+ </td>
482
+ </tr>
483
+
484
+
485
+ </tbody>
486
+ </table>
487
+ </section>
326
488
  <h3>packages/eui/packages/components/shared/input.directive.ts</h3>
327
489
  <section data-compodoc="block-properties">
328
490
  <h3></h3> <table class="table table-sm table-bordered">
@@ -2071,133 +2233,6 @@
2071
2233
  </tr>
2072
2234
 
2073
2235
 
2074
- </tbody>
2075
- </table>
2076
- </section>
2077
- <h3>packages/eui/packages/components/eui-file-upload/utils/eui-file-upload.validators.ts</h3>
2078
- <section data-compodoc="block-properties">
2079
- <h3></h3> <table class="table table-sm table-bordered">
2080
- <tbody>
2081
- <tr>
2082
- <td class="col-md-4">
2083
- <a name="maxFilesValidator"></a>
2084
- <span class="name">
2085
- <span ><b>maxFilesValidator</b></span>
2086
- <a href="#maxFilesValidator"><span class="icon ion-ios-link"></span></a>
2087
- </span>
2088
- </td>
2089
- </tr>
2090
- <tr>
2091
- <td class="col-md-4">
2092
- <i>Default value : </i><code>(maxFiles: number): ValidatorFn &#x3D;&gt;
2093
- (control: AbstractControl): { maxFiles: number } | null &#x3D;&gt;
2094
- control.value &amp;&amp; control.value.length &gt; maxFiles ? { maxFiles } : null</code>
2095
- </td>
2096
- </tr>
2097
-
2098
-
2099
- </tbody>
2100
- </table>
2101
- <table class="table table-sm table-bordered">
2102
- <tbody>
2103
- <tr>
2104
- <td class="col-md-4">
2105
- <a name="maxSizeValidator"></a>
2106
- <span class="name">
2107
- <span ><b>maxSizeValidator</b></span>
2108
- <a href="#maxSizeValidator"><span class="icon ion-ios-link"></span></a>
2109
- </span>
2110
- </td>
2111
- </tr>
2112
- <tr>
2113
- <td class="col-md-4">
2114
- <i>Default value : </i><code>(maxSize: number): ValidatorFn &#x3D;&gt;
2115
- (control: AbstractControl): { maxSize: number } | null &#x3D;&gt; {
2116
- let totalSize &#x3D; 0;
2117
- if (control.value) {
2118
- control.value.forEach((file: File) &#x3D;&gt; {
2119
- totalSize +&#x3D; file.size;
2120
- });
2121
- }
2122
-
2123
- return control.value &amp;&amp; totalSize &gt; maxSize * 1.024 ? { maxSize } : null;
2124
- }</code>
2125
- </td>
2126
- </tr>
2127
-
2128
-
2129
- </tbody>
2130
- </table>
2131
- <table class="table table-sm table-bordered">
2132
- <tbody>
2133
- <tr>
2134
- <td class="col-md-4">
2135
- <a name="mimeTypeExtensionValidator"></a>
2136
- <span class="name">
2137
- <span ><b>mimeTypeExtensionValidator</b></span>
2138
- <a href="#mimeTypeExtensionValidator"><span class="icon ion-ios-link"></span></a>
2139
- </span>
2140
- </td>
2141
- </tr>
2142
- <tr>
2143
- <td class="col-md-4">
2144
- <i>Default value : </i><code>(mimeTypes: MimeType[]): AsyncValidatorFn &#x3D;&gt;
2145
- (control: AbstractControl): Promise&lt;ValidationErrors | null&gt; | Observable&lt;ValidationErrors | null&gt; &#x3D;&gt; {
2146
- if (control.value) {
2147
- const fileErrorObservables: Observable&lt;ValidationErrors | null&gt;[] &#x3D; [];
2148
- // iterate over files
2149
- control.value.forEach((file: File) &#x3D;&gt; {
2150
- // push observable which will check the mime validation type
2151
- fileErrorObservables.push(validateFileMimeType(file, mimeTypes));
2152
- });
2153
- return zip(...fileErrorObservables).pipe(
2154
- map((fileErrors) &#x3D;&gt; {
2155
- const errors &#x3D; fileErrors.filter((fileError) &#x3D;&gt; fileError !&#x3D;&#x3D; null);
2156
- // Error should be { fileName: FileType }
2157
- return { invalidMimeFileType: errors };
2158
- })
2159
- );
2160
- }
2161
- return of(null);
2162
- }</code>
2163
- </td>
2164
- </tr>
2165
-
2166
-
2167
- </tbody>
2168
- </table>
2169
- <table class="table table-sm table-bordered">
2170
- <tbody>
2171
- <tr>
2172
- <td class="col-md-4">
2173
- <a name="validateFileMimeType"></a>
2174
- <span class="name">
2175
- <span ><b>validateFileMimeType</b></span>
2176
- <a href="#validateFileMimeType"><span class="icon ion-ios-link"></span></a>
2177
- </span>
2178
- </td>
2179
- </tr>
2180
- <tr>
2181
- <td class="col-md-4">
2182
- <i>Default value : </i><code>(file: File, mimeTypes: MimeType[]): Observable&lt;{ [key: string]: any }&gt; &#x3D;&gt; {
2183
- return new Observable&lt;{ [p: string]: any }&gt;((subscriber) &#x3D;&gt; {
2184
- const reader &#x3D; new FileReader();
2185
- reader.onloadend &#x3D; (): void &#x3D;&gt; {
2186
- const buffer &#x3D; reader.result as ArrayBuffer;
2187
- const headerBytes &#x3D; new Uint8Array(buffer).slice(0, 8);
2188
- const mime &#x3D; getMimeType(headerBytes);
2189
- if (mimeTypes.indexOf(mime) &#x3D;&#x3D;&#x3D; -1) {
2190
- subscriber.next({ [file.name]: mime });
2191
- }
2192
- subscriber.complete();
2193
- };
2194
- reader.readAsArrayBuffer(file);
2195
- });
2196
- }</code>
2197
- </td>
2198
- </tr>
2199
-
2200
-
2201
2236
  </tbody>
2202
2237
  </table>
2203
2238
  </section>
@@ -68,11 +68,11 @@ export class EuiBlockContentComponent extends BaseDirective {
68
68
  return this.elRef.nativeElement.querySelector(':focus');
69
69
  }
70
70
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiBlockContentComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
71
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiBlockContentComponent, selector: "eui-block-content", inputs: { isBlocked: "isBlocked" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative;z-index:var(--eui-base-z-index-overlay)}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px;z-index:10002}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%;z-index:10001}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
71
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiBlockContentComponent, selector: "eui-block-content", inputs: { isBlocked: "isBlocked" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
72
72
  }
73
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiBlockContentComponent, decorators: [{
74
74
  type: Component,
75
- args: [{ selector: 'eui-block-content', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative;z-index:var(--eui-base-z-index-overlay)}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px;z-index:10002}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%;z-index:10001}\n"] }]
75
+ args: [{ selector: 'eui-block-content', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"] }]
76
76
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { isBlocked: [{
77
77
  type: Input
78
78
  }], cssClasses: [{
@@ -41,6 +41,32 @@ export const maxSizeValidator = (maxSize) => (control) => {
41
41
  }
42
42
  return control.value && totalSize > maxSize * 1.024 ? { maxSize } : null;
43
43
  };
44
+ /**
45
+ * @description
46
+ * Validator that requires an array of mime type that can be uploaded.
47
+ *
48
+ * @usageNotes
49
+ * Validate that the user doesn't select a file having another extension than .jpg or .jpeg:
50
+ *
51
+ * ```typescript
52
+ * const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),
53
+ * console.log(fileUpload.errors); // { invalidFileExtension: ['image/jpeg'] }
54
+ * ```
55
+ *
56
+ * @returns A validator function that returns an error map with the
57
+ * `invalidFileExtension` if the validation check fails, otherwise `null`.
58
+ */
59
+ export const mimeTypeExtensionValidator = (mimeTypes) => (control) => {
60
+ const invalidFileExtension = [];
61
+ if (control.value) {
62
+ control.value.forEach((file) => {
63
+ if (mimeTypes.indexOf(file.type) === -1) {
64
+ invalidFileExtension.push(file.name);
65
+ }
66
+ });
67
+ }
68
+ return control.value && invalidFileExtension.length > 0 ? { invalidFileExtension } : null;
69
+ };
44
70
  /**
45
71
  * @description
46
72
  * Validator that requires an array of mime type that can be uploaded.
@@ -56,7 +82,7 @@ export const maxSizeValidator = (maxSize) => (control) => {
56
82
  * @returns An Async validator function that returns an error map with the
57
83
  * `invalidMimeFileType` if the validation check fails, otherwise `null`.
58
84
  */
59
- export const mimeTypeExtensionValidator = (mimeTypes) => (control) => {
85
+ export const asyncMimeTypeExtensionValidator = (mimeTypes) => (control) => {
60
86
  if (control.value) {
61
87
  const fileErrorObservables = [];
62
88
  // iterate over files
@@ -87,4 +113,4 @@ const validateFileMimeType = (file, mimeTypes) => {
87
113
  reader.readAsArrayBuffer(file);
88
114
  });
89
115
  };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9ldWktZmlsZS11cGxvYWQvdXRpbHMvZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sY0FBYyxDQUFDO0FBRXJEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQzFCLENBQUMsUUFBZ0IsRUFBZSxFQUFFLENBQ2xDLENBQUMsT0FBd0IsRUFBK0IsRUFBRSxDQUN0RCxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRS9FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQ3pCLENBQUMsT0FBZSxFQUFlLEVBQUUsQ0FDakMsQ0FBQyxPQUF3QixFQUE4QixFQUFFO0lBQ3JELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNsQixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFO1lBQ2pDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksU0FBUyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM3RSxDQUFDLENBQUM7QUFFTjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUNuQyxDQUFDLFNBQXFCLEVBQW9CLEVBQUUsQ0FDNUMsQ0FBQyxPQUF3QixFQUEwRSxFQUFFO0lBQ2pHLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtRQUNmLE1BQU0sb0JBQW9CLEdBQTBDLEVBQUUsQ0FBQztRQUN2RSxxQkFBcUI7UUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtZQUNqQyw0REFBNEQ7WUFDNUQsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FDcEMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDZixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDcEUseUNBQXlDO1lBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0tBQ0w7SUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFTixNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBVSxFQUFFLFNBQXFCLEVBQXNDLEVBQUU7SUFDbkcsT0FBTyxJQUFJLFVBQVUsQ0FBdUIsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBUyxFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFxQixDQUFDO1lBQzVDLE1BQU0sV0FBVyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDaEMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDMUM7WUFDRCxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldE1pbWVUeXBlLCBNaW1lVHlwZSB9IGZyb20gJy4vbWltZS10eXBlcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIFZhbGlkYXRlIHRoYXQgdGhlIHVzZXIgc2VsZWN0ZWQgbWF4aW11bSAzIGZpbGVzOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpbGVVcGxvYWQgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgbWF4RmlsZXNWYWxpZGF0b3IoMykpO1xuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IG1heEZpbGVzOiAzIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlcnJvciBtYXAgd2l0aCB0aGVcbiAqIGBtYXhGaWxlc2AgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhGaWxlc1ZhbGlkYXRvciA9XG4gICAgKG1heEZpbGVzOiBudW1iZXIpOiBWYWxpZGF0b3JGbiA9PlxuICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IG1heEZpbGVzOiBudW1iZXIgfSB8IG51bGwgPT5cbiAgICAgICAgY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnZhbHVlLmxlbmd0aCA+IG1heEZpbGVzID8geyBtYXhGaWxlcyB9IDogbnVsbDtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIHRoZSBtYXhpbXVtIHNpemUgKGluIGJ5dGVzKSBvZiBmaWxlcyB0aGF0IGNhbiBiZSB1cGxvYWRlZC5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICogVmFsaWRhdGUgdGhhdCB0aGUgdXNlciBkb2Vzbid0IHNlbGVjdCBhIGZpbGUgaGF2ZSBhIHNpemUgdXAgdG8gMzAwS2I6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZmlsZVVwbG9hZCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBtYXhTaXplVmFsaWRhdG9yKDMwMDAwMCkpO1xuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IG1heFNpemU6IDMwMDAwMCB9XG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBBIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZXJyb3IgbWFwIHdpdGggdGhlXG4gKiBgbWF4U2l6ZWAgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhTaXplVmFsaWRhdG9yID1cbiAgICAobWF4U2l6ZTogbnVtYmVyKTogVmFsaWRhdG9yRm4gPT5cbiAgICAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBtYXhTaXplOiBudW1iZXIgfSB8IG51bGwgPT4ge1xuICAgICAgICBsZXQgdG90YWxTaXplID0gMDtcbiAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRyb2wudmFsdWUuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBmaWxlLnNpemU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250cm9sLnZhbHVlICYmIHRvdGFsU2l6ZSA+IG1heFNpemUgKiAxLjAyNCA/IHsgbWF4U2l6ZSB9IDogbnVsbDtcbiAgICB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgYW4gYXJyYXkgb2YgbWltZSB0eXBlIHRoYXQgY2FuIGJlIHVwbG9hZGVkLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKiBWYWxpZGF0ZSB0aGF0IHRoZSB1c2VyIGRvZXNuJ3Qgc2VsZWN0IGEgZmlsZSBoYXZpbmcgYW5vdGhlciBleHRlbnNpb24gdGhhbiAuanBnIG9yIC5qcGVnOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpbGVVcGxvYWQgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgbWltZVR5cGVFeHRlbnNpb25WYWxpZGF0b3IoWydpbWFnZS9qcGVnJ10pKSxcbiAqIGNvbnNvbGUubG9nKGZpbGVVcGxvYWQuZXJyb3JzKTsgLy8geyBpbnZhbGlkTWltZUZpbGVUeXBlOiBbJ2ltYWdlL2pwZWcnXSB9XG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBBbiBBc3luYyB2YWxpZGF0b3IgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGVycm9yIG1hcCB3aXRoIHRoZVxuICogYGludmFsaWRNaW1lRmlsZVR5cGVgIGlmIHRoZSB2YWxpZGF0aW9uIGNoZWNrIGZhaWxzLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5leHBvcnQgY29uc3QgbWltZVR5cGVFeHRlbnNpb25WYWxpZGF0b3IgPVxuICAgIChtaW1lVHlwZXM6IE1pbWVUeXBlW10pOiBBc3luY1ZhbGlkYXRvckZuID0+XG4gICAgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xuICAgICAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZUVycm9yT2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+W10gPSBbXTtcbiAgICAgICAgICAgIC8vIGl0ZXJhdGUgb3ZlciBmaWxlc1xuICAgICAgICAgICAgY29udHJvbC52YWx1ZS5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gcHVzaCBvYnNlcnZhYmxlIHdoaWNoIHdpbGwgY2hlY2sgdGhlIG1pbWUgdmFsaWRhdGlvbiB0eXBlXG4gICAgICAgICAgICAgICAgZmlsZUVycm9yT2JzZXJ2YWJsZXMucHVzaCh2YWxpZGF0ZUZpbGVNaW1lVHlwZShmaWxlLCBtaW1lVHlwZXMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHppcCguLi5maWxlRXJyb3JPYnNlcnZhYmxlcykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGZpbGVFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gZmlsZUVycm9ycy5maWx0ZXIoKGZpbGVFcnJvcikgPT4gZmlsZUVycm9yICE9PSBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRXJyb3Igc2hvdWxkIGJlIHsgZmlsZU5hbWU6IEZpbGVUeXBlIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZE1pbWVGaWxlVHlwZTogZXJyb3JzIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH07XG5cbmNvbnN0IHZhbGlkYXRlRmlsZU1pbWVUeXBlID0gKGZpbGU6IEZpbGUsIG1pbWVUeXBlczogTWltZVR5cGVbXSk6IE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4gPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx7IFtwOiBzdHJpbmddOiBhbnkgfT4oKHN1YnNjcmliZXIpID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IHJlYWRlci5yZXN1bHQgYXMgQXJyYXlCdWZmZXI7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJCeXRlcyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcikuc2xpY2UoMCwgOCk7XG4gICAgICAgICAgICBjb25zdCBtaW1lID0gZ2V0TWltZVR5cGUoaGVhZGVyQnl0ZXMpO1xuICAgICAgICAgICAgaWYgKG1pbWVUeXBlcy5pbmRleE9mKG1pbWUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh7IFtmaWxlLm5hbWVdOiBtaW1lIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9O1xuICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XG4gICAgfSk7XG59O1xuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9ldWktZmlsZS11cGxvYWQvdXRpbHMvZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sY0FBYyxDQUFDO0FBRXJEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQzFCLENBQUMsUUFBZ0IsRUFBZSxFQUFFLENBQ2xDLENBQUMsT0FBd0IsRUFBK0IsRUFBRSxDQUN0RCxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRS9FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQ3pCLENBQUMsT0FBZSxFQUFlLEVBQUUsQ0FDakMsQ0FBQyxPQUF3QixFQUE4QixFQUFFO0lBQ3JELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNsQixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFO1lBQ2pDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksU0FBUyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxF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Q25DLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldE1pbWVUeXBlLCBNaW1lVHlwZSB9IGZyb20gJy4vbWltZS10eXBlcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIFZhbGlkYXRlIHRoYXQgdGhlIHVzZXIgc2VsZWN0ZWQgbWF4aW11bSAzIGZpbGVzOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpbGVVcGxvYWQgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgbWF4RmlsZXNWYWxpZGF0b3IoMykpO1xuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IG1heEZpbGVzOiAzIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlcnJvciBtYXAgd2l0aCB0aGVcbiAqIGBtYXhGaWxlc2AgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhGaWxlc1ZhbGlkYXRvciA9XG4gICAgKG1heEZpbGVzOiBudW1iZXIpOiBWYWxpZGF0b3JGbiA9PlxuICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IG1heEZpbGVzOiBudW1iZXIgfSB8IG51bGwgPT5cbiAgICAgICAgY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnZhbHVlLmxlbmd0aCA+IG1heEZpbGVzID8geyBtYXhGaWxlcyB9IDogbnVsbDtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIHRoZSBtYXhpbXVtIHNpemUgKGluIGJ5dGVzKSBvZiBmaWxlcyB0aGF0IGNhbiBiZSB1cGxvYWRlZC5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICogVmFsaWRhdGUgdGhhdCB0aGUgdXNlciBkb2Vzbid0IHNlbGVjdCBhIGZpbGUgaGF2ZSBhIHNpemUgdXAgdG8gMzAwS2I6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZmlsZVVwbG9hZCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBtYXhTaXplVmFsaWRhdG9yKDMwMDAwMCkpO1xuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IG1heFNpemU6IDMwMDAwMCB9XG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBBIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZXJyb3IgbWFwIHdpdGggdGhlXG4gKiBgbWF4U2l6ZWAgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhTaXplVmFsaWRhdG9yID1cbiAgICAobWF4U2l6ZTogbnVtYmVyKTogVmFsaWRhdG9yRm4gPT5cbiAgICAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBtYXhTaXplOiBudW1iZXIgfSB8IG51bGwgPT4ge1xuICAgICAgICBsZXQgdG90YWxTaXplID0gMDtcbiAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRyb2wudmFsdWUuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBmaWxlLnNpemU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250cm9sLnZhbHVlICYmIHRvdGFsU2l6ZSA+IG1heFNpemUgKiAxLjAyNCA/IHsgbWF4U2l6ZSB9IDogbnVsbDtcbiAgICB9O1xuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGFuIGFycmF5IG9mIG1pbWUgdHlwZSB0aGF0IGNhbiBiZSB1cGxvYWRlZC5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICogVmFsaWRhdGUgdGhhdCB0aGUgdXNlciBkb2Vzbid0IHNlbGVjdCBhIGZpbGUgaGF2aW5nIGFub3RoZXIgZXh0ZW5zaW9uIHRoYW4gLmpwZyBvciAuanBlZzpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaWxlVXBsb2FkID0gbmV3IEZvcm1Db250cm9sKG51bGwsIG1pbWVUeXBlRXh0ZW5zaW9uVmFsaWRhdG9yKFsnaW1hZ2UvanBlZyddKSksXG4gKiBjb25zb2xlLmxvZyhmaWxlVXBsb2FkLmVycm9ycyk7IC8vIHsgaW52YWxpZEZpbGVFeHRlbnNpb246IFsnaW1hZ2UvanBlZyddIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlcnJvciBtYXAgd2l0aCB0aGVcbiAqIGBpbnZhbGlkRmlsZUV4dGVuc2lvbmAgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW1lVHlwZUV4dGVuc2lvblZhbGlkYXRvciA9XG4gICAgKG1pbWVUeXBlczogc3RyaW5nW10pOiBWYWxpZGF0b3JGbiA9PlxuICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IGludmFsaWRGaWxlRXh0ZW5zaW9uOiBzdHJpbmdbXSB9IHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IGludmFsaWRGaWxlRXh0ZW5zaW9uOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgY29udHJvbC52YWx1ZS5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG1pbWVUeXBlcy5pbmRleE9mKGZpbGUudHlwZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGludmFsaWRGaWxlRXh0ZW5zaW9uLnB1c2goZmlsZS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250cm9sLnZhbHVlICYmIGludmFsaWRGaWxlRXh0ZW5zaW9uLmxlbmd0aCA+IDAgPyB7IGludmFsaWRGaWxlRXh0ZW5zaW9uIH0gOiBudWxsO1xuICAgIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBhbiBhcnJheSBvZiBtaW1lIHR5cGUgdGhhdCBjYW4gYmUgdXBsb2FkZWQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIFZhbGlkYXRlIHRoYXQgdGhlIHVzZXIgZG9lc24ndCBzZWxlY3QgYSBmaWxlIGhhdmluZyBhbm90aGVyIGV4dGVuc2lvbiB0aGFuIC5qcGcgb3IgLmpwZWc6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZmlsZVVwbG9hZCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBtaW1lVHlwZUV4dGVuc2lvblZhbGlkYXRvcihbJ2ltYWdlL2pwZWcnXSkpLFxuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IGludmFsaWRNaW1lRmlsZVR5cGU6IFsnaW1hZ2UvanBlZyddIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEFuIEFzeW5jIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZXJyb3IgbWFwIHdpdGggdGhlXG4gKiBgaW52YWxpZE1pbWVGaWxlVHlwZWAgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBhc3luY01pbWVUeXBlRXh0ZW5zaW9uVmFsaWRhdG9yID1cbiAgICAobWltZVR5cGVzOiBNaW1lVHlwZVtdKTogQXN5bmNWYWxpZGF0b3JGbiA9PlxuICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcbiAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVFcnJvck9ic2VydmFibGVzOiBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPltdID0gW107XG4gICAgICAgICAgICAvLyBpdGVyYXRlIG92ZXIgZmlsZXNcbiAgICAgICAgICAgIGNvbnRyb2wudmFsdWUuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHB1c2ggb2JzZXJ2YWJsZSB3aGljaCB3aWxsIGNoZWNrIHRoZSBtaW1lIHZhbGlkYXRpb24gdHlwZVxuICAgICAgICAgICAgICAgIGZpbGVFcnJvck9ic2VydmFibGVzLnB1c2godmFsaWRhdGVGaWxlTWltZVR5cGUoZmlsZSwgbWltZVR5cGVzKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB6aXAoLi4uZmlsZUVycm9yT2JzZXJ2YWJsZXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChmaWxlRXJyb3JzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IGZpbGVFcnJvcnMuZmlsdGVyKChmaWxlRXJyb3IpID0+IGZpbGVFcnJvciAhPT0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEVycm9yIHNob3VsZCBiZSB7IGZpbGVOYW1lOiBGaWxlVHlwZSB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGludmFsaWRNaW1lRmlsZVR5cGU6IGVycm9ycyB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9O1xuXG5jb25zdCB2YWxpZGF0ZUZpbGVNaW1lVHlwZSA9IChmaWxlOiBGaWxlLCBtaW1lVHlwZXM6IE1pbWVUeXBlW10pOiBPYnNlcnZhYmxlPHsgW2tleTogc3RyaW5nXTogYW55IH0+ID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8eyBbcDogc3RyaW5nXTogYW55IH0+KChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBidWZmZXIgPSByZWFkZXIucmVzdWx0IGFzIEFycmF5QnVmZmVyO1xuICAgICAgICAgICAgY29uc3QgaGVhZGVyQnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpLnNsaWNlKDAsIDgpO1xuICAgICAgICAgICAgY29uc3QgbWltZSA9IGdldE1pbWVUeXBlKGhlYWRlckJ5dGVzKTtcbiAgICAgICAgICAgIGlmIChtaW1lVHlwZXMuaW5kZXhPZihtaW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoeyBbZmlsZS5uYW1lXTogbWltZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgIH0pO1xufTtcbiJdfQ==
@@ -94,11 +94,11 @@ export class EuiLanguageSelectorComponent extends BaseDirective {
94
94
  return this.languages.find((lang) => lang.code === languageCode);
95
95
  }
96
96
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiLanguageSelectorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.EuiDialogService }, { token: i2.UxAppShellService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
97
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiLanguageSelectorComponent, selector: "eui-language-selector", host: { properties: { "class": "this.cssClasses", "attr.tabindex": "this.tabindex" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isShowDropDown\">\n <eui-dropdown>\n <button class=\"eui-language-selector-button\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-language-selector-menu\">\n <div\n *ngFor=\"let language of languages\"\n euiDropdownItem\n attr.data-e2e=\"eui-language-selector-item_{{ language.code }}\"\n class=\"eui-language-selector-menu-language-item\"\n (click)=\"onLanguageChanged(language)\">\n {{ language.label }} ({{ language.code }})\n </div>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-container>\n\n<ng-container *ngIf=\"isShowModal\">\n <button class=\"eui-language-selector-button\" (click)=\"open()\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;color:var(--eui-base-color-primary-100);display:flex;font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover"] }, { kind: "component", type: i5.EuiDropdownItemComponent, selector: "eui-dropdown-item, [euiDropdownItem]", inputs: ["subDropdown", "isActive"] }, { kind: "directive", type: i5.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
97
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiLanguageSelectorComponent, selector: "eui-language-selector", host: { properties: { "class": "this.cssClasses", "attr.tabindex": "this.tabindex" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isShowDropDown\">\n <eui-dropdown>\n <button class=\"eui-language-selector-button\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-language-selector-menu\">\n <div\n *ngFor=\"let language of languages\"\n euiDropdownItem\n attr.data-e2e=\"eui-language-selector-item_{{ language.code }}\"\n class=\"eui-language-selector-menu-language-item\"\n (click)=\"onLanguageChanged(language)\">\n {{ language.label }} ({{ language.code }})\n </div>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-container>\n\n<ng-container *ngIf=\"isShowModal\">\n <button class=\"eui-language-selector-button\" (click)=\"open()\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector.eui-app-toolbar__language-selector .eui-language-selector-button__language-code{color:var(--eui-base-color-primary-100)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;display:flex;color:var(--eui-base-color-white);font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover"] }, { kind: "component", type: i5.EuiDropdownItemComponent, selector: "eui-dropdown-item, [euiDropdownItem]", inputs: ["subDropdown", "isActive"] }, { kind: "directive", type: i5.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
98
98
  }
99
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiLanguageSelectorComponent, decorators: [{
100
100
  type: Component,
101
- args: [{ selector: 'eui-language-selector', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"isShowDropDown\">\n <eui-dropdown>\n <button class=\"eui-language-selector-button\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-language-selector-menu\">\n <div\n *ngFor=\"let language of languages\"\n euiDropdownItem\n attr.data-e2e=\"eui-language-selector-item_{{ language.code }}\"\n class=\"eui-language-selector-menu-language-item\"\n (click)=\"onLanguageChanged(language)\">\n {{ language.label }} ({{ language.code }})\n </div>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-container>\n\n<ng-container *ngIf=\"isShowModal\">\n <button class=\"eui-language-selector-button\" (click)=\"open()\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;color:var(--eui-base-color-primary-100);display:flex;font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"] }]
101
+ args: [{ selector: 'eui-language-selector', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"isShowDropDown\">\n <eui-dropdown>\n <button class=\"eui-language-selector-button\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-language-selector-menu\">\n <div\n *ngFor=\"let language of languages\"\n euiDropdownItem\n attr.data-e2e=\"eui-language-selector-item_{{ language.code }}\"\n class=\"eui-language-selector-menu-language-item\"\n (click)=\"onLanguageChanged(language)\">\n {{ language.label }} ({{ language.code }})\n </div>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-container>\n\n<ng-container *ngIf=\"isShowModal\">\n <button class=\"eui-language-selector-button\" (click)=\"open()\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector.eui-app-toolbar__language-selector .eui-language-selector-button__language-code{color:var(--eui-base-color-primary-100)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;display:flex;color:var(--eui-base-color-white);font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"] }]
102
102
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.EuiDialogService }, { type: i2.UxAppShellService }, { type: i3.TranslateService }]; }, propDecorators: { cssClasses: [{
103
103
  type: HostBinding,
104
104
  args: ['class']
@@ -46,11 +46,11 @@ export class EuiModalSelectorComponent {
46
46
  return rows;
47
47
  }
48
48
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiModalSelectorComponent, deps: [{ token: i1.EuiDialogService }, { token: DIALOG_COMPONENT_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
49
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiModalSelectorComponent, selector: "eui-modal-selector", ngImport: i0, template: "<h4 *ngIf=\"additionaLanguageRows?.length > 0\">EU official languages</h4>\n<div id=\"eu_languages\" *ngFor=\"let row of languageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n</div>\n<ng-container *ngIf=\"additionaLanguageRows?.length > 0\">\n <br />\n <h4>Non-EU Languages</h4>\n <div id=\"extra_languages\" *ngFor=\"let row of additionaLanguageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;color:var(--eui-base-color-primary-100);display:flex;font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
49
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiModalSelectorComponent, selector: "eui-modal-selector", ngImport: i0, template: "<h4 *ngIf=\"additionaLanguageRows?.length > 0\">EU official languages</h4>\n<div id=\"eu_languages\" *ngFor=\"let row of languageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n</div>\n<ng-container *ngIf=\"additionaLanguageRows?.length > 0\">\n <br />\n <h4>Non-EU Languages</h4>\n <div id=\"extra_languages\" *ngFor=\"let row of additionaLanguageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector.eui-app-toolbar__language-selector .eui-language-selector-button__language-code{color:var(--eui-base-color-primary-100)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;display:flex;color:var(--eui-base-color-white);font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiModalSelectorComponent, decorators: [{
52
52
  type: Component,
53
- args: [{ selector: 'eui-modal-selector', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<h4 *ngIf=\"additionaLanguageRows?.length > 0\">EU official languages</h4>\n<div id=\"eu_languages\" *ngFor=\"let row of languageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n</div>\n<ng-container *ngIf=\"additionaLanguageRows?.length > 0\">\n <br />\n <h4>Non-EU Languages</h4>\n <div id=\"extra_languages\" *ngFor=\"let row of additionaLanguageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;color:var(--eui-base-color-primary-100);display:flex;font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"] }]
53
+ args: [{ selector: 'eui-modal-selector', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<h4 *ngIf=\"additionaLanguageRows?.length > 0\">EU official languages</h4>\n<div id=\"eu_languages\" *ngFor=\"let row of languageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n</div>\n<ng-container *ngIf=\"additionaLanguageRows?.length > 0\">\n <br />\n <h4>Non-EU Languages</h4>\n <div id=\"extra_languages\" *ngFor=\"let row of additionaLanguageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector.eui-app-toolbar__language-selector .eui-language-selector-button__language-code{color:var(--eui-base-color-primary-100)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;display:flex;color:var(--eui-base-color-white);font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"] }]
54
54
  }], ctorParameters: function () { return [{ type: i1.EuiDialogService }, { type: undefined, decorators: [{
55
55
  type: Inject,
56
56
  args: [DIALOG_COMPONENT_CONFIG]
@@ -32,6 +32,22 @@ export declare const maxFilesValidator: (maxFiles: number) => ValidatorFn;
32
32
  * `maxSize` if the validation check fails, otherwise `null`.
33
33
  */
34
34
  export declare const maxSizeValidator: (maxSize: number) => ValidatorFn;
35
+ /**
36
+ * @description
37
+ * Validator that requires an array of mime type that can be uploaded.
38
+ *
39
+ * @usageNotes
40
+ * Validate that the user doesn't select a file having another extension than .jpg or .jpeg:
41
+ *
42
+ * ```typescript
43
+ * const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),
44
+ * console.log(fileUpload.errors); // { invalidFileExtension: ['image/jpeg'] }
45
+ * ```
46
+ *
47
+ * @returns A validator function that returns an error map with the
48
+ * `invalidFileExtension` if the validation check fails, otherwise `null`.
49
+ */
50
+ export declare const mimeTypeExtensionValidator: (mimeTypes: string[]) => ValidatorFn;
35
51
  /**
36
52
  * @description
37
53
  * Validator that requires an array of mime type that can be uploaded.
@@ -47,5 +63,5 @@ export declare const maxSizeValidator: (maxSize: number) => ValidatorFn;
47
63
  * @returns An Async validator function that returns an error map with the
48
64
  * `invalidMimeFileType` if the validation check fails, otherwise `null`.
49
65
  */
50
- export declare const mimeTypeExtensionValidator: (mimeTypes: MimeType[]) => AsyncValidatorFn;
66
+ export declare const asyncMimeTypeExtensionValidator: (mimeTypes: MimeType[]) => AsyncValidatorFn;
51
67
  //# sourceMappingURL=eui-file-upload.validators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eui-file-upload.validators.d.ts","sourceRoot":"","sources":["../../../eui-file-upload/utils/eui-file-upload.validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlG,OAAO,EAAe,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,aACf,MAAM,KAAG,WAEsD,CAAC;AAE/E;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,YACf,MAAM,KAAG,WAUlB,CAAC;AAEN;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B,cACvB,QAAQ,EAAE,KAAG,gBAkBxB,CAAC"}
1
+ {"version":3,"file":"eui-file-upload.validators.d.ts","sourceRoot":"","sources":["../../../eui-file-upload/utils/eui-file-upload.validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlG,OAAO,EAAe,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,aACf,MAAM,KAAG,WAEsD,CAAC;AAE/E;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,YACf,MAAM,KAAG,WAUlB,CAAC;AACN;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B,cACvB,MAAM,EAAE,KAAG,WAYtB,CAAC;AAEN;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,+BAA+B,cAC5B,QAAQ,EAAE,KAAG,gBAkBxB,CAAC"}
@@ -70,11 +70,11 @@ class EuiBlockContentComponent extends BaseDirective {
70
70
  return this.elRef.nativeElement.querySelector(':focus');
71
71
  }
72
72
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiBlockContentComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
73
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiBlockContentComponent, selector: "eui-block-content", inputs: { isBlocked: "isBlocked" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative;z-index:var(--eui-base-z-index-overlay)}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px;z-index:10002}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%;z-index:10001}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
73
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiBlockContentComponent, selector: "eui-block-content", inputs: { isBlocked: "isBlocked" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
74
74
  }
75
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiBlockContentComponent, decorators: [{
76
76
  type: Component,
77
- args: [{ selector: 'eui-block-content', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative;z-index:var(--eui-base-z-index-overlay)}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px;z-index:10002}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%;z-index:10001}\n"] }]
77
+ args: [{ selector: 'eui-block-content', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"] }]
78
78
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { isBlocked: [{
79
79
  type: Input
80
80
  }], cssClasses: [{
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-eui-block-content.mjs","sources":["../../eui-block-content/eui-block-content.component.ts","../../eui-block-content/eui-block-content.component.html","../../eui-block-content/eui-block-content.module.ts","../../eui-block-content/eui-components-eui-block-content.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n HostBinding,\n} from '@angular/core';\nimport { BaseDirective } from '@eui/components/shared';\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'eui-block-content',\n templateUrl: './eui-block-content.component.html',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class EuiBlockContentComponent extends BaseDirective implements OnChanges {\n @Input()\n get isBlocked(): boolean {\n return this._isBlocked;\n }\n set isBlocked(value: BooleanInput) {\n this._isBlocked = coerceBooleanProperty(value);\n }\n private _isBlocked = false;\n\n /** keeps the state of the element that was focused before content was blocked */\n private lastActiveElement: HTMLElement = null;\n\n @HostBinding('class')\n get cssClasses(): string {\n return [this.isBlocked ? `eui-block-content--blocked` : ``, super.getCssClasses('eui-block-content')].join(' ').trim();\n }\n\n constructor(private elRef: ElementRef, private renderer: Renderer2) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isBlocked']) {\n const activeElement = this.getActiveElement();\n const isBlocking = this.isAboutToBlock(changes);\n\n if (isBlocking) {\n this.deactivateElement(activeElement);\n } else {\n this.reactivateElement(this.lastActiveElement);\n }\n }\n }\n\n /**\n * blur (un-focus) the focused element inside BlockContent\n */\n deactivateElement(activeElement: HTMLElement): void {\n if (activeElement) {\n this.renderer.selectRootElement(activeElement, true).blur();\n this.lastActiveElement = activeElement;\n } else {\n this.lastActiveElement = null;\n }\n }\n\n /**\n * focus on element if it was focused before content was blocked\n */\n reactivateElement(element: HTMLElement): void {\n if (element) {\n this.renderer.selectRootElement(element, true).focus();\n }\n }\n\n /**\n * returns where the element is about to block or not\n *\n * @param changes SimplyChanges\n */\n private isAboutToBlock(changes: SimpleChanges): boolean {\n const isBlockedChange = changes['isBlocked'];\n\n return isBlockedChange?.currentValue && !isBlockedChange.previousValue;\n }\n\n /**\n * finds the element which is focused inside the UxBlockContent\n */\n private getActiveElement(): HTMLElement {\n return this.elRef.nativeElement.querySelector(':focus');\n }\n}\n","<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiBlockContentComponent } from './eui-block-content.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [EuiBlockContentComponent],\n declarations: [EuiBlockContentComponent],\n})\nexport class EuiBlockContentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-components-eui-block-content.mjs","sources":["../../eui-block-content/eui-block-content.component.ts","../../eui-block-content/eui-block-content.component.html","../../eui-block-content/eui-block-content.module.ts","../../eui-block-content/eui-components-eui-block-content.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n HostBinding,\n} from '@angular/core';\nimport { BaseDirective } from '@eui/components/shared';\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'eui-block-content',\n templateUrl: './eui-block-content.component.html',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class EuiBlockContentComponent extends BaseDirective implements OnChanges {\n @Input()\n get isBlocked(): boolean {\n return this._isBlocked;\n }\n set isBlocked(value: BooleanInput) {\n this._isBlocked = coerceBooleanProperty(value);\n }\n private _isBlocked = false;\n\n /** keeps the state of the element that was focused before content was blocked */\n private lastActiveElement: HTMLElement = null;\n\n @HostBinding('class')\n get cssClasses(): string {\n return [this.isBlocked ? `eui-block-content--blocked` : ``, super.getCssClasses('eui-block-content')].join(' ').trim();\n }\n\n constructor(private elRef: ElementRef, private renderer: Renderer2) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isBlocked']) {\n const activeElement = this.getActiveElement();\n const isBlocking = this.isAboutToBlock(changes);\n\n if (isBlocking) {\n this.deactivateElement(activeElement);\n } else {\n this.reactivateElement(this.lastActiveElement);\n }\n }\n }\n\n /**\n * blur (un-focus) the focused element inside BlockContent\n */\n deactivateElement(activeElement: HTMLElement): void {\n if (activeElement) {\n this.renderer.selectRootElement(activeElement, true).blur();\n this.lastActiveElement = activeElement;\n } else {\n this.lastActiveElement = null;\n }\n }\n\n /**\n * focus on element if it was focused before content was blocked\n */\n reactivateElement(element: HTMLElement): void {\n if (element) {\n this.renderer.selectRootElement(element, true).focus();\n }\n }\n\n /**\n * returns where the element is about to block or not\n *\n * @param changes SimplyChanges\n */\n private isAboutToBlock(changes: SimpleChanges): boolean {\n const isBlockedChange = changes['isBlocked'];\n\n return isBlockedChange?.currentValue && !isBlockedChange.previousValue;\n }\n\n /**\n * finds the element which is focused inside the UxBlockContent\n */\n private getActiveElement(): HTMLElement {\n return this.elRef.nativeElement.querySelector(':focus');\n }\n}\n","<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiBlockContentComponent } from './eui-block-content.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [EuiBlockContentComponent],\n declarations: [EuiBlockContentComponent],\n})\nexport class EuiBlockContentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}