valtech-components 4.0.549 → 4.0.550

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.
@@ -23,7 +23,7 @@ import { IonicModule, ToastController, NavController } from '@ionic/angular';
23
23
  import { isSupported, getMessaging as getMessaging$1, getToken, deleteToken, onMessage } from 'firebase/messaging';
24
24
  import { getApps, getApp, initializeApp as initializeApp$1 } from 'firebase/app';
25
25
  import * as i2$1 from '@ionic/angular/standalone';
26
- import { AlertController, IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonModal, IonHeader, IonToolbar, IonContent, IonButtons, IonTitle, IonProgressBar, IonSkeletonText, IonFab, IonFabButton, IonFabList, IonLabel, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonRadio, IonRadioGroup, IonTextarea, IonDatetime, IonSelect, IonSelectOption, IonPopover, IonList, IonItem, IonInput, IonChip, IonRange, IonSearchbar, IonSegment, IonSegmentButton, IonToggle, IonRippleEffect, IonAccordion, IonAccordionGroup, IonTabBar, IonTabButton, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonInfiniteScroll, IonInfiniteScrollContent, IonNote, IonDatetimeButton, ToastController as ToastController$1, IonCol, IonRow, IonRefresher, IonRefresherContent, IonFooter, IonMenuButton, IonListHeader, IonGrid, MenuController, IonMenu, IonMenuToggle, IonSplitPane } from '@ionic/angular/standalone';
26
+ import { AlertController, IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonModal, IonHeader, IonToolbar, IonContent, IonButtons, IonTitle, IonProgressBar, IonSkeletonText, IonFab, IonFabButton, IonFabList, IonLabel, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonRadio, IonRadioGroup, IonTextarea, IonDatetime, IonInput, IonSelect, IonSelectOption, IonPopover, IonList, IonItem, IonChip, IonRange, IonSearchbar, IonSegment, IonSegmentButton, IonToggle, IonRippleEffect, IonAccordion, IonAccordionGroup, IonTabBar, IonTabButton, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonInfiniteScroll, IonInfiniteScrollContent, IonNote, IonDatetimeButton, ToastController as ToastController$1, IonCol, IonRow, IonRefresher, IonRefresherContent, IonFooter, IonMenuButton, IonListHeader, IonGrid, MenuController, IonMenu, IonMenuToggle, IonSplitPane } from '@ionic/angular/standalone';
27
27
  import { addIcons } from 'ionicons';
28
28
  import { addOutline, addCircleOutline, alertOutline, alertCircleOutline, arrowBackOutline, arrowForwardOutline, arrowDownOutline, settings, settingsOutline, checkmarkCircleOutline, ellipsisHorizontalOutline, notifications, notificationsOutline, openOutline, closeOutline, chatbubblesOutline, shareOutline, heart, heartOutline, home, homeOutline, eyeOffOutline, eyeOutline, scanOutline, chevronDownOutline, chevronForwardOutline, checkmarkOutline, clipboardOutline, copyOutline, filterOutline, locationOutline, calendarOutline, businessOutline, logoTwitter, logoInstagram, logoLinkedin, logoYoutube, logoTiktok, logoFacebook, logoGoogle, createOutline, trashOutline, playOutline, peopleOutline, phonePortraitOutline, refreshOutline, documentTextOutline, lockClosedOutline, cloudUploadOutline, textOutline, informationCircleOutline, logoNpm, removeOutline, optionsOutline, personOutline, shieldCheckmarkOutline, keyOutline, desktopOutline, logOutOutline, cloudDownloadOutline, cloudOutline, gitBranchOutline, layersOutline, serverOutline, warningOutline, bulbOutline, lockOpenOutline, diamondOutline, newspaperOutline, add, close, share, create, trash, star, camera, mic, send, downloadOutline, chevronDown, language, globeOutline, checkmark, list, grid, apps, menu, search, person, helpCircle, informationCircle, documentText, mail, calendar, folder, chevronForward, ellipsisHorizontal, chevronBack, playBack, playForward, ellipse, starOutline, starHalf, heartHalf, checkmarkCircle, timeOutline, flag, trendingUp, trendingDown, remove, analytics, people, cash, cart, eye, chatbubbleOutline, thumbsUpOutline, thumbsUp, happyOutline, happy, sadOutline, sad, chevronUp, pin, pencil, callOutline, logoWhatsapp, paperPlaneOutline, mailOutline, chevronDownCircleOutline, closeCircle, alertCircle, logoApple, logoMicrosoft, linkOutline, unlinkOutline, cloudOfflineOutline, documentOutline, attachOutline, cameraOutline, closeCircleOutline, imageOutline, printOutline, chevronBackOutline, sendOutline, chatbubbleEllipsesOutline, swapVerticalOutline, chevronUpOutline, searchOutline, cartOutline, chatbubble, compass, compassOutline, gridOutline, listOutline, folderOutline, documents, documentsOutline, statsChart, statsChartOutline, laptopOutline, swapHorizontalOutline, codeSlashOutline, notificationsOffOutline, alarmOutline, chatboxEllipsesOutline, checkmarkDoneOutline, cogOutline, shareSocialOutline, helpCircleOutline, sparklesOutline, trophyOutline, musicalNotesOutline, gameControllerOutline, volumeHighOutline, volumeMuteOutline, menuOutline, stopCircleOutline, videocamOffOutline, checkmarkDone, arrowUndoOutline, micOutline, pulseOutline, arrowUpOutline } from 'ionicons/icons';
