valtech-components 4.0.61 → 4.0.63

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.
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
56
56
  * Current version of valtech-components.
57
57
  * This is automatically updated during the publish process.
58
58
  */
59
- const VERSION = '4.0.61';
59
+ const VERSION = '4.0.63';
60
60
 
61
61
  // Control de estado de refresco (singleton a nivel de módulo)
62
62
  let isRefreshing = false;
@@ -6485,8 +6485,9 @@ class OAuthService {
6485
6485
  // → un oauth_callback_data forjado en localStorage por XSS no lo conoce.
6486
6486
  const nonce = this.generateNonce();
6487
6487
  this.expectedNonce = nonce;
6488
- // Construir URL de inicio
6489
- const redirectUri = `${window.location.origin}/auth/oauth/callback`;
6488
+ // popup=true sobrevive el bounce cross-origin (Google/MS borran window.name
6489
+ // por privacidad). El backend lo reenvía en el redirect final vía appendParams.
6490
+ const redirectUri = `${window.location.origin}/auth/oauth/callback?popup=true`;
6490
6491
  const startUrl = `${this.config?.apiUrl}/v2/auth/oauth/${provider}/start?redirect_uri=${encodeURIComponent(redirectUri)}&client_nonce=${encodeURIComponent(nonce)}`;
6491
6492
  // Abrir popup centrado
6492
6493
  const width = 500;
@@ -6601,7 +6602,7 @@ class OAuthService {
6601
6602
  */
6602
6603
  startLinkFlow(provider) {
6603
6604
  return new Observable(observer => {
6604
- const redirectUri = `${window.location.origin}/auth/oauth/callback`;
6605
+ const redirectUri = `${window.location.origin}/auth/oauth/callback?popup=true`;
6605
6606
  const startUrl = `${this.config?.apiUrl}/v2/auth/oauth/link/${provider}/start?redirect_uri=${encodeURIComponent(redirectUri)}`;
6606
6607
  const width = 500;
6607
6608
  const height = 600;
@@ -9974,40 +9975,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
9974
9975
  * app (p.ej. el callback OAuth) que deben verse iguales al arranque, en vez de
9975
9976
  * un segundo loader casi-duplicado.
9976
9977
  *
9977
- * El logo apunta por defecto a `assets/images/main-{light,dark}.svg` los mismos
9978
- * assets de la app consumer que usa el splash de `index.html` y resuelven en
9979
- * runtime contra la app. Override por inputs si hace falta. Fondo overridable con
9978
+ * Por defecto renderiza el logo de la app via la CSS var `--main-logo` (un `<div>`
9979
+ * con `background-image`) cada frontend del factory define `--main-logo` y la
9980
+ * flipea en dark, asi el splash toma el logo correcto sin que el consumer pase nada.
9981
+ * Override opcional: si se pasan `logoLight`/`logoDark` (no vacios), renderiza un
9982
+ * `<img>` con ese src (comportamiento clasico, back-compat). Fondo overridable con
9980
9983
  * las CSS vars `--val-splash-bg` / `--val-splash-bg-dark`.
9981
9984
  */
9982
9985
  class SplashComponent {
9983
9986
  constructor() {
9984
- /** Logo para tema claro. Default = asset de la app (igual que index.html). */
9985
- this.logoLight = input('assets/images/main-light.svg');
9986
- /** Logo para tema oscuro (vía prefers-color-scheme). */
9987
- this.logoDark = input('assets/images/main-dark.svg');
9987
+ /**
9988
+ * Override opcional — src del logo para tema claro. Vacío (default) activa el
9989
+ * modo `--main-logo` (un `<div>` con `background-image: var(--main-logo)` que
9990
+ * toma el logo de la app y respeta dark). Pasalo (no vacío) para forzar `<img>`.
9991
+ */
9992
+ this.logoLight = input('');
9993
+ /** Override opcional — src del logo para tema oscuro (vía prefers-color-scheme). Solo aplica si `logoLight` no es vacío. */
9994
+ this.logoDark = input('');
9988
9995
  /** Texto alternativo del logo. */
9989
9996
  this.alt = input('Valtech');
9990
9997
  }
9991
9998
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SplashComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9992
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: SplashComponent, isStandalone: true, selector: "val-splash", inputs: { logoLight: { classPropertyName: "logoLight", publicName: "logoLight", isSignal: true, isRequired: false, transformFunction: null }, logoDark: { classPropertyName: "logoDark", publicName: "logoDark", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
9999
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SplashComponent, isStandalone: true, selector: "val-splash", inputs: { logoLight: { classPropertyName: "logoLight", publicName: "logoLight", isSignal: true, isRequired: false, transformFunction: null }, logoDark: { classPropertyName: "logoDark", publicName: "logoDark", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
9993
10000
  <div class="val-splash">
9994
- <picture>
9995
- <source media="(prefers-color-scheme: dark)" [srcset]="logoDark()" />
9996
- <img class="val-splash__logo" [src]="logoLight()" [alt]="alt()" />
9997
- </picture>
10001
+ @if (logoLight()) {
10002
+ <picture>
10003
+ @if (logoDark()) {
10004
+ <source media="(prefers-color-scheme: dark)" [srcset]="logoDark()" />
10005
+ }
10006
+ <img class="val-splash__logo" [src]="logoLight()" [alt]="alt()" />
10007
+ </picture>
10008
+ } @else {
10009
+ <div class="val-splash__logo val-splash__logo--var" role="img" [attr.aria-label]="alt()"></div>
10010
+ }
9998
10011
  </div>
9999
- `, isInline: true, styles: [".val-splash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--val-splash-bg, #fbfbfb);z-index:9999;animation:val-splash-in .25s ease}.val-splash__logo{width:180px;max-width:50vw;animation:val-splash-pulse 1.8s ease-in-out infinite}@keyframes val-splash-in{0%{opacity:0}to{opacity:1}}@keyframes val-splash-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-color-scheme: dark){.val-splash{background:var(--val-splash-bg-dark, #0e0420)}}\n"] }); }
10012
+ `, isInline: true, styles: [".val-splash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--val-splash-bg, #fbfbfb);z-index:9999;animation:val-splash-in .25s ease}.val-splash__logo{width:180px;max-width:50vw;animation:val-splash-pulse 1.8s ease-in-out infinite}.val-splash__logo--var{height:180px;background-image:var(--main-logo);background-size:contain;background-repeat:no-repeat;background-position:center}@keyframes val-splash-in{0%{opacity:0}to{opacity:1}}@keyframes val-splash-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-color-scheme: dark){.val-splash{background:var(--val-splash-bg-dark, #0e0420)}}\n"] }); }
10000
10013
  }
10001
10014
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SplashComponent, decorators: [{
10002
10015
  type: Component,
10003
10016
  args: [{ selector: 'val-splash', standalone: true, template: `
10004
10017
  <div class="val-splash">
10005
- <picture>
10006
- <source media="(prefers-color-scheme: dark)" [srcset]="logoDark()" />
10007
- <img class="val-splash__logo" [src]="logoLight()" [alt]="alt()" />
10008
- </picture>
10018
+ @if (logoLight()) {
10019
+ <picture>
10020
+ @if (logoDark()) {
10021
+ <source media="(prefers-color-scheme: dark)" [srcset]="logoDark()" />
10022
+ }
10023
+ <img class="val-splash__logo" [src]="logoLight()" [alt]="alt()" />
10024
+ </picture>
10025
+ } @else {
10026
+ <div class="val-splash__logo val-splash__logo--var" role="img" [attr.aria-label]="alt()"></div>
10027
+ }
10009
10028
  </div>
10010
- `, styles: [".val-splash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--val-splash-bg, #fbfbfb);z-index:9999;animation:val-splash-in .25s ease}.val-splash__logo{width:180px;max-width:50vw;animation:val-splash-pulse 1.8s ease-in-out infinite}@keyframes val-splash-in{0%{opacity:0}to{opacity:1}}@keyframes val-splash-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-color-scheme: dark){.val-splash{background:var(--val-splash-bg-dark, #0e0420)}}\n"] }]
10029
+ `, styles: [".val-splash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--val-splash-bg, #fbfbfb);z-index:9999;animation:val-splash-in .25s ease}.val-splash__logo{width:180px;max-width:50vw;animation:val-splash-pulse 1.8s ease-in-out infinite}.val-splash__logo--var{height:180px;background-image:var(--main-logo);background-size:contain;background-repeat:no-repeat;background-position:center}@keyframes val-splash-in{0%{opacity:0}to{opacity:1}}@keyframes val-splash-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-color-scheme: dark){.val-splash{background:var(--val-splash-bg-dark, #0e0420)}}\n"] }]
10011
10030
  }] });
10012
10031
 
10013
10032
  const POSITION_MAP = {
@@ -28763,6 +28782,145 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
28763
28782
  type: Output
28764
28783
  }] } });
28765
28784
 
28785
+ addIcons({ chevronForward });
28786
+ /**
28787
+ * val-entity-card
28788
+ *
28789
+ * Generic entity card / list row. Two use-cases in one component:
28790
+ *
28791
+ * 1. **Navigable entity** (`clickable: true`, no `actions`) — the whole card is
28792
+ * a button: chevron on the right, `role="button"` + keyboard support, emits
28793
+ * `(cardClick)` with the `token`.
28794
+ * 2. **Row with action(s)** (`actions: ButtonMetadata[]`) — buttons on the
28795
+ * right, each emits `(actionClick)` with its own token.
28796
+ *
28797
+ * Presentational — all text fields are already-resolved strings (no i18n of its
28798
+ * own). Dark-safe: surface/borders/text use theme tokens only.
28799
+ *
28800
+ * @example
28801
+ * ```html
28802
+ * <val-entity-card
28803
+ * [props]="{ chip: { label: 'En vivo', color: 'success' }, title: 'Bingo', subtitle: 'Hoy 20:00', clickable: true, token: 'evt-1' }"
28804
+ * (cardClick)="open($event)" />
28805
+ * ```
28806
+ */
28807
+ class EntityCardComponent {
28808
+ constructor() {
28809
+ /** Component configuration (object-first). */
28810
+ this.props = input({});
28811
+ /** Emits the `token` when the card is navigable and gets clicked/activated. */
28812
+ this.cardClick = new EventEmitter();
28813
+ /** Emits the token of the clicked action button. */
28814
+ this.actionClick = new EventEmitter();
28815
+ /** Merged config. */
28816
+ this.config = computed(() => this.props());
28817
+ /** Action buttons (empty array when none). */
28818
+ this.actions = computed(() => this.config().actions ?? []);
28819
+ /**
28820
+ * Badge-mode pill props for the status chip, or null when absent.
28821
+ * `chip.color` is a free-form string (Ionic color name or CSS) per the public
28822
+ * contract; cast to satisfy `PillMetadata.color` (Ionic `Color` union).
28823
+ */
28824
+ this.chipPillProps = computed(() => {
28825
+ const chip = this.config().chip;
28826
+ if (!chip)
28827
+ return null;
28828
+ return { label: chip.label, color: (chip.color || 'medium') };
28829
+ });
28830
+ /** Card is navigable only when `clickable` and there are no actions. */
28831
+ this.isNavigable = computed(() => !!this.config().clickable && this.actions().length === 0);
28832
+ }
28833
+ onCardClick() {
28834
+ if (!this.isNavigable())
28835
+ return;
28836
+ this.cardClick.emit(this.config().token);
28837
+ }
28838
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EntityCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28839
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: EntityCardComponent, isStandalone: true, selector: "val-entity-card", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cardClick: "cardClick", actionClick: "actionClick" }, ngImport: i0, template: `
28840
+ <div
28841
+ class="entity-card"
28842
+ [class.entity-card--clickable]="isNavigable()"
28843
+ [attr.role]="isNavigable() ? 'button' : null"
28844
+ [attr.tabindex]="isNavigable() ? 0 : null"
28845
+ (click)="onCardClick()"
28846
+ (keyup.enter)="onCardClick()"
28847
+ >
28848
+ @if (chipPillProps(); as chip) {
28849
+ <div class="entity-card__eyebrow">
28850
+ <val-pill [props]="chip" />
28851
+ </div>
28852
+ }
28853
+
28854
+ <div class="entity-card__row">
28855
+ <div class="entity-card__text">
28856
+ <span class="entity-card__title">{{ config().title }}</span>
28857
+ @if (config().subtitle) {
28858
+ <span class="entity-card__subtitle">{{ config().subtitle }}</span>
28859
+ }
28860
+ @if (config().endNote) {
28861
+ <span class="entity-card__end-note">{{ config().endNote }}</span>
28862
+ }
28863
+ </div>
28864
+
28865
+ @if (actions().length) {
28866
+ <div class="entity-card__actions" (click)="$event.stopPropagation()">
28867
+ @for (action of actions(); track action.token || $index) {
28868
+ <val-button [props]="action" (onClick)="actionClick.emit($event)" />
28869
+ }
28870
+ </div>
28871
+ } @else if (isNavigable()) {
28872
+ <ion-icon class="entity-card__chevron" name="chevron-forward" aria-hidden="true" />
28873
+ }
28874
+ </div>
28875
+ </div>
28876
+ `, isInline: true, styles: [":host{display:block}.entity-card{background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, var(--ion-color-light-shade, rgba(0, 0, 0, .1)));border-radius:16px;box-shadow:0 1px 3px #0000000f;padding:16px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.entity-card--clickable{cursor:pointer}.entity-card--clickable:hover{border-color:var(--ion-color-medium, #92949c);box-shadow:0 4px 12px #0000001a}.entity-card--clickable:active{transform:scale(.99)}.entity-card--clickable:focus-visible{outline:2px solid var(--ion-color-primary);outline-offset:2px}.entity-card__eyebrow{display:flex;margin-bottom:10px}.entity-card__row{display:flex;align-items:center;gap:12px}.entity-card__text{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;min-width:0}.entity-card__title{font-size:1rem;font-weight:700;line-height:1.3;color:var(--ion-text-color, #000)}.entity-card__subtitle{font-size:.875rem;line-height:1.35;color:var(--ion-color-medium, #92949c)}.entity-card__end-note{font-size:.8125rem;line-height:1.35;color:var(--ion-color-medium, #92949c)}.entity-card__actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.entity-card__actions val-button{display:inline-block}.entity-card__chevron{font-size:1.25rem;color:var(--ion-color-medium, #92949c);flex-shrink:0}:host-context(body.dark) .entity-card,:host-context(html.ion-palette-dark) .entity-card,:host-context([data-theme=dark]) .entity-card{box-shadow:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: PillComponent, selector: "val-pill", inputs: ["preset", "props"], outputs: ["pillClick", "pillAction"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
28877
+ }
28878
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EntityCardComponent, decorators: [{
28879
+ type: Component,
28880
+ args: [{ selector: 'val-entity-card', standalone: true, imports: [CommonModule, IonIcon, PillComponent, ButtonComponent], template: `
28881
+ <div
28882
+ class="entity-card"
28883
+ [class.entity-card--clickable]="isNavigable()"
28884
+ [attr.role]="isNavigable() ? 'button' : null"
28885
+ [attr.tabindex]="isNavigable() ? 0 : null"
28886
+ (click)="onCardClick()"
28887
+ (keyup.enter)="onCardClick()"
28888
+ >
28889
+ @if (chipPillProps(); as chip) {
28890
+ <div class="entity-card__eyebrow">
28891
+ <val-pill [props]="chip" />
28892
+ </div>
28893
+ }
28894
+
28895
+ <div class="entity-card__row">
28896
+ <div class="entity-card__text">
28897
+ <span class="entity-card__title">{{ config().title }}</span>
28898
+ @if (config().subtitle) {
28899
+ <span class="entity-card__subtitle">{{ config().subtitle }}</span>
28900
+ }
28901
+ @if (config().endNote) {
28902
+ <span class="entity-card__end-note">{{ config().endNote }}</span>
28903
+ }
28904
+ </div>
28905
+
28906
+ @if (actions().length) {
28907
+ <div class="entity-card__actions" (click)="$event.stopPropagation()">
28908
+ @for (action of actions(); track action.token || $index) {
28909
+ <val-button [props]="action" (onClick)="actionClick.emit($event)" />
28910
+ }
28911
+ </div>
28912
+ } @else if (isNavigable()) {
28913
+ <ion-icon class="entity-card__chevron" name="chevron-forward" aria-hidden="true" />
28914
+ }
28915
+ </div>
28916
+ </div>
28917
+ `, styles: [":host{display:block}.entity-card{background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, var(--ion-color-light-shade, rgba(0, 0, 0, .1)));border-radius:16px;box-shadow:0 1px 3px #0000000f;padding:16px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.entity-card--clickable{cursor:pointer}.entity-card--clickable:hover{border-color:var(--ion-color-medium, #92949c);box-shadow:0 4px 12px #0000001a}.entity-card--clickable:active{transform:scale(.99)}.entity-card--clickable:focus-visible{outline:2px solid var(--ion-color-primary);outline-offset:2px}.entity-card__eyebrow{display:flex;margin-bottom:10px}.entity-card__row{display:flex;align-items:center;gap:12px}.entity-card__text{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;min-width:0}.entity-card__title{font-size:1rem;font-weight:700;line-height:1.3;color:var(--ion-text-color, #000)}.entity-card__subtitle{font-size:.875rem;line-height:1.35;color:var(--ion-color-medium, #92949c)}.entity-card__end-note{font-size:.8125rem;line-height:1.35;color:var(--ion-color-medium, #92949c)}.entity-card__actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.entity-card__actions val-button{display:inline-block}.entity-card__chevron{font-size:1.25rem;color:var(--ion-color-medium, #92949c);flex-shrink:0}:host-context(body.dark) .entity-card,:host-context(html.ion-palette-dark) .entity-card,:host-context([data-theme=dark]) .entity-card{box-shadow:none}\n"] }]
28918
+ }], propDecorators: { cardClick: [{
28919
+ type: Output
28920
+ }], actionClick: [{
28921
+ type: Output
28922
+ }] } });
28923
+
28766
28924
  /**
28767
28925
  * Defaults de InvitationCardMetadata.
28768
28926
  */
@@ -33121,12 +33279,24 @@ class OAuthCallbackComponent {
33121
33279
  }
33122
33280
  /**
33123
33281
  * Indica si este callback corre como la VENTANA PRINCIPAL (flujo redirect),
33124
- * no como popup. El popup se abre con window.name 'oauth'/'oauth-link'
33125
- * (OAuthService), nombre que persiste aunque COOP anule window.opener tras el
33126
- * bounce cross-origin. En la ventana principal nadie consume el localStorage,
33127
- * así que el callback debe instalar la sesión y navegar él mismo.
33282
+ * no como popup.
33283
+ *
33284
+ * NO usamos window.name ni window.opener como indicadores primarios:
33285
+ * - Chrome/Firefox borran window.name al navegar cross-origin (privacidad),
33286
+ * por lo que ya no vale para el flujo OAuth que pasa por Google/MS.
33287
+ * - window.opener queda null cuando el proveedor tiene COOP:same-origin
33288
+ * (Google lo usa), que sever la referencia en el bounce.
33289
+ *
33290
+ * Indicador confiable: `popup=true` en la URL. OAuthService lo inyecta en
33291
+ * el redirect_uri antes del /start; el backend lo reenvía intacto en el
33292
+ * redirect final vía appendParams → sobrevive todo el round-trip sin
33293
+ * depender de estado de la ventana del navegador.
33128
33294
  */
33129
33295
  isMainWindow() {
33296
+ const params = new URLSearchParams(window.location.search);
33297
+ if (params.get('popup') === 'true')
33298
+ return false;
33299
+ // Compatibilidad con flujos sin popup=true (redirect directo, tests, legacy).
33130
33300
  if (window.name === 'oauth' || window.name === 'oauth-link')
33131
33301
  return false;
33132
33302
  return !window.opener && window.parent === window;
@@ -33289,13 +33459,12 @@ class OAuthCallbackComponent {
33289
33459
  }
33290
33460
  }
33291
33461
  closeAfterDelay() {
33292
- // Dar tiempo para que el mensaje se envíe antes de cerrar.
33293
- // window.opener puede ser null si COOP severa la referencia durante el bounce
33294
- // cross-origin (Google → api backend → app). window.name='oauth' se preserva
33295
- // a través del bounce y es el indicador confiable de que somos popup OAuth.
33462
+ // popup=true en la URL es el indicador confiable de que somos popup OAuth
33463
+ // (window.name se borra en cross-origin nav; window.opener sever por COOP).
33296
33464
  setTimeout(() => {
33297
- const isOAuthPopup = window.name === 'oauth' || window.name === 'oauth-link';
33298
- if (window.opener || isOAuthPopup) {
33465
+ const params = new URLSearchParams(window.location.search);
33466
+ const isPopup = params.get('popup') === 'true' || window.name === 'oauth' || window.name === 'oauth-link';
33467
+ if (window.opener || isPopup) {
33299
33468
  window.close();
33300
33469
  }
33301
33470
  }, 500);
@@ -68485,5 +68654,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
68485
68654
  * Generated bundle index. Do not edit.
68486
68655
  */
68487
68656
 
68488
- 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, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, 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_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_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, 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, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, 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, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestService, 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, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, 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, TicketCardComponent, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_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_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
68657
+ 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, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, 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_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_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, 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, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, 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, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestService, 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, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, 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, TicketCardComponent, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_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_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
68489
68658
  //# sourceMappingURL=valtech-components.mjs.map