valtech-components 2.0.772 → 2.0.774
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/atoms/pattern/motifs.mjs +147 -0
- package/esm2022/lib/components/atoms/pattern/pattern.component.mjs +164 -0
- package/esm2022/lib/components/atoms/pattern/types.mjs +2 -0
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/valtech-components.mjs +309 -4
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/pattern/motifs.d.ts +60 -0
- package/lib/components/atoms/pattern/pattern.component.d.ts +68 -0
- package/lib/components/atoms/pattern/types.d.ts +61 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, Injectable, makeEnvironmentProviders, APP_INITIALIZER, inject, EventEmitter, Component, Input, Output, input, computed, ChangeDetectionStrategy, HostBinding, HostListener, Pipe, ViewChild, ChangeDetectorRef, ContentChild, PLATFORM_ID, Inject, ErrorHandler, DestroyRef, InjectionToken, runInInjectionContext,
|
|
2
|
+
import { signal, Injectable, makeEnvironmentProviders, APP_INITIALIZER, inject, EventEmitter, Component, Input, Output, input, computed, ChangeDetectionStrategy, HostBinding, HostListener, Pipe, effect, ViewChild, ChangeDetectorRef, ContentChild, PLATFORM_ID, Inject, ErrorHandler, DestroyRef, InjectionToken, runInInjectionContext, Optional, TemplateRef, ViewContainerRef, isSignal, Directive, ElementRef, ViewEncapsulation } from '@angular/core';
|
|
3
3
|
import * as i2$1 from '@ionic/angular/standalone';
|
|
4
4
|
import { IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonModal, IonHeader, IonToolbar, IonContent, IonButtons, IonTitle, IonProgressBar, IonSkeletonText, IonFab, IonFabButton, IonFabList, IonLabel, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonTextarea, IonDatetime, IonDatetimeButton, IonInput, IonSelect, IonSelectOption, IonPopover, IonList, IonItem, IonRadioGroup, IonRadio, IonRange, IonSearchbar, IonSegment, IonSegmentButton, IonToggle, IonAccordion, IonAccordionGroup, IonTabBar, IonTabButton, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonChip, IonNote, ToastController as ToastController$1, IonCol, IonRow, IonRefresher, IonRefresherContent, IonRippleEffect, AlertController, IonMenuButton, IonFooter, IonListHeader, IonInfiniteScroll, IonInfiniteScrollContent, IonGrid, MenuController, IonMenu, IonMenuToggle, IonSplitPane } from '@ionic/angular/standalone';
|
|
5
5
|
import * as i1 from '@angular/common';
|
|
@@ -10,7 +10,7 @@ import * as i1$1 from '@angular/router';
|
|
|
10
10
|
import { Router, NavigationEnd, RouterLink, RouterOutlet, RouterModule } from '@angular/router';
|
|
11
11
|
import { Browser } from '@capacitor/browser';
|
|
12
12
|
import * as i1$2 from '@angular/platform-browser';
|
|
13
|
-
import { Meta, Title } from '@angular/platform-browser';
|
|
13
|
+
import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
|
|
14
14
|
import QRCodeStyling from 'qr-code-styling';
|
|
15
15
|
import * as i1$3 from '@angular/forms';
|
|
16
16
|
import { ReactiveFormsModule, FormsModule, FormControl, Validators, FormBuilder } from '@angular/forms';
|
|
@@ -52,7 +52,7 @@ import 'prismjs/components/prism-json';
|
|
|
52
52
|
* Current version of valtech-components.
|
|
53
53
|
* This is automatically updated during the publish process.
|
|
54
54
|
*/
|
|
55
|
-
const VERSION = '2.0.
|
|
55
|
+
const VERSION = '2.0.774';
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
58
|
* Servicio para gestionar presets de componentes.
|
|
@@ -5822,6 +5822,311 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5822
5822
|
`, styles: [".rights-footer{display:block;margin-top:24px}.rights-footer--left{text-align:left}.rights-footer--center{text-align:center}.rights-footer--right{text-align:right}.rights-footer--with-margin{margin-bottom:8px}\n"] }]
|
|
5823
5823
|
}] });
|
|
5824
5824
|
|
|
5825
|
+
/**
|
|
5826
|
+
* Valtech Pattern System — motifs + palettes.
|
|
5827
|
+
*
|
|
5828
|
+
* Pure data + helpers, sin dependencias Angular. Reusable desde Node/scripts
|
|
5829
|
+
* (e.g., generate static thumbnails) o desde el componente `val-pattern`.
|
|
5830
|
+
*
|
|
5831
|
+
* Original spec: `assets/Valtech Pattern System.html` (single-page demo).
|
|
5832
|
+
* Cada motif es función `(fill: string) => string` que devuelve SVG inner
|
|
5833
|
+
* markup. Tile es 100×100 unidades; el motif se renderiza dentro de un `<g
|
|
5834
|
+
* transform="translate(col*100 row*100)">` con un `<rect width=100 height=100
|
|
5835
|
+
* fill=bg/>` de fondo.
|
|
5836
|
+
*/
|
|
5837
|
+
/**
|
|
5838
|
+
* Chevrons stroke-based con linecap/linejoin redondos — visualmente coherente
|
|
5839
|
+
* con el símbolo de marca Valtech (`>_`). Stroke-width 18 (default), 12 para
|
|
5840
|
+
* variants `small-*`.
|
|
5841
|
+
*/
|
|
5842
|
+
const CHEV_STROKE = 18;
|
|
5843
|
+
const CHEV_SMALL_STROKE = 12;
|
|
5844
|
+
const chevStyle = (f, w = CHEV_STROKE) => `stroke="${f}" stroke-width="${w}" stroke-linecap="round" stroke-linejoin="round" fill="none"`;
|
|
5845
|
+
const PATTERN_MOTIFS = {
|
|
5846
|
+
'chev-r': f => `<path d="M22 18 L72 50 L22 82" ${chevStyle(f)}/>`,
|
|
5847
|
+
'chev-l': f => `<path d="M78 18 L28 50 L78 82" ${chevStyle(f)}/>`,
|
|
5848
|
+
'chev-d': f => `<path d="M18 22 L50 72 L82 22" ${chevStyle(f)}/>`,
|
|
5849
|
+
'chev-u': f => `<path d="M18 78 L50 28 L82 78" ${chevStyle(f)}/>`,
|
|
5850
|
+
'tri-tl': f => `<polygon points="0,0 100,0 0,100" fill="${f}"/>`,
|
|
5851
|
+
'tri-tr': f => `<polygon points="0,0 100,0 100,100" fill="${f}"/>`,
|
|
5852
|
+
'tri-bl': f => `<polygon points="0,0 100,100 0,100" fill="${f}"/>`,
|
|
5853
|
+
'tri-br': f => `<polygon points="100,0 100,100 0,100" fill="${f}"/>`,
|
|
5854
|
+
solid: () => ``,
|
|
5855
|
+
diamond: f => `<polygon points="50,12 88,50 50,88 12,50" fill="${f}"/>`,
|
|
5856
|
+
'small-r': f => `<path d="M38 32 L62 50 L38 68" ${chevStyle(f, CHEV_SMALL_STROKE)}/>`,
|
|
5857
|
+
'small-l': f => `<path d="M62 32 L38 50 L62 68" ${chevStyle(f, CHEV_SMALL_STROKE)}/>`,
|
|
5858
|
+
'arrow-r': f => `<path d="M10 42 L60 42 L60 28 L92 50 L60 72 L60 58 L10 58 Z" fill="${f}"/>`,
|
|
5859
|
+
'arrow-l': f => `<path d="M90 42 L40 42 L40 28 L8 50 L40 72 L40 58 L90 58 Z" fill="${f}"/>`,
|
|
5860
|
+
'house-d': f => `<polygon points="50,20 88,50 12,50" fill="${f}"/><rect x="28" y="50" width="44" height="32" fill="${f}"/>`,
|
|
5861
|
+
'half-l': f => `<rect x="0" y="0" width="50" height="100" fill="${f}"/>`,
|
|
5862
|
+
'half-t': f => `<rect x="0" y="0" width="100" height="50" fill="${f}"/>`,
|
|
5863
|
+
};
|
|
5864
|
+
const MOTIF_KEYS = Object.keys(PATTERN_MOTIFS);
|
|
5865
|
+
/** Chevron family — orientations + size variants + arrows. */
|
|
5866
|
+
const CHEV_KEYS = [
|
|
5867
|
+
'chev-r',
|
|
5868
|
+
'chev-l',
|
|
5869
|
+
'chev-d',
|
|
5870
|
+
'chev-u',
|
|
5871
|
+
'small-r',
|
|
5872
|
+
'small-l',
|
|
5873
|
+
'arrow-r',
|
|
5874
|
+
'arrow-l',
|
|
5875
|
+
];
|
|
5876
|
+
/** Triangle / half-fill family. */
|
|
5877
|
+
const TRI_KEYS = [
|
|
5878
|
+
'tri-tl',
|
|
5879
|
+
'tri-tr',
|
|
5880
|
+
'tri-bl',
|
|
5881
|
+
'tri-br',
|
|
5882
|
+
'half-l',
|
|
5883
|
+
'half-t',
|
|
5884
|
+
'house-d',
|
|
5885
|
+
];
|
|
5886
|
+
/** Center shape family (currently solo diamond). */
|
|
5887
|
+
const SHAPE_KEYS = ['diamond'];
|
|
5888
|
+
/** No-foreground tiles — solo el rect de fondo. */
|
|
5889
|
+
const SOLID_KEYS = ['solid'];
|
|
5890
|
+
const PATTERN_PALETTES = {
|
|
5891
|
+
purple: ['#0e0420', '#2a1158', '#4a1d96', '#7026df', '#9156e8', '#b48eea', '#d9c3f5', '#ebdcfd'],
|
|
5892
|
+
ink: ['#000000', '#0a0f1c', '#1a2235', '#2d3a55', '#4a5878', '#7d8aa5', '#b8c1d4', '#e4e8f0'],
|
|
5893
|
+
lavender: [
|
|
5894
|
+
'#1a0e3a',
|
|
5895
|
+
'#2e1755',
|
|
5896
|
+
'#5a3aa0',
|
|
5897
|
+
'#7e5dc6',
|
|
5898
|
+
'#a18bd9',
|
|
5899
|
+
'#c4a8f0',
|
|
5900
|
+
'#dccef5',
|
|
5901
|
+
'#f0e6fc',
|
|
5902
|
+
],
|
|
5903
|
+
};
|
|
5904
|
+
/**
|
|
5905
|
+
* Mulberry32 seeded RNG — devuelve función `()=>[0,1)`.
|
|
5906
|
+
* Deterministic: mismo seed → misma secuencia. Útil para patrones reproducibles.
|
|
5907
|
+
*/
|
|
5908
|
+
function mulberry32(seed) {
|
|
5909
|
+
return function () {
|
|
5910
|
+
seed = (seed + 0x6d2b79f5) >>> 0;
|
|
5911
|
+
let t = seed;
|
|
5912
|
+
t = Math.imul(t ^ (t >>> 15), t | 1);
|
|
5913
|
+
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
|
|
5914
|
+
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
5915
|
+
};
|
|
5916
|
+
}
|
|
5917
|
+
/**
|
|
5918
|
+
* Genera UN tile con motif/bg/fg respetando densidades + contraste.
|
|
5919
|
+
* Caller pasa rng (Math.random o seeded) — útil para reshuffle individual de
|
|
5920
|
+
* tiles en `val-pattern` sin regenerar la grid completa.
|
|
5921
|
+
*/
|
|
5922
|
+
function generateRandomTile(palette, chevronDensity = 0.55, rng = Math.random) {
|
|
5923
|
+
const roll = rng();
|
|
5924
|
+
let key;
|
|
5925
|
+
if (roll < chevronDensity)
|
|
5926
|
+
key = CHEV_KEYS[Math.floor(rng() * CHEV_KEYS.length)];
|
|
5927
|
+
else if (roll < chevronDensity + 0.2)
|
|
5928
|
+
key = SOLID_KEYS[Math.floor(rng() * SOLID_KEYS.length)];
|
|
5929
|
+
else if (roll < chevronDensity + 0.35)
|
|
5930
|
+
key = SHAPE_KEYS[Math.floor(rng() * SHAPE_KEYS.length)];
|
|
5931
|
+
else
|
|
5932
|
+
key = TRI_KEYS[Math.floor(rng() * TRI_KEYS.length)];
|
|
5933
|
+
const bgIdx = Math.floor(rng() * palette.length);
|
|
5934
|
+
let fgIdx = Math.floor(rng() * palette.length);
|
|
5935
|
+
let tries = 0;
|
|
5936
|
+
while (Math.abs(fgIdx - bgIdx) < 3 && tries < 6) {
|
|
5937
|
+
fgIdx = Math.floor(rng() * palette.length);
|
|
5938
|
+
tries++;
|
|
5939
|
+
}
|
|
5940
|
+
return { motif: key, bg: palette[bgIdx], fg: palette[fgIdx] };
|
|
5941
|
+
}
|
|
5942
|
+
/** Genera matriz de tiles aplicando densidades + reglas de contraste. */
|
|
5943
|
+
function generatePatternTiles(cfg) {
|
|
5944
|
+
const { cols, rows, seed, palette } = cfg;
|
|
5945
|
+
const chevronDensity = cfg.chevronDensity ?? 0.55;
|
|
5946
|
+
const r = mulberry32(seed);
|
|
5947
|
+
const tiles = [];
|
|
5948
|
+
for (let i = 0; i < cols * rows; i++) {
|
|
5949
|
+
tiles.push(generateRandomTile(palette, chevronDensity, r));
|
|
5950
|
+
}
|
|
5951
|
+
return tiles;
|
|
5952
|
+
}
|
|
5953
|
+
/**
|
|
5954
|
+
* Renderiza el inner SVG (sin el `<svg>` root) para una matriz de tiles.
|
|
5955
|
+
* Caller wraps en `<svg viewBox="0 0 {cols*100} {rows*100}" preserveAspectRatio="xMidYMid slice">`.
|
|
5956
|
+
*/
|
|
5957
|
+
function renderPatternSvgInner(tiles, cols, baseColor) {
|
|
5958
|
+
const W = cols * 100;
|
|
5959
|
+
const rows = Math.ceil(tiles.length / cols);
|
|
5960
|
+
const H = rows * 100;
|
|
5961
|
+
let inner = `<rect width="${W}" height="${H}" fill="${baseColor}"/>`;
|
|
5962
|
+
for (let i = 0; i < tiles.length; i++) {
|
|
5963
|
+
const c = i % cols;
|
|
5964
|
+
const r = Math.floor(i / cols);
|
|
5965
|
+
const t = tiles[i];
|
|
5966
|
+
const shape = PATTERN_MOTIFS[t.motif](t.fg);
|
|
5967
|
+
inner += `<g transform="translate(${c * 100} ${r * 100})"><rect width="100" height="100" fill="${t.bg}"/>${shape}</g>`;
|
|
5968
|
+
}
|
|
5969
|
+
return inner;
|
|
5970
|
+
}
|
|
5971
|
+
|
|
5972
|
+
/**
|
|
5973
|
+
* `val-pattern`
|
|
5974
|
+
*
|
|
5975
|
+
* Componente de fondo geométrico inspirado en el sistema Valtech. Renderiza un
|
|
5976
|
+
* grid de tiles 100×100 con motifs (chevrons, triangles, diamonds, arrows) en
|
|
5977
|
+
* un SVG inline. Determinista vía `seed` o animado vía `reshuffle`.
|
|
5978
|
+
*
|
|
5979
|
+
* Cero dependencias externas — todo SVG.
|
|
5980
|
+
*
|
|
5981
|
+
* @example Como fondo de card (CSS absolute):
|
|
5982
|
+
* ```scss
|
|
5983
|
+
* .card { position: relative; overflow: hidden; }
|
|
5984
|
+
* .card val-pattern { position: absolute; inset: 0; z-index: 0; opacity: 0.4; }
|
|
5985
|
+
* .card .content { position: relative; z-index: 1; }
|
|
5986
|
+
* ```
|
|
5987
|
+
*
|
|
5988
|
+
* ```html
|
|
5989
|
+
* <div class="card">
|
|
5990
|
+
* <val-pattern [props]="{ palette: 'purple', cols: 6, rows: 3, seed: 42 }" />
|
|
5991
|
+
* <div class="content">Tu contenido aquí</div>
|
|
5992
|
+
* </div>
|
|
5993
|
+
* ```
|
|
5994
|
+
*
|
|
5995
|
+
* @example Como background animado (hero/login):
|
|
5996
|
+
* ```html
|
|
5997
|
+
* <val-pattern [props]="{ palette: 'lavender', cols: 16, rows: 8, animated: true }" />
|
|
5998
|
+
* ```
|
|
5999
|
+
*/
|
|
6000
|
+
class PatternComponent {
|
|
6001
|
+
/** Object-first input. Cambios disparan re-render por signals. */
|
|
6002
|
+
set props(value) {
|
|
6003
|
+
if (!value)
|
|
6004
|
+
return;
|
|
6005
|
+
if (value.cols !== undefined)
|
|
6006
|
+
this.cols.set(Math.max(1, value.cols));
|
|
6007
|
+
if (value.rows !== undefined)
|
|
6008
|
+
this.rows.set(Math.max(1, value.rows));
|
|
6009
|
+
if (value.seed !== undefined)
|
|
6010
|
+
this.seed.set(value.seed);
|
|
6011
|
+
if (value.chevronDensity !== undefined) {
|
|
6012
|
+
this.chevronDensity.set(Math.min(1, Math.max(0, value.chevronDensity)));
|
|
6013
|
+
}
|
|
6014
|
+
if (value.preserveAspect !== undefined)
|
|
6015
|
+
this.preserveAspect.set(value.preserveAspect);
|
|
6016
|
+
if (value.palette !== undefined) {
|
|
6017
|
+
this.paletteRef.set(this.resolvePalette(value.palette));
|
|
6018
|
+
}
|
|
6019
|
+
if (value.reshuffleInterval !== undefined && value.reshuffleInterval > 0) {
|
|
6020
|
+
this.reshuffleInterval.set(value.reshuffleInterval);
|
|
6021
|
+
}
|
|
6022
|
+
if (value.tilesPerTick !== undefined && value.tilesPerTick > 0) {
|
|
6023
|
+
this.tilesPerTick.set(Math.floor(value.tilesPerTick));
|
|
6024
|
+
}
|
|
6025
|
+
if (value.animated !== undefined)
|
|
6026
|
+
this.animated.set(!!value.animated);
|
|
6027
|
+
}
|
|
6028
|
+
constructor() {
|
|
6029
|
+
this.sanitizer = inject(DomSanitizer);
|
|
6030
|
+
this.cols = signal(12);
|
|
6031
|
+
this.rows = signal(4);
|
|
6032
|
+
this.seed = signal(this.randomSeed());
|
|
6033
|
+
this.paletteRef = signal(PATTERN_PALETTES.purple);
|
|
6034
|
+
this.chevronDensity = signal(0.55);
|
|
6035
|
+
this.preserveAspect = signal('slice');
|
|
6036
|
+
this.animated = signal(false);
|
|
6037
|
+
/** ms entre updates individuales de tiles (modo animated). Default 1200ms. */
|
|
6038
|
+
this.reshuffleInterval = signal(1200);
|
|
6039
|
+
/** Cuántos tiles cambiar por tick (default 1 → cambio sutil). */
|
|
6040
|
+
this.tilesPerTick = signal(1);
|
|
6041
|
+
/**
|
|
6042
|
+
* Tiles signal — mutable. Se regenera completa cuando cambia seed/cols/rows/
|
|
6043
|
+
* palette/density. En modo animated, tiles individuales se sobrescriben sin
|
|
6044
|
+
* tocar el resto (efecto staggered).
|
|
6045
|
+
*/
|
|
6046
|
+
this.tiles = signal([]);
|
|
6047
|
+
/** SVG completo como string sanitized para `[innerHTML]`. */
|
|
6048
|
+
this.svgHtml = computed(() => {
|
|
6049
|
+
const cols = this.cols();
|
|
6050
|
+
const rows = this.rows();
|
|
6051
|
+
const palette = this.paletteRef();
|
|
6052
|
+
const inner = renderPatternSvgInner(this.tiles(), cols, palette[0]);
|
|
6053
|
+
const aspect = this.preserveAspect() === 'meet' ? 'xMidYMid meet' : 'xMidYMid slice';
|
|
6054
|
+
const svg = `<svg viewBox="0 0 ${cols * 100} ${rows * 100}" preserveAspectRatio="${aspect}" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">${inner}</svg>`;
|
|
6055
|
+
return this.sanitizer.bypassSecurityTrustHtml(svg);
|
|
6056
|
+
});
|
|
6057
|
+
// Regenera grid completa cuando cambian props estructurales (cols/rows/
|
|
6058
|
+
// palette/density/seed). El seed solo cambia explícitamente via props o
|
|
6059
|
+
// mount inicial — NO se muta en modo animated.
|
|
6060
|
+
effect(() => {
|
|
6061
|
+
const cols = this.cols();
|
|
6062
|
+
const rows = this.rows();
|
|
6063
|
+
const seed = this.seed();
|
|
6064
|
+
const palette = this.paletteRef();
|
|
6065
|
+
const density = this.chevronDensity();
|
|
6066
|
+
this.tiles.set(generatePatternTiles({ cols, rows, seed, palette, chevronDensity: density }));
|
|
6067
|
+
});
|
|
6068
|
+
// Modo animated: cada `reshuffleInterval` ms, sobrescribe `tilesPerTick`
|
|
6069
|
+
// tiles random — efecto staggered (no toda la grid de una). Si el user
|
|
6070
|
+
// desactiva animated, el timer se limpia automáticamente.
|
|
6071
|
+
effect(onCleanup => {
|
|
6072
|
+
const isAnimated = this.animated();
|
|
6073
|
+
const interval = this.reshuffleInterval();
|
|
6074
|
+
const perTick = this.tilesPerTick();
|
|
6075
|
+
if (this.timer)
|
|
6076
|
+
clearInterval(this.timer);
|
|
6077
|
+
this.timer = undefined;
|
|
6078
|
+
if (!isAnimated)
|
|
6079
|
+
return;
|
|
6080
|
+
this.timer = setInterval(() => this.mutateRandomTiles(perTick), interval);
|
|
6081
|
+
onCleanup(() => {
|
|
6082
|
+
if (this.timer) {
|
|
6083
|
+
clearInterval(this.timer);
|
|
6084
|
+
this.timer = undefined;
|
|
6085
|
+
}
|
|
6086
|
+
});
|
|
6087
|
+
});
|
|
6088
|
+
}
|
|
6089
|
+
/**
|
|
6090
|
+
* Reemplaza `count` tiles random del grid actual con tiles nuevos generados.
|
|
6091
|
+
* Usado por el modo animated para staggered reshuffle.
|
|
6092
|
+
*/
|
|
6093
|
+
mutateRandomTiles(count) {
|
|
6094
|
+
const current = this.tiles();
|
|
6095
|
+
if (current.length === 0)
|
|
6096
|
+
return;
|
|
6097
|
+
const next = [...current];
|
|
6098
|
+
const palette = this.paletteRef();
|
|
6099
|
+
const density = this.chevronDensity();
|
|
6100
|
+
for (let n = 0; n < count; n++) {
|
|
6101
|
+
const idx = Math.floor(Math.random() * next.length);
|
|
6102
|
+
next[idx] = generateRandomTile(palette, density);
|
|
6103
|
+
}
|
|
6104
|
+
this.tiles.set(next);
|
|
6105
|
+
}
|
|
6106
|
+
ngOnDestroy() {
|
|
6107
|
+
if (this.timer)
|
|
6108
|
+
clearInterval(this.timer);
|
|
6109
|
+
}
|
|
6110
|
+
resolvePalette(p) {
|
|
6111
|
+
if (Array.isArray(p)) {
|
|
6112
|
+
// Acepta arrays de cualquier longitud ≥2; tile contrast logic usa índices.
|
|
6113
|
+
return p.length >= 2 ? p : PATTERN_PALETTES.purple;
|
|
6114
|
+
}
|
|
6115
|
+
return PATTERN_PALETTES[p] ?? PATTERN_PALETTES.purple;
|
|
6116
|
+
}
|
|
6117
|
+
randomSeed() {
|
|
6118
|
+
return Math.floor(Math.random() * 1_000_000);
|
|
6119
|
+
}
|
|
6120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PatternComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PatternComponent, isStandalone: true, selector: "val-pattern", inputs: { props: "props" }, ngImport: i0, template: ` <div class="val-pattern" [innerHTML]="svgHtml()"></div> `, isInline: true, styles: [":host{display:block;width:100%;height:100%;line-height:0}.val-pattern{width:100%;height:100%;display:block;transition:opacity .6s ease-in-out}.val-pattern :where(svg){display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
6122
|
+
}
|
|
6123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PatternComponent, decorators: [{
|
|
6124
|
+
type: Component,
|
|
6125
|
+
args: [{ selector: 'val-pattern', standalone: true, imports: [CommonModule], template: ` <div class="val-pattern" [innerHTML]="svgHtml()"></div> `, styles: [":host{display:block;width:100%;height:100%;line-height:0}.val-pattern{width:100%;height:100%;display:block;transition:opacity .6s ease-in-out}.val-pattern :where(svg){display:block;width:100%;height:100%}\n"] }]
|
|
6126
|
+
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
6127
|
+
type: Input
|
|
6128
|
+
}] } });
|
|
6129
|
+
|
|
5825
6130
|
/**
|
|
5826
6131
|
* val-alert-box
|
|
5827
6132
|
*
|
|
@@ -42981,5 +43286,5 @@ function buildFooterLinks(links, t, resolver) {
|
|
|
42981
43286
|
* Generated bundle index. Do not edit.
|
|
42982
43287
|
*/
|
|
42983
43288
|
|
|
42984
|
-
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, ARTICLE_SPACING, AVATAR_UPLOAD_DEFAULTS, AccordionComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AppConfigService, ArticleBuilder, ArticleComponent, AuthBackgroundComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentTransformer, CountdownComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_CANCEL_BUTTON, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DataTableComponent, DateInputComponent, DateRangeInputComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FabComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FooterComponent, FooterLinksComponent, FormComponent, FormFooterComponent, FormSkeletonComponent, FunHeaderComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginComponent, MODAL_SIZES, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MenuComponent, MessagingService, MetaService, ModalService, MultiSelectSearchComponent, NavigationService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationsService, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgSwitchService, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PLATFORM_CONFIGS, PageContentComponent, PageTemplateComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RightsFooterComponent, RotatingTextComponent, SKELETON_PRESETS, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SegmentControlComponent, SelectSearchComponent, SessionService, ShareButtonsComponent, SimpleComponent, SkeletonComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TranslatePipe, TypedCollection, UpdateBannerComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_DEFAULT_CONTENT, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_SOCIAL_LINKS, VERSION, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, blogPost, buildFooterLinks, buildPath, collections, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createTitleProps, docs, extractPathParams, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideValtechAds, provideValtechAppConfig, provideValtechAuth, provideValtechAuthInterceptor, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechPresets, provideValtechSkeleton, query, replaceSpecialChars, resolveColor, resolveInputDefaultValue, roleGuard, storagePaths, superAdminGuard, toArticle };
|
|
43289
|
+
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, ARTICLE_SPACING, AVATAR_UPLOAD_DEFAULTS, AccordionComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AppConfigService, ArticleBuilder, ArticleComponent, AuthBackgroundComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CHEV_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentTransformer, CountdownComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_CANCEL_BUTTON, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DataTableComponent, DateInputComponent, DateRangeInputComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FabComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FooterComponent, FooterLinksComponent, FormComponent, FormFooterComponent, FormSkeletonComponent, FunHeaderComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginComponent, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MenuComponent, MessagingService, MetaService, ModalService, MultiSelectSearchComponent, NavigationService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationsService, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgSwitchService, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PATTERN_MOTIFS, PATTERN_PALETTES, PLATFORM_CONFIGS, PageContentComponent, PageTemplateComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RightsFooterComponent, RotatingTextComponent, SHAPE_KEYS, SKELETON_PRESETS, SOLID_KEYS, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SegmentControlComponent, SelectSearchComponent, SessionService, ShareButtonsComponent, SimpleComponent, SkeletonComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TranslatePipe, TypedCollection, UpdateBannerComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_DEFAULT_CONTENT, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_SOCIAL_LINKS, VERSION, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, blogPost, buildFooterLinks, buildPath, collections, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createTitleProps, docs, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideValtechAds, provideValtechAppConfig, provideValtechAuth, provideValtechAuthInterceptor, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechPresets, provideValtechSkeleton, query, renderPatternSvgInner, replaceSpecialChars, resolveColor, resolveInputDefaultValue, roleGuard, storagePaths, superAdminGuard, toArticle };
|
|
42985
43290
|
//# sourceMappingURL=valtech-components.mjs.map
|