@onemrvapublic/design-system 18.2.10 → 18.2.11-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/esm2022/core/src/lib/core.module.mjs +4 -4
  2. package/esm2022/core/src/lib/services/onemrva-error-handler.service.mjs +3 -3
  3. package/esm2022/flag-icon/src/flag-icon.component.mjs +3 -3
  4. package/esm2022/layout/src/components/layout/layout.component.mjs +3 -3
  5. package/esm2022/layout/src/components/layout-after-nav/layout-after-nav.component.mjs +3 -3
  6. package/esm2022/layout/src/components/layout-content/layout-content.component.mjs +3 -3
  7. package/esm2022/layout/src/components/layout-drawer-actions/layout-drawer-actions.component.mjs +3 -3
  8. package/esm2022/layout/src/components/layout-drawer-content/layout-drawer-content.component.mjs +3 -3
  9. package/esm2022/layout/src/components/layout-drawer-title/layout-drawer-title.component.mjs +3 -3
  10. package/esm2022/layout/src/components/layout-footer/layout-footer.component.mjs +3 -3
  11. package/esm2022/layout/src/components/layout-login-menu/layout-login-menu.component.mjs +3 -3
  12. package/esm2022/layout/src/components/layout-route/layout-route.component.mjs +3 -3
  13. package/esm2022/layout/src/components/layout-sidenav/layout-sidenav.component.mjs +3 -3
  14. package/esm2022/layout/src/components/layout-sidenav-title/layout-sidenav-title.component.mjs +3 -3
  15. package/esm2022/layout/src/components/layout-subroute/layout-subroute.component.mjs +3 -3
  16. package/esm2022/layout/src/components/layout-title/layout-title.component.mjs +3 -3
  17. package/esm2022/layout/src/directives/drawer-host.directive.mjs +3 -3
  18. package/esm2022/layout/src/layout.module.mjs +4 -4
  19. package/esm2022/layout/src/services/drawer.service.mjs +3 -3
  20. package/esm2022/layout/src/striphtml.pipe.mjs +3 -3
  21. package/esm2022/mat-avatar/src/onemrva-mat-avatar.component.mjs +3 -3
  22. package/esm2022/mat-avatar/src/onemrva-mat-avatar.module.mjs +4 -4
  23. package/esm2022/mat-badge/src/onemrva-mat-badge.component.mjs +3 -3
  24. package/esm2022/mat-badge/src/onemrva-mat-badge.module.mjs +4 -4
  25. package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.mjs +3 -3
  26. package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.module.mjs +4 -4
  27. package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.service.mjs +3 -3
  28. package/esm2022/mat-carousel/src/mat-carousel-item/onemrva-mat-carousel-item.component.mjs +3 -3
  29. package/esm2022/mat-carousel/src/onemrva-mat-carousel.component.mjs +3 -3
  30. package/esm2022/mat-copy-to-clipboard/src/components/copy-to-clipboard.component.mjs +3 -3
  31. package/esm2022/mat-datepicker-header/src/onemrva-mat-datepicker-header.component.mjs +3 -3
  32. package/esm2022/mat-empty-row/src/onemrva-mat-empty-row.component.mjs +3 -3
  33. package/esm2022/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.mjs +3 -3
  34. package/esm2022/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.mjs +3 -3
  35. package/esm2022/mat-file-upload/src/directives/dnd.directive.mjs +3 -3
  36. package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.module.mjs +4 -4
  37. package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.service.mjs +3 -3
  38. package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.store.mjs +3 -3
  39. package/esm2022/mat-input-birthplace/src/country-item.component.mjs +3 -3
  40. package/esm2022/mat-input-birthplace/src/onemrva-mat-input-birthplace.component.mjs +3 -3
  41. package/esm2022/mat-input-country/src/onemrva-mat-input-country.component.mjs +3 -3
  42. package/esm2022/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.mjs +3 -3
  43. package/esm2022/mat-input-iban/index.mjs +5 -0
  44. package/esm2022/mat-input-iban/onemrvapublic-design-system-mat-input-iban.mjs +5 -0
  45. package/esm2022/mat-input-iban/src/onemrva-mat-input-iban.component.mjs +278 -0
  46. package/esm2022/mat-input-phone/src/onemrva-mat-input-phone.component.mjs +3 -3
  47. package/esm2022/mat-input-phone/src/phone-number.directive.mjs +3 -3
  48. package/esm2022/mat-message-box/src/onemrva-mat-message-box.component.mjs +3 -3
  49. package/esm2022/mat-message-box/src/onemrva-mat-message-box.module.mjs +4 -4
  50. package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.component.mjs +3 -3
  51. package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.module.mjs +4 -4
  52. package/esm2022/mat-notification/src/onemrva-mat-notification.component.mjs +3 -3
  53. package/esm2022/mat-paginator/src/onemrva-mat-paginator.component.mjs +3 -3
  54. package/esm2022/mat-paginator/src/onemrva-mat-paginator.module.mjs +4 -4
  55. package/esm2022/mat-panel/src/onemrva-mat-panel-content.component.mjs +3 -3
  56. package/esm2022/mat-panel/src/onemrva-mat-panel-icon.component.mjs +3 -3
  57. package/esm2022/mat-panel/src/onemrva-mat-panel-title-action.component.mjs +3 -3
  58. package/esm2022/mat-panel/src/onemrva-mat-panel-title.component.mjs +3 -3
  59. package/esm2022/mat-panel/src/onemrva-mat-panel.component.mjs +3 -3
  60. package/esm2022/mat-panel/src/onemrva-mat-panel.module.mjs +4 -4
  61. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-content.component.mjs +3 -3
  62. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-trigger.component.mjs +3 -3
  63. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.component.mjs +3 -3
  64. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.module.mjs +4 -4
  65. package/esm2022/mat-progress-bar/src/onemrva-mat-progress-bar.component.mjs +3 -3
  66. package/esm2022/mat-select-search/src/mat-select-no-entries-found.directive.mjs +3 -3
  67. package/esm2022/mat-select-search/src/mat-select-search-clear.directive.mjs +3 -3
  68. package/esm2022/mat-select-search/src/mat-select-search.component.mjs +3 -3
  69. package/esm2022/mat-select-search/src/mat-select-search.module.mjs +4 -4
  70. package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.component.mjs +3 -3
  71. package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.module.mjs +4 -4
  72. package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.component.mjs +3 -3
  73. package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.module.mjs +4 -4
  74. package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.component.mjs +3 -3
  75. package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.module.mjs +4 -4
  76. package/esm2022/mat-spinner/src/onemrva-mat-loading.directive.mjs +3 -3
  77. package/esm2022/mat-spinner/src/onemrva-mat-spinner.component.mjs +3 -3
  78. package/esm2022/mat-spinner/src/onemrva-mat-spinner.module.mjs +4 -4
  79. package/esm2022/mat-stepper/src/onemrva-mat-stepper.component.mjs +3 -3
  80. package/esm2022/mat-stepper/src/onemrva-mat-stepper.module.mjs +4 -4
  81. package/esm2022/mat-sticker/src/onemrva-mat-sticker.component.mjs +3 -3
  82. package/esm2022/mat-sticker/src/onemrva-mat-sticker.module.mjs +4 -4
  83. package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.component.mjs +3 -3
  84. package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.directive.mjs +3 -3
  85. package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.service.mjs +3 -3
  86. package/esm2022/mat-task-list/src/onemrva-mat-task-content.component.mjs +3 -3
  87. package/esm2022/mat-task-list/src/onemrva-mat-task-list.component.mjs +3 -3
  88. package/esm2022/mat-task-list/src/onemrva-mat-task-list.module.mjs +4 -4
  89. package/esm2022/mat-task-list/src/onemrva-mat-task-title.component.mjs +3 -3
  90. package/esm2022/mat-task-list/src/onemrva-mat-task.component.mjs +3 -3
  91. package/esm2022/mat-timepicker/src/clock/clock.component.mjs +3 -3
  92. package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.component.mjs +3 -3
  93. package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.module.mjs +4 -4
  94. package/esm2022/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.mjs +3 -3
  95. package/esm2022/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.mjs +6 -6
  96. package/esm2022/mat-timepicker/src/timepicker.directive.mjs +3 -3
  97. package/esm2022/mat-toast/src/onemrva-mat-toast.component.mjs +3 -3
  98. package/esm2022/mat-toast/src/onemrva-mat-toast.module.mjs +4 -4
  99. package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.component.mjs +3 -3
  100. package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.directive.mjs +3 -3
  101. package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.module.mjs +4 -4
  102. package/esm2022/page-not-found/src/page-not-found-action.component.mjs +3 -3
  103. package/esm2022/page-not-found/src/page-not-found-extra.component.mjs +3 -3
  104. package/esm2022/page-not-found/src/page-not-found-invader.component.mjs +3 -3
  105. package/esm2022/page-not-found/src/page-not-found.component.mjs +3 -3
  106. package/esm2022/page-not-found/src/page-not-found.module.mjs +4 -4
  107. package/esm2022/shared/src/lib/adapters/date.adapter.mjs +3 -3
  108. package/esm2022/shared/src/lib/components/clipboard-icon/clipboard-icon.component.mjs +3 -3
  109. package/esm2022/shared/src/lib/containers/WebComponentOverlayContainer.mjs +3 -3
  110. package/esm2022/shared/src/lib/directives/clipboard.directive.mjs +3 -3
  111. package/esm2022/shared/src/lib/directives/color.directive.mjs +3 -3
  112. package/esm2022/shared/src/lib/directives/digit-only.directive.mjs +3 -3
  113. package/esm2022/shared/src/lib/directives/iconRight.directive.mjs +3 -3
  114. package/esm2022/shared/src/lib/directives/if-width-is.directive.mjs +3 -3
  115. package/esm2022/shared/src/lib/directives/mask.directive.mjs +3 -3
  116. package/esm2022/shared/src/lib/directives/mat-row-clickable.directive.mjs +3 -3
  117. package/esm2022/shared/src/lib/pipes/onemrva-bce.pipe.mjs +3 -3
  118. package/esm2022/shared/src/lib/pipes/onemrva-niss.pipe.mjs +3 -3
  119. package/esm2022/shared/src/lib/services/cache.service.mjs +3 -3
  120. package/esm2022/shared/src/lib/services/cdn.service.mjs +3 -3
  121. package/esm2022/shared/src/lib/services/country-cdn.service.mjs +3 -3
  122. package/esm2022/shared/src/lib/services/country-lookup.service.mjs +3 -3
  123. package/esm2022/shared/src/lib/shared.datepicker.module.mjs +4 -4
  124. package/esm2022/shared/src/lib/shared.module.mjs +4 -4
  125. package/esm2022/shared/src/lib/validators/bank-account.validator.utils.mjs +18 -7
  126. package/fesm2022/onemrvapublic-design-system-core.mjs +7 -7
  127. package/fesm2022/onemrvapublic-design-system-flag-icon.mjs +3 -3
  128. package/fesm2022/onemrvapublic-design-system-layout.mjs +52 -52
  129. package/fesm2022/onemrvapublic-design-system-mat-avatar.mjs +7 -7
  130. package/fesm2022/onemrvapublic-design-system-mat-badge.mjs +7 -7
  131. package/fesm2022/onemrvapublic-design-system-mat-breadcrumb.mjs +10 -10
  132. package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs +6 -6
  133. package/fesm2022/onemrvapublic-design-system-mat-copy-to-clipboard.mjs +3 -3
  134. package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs +3 -3
  135. package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs +3 -3
  136. package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs +19 -19
  137. package/fesm2022/onemrvapublic-design-system-mat-input-birthplace.mjs +6 -6
  138. package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs +3 -3
  139. package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs +3 -3
  140. package/fesm2022/{onemrvapublic-design-system-mat-input-bank-account.mjs → onemrvapublic-design-system-mat-input-iban.mjs} +20 -30
  141. package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs.map +1 -0
  142. package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs +6 -6
  143. package/fesm2022/onemrvapublic-design-system-mat-message-box.mjs +7 -7
  144. package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs +7 -7
  145. package/fesm2022/onemrvapublic-design-system-mat-notification.mjs +3 -3
  146. package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs +7 -7
  147. package/fesm2022/onemrvapublic-design-system-mat-panel.mjs +19 -19
  148. package/fesm2022/onemrvapublic-design-system-mat-pop-over.mjs +13 -13
  149. package/fesm2022/onemrvapublic-design-system-mat-progress-bar.mjs +3 -3
  150. package/fesm2022/onemrvapublic-design-system-mat-select-search.mjs +13 -13
  151. package/fesm2022/onemrvapublic-design-system-mat-selectable-box.mjs +7 -7
  152. package/fesm2022/onemrvapublic-design-system-mat-side-menu.mjs +7 -7
  153. package/fesm2022/onemrvapublic-design-system-mat-skeleton.mjs +7 -7
  154. package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs +10 -10
  155. package/fesm2022/onemrvapublic-design-system-mat-stepper.mjs +7 -7
  156. package/fesm2022/onemrvapublic-design-system-mat-sticker.mjs +7 -7
  157. package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs +9 -9
  158. package/fesm2022/onemrvapublic-design-system-mat-task-list.mjs +16 -16
  159. package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs +22 -22
  160. package/fesm2022/onemrvapublic-design-system-mat-toast.mjs +7 -7
  161. package/fesm2022/onemrvapublic-design-system-mat-tooltip.mjs +10 -10
  162. package/fesm2022/onemrvapublic-design-system-page-not-found.mjs +16 -16
  163. package/fesm2022/onemrvapublic-design-system-shared.mjs +73 -62
  164. package/fesm2022/onemrvapublic-design-system-shared.mjs.map +1 -1
  165. package/{mat-input-bank-account → mat-input-iban}/src/onemrva-mat-input-iban.component.d.ts +2 -4
  166. package/package.json +7 -7
  167. package/esm2022/mat-input-bank-account/index.mjs +0 -5
  168. package/esm2022/mat-input-bank-account/onemrvapublic-design-system-mat-input-bank-account.mjs +0 -5
  169. package/esm2022/mat-input-bank-account/src/onemrva-mat-input-iban.component.mjs +0 -288
  170. package/fesm2022/onemrvapublic-design-system-mat-input-bank-account.mjs.map +0 -1
  171. /package/{mat-input-bank-account → mat-input-iban}/index.d.ts +0 -0
  172. /package/{mat-input-bank-account → mat-input-iban}/src/onemrva-mat-input-iban.component.scss +0 -0