29
29
  import { Browser } from '@capacitor/browser';
@@ -59,7 +59,7 @@ import fixWebmDuration from 'fix-webm-duration';
59
59
  * Current version of valtech-components.
60
60
  * This is automatically updated during the publish process.
61
61
  */
62
- const VERSION = '4.0.549';
62
+ const VERSION = '4.0.550';
63
63
 
64
64
  // Control de estado de refresco (singleton a nivel de módulo)
65
65
  let isRefreshing = false;
@@ -17085,6 +17085,228 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
17085
17085
  args: ['fileInput']
17086
17086
  }] } });
17087
17087
 
17088
+ class FieldOptionsEditorComponent {
17089
+ constructor() {
17090
+ this.props = {};
17091
+ this.optionsChange = new EventEmitter();
17092
+ this.fallback = {
17093
+ title: 'Options',
17094
+ hint: '',
17095
+ addLabel: 'Add options',
17096
+ optionsLabel: 'Options',
17097
+ placeholder: 'One option per line',
17098
+ emptyText: 'No options yet.',
17099
+ removeOptionLabel: 'Remove option',
17100
+ state: ComponentStates.ENABLED,
17101
+ };
17102
+ this.resolved = this.fallback;
17103
+ this.options = [];
17104
+ this.draft = '';
17105
+ addIcons({ addOutline, trashOutline });
17106
+ }
17107
+ ngOnChanges(changes) {
17108
+ if (changes['props']) {
17109
+ this.resolved = { ...this.fallback, ...this.props };
17110
+ this.options = this.normalizeOptions(this.props.options ?? []);
17111
+ }
17112
+ }
17113
+ get disabled() {
17114
+ return this.resolved.state !== ComponentStates.ENABLED;
17115
+ }
17116
+ stringValue(event) {
17117
+ return String(event.detail?.value ?? '');
17118
+ }
17119
+ addDraft() {
17120
+ const names = this.draft
17121
+ .split(/\r?\n|,/)
17122
+ .map(value => value.trim())
17123
+ .filter(Boolean);
17124
+ if (names.length === 0)
17125
+ return;
17126
+ const next = [...this.options, ...names.map(name => this.createOption(name))];
17127
+ this.draft = '';
17128
+ this.setOptions(next);
17129
+ }
17130
+ updateOption(id, name) {
17131
+ this.setOptions(this.options.map(option => option.id === id
17132
+ ? {
17133
+ ...option,
17134
+ name: name.trimStart(),
17135
+ }
17136
+ : option));
17137
+ }
17138
+ removeOption(id) {
17139
+ this.setOptions(this.options.filter(option => option.id !== id));
17140
+ }
17141
+ createOption(name) {
17142
+ return {
17143
+ id: this.uniqueID(this.optionID(name) || `option-${this.options.length + 1}`),
17144
+ name,
17145
+ order: this.options.length,
17146
+ };
17147
+ }
17148
+ setOptions(options) {
17149
+ this.options = this.normalizeOptions(options).filter(option => option.name.trim());
17150
+ this.optionsChange.emit(this.options);
17151
+ }
17152
+ normalizeOptions(options) {
17153
+ const seen = new Set();
17154
+ return [...options]
17155
+ .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))
17156
+ .map((option, index) => {
17157
+ const name = option.name.trim();
17158
+ const id = this.uniqueID(option.id || this.optionID(name) || `option-${index + 1}`, seen);
17159
+ seen.add(id);
17160
+ return { id, name, order: index };
17161
+ });
17162
+ }
17163
+ uniqueID(value, used = new Set(this.options.map(option => option.id))) {
17164
+ const base = value || 'option';
17165
+ if (!used.has(base))
17166
+ return base;
17167
+ let suffix = 2;
17168
+ while (used.has(`${base}-${suffix}`))
17169
+ suffix += 1;
17170
+ return `${base}-${suffix}`;
17171
+ }
17172
+ optionID(value) {
17173
+ return value
17174
+ .normalize('NFD')
17175
+ .replace(/[\u0300-\u036f]/g, '')
17176
+ .replace(/[^a-zA-Z0-9]+/g, '-')
17177
+ .replace(/^-+|-+$/g, '')
17178
+ .toLowerCase();
17179
+ }
17180
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldOptionsEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17181
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldOptionsEditorComponent, isStandalone: true, selector: "val-field-options-editor", inputs: { props: "props" }, outputs: { optionsChange: "optionsChange" }, usesOnChanges: true, ngImport: i0, template: `
17182
+ <section class="options-editor">
17183
+ @if (resolved.title) {
17184
+ <h3>{{ resolved.title }}</h3>
17185
+ }
17186
+ @if (resolved.hint) {
17187
+ <p class="options-editor__hint">{{ resolved.hint }}</p>
17188
+ }
17189
+
17190
+ <div class="options-editor__add">
17191
+ <ion-textarea
17192
+ autoGrow="true"
17193
+ fill="outline"
17194
+ [placeholder]="resolved.placeholder"
17195
+ [value]="draft"
17196
+ [disabled]="disabled"
17197
+ (ionInput)="draft = stringValue($event)"
17198
+ />
17199
+ <ion-button
17200
+ type="button"
17201
+ fill="outline"
17202
+ shape="round"
17203
+ color="dark"
17204
+ [disabled]="disabled || !draft.trim()"
17205
+ (click)="addDraft()"
17206
+ >
17207
+ <ion-icon name="add-outline" slot="start" aria-hidden="true" />
17208
+ {{ resolved.addLabel }}
17209
+ </ion-button>
17210
+ </div>
17211
+
17212
+ @if (options.length === 0) {
17213
+ <p class="options-editor__empty">{{ resolved.emptyText }}</p>
17214
+ } @else {
17215
+ <div class="options-editor__list" [attr.aria-label]="resolved.optionsLabel">
17216
+ @for (option of options; track option.id) {
17217
+ <div class="options-editor__row">
17218
+ <ion-input
17219
+ fill="outline"
17220
+ [value]="option.name"
17221
+ [disabled]="disabled"
17222
+ [attr.aria-label]="resolved.optionsLabel"
17223
+ (ionInput)="updateOption(option.id, stringValue($event))"
17224
+ />
17225
+ <ion-button
17226
+ type="button"
17227
+ fill="clear"
17228
+ color="medium"
17229
+ [disabled]="disabled"
17230
+ [attr.aria-label]="resolved.removeOptionLabel"
17231
+ (click)="removeOption(option.id)"
17232
+ >
17233
+ <ion-icon name="trash-outline" slot="icon-only" />
17234
+ </ion-button>
17235
+ </div>
17236
+ }
17237
+ </div>
17238
+ }
17239
+ </section>
17240
+ `, isInline: true, styles: [".options-editor{margin-top:16px}.options-editor h3{margin:0 0 6px;color:var(--ion-color-dark);font-size:1rem}.options-editor__hint,.options-editor__empty{margin:0;color:var(--ion-color-medium);font-size:.875rem;line-height:1.35}.options-editor__add{display:grid;gap:10px;margin-top:12px}.options-editor__list{display:grid;gap:8px;margin-top:12px}.options-editor__row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
17241
+ }
17242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldOptionsEditorComponent, decorators: [{
17243
+ type: Component,
17244
+ args: [{ selector: 'val-field-options-editor', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonInput, IonTextarea], template: `
17245
+ <section class="options-editor">
17246
+ @if (resolved.title) {
17247
+ <h3>{{ resolved.title }}</h3>
17248
+ }
17249
+ @if (resolved.hint) {
17250
+ <p class="options-editor__hint">{{ resolved.hint }}</p>
17251
+ }
17252
+
17253
+ <div class="options-editor__add">
17254
+ <ion-textarea
17255
+ autoGrow="true"
17256
+ fill="outline"
17257
+ [placeholder]="resolved.placeholder"
17258
+ [value]="draft"
17259
+ [disabled]="disabled"
17260
+ (ionInput)="draft = stringValue($event)"
17261
+ />
17262
+ <ion-button
17263
+ type="button"
17264
+ fill="outline"
17265
+ shape="round"
17266
+ color="dark"
17267
+ [disabled]="disabled || !draft.trim()"
17268
+ (click)="addDraft()"
17269
+ >
17270
+ <ion-icon name="add-outline" slot="start" aria-hidden="true" />
17271
+ {{ resolved.addLabel }}
17272
+ </ion-button>
17273
+ </div>
17274
+
17275
+ @if (options.length === 0) {
17276
+ <p class="options-editor__empty">{{ resolved.emptyText }}</p>
17277
+ } @else {
17278
+ <div class="options-editor__list" [attr.aria-label]="resolved.optionsLabel">
17279
+ @for (option of options; track option.id) {
17280
+ <div class="options-editor__row">
17281
+ <ion-input
17282
+ fill="outline"
17283
+ [value]="option.name"
17284
+ [disabled]="disabled"
17285
+ [attr.aria-label]="resolved.optionsLabel"
17286
+ (ionInput)="updateOption(option.id, stringValue($event))"
17287
+ />
17288
+ <ion-button
17289
+ type="button"
17290
+ fill="clear"
17291
+ color="medium"
17292
+ [disabled]="disabled"
17293
+ [attr.aria-label]="resolved.removeOptionLabel"
17294
+ (click)="removeOption(option.id)"
17295
+ >
17296
+ <ion-icon name="trash-outline" slot="icon-only" />
17297
+ </ion-button>
17298
+ </div>
17299
+ }
17300
+ </div>
17301
+ }
17302
+ </section>
17303
+ `, styles: [".options-editor{margin-top:16px}.options-editor h3{margin:0 0 6px;color:var(--ion-color-dark);font-size:1rem}.options-editor__hint,.options-editor__empty{margin:0;color:var(--ion-color-medium);font-size:.875rem;line-height:1.35}.options-editor__add{display:grid;gap:10px;margin-top:12px}.options-editor__list{display:grid;gap:8px;margin-top:12px}.options-editor__row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}\n"] }]
17304
+ }], ctorParameters: () => [], propDecorators: { props: [{
17305
+ type: Input
17306
+ }], optionsChange: [{
17307
+ type: Output
17308
+ }] } });
17309
+
17088
17310
  /**
17089
17311
  * val-hint
17090
17312
  *
@@ -17409,8 +17631,7 @@ class LanguageSelectorComponent {
17409
17631
  * Emits the selected language code.
17410
17632
  */
