valtech-components 4.0.1024 → 4.0.1025

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.
@@ -0,0 +1,265 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, ElementRef, HostListener, Input, inject } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { IonIcon } from '@ionic/angular/standalone';
5
+ import { addIcons } from 'ionicons';
6
+ import { checkmarkOutline } from 'ionicons/icons';
7
+ import { applyDefaultValueToControl } from '../../../shared/utils/form-defaults';
8
+ import { I18nService } from '../../../services/i18n';
9
+ import { PresetService } from '../../../services/presets';
10
+ import { ComponentStates } from '../../types';
11
+ import * as i0 from "@angular/core";
12
+ export class SelectInputV2Component {
13
+ static { this.nextId = 0; }
14
+ constructor() {
15
+ this.i18n = inject(I18nService);
16
+ this.presets = inject(PresetService);
17
+ this.host = inject((ElementRef));
18
+ this.props = {};
19
+ this.resolvedProps = {};
20
+ this.isOpen = false;
21
+ this.listboxId = `val-select-v2-${SelectInputV2Component.nextId++}`;
22
+ addIcons({ checkmarkOutline });
23
+ }
24
+ ngOnInit() {
25
+ this.resolveProps();
26
+ this.setupComponent();
27
+ }
28
+ ngOnChanges(changes) {
29
+ if (changes['preset'] || changes['props']) {
30
+ this.resolveProps();
31
+ this.setupComponent();
32
+ }
33
+ }
34
+ handleDocumentClick(event) {
35
+ if (!this.host.nativeElement.contains(event.target)) {
36
+ this.isOpen = false;
37
+ }
38
+ }
39
+ toggle() {
40
+ if (this.isDisabled())
41
+ return;
42
+ this.isOpen = !this.isOpen;
43
+ }
44
+ openAndFocus(event, direction) {
45
+ event.preventDefault();
46
+ if (this.isDisabled())
47
+ return;
48
+ this.isOpen = true;
49
+ setTimeout(() => this.focusNextOption(direction));
50
+ }
51
+ focusNext(event, direction) {
52
+ event.preventDefault();
53
+ this.focusNextOption(direction);
54
+ }
55
+ close(event) {
56
+ event?.preventDefault();
57
+ this.isOpen = false;
58
+ setTimeout(() => {
59
+ const trigger = this.host.nativeElement.querySelector('.select-v2__trigger');
60
+ trigger?.focus();
61
+ });
62
+ }
63
+ select(option) {
64
+ if (option.disabled || this.isDisabled())
65
+ return;
66
+ this.resolvedProps.control?.setValue(option.id);
67
+ this.resolvedProps.control?.markAsDirty();
68
+ this.resolvedProps.control?.markAsTouched();
69
+ this.isOpen = false;
70
+ }
71
+ selectedOption() {
72
+ return this.orderedOptions().find(option => option.id === this.resolvedProps.control?.value);
73
+ }
74
+ orderedOptions() {
75
+ return [...(this.resolvedProps.options || [])].sort((a, b) => a.order - b.order);
76
+ }
77
+ isDisabled() {
78
+ return this.resolvedProps.state === ComponentStates.DISABLED || !!this.resolvedProps.control?.disabled;
79
+ }
80
+ ariaLabel() {
81
+ return this.resolvedProps.label || this.resolvedProps.placeholder || this.i18n.t('selectOption');
82
+ }
83
+ iconMask(src) {
84
+ return `url("${src}")`;
85
+ }
86
+ resolveProps() {
87
+ const presetProps = this.preset ? this.presets.get('selectInputV2', this.preset) : {};
88
+ this.resolvedProps = {
89
+ label: '',
90
+ state: ComponentStates.ENABLED,
91
+ options: [],
92
+ ...presetProps,
93
+ ...this.props,
94
+ };
95
+ }
96
+ setupComponent() {
97
+ if (this.resolvedProps?.withDefault || this.resolvedProps?.value) {
98
+ applyDefaultValueToControl(this.resolvedProps);
99
+ }
100
+ }
101
+ focusNextOption(direction) {
102
+ const options = Array.from(this.host.nativeElement.querySelectorAll('.select-v2__option'));
103
+ if (!options.length)
104
+ return;
105
+ const activeIndex = options.findIndex(option => option === document.activeElement);
106
+ const nextIndex = activeIndex < 0 ? (direction > 0 ? 0 : options.length - 1) : activeIndex + direction;
107
+ options[(nextIndex + options.length) % options.length]?.focus();
108
+ }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectInputV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SelectInputV2Component, isStandalone: true, selector: "val-select-input-v2", inputs: { preset: "preset", props: "props" }, host: { listeners: { "document:click": "handleDocumentClick($event)" } }, usesOnChanges: true, ngImport: i0, template: `
111
+ <div class="select-v2" [class.select-v2--open]="isOpen" [class.select-v2--disabled]="isDisabled()">
112
+ <button
113
+ type="button"
114
+ class="select-v2__trigger"
115
+ [attr.aria-label]="ariaLabel()"
116
+ [attr.aria-expanded]="isOpen"
117
+ aria-haspopup="listbox"
118
+ [attr.aria-controls]="listboxId"
119
+ [disabled]="isDisabled()"
120
+ (click)="toggle()"
121
+ (keydown.arrowdown)="openAndFocus($event, 1)"
122
+ (keydown.arrowup)="openAndFocus($event, -1)"
123
+ >
124
+ <span class="select-v2__value" [class.select-v2__value--placeholder]="!selectedOption()">
125
+ @if (selectedOption()?.icon?.src) {
126
+ <span
127
+ class="select-v2__icon select-v2__icon--mask"
128
+ [style.--val-select-v2-icon-src]="iconMask(selectedOption()!.icon!.src!)"
129
+ aria-hidden="true"
130
+ ></span>
131
+ } @else if (selectedOption()?.icon?.name) {
132
+ <ion-icon
133
+ class="select-v2__icon"
134
+ [name]="selectedOption()!.icon!.name"
135
+ [color]="selectedOption()!.icon!.color"
136
+ aria-hidden="true"
137
+ />
138
+ }
139
+ <span>{{ selectedOption()?.name || resolvedProps.placeholder || resolvedProps.label }}</span>
140
+ </span>
141
+ <span class="select-v2__chevron" aria-hidden="true"></span>
142
+ </button>
143
+
144
+ @if (isOpen) {
145
+ <div class="select-v2__menu" [id]="listboxId" role="listbox" [attr.aria-label]="ariaLabel()">
146
+ @for (option of orderedOptions(); track option.id) {
147
+ <button
148
+ type="button"
149
+ class="select-v2__option"
150
+ role="option"
151
+ [attr.aria-selected]="option.id === resolvedProps.control?.value"
152
+ [disabled]="option.disabled"
153
+ (click)="select(option)"
154
+ (keydown.arrowdown)="focusNext($event, 1)"
155
+ (keydown.arrowup)="focusNext($event, -1)"
156
+ (keydown.escape)="close($event)"
157
+ >
158
+ @if (option.icon?.src) {
159
+ <span
160
+ class="select-v2__icon select-v2__icon--mask"
161
+ [style.--val-select-v2-icon-src]="iconMask(option.icon.src)"
162
+ aria-hidden="true"
163
+ ></span>
164
+ } @else if (option.icon?.name) {
165
+ <ion-icon
166
+ class="select-v2__icon"
167
+ [name]="option.icon.name"
168
+ [color]="option.icon.color"
169
+ aria-hidden="true"
170
+ />
171
+ }
172
+ <span class="select-v2__option-label">{{ option.name }}</span>
173
+ @if (option.id === resolvedProps.control?.value) {
174
+ <ion-icon class="select-v2__check" name="checkmark-outline" aria-hidden="true" />
175
+ }
176
+ </button>
177
+ }
178
+ </div>
179
+ }
180
+ </div>
181
+ `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-xl-wide: 1280px;--val-container-md-wide: 900px;--val-container-aside: 0px;--val-container-padding: 16px;--val-radius-xs: 10px;--val-radius-sm: 16px;--val-radius-md: 20px;--val-radius-lg: 28px;--val-radius-xl: 36px;--val-radius-full: 999px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #737478;--ion-color-medium-rgb: 115,116,120;--ion-color-medium-contrast: #ffffff;--ion-color-medium-contrast-rgb: 255,255,255;--ion-color-medium-shade: #65666a;--ion-color-medium-tint: #818286;--ion-color-warning: #ffde38;--ion-color-warning-rgb: 255, 222, 56;--ion-color-warning-contrast: #000000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0c331;--ion-color-warning-tint: #ffe14c;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-dark)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.select-v2{position:relative;margin-top:.375rem}.select-v2__trigger{width:100%;min-height:2.625rem;display:inline-flex;align-items:center;justify-content:space-between;gap:.75rem;border:.0625rem solid var(--ion-color-medium);border-radius:1.5rem;padding:.5rem .625rem .5rem 1rem;background:transparent;color:var(--ion-color-darki);font:inherit;text-align:left}.select-v2__trigger:focus{outline:none}.select-v2__trigger:focus-visible{outline:.125rem solid var(--ion-color-primary, #7026df);outline-offset:2px;border-radius:inherit}.select-v2--open .select-v2__trigger{border-width:.125rem;border-color:var(--ion-color-primary);padding:.4375rem .5625rem .4375rem .9375rem}.select-v2__value,.select-v2__option{display:inline-flex;align-items:center;gap:.625rem;min-width:0}.select-v2__value{flex:1}.select-v2__value--placeholder{color:var(--ion-color-medium)}.select-v2__icon{flex:0 0 auto;width:1.125rem;height:1.125rem;font-size:1.125rem}.select-v2__icon--mask{background:currentColor;mask:var(--val-select-v2-icon-src) center/contain no-repeat;-webkit-mask:var(--val-select-v2-icon-src) center/contain no-repeat}.select-v2__chevron{flex:0 0 auto;width:.625rem;height:.625rem;border-right:.125rem solid currentColor;border-bottom:.125rem solid currentColor;transform:rotate(45deg) translateY(-.125rem)}.select-v2--open .select-v2__chevron{transform:rotate(225deg) translateY(-.125rem)}.select-v2__menu{position:absolute;z-index:20;left:0;right:0;top:calc(100% + .375rem);overflow:hidden;border:.0625rem solid rgba(var(--ion-color-medium-rgb),.28);border-radius:1.5rem;background:var(--ion-background-color);box-shadow:0 .875rem 2.125rem #00000029}.select-v2__option{width:100%;min-height:3rem;justify-content:flex-start;border:0;border-bottom:.0625rem solid rgba(var(--ion-color-medium-rgb),.22);padding:.75rem .875rem;background:var(--ion-background-color);color:var(--ion-color-darki);font:inherit;text-align:left}.select-v2__option:focus{outline:none}.select-v2__option:focus-visible{outline:.125rem solid var(--ion-color-primary, #7026df);outline-offset:2px;border-radius:inherit}.select-v2__option:last-child{border-bottom:0}.select-v2__option:hover,.select-v2__option:focus-visible{background:rgba(var(--ion-color-medium-rgb),.08)}.select-v2__option[aria-selected=true]{font-weight:700}.select-v2__option-label{flex:1;min-width:0}.select-v2__check{flex:0 0 auto;font-size:1.25rem}.select-v2--disabled{opacity:.55}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
182
+ }
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectInputV2Component, decorators: [{
184
+ type: Component,
185
+ args: [{ selector: 'val-select-input-v2', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonIcon], template: `
186
+ <div class="select-v2" [class.select-v2--open]="isOpen" [class.select-v2--disabled]="isDisabled()">
187
+ <button
188
+ type="button"
189
+ class="select-v2__trigger"
190
+ [attr.aria-label]="ariaLabel()"
191
+ [attr.aria-expanded]="isOpen"
192
+ aria-haspopup="listbox"
193
+ [attr.aria-controls]="listboxId"
194
+ [disabled]="isDisabled()"
195
+ (click)="toggle()"
196
+ (keydown.arrowdown)="openAndFocus($event, 1)"
197
+ (keydown.arrowup)="openAndFocus($event, -1)"
198
+ >
199
+ <span class="select-v2__value" [class.select-v2__value--placeholder]="!selectedOption()">
200
+ @if (selectedOption()?.icon?.src) {
201
+ <span
202
+ class="select-v2__icon select-v2__icon--mask"
203
+ [style.--val-select-v2-icon-src]="iconMask(selectedOption()!.icon!.src!)"
204
+ aria-hidden="true"
205
+ ></span>
206
+ } @else if (selectedOption()?.icon?.name) {
207
+ <ion-icon
208
+ class="select-v2__icon"
209
+ [name]="selectedOption()!.icon!.name"
210
+ [color]="selectedOption()!.icon!.color"
211
+ aria-hidden="true"
212
+ />
213
+ }
214
+ <span>{{ selectedOption()?.name || resolvedProps.placeholder || resolvedProps.label }}</span>
215
+ </span>
216
+ <span class="select-v2__chevron" aria-hidden="true"></span>
217
+ </button>
218
+
219
+ @if (isOpen) {
220
+ <div class="select-v2__menu" [id]="listboxId" role="listbox" [attr.aria-label]="ariaLabel()">
221
+ @for (option of orderedOptions(); track option.id) {
222
+ <button
223
+ type="button"
224
+ class="select-v2__option"
225
+ role="option"
226
+ [attr.aria-selected]="option.id === resolvedProps.control?.value"
227
+ [disabled]="option.disabled"
228
+ (click)="select(option)"
229
+ (keydown.arrowdown)="focusNext($event, 1)"
230
+ (keydown.arrowup)="focusNext($event, -1)"
231
+ (keydown.escape)="close($event)"
232
+ >
233
+ @if (option.icon?.src) {
234
+ <span
235
+ class="select-v2__icon select-v2__icon--mask"
236
+ [style.--val-select-v2-icon-src]="iconMask(option.icon.src)"
237
+ aria-hidden="true"
238
+ ></span>
239
+ } @else if (option.icon?.name) {
240
+ <ion-icon
241
+ class="select-v2__icon"
242
+ [name]="option.icon.name"
243
+ [color]="option.icon.color"
244
+ aria-hidden="true"
245
+ />
246
+ }
247
+ <span class="select-v2__option-label">{{ option.name }}</span>
248
+ @if (option.id === resolvedProps.control?.value) {
249
+ <ion-icon class="select-v2__check" name="checkmark-outline" aria-hidden="true" />
250
+ }
251
+ </button>
252
+ }
253
+ </div>
254
+ }
255
+ </div>
256
+ `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-xl-wide: 1280px;--val-container-md-wide: 900px;--val-container-aside: 0px;--val-container-padding: 16px;--val-radius-xs: 10px;--val-radius-sm: 16px;--val-radius-md: 20px;--val-radius-lg: 28px;--val-radius-xl: 36px;--val-radius-full: 999px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #737478;--ion-color-medium-rgb: 115,116,120;--ion-color-medium-contrast: #ffffff;--ion-color-medium-contrast-rgb: 255,255,255;--ion-color-medium-shade: #65666a;--ion-color-medium-tint: #818286;--ion-color-warning: #ffde38;--ion-color-warning-rgb: 255, 222, 56;--ion-color-warning-contrast: #000000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0c331;--ion-color-warning-tint: #ffe14c;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-dark)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.select-v2{position:relative;margin-top:.375rem}.select-v2__trigger{width:100%;min-height:2.625rem;display:inline-flex;align-items:center;justify-content:space-between;gap:.75rem;border:.0625rem solid var(--ion-color-medium);border-radius:1.5rem;padding:.5rem .625rem .5rem 1rem;background:transparent;color:var(--ion-color-darki);font:inherit;text-align:left}.select-v2__trigger:focus{outline:none}.select-v2__trigger:focus-visible{outline:.125rem solid var(--ion-color-primary, #7026df);outline-offset:2px;border-radius:inherit}.select-v2--open .select-v2__trigger{border-width:.125rem;border-color:var(--ion-color-primary);padding:.4375rem .5625rem .4375rem .9375rem}.select-v2__value,.select-v2__option{display:inline-flex;align-items:center;gap:.625rem;min-width:0}.select-v2__value{flex:1}.select-v2__value--placeholder{color:var(--ion-color-medium)}.select-v2__icon{flex:0 0 auto;width:1.125rem;height:1.125rem;font-size:1.125rem}.select-v2__icon--mask{background:currentColor;mask:var(--val-select-v2-icon-src) center/contain no-repeat;-webkit-mask:var(--val-select-v2-icon-src) center/contain no-repeat}.select-v2__chevron{flex:0 0 auto;width:.625rem;height:.625rem;border-right:.125rem solid currentColor;border-bottom:.125rem solid currentColor;transform:rotate(45deg) translateY(-.125rem)}.select-v2--open .select-v2__chevron{transform:rotate(225deg) translateY(-.125rem)}.select-v2__menu{position:absolute;z-index:20;left:0;right:0;top:calc(100% + .375rem);overflow:hidden;border:.0625rem solid rgba(var(--ion-color-medium-rgb),.28);border-radius:1.5rem;background:var(--ion-background-color);box-shadow:0 .875rem 2.125rem #00000029}.select-v2__option{width:100%;min-height:3rem;justify-content:flex-start;border:0;border-bottom:.0625rem solid rgba(var(--ion-color-medium-rgb),.22);padding:.75rem .875rem;background:var(--ion-background-color);color:var(--ion-color-darki);font:inherit;text-align:left}.select-v2__option:focus{outline:none}.select-v2__option:focus-visible{outline:.125rem solid var(--ion-color-primary, #7026df);outline-offset:2px;border-radius:inherit}.select-v2__option:last-child{border-bottom:0}.select-v2__option:hover,.select-v2__option:focus-visible{background:rgba(var(--ion-color-medium-rgb),.08)}.select-v2__option[aria-selected=true]{font-weight:700}.select-v2__option-label{flex:1;min-width:0}.select-v2__check{flex:0 0 auto;font-size:1.25rem}.select-v2--disabled{opacity:.55}\n"] }]
257
+ }], ctorParameters: () => [], propDecorators: { preset: [{
258
+ type: Input
259
+ }], props: [{
260
+ type: Input
261
+ }], handleDocumentClick: [{
262
+ type: HostListener,
263
+ args: ['document:click', ['$event']]
264
+ }] } });
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWlucHV0LXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvc2VsZWN0LWlucHV0LXYyL3NlbGVjdC1pbnB1dC12Mi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQW9DLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQThCLE1BQU0sYUFBYSxDQUFDOztBQWdGMUUsTUFBTSxPQUFPLHNCQUFzQjthQUNsQixXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFZMUI7UUFYUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBR3RDLFVBQUssR0FBMkIsRUFBRSxDQUFDO1FBRTVDLGtC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QkFBYixLQUFLO2dCQXVCTixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjaGVja21hcmtPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZm9ybS1kZWZhdWx0cyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzLCBJbnB1dE1ldGFkYXRhLCBJbnB1dE9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNlbGVjdC1pbnB1dC12MicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtdjJcIiBbY2xhc3Muc2VsZWN0LXYyLS1vcGVuXT1cImlzT3BlblwiIFtjbGFzcy5zZWxlY3QtdjItLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzZWxlY3QtdjJfX3RyaWdnZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwibGlzdGJveElkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgICAgIChrZXlkb3duLmFycm93ZG93bik9XCJvcGVuQW5kRm9jdXMoJGV2ZW50LCAxKVwiXG4gICAgICAgIChrZXlkb3duLmFycm93dXApPVwib3BlbkFuZEZvY3VzKCRldmVudCwgLTEpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtdjJfX3ZhbHVlXCIgW2NsYXNzLnNlbGVjdC12Ml9fdmFsdWUtLXBsYWNlaG9sZGVyXT1cIiFzZWxlY3RlZE9wdGlvbigpXCI+XG4gICAgICAgICAgQGlmIChzZWxlY3RlZE9wdGlvbigpPy5pY29uPy5zcmMpIHtcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LXYyX19pY29uIHNlbGVjdC12Ml9faWNvbi0tbWFza1wiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXZhbC1zZWxlY3QtdjItaWNvbi1zcmNdPVwiaWNvbk1hc2soc2VsZWN0ZWRPcHRpb24oKSEuaWNvbiEuc3JjISlcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICB9IEBlbHNlIGlmIChzZWxlY3RlZE9wdGlvbigpPy5pY29uPy5uYW1lKSB7XG4gICAgICAgICAgICA8aW9uLWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtdjJfX2ljb25cIlxuICAgICAgICAgICAgICBbbmFtZV09XCJzZWxlY3RlZE9wdGlvbigpIS5pY29uIS5uYW1lXCJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cInNlbGVjdGVkT3B0aW9uKCkhLmljb24hLmNvbG9yXCJcbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxzcGFuPnt7IHNlbGVjdGVkT3B0aW9uKCk/Lm5hbWUgfHwgcmVzb2x2ZWRQcm9wcy5wbGFjZWhvbGRlciB8fCByZXNvbHZlZFByb3BzLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LXYyX19jaGV2cm9uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIEBpZiAoaXNPcGVuKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtdjJfX21lbnVcIiBbaWRdPVwibGlzdGJveElkXCIgcm9sZT1cImxpc3Rib3hcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpXCI+XG4gICAgICAgICAgQGZvciAob3B0aW9uIG9mIG9yZGVyZWRPcHRpb25zKCk7IHRyYWNrIG9wdGlvbi5pZCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtdjJfX29wdGlvblwiXG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIm9wdGlvbi5pZCA9PT0gcmVzb2x2ZWRQcm9wcy5jb250cm9sPy52YWx1ZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0KG9wdGlvbilcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwiZm9jdXNOZXh0KCRldmVudCwgMSlcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd3VwKT1cImZvY3VzTmV4dCgkZXZlbnQsIC0xKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmIChvcHRpb24uaWNvbj8uc3JjKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LXYyX19pY29uIHNlbGVjdC12Ml9faWNvbi0tbWFza1wiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuLS12YWwtc2VsZWN0LXYyLWljb24tc3JjXT1cImljb25NYXNrKG9wdGlvbi5pY29uLnNyYylcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChvcHRpb24uaWNvbj8ubmFtZSkge1xuICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtdjJfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwib3B0aW9uLmljb24ubmFtZVwiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwib3B0aW9uLmljb24uY29sb3JcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LXYyX19vcHRpb24tbGFiZWxcIj57eyBvcHRpb24ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChvcHRpb24uaWQgPT09IHJlc29sdmVkUHJvcHMuY29udHJvbD8udmFsdWUpIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJzZWxlY3QtdjJfX2NoZWNrXCIgbmFtZT1cImNoZWNrbWFyay1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWlucHV0LXYyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdElucHV0VjJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcHJlc2V0cyA9IGluamVjdChQcmVzZXRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICBASW5wdXQoKSBwcmVzZXQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPElucHV0TWV0YWRhdGE+ID0ge307XG5cbiAgcmVzb2x2ZWRQcm9wczogSW5wdXRNZXRhZGF0YSA9IHt9IGFzIElucHV0TWV0YWRhdGE7XG4gIGlzT3BlbiA9IGZhbHNlO1xuICBsaXN0Ym94SWQgPSBgdmFsLXNlbGVjdC12Mi0ke1NlbGVjdElucHV0VjJDb21wb25lbnQubmV4dElkKyt9YDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IGNoZWNrbWFya091dGxpbmUgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIGhhbmRsZURvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSByZXR1cm47XG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XG4gIH1cblxuICBvcGVuQW5kRm9jdXMoZXZlbnQ6IEV2ZW50LCBkaXJlY3Rpb246IDEgfCAtMSk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSByZXR1cm47XG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb2N1c05leHRPcHRpb24oZGlyZWN0aW9uKSk7XG4gIH1cblxuICBmb2N1c05leHQoZXZlbnQ6IEV2ZW50LCBkaXJlY3Rpb246IDEgfCAtMSk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5mb2N1c05leHRPcHRpb24oZGlyZWN0aW9uKTtcbiAgfVxuXG4gIGNsb3NlKGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgdHJpZ2dlciA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3QtdjJfX3RyaWdnZXInKSBhcyBIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw7XG4gICAgICB0cmlnZ2VyPy5mb2N1cygpO1xuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0KG9wdGlvbjogSW5wdXRPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAob3B0aW9uLmRpc2FibGVkIHx8IHRoaXMuaXNEaXNhYmxlZCgpKSByZXR1cm47XG4gICAgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/LnNldFZhbHVlKG9wdGlvbi5pZCk7XG4gICAgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgc2VsZWN0ZWRPcHRpb24oKTogSW5wdXRPcHRpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9yZGVyZWRPcHRpb25zKCkuZmluZChvcHRpb24gPT4gb3B0aW9uLmlkID09PSB0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbD8udmFsdWUpO1xuICB9XG5cbiAgb3JkZXJlZE9wdGlvbnMoKTogSW5wdXRPcHRpb25bXSB7XG4gICAgcmV0dXJuIFsuLi4odGhpcy5yZXNvbHZlZFByb3BzLm9wdGlvbnMgfHwgW10pXS5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcik7XG4gIH1cblxuICBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRCB8fCAhIXRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy5kaXNhYmxlZDtcbiAgfVxuXG4gIGFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMubGFiZWwgfHwgdGhpcy5yZXNvbHZlZFByb3BzLnBsYWNlaG9sZGVyIHx8IHRoaXMuaTE4bi50KCdzZWxlY3RPcHRpb24nKTtcbiAgfVxuXG4gIGljb25NYXNrKHNyYzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHVybChcIiR7c3JjfVwiKWA7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0ID8gKHRoaXMucHJlc2V0cy5nZXQoJ3NlbGVjdElucHV0VjInLCB0aGlzLnByZXNldCkgYXMgUGFydGlhbDxJbnB1dE1ldGFkYXRhPikgOiB7fTtcbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICBsYWJlbDogJycsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICBvcHRpb25zOiBbXSxcbiAgICAgIC4uLnByZXNldFByb3BzLFxuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICB9IGFzIElucHV0TWV0YWRhdGE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHM/LndpdGhEZWZhdWx0IHx8IHRoaXMucmVzb2x2ZWRQcm9wcz8udmFsdWUpIHtcbiAgICAgIGFwcGx5RGVmYXVsdFZhbHVlVG9Db250cm9sKHRoaXMucmVzb2x2ZWRQcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c05leHRPcHRpb24oZGlyZWN0aW9uOiAxIHwgLTEpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZWxlY3QtdjJfX29wdGlvbicpIGFzIE5vZGVMaXN0T2Y8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgICk7XG4gICAgaWYgKCFvcHRpb25zLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvbiA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG4gICAgY29uc3QgbmV4dEluZGV4ID0gYWN0aXZlSW5kZXggPCAwID8gKGRpcmVjdGlvbiA+IDAgPyAwIDogb3B0aW9ucy5sZW5ndGggLSAxKSA6IGFjdGl2ZUluZGV4ICsgZGlyZWN0aW9uO1xuICAgIG9wdGlvbnNbKG5leHRJbmRleCArIG9wdGlvbnMubGVuZ3RoKSAlIG9wdGlvbnMubGVuZ3RoXT8uZm9jdXMoKTtcbiAgfVxufVxuIl19