valtech-components 4.0.971 → 4.0.972
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/rich-editor/article-to-tiptap.mjs +110 -0
- package/esm2022/lib/components/organisms/rich-editor/rich-editor.component.mjs +287 -0
- package/esm2022/lib/components/organisms/rich-editor/rich-editor.i18n.mjs +27 -0
- package/esm2022/lib/components/organisms/rich-editor/tiptap-to-article.mjs +136 -0
- package/esm2022/lib/components/organisms/rich-editor/types.mjs +2 -0
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/valtech-components.mjs +553 -3
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/rich-editor/article-to-tiptap.d.ts +3 -0
- package/lib/components/organisms/rich-editor/rich-editor.component.d.ts +46 -0
- package/lib/components/organisms/rich-editor/rich-editor.i18n.d.ts +26 -0
- package/lib/components/organisms/rich-editor/tiptap-to-article.d.ts +38 -0
- package/lib/components/organisms/rich-editor/types.d.ts +21 -0
- package/lib/version.d.ts +1 -1
- package/package.json +5 -1
- package/public-api.d.ts +4 -0
|
@@ -27,7 +27,7 @@ import * as i1$5 from '@ionic/angular/standalone';
|
|
|
27
27
|
import { IonText, IonHeader, IonToolbar, IonButtons, IonButton, IonContent, IonFooter, IonSpinner, AlertController, IonAvatar, IonCard, IonIcon, IonModal, IonTitle, IonProgressBar, IonSkeletonText, IonFab, IonFabButton, IonFabList, IonLabel, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonRadio, IonRadioGroup, IonTextarea, IonDatetime, IonInput, IonSelect, IonSelectOption, IonPopover, IonList, IonItem, IonChip, IonRange, IonSearchbar, IonSegment, IonSegmentButton, IonToggle, IonRippleEffect, IonAccordion, IonAccordionGroup, IonTabBar, IonTabButton, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonInfiniteScroll, IonInfiniteScrollContent, IonNote, IonDatetimeButton, ToastController as ToastController$1, IonCol, IonRow, IonRefresher, IonRefresherContent, IonMenuButton, IonListHeader, IonGrid, MenuController, IonMenu, IonMenuToggle, IonSplitPane, IonAlert } from '@ionic/angular/standalone';
|
|
28
28
|
import { Browser } from '@capacitor/browser';
|
|
29
29
|
import { addIcons } from 'ionicons';
|
|
30
|
-
import { addOutline, addCircleOutline, alertOutline, alertCircleOutline, arrowBackOutline, arrowForwardOutline, arrowDownOutline, settings, settingsOutline, checkmarkCircleOutline, ellipsisHorizontalOutline, notifications, notificationsOutline, openOutline, closeOutline, chatbubblesOutline, shareOutline, heart, heartOutline, home, homeOutline, eyeOffOutline, eyeOutline, scanOutline, chevronDownOutline, chevronForwardOutline, chevronBackCircleOutline, chevronForwardCircleOutline, helpCircleOutline, logInOutline, chatbubbleEllipsesOutline, listOutline, folderOutline, pricetagOutline, starOutline, gameControllerOutline, checkmarkOutline, clipboardOutline, copyOutline, filterOutline, locationOutline, calendarOutline, businessOutline, logoTwitter, logoInstagram, logoLinkedin, logoYoutube, logoTiktok, logoFacebook, logoGoogle, mailOutline, qrCodeOutline, sendOutline, createOutline, trashOutline, playOutline, peopleOutline, phonePortraitOutline, refreshOutline, documentTextOutline, lockClosedOutline, cloudUploadOutline, textOutline, informationCircleOutline, logoNpm, removeOutline, optionsOutline, personOutline, shieldCheckmarkOutline, keyOutline, desktopOutline, logOutOutline, cloudDownloadOutline, cloudOutline, gitBranchOutline, layersOutline, serverOutline, warningOutline, bulbOutline, lockOpenOutline, diamondOutline, newspaperOutline, add, close, share, create, trash, star, camera, mic, send, downloadOutline, reorderThreeOutline, chevronDown, language, globeOutline, checkmark, sunnyOutline, moonOutline, list, grid, apps, menu, search, person, helpCircle, informationCircle, documentText, mail, calendar, folder, chevronForward, ellipsisHorizontal, chevronBack, playBack, playForward, ellipse, starHalf, heartHalf, checkmarkCircle, timeOutline, flag, trendingUp, trendingDown, remove, analytics, people, cash, cart, eye, chatbubbleOutline, thumbsUpOutline, thumbsUp, happyOutline, happy, sadOutline, sad, chevronUp, pin, pencil, callOutline, logoWhatsapp, paperPlaneOutline, chevronDownCircleOutline, closeCircle, alertCircle, logoApple, logoMicrosoft, linkOutline, unlinkOutline, attachOutline, cameraOutline, closeCircleOutline, documentOutline, imageOutline, cloudOfflineOutline, printOutline, chevronBackOutline, swapVerticalOutline, chevronUpOutline, searchOutline, cartOutline, chatbubble, compass, compassOutline, gridOutline, documents, documentsOutline, statsChart, statsChartOutline, laptopOutline, swapHorizontalOutline, codeSlashOutline, appsOutline, notificationsOffOutline, alarmOutline, chatboxEllipsesOutline, checkmarkDoneOutline, cogOutline, shareSocialOutline, sparklesOutline, trophyOutline, musicalNotesOutline, volumeHighOutline, volumeMuteOutline, menuOutline, flashlight, flashlightOutline, stopCircleOutline, videocamOffOutline, keypadOutline, checkmarkDone, arrowUndoOutline, micOutline, pulseOutline, arrowUpOutline } from 'ionicons/icons';
|
|
30
|
+
import { addOutline, addCircleOutline, alertOutline, alertCircleOutline, arrowBackOutline, arrowForwardOutline, arrowDownOutline, settings, settingsOutline, checkmarkCircleOutline, ellipsisHorizontalOutline, notifications, notificationsOutline, openOutline, closeOutline, chatbubblesOutline, shareOutline, heart, heartOutline, home, homeOutline, eyeOffOutline, eyeOutline, scanOutline, chevronDownOutline, chevronForwardOutline, chevronBackCircleOutline, chevronForwardCircleOutline, helpCircleOutline, logInOutline, chatbubbleEllipsesOutline, listOutline, folderOutline, pricetagOutline, starOutline, gameControllerOutline, checkmarkOutline, clipboardOutline, copyOutline, filterOutline, locationOutline, calendarOutline, businessOutline, logoTwitter, logoInstagram, logoLinkedin, logoYoutube, logoTiktok, logoFacebook, logoGoogle, mailOutline, qrCodeOutline, sendOutline, createOutline, trashOutline, playOutline, peopleOutline, phonePortraitOutline, refreshOutline, documentTextOutline, lockClosedOutline, cloudUploadOutline, textOutline, informationCircleOutline, logoNpm, removeOutline, optionsOutline, personOutline, shieldCheckmarkOutline, keyOutline, desktopOutline, logOutOutline, cloudDownloadOutline, cloudOutline, gitBranchOutline, layersOutline, serverOutline, warningOutline, bulbOutline, lockOpenOutline, diamondOutline, newspaperOutline, add, close, share, create, trash, star, camera, mic, send, downloadOutline, reorderThreeOutline, chevronDown, language, globeOutline, checkmark, sunnyOutline, moonOutline, list, grid, apps, menu, search, person, helpCircle, informationCircle, documentText, mail, calendar, folder, chevronForward, ellipsisHorizontal, chevronBack, playBack, playForward, ellipse, starHalf, heartHalf, checkmarkCircle, timeOutline, flag, trendingUp, trendingDown, remove, analytics, people, cash, cart, eye, chatbubbleOutline, thumbsUpOutline, thumbsUp, happyOutline, happy, sadOutline, sad, chevronUp, pin, pencil, callOutline, logoWhatsapp, paperPlaneOutline, chevronDownCircleOutline, closeCircle, alertCircle, logoApple, logoMicrosoft, linkOutline, unlinkOutline, attachOutline, cameraOutline, closeCircleOutline, documentOutline, imageOutline, cloudOfflineOutline, chatboxOutline, printOutline, chevronBackOutline, swapVerticalOutline, chevronUpOutline, searchOutline, cartOutline, chatbubble, compass, compassOutline, gridOutline, documents, documentsOutline, statsChart, statsChartOutline, laptopOutline, swapHorizontalOutline, codeSlashOutline, appsOutline, notificationsOffOutline, alarmOutline, chatboxEllipsesOutline, checkmarkDoneOutline, cogOutline, shareSocialOutline, sparklesOutline, trophyOutline, musicalNotesOutline, volumeHighOutline, volumeMuteOutline, menuOutline, flashlight, flashlightOutline, stopCircleOutline, videocamOffOutline, keypadOutline, checkmarkDone, arrowUndoOutline, micOutline, pulseOutline, arrowUpOutline } from 'ionicons/icons';
|
|
31
31
|
import * as i1$7 from '@angular/platform-browser';
|
|
32
32
|
import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
|
|
33
33
|
import QRCodeStyling from 'qr-code-styling';
|
|
@@ -57,6 +57,9 @@ import { Capacitor } from '@capacitor/core';
|
|
|
57
57
|
import { Calendar } from 'vanilla-calendar-pro';
|
|
58
58
|
import Compressor from 'compressorjs';
|
|
59
59
|
import { ImageCropperComponent } from 'ngx-image-cropper';
|
|
60
|
+
import { Editor } from '@tiptap/core';
|
|
61
|
+
import StarterKit from '@tiptap/starter-kit';
|
|
62
|
+
import Image$1 from '@tiptap/extension-image';
|
|
60
63
|
import { trigger, transition, style, animate } from '@angular/animations';
|
|
61
64
|
import 'prismjs/components/prism-scss';
|
|
62
65
|
import 'prismjs/components/prism-json';
|
|
@@ -67,7 +70,7 @@ import fixWebmDuration from 'fix-webm-duration';
|
|
|
67
70
|
* Current version of valtech-components.
|
|
68
71
|
* This is automatically updated during the publish process.
|
|
69
72
|
*/
|
|
70
|
-
const VERSION = '4.0.
|
|
73
|
+
const VERSION = '4.0.972';
|
|
71
74
|
|
|
72
75
|
function evaluateValtechAccess(rule, context, features = {}, visitedFeatures = new Set()) {
|
|
73
76
|
if (rule == null)
|
|
@@ -39403,6 +39406,553 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
39403
39406
|
type: Input
|
|
39404
39407
|
}] } });
|
|
39405
39408
|
|
|
39409
|
+
/**
|
|
39410
|
+
* Defaults i18n (es/en) del `val-rich-editor`. Auto-registrados en el
|
|
39411
|
+
* constructor (namespace `RichEditor`) — el consumer nunca los registra.
|
|
39412
|
+
*/
|
|
39413
|
+
const RICH_EDITOR_I18N = {
|
|
39414
|
+
es: {
|
|
39415
|
+
bold: 'Negrita',
|
|
39416
|
+
italic: 'Cursiva',
|
|
39417
|
+
heading2: 'Título',
|
|
39418
|
+
heading3: 'Subtítulo',
|
|
39419
|
+
bulletList: 'Lista con viñetas',
|
|
39420
|
+
orderedList: 'Lista numerada',
|
|
39421
|
+
quote: 'Cita',
|
|
39422
|
+
separator: 'Separador',
|
|
39423
|
+
},
|
|
39424
|
+
en: {
|
|
39425
|
+
bold: 'Bold',
|
|
39426
|
+
italic: 'Italic',
|
|
39427
|
+
heading2: 'Heading',
|
|
39428
|
+
heading3: 'Subheading',
|
|
39429
|
+
bulletList: 'Bullet list',
|
|
39430
|
+
orderedList: 'Numbered list',
|
|
39431
|
+
quote: 'Quote',
|
|
39432
|
+
separator: 'Separator',
|
|
39433
|
+
},
|
|
39434
|
+
};
|
|
39435
|
+
|
|
39436
|
+
/** Texto inline con marks bold/italic convertidas a <strong>/<em> — mismo
|
|
39437
|
+
* criterio que `allowPartialBold` en ArticleTextElement/ArticleNoteElement:
|
|
39438
|
+
* el elemento consumer debe setear `allowPartialBold: true` para que se
|
|
39439
|
+
* rendericen (si no, val-text/val-note escapan el HTML a propósito). */
|
|
39440
|
+
function inlineText(node) {
|
|
39441
|
+
if (node.type === 'text') {
|
|
39442
|
+
let text = node.text ?? '';
|
|
39443
|
+
for (const mark of node.marks ?? []) {
|
|
39444
|
+
if (mark.type === 'bold')
|
|
39445
|
+
text = `<strong>${text}</strong>`;
|
|
39446
|
+
if (mark.type === 'italic')
|
|
39447
|
+
text = `<em>${text}</em>`;
|
|
39448
|
+
if (mark.type === 'code')
|
|
39449
|
+
text = `<code>${text}</code>`;
|
|
39450
|
+
}
|
|
39451
|
+
return text;
|
|
39452
|
+
}
|
|
39453
|
+
return (node.content ?? []).map(inlineText).join('');
|
|
39454
|
+
}
|
|
39455
|
+
function hasBold(node) {
|
|
39456
|
+
if (node.type === 'text') {
|
|
39457
|
+
return (node.marks ?? []).some(m => m.type === 'bold' || m.type === 'code');
|
|
39458
|
+
}
|
|
39459
|
+
return (node.content ?? []).some(hasBold);
|
|
39460
|
+
}
|
|
39461
|
+
function paragraphText(node) {
|
|
39462
|
+
return (node.content ?? []).map(inlineText).join('');
|
|
39463
|
+
}
|
|
39464
|
+
function listItemsFrom(node) {
|
|
39465
|
+
return (node.content ?? []).map(li => ({
|
|
39466
|
+
text: (li.content ?? []).map(paragraphText).join(' '),
|
|
39467
|
+
}));
|
|
39468
|
+
}
|
|
39469
|
+
/**
|
|
39470
|
+
* Convierte un doc de TipTap a `ArticleElement[]`. Función pura — sin
|
|
39471
|
+
* Angular DI, usable también desde Node (mismo criterio que
|
|
39472
|
+
* `parseMarkdownArticle`).
|
|
39473
|
+
*/
|
|
39474
|
+
function tiptapDocToArticleElements(doc) {
|
|
39475
|
+
const elements = [];
|
|
39476
|
+
for (const node of doc.content ?? []) {
|
|
39477
|
+
switch (node.type) {
|
|
39478
|
+
case 'heading': {
|
|
39479
|
+
const level = node.attrs?.['level'] ?? 2;
|
|
39480
|
+
elements.push({
|
|
39481
|
+
type: level <= 2 ? 'title' : 'subtitle',
|
|
39482
|
+
props: {
|
|
39483
|
+
content: paragraphText(node),
|
|
39484
|
+
size: level === 1 ? 'large' : level === 2 ? 'medium' : 'small',
|
|
39485
|
+
color: 'dark',
|
|
39486
|
+
bold: true,
|
|
39487
|
+
},
|
|
39488
|
+
});
|
|
39489
|
+
break;
|
|
39490
|
+
}
|
|
39491
|
+
case 'paragraph': {
|
|
39492
|
+
const content = paragraphText(node);
|
|
39493
|
+
if (!content.trim())
|
|
39494
|
+
break; // párrafo vacío (Enter suelto) — no genera elemento
|
|
39495
|
+
elements.push({
|
|
39496
|
+
type: 'text',
|
|
39497
|
+
props: {
|
|
39498
|
+
content,
|
|
39499
|
+
size: 'medium',
|
|
39500
|
+
color: 'dark',
|
|
39501
|
+
bold: false,
|
|
39502
|
+
allowPartialBold: hasBold(node),
|
|
39503
|
+
},
|
|
39504
|
+
});
|
|
39505
|
+
break;
|
|
39506
|
+
}
|
|
39507
|
+
case 'bulletList':
|
|
39508
|
+
case 'orderedList': {
|
|
39509
|
+
elements.push({
|
|
39510
|
+
type: 'list',
|
|
39511
|
+
props: {
|
|
39512
|
+
items: listItemsFrom(node),
|
|
39513
|
+
listType: node.type === 'orderedList' ? 'ordered' : 'unordered',
|
|
39514
|
+
},
|
|
39515
|
+
});
|
|
39516
|
+
break;
|
|
39517
|
+
}
|
|
39518
|
+
case 'blockquote': {
|
|
39519
|
+
elements.push({
|
|
39520
|
+
type: 'quote',
|
|
39521
|
+
props: {
|
|
39522
|
+
content: (node.content ?? []).map(paragraphText).join(' '),
|
|
39523
|
+
size: 'medium',
|
|
39524
|
+
color: 'dark',
|
|
39525
|
+
bold: false,
|
|
39526
|
+
showQuoteMark: true,
|
|
39527
|
+
},
|
|
39528
|
+
});
|
|
39529
|
+
break;
|
|
39530
|
+
}
|
|
39531
|
+
case 'codeBlock': {
|
|
39532
|
+
elements.push({
|
|
39533
|
+
type: 'code',
|
|
39534
|
+
props: {
|
|
39535
|
+
code: (node.content ?? []).map(n => n.text ?? '').join('\n'),
|
|
39536
|
+
language: node.attrs?.['language'] ?? undefined,
|
|
39537
|
+
},
|
|
39538
|
+
});
|
|
39539
|
+
break;
|
|
39540
|
+
}
|
|
39541
|
+
case 'horizontalRule': {
|
|
39542
|
+
elements.push({ type: 'separator', props: { style: 'line' } });
|
|
39543
|
+
break;
|
|
39544
|
+
}
|
|
39545
|
+
case 'image': {
|
|
39546
|
+
const src = node.attrs?.['src'] ?? '';
|
|
39547
|
+
if (!src)
|
|
39548
|
+
break; // sin src no hay nada que renderizar
|
|
39549
|
+
elements.push({
|
|
39550
|
+
type: 'image',
|
|
39551
|
+
props: {
|
|
39552
|
+
src,
|
|
39553
|
+
alt: node.attrs?.['alt'] ?? '',
|
|
39554
|
+
title: node.attrs?.['title'] ?? undefined,
|
|
39555
|
+
},
|
|
39556
|
+
});
|
|
39557
|
+
break;
|
|
39558
|
+
}
|
|
39559
|
+
default:
|
|
39560
|
+
break; // nodo no soportado todavía — se omite, no rompe el resto
|
|
39561
|
+
}
|
|
39562
|
+
}
|
|
39563
|
+
return elements;
|
|
39564
|
+
}
|
|
39565
|
+
function tiptapDocToArticle(doc, config) {
|
|
39566
|
+
return {
|
|
39567
|
+
...config,
|
|
39568
|
+
elements: tiptapDocToArticleElements(doc),
|
|
39569
|
+
};
|
|
39570
|
+
}
|
|
39571
|
+
|
|
39572
|
+
/**
|
|
39573
|
+
* Conversión inversa de `tiptapDocToArticle` — hidrata `val-rich-editor` con
|
|
39574
|
+
* contenido ya guardado como `ArticleMetadata` (ej. una receta existente que
|
|
39575
|
+
* se vuelve a editar). No es un round-trip perfecto: `ArticleElement` cubre
|
|
39576
|
+
* tipos que TipTap no tiene nodo nativo para editar (`note`, `diagram`,
|
|
39577
|
+
* `command`, `highlight`, `button`, `video`, `custom`) — esos se degradan a
|
|
39578
|
+
* un párrafo de texto plano, editable pero sin su formato especial. Es
|
|
39579
|
+
* intencional: mejor mostrar el contenido (aunque simplificado) que perderlo
|
|
39580
|
+
* o que el editor rechace abrir el documento.
|
|
39581
|
+
*/
|
|
39582
|
+
const STRONG_OR_EM = /<(strong|b|em|i|code)>(.*?)<\/\1>/g;
|
|
39583
|
+
/** Extrae marks (bold/italic/code) de un string con <strong>/<em>/<code>
|
|
39584
|
+
* embebido — el inverso de `inlineText` en tiptap-to-article.ts. Simplifica
|
|
39585
|
+
* a un solo nivel de anidación (suficiente para lo que el editor produce). */
|
|
39586
|
+
function textToTiptapInline(html) {
|
|
39587
|
+
if (!html)
|
|
39588
|
+
return [];
|
|
39589
|
+
const nodes = [];
|
|
39590
|
+
let lastIndex = 0;
|
|
39591
|
+
STRONG_OR_EM.lastIndex = 0;
|
|
39592
|
+
let match;
|
|
39593
|
+
const markFor = (tag) => {
|
|
39594
|
+
if (tag === 'strong' || tag === 'b')
|
|
39595
|
+
return { type: 'bold' };
|
|
39596
|
+
if (tag === 'em' || tag === 'i')
|
|
39597
|
+
return { type: 'italic' };
|
|
39598
|
+
return { type: 'code' };
|
|
39599
|
+
};
|
|
39600
|
+
while ((match = STRONG_OR_EM.exec(html)) !== null) {
|
|
39601
|
+
if (match.index > lastIndex) {
|
|
39602
|
+
nodes.push({ type: 'text', text: html.slice(lastIndex, match.index) });
|
|
39603
|
+
}
|
|
39604
|
+
nodes.push({ type: 'text', text: match[2], marks: [markFor(match[1])] });
|
|
39605
|
+
lastIndex = match.index + match[0].length;
|
|
39606
|
+
}
|
|
39607
|
+
if (lastIndex < html.length) {
|
|
39608
|
+
nodes.push({ type: 'text', text: html.slice(lastIndex) });
|
|
39609
|
+
}
|
|
39610
|
+
return nodes.length ? nodes : [{ type: 'text', text: html }];
|
|
39611
|
+
}
|
|
39612
|
+
function paragraph(text) {
|
|
39613
|
+
return { type: 'paragraph', content: textToTiptapInline(text) };
|
|
39614
|
+
}
|
|
39615
|
+
function elementToTiptapNodes(el) {
|
|
39616
|
+
switch (el.type) {
|
|
39617
|
+
case 'title':
|
|
39618
|
+
case 'subtitle': {
|
|
39619
|
+
const level = el.type === 'title' ? (el.props.size === 'large' ? 1 : 2) : 3;
|
|
39620
|
+
return [
|
|
39621
|
+
{
|
|
39622
|
+
type: 'heading',
|
|
39623
|
+
attrs: { level },
|
|
39624
|
+
content: textToTiptapInline(el.props.content ?? ''),
|
|
39625
|
+
},
|
|
39626
|
+
];
|
|
39627
|
+
}
|
|
39628
|
+
case 'text':
|
|
39629
|
+
case 'paragraph':
|
|
39630
|
+
return [paragraph(el.props.content ?? '')];
|
|
39631
|
+
case 'list':
|
|
39632
|
+
return [
|
|
39633
|
+
{
|
|
39634
|
+
type: el.props.listType === 'ordered' ? 'orderedList' : 'bulletList',
|
|
39635
|
+
content: el.props.items.map(item => ({
|
|
39636
|
+
type: 'listItem',
|
|
39637
|
+
content: [paragraph(item.text)],
|
|
39638
|
+
})),
|
|
39639
|
+
},
|
|
39640
|
+
];
|
|
39641
|
+
case 'quote':
|
|
39642
|
+
return [
|
|
39643
|
+
{
|
|
39644
|
+
type: 'blockquote',
|
|
39645
|
+
content: [paragraph(el.props.content ?? '')],
|
|
39646
|
+
},
|
|
39647
|
+
];
|
|
39648
|
+
case 'code':
|
|
39649
|
+
return [
|
|
39650
|
+
{
|
|
39651
|
+
type: 'codeBlock',
|
|
39652
|
+
attrs: el.props.language ? { language: el.props.language } : undefined,
|
|
39653
|
+
content: el.props.code ? [{ type: 'text', text: el.props.code }] : [],
|
|
39654
|
+
},
|
|
39655
|
+
];
|
|
39656
|
+
case 'separator':
|
|
39657
|
+
return [{ type: 'horizontalRule' }];
|
|
39658
|
+
case 'image':
|
|
39659
|
+
return [
|
|
39660
|
+
{
|
|
39661
|
+
type: 'image',
|
|
39662
|
+
attrs: { src: el.props.src, alt: el.props.alt, title: el.props.title },
|
|
39663
|
+
},
|
|
39664
|
+
];
|
|
39665
|
+
// Sin nodo TipTap nativo — se degrada a párrafo de texto plano (ver
|
|
39666
|
+
// comentario del módulo). El contenido nunca se pierde, solo su formato.
|
|
39667
|
+
case 'note':
|
|
39668
|
+
return [paragraph(el.props.text ?? '')];
|
|
39669
|
+
case 'highlight':
|
|
39670
|
+
return [paragraph(el.props.content ?? '')];
|
|
39671
|
+
default:
|
|
39672
|
+
return [];
|
|
39673
|
+
}
|
|
39674
|
+
}
|
|
39675
|
+
function articleToTiptapDoc(article) {
|
|
39676
|
+
return {
|
|
39677
|
+
type: 'doc',
|
|
39678
|
+
content: article.elements.flatMap(elementToTiptapNodes),
|
|
39679
|
+
};
|
|
39680
|
+
}
|
|
39681
|
+
|
|
39682
|
+
// Íconos de la toolbar. B/I/H2/H3 no tienen ícono Ionicons dedicado — se
|
|
39683
|
+
// renderizan como texto ("B", "I", "H2", "H3") directo en el botón, mismo
|
|
39684
|
+
// criterio que un editor de texto rico convencional (Google Docs, Notion).
|
|
39685
|
+
addIcons({ listOutline, chatboxOutline, removeOutline });
|
|
39686
|
+
/**
|
|
39687
|
+
* val-rich-editor
|
|
39688
|
+
*
|
|
39689
|
+
* Organism: editor WYSIWYG reusable para toda la plataforma, sobre TipTap.
|
|
39690
|
+
* Emite `ArticleMetadata` — el mismo contrato que `val-article` renderiza,
|
|
39691
|
+
* que también producen Markdown (`parseMarkdownArticle`) y (a futuro) el
|
|
39692
|
+
* page builder. El consumer nunca toca TipTap directamente.
|
|
39693
|
+
*
|
|
39694
|
+
* Cobertura de la toolbar v1: negrita, cursiva, título (H2), subtítulo (H3),
|
|
39695
|
+
* lista con/sin viñetas, cita, separador, imagen. Ver `tiptap-to-article.ts`
|
|
39696
|
+
* para qué tipos de `ArticleElement` puede producir el editor hoy.
|
|
39697
|
+
*
|
|
39698
|
+
* @example
|
|
39699
|
+
* ```html
|
|
39700
|
+
* <val-rich-editor
|
|
39701
|
+
* [props]="{ initialValue: recipe.descriptionArticle, placeholder: 'Escribe la preparación...' }"
|
|
39702
|
+
* (articleChange)="onArticleChange($event)"
|
|
39703
|
+
* />
|
|
39704
|
+
* ```
|
|
39705
|
+
*/
|
|
39706
|
+
class RichEditorComponent {
|
|
39707
|
+
constructor() {
|
|
39708
|
+
this.props = {};
|
|
39709
|
+
this.articleChange = new EventEmitter();
|
|
39710
|
+
this.i18n = inject(I18nService);
|
|
39711
|
+
/** Se recalcula en cada `onUpdate`/`onSelectionUpdate` para reflejar el
|
|
39712
|
+
* mark/nodo activo bajo el cursor (ej. el botón "B" resaltado si el
|
|
39713
|
+
* cursor está dentro de texto en negrita). */
|
|
39714
|
+
this._toolbarTick = signal(0);
|
|
39715
|
+
this.toolbarButtons = signal([]);
|
|
39716
|
+
this.i18n.registerDefaults('RichEditor', RICH_EDITOR_I18N);
|
|
39717
|
+
}
|
|
39718
|
+
t(key) {
|
|
39719
|
+
return this.i18n.t(key, 'RichEditor');
|
|
39720
|
+
}
|
|
39721
|
+
ngAfterViewInit() {
|
|
39722
|
+
this.editor = new Editor({
|
|
39723
|
+
element: this.editorHost.nativeElement,
|
|
39724
|
+
extensions: [StarterKit, Image$1],
|
|
39725
|
+
editable: !this.props.disabled,
|
|
39726
|
+
content: this.props.initialValue
|
|
39727
|
+
? articleToTiptapDoc(this.props.initialValue)
|
|
39728
|
+
: '',
|
|
39729
|
+
editorProps: {
|
|
39730
|
+
attributes: {
|
|
39731
|
+
'data-placeholder': this.props.placeholder ?? '',
|
|
39732
|
+
},
|
|
39733
|
+
},
|
|
39734
|
+
onUpdate: ({ editor }) => {
|
|
39735
|
+
this.emitArticle(editor.getJSON());
|
|
39736
|
+
this.refreshToolbar();
|
|
39737
|
+
},
|
|
39738
|
+
onSelectionUpdate: () => this.refreshToolbar(),
|
|
39739
|
+
});
|
|
39740
|
+
this.refreshToolbar();
|
|
39741
|
+
}
|
|
39742
|
+
ngOnChanges(changes) {
|
|
39743
|
+
if (changes['props']?.currentValue && this.editor) {
|
|
39744
|
+
this.editor.setEditable(!this.props.disabled);
|
|
39745
|
+
}
|
|
39746
|
+
}
|
|
39747
|
+
emitArticle(doc) {
|
|
39748
|
+
this.articleChange.emit(tiptapDocToArticle(doc));
|
|
39749
|
+
}
|
|
39750
|
+
refreshToolbar() {
|
|
39751
|
+
const editor = this.editor;
|
|
39752
|
+
if (!editor)
|
|
39753
|
+
return;
|
|
39754
|
+
this.toolbarButtons.set([
|
|
39755
|
+
{
|
|
39756
|
+
token: 'bold',
|
|
39757
|
+
icon: '',
|
|
39758
|
+
label: this.t('bold'),
|
|
39759
|
+
isActive: editor.isActive('bold'),
|
|
39760
|
+
disabled: false,
|
|
39761
|
+
},
|
|
39762
|
+
{
|
|
39763
|
+
token: 'italic',
|
|
39764
|
+
icon: '',
|
|
39765
|
+
label: this.t('italic'),
|
|
39766
|
+
isActive: editor.isActive('italic'),
|
|
39767
|
+
disabled: false,
|
|
39768
|
+
},
|
|
39769
|
+
{
|
|
39770
|
+
token: 'heading2',
|
|
39771
|
+
icon: '',
|
|
39772
|
+
label: this.t('heading2'),
|
|
39773
|
+
isActive: editor.isActive('heading', { level: 2 }),
|
|
39774
|
+
disabled: false,
|
|
39775
|
+
},
|
|
39776
|
+
{
|
|
39777
|
+
token: 'heading3',
|
|
39778
|
+
icon: '',
|
|
39779
|
+
label: this.t('heading3'),
|
|
39780
|
+
isActive: editor.isActive('heading', { level: 3 }),
|
|
39781
|
+
disabled: false,
|
|
39782
|
+
},
|
|
39783
|
+
{
|
|
39784
|
+
token: 'bulletList',
|
|
39785
|
+
icon: 'list-outline',
|
|
39786
|
+
label: this.t('bulletList'),
|
|
39787
|
+
isActive: editor.isActive('bulletList'),
|
|
39788
|
+
disabled: false,
|
|
39789
|
+
},
|
|
39790
|
+
{
|
|
39791
|
+
token: 'orderedList',
|
|
39792
|
+
icon: 'list-outline',
|
|
39793
|
+
label: this.t('orderedList'),
|
|
39794
|
+
isActive: editor.isActive('orderedList'),
|
|
39795
|
+
disabled: false,
|
|
39796
|
+
},
|
|
39797
|
+
{
|
|
39798
|
+
token: 'quote',
|
|
39799
|
+
icon: 'chatbox-outline',
|
|
39800
|
+
label: this.t('quote'),
|
|
39801
|
+
isActive: editor.isActive('blockquote'),
|
|
39802
|
+
disabled: false,
|
|
39803
|
+
},
|
|
39804
|
+
{
|
|
39805
|
+
token: 'separator',
|
|
39806
|
+
icon: 'remove-outline',
|
|
39807
|
+
label: this.t('separator'),
|
|
39808
|
+
isActive: false,
|
|
39809
|
+
disabled: false,
|
|
39810
|
+
},
|
|
39811
|
+
]);
|
|
39812
|
+
}
|
|
39813
|
+
runCommand(token) {
|
|
39814
|
+
const editor = this.editor;
|
|
39815
|
+
if (!editor)
|
|
39816
|
+
return;
|
|
39817
|
+
const chain = editor.chain().focus();
|
|
39818
|
+
switch (token) {
|
|
39819
|
+
case 'bold':
|
|
39820
|
+
chain.toggleBold().run();
|
|
39821
|
+
break;
|
|
39822
|
+
case 'italic':
|
|
39823
|
+
chain.toggleItalic().run();
|
|
39824
|
+
break;
|
|
39825
|
+
case 'heading2':
|
|
39826
|
+
chain.toggleHeading({ level: 2 }).run();
|
|
39827
|
+
break;
|
|
39828
|
+
case 'heading3':
|
|
39829
|
+
chain.toggleHeading({ level: 3 }).run();
|
|
39830
|
+
break;
|
|
39831
|
+
case 'bulletList':
|
|
39832
|
+
chain.toggleBulletList().run();
|
|
39833
|
+
break;
|
|
39834
|
+
case 'orderedList':
|
|
39835
|
+
chain.toggleOrderedList().run();
|
|
39836
|
+
break;
|
|
39837
|
+
case 'quote':
|
|
39838
|
+
chain.toggleBlockquote().run();
|
|
39839
|
+
break;
|
|
39840
|
+
case 'separator':
|
|
39841
|
+
chain.setHorizontalRule().run();
|
|
39842
|
+
break;
|
|
39843
|
+
}
|
|
39844
|
+
this.refreshToolbar();
|
|
39845
|
+
}
|
|
39846
|
+
ngOnDestroy() {
|
|
39847
|
+
this.editor?.destroy();
|
|
39848
|
+
}
|
|
39849
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RichEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39850
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RichEditorComponent, isStandalone: true, selector: "val-rich-editor", inputs: { props: "props" }, outputs: { articleChange: "articleChange" }, viewQueries: [{ propertyName: "editorHost", first: true, predicate: ["editorHost"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
39851
|
+
<div class="rich-editor" [class.rich-editor--disabled]="props.disabled">
|
|
39852
|
+
@if (!props.disabled) {
|
|
39853
|
+
<div class="rich-editor__toolbar" role="toolbar">
|
|
39854
|
+
@for (btn of toolbarButtons(); track btn.token) {
|
|
39855
|
+
<ion-button
|
|
39856
|
+
fill="clear"
|
|
39857
|
+
size="small"
|
|
39858
|
+
[class.rich-editor__btn--active]="btn.isActive"
|
|
39859
|
+
[disabled]="btn.disabled"
|
|
39860
|
+
[attr.aria-label]="btn.label"
|
|
39861
|
+
[attr.aria-pressed]="btn.isActive"
|
|
39862
|
+
(click)="runCommand(btn.token)"
|
|
39863
|
+
>
|
|
39864
|
+
@switch (btn.token) {
|
|
39865
|
+
@case ('bold') {
|
|
39866
|
+
<strong>B</strong>
|
|
39867
|
+
}
|
|
39868
|
+
@case ('italic') {
|
|
39869
|
+
<em>I</em>
|
|
39870
|
+
}
|
|
39871
|
+
@case ('heading2') {
|
|
39872
|
+
<strong>H2</strong>
|
|
39873
|
+
}
|
|
39874
|
+
@case ('heading3') {
|
|
39875
|
+
<strong>H3</strong>
|
|
39876
|
+
}
|
|
39877
|
+
@case ('bulletList') {
|
|
39878
|
+
<ion-icon name="list-outline" slot="icon-only" />
|
|
39879
|
+
}
|
|
39880
|
+
@case ('orderedList') {
|
|
39881
|
+
<ion-icon name="list-outline" slot="icon-only" />
|
|
39882
|
+
}
|
|
39883
|
+
@case ('quote') {
|
|
39884
|
+
<ion-icon name="chatbox-outline" slot="icon-only" />
|
|
39885
|
+
}
|
|
39886
|
+
@case ('separator') {
|
|
39887
|
+
<ion-icon name="remove-outline" slot="icon-only" />
|
|
39888
|
+
}
|
|
39889
|
+
}
|
|
39890
|
+
</ion-button>
|
|
39891
|
+
}
|
|
39892
|
+
</div>
|
|
39893
|
+
}
|
|
39894
|
+
<div #editorHost class="rich-editor__surface"></div>
|
|
39895
|
+
</div>
|
|
39896
|
+
`, isInline: true, styles: [".rich-editor{display:flex;flex-direction:column;gap:8px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:8px;overflow:hidden}.rich-editor--disabled{opacity:.7}.rich-editor__toolbar{display:flex;flex-wrap:wrap;gap:2px;padding:6px 8px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-light, #f4f5f8)}.rich-editor__toolbar ion-button{--padding-start: 8px;--padding-end: 8px;margin:0;font-size:.8125rem;min-width:32px}.rich-editor__btn--active{--background: rgba(var(--ion-color-primary-rgb), .14);--color: var(--ion-color-primary);border-radius:6px}.rich-editor__surface{padding:12px 16px;min-height:160px}.rich-editor__surface ::ng-deep .ProseMirror{outline:none;min-height:140px;color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.5}.rich-editor__surface ::ng-deep .ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--ion-color-medium, #92949c);float:left;height:0;pointer-events:none}.rich-editor__surface ::ng-deep .ProseMirror p{margin:0 0 .75em}.rich-editor__surface ::ng-deep .ProseMirror h1,.rich-editor__surface ::ng-deep .ProseMirror h2,.rich-editor__surface ::ng-deep .ProseMirror h3{margin:0 0 .5em;color:var(--ion-text-color, #000)}.rich-editor__surface ::ng-deep .ProseMirror blockquote{margin:0 0 .75em;padding-left:12px;border-left:3px solid var(--ion-color-primary, #3880ff);color:var(--ion-color-medium, #92949c)}.rich-editor__surface ::ng-deep .ProseMirror ul,.rich-editor__surface ::ng-deep .ProseMirror ol{margin:0 0 .75em;padding-left:24px}.rich-editor__surface ::ng-deep .ProseMirror img{max-width:100%;border-radius:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
|
|
39897
|
+
}
|
|
39898
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RichEditorComponent, decorators: [{
|
|
39899
|
+
type: Component,
|
|
39900
|
+
args: [{ selector: 'val-rich-editor', standalone: true, imports: [CommonModule, IonButton, IonIcon], template: `
|
|
39901
|
+
<div class="rich-editor" [class.rich-editor--disabled]="props.disabled">
|
|
39902
|
+
@if (!props.disabled) {
|
|
39903
|
+
<div class="rich-editor__toolbar" role="toolbar">
|
|
39904
|
+
@for (btn of toolbarButtons(); track btn.token) {
|
|
39905
|
+
<ion-button
|
|
39906
|
+
fill="clear"
|
|
39907
|
+
size="small"
|
|
39908
|
+
[class.rich-editor__btn--active]="btn.isActive"
|
|
39909
|
+
[disabled]="btn.disabled"
|
|
39910
|
+
[attr.aria-label]="btn.label"
|
|
39911
|
+
[attr.aria-pressed]="btn.isActive"
|
|
39912
|
+
(click)="runCommand(btn.token)"
|
|
39913
|
+
>
|
|
39914
|
+
@switch (btn.token) {
|
|
39915
|
+
@case ('bold') {
|
|
39916
|
+
<strong>B</strong>
|
|
39917
|
+
}
|
|
39918
|
+
@case ('italic') {
|
|
39919
|
+
<em>I</em>
|
|
39920
|
+
}
|
|
39921
|
+
@case ('heading2') {
|
|
39922
|
+
<strong>H2</strong>
|
|
39923
|
+
}
|
|
39924
|
+
@case ('heading3') {
|
|
39925
|
+
<strong>H3</strong>
|
|
39926
|
+
}
|
|
39927
|
+
@case ('bulletList') {
|
|
39928
|
+
<ion-icon name="list-outline" slot="icon-only" />
|
|
39929
|
+
}
|
|
39930
|
+
@case ('orderedList') {
|
|
39931
|
+
<ion-icon name="list-outline" slot="icon-only" />
|
|
39932
|
+
}
|
|
39933
|
+
@case ('quote') {
|
|
39934
|
+
<ion-icon name="chatbox-outline" slot="icon-only" />
|
|
39935
|
+
}
|
|
39936
|
+
@case ('separator') {
|
|
39937
|
+
<ion-icon name="remove-outline" slot="icon-only" />
|
|
39938
|
+
}
|
|
39939
|
+
}
|
|
39940
|
+
</ion-button>
|
|
39941
|
+
}
|
|
39942
|
+
</div>
|
|
39943
|
+
}
|
|
39944
|
+
<div #editorHost class="rich-editor__surface"></div>
|
|
39945
|
+
</div>
|
|
39946
|
+
`, styles: [".rich-editor{display:flex;flex-direction:column;gap:8px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:8px;overflow:hidden}.rich-editor--disabled{opacity:.7}.rich-editor__toolbar{display:flex;flex-wrap:wrap;gap:2px;padding:6px 8px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-light, #f4f5f8)}.rich-editor__toolbar ion-button{--padding-start: 8px;--padding-end: 8px;margin:0;font-size:.8125rem;min-width:32px}.rich-editor__btn--active{--background: rgba(var(--ion-color-primary-rgb), .14);--color: var(--ion-color-primary);border-radius:6px}.rich-editor__surface{padding:12px 16px;min-height:160px}.rich-editor__surface ::ng-deep .ProseMirror{outline:none;min-height:140px;color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.5}.rich-editor__surface ::ng-deep .ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--ion-color-medium, #92949c);float:left;height:0;pointer-events:none}.rich-editor__surface ::ng-deep .ProseMirror p{margin:0 0 .75em}.rich-editor__surface ::ng-deep .ProseMirror h1,.rich-editor__surface ::ng-deep .ProseMirror h2,.rich-editor__surface ::ng-deep .ProseMirror h3{margin:0 0 .5em;color:var(--ion-text-color, #000)}.rich-editor__surface ::ng-deep .ProseMirror blockquote{margin:0 0 .75em;padding-left:12px;border-left:3px solid var(--ion-color-primary, #3880ff);color:var(--ion-color-medium, #92949c)}.rich-editor__surface ::ng-deep .ProseMirror ul,.rich-editor__surface ::ng-deep .ProseMirror ol{margin:0 0 .75em;padding-left:24px}.rich-editor__surface ::ng-deep .ProseMirror img{max-width:100%;border-radius:8px}\n"] }]
|
|
39947
|
+
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
39948
|
+
type: Input
|
|
39949
|
+
}], articleChange: [{
|
|
39950
|
+
type: Output
|
|
39951
|
+
}], editorHost: [{
|
|
39952
|
+
type: ViewChild,
|
|
39953
|
+
args: ['editorHost', { static: true }]
|
|
39954
|
+
}] } });
|
|
39955
|
+
|
|
39406
39956
|
/**
|
|
39407
39957
|
* val-banner
|
|
39408
39958
|
*
|
|
@@ -90377,5 +90927,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
90377
90927
|
* Generated bundle index. Do not edit.
|
|
90378
90928
|
*/
|
|
90379
90929
|
|
|
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 };
|
|
90930
|
+
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, RichEditorComponent, 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, articleToTiptapDoc, 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, tiptapDocToArticle, tiptapDocToArticleElements, toArticle, validateQrBrand, validateRoutes };
|
|
90381
90931
|
//# sourceMappingURL=valtech-components.mjs.map
|