17411
17633
  this.languageChange = new EventEmitter();
17412
- /** Unique ID for the icon mode popover trigger */
17413
- this.popoverId = `lang-selector-${Math.random().toString(36).substring(2, 9)}`;
17634
+ this.iconPopoverOpen = false;
17414
17635
  /** Available languages (exposed for icon mode template) */
17415
17636
  this.availableLanguages = [];
17416
17637
  /** Current language (exposed for icon mode template) */
@@ -17500,6 +17721,14 @@ class LanguageSelectorComponent {
17500
17721
  }
17501
17722
  }
17502
17723
  }
17724
+ openIconPopover(event) {
17725
+ event.stopPropagation();
17726
+ this.iconPopoverEvent = event;
17727
+ this.iconPopoverOpen = true;
17728
+ }
17729
+ closeIconPopover() {
17730
+ this.iconPopoverOpen = false;
17731
+ }
17503
17732
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LanguageSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17504
17733
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LanguageSelectorComponent, isStandalone: true, selector: "val-language-selector", inputs: { props: "props" }, outputs: { languageChange: "languageChange" }, ngImport: i0, template: `
17505
17734
  <!-- Default mode: use popover-selector -->
@@ -17510,7 +17739,6 @@ class LanguageSelectorComponent {
17510
17739
  <!-- Icon mode: compact globe button with popover -->
17511
17740
  @if (props.mode === 'icon') {
17512
17741
  <ion-button
17513
- [id]="popoverId"
17514
17742
  [color]="props.color || 'medium'"
17515
17743
  [fill]="props.fill || 'clear'"
17516
17744
  [size]="props.size || 'default'"
@@ -17518,11 +17746,17 @@ class LanguageSelectorComponent {
17518
17746
  [attr.aria-label]="'Cambiar idioma'"
17519
17747
  class="icon-mode-button"
17520
17748
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
17749
+ (click)="openIconPopover($event)"
17521
17750
  >
17522
17751
  <ion-icon slot="icon-only" [name]="props.icon || 'globe-outline'" aria-hidden="true"></ion-icon>
17523
17752
  </ion-button>
17524
17753
 
17525
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
17754
+ <ion-popover
17755
+ [isOpen]="iconPopoverOpen"
17756
+ [event]="iconPopoverEvent"
17757
+ [dismissOnSelect]="true"
17758
+ (didDismiss)="closeIconPopover()"
17759
+ >
17526
17760
  <ng-template>
17527
17761
  <ion-list>
17528
17762
  @for (lang of availableLanguages; track lang) {
@@ -17555,7 +17789,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
17555
17789
  <!-- Icon mode: compact globe button with popover -->
17556
17790
  @if (props.mode === 'icon') {
17557
17791
  <ion-button
17558
- [id]="popoverId"
17559
17792
  [color]="props.color || 'medium'"
17560
17793
  [fill]="props.fill || 'clear'"
17561
17794
  [size]="props.size || 'default'"
@@ -17563,11 +17796,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
17563
17796
  [attr.aria-label]="'Cambiar idioma'"
17564
17797
  class="icon-mode-button"
17565
17798
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
17799
+ (click)="openIconPopover($event)"
17566
17800
  >
17567
17801
  <ion-icon slot="icon-only" [name]="props.icon || 'globe-outline'" aria-hidden="true"></ion-icon>
17568
17802
  </ion-button>
17569
17803
 
17570
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
17804
+ <ion-popover
17805
+ [isOpen]="iconPopoverOpen"
17806
+ [event]="iconPopoverEvent"
17807
+ [dismissOnSelect]="true"
17808
+ (didDismiss)="closeIconPopover()"
17809
+ >
17571
17810
  <ng-template>
17572
17811
  <ion-list>
17573
17812
  @for (lang of availableLanguages; track lang) {
@@ -17874,7 +18113,7 @@ class FontSizeSelectorComponent {
17874
18113
  this.props = {};
17875
18114
  this.fontSizeService = inject(FontSizeService);
17876
18115
  this.i18n = inject(I18nService);
17877
- this.popoverId = `font-size-selector-${Math.random().toString(36).slice(2, 8)}`;
18116
+ this.isOpen = false;
17878
18117
  this.currentSize = this.fontSizeService.size;
17879
18118
  this.i18n.registerDefaults('FontSizeSelector', FONT_SIZE_SELECTOR_I18N);
17880
18119
  }
@@ -17888,13 +18127,20 @@ class FontSizeSelectorComponent {
17888
18127
  setSize(size) {
17889
18128
  this.fontSizeService.setSize(size);
17890
18129
  }
18130
+ openPopover(event) {
18131
+ event.stopPropagation();
18132
+ this.popoverEvent = event;
18133
+ this.isOpen = true;
18134
+ }
18135
+ closePopover() {
18136
+ this.isOpen = false;
18137
+ }
17891
18138
  t(key) {
17892
18139
  return this.i18n.t(key, 'FontSizeSelector');
17893
18140
  }
17894
18141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FontSizeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17895
18142
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FontSizeSelectorComponent, isStandalone: true, selector: "val-font-size-selector", inputs: { props: "props" }, ngImport: i0, template: `
17896
18143
  <ion-button
17897
- [id]="popoverId"
17898
18144
  [color]="props.color || 'medium'"
17899
18145
  [fill]="props.fill || 'clear'"
17900
18146
  [size]="props.size || 'default'"
@@ -17902,11 +18148,17 @@ class FontSizeSelectorComponent {
17902
18148
  [attr.aria-label]="t('ariaLabel')"
17903
18149
  class="icon-mode-button"
17904
18150
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
18151
+ (click)="openPopover($event)"
17905
18152
  >
17906
18153
  <ion-icon slot="icon-only" name="text-outline" aria-hidden="true"></ion-icon>
17907
18154
  </ion-button>
17908
18155
 
17909
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
18156
+ <ion-popover
18157
+ [isOpen]="isOpen"
18158
+ [event]="popoverEvent"
18159
+ [dismissOnSelect]="true"
18160
+ (didDismiss)="closePopover()"
18161
+ >
17910
18162
  <ng-template>
17911
18163
  <ion-list>
17912
18164
  @for (option of options; track option.value) {
@@ -17932,7 +18184,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
17932
18184
  type: Component,
17933
18185
  args: [{ selector: 'val-font-size-selector', standalone: true, imports: [IonButton, IonIcon, IonPopover, IonList, IonItem, IonLabel], template: `
17934
18186
  <ion-button
17935
- [id]="popoverId"
17936
18187
  [color]="props.color || 'medium'"
17937
18188
  [fill]="props.fill || 'clear'"
17938
18189
  [size]="props.size || 'default'"
@@ -17940,11 +18191,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
17940
18191
  [attr.aria-label]="t('ariaLabel')"
17941
18192
  class="icon-mode-button"
17942
18193
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
18194
+ (click)="openPopover($event)"
17943
18195
  >
17944
18196
  <ion-icon slot="icon-only" name="text-outline" aria-hidden="true"></ion-icon>
17945
18197
  </ion-button>
17946
18198
 
17947
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
18199
+ <ion-popover
18200
+ [isOpen]="isOpen"
18201
+ [event]="popoverEvent"
18202
+ [dismissOnSelect]="true"
18203
+ (didDismiss)="closePopover()"
18204
+ >
17948
18205
  <ng-template>
17949
18206
  <ion-list>
17950
18207
  @for (option of options; track option.value) {
@@ -93545,5 +93802,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
93545
93802
  * Generated bundle index. Do not edit.
93546
93803
  */
93547
93804
 
93548
- export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, BubbleBlitzGameComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHESSIMALS_BOT_PROFILES, CHEV_KEYS, CHRISTIANITY_BATTLE_SLOTS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, ChatComposerComponent, ChatInputComponent, ChatWindowComponent, CheckInputComponent, CheckboxRadioInputComponent, ChessimalsGameComponent, ChessimalsOnlineService, ChipGroupComponent, ChristianityGameComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentReactionModalComponent, ContentService, ContentTransformer, ConversationListItemComponent, ConversationService, CookieBannerComponent, CookieSettingsComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CANONICAL_FIELD_ALIASES, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_POST_UPDATE_GRACE_MS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DatasetPaginationService, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, EntityFeedService, ExpandableTextComponent, ExternalBrowserService, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSchemaBuilderService, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HapticsService, HasPermissionDirective, HeaderActionsService, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, HtmlViewerModalComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, KNOWN_ROUTES, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LightRippleDirective, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LiveReadFallbackService, LoadMoreComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, META_SCHEMA_VERSION, METRIC_CARD_DEFAULTS, MINI_GAME_PLAYER_AVATARS, MINI_GAME_PLAYER_COLORS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MediaViewerModalComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MemoryGameComponent, MenuComponent, MessageBubbleComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, MiniGameCalloutComponent, MiniGamePlayerProfileService, MiniGameScorePopComponent, MiniGamesMenuComponent, ModalLayoutComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OperationReferenceComponent, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, POST_UPDATE_TS_KEY, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PdfService, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneDisplayComponent, PhoneFormatService, PhoneInputComponent, PickerV2Component, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PricingTableComponent, ProcessLinksPipe, ProfileContentComponent, ProfileModalComponent, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, ReactionBarComponent, ReactionsService, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RetroAudioService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SessionTransitionOverlayComponent, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimonGameComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, ThreadPanelComponent, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, TypingIndicatorComponent, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UsageMetersComponent, UsageService, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_CHAT_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_REACTIONS_CONFIG, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, WorkflowService, advanceTurn, applyChessimalsMove, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, buildSideNavItemsFromBottomNav, button, canPlayCard, canSubmitRequestType, canUseOfferingAbility, chooseChessimalsBotMove, cleanupDestroyed, collections, connectPageRefresh, createChessimalsGame, createChessimalsReviewState, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialDatasetState, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, datasetPageFromLegacyCursor, docs, errorLoggingInterceptor, evaluateVictory, extractPathParams, formatClockTime, formatDateSeparator, formatRelativeTime, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getChessimalsAllLegalMoves, getChessimalsLegalMoves, getChessimalsPieceAt, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isKnownRoute, isValidPath, joinPath, maxLength, mulberry32, news, opponentSeat, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, playCardFromHand, positionKey, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechChat, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationClickActions, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechReactions, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, rbacGuard, readyOfferings, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resignChessimalsGame, resolveAttackCharacter, resolveAttackLeader, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveOfferingAbility, resolveWebBaseUrl, roleGuard, selectableRequestTypes, spendOfferings, storagePaths, superAdminGuard, toArticle, totalOfferings, validateRoutes };
93805
+ export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, BubbleBlitzGameComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHESSIMALS_BOT_PROFILES, CHEV_KEYS, CHRISTIANITY_BATTLE_SLOTS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, ChatComposerComponent, ChatInputComponent, ChatWindowComponent, CheckInputComponent, CheckboxRadioInputComponent, ChessimalsGameComponent, ChessimalsOnlineService, ChipGroupComponent, ChristianityGameComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentReactionModalComponent, ContentService, ContentTransformer, ConversationListItemComponent, ConversationService, CookieBannerComponent, CookieSettingsComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CANONICAL_FIELD_ALIASES, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_POST_UPDATE_GRACE_MS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DatasetPaginationService, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, EntityFeedService, ExpandableTextComponent, ExternalBrowserService, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FieldOptionsEditorComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSchemaBuilderService, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HapticsService, HasPermissionDirective, HeaderActionsService, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, HtmlViewerModalComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, KNOWN_ROUTES, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LightRippleDirective, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LiveReadFallbackService, LoadMoreComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, META_SCHEMA_VERSION, METRIC_CARD_DEFAULTS, MINI_GAME_PLAYER_AVATARS, MINI_GAME_PLAYER_COLORS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MediaViewerModalComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MemoryGameComponent, MenuComponent, MessageBubbleComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, MiniGameCalloutComponent, MiniGamePlayerProfileService, MiniGameScorePopComponent, MiniGamesMenuComponent, ModalLayoutComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OperationReferenceComponent, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, POST_UPDATE_TS_KEY, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PdfService, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneDisplayComponent, PhoneFormatService, PhoneInputComponent, PickerV2Component, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PricingTableComponent, ProcessLinksPipe, ProfileContentComponent, ProfileModalComponent, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, ReactionBarComponent, ReactionsService, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RetroAudioService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SessionTransitionOverlayComponent, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimonGameComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, ThreadPanelComponent, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, TypingIndicatorComponent, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UsageMetersComponent, UsageService, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_CHAT_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_REACTIONS_CONFIG, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, WorkflowService, advanceTurn, applyChessimalsMove, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, buildSideNavItemsFromBottomNav, button, canPlayCard, canSubmitRequestType, canUseOfferingAbility, chooseChessimalsBotMove, cleanupDestroyed, collections, connectPageRefresh, createChessimalsGame, createChessimalsReviewState, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialDatasetState, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, datasetPageFromLegacyCursor, docs, errorLoggingInterceptor, evaluateVictory, extractPathParams, formatClockTime, formatDateSeparator, formatRelativeTime, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getChessimalsAllLegalMoves, getChessimalsLegalMoves, getChessimalsPieceAt, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isKnownRoute, isValidPath, joinPath, maxLength, mulberry32, news, opponentSeat, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, playCardFromHand, positionKey, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechChat, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationClickActions, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechReactions, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, rbacGuard, readyOfferings, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resignChessimalsGame, resolveAttackCharacter, resolveAttackLeader, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveOfferingAbility, resolveWebBaseUrl, roleGuard, selectableRequestTypes, spendOfferings, storagePaths, superAdminGuard, toArticle, totalOfferings, validateRoutes };
93549
93806
  //# sourceMappingURL=valtech-components.mjs.map