@@ -1,288 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Inject, Input, Optional, Output, Self, ViewChild, ViewEncapsulation, } from '@angular/core';
3
- import { FormControl, ReactiveFormsModule, Validators, } from '@angular/forms';
4
- import { MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule, MatPrefix, } from '@angular/material/form-field';
5
- import { MatInputModule } from '@angular/material/input';
6
- import { MatSelectModule } from '@angular/material/select';
7
- import { TranslateModule } from '@ngx-translate/core';
8
- import { combineLatestWith, distinctUntilChanged, of, pairwise, startWith, Subject, takeUntil, } from 'rxjs';
9
- import { MatSelectSearchModule } from '@onemrvapublic/design-system/mat-select-search';
10
- import { bankAccountValidator, IBAN_SUPPORTED_COUNTRIES, } from '@onemrvapublic/design-system/shared';
11
- import { map } from 'rxjs/operators';
12
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
13
- import { countrySpecs, extractIBAN, friendlyFormatIBAN, isValidIBAN, } from 'ibantools';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "@angular/forms";
16
- import * as i2 from "@angular/cdk/a11y";
17
- import * as i3 from "@angular/common";
18
- import * as i4 from "@angular/material/input";
19
- import * as i5 from "@angular/material/select";
20
- import * as i6 from "@angular/material/core";
21
- import * as i7 from "@onemrvapublic/design-system/mat-select-search";
22
- import * as i8 from "@angular/material/form-field";
23
- export class OnemrvaMatInputIbanComponent {
24
- static { this.nextId = 0; }
25
- get bbanField() {
26
- return this.parts.get('bban');
27
- }
28
- get countryCodeField() {
29
- return this.parts.get('countryCode');
30
- }
31
- constructor(formBuilder, _focusMonitor, _elementRef, _cd, _formField, ngControl) {
32
- this._focusMonitor = _focusMonitor;
33
- this._elementRef = _elementRef;
34
- this._cd = _cd;
35
- this._formField = _formField;
36
- this.ngControl = ngControl;
37
- this.label = 'IBAN';
38
- this.noEntriesFoundLabel = 'Not found';
39
- this.placeholderLabel = 'Search';
40
- this.searchAriaLabel = 'Search';
41
- this.hint = '';
42
- this.getCountry = new EventEmitter();
43
- this.countryCodes$ = of([]);
44
- this.filterCtrl = new FormControl('');
45
- this.destroyNotifier$ = new Subject();
46
- this.placeholderIban = '';
47
- this.controlType = 'bank-account-input';
48
- this.stateChanges = new Subject();
49
- this.focused = false;
50
- this.id = `bank-account-input-${OnemrvaMatInputIbanComponent.nextId++}`;
51
- this.touched = false;
52
- this.onChange = (_) => {
53
- //
54
- };
55
- this.onTouched = () => {
56
- //
57
- };
58
- this.readonly = false;
59
- this._disabled = false;
60
- this._placeholder = '';
61
- this._required = false;
62
- if (this.ngControl != null) {
63
- this.ngControl.valueAccessor = this;
64
- }
65
- this.parts = formBuilder.group({
66
- countryCode: ['', [Validators.maxLength(2)]],
67
- bban: ['', [Validators.required]],
68
- }, {
69
- validators: [bankAccountValidator()],
70
- });
71
- }
72
- errors() {
73
- return this.parts.errors;
74
- }
75
- get errorState() {
76
- return this.parts.invalid && this.touched;
77
- }
78
- get shouldLabelFloat() {
79
- return this.focused || !this.empty;
80
- }
81
- get empty() {
82
- const { value: { countryCode, bban }, } = this.parts;
83
- return !countryCode && !bban;
84
- }
85
- get value() {
86
- const { value: { countryCode, bban }, } = this.parts;
87
- return `${countryCode ?? ''}${bban ?? ''}`;
88
- }
89
- set value(iban) {
90
- const { countryCode, bban } = extractIBAN(iban || '');
91
- this.parts.setValue({
92
- countryCode: countryCode || null,
93
- bban: bban || null,
94
- });
95
- this.stateChanges.next();
96
- }
97
- get disabled() {
98
- return this._disabled;
99
- }
100
- set disabled(value) {
101
- this._disabled = coerceBooleanProperty(value);
102
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
103
- this._disabled ? this.parts.disable() : this.parts.enable();
104
- this.stateChanges.next();
105
- }
106
- get placeholder() {
107
- return this._placeholder;
108
- }
109
- set placeholder(value) {
110
- this._placeholder = value;
111
- this.stateChanges.next();
112
- }
113
- get required() {
114
- return this._required;
115
- }
116
- set required(value) {
117
- this._required = coerceBooleanProperty(value);
118
- this.stateChanges.next();
119
- }
120
- updateNumber(number) {
121
- let shownValue = number.replace(/[^a-zA-Z0-9]/g, '');
122
- // BE45063712751789
123
- const fullNumber = this.countryCodeField.value + number;
124
- if (isValidIBAN(fullNumber)) {
125
- const formattedValue = friendlyFormatIBAN(fullNumber);
126
- if (formattedValue !== null) {
127
- shownValue = formattedValue.substring(2);
128
- }
129
- }
130
- this.bbanField.patchValue(shownValue, { emitEvent: false });
131
- }
132
- ngOnInit() {
133
- this.countryCodes$ = this.getCountryCodes();
134
- this.bbanField.valueChanges
135
- .pipe(startWith(this.bbanField.getRawValue()), takeUntil(this.destroyNotifier$))
136
- .subscribe(number => {
137
- if (number !== null && number !== '') {
138
- if (this.firstTwoCharsAreLetters(number)) {
139
- const code = number?.substring(0, 2).toUpperCase();
140
- const country = IBAN_SUPPORTED_COUNTRIES.find(country => country == code);
141
- this.countryCodeField.setValue(country);
142
- number = number.substring(2);
143
- }
144
- this.updateNumber(number);
145
- }
146
- });
147
- this.countryCodeField.valueChanges
148
- .pipe(startWith(''), pairwise(), distinctUntilChanged(), takeUntil(this.destroyNotifier$))
149
- .subscribe(([_prevIban, countryCode]) => {
150
- this.placeholderIban = '';
151
- this.touched = true;
152
- if (!countryCode || countryCode.length < 2) {
153
- return;
154
- }
155
- if (this.firstTwoCharsAreLetters(countryCode)) {
156
- const r = countrySpecs[countryCode]?.chars;
157
- if (r !== undefined)
158
- this.placeholderIban = this.generatePlaceholder(r);
159
- }
160
- if (this.bbanField.value !== null) {
161
- this.updateNumber(this.bbanField.value);
162
- }
163
- });
164
- }
165
- handleClick(e) {
166
- e.stopPropagation();
167
- }
168
- ngOnDestroy() {
169
- this.destroyNotifier$.next();
170
- this.destroyNotifier$.complete();
171
- }
172
- getCountryCodes() {
173
- return this.filterCtrl.valueChanges.pipe(startWith(''), combineLatestWith(of(IBAN_SUPPORTED_COUNTRIES)), map(([filterVal, countryCodes]) => {
174
- return countryCodes.filter(code => {
175
- if (!filterVal) {
176
- return true;
177
- }
178
- return code.toLowerCase().includes(filterVal.toLowerCase());
179
- });
180
- }));
181
- }
182
- autoFocusNext(control, nextElement) {
183
- if (!control.errors && nextElement) {
184
- this._focusMonitor.focusVia(nextElement, 'program');
185
- }
186
- }
187
- onContainerClick(event) {
188
- if (event.target.tagName.toLowerCase() != 'input') {
189
- this._elementRef.nativeElement.querySelector('input')?.focus();
190
- }
191
- }
192
- setDescribedByIds(ids) {
193
- const controlElement = this._elementRef.nativeElement.querySelector('.iban-fields');
194
- controlElement.setAttribute('aria-describedby', ids.join(' '));
195
- }
196
- registerOnChange(fn) {
197
- this.onChange = fn;
198
- }
199
- registerOnTouched(fn) {
200
- this.onTouched = fn;
201
- }
202
- writeValue(iban) {
203
- this.value = iban;
204
- }
205
- _handleInput(control, nextElement) {
206
- this.autoFocusNext(control, nextElement);
207
- this.onChange(this.value);
208
- }
209
- firstTwoCharsAreLetters(input) {
210
- const regex = /^[a-zA-Z]{2}/;
211
- return regex.test(input);
212
- }
213
- generatePlaceholder(chars) {
214
- let placeholder = '';
215
- for (let i = 0; i < chars; i++) {
216
- placeholder += '0';
217
- }
218
- const ph = friendlyFormatIBAN(placeholder)?.substring(2);
219
- if (ph !== undefined)
220
- return ph;
221
- return placeholder.substring(2);
222
- }
223
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatInputIbanComponent, deps: [{ token: i1.FormBuilder }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_FORM_FIELD, optional: true }, { token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
224
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: OnemrvaMatInputIbanComponent, isStandalone: true, selector: "onemrva-mat-input-iban", inputs: { label: "label", noEntriesFoundLabel: "noEntriesFoundLabel", placeholderLabel: "placeholderLabel", searchAriaLabel: "searchAriaLabel", hint: "hint", value: "value", readonly: "readonly", disabled: "disabled", placeholder: "placeholder", required: "required" }, outputs: { getCountry: "getCountry" }, providers: [
225
- { provide: MatFormFieldControl, useExisting: OnemrvaMatInputIbanComponent },
226
- ], viewQueries: [{ propertyName: "countryCode", first: true, predicate: ["countryCode "], descendants: true }, { propertyName: "bban", first: true, predicate: ["bban"], descendants: true }, { propertyName: "numberInput", first: true, predicate: ["numberInput"], descendants: true }], ngImport: i0, template: "<ng-container [formGroup]=\"parts\">\n <!-- <mat-form-field class=\"onemrva-input-iban\">-->\n <!-- <mat-label>{{ label }}</mat-label>-->\n <div class=\"iban-fields\">\n <div class=\"iban-prefix\">\n <mat-select\n class=\"onemrva-iban-select\"\n formControlName=\"countryCode\"\n (selectionChange)=\"_handleInput(parts.controls.countryCode)\"\n #countryCode\n >\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n\n <mat-option\n *ngFor=\"let country of countryCodes$ | async\"\n [value]=\"country\"\n >\n <span>{{ country }}</span>\n </mat-option>\n </mat-select>\n </div>\n <input\n (click)=\"handleClick($event)\"\n matInput\n [placeholder]=\"placeholderIban\"\n formControlName=\"bban\"\n class=\"onemrva-text-number\"\n [readOnly]=\"readonly\"\n (input)=\"_handleInput(parts.controls.bban)\"\n #bban\n />\n </div>\n <!-- <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>-->\n <!-- <mat-error >{{ 'error' | translate }}</mat-error>-->\n <!-- </mat-form-field>-->\n\n <!-- {{ parts.errors |json }}-->\n</ng-container>\n", styles: ["onemrva-mat-input-iban{width:100%}onemrva-mat-input-iban .iban-fields{display:flex}onemrva-mat-input-iban .iban-fields .iban-prefix{width:40px;margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatSelectSearchModule }, { kind: "component", type: i7.MatSelectSearchComponent, selector: "mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }], encapsulation: i0.ViewEncapsulation.None }); }
227
- }
228
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatInputIbanComponent, decorators: [{
229
- type: Component,
230
- args: [{ selector: 'onemrva-mat-input-iban', standalone: true, imports: [
231
- CommonModule,
232
- MatInputModule,
233
- MatFormFieldModule,
234
- MatSelectModule,
235
- MatSelectSearchModule,
236
- ReactiveFormsModule,
237
- TranslateModule,
238
- MatPrefix,
239
- ], encapsulation: ViewEncapsulation.None, providers: [
240
- { provide: MatFormFieldControl, useExisting: OnemrvaMatInputIbanComponent },
241
- ], template: "<ng-container [formGroup]=\"parts\">\n <!-- <mat-form-field class=\"onemrva-input-iban\">-->\n <!-- <mat-label>{{ label }}</mat-label>-->\n <div class=\"iban-fields\">\n <div class=\"iban-prefix\">\n <mat-select\n class=\"onemrva-iban-select\"\n formControlName=\"countryCode\"\n (selectionChange)=\"_handleInput(parts.controls.countryCode)\"\n #countryCode\n >\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n\n <mat-option\n *ngFor=\"let country of countryCodes$ | async\"\n [value]=\"country\"\n >\n <span>{{ country }}</span>\n </mat-option>\n </mat-select>\n </div>\n <input\n (click)=\"handleClick($event)\"\n matInput\n [placeholder]=\"placeholderIban\"\n formControlName=\"bban\"\n class=\"onemrva-text-number\"\n [readOnly]=\"readonly\"\n (input)=\"_handleInput(parts.controls.bban)\"\n #bban\n />\n </div>\n <!-- <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>-->\n <!-- <mat-error >{{ 'error' | translate }}</mat-error>-->\n <!-- </mat-form-field>-->\n\n <!-- {{ parts.errors |json }}-->\n</ng-container>\n", styles: ["onemrva-mat-input-iban{width:100%}onemrva-mat-input-iban .iban-fields{display:flex}onemrva-mat-input-iban .iban-fields .iban-prefix{width:40px;margin-right:8px}\n"] }]
242
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.FocusMonitor }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i8.MatFormField, decorators: [{
243
- type: Optional
244
- }, {
245
- type: Inject,
246
- args: [MAT_FORM_FIELD]
247
- }] }, { type: i1.NgControl, decorators: [{
248
- type: Optional
249
- }, {
250
- type: Self
251
- }] }], propDecorators: { countryCode: [{
252
- type: ViewChild,
253
- args: ['countryCode ']
254
- }], bban: [{
255
- type: ViewChild,
256
- args: ['bban']
257
- }], label: [{
258
- type: Input
259
- }], noEntriesFoundLabel: [{
260
- type: Input
261
- }], placeholderLabel: [{
262
- type: Input
263
- }], searchAriaLabel: [{
264
- type: Input
265
- }], hint: [{
266
- type: Input
267
- }], getCountry: [{
268
- type: Output
269
- }], numberInput: [{
270
- type: ViewChild,
271
- args: ['numberInput']
272
- }], value: [{
273
- type: Input
274
- }], readonly: [{
275
- type: Input
276
- }], disabled: [{
277
- type: Input
278
- }], placeholder: [{
279
- type: Input
280
- }], required: [{
281
- type: Input
282
- }] } });
283
- const getBban = (countryCode = '', bban) => {
284
- return {
285
- bban: friendlyFormatIBAN(`${countryCode}${bban}`)?.substring(2) || null,
286
- };
287
- };
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtaW5wdXQtaWJhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWlucHV0LWJhbmstYWNjb3VudC9zcmMvb25lbXJ2YS1tYXQtaW5wdXQtaWJhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWlucHV0LWJhbmstYWNjb3VudC9zcmMvb25lbXJ2YS1tYXQtaW5wdXQtaWJhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFJTCxXQUFXLEVBR1gsbUJBQW1CLEVBRW5CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxjQUFjLEVBRWQsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixTQUFTLEdBQ1YsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUVwQixFQUFFLEVBQ0YsUUFBUSxFQUNSLFNBQVMsRUFDVCxPQUFPLEVBQ1AsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFF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STtLQUN4RSxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIE5nQ29udHJvbCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgTUFUX0ZPUk1fRklFTEQsXG4gIE1hdEZvcm1GaWVsZCxcbiAgTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICBNYXRQcmVmaXgsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0V2l0aCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBwYWlyd2lzZSxcbiAgc3RhcnRXaXRoLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0U2VsZWN0U2VhcmNoTW9kdWxlIH0gZnJvbSAnQG9uZW1ydmFwdWJsaWMvZGVzaWduLXN5c3RlbS9tYXQtc2VsZWN0LXNlYXJjaCc7XG5pbXBvcnQge1xuICBiYW5rQWNjb3VudFZhbGlkYXRvcixcbiAgSUJBTl9TVVBQT1JURURfQ09VTlRSSUVTLFxufSBmcm9tICdAb25lbXJ2YXB1YmxpYy9kZXNpZ24tc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBjb3VudHJ5U3BlY3MsXG4gIGV4dHJhY3RJQkFOLFxuICBmcmllbmRseUZvcm1hdElCQU4sXG4gIGlzVmFsaWRCQkFOLFxuICBpc1ZhbGlkSUJBTixcbn0gZnJvbSAnaWJhbnRvb2xzJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb25lbXJ2YS1tYXQtaW5wdXQtaWJhbicsXG4gIHN0eWxlVXJsczogWydvbmVtcnZhLW1hdC1pbnB1dC1pYmFuLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnb25lbXJ2YS1tYXQtaW5wdXQtaWJhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRTZWxlY3RTZWFyY2hNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0UHJlZml4LFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBPbmVtcnZhTWF0SW5wdXRJYmFuQ29tcG9uZW50IH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRJbnB1dEliYW5Db21wb25lbnRcbiAgaW1wbGVtZW50c1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIE1hdEZvcm1GaWVsZENvbnRyb2w8c3RyaW5nPixcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95XG57XG4gIEBWaWV3Q2hpbGQoJ2NvdW50cnlDb2RlICcpIGNvdW50cnlDb2RlITogSFRNTElucHV0RWxlbWVudDtcbiAgQFZpZXdDaGlsZCgnYmJhbicpIGJiYW4hOiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gIEBJbnB1dCgpIGxhYmVsID0gJ0lCQU4nO1xuICBASW5wdXQoKSBub0VudHJpZXNGb3VuZExhYmVsID0gJ05vdCBmb3VuZCc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyTGFiZWwgPSAnU2VhcmNoJztcbiAgQElucHV0KCkgc2VhcmNoQXJpYUxhYmVsID0gJ1NlYXJjaCc7XG4gIEBJbnB1dCgpIGhpbnQgPSAnJztcbiAgQE91dHB1dCgpIGdldENvdW50cnkgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQFZpZXdDaGlsZCgnbnVtYmVySW5wdXQnKSBudW1iZXJJbnB1dCE6IEVsZW1lbnRSZWY7XG5cbiAgY291bnRyeUNvZGVzJDogT2JzZXJ2YWJsZTxhbnk+ID0gb2YoW10pO1xuXG4gIHB1YmxpYyBmaWx0ZXJDdHJsOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcblxuICBkZXN0cm95Tm90aWZpZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcGxhY2Vob2xkZXJJYmFuID0gJyc7XG5cbiAgY29udHJvbFR5cGUgPSAnYmFuay1hY2NvdW50LWlucHV0JztcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBpZCA9IGBiYW5rLWFjY291bnQtaW5wdXQtJHtPbmVtcnZhTWF0SW5wdXRJYmFuQ29tcG9uZW50Lm5leHRJZCsrfWA7XG4gIHRvdWNoZWQgPSBmYWxzZTtcblxuICBwYXJ0czogRm9ybUdyb3VwPHtcbiAgICBjb3VudHJ5Q29kZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgYmJhbjogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gIH0+O1xuXG4gIGdldCBiYmFuRmllbGQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydHMuZ2V0KCdiYmFuJykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cbiAgZ2V0IGNvdW50cnlDb2RlRmllbGQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydHMuZ2V0KCdjb3VudHJ5Q29kZScpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9GT1JNX0ZJRUxEKSBwdWJsaWMgX2Zvcm1GaWVsZDogTWF0Rm9ybUZpZWxkLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICApIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJ0cyA9IGZvcm1CdWlsZGVyLmdyb3VwKFxuICAgICAge1xuICAgICAgICBjb3VudHJ5Q29kZTogWycnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMildXSxcbiAgICAgICAgYmJhbjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmFsaWRhdG9yczogW2JhbmtBY2NvdW50VmFsaWRhdG9yKCldLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgZXJyb3JzKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cy5lcnJvcnM7XG4gIH1cblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgICAvL1xuICB9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7XG4gICAgLy9cbiAgfTtcblxuICBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cy5pbnZhbGlkICYmIHRoaXMudG91Y2hlZDtcbiAgfVxuXG4gIGdldCBzaG91bGRMYWJlbEZsb2F0KCkge1xuICAgIHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XG4gIH1cblxuICBnZXQgZW1wdHkoKSB7XG4gICAgY29uc3Qge1xuICAgICAgdmFsdWU6IHsgY291bnRyeUNvZGUsIGJiYW4gfSxcbiAgICB9ID0gdGhpcy5wYXJ0cztcblxuICAgIHJldHVybiAhY291bnRyeUNvZGUgJiYgIWJiYW47XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB7XG4gICAgICB2YWx1ZTogeyBjb3VudHJ5Q29kZSwgYmJhbiB9LFxuICAgIH0gPSB0aGlzLnBhcnRzO1xuICAgIHJldHVybiBgJHtjb3VudHJ5Q29kZSA/PyAnJ30ke2JiYW4gPz8gJyd9YDtcbiAgfVxuXG4gIHNldCB2YWx1ZShpYmFuOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgY29uc3QgeyBjb3VudHJ5Q29kZSwgYmJhbiB9ID0gZXh0cmFjdElCQU4oaWJhbiB8fCAnJyk7XG5cbiAgICB0aGlzLnBhcnRzLnNldFZhbHVlKHtcbiAgICAgIGNvdW50cnlDb2RlOiBjb3VudHJ5Q29kZSB8fCBudWxsLFxuICAgICAgYmJhbjogYmJhbiB8fCBudWxsLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLnBhcnRzLmRpc2FibGUoKSA6IHRoaXMucGFydHMuZW5hYmxlKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXIgPSAnJztcblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgdXBkYXRlTnVtYmVyKG51bWJlcjogc3RyaW5nKSB7XG4gICAgbGV0IHNob3duVmFsdWUgPSBudW1iZXIucmVwbGFjZSgvW15hLXpBLVowLTldL2csICcnKTtcbiAgICAvLyBCRTQ1MDYzNzEyNzUxNzg5XG4gICAgY29uc3QgZnVsbE51bWJlciA9IHRoaXMuY291bnRyeUNvZGVGaWVsZC52YWx1ZSArIG51bWJlcjtcbiAgICBpZiAoaXNWYWxpZElCQU4oZnVsbE51bWJlcikpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gZnJpZW5kbHlGb3JtYXRJQkFOKGZ1bGxOdW1iZXIpO1xuICAgICAgaWYgKGZvcm1hdHRlZFZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIHNob3duVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZS5zdWJzdHJpbmcoMik7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYmJhbkZpZWxkLnBhdGNoVmFsdWUoc2hvd25WYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb3VudHJ5Q29kZXMkID0gdGhpcy5nZXRDb3VudHJ5Q29kZXMoKTtcblxuICAgIHRoaXMuYmJhbkZpZWxkLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLmJiYW5GaWVsZC5nZXRSYXdWYWx1ZSgpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKG51bWJlciA9PiB7XG4gICAgICAgIGlmIChudW1iZXIgIT09IG51bGwgJiYgbnVtYmVyICE9PSAnJykge1xuICAgICAgICAgIGlmICh0aGlzLmZpcnN0VHdvQ2hhcnNBcmVMZXR0ZXJzKG51bWJlcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZGUgPSBudW1iZXI/LnN1YnN0cmluZygwLCAyKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgY29uc3QgY291bnRyeSA9IElCQU5fU1VQUE9SVEVEX0NPVU5UUklFUy5maW5kKFxuICAgICAgICAgICAgICBjb3VudHJ5ID0+IGNvdW50cnkgPT0gY29kZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmNvdW50cnlDb2RlRmllbGQuc2V0VmFsdWUoY291bnRyeSk7XG4gICAgICAgICAgICBudW1iZXIgPSBudW1iZXIuc3Vic3RyaW5nKDIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnVwZGF0ZU51bWJlcihudW1iZXIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuY291bnRyeUNvZGVGaWVsZC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgICBwYWlyd2lzZSgpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95Tm90aWZpZXIkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtfcHJldkliYW4sIGNvdW50cnlDb2RlXSkgPT4ge1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVySWJhbiA9ICcnO1xuICAgICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgICAgICBpZiAoIWNvdW50cnlDb2RlIHx8IGNvdW50cnlDb2RlLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maXJzdFR3b0NoYXJzQXJlTGV0dGVycyhjb3VudHJ5Q29kZSkpIHtcbiAgICAgICAgICBjb25zdCByOiBudW1iZXIgfCB1bmRlZmluZWQgPSBjb3VudHJ5U3BlY3NbY291bnRyeUNvZGVdPy5jaGFycztcbiAgICAgICAgICBpZiAociAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlckliYW4gPSB0aGlzLmdlbmVyYXRlUGxhY2Vob2xkZXIocik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYmJhbkZpZWxkLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVOdW1iZXIodGhpcy5iYmFuRmllbGQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGU6IGFueSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3lOb3RpZmllciQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveU5vdGlmaWVyJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0Q291bnRyeUNvZGVzKCkge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgY29tYmluZUxhdGVzdFdpdGgob2YoSUJBTl9TVVBQT1JURURfQ09VTlRSSUVTKSksXG4gICAgICBtYXAoKFtmaWx0ZXJWYWwsIGNvdW50cnlDb2Rlc10pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvdW50cnlDb2Rlcy5maWx0ZXIoY29kZSA9PiB7XG4gICAgICAgICAgaWYgKCFmaWx0ZXJWYWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBhdXRvRm9jdXNOZXh0KFxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcbiAgICBuZXh0RWxlbWVudD86IEhUTUxJbnB1dEVsZW1lbnQsXG4gICk6IHZvaWQge1xuICAgIGlmICghY29udHJvbC5lcnJvcnMgJiYgbmV4dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYShuZXh0RWxlbWVudCwgJ3Byb2dyYW0nKTtcbiAgICB9XG4gIH1cblxuICBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKChldmVudC50YXJnZXQgYXMgRWxlbWVudCkudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBjb250cm9sRWxlbWVudCA9XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmliYW4tZmllbGRzJykhO1xuICAgIGNvbnRyb2xFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScsIGlkcy5qb2luKCcgJykpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKGliYW46IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gaWJhbjtcbiAgfVxuXG4gIF9oYW5kbGVJbnB1dChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG5leHRFbGVtZW50PzogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuYXV0b0ZvY3VzTmV4dChjb250cm9sLCBuZXh0RWxlbWVudCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGZpcnN0VHdvQ2hhcnNBcmVMZXR0ZXJzKGlucHV0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWdleCA9IC9eW2EtekEtWl17Mn0vO1xuICAgIHJldHVybiByZWdleC50ZXN0KGlucHV0KTtcbiAgfVxuXG4gIGdlbmVyYXRlUGxhY2Vob2xkZXIoY2hhcnM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYXJzOyBpKyspIHtcbiAgICAgIHBsYWNlaG9sZGVyICs9ICcwJztcbiAgICB9XG4gICAgY29uc3QgcGggPSBmcmllbmRseUZvcm1hdElCQU4ocGxhY2Vob2xkZXIpPy5zdWJzdHJpbmcoMik7XG4gICAgaWYgKHBoICE9PSB1bmRlZmluZWQpIHJldHVybiBwaDtcblxuICAgIHJldHVybiBwbGFjZWhvbGRlci5zdWJzdHJpbmcoMik7XG4gIH1cbn1cblxuY29uc3QgZ2V0QmJhbiA9IChjb3VudHJ5Q29kZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9ICcnLCBiYmFuOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBiYmFuOiBmcmllbmRseUZvcm1hdElCQU4oYCR7Y291bnRyeUNvZGV9JHtiYmFufWApPy5zdWJzdHJpbmcoMikgfHwgbnVsbCxcbiAgfTtcbn07XG4iLCI8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwicGFydHNcIj5cbiAgPCEtLSAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwib25lbXJ2YS1pbnB1dC1pYmFuXCI+LS0+XG4gIDwhLS0gICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPi0tPlxuICA8ZGl2IGNsYXNzPVwiaWJhbi1maWVsZHNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWJhbi1wcmVmaXhcIj5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGNsYXNzPVwib25lbXJ2YS1pYmFuLXNlbGVjdFwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlDb2RlXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJfaGFuZGxlSW5wdXQocGFydHMuY29udHJvbHMuY291bnRyeUNvZGUpXCJcbiAgICAgICAgI2NvdW50cnlDb2RlXG4gICAgICA+XG4gICAgICAgIDxtYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtc2VsZWN0LXNlYXJjaFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlckN0cmxcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJzZWFyY2hBcmlhTGFiZWxcIlxuICAgICAgICAgICAgW25vRW50cmllc0ZvdW5kTGFiZWxdPVwibm9FbnRyaWVzRm91bmRMYWJlbFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJwbGFjZWhvbGRlckxhYmVsXCJcbiAgICAgICAgICA+PC9tYXQtc2VsZWN0LXNlYXJjaD5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgY291bnRyeUNvZGVzJCB8IGFzeW5jXCJcbiAgICAgICAgICBbdmFsdWVdPVwiY291bnRyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3Bhbj57eyBjb3VudHJ5IH19PC9zcGFuPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgPGlucHV0XG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiXG4gICAgICBtYXRJbnB1dFxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVySWJhblwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJiYmFuXCJcbiAgICAgIGNsYXNzPVwib25lbXJ2YS10ZXh0LW51bWJlclwiXG4gICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgKGlucHV0KT1cIl9oYW5kbGVJbnB1dChwYXJ0cy5jb250cm9scy5iYmFuKVwiXG4gICAgICAjYmJhblxuICAgIC8+XG4gIDwvZGl2PlxuICA8IS0tICAgIDxtYXQtaGludCAqbmdJZj1cImhpbnQgIT09ICcnXCI+e3sgaGludCB9fTwvbWF0LWhpbnQ+LS0+XG4gIDwhLS0gICAgPG1hdC1lcnJvciA+e3sgJ2Vycm9yJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPi0tPlxuICA8IS0tICA8L21hdC1mb3JtLWZpZWxkPi0tPlxuXG4gIDwhLS0gIHt7IHBhcnRzLmVycm9ycyB8anNvbiB9fS0tPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"onemrvapublic-design-system-mat-input-bank-account.mjs","sources":["../../../../projects/onemrva/design-system/mat-input-bank-account/src/onemrva-mat-input-iban.component.ts","../../../../projects/onemrva/design-system/mat-input-bank-account/src/onemrva-mat-input-iban.component.html","../../../../projects/onemrva/design-system/mat-input-bank-account/index.ts","../../../../projects/onemrva/design-system/mat-input-bank-account/onemrvapublic-design-system-mat-input-bank-account.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NgControl,\n ReactiveFormsModule,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {\n MAT_FORM_FIELD,\n MatFormField,\n MatFormFieldControl,\n MatFormFieldModule,\n MatPrefix,\n} from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n combineLatestWith,\n distinctUntilChanged,\n Observable,\n of,\n pairwise,\n startWith,\n Subject,\n takeUntil,\n} from 'rxjs';\nimport { MatSelectSearchModule } from '@onemrvapublic/design-system/mat-select-search';\nimport {\n bankAccountValidator,\n IBAN_SUPPORTED_COUNTRIES,\n} from '@onemrvapublic/design-system/shared';\nimport { map } from 'rxjs/operators';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n countrySpecs,\n extractIBAN,\n friendlyFormatIBAN,\n isValidBBAN,\n isValidIBAN,\n} from 'ibantools';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n@Component({\n selector: 'onemrva-mat-input-iban',\n styleUrls: ['onemrva-mat-input-iban.component.scss'],\n templateUrl: 'onemrva-mat-input-iban.component.html',\n standalone: true,\n imports: [\n CommonModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatSelectSearchModule,\n ReactiveFormsModule,\n TranslateModule,\n MatPrefix,\n ],\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: MatFormFieldControl, useExisting: OnemrvaMatInputIbanComponent },\n ],\n})\nexport class OnemrvaMatInputIbanComponent\n implements\n ControlValueAccessor,\n MatFormFieldControl<string>,\n OnInit,\n OnDestroy\n{\n @ViewChild('countryCode ') countryCode!: HTMLInputElement;\n @ViewChild('bban') bban!: HTMLInputElement;\n\n static nextId = 0;\n\n @Input() label = 'IBAN';\n @Input() noEntriesFoundLabel = 'Not found';\n @Input() placeholderLabel = 'Search';\n @Input() searchAriaLabel = 'Search';\n @Input() hint = '';\n @Output() getCountry = new EventEmitter<any>();\n @ViewChild('numberInput') numberInput!: ElementRef;\n\n countryCodes$: Observable<any> = of([]);\n\n public filterCtrl: FormControl<string | null> = new FormControl<string>('');\n\n destroyNotifier$ = new Subject<void>();\n placeholderIban = '';\n\n controlType = 'bank-account-input';\n stateChanges = new Subject<void>();\n focused = false;\n id = `bank-account-input-${OnemrvaMatInputIbanComponent.nextId++}`;\n touched = false;\n\n parts: FormGroup<{\n countryCode: FormControl<string | null>;\n bban: FormControl<string | null>;\n }>;\n\n get bbanField() {\n return this.parts.get('bban') as FormControl;\n }\n get countryCodeField() {\n return this.parts.get('countryCode') as FormControl;\n }\n\n constructor(\n formBuilder: FormBuilder,\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private _cd: ChangeDetectorRef,\n @Optional() @Inject(MAT_FORM_FIELD) public _formField: MatFormField,\n @Optional() @Self() public ngControl: NgControl,\n ) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n this.parts = formBuilder.group(\n {\n countryCode: ['', [Validators.maxLength(2)]],\n bban: ['', [Validators.required]],\n },\n {\n validators: [bankAccountValidator()],\n },\n );\n }\n\n errors(): ValidationErrors | null {\n return this.parts.errors;\n }\n\n onChange = (_: any) => {\n //\n };\n onTouched = () => {\n //\n };\n\n get errorState(): boolean {\n return this.parts.invalid && this.touched;\n }\n\n get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n\n get empty() {\n const {\n value: { countryCode, bban },\n } = this.parts;\n\n return !countryCode && !bban;\n }\n\n @Input()\n get value(): string {\n const {\n value: { countryCode, bban },\n } = this.parts;\n return `${countryCode ?? ''}${bban ?? ''}`;\n }\n\n set value(iban: string | null) {\n const { countryCode, bban } = extractIBAN(iban || '');\n\n this.parts.setValue({\n countryCode: countryCode || null,\n bban: bban || null,\n });\n this.stateChanges.next();\n }\n\n @Input()\n readonly = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this._disabled ? this.parts.disable() : this.parts.enable();\n this.stateChanges.next();\n }\n\n private _disabled = false;\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n\n private _placeholder = '';\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n updateNumber(number: string) {\n let shownValue = number.replace(/[^a-zA-Z0-9]/g, '');\n // BE45063712751789\n const fullNumber = this.countryCodeField.value + number;\n if (isValidIBAN(fullNumber)) {\n const formattedValue = friendlyFormatIBAN(fullNumber);\n if (formattedValue !== null) {\n shownValue = formattedValue.substring(2);\n }\n }\n this.bbanField.patchValue(shownValue, { emitEvent: false });\n }\n\n ngOnInit(): void {\n this.countryCodes$ = this.getCountryCodes();\n\n this.bbanField.valueChanges\n .pipe(\n startWith(this.bbanField.getRawValue()),\n takeUntil(this.destroyNotifier$),\n )\n .subscribe(number => {\n if (number !== null && number !== '') {\n if (this.firstTwoCharsAreLetters(number)) {\n const code = number?.substring(0, 2).toUpperCase();\n const country = IBAN_SUPPORTED_COUNTRIES.find(\n country => country == code,\n );\n this.countryCodeField.setValue(country);\n number = number.substring(2);\n }\n this.updateNumber(number);\n }\n });\n\n this.countryCodeField.valueChanges\n .pipe(\n startWith(''),\n pairwise(),\n distinctUntilChanged(),\n takeUntil(this.destroyNotifier$),\n )\n .subscribe(([_prevIban, countryCode]) => {\n this.placeholderIban = '';\n this.touched = true;\n if (!countryCode || countryCode.length < 2) {\n return;\n }\n\n if (this.firstTwoCharsAreLetters(countryCode)) {\n const r: number | undefined = countrySpecs[countryCode]?.chars;\n if (r !== undefined)\n this.placeholderIban = this.generatePlaceholder(r);\n }\n if (this.bbanField.value !== null) {\n this.updateNumber(this.bbanField.value);\n }\n });\n }\n\n handleClick(e: any) {\n e.stopPropagation();\n }\n\n ngOnDestroy() {\n this.destroyNotifier$.next();\n this.destroyNotifier$.complete();\n }\n\n getCountryCodes() {\n return this.filterCtrl.valueChanges.pipe(\n startWith(''),\n combineLatestWith(of(IBAN_SUPPORTED_COUNTRIES)),\n map(([filterVal, countryCodes]) => {\n return countryCodes.filter(code => {\n if (!filterVal) {\n return true;\n }\n\n return code.toLowerCase().includes(filterVal.toLowerCase());\n });\n }),\n );\n }\n\n autoFocusNext(\n control: AbstractControl,\n nextElement?: HTMLInputElement,\n ): void {\n if (!control.errors && nextElement) {\n this._focusMonitor.focusVia(nextElement, 'program');\n }\n }\n\n onContainerClick(event: MouseEvent): void {\n if ((event.target as Element).tagName.toLowerCase() != 'input') {\n this._elementRef.nativeElement.querySelector('input')?.focus();\n }\n }\n\n setDescribedByIds(ids: string[]) {\n const controlElement =\n this._elementRef.nativeElement.querySelector('.iban-fields')!;\n controlElement.setAttribute('aria-describedby', ids.join(' '));\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n writeValue(iban: string | null): void {\n this.value = iban;\n }\n\n _handleInput(control: AbstractControl, nextElement?: HTMLInputElement): void {\n this.autoFocusNext(control, nextElement);\n this.onChange(this.value);\n }\n\n firstTwoCharsAreLetters(input: string): boolean {\n const regex = /^[a-zA-Z]{2}/;\n return regex.test(input);\n }\n\n generatePlaceholder(chars: number): string {\n let placeholder = '';\n\n for (let i = 0; i < chars; i++) {\n placeholder += '0';\n }\n const ph = friendlyFormatIBAN(placeholder)?.substring(2);\n if (ph !== undefined) return ph;\n\n return placeholder.substring(2);\n }\n}\n\nconst getBban = (countryCode: string | null | undefined = '', bban: string) => {\n return {\n bban: friendlyFormatIBAN(`${countryCode}${bban}`)?.substring(2) || null,\n };\n};\n","<ng-container [formGroup]=\"parts\">\n <!-- <mat-form-field class=\"onemrva-input-iban\">-->\n <!-- <mat-label>{{ label }}</mat-label>-->\n <div class=\"iban-fields\">\n <div class=\"iban-prefix\">\n <mat-select\n class=\"onemrva-iban-select\"\n formControlName=\"countryCode\"\n (selectionChange)=\"_handleInput(parts.controls.countryCode)\"\n #countryCode\n >\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n\n <mat-option\n *ngFor=\"let country of countryCodes$ | async\"\n [value]=\"country\"\n >\n <span>{{ country }}</span>\n </mat-option>\n </mat-select>\n </div>\n <input\n (click)=\"handleClick($event)\"\n matInput\n [placeholder]=\"placeholderIban\"\n formControlName=\"bban\"\n class=\"onemrva-text-number\"\n [readOnly]=\"readonly\"\n (input)=\"_handleInput(parts.controls.bban)\"\n #bban\n />\n </div>\n <!-- <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>-->\n <!-- <mat-error >{{ 'error' | translate }}</mat-error>-->\n <!-- </mat-form-field>-->\n\n <!-- {{ parts.errors |json }}-->\n</ng-container>\n","/*\n * Public API Surface of mat-bank-account-input\n */\n\nexport * from './src/onemrva-mat-input-iban.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}