valtech-components 4.0.970 → 4.0.971
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.
- package/esm2022/lib/components/organisms/page-block/page-block.component.mjs +254 -0
- package/esm2022/lib/components/organisms/page-block/types.mjs +20 -0
- package/esm2022/lib/components/organisms/video-player/types.mjs +12 -0
- package/esm2022/lib/components/organisms/video-player/video-player.component.mjs +235 -0
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +9 -1
- package/fesm2022/valtech-components.mjs +509 -2
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/page-block/page-block.component.d.ts +65 -0
- package/lib/components/organisms/page-block/types.d.ts +102 -0
- package/lib/components/organisms/video-player/types.d.ts +45 -0
- package/lib/components/organisms/video-player/video-player.component.d.ts +42 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
|
@@ -67,7 +67,7 @@ import fixWebmDuration from 'fix-webm-duration';
|
|
|
67
67
|
* Current version of valtech-components.
|
|
68
68
|
* This is automatically updated during the publish process.
|
|
69
69
|
*/
|
|
70
|
-
const VERSION = '4.0.
|
|
70
|
+
const VERSION = '4.0.971';
|
|
71
71
|
|
|
72
72
|
function evaluateValtechAccess(rule, context, features = {}, visitedFeatures = new Set()) {
|
|
73
73
|
if (rule == null)
|
|
@@ -89861,6 +89861,513 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
89861
89861
|
}]
|
|
89862
89862
|
}] });
|
|
89863
89863
|
|
|
89864
|
+
/**
|
|
89865
|
+
* `val-page-block`
|
|
89866
|
+
*
|
|
89867
|
+
* Organism que renderiza UN bloque del constructor de páginas de plataforma
|
|
89868
|
+
* (ADR-077, `services/page` en el backend). Es el punto de la lib donde el
|
|
89869
|
+
* catálogo de bloques (`hero`, `text`, `gallery`, `cta`, `faq`) mapea 1:1 a
|
|
89870
|
+
* componentes reales — la razón de ser del ADR: "un rediseño de la lib
|
|
89871
|
+
* mejora todas las páginas publicadas sin tocar sus datos".
|
|
89872
|
+
*
|
|
89873
|
+
* Presentacional puro: recibe `props` ya tipados (espejo exacto del `Block`
|
|
89874
|
+
* del backend), sin llamadas HTTP propias ni conocimiento de a qué app
|
|
89875
|
+
* pertenece la página. El bloque `cta` NO navega — emite `(ctaAction)` con
|
|
89876
|
+
* la intención cruda (`{ action }`) para que el consumidor (la app) la
|
|
89877
|
+
* resuelva contra su propio routing (ADR-077: "el CTA guarda una intención,
|
|
89878
|
+
* nunca una URL").
|
|
89879
|
+
*
|
|
89880
|
+
* El caller típico itera `Page.Blocks` y renderiza uno de estos por bloque:
|
|
89881
|
+
*
|
|
89882
|
+
* @example
|
|
89883
|
+
* ```html
|
|
89884
|
+
* @for (block of page().blocks; track $index) {
|
|
89885
|
+
* <val-page-block [props]="block" (ctaAction)="onCtaAction($event)" />
|
|
89886
|
+
* }
|
|
89887
|
+
* ```
|
|
89888
|
+
*/
|
|
89889
|
+
class PageBlockComponent {
|
|
89890
|
+
constructor() {
|
|
89891
|
+
/**
|
|
89892
|
+
* Emite la intención cruda del CTA al hacer click (`{ action }`, nunca una
|
|
89893
|
+
* URL — ver comentario de clase). El consumidor decide qué hacer con
|
|
89894
|
+
* `action`; este componente no la interpreta.
|
|
89895
|
+
*/
|
|
89896
|
+
this.ctaAction = new EventEmitter();
|
|
89897
|
+
/** Fallback de imagen rota (convención de la lib) — un slot, una signal. */
|
|
89898
|
+
this.heroImageFailed = signal(false);
|
|
89899
|
+
/** Índices de `gallery.images` cuya carga falló (`error` del `<img>`). */
|
|
89900
|
+
this.failedGalleryImages = signal(new Set());
|
|
89901
|
+
}
|
|
89902
|
+
get hero() {
|
|
89903
|
+
return this.props.props;
|
|
89904
|
+
}
|
|
89905
|
+
get text() {
|
|
89906
|
+
return this.props.props;
|
|
89907
|
+
}
|
|
89908
|
+
get gallery() {
|
|
89909
|
+
return this.props.props;
|
|
89910
|
+
}
|
|
89911
|
+
get cta() {
|
|
89912
|
+
return this.props.props;
|
|
89913
|
+
}
|
|
89914
|
+
get faq() {
|
|
89915
|
+
return this.props.props;
|
|
89916
|
+
}
|
|
89917
|
+
/**
|
|
89918
|
+
* `text.body` es texto plano (no markdown — a diferencia de
|
|
89919
|
+
* `val-article`/`val-faq`, `blocks_validate.go` solo exige un string no
|
|
89920
|
+
* vacío). Partido por línea para que `val-text` (un `<p>` por línea)
|
|
89921
|
+
* respete los saltos que el autor escribió, sin interpretar sintaxis.
|
|
89922
|
+
*/
|
|
89923
|
+
textParagraphs() {
|
|
89924
|
+
return this.text.body.split('\n').filter(line => line.trim().length > 0);
|
|
89925
|
+
}
|
|
89926
|
+
/**
|
|
89927
|
+
* `val-faq` agrupa por categoría; el bloque `faq` de `services/page` no
|
|
89928
|
+
* tiene categorías (solo `items` planos) — se envuelve en una única
|
|
89929
|
+
* categoría sin label (`hideSingleCategoryLabel` default `true` la oculta).
|
|
89930
|
+
*/
|
|
89931
|
+
faqCategories() {
|
|
89932
|
+
return [
|
|
89933
|
+
{
|
|
89934
|
+
id: 'page-faq',
|
|
89935
|
+
label: '',
|
|
89936
|
+
items: this.faq.items.map((item, index) => ({
|
|
89937
|
+
id: `page-faq-${index}`,
|
|
89938
|
+
question: item.question,
|
|
89939
|
+
answer: item.answer,
|
|
89940
|
+
})),
|
|
89941
|
+
},
|
|
89942
|
+
];
|
|
89943
|
+
}
|
|
89944
|
+
onCtaClick() {
|
|
89945
|
+
this.ctaAction.emit(this.cta.intent);
|
|
89946
|
+
}
|
|
89947
|
+
onGalleryImageError(index) {
|
|
89948
|
+
const next = new Set(this.failedGalleryImages());
|
|
89949
|
+
next.add(index);
|
|
89950
|
+
this.failedGalleryImages.set(next);
|
|
89951
|
+
}
|
|
89952
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89953
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PageBlockComponent, isStandalone: true, selector: "val-page-block", inputs: { props: "props" }, outputs: { ctaAction: "ctaAction" }, ngImport: i0, template: `
|
|
89954
|
+
@switch (props.type) {
|
|
89955
|
+
@case ('hero') {
|
|
89956
|
+
<section class="page-block page-block--hero" [class]="'align-' + (hero.align || 'center')">
|
|
89957
|
+
@if (hero.image && !heroImageFailed()) {
|
|
89958
|
+
<img
|
|
89959
|
+
class="page-block__hero-image"
|
|
89960
|
+
[src]="hero.image"
|
|
89961
|
+
[alt]="hero.title"
|
|
89962
|
+
loading="lazy"
|
|
89963
|
+
(error)="heroImageFailed.set(true)"
|
|
89964
|
+
/>
|
|
89965
|
+
}
|
|
89966
|
+
<div class="page-block__hero-copy">
|
|
89967
|
+
<val-display [props]="{ size: 'large', color: 'dark', content: hero.title }" />
|
|
89968
|
+
@if (hero.subtitle) {
|
|
89969
|
+
<val-text [props]="{ size: 'large', color: 'medium', bold: false, content: hero.subtitle }" />
|
|
89970
|
+
}
|
|
89971
|
+
</div>
|
|
89972
|
+
</section>
|
|
89973
|
+
}
|
|
89974
|
+
@case ('text') {
|
|
89975
|
+
<section class="page-block page-block--text">
|
|
89976
|
+
@if (text.heading) {
|
|
89977
|
+
<val-title [props]="{ size: 'large', color: 'dark', bold: false, content: text.heading }" />
|
|
89978
|
+
}
|
|
89979
|
+
@for (paragraph of textParagraphs(); track $index) {
|
|
89980
|
+
<val-text [props]="{ size: 'medium', color: 'dark', bold: false, content: paragraph }" />
|
|
89981
|
+
}
|
|
89982
|
+
</section>
|
|
89983
|
+
}
|
|
89984
|
+
@case ('gallery') {
|
|
89985
|
+
<section class="page-block page-block--gallery">
|
|
89986
|
+
<div class="page-block__gallery-grid">
|
|
89987
|
+
@for (image of gallery.images; track $index) {
|
|
89988
|
+
@if (!failedGalleryImages().has($index)) {
|
|
89989
|
+
<!-- Sin alt descriptivo: el backend no modela texto alternativo
|
|
89990
|
+
por imagen (services/page/blocks_validate.go, gallery.images
|
|
89991
|
+
es solo un arreglo de strings). Se marca decorativa a
|
|
89992
|
+
propósito, no un olvido de a11y. -->
|
|
89993
|
+
<img
|
|
89994
|
+
class="page-block__gallery-image"
|
|
89995
|
+
[src]="image"
|
|
89996
|
+
alt=""
|
|
89997
|
+
loading="lazy"
|
|
89998
|
+
(error)="onGalleryImageError($index)"
|
|
89999
|
+
/>
|
|
90000
|
+
}
|
|
90001
|
+
}
|
|
90002
|
+
</div>
|
|
90003
|
+
</section>
|
|
90004
|
+
}
|
|
90005
|
+
@case ('cta') {
|
|
90006
|
+
<section class="page-block page-block--cta">
|
|
90007
|
+
<val-button
|
|
90008
|
+
[props]="{
|
|
90009
|
+
text: cta.label,
|
|
90010
|
+
color: 'primary',
|
|
90011
|
+
fill: 'solid',
|
|
90012
|
+
shape: 'round',
|
|
90013
|
+
type: 'button',
|
|
90014
|
+
state: 'ENABLED',
|
|
90015
|
+
}"
|
|
90016
|
+
(onClick)="onCtaClick()"
|
|
90017
|
+
/>
|
|
90018
|
+
</section>
|
|
90019
|
+
}
|
|
90020
|
+
@case ('faq') {
|
|
90021
|
+
<section class="page-block page-block--faq">
|
|
90022
|
+
<val-faq [props]="{ categories: faqCategories(), searchable: false }" />
|
|
90023
|
+
</section>
|
|
90024
|
+
}
|
|
90025
|
+
}
|
|
90026
|
+
`, isInline: true, styles: [".page-block{display:block;width:100%}.page-block--hero{display:flex;flex-direction:column;gap:16px;text-align:center;align-items:center}.page-block--hero.align-left{text-align:left;align-items:flex-start}.page-block--hero.align-right{text-align:right;align-items:flex-end}.page-block__hero-image{width:100%;max-height:360px;object-fit:cover;border-radius:12px}.page-block__hero-copy{display:flex;flex-direction:column;gap:8px;max-width:640px}.page-block--text{display:flex;flex-direction:column;gap:8px}.page-block__gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}@media (min-width: 768px){.page-block__gallery-grid{grid-template-columns:repeat(3,1fr);gap:12px}}@media (min-width: 992px){.page-block__gallery-grid{grid-template-columns:repeat(4,1fr)}}.page-block__gallery-image{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:8px}.page-block--cta{display:flex;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: FaqComponent, selector: "val-faq", inputs: ["props"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
90027
|
+
}
|
|
90028
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageBlockComponent, decorators: [{
|
|
90029
|
+
type: Component,
|
|
90030
|
+
args: [{ selector: 'val-page-block', standalone: true, imports: [CommonModule, DisplayComponent, TitleComponent, TextComponent, ButtonComponent, FaqComponent], template: `
|
|
90031
|
+
@switch (props.type) {
|
|
90032
|
+
@case ('hero') {
|
|
90033
|
+
<section class="page-block page-block--hero" [class]="'align-' + (hero.align || 'center')">
|
|
90034
|
+
@if (hero.image && !heroImageFailed()) {
|
|
90035
|
+
<img
|
|
90036
|
+
class="page-block__hero-image"
|
|
90037
|
+
[src]="hero.image"
|
|
90038
|
+
[alt]="hero.title"
|
|
90039
|
+
loading="lazy"
|
|
90040
|
+
(error)="heroImageFailed.set(true)"
|
|
90041
|
+
/>
|
|
90042
|
+
}
|
|
90043
|
+
<div class="page-block__hero-copy">
|
|
90044
|
+
<val-display [props]="{ size: 'large', color: 'dark', content: hero.title }" />
|
|
90045
|
+
@if (hero.subtitle) {
|
|
90046
|
+
<val-text [props]="{ size: 'large', color: 'medium', bold: false, content: hero.subtitle }" />
|
|
90047
|
+
}
|
|
90048
|
+
</div>
|
|
90049
|
+
</section>
|
|
90050
|
+
}
|
|
90051
|
+
@case ('text') {
|
|
90052
|
+
<section class="page-block page-block--text">
|
|
90053
|
+
@if (text.heading) {
|
|
90054
|
+
<val-title [props]="{ size: 'large', color: 'dark', bold: false, content: text.heading }" />
|
|
90055
|
+
}
|
|
90056
|
+
@for (paragraph of textParagraphs(); track $index) {
|
|
90057
|
+
<val-text [props]="{ size: 'medium', color: 'dark', bold: false, content: paragraph }" />
|
|
90058
|
+
}
|
|
90059
|
+
</section>
|
|
90060
|
+
}
|
|
90061
|
+
@case ('gallery') {
|
|
90062
|
+
<section class="page-block page-block--gallery">
|
|
90063
|
+
<div class="page-block__gallery-grid">
|
|
90064
|
+
@for (image of gallery.images; track $index) {
|
|
90065
|
+
@if (!failedGalleryImages().has($index)) {
|
|
90066
|
+
<!-- Sin alt descriptivo: el backend no modela texto alternativo
|
|
90067
|
+
por imagen (services/page/blocks_validate.go, gallery.images
|
|
90068
|
+
es solo un arreglo de strings). Se marca decorativa a
|
|
90069
|
+
propósito, no un olvido de a11y. -->
|
|
90070
|
+
<img
|
|
90071
|
+
class="page-block__gallery-image"
|
|
90072
|
+
[src]="image"
|
|
90073
|
+
alt=""
|
|
90074
|
+
loading="lazy"
|
|
90075
|
+
(error)="onGalleryImageError($index)"
|
|
90076
|
+
/>
|
|
90077
|
+
}
|
|
90078
|
+
}
|
|
90079
|
+
</div>
|
|
90080
|
+
</section>
|
|
90081
|
+
}
|
|
90082
|
+
@case ('cta') {
|
|
90083
|
+
<section class="page-block page-block--cta">
|
|
90084
|
+
<val-button
|
|
90085
|
+
[props]="{
|
|
90086
|
+
text: cta.label,
|
|
90087
|
+
color: 'primary',
|
|
90088
|
+
fill: 'solid',
|
|
90089
|
+
shape: 'round',
|
|
90090
|
+
type: 'button',
|
|
90091
|
+
state: 'ENABLED',
|
|
90092
|
+
}"
|
|
90093
|
+
(onClick)="onCtaClick()"
|
|
90094
|
+
/>
|
|
90095
|
+
</section>
|
|
90096
|
+
}
|
|
90097
|
+
@case ('faq') {
|
|
90098
|
+
<section class="page-block page-block--faq">
|
|
90099
|
+
<val-faq [props]="{ categories: faqCategories(), searchable: false }" />
|
|
90100
|
+
</section>
|
|
90101
|
+
}
|
|
90102
|
+
}
|
|
90103
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".page-block{display:block;width:100%}.page-block--hero{display:flex;flex-direction:column;gap:16px;text-align:center;align-items:center}.page-block--hero.align-left{text-align:left;align-items:flex-start}.page-block--hero.align-right{text-align:right;align-items:flex-end}.page-block__hero-image{width:100%;max-height:360px;object-fit:cover;border-radius:12px}.page-block__hero-copy{display:flex;flex-direction:column;gap:8px;max-width:640px}.page-block--text{display:flex;flex-direction:column;gap:8px}.page-block__gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}@media (min-width: 768px){.page-block__gallery-grid{grid-template-columns:repeat(3,1fr);gap:12px}}@media (min-width: 992px){.page-block__gallery-grid{grid-template-columns:repeat(4,1fr)}}.page-block__gallery-image{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:8px}.page-block--cta{display:flex;justify-content:center}\n"] }]
|
|
90104
|
+
}], propDecorators: { props: [{
|
|
90105
|
+
type: Input
|
|
90106
|
+
}], ctaAction: [{
|
|
90107
|
+
type: Output
|
|
90108
|
+
}] } });
|
|
90109
|
+
|
|
90110
|
+
/**
|
|
90111
|
+
* Tipos del organism `val-page-block` — constructor de páginas de plataforma
|
|
90112
|
+
* (ADR-077: `docs/adr/077-constructor-de-paginas-de-plataforma.md`, primera
|
|
90113
|
+
* aplicación real en Eklesee, Bloque 4:
|
|
90114
|
+
* `docs/eklesee/03-roadmap-y-abiertos.md`).
|
|
90115
|
+
*
|
|
90116
|
+
* Espejo 1:1 de `Block`/`Props` en `backend/go/services/page/types.go` +
|
|
90117
|
+
* `backend/go/services/page/blocks_validate.go` — la forma de cada `props`
|
|
90118
|
+
* sale de ahí, no se inventa acá. El catálogo de esta primera pasada son 5
|
|
90119
|
+
* tipos (`hero`, `text`, `gallery`, `cta`, `faq`); `countdown`/`sponsors`/
|
|
90120
|
+
* `progress` (catálogo completo del ADR) quedan fuera hasta que Bingo migre.
|
|
90121
|
+
*
|
|
90122
|
+
* El componente es i18n-agnóstico y agnóstico al dominio a propósito (mismo
|
|
90123
|
+
* criterio que `val-faq`/`val-article`): recibe `props` ya resueltos, sin
|
|
90124
|
+
* llamadas HTTP propias ni conocimiento de rutas de ninguna app. La app que
|
|
90125
|
+
* lo consume (Eklesee) resuelve `PageCTAIntent.action` a una ruta real —
|
|
90126
|
+
* este organism solo la emite via `(ctaAction)`.
|
|
90127
|
+
*/
|
|
90128
|
+
|
|
90129
|
+
const VIDEO_PLAYER_I18N = {
|
|
90130
|
+
es: {
|
|
90131
|
+
uploadingTitle: 'Subiendo video',
|
|
90132
|
+
uploadingBody: 'La subida está en curso. Vuelve en un momento.',
|
|
90133
|
+
processingTitle: 'Video en proceso',
|
|
90134
|
+
processingBody: 'Estamos preparando este video. Vuelve en unos minutos.',
|
|
90135
|
+
rejectedTitle: 'Este video no se pudo publicar',
|
|
90136
|
+
failedTitle: 'No pudimos procesar este video',
|
|
90137
|
+
unsupportedLink: 'Este enlace no se puede reproducir aquí.',
|
|
90138
|
+
},
|
|
90139
|
+
en: {
|
|
90140
|
+
uploadingTitle: 'Uploading video',
|
|
90141
|
+
uploadingBody: 'The upload is in progress. Check back in a moment.',
|
|
90142
|
+
processingTitle: 'Video processing',
|
|
90143
|
+
processingBody: "We're getting this video ready. Check back in a few minutes.",
|
|
90144
|
+
rejectedTitle: "This video couldn't be published",
|
|
90145
|
+
failedTitle: "We couldn't process this video",
|
|
90146
|
+
unsupportedLink: "This link can't be played here.",
|
|
90147
|
+
},
|
|
90148
|
+
};
|
|
90149
|
+
/**
|
|
90150
|
+
* `val-video-player` — reproductor de video de plataforma (ADR-087, "Fase 1 —
|
|
90151
|
+
* Reproducción"). Presentacional/dumb: recibe un `VideoPlayerAsset` YA
|
|
90152
|
+
* RESUELTO por el backend de turno y decide el render, sin fetch propio.
|
|
90153
|
+
*
|
|
90154
|
+
* - `source:'upload'` + `status:'ready'` → `<video>` nativo (`preload="none"`
|
|
90155
|
+
* + portada — ADR-087 §8, cero bytes de video hasta que alguien le da play).
|
|
90156
|
+
* - `source:'upload'` + `uploading|processing` → portada (si hay) + mensaje.
|
|
90157
|
+
* - `source:'upload'` + `failed|rejected` → mensaje legible con `failReason`
|
|
90158
|
+
* (texto ya resuelto por el backend, se muestra tal cual).
|
|
90159
|
+
* - `source:'link'` → iframe **siempre** contra un patrón fijo por proveedor
|
|
90160
|
+
* conocido (`youtube-nocookie.com/embed/{id}` · `player.vimeo.com/video/{id}`),
|
|
90161
|
+
* nunca un `src` armado con datos crudos del usuario. Proveedor no
|
|
90162
|
+
* reconocido → mensaje, nunca un iframe "por si acaso".
|
|
90163
|
+
*
|
|
90164
|
+
* @example
|
|
90165
|
+
* <val-video-player [video]="doc.video" />
|
|
90166
|
+
*/
|
|
90167
|
+
class VideoPlayerComponent {
|
|
90168
|
+
constructor() {
|
|
90169
|
+
this.i18n = inject(I18nService);
|
|
90170
|
+
this.sanitizer = inject(DomSanitizer);
|
|
90171
|
+
/** El `VideoAsset` ya resuelto por el backend. `null`/`undefined` → no renderiza nada. */
|
|
90172
|
+
this.video = input(null);
|
|
90173
|
+
this.asset = computed(() => this.video() ?? null);
|
|
90174
|
+
this.thumbFailed = signal(false);
|
|
90175
|
+
/**
|
|
90176
|
+
* Arma el embed SIEMPRE contra un patrón fijo por proveedor conocido — el
|
|
90177
|
+
* `externalId` es el único dato del backend que entra en el `src`. Un
|
|
90178
|
+
* proveedor no reconocido devuelve `null` (el template cae al mensaje, no a
|
|
90179
|
+
* un iframe "por si acaso"). `bypassSecurityTrustResourceUrl` es seguro acá
|
|
90180
|
+
* porque el string completo lo arma este componente, nunca el usuario.
|
|
90181
|
+
*/
|
|
90182
|
+
this.embedUrl = computed(() => {
|
|
90183
|
+
const v = this.asset();
|
|
90184
|
+
if (!v || v.source !== 'link' || !v.externalId)
|
|
90185
|
+
return null;
|
|
90186
|
+
const raw = this.buildEmbedUrl(v.provider, v.externalId);
|
|
90187
|
+
return raw ? this.sanitizer.bypassSecurityTrustResourceUrl(raw) : null;
|
|
90188
|
+
});
|
|
90189
|
+
if (!this.i18n.hasNamespace('VideoPlayer')) {
|
|
90190
|
+
this.i18n.registerContent('VideoPlayer', VIDEO_PLAYER_I18N);
|
|
90191
|
+
}
|
|
90192
|
+
}
|
|
90193
|
+
buildEmbedUrl(provider, externalId) {
|
|
90194
|
+
switch (provider) {
|
|
90195
|
+
case 'youtube':
|
|
90196
|
+
return `https://www.youtube-nocookie.com/embed/${encodeURIComponent(externalId)}`;
|
|
90197
|
+
case 'vimeo':
|
|
90198
|
+
return `https://player.vimeo.com/video/${encodeURIComponent(externalId)}`;
|
|
90199
|
+
default:
|
|
90200
|
+
return null;
|
|
90201
|
+
}
|
|
90202
|
+
}
|
|
90203
|
+
t(key) {
|
|
90204
|
+
return this.i18n.t(key, 'VideoPlayer');
|
|
90205
|
+
}
|
|
90206
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VideoPlayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90207
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: VideoPlayerComponent, isStandalone: true, selector: "val-video-player", inputs: { video: { classPropertyName: "video", publicName: "video", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
90208
|
+
@if (asset(); as v) {
|
|
90209
|
+
@if (v.source === 'upload') {
|
|
90210
|
+
@if (v.status === 'ready' && v.url) {
|
|
90211
|
+
<video
|
|
90212
|
+
class="val-video-player__video"
|
|
90213
|
+
[src]="v.url"
|
|
90214
|
+
[poster]="v.thumbnail || undefined"
|
|
90215
|
+
controls
|
|
90216
|
+
preload="none"
|
|
90217
|
+
playsinline
|
|
90218
|
+
></video>
|
|
90219
|
+
} @else if (v.status === 'rejected' || v.status === 'failed') {
|
|
90220
|
+
<div class="val-video-player__state val-video-player__state--error">
|
|
90221
|
+
@if (v.thumbnail && !thumbFailed()) {
|
|
90222
|
+
<img
|
|
90223
|
+
class="val-video-player__poster"
|
|
90224
|
+
[src]="v.thumbnail"
|
|
90225
|
+
alt=""
|
|
90226
|
+
loading="lazy"
|
|
90227
|
+
(error)="thumbFailed.set(true)"
|
|
90228
|
+
/>
|
|
90229
|
+
}
|
|
90230
|
+
<div class="val-video-player__overlay">
|
|
90231
|
+
<strong>{{ v.status === 'rejected' ? t('rejectedTitle') : t('failedTitle') }}</strong>
|
|
90232
|
+
@if (v.failReason) {
|
|
90233
|
+
<span>{{ v.failReason }}</span>
|
|
90234
|
+
}
|
|
90235
|
+
</div>
|
|
90236
|
+
</div>
|
|
90237
|
+
} @else {
|
|
90238
|
+
<!-- uploading | processing -->
|
|
90239
|
+
<div class="val-video-player__state" aria-live="polite">
|
|
90240
|
+
@if (v.thumbnail && !thumbFailed()) {
|
|
90241
|
+
<img
|
|
90242
|
+
class="val-video-player__poster"
|
|
90243
|
+
[src]="v.thumbnail"
|
|
90244
|
+
alt=""
|
|
90245
|
+
loading="lazy"
|
|
90246
|
+
(error)="thumbFailed.set(true)"
|
|
90247
|
+
/>
|
|
90248
|
+
}
|
|
90249
|
+
<div class="val-video-player__overlay">
|
|
90250
|
+
<span class="val-video-player__spinner" aria-hidden="true"></span>
|
|
90251
|
+
<strong>{{ v.status === 'uploading' ? t('uploadingTitle') : t('processingTitle') }}</strong>
|
|
90252
|
+
<span>{{ v.status === 'uploading' ? t('uploadingBody') : t('processingBody') }}</span>
|
|
90253
|
+
</div>
|
|
90254
|
+
</div>
|
|
90255
|
+
}
|
|
90256
|
+
} @else {
|
|
90257
|
+
<!-- source: link -->
|
|
90258
|
+
@if (embedUrl(); as src) {
|
|
90259
|
+
<div class="val-video-player__embed-wrap">
|
|
90260
|
+
<iframe
|
|
90261
|
+
class="val-video-player__embed"
|
|
90262
|
+
[src]="src"
|
|
90263
|
+
title="video"
|
|
90264
|
+
frameborder="0"
|
|
90265
|
+
referrerpolicy="strict-origin-when-cross-origin"
|
|
90266
|
+
allow="accelerometer; encrypted-media; gyroscope; picture-in-picture"
|
|
90267
|
+
allowfullscreen
|
|
90268
|
+
loading="lazy"
|
|
90269
|
+
></iframe>
|
|
90270
|
+
</div>
|
|
90271
|
+
} @else {
|
|
90272
|
+
<div class="val-video-player__state">
|
|
90273
|
+
<div class="val-video-player__overlay">
|
|
90274
|
+
<span>{{ t('unsupportedLink') }}</span>
|
|
90275
|
+
</div>
|
|
90276
|
+
</div>
|
|
90277
|
+
}
|
|
90278
|
+
}
|
|
90279
|
+
}
|
|
90280
|
+
`, isInline: true, styles: [":host{display:block}.val-video-player__video{display:block;width:100%;max-height:70vh;border-radius:12px;background:#000}.val-video-player__embed-wrap{position:relative;width:100%;padding-top:56.25%;border-radius:12px;overflow:hidden;background:#000}.val-video-player__embed{position:absolute;inset:0;width:100%;height:100%;border:0}.val-video-player__state{position:relative;width:100%;aspect-ratio:16 / 9;border-radius:12px;overflow:hidden;background:var(--ion-color-light, rgba(0, 0, 0, .06));display:flex;align-items:flex-end}.val-video-player__poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}.val-video-player__overlay{position:relative;z-index:1;display:flex;flex-direction:column;gap:4px;width:100%;padding:14px 16px;color:var(--ion-text-color, #000);background:linear-gradient(to top,rgba(0,0,0,.08),transparent)}.val-video-player__state--error .val-video-player__overlay{color:var(--ion-color-danger, #eb445a)}.val-video-player__overlay strong{font-size:.9375rem}.val-video-player__overlay span{font-size:.8125rem;opacity:.85}.val-video-player__spinner{width:18px;height:18px;border-radius:50%;border:2px solid rgba(127,127,127,.35);border-top-color:var(--ion-color-dark, #313131);animation:val-video-player-spin .8s linear infinite}@keyframes val-video-player-spin{to{transform:rotate(360deg)}}\n"] }); }
|
|
90281
|
+
}
|
|
90282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VideoPlayerComponent, decorators: [{
|
|
90283
|
+
type: Component,
|
|
90284
|
+
args: [{ selector: 'val-video-player', standalone: true, imports: [], template: `
|
|
90285
|
+
@if (asset(); as v) {
|
|
90286
|
+
@if (v.source === 'upload') {
|
|
90287
|
+
@if (v.status === 'ready' && v.url) {
|
|
90288
|
+
<video
|
|
90289
|
+
class="val-video-player__video"
|
|
90290
|
+
[src]="v.url"
|
|
90291
|
+
[poster]="v.thumbnail || undefined"
|
|
90292
|
+
controls
|
|
90293
|
+
preload="none"
|
|
90294
|
+
playsinline
|
|
90295
|
+
></video>
|
|
90296
|
+
} @else if (v.status === 'rejected' || v.status === 'failed') {
|
|
90297
|
+
<div class="val-video-player__state val-video-player__state--error">
|
|
90298
|
+
@if (v.thumbnail && !thumbFailed()) {
|
|
90299
|
+
<img
|
|
90300
|
+
class="val-video-player__poster"
|
|
90301
|
+
[src]="v.thumbnail"
|
|
90302
|
+
alt=""
|
|
90303
|
+
loading="lazy"
|
|
90304
|
+
(error)="thumbFailed.set(true)"
|
|
90305
|
+
/>
|
|
90306
|
+
}
|
|
90307
|
+
<div class="val-video-player__overlay">
|
|
90308
|
+
<strong>{{ v.status === 'rejected' ? t('rejectedTitle') : t('failedTitle') }}</strong>
|
|
90309
|
+
@if (v.failReason) {
|
|
90310
|
+
<span>{{ v.failReason }}</span>
|
|
90311
|
+
}
|
|
90312
|
+
</div>
|
|
90313
|
+
</div>
|
|
90314
|
+
} @else {
|
|
90315
|
+
<!-- uploading | processing -->
|
|
90316
|
+
<div class="val-video-player__state" aria-live="polite">
|
|
90317
|
+
@if (v.thumbnail && !thumbFailed()) {
|
|
90318
|
+
<img
|
|
90319
|
+
class="val-video-player__poster"
|
|
90320
|
+
[src]="v.thumbnail"
|
|
90321
|
+
alt=""
|
|
90322
|
+
loading="lazy"
|
|
90323
|
+
(error)="thumbFailed.set(true)"
|
|
90324
|
+
/>
|
|
90325
|
+
}
|
|
90326
|
+
<div class="val-video-player__overlay">
|
|
90327
|
+
<span class="val-video-player__spinner" aria-hidden="true"></span>
|
|
90328
|
+
<strong>{{ v.status === 'uploading' ? t('uploadingTitle') : t('processingTitle') }}</strong>
|
|
90329
|
+
<span>{{ v.status === 'uploading' ? t('uploadingBody') : t('processingBody') }}</span>
|
|
90330
|
+
</div>
|
|
90331
|
+
</div>
|
|
90332
|
+
}
|
|
90333
|
+
} @else {
|
|
90334
|
+
<!-- source: link -->
|
|
90335
|
+
@if (embedUrl(); as src) {
|
|
90336
|
+
<div class="val-video-player__embed-wrap">
|
|
90337
|
+
<iframe
|
|
90338
|
+
class="val-video-player__embed"
|
|
90339
|
+
[src]="src"
|
|
90340
|
+
title="video"
|
|
90341
|
+
frameborder="0"
|
|
90342
|
+
referrerpolicy="strict-origin-when-cross-origin"
|
|
90343
|
+
allow="accelerometer; encrypted-media; gyroscope; picture-in-picture"
|
|
90344
|
+
allowfullscreen
|
|
90345
|
+
loading="lazy"
|
|
90346
|
+
></iframe>
|
|
90347
|
+
</div>
|
|
90348
|
+
} @else {
|
|
90349
|
+
<div class="val-video-player__state">
|
|
90350
|
+
<div class="val-video-player__overlay">
|
|
90351
|
+
<span>{{ t('unsupportedLink') }}</span>
|
|
90352
|
+
</div>
|
|
90353
|
+
</div>
|
|
90354
|
+
}
|
|
90355
|
+
}
|
|
90356
|
+
}
|
|
90357
|
+
`, styles: [":host{display:block}.val-video-player__video{display:block;width:100%;max-height:70vh;border-radius:12px;background:#000}.val-video-player__embed-wrap{position:relative;width:100%;padding-top:56.25%;border-radius:12px;overflow:hidden;background:#000}.val-video-player__embed{position:absolute;inset:0;width:100%;height:100%;border:0}.val-video-player__state{position:relative;width:100%;aspect-ratio:16 / 9;border-radius:12px;overflow:hidden;background:var(--ion-color-light, rgba(0, 0, 0, .06));display:flex;align-items:flex-end}.val-video-player__poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}.val-video-player__overlay{position:relative;z-index:1;display:flex;flex-direction:column;gap:4px;width:100%;padding:14px 16px;color:var(--ion-text-color, #000);background:linear-gradient(to top,rgba(0,0,0,.08),transparent)}.val-video-player__state--error .val-video-player__overlay{color:var(--ion-color-danger, #eb445a)}.val-video-player__overlay strong{font-size:.9375rem}.val-video-player__overlay span{font-size:.8125rem;opacity:.85}.val-video-player__spinner{width:18px;height:18px;border-radius:50%;border:2px solid rgba(127,127,127,.35);border-top-color:var(--ion-color-dark, #313131);animation:val-video-player-spin .8s linear infinite}@keyframes val-video-player-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
90358
|
+
}], ctorParameters: () => [] });
|
|
90359
|
+
|
|
90360
|
+
/**
|
|
90361
|
+
* Tipos de `val-video-player` (ADR-087 — video como servicio de plataforma).
|
|
90362
|
+
*
|
|
90363
|
+
* Espejo agnóstico al dominio de `content.VideoAsset` (backend Go,
|
|
90364
|
+
* `backend/go/services/content/video.go`) — mismos nombres de campo en
|
|
90365
|
+
* camelCase. Cualquier app pasa acá el `VideoAsset` que le devuelve SU propio
|
|
90366
|
+
* backend (sermón en Eklesee, receta en Okhelia, animal en Chesed, artículo de
|
|
90367
|
+
* ayuda) con un mapeo trivial; el componente no conoce ni le importa de qué
|
|
90368
|
+
* dominio viene.
|
|
90369
|
+
*/
|
|
90370
|
+
|
|
89864
90371
|
/*
|
|
89865
90372
|
* Public API Surface of valtech-components
|
|
89866
90373
|
*/
|
|
@@ -89870,5 +90377,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
89870
90377
|
* Generated bundle index. Do not edit.
|
|
89871
90378
|
*/
|
|
89872
90379
|
|
|
89873
|
-
export { ACCESS_REQUEST_TYPE, ACCESS_REQUEST_VIEW_I18N, 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, AccessControlService, AccessRequestViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimalCardComponent, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BackButtonComponent, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, BubbleBlitzGameComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CanAccessDirective, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, ChatComposerComponent, ChatInputComponent, ChatWindowComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ChipSelectComponent, ClientTelemetryService, CodeDisplayComponent, CodeValidatorComponent, CollectionsService, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CommsPreferencesService, CommsPreferencesSettingsComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ConfirmationDialogV2Component, 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, DangerSectionComponent, 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, EXPECTED_NOT_FOUND, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, EntityFeedService, EntradaSerializada, ExpandableTextComponent, ExternalBrowserService, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeatureControlService, FeatureGuardDirective, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FieldOptionsEditorComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FolderTabsComponent, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSchemaBuilderService, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GAME_AVATAR_CATALOG_SIZE_PER_STYLE, GameAvatarComponent, GameProfileService, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, GroupMembersComponent, GroupPickerComponent, GroupsService, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandleService, 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, METADATA_LIST_DEFAULTS, META_SCHEMA_VERSION, METRIC_CARD_DEFAULTS, MINI_GAMES_I18N, 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, MetadataListComponent, MeteringService, MetricCardComponent, MfaModalComponent, MiniGameCalloutComponent, MiniGamePlayerProfileService, MiniGameScorePopComponent, MiniGamesMenuComponent, ModalLayoutComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NoticeComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberPickerComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OperationReferenceComponent, OptionCardsComponent, OptionSheetComponent, OptionSheetService, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PERSONA_CONFIG, PLATFORM_CONFIGS, POST_UPDATE_TS_KEY, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PdfService, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PersonaService, PhoneDisplayComponent, PhoneFormatService, PhoneInputComponent, PickerV2Component, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PricingTableComponent, ProcessLinksPipe, ProfileCardComponent, ProfileContentComponent, ProfileModalComponent, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrBrandValidationError, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RbacService, ReactionBarComponent, ReactionsService, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestReviewPanelComponent, RequestService, RetroAudioService, RightsFooterComponent, RoleManagerComponent, 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, SelectSearchPickerModalComponent, SessionListModalComponent, SessionService, SessionTransitionOverlayComponent, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimonGameComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SupportTicketCtaComponent, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeSelectorComponent, 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_ACCESS_FEATURES, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_CHAT_CONFIG, VALTECH_COLLECTIONS_CONFIG, VALTECH_COMMS_PREFERENCES_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_COPYRIGHT_TEMPLATE, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DIAGRAMS, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_LEGAL_ENTITY, VALTECH_MENU_I18N, 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, VAL_REGISTERED_ICONS, VERSION, ValCommentThreadComponent, ValQuotaWarningComponent, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, WorkflowService, accessGuard, accessGuardFromRoute, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildPlatformMenu, buildSettingsCards, buildSideNavItemsFromBottomNav, button, canSubmitRequestType, classifyChip, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGameAvatarCatalog, createGameAvatarProps, createGlowCardProps, createInitialDatasetState, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, datasetPageFromLegacyCursor, defaultQrBrand, docs, errorLoggingInterceptor, evaluateValtechAccess, extractPathParams, firmaDeSesionDeCustomToken, formatClockTime, formatDateSeparator, formatRelativeTime, gameAvatarCatalogEntryToMetadata, gameAvatarDataUri, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isKnownRoute, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, providePersona, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccessFeatures, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechChat, provideValtechCollections, provideValtechCommsPreferences, provideValtechContent, provideValtechDebugConsole, provideValtechDiagrams, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationClickActions, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechReactions, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, qrContrastRatio, qrErrorCorrectionFor, query, rbacGuard, renderGameAvatarSvg, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveCopyrightTemplate, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, roleOf, selectableRequestTypes, storagePaths, suggestEmailFix, superAdminGuard, supportedGameAvatarStyles, toArticle, validateQrBrand, validateRoutes };
|
|
90380
|
+
export { ACCESS_REQUEST_TYPE, ACCESS_REQUEST_VIEW_I18N, 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, AccessControlService, AccessRequestViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimalCardComponent, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BackButtonComponent, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, BubbleBlitzGameComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CanAccessDirective, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, ChatComposerComponent, ChatInputComponent, ChatWindowComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ChipSelectComponent, ClientTelemetryService, CodeDisplayComponent, CodeValidatorComponent, CollectionsService, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CommsPreferencesService, CommsPreferencesSettingsComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ConfirmationDialogV2Component, 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, DangerSectionComponent, 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, EXPECTED_NOT_FOUND, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, EntityFeedService, EntradaSerializada, ExpandableTextComponent, ExternalBrowserService, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeatureControlService, FeatureGuardDirective, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FieldOptionsEditorComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FolderTabsComponent, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSchemaBuilderService, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GAME_AVATAR_CATALOG_SIZE_PER_STYLE, GameAvatarComponent, GameProfileService, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, GroupMembersComponent, GroupPickerComponent, GroupsService, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandleService, 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, METADATA_LIST_DEFAULTS, META_SCHEMA_VERSION, METRIC_CARD_DEFAULTS, MINI_GAMES_I18N, 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, MetadataListComponent, MeteringService, MetricCardComponent, MfaModalComponent, MiniGameCalloutComponent, MiniGamePlayerProfileService, MiniGameScorePopComponent, MiniGamesMenuComponent, ModalLayoutComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NoticeComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberPickerComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OperationReferenceComponent, OptionCardsComponent, OptionSheetComponent, OptionSheetService, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PERSONA_CONFIG, PLATFORM_CONFIGS, POST_UPDATE_TS_KEY, PageBlockComponent, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PdfService, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PersonaService, PhoneDisplayComponent, PhoneFormatService, PhoneInputComponent, PickerV2Component, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PricingTableComponent, ProcessLinksPipe, ProfileCardComponent, ProfileContentComponent, ProfileModalComponent, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrBrandValidationError, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RbacService, ReactionBarComponent, ReactionsService, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestReviewPanelComponent, RequestService, RetroAudioService, RightsFooterComponent, RoleManagerComponent, 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, SelectSearchPickerModalComponent, SessionListModalComponent, SessionService, SessionTransitionOverlayComponent, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimonGameComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SupportTicketCtaComponent, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeSelectorComponent, 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_ACCESS_FEATURES, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_CHAT_CONFIG, VALTECH_COLLECTIONS_CONFIG, VALTECH_COMMS_PREFERENCES_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_COPYRIGHT_TEMPLATE, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DIAGRAMS, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_LEGAL_ENTITY, VALTECH_MENU_I18N, 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, VAL_REGISTERED_ICONS, VERSION, ValCommentThreadComponent, ValQuotaWarningComponent, ValtechErrorService, VerifyViewComponent, VideoPlayerComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, WorkflowService, accessGuard, accessGuardFromRoute, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildPlatformMenu, buildSettingsCards, buildSideNavItemsFromBottomNav, button, canSubmitRequestType, classifyChip, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGameAvatarCatalog, createGameAvatarProps, createGlowCardProps, createInitialDatasetState, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, datasetPageFromLegacyCursor, defaultQrBrand, docs, errorLoggingInterceptor, evaluateValtechAccess, extractPathParams, firmaDeSesionDeCustomToken, formatClockTime, formatDateSeparator, formatRelativeTime, gameAvatarCatalogEntryToMetadata, gameAvatarDataUri, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isKnownRoute, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, providePersona, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccessFeatures, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechChat, provideValtechCollections, provideValtechCommsPreferences, provideValtechContent, provideValtechDebugConsole, provideValtechDiagrams, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationClickActions, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechReactions, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, qrContrastRatio, qrErrorCorrectionFor, query, rbacGuard, renderGameAvatarSvg, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveCopyrightTemplate, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, roleOf, selectableRequestTypes, storagePaths, suggestEmailFix, superAdminGuard, supportedGameAvatarStyles, toArticle, validateQrBrand, validateRoutes };
|
|
89874
90381
|
//# sourceMappingURL=valtech-components.mjs.map
|