valtech-components 4.0.549 → 4.0.551

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.551';
63
63
 
64
64
  // Control de estado de refresco (singleton a nivel de módulo)
65
65
  let isRefreshing = false;
@@ -6563,13 +6563,15 @@ class NotificationsService {
6563
6563
  * @param limit - Máximo de notificaciones (default: 50)
6564
6564
  */
6565
6565
  getUnread(limit = DEFAULT_LIMIT) {
6566
- if (!this.collection)
6567
- return of([]);
6568
- return this.collection.watchAll({
6569
- where: [{ field: 'isRead', operator: '==', value: false }],
6570
- orderBy: [{ field: 'createdAt', direction: 'desc' }],
6571
- limit,
6572
- });
6566
+ return this.collectionWhenAuthReady$().pipe(switchMap(collection => {
6567
+ if (!collection)
6568
+ return of([]);
6569
+ return collection.watchAll({
6570
+ where: [{ field: 'isRead', operator: '==', value: false }],
6571
+ orderBy: [{ field: 'createdAt', direction: 'desc' }],
6572
+ limit,
6573
+ });
6574
+ }));
6573
6575
  }
6574
6576
  /**
6575
6577
  * Cuenta notificaciones no leídas usando server-side aggregation query.
@@ -17085,6 +17087,228 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
17085
17087
  args: ['fileInput']
17086
17088
  }] } });
17087
17089
 
17090
+ class FieldOptionsEditorComponent {
17091
+ constructor() {
17092
+ this.props = {};
17093
+ this.optionsChange = new EventEmitter();
17094
+ this.fallback = {
17095
+ title: 'Options',
17096
+ hint: '',
17097
+ addLabel: 'Add options',
17098
+ optionsLabel: 'Options',
17099
+ placeholder: 'One option per line',
17100
+ emptyText: 'No options yet.',
17101
+ removeOptionLabel: 'Remove option',
17102
+ state: ComponentStates.ENABLED,
17103
+ };
17104
+ this.resolved = this.fallback;
17105
+ this.options = [];
17106
+ this.draft = '';
17107
+ addIcons({ addOutline, trashOutline });
17108
+ }
17109
+ ngOnChanges(changes) {
17110
+ if (changes['props']) {
17111
+ this.resolved = { ...this.fallback, ...this.props };
17112
+ this.options = this.normalizeOptions(this.props.options ?? []);
17113
+ }
17114
+ }
17115
+ get disabled() {
17116
+ return this.resolved.state !== ComponentStates.ENABLED;
17117
+ }
17118
+ stringValue(event) {
17119
+ return String(event.detail?.value ?? '');
17120
+ }
17121
+ addDraft() {
17122
+ const names = this.draft
17123
+ .split(/\r?\n|,/)
17124
+ .map(value => value.trim())
17125
+ .filter(Boolean);
17126
+ if (names.length === 0)
17127
+ return;
17128
+ const next = [...this.options, ...names.map(name => this.createOption(name))];
17129
+ this.draft = '';
17130
+ this.setOptions(next);
17131
+ }
17132
+ updateOption(id, name) {
17133
+ this.setOptions(this.options.map(option => option.id === id
17134
+ ? {
17135
+ ...option,
17136
+ name: name.trimStart(),
17137
+ }
17138
+ : option));
17139
+ }
17140
+ removeOption(id) {
17141
+ this.setOptions(this.options.filter(option => option.id !== id));
17142
+ }
17143
+ createOption(name) {
17144
+ return {
17145
+ id: this.uniqueID(this.optionID(name) || `option-${this.options.length + 1}`),
17146
+ name,
17147
+ order: this.options.length,
17148
+ };
17149
+ }
17150
+ setOptions(options) {
17151
+ this.options = this.normalizeOptions(options).filter(option => option.name.trim());
17152
+ this.optionsChange.emit(this.options);
17153
+ }
17154
+ normalizeOptions(options) {
17155
+ const seen = new Set();
17156
+ return [...options]
17157
+ .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))
17158
+ .map((option, index) => {
17159
+ const name = option.name.trim();
17160
+ const id = this.uniqueID(option.id || this.optionID(name) || `option-${index + 1}`, seen);
17161
+ seen.add(id);
17162
+ return { id, name, order: index };
17163
+ });
17164
+ }
17165
+ uniqueID(value, used = new Set(this.options.map(option => option.id))) {
17166
+ const base = value || 'option';
17167
+ if (!used.has(base))
17168
+ return base;
17169
+ let suffix = 2;
17170
+ while (used.has(`${base}-${suffix}`))
17171
+ suffix += 1;
17172
+ return `${base}-${suffix}`;
17173
+ }
17174
+ optionID(value) {
17175
+ return value
17176
+ .normalize('NFD')
17177
+ .replace(/[\u0300-\u036f]/g, '')
17178
+ .replace(/[^a-zA-Z0-9]+/g, '-')
17179
+ .replace(/^-+|-+$/g, '')
17180
+ .toLowerCase();
17181
+ }
17182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldOptionsEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17183
+ 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: `
17184
+ <section class="options-editor">
17185
+ @if (resolved.title) {
17186
+ <h3>{{ resolved.title }}</h3>
17187
+ }
17188
+ @if (resolved.hint) {
17189
+ <p class="options-editor__hint">{{ resolved.hint }}</p>
17190
+ }
17191
+
17192
+ <div class="options-editor__add">
17193
+ <ion-textarea
17194
+ autoGrow="true"
17195
+ fill="outline"
17196
+ [placeholder]="resolved.placeholder"
17197
+ [value]="draft"
17198
+ [disabled]="disabled"
17199
+ (ionInput)="draft = stringValue($event)"
17200
+ />
17201
+ <ion-button
17202
+ type="button"
17203
+ fill="outline"
17204
+ shape="round"
17205
+ color="dark"
17206
+ [disabled]="disabled || !draft.trim()"
17207
+ (click)="addDraft()"
17208
+ >
17209
+ <ion-icon name="add-outline" slot="start" aria-hidden="true" />
17210
+ {{ resolved.addLabel }}
17211
+ </ion-button>
17212
+ </div>
17213
+
17214
+ @if (options.length === 0) {
17215
+ <p class="options-editor__empty">{{ resolved.emptyText }}</p>
17216
+ } @else {
17217
+ <div class="options-editor__list" [attr.aria-label]="resolved.optionsLabel">
17218
+ @for (option of options; track option.id) {
17219
+ <div class="options-editor__row">
17220
+ <ion-input
17221
+ fill="outline"
17222
+ [value]="option.name"
17223
+ [disabled]="disabled"
17224
+ [attr.aria-label]="resolved.optionsLabel"
17225
+ (ionInput)="updateOption(option.id, stringValue($event))"
17226
+ />
17227
+ <ion-button
17228
+ type="button"
17229
+ fill="clear"
17230
+ color="medium"
17231
+ [disabled]="disabled"
17232
+ [attr.aria-label]="resolved.removeOptionLabel"
17233
+ (click)="removeOption(option.id)"
17234
+ >
17235
+ <ion-icon name="trash-outline" slot="icon-only" />
17236
+ </ion-button>
17237
+ </div>
17238
+ }
17239
+ </div>
17240
+ }
17241
+ </section>
17242
+ `, 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"] }] }); }
17243
+ }
17244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldOptionsEditorComponent, decorators: [{
17245
+ type: Component,
17246
+ args: [{ selector: 'val-field-options-editor', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonInput, IonTextarea], template: `
17247
+ <section class="options-editor">
17248
+ @if (resolved.title) {
17249
+ <h3>{{ resolved.title }}</h3>
17250
+ }
17251
+ @if (resolved.hint) {
17252
+ <p class="options-editor__hint">{{ resolved.hint }}</p>
17253
+ }
17254
+
17255
+ <div class="options-editor__add">
17256
+ <ion-textarea
17257
+ autoGrow="true"
17258
+ fill="outline"
17259
+ [placeholder]="resolved.placeholder"
17260
+ [value]="draft"
17261
+ [disabled]="disabled"
17262
+ (ionInput)="draft = stringValue($event)"
17263
+ />
17264
+ <ion-button
17265
+ type="button"
17266
+ fill="outline"
17267
+ shape="round"
17268
+ color="dark"
17269
+ [disabled]="disabled || !draft.trim()"
17270
+ (click)="addDraft()"
17271
+ >
17272
+ <ion-icon name="add-outline" slot="start" aria-hidden="true" />
17273
+ {{ resolved.addLabel }}
17274
+ </ion-button>
17275
+ </div>
17276
+
17277
+ @if (options.length === 0) {
17278
+ <p class="options-editor__empty">{{ resolved.emptyText }}</p>
17279
+ } @else {
17280
+ <div class="options-editor__list" [attr.aria-label]="resolved.optionsLabel">
17281
+ @for (option of options; track option.id) {
17282
+ <div class="options-editor__row">
17283
+ <ion-input
17284
+ fill="outline"
17285
+ [value]="option.name"
17286
+ [disabled]="disabled"
17287
+ [attr.aria-label]="resolved.optionsLabel"
17288
+ (ionInput)="updateOption(option.id, stringValue($event))"
17289
+ />
17290
+ <ion-button
17291
+ type="button"
17292
+ fill="clear"
17293
+ color="medium"
17294
+ [disabled]="disabled"
17295
+ [attr.aria-label]="resolved.removeOptionLabel"
17296
+ (click)="removeOption(option.id)"
17297
+ >
17298
+ <ion-icon name="trash-outline" slot="icon-only" />
17299
+ </ion-button>
17300
+ </div>
17301
+ }
17302
+ </div>
17303
+ }
17304
+ </section>
17305
+ `, 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"] }]
17306
+ }], ctorParameters: () => [], propDecorators: { props: [{
17307
+ type: Input
17308
+ }], optionsChange: [{
17309
+ type: Output
17310
+ }] } });
17311
+
17088
17312
  /**
17089
17313
  * val-hint
17090
17314
  *
@@ -17409,8 +17633,7 @@ class LanguageSelectorComponent {
17409
17633
  * Emits the selected language code.
17410
17634
  */
17411
17635
  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)}`;
17636
+ this.iconPopoverOpen = false;
17414
17637
  /** Available languages (exposed for icon mode template) */
17415
17638
  this.availableLanguages = [];
17416
17639
  /** Current language (exposed for icon mode template) */
@@ -17500,6 +17723,14 @@ class LanguageSelectorComponent {
17500
17723
  }
17501
17724
  }
17502
17725
  }
17726
+ openIconPopover(event) {
17727
+ event.stopPropagation();
17728
+ this.iconPopoverEvent = event;
17729
+ this.iconPopoverOpen = true;
17730
+ }
17731
+ closeIconPopover() {
17732
+ this.iconPopoverOpen = false;
17733
+ }
17503
17734
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LanguageSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17504
17735
  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
17736
  <!-- Default mode: use popover-selector -->
@@ -17510,7 +17741,6 @@ class LanguageSelectorComponent {
17510
17741
  <!-- Icon mode: compact globe button with popover -->
17511
17742
  @if (props.mode === 'icon') {
17512
17743
  <ion-button
17513
- [id]="popoverId"
17514
17744
  [color]="props.color || 'medium'"
17515
17745
  [fill]="props.fill || 'clear'"
17516
17746
  [size]="props.size || 'default'"
@@ -17518,11 +17748,17 @@ class LanguageSelectorComponent {
17518
17748
  [attr.aria-label]="'Cambiar idioma'"
17519
17749
  class="icon-mode-button"
17520
17750
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
17751
+ (click)="openIconPopover($event)"
17521
17752
  >
17522
17753
  <ion-icon slot="icon-only" [name]="props.icon || 'globe-outline'" aria-hidden="true"></ion-icon>
17523
17754
  </ion-button>
17524
17755
 
17525
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
17756
+ <ion-popover
17757
+ [isOpen]="iconPopoverOpen"
17758
+ [event]="iconPopoverEvent"
17759
+ [dismissOnSelect]="true"
17760
+ (didDismiss)="closeIconPopover()"
17761
+ >
17526
17762
  <ng-template>
17527
17763
  <ion-list>
17528
17764
  @for (lang of availableLanguages; track lang) {
@@ -17555,7 +17791,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
17555
17791
  <!-- Icon mode: compact globe button with popover -->
17556
17792
  @if (props.mode === 'icon') {
17557
17793
  <ion-button
17558
- [id]="popoverId"
17559
17794
  [color]="props.color || 'medium'"
17560
17795
  [fill]="props.fill || 'clear'"
17561
17796
  [size]="props.size || 'default'"
@@ -17563,11 +17798,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
17563
17798
  [attr.aria-label]="'Cambiar idioma'"
17564
17799
  class="icon-mode-button"
17565
17800
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
17801
+ (click)="openIconPopover($event)"
17566
17802
  >
17567
17803
  <ion-icon slot="icon-only" [name]="props.icon || 'globe-outline'" aria-hidden="true"></ion-icon>
17568
17804
  </ion-button>
17569
17805
 
17570
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
17806
+ <ion-popover
17807
+ [isOpen]="iconPopoverOpen"
17808
+ [event]="iconPopoverEvent"
17809
+ [dismissOnSelect]="true"
17810
+ (didDismiss)="closeIconPopover()"
17811
+ >
17571
17812
  <ng-template>
17572
17813
  <ion-list>
17573
17814
  @for (lang of availableLanguages; track lang) {
@@ -17874,7 +18115,7 @@ class FontSizeSelectorComponent {
17874
18115
  this.props = {};
17875
18116
  this.fontSizeService = inject(FontSizeService);
17876
18117
  this.i18n = inject(I18nService);
17877
- this.popoverId = `font-size-selector-${Math.random().toString(36).slice(2, 8)}`;
18118
+ this.isOpen = false;
17878
18119
  this.currentSize = this.fontSizeService.size;
17879
18120
  this.i18n.registerDefaults('FontSizeSelector', FONT_SIZE_SELECTOR_I18N);
17880
18121
  }
@@ -17888,13 +18129,20 @@ class FontSizeSelectorComponent {
17888
18129
  setSize(size) {
17889
18130
  this.fontSizeService.setSize(size);
17890
18131
  }
18132
+ openPopover(event) {
18133
+ event.stopPropagation();
18134
+ this.popoverEvent = event;
18135
+ this.isOpen = true;
18136
+ }
18137
+ closePopover() {
18138
+ this.isOpen = false;
18139
+ }
17891
18140
  t(key) {
17892
18141
  return this.i18n.t(key, 'FontSizeSelector');
17893
18142
  }
17894
18143
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FontSizeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17895
18144
  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
18145
  <ion-button
17897
- [id]="popoverId"
17898
18146
  [color]="props.color || 'medium'"
17899
18147
  [fill]="props.fill || 'clear'"
17900
18148
  [size]="props.size || 'default'"
@@ -17902,11 +18150,17 @@ class FontSizeSelectorComponent {
17902
18150
  [attr.aria-label]="t('ariaLabel')"
17903
18151
  class="icon-mode-button"
17904
18152
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
18153
+ (click)="openPopover($event)"
17905
18154
  >
17906
18155
  <ion-icon slot="icon-only" name="text-outline" aria-hidden="true"></ion-icon>
17907
18156
  </ion-button>
17908
18157
 
17909
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
18158
+ <ion-popover
18159
+ [isOpen]="isOpen"
18160
+ [event]="popoverEvent"
18161
+ [dismissOnSelect]="true"
18162
+ (didDismiss)="closePopover()"
18163
+ >
17910
18164
  <ng-template>
17911
18165
  <ion-list>
17912
18166
  @for (option of options; track option.value) {
@@ -17932,7 +18186,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
17932
18186
  type: Component,
17933
18187
  args: [{ selector: 'val-font-size-selector', standalone: true, imports: [IonButton, IonIcon, IonPopover, IonList, IonItem, IonLabel], template: `
17934
18188
  <ion-button
17935
- [id]="popoverId"
17936
18189
  [color]="props.color || 'medium'"
17937
18190
  [fill]="props.fill || 'clear'"
17938
18191
  [size]="props.size || 'default'"
@@ -17940,11 +18193,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
17940
18193
  [attr.aria-label]="t('ariaLabel')"
17941
18194
  class="icon-mode-button"
17942
18195
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
18196
+ (click)="openPopover($event)"
17943
18197
  >
17944
18198
  <ion-icon slot="icon-only" name="text-outline" aria-hidden="true"></ion-icon>
17945
18199
  </ion-button>
17946
18200
 
17947
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
18201
+ <ion-popover
18202
+ [isOpen]="isOpen"
18203
+ [event]="popoverEvent"
18204
+ [dismissOnSelect]="true"
18205
+ (didDismiss)="closePopover()"
18206
+ >
17948
18207
  <ng-template>
17949
18208
  <ion-list>
17950
18209
  @for (option of options; track option.value) {
@@ -93545,5 +93804,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
93545
93804
  * Generated bundle index. Do not edit.
93546
93805
  */
93547
93806
 
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 };
93807
+ 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
93808
  //# sourceMappingURL=valtech-components.mjs.map