valtech-components 4.0.934 → 4.0.935

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.
@@ -18,6 +18,15 @@ export declare class ButtonComponent implements OnInit, OnChanges {
18
18
  * The text to display on the button.
19
19
  */
20
20
  displayText: string;
21
+ /**
22
+ * Clases de tamaño del botón.
23
+ *
24
+ * `icon-only` se DERIVA de que no haya texto en vez de pedirse por prop: un
25
+ * botón sin texto ya declaró todo lo que hacía falta saber, y una prop extra
26
+ * solo agrega una forma de que alguien la olvide y el botón salga como cápsula
27
+ * estirada. Ver la escala en button.component.scss.
28
+ */
29
+ sizeClasses(): string[];
21
30
  /**
22
31
  * Preset name to apply. Presets define reusable button configurations
23
32
  * (size, color, fill, etc.) that can be registered at app level.
@@ -17,6 +17,9 @@ export declare class MiniGamesMenuComponent implements OnDestroy {
17
17
  };
18
18
  constructor();
19
19
  ngOnDestroy(): void;
20
+ /** Respeta el orden en que el consumer pasa los juegos. Antes forzaba a
21
+ * 'chessimals' al principio: un producto no se privilegia desde la libreria,
22
+ * lo decide quien arma la lista. */
20
23
  get safeGames(): MiniGameDefinition[];
21
24
  protected t(key: string): string;
22
25
  select(game: MiniGameDefinition): void;
@@ -1,6 +1,14 @@
1
1
  import * as i0 from "@angular/core";
2
+ type Note = [number, number];
2
3
  type MelodyMode = 'menu' | 'game' | 'bubble';
3
- type ChessimalsPower = 'eagle' | 'bull' | 'kangaroo' | 'lion';
4
+ type SampleConfig = {
5
+ src: string;
6
+ volume: number;
7
+ };
8
+ type SampleMusicConfig = {
9
+ src: string;
10
+ volume: number;
11
+ };
4
12
  export declare class RetroAudioService {
5
13
  private context?;
6
14
  private masterGain?;
@@ -32,9 +40,6 @@ export declare class RetroAudioService {
32
40
  setMusicVolume(value: number): void;
33
41
  setSfxVolume(value: number): void;
34
42
  startMenuMusic(): Promise<void>;
35
- startChessimalsMenuMusic(): Promise<void>;
36
- startChessimalsGameMusic(): Promise<void>;
37
- preloadChessimalsSamples(): void;
38
43
  startGameMusic(): Promise<void>;
39
44
  startBubbleBlitzMusic(): Promise<void>;
40
45
  startMusic(mode?: MelodyMode): Promise<void>;
@@ -45,7 +50,6 @@ export declare class RetroAudioService {
45
50
  win(): void;
46
51
  lose(): void;
47
52
  simonPad(freq: number): void;
48
- chessimalsPowerPreview(power: ChessimalsPower): void;
49
53
  simonStepOk(): void;
50
54
  simonRoundOk(): void;
51
55
  simonFail(): void;
@@ -56,27 +60,23 @@ export declare class RetroAudioService {
56
60
  bubbleShuffle(): void;
57
61
  bubbleFever(): void;
58
62
  bubbleFinish(): void;
59
- chessimalsMove(): void;
60
- chessimalsBotMove(): void;
61
- chessimalsCapture(): void;
62
- chessimalsPower(power: ChessimalsPower): void;
63
- private chessimalsPowerFallback;
64
- private playChessimalsPowerSample;
65
- private playSample;
66
- private playBufferedSample;
67
- chessimalsVictory(): void;
68
- chessimalsDefeat(): void;
69
- private chessimalsVictoryFallback;
70
- chessimalsJoinRequest(): void;
71
- chessimalsPowerUnlocked(): void;
63
+ protected playSample(sample: SampleConfig, fallback: () => void): boolean;
64
+ protected playBufferedSample(sample: SampleConfig): boolean;
72
65
  private readEnabled;
73
66
  private readBooleanSetting;
74
67
  private readVolumeSetting;
75
68
  private writeSetting;
76
69
  private normalizeVolume;
77
- private preloadSample;
78
- private preloadSampleBuffer;
79
- private migrateChessimalsAudioDefaults;
70
+ protected preloadSample(src: string): void;
71
+ protected preloadSampleBuffer(src: string): Promise<void>;
72
+ /** Sube a un valor audible los volumenes que quedaron en cero de una version
73
+ * previa. La clave de storage conserva el nombre viejo a proposito: cambiarla
74
+ * haria que la migracion se vuelva a correr y le pise el volumen a quien ya
75
+ * lo eligio. */
76
+ private migrateAudioDefaults;
77
+ /** Gancho para que un juego precargue sus propios samples en cuanto el usuario
78
+ * interactua (antes, el navegador no deja tocar audio). Vacio por defecto. */
79
+ protected preloadGameSamples(): void;
80
80
  private canPlayMusic;
81
81
  private canPlaySfx;
82
82
  private ensureContext;
@@ -85,20 +85,20 @@ export declare class RetroAudioService {
85
85
  private gameMelody;
86
86
  private bubbleMelody;
87
87
  private bubbleAmbientPulse;
88
- private sequence;
89
- private startSampleMusic;
88
+ protected sequence(notes: Note[], wave?: OscillatorType, gain?: number, intervalMs?: number): Promise<void>;
89
+ protected startSampleMusic(config: SampleMusicConfig): Promise<void>;
90
90
  private stopSampleMusic;
91
91
  private applySampleMusicVolume;
92
92
  private sampleMusicVolume;
93
93
  private sampleVolume;
94
94
  private applyActiveSampleVolumes;
95
- private stopActiveSamples;
95
+ protected stopActiveSamples(): void;
96
96
  private connectSampleMusic;
97
97
  private disconnectSampleMusicGraph;
98
- private tone;
98
+ protected tone(freq: number, duration?: number, type?: OscillatorType, gainValue?: number): Promise<void>;
99
99
  private musicTone;
100
- private sweep;
101
- private filteredNoise;
100
+ protected sweep(fromFreq: number, toFreq: number, duration?: number, type?: OscillatorType, gainValue?: number): Promise<void>;
101
+ protected filteredNoise(duration?: number, gainValue?: number, filterType?: BiquadFilterType, frequency?: number): Promise<void>;
102
102
  private readonly handleVisibilityChange;
103
103
  private readonly handlePageHide;
104
104
  private readonly handlePageShow;
@@ -44,281 +44,6 @@ export interface BubbleBlitzCell {
44
44
  state?: 'idle' | 'popping' | 'falling' | 'entering';
45
45
  drop?: number;
46
46
  }
47
- export type ChessimalsBoardSize = 6 | 8;
48
- export type ChessimalsPlayerColor = 'white' | 'black';
49
- export type ChessimalsAnimalType = 'eagle' | 'bull' | 'kangaroo' | 'lion';
50
- export type ChessimalsMoveKind = 'basic' | 'power';
51
- export type ChessimalsWinReason = 'promotion' | 'elimination' | 'resignation' | 'blocked';
52
- export type ChessimalsGameMode = 'local' | 'online';
53
- export type ChessimalsLocalMode = 'one-device' | 'bot';
54
- export type ChessimalsBotDifficulty = 'easy' | 'normal' | 'hard' | 'master';
55
- export type ChessimalsNightmareMode = 'none' | 'hunt' | 'pride' | 'mandrill';
56
- export type ChessimalsLandscapeSkin = 'default' | 'savanna' | 'jungle' | 'arctic' | 'coliseum';
57
- export type ChessimalsPawnSkin = 'default' | 'scarf' | 'ruby';
58
- export type ChessimalsPowerCardSkin = 'default' | 'epic' | 'charge' | 'checkmate';
59
- export type ChessimalsBoardFrameSkin = 'default' | 'crystal' | 'gold' | 'wood' | 'stone' | 'dark-metal';
60
- export type ChessimalsBoardCellSkin = 'default' | 'grass' | 'stone' | 'woodland' | 'porcelain';
61
- export type ChessimalsBoardCellTextureSkin = 'none' | 'grass' | 'stone' | 'metal' | 'earth' | 'porcelain';
62
- export type ChessimalsEffectSkin = 'default' | 'emerald' | 'sunburst';
63
- export type ChessimalsBoardThemePreset = 'default' | 'jungle-crystal' | 'savanna-gold' | 'ruins-stone' | 'woodland-wood' | 'boss-dark-metal' | 'porcelain-classic';
64
- export type ChessimalsBoardSkin = ChessimalsBoardThemePreset;
65
- export interface ChessimalsVisualTheme {
66
- preset?: ChessimalsBoardThemePreset;
67
- landscape?: ChessimalsLandscapeSkin;
68
- landscapeSrc?: string;
69
- pawns?: ChessimalsPawnSkin;
70
- powerCards?: ChessimalsPowerCardSkin;
71
- frame?: ChessimalsBoardFrameSkin;
72
- cells?: ChessimalsBoardCellSkin;
73
- cellTexture?: ChessimalsBoardCellTextureSkin;
74
- effects?: ChessimalsEffectSkin;
75
- cellLight?: string;
76
- cellDark?: string;
77
- landscapeOpacity?: number;
78
- }
79
- export type ChessimalsBotProfileId = 'explorer' | 'bull' | 'hare' | 'hunter' | 'guardian' | 'jumper' | 'strategist' | 'predator' | 'cheetah' | 'sentinel' | 'oracle' | 'ambusher' | 'turtle' | 'storm' | 'matriarch' | 'anaconda' | 'mandrill';
80
- export type ChessimalsGameStatus = 'waiting' | 'in_progress' | 'finished' | 'expired';
81
- export interface ChessimalsBotProfile {
82
- id: ChessimalsBotProfileId;
83
- difficulty: ChessimalsBotDifficulty;
84
- avatar: string;
85
- avatarSrc?: string;
86
- labelKey: string;
87
- descriptionKey: string;
88
- }
89
- export type ChessimalsChallengeStatus = 'active' | 'completed' | 'failed' | 'abandoned';
90
- export interface ChessimalsChallengeBot {
91
- id: string;
92
- round: number;
93
- profileId: ChessimalsBotProfileId;
94
- difficulty: ChessimalsBotDifficulty;
95
- boardSize: ChessimalsBoardSize;
96
- introKey: string;
97
- }
98
- export interface ChessimalsChallengeRoundStats {
99
- powersUsed: Record<ChessimalsAnimalType, number>;
100
- powerCaptures: number;
101
- promotions: number;
102
- captures: number;
103
- moves: number;
104
- score: number;
105
- bestMoveScore: number;
106
- bestCombo: number;
107
- }
108
- export interface ChessimalsChallengeRoundResult {
109
- round: number;
110
- botId: string;
111
- profileId: ChessimalsBotProfileId;
112
- won: boolean;
113
- livesRemaining: number;
114
- stats: ChessimalsChallengeRoundStats;
115
- finishedAt: string;
116
- }
117
- export interface ChessimalsChallengeRun {
118
- id: string;
119
- userId?: string;
120
- schemaVersion?: 2;
121
- status: ChessimalsChallengeStatus;
122
- livesStart: 3;
123
- livesRemaining: number;
124
- roundIndex?: number;
125
- currentRound: number;
126
- roundsWon?: number;
127
- highestRoundReached?: number;
128
- activeRoundId?: string;
129
- wins: number;
130
- losses: number;
131
- bestStreakInRun: number;
132
- currentStreak: number;
133
- botLadder: string[];
134
- roundResults: ChessimalsChallengeRoundResult[];
135
- activeGame?: ChessimalsGameState;
136
- startedAt: string;
137
- lastEventAt?: string;
138
- updatedAt: string;
139
- finishedAt?: string;
140
- }
141
- export interface ChessimalsChallengeStats {
142
- userId?: string;
143
- challengesPlayed: number;
144
- challengesCompleted: number;
145
- bestWinStreak: number;
146
- bestRoundReached: number;
147
- totalWins: number;
148
- totalLosses: number;
149
- botsDefeated: number;
150
- powersUsed: Record<ChessimalsAnimalType, number>;
151
- powerCaptures: number;
152
- promotions: number;
153
- totalScore: number;
154
- bestRoundScore: number;
155
- bestMoveScore: number;
156
- bestCombo: number;
157
- modeStats: Record<ChessimalsStatsMode, ChessimalsModeStats>;
158
- updatedAt?: string;
159
- }
160
- export type ChessimalsStatsMode = 'challenge' | 'bot' | 'online';
161
- export interface ChessimalsModeStats {
162
- played: number;
163
- wins: number;
164
- losses: number;
165
- }
166
- export interface ChessimalsPosition {
167
- row: number;
168
- col: number;
169
- }
170
- export interface ChessimalsPiece {
171
- id: string;
172
- color: ChessimalsPlayerColor;
173
- position: ChessimalsPosition;
174
- captured: boolean;
175
- }
176
- export interface ChessimalsPowerCard {
177
- type: ChessimalsAnimalType;
178
- used: boolean;
179
- usesRemaining?: number;
180
- }
181
- export interface ChessimalsPlayerState {
182
- color: ChessimalsPlayerColor;
183
- powerUnlocked: boolean;
184
- cards: Record<ChessimalsAnimalType, ChessimalsPowerCard>;
185
- }
186
- export interface ChessimalsMove {
187
- pieceId: string;
188
- from: ChessimalsPosition;
189
- to: ChessimalsPosition;
190
- kind: ChessimalsMoveKind;
191
- animal?: ChessimalsAnimalType;
192
- capturesPieceId?: string;
193
- }
194
- export interface ChessimalsMoveHistoryEntry {
195
- moveNumber: number;
196
- pieces: ChessimalsPiece[];
197
- currentTurn: ChessimalsPlayerColor;
198
- status: ChessimalsGameStatus;
199
- move?: ChessimalsMove;
200
- winner?: ChessimalsPlayerColor;
201
- winnerReason?: ChessimalsWinReason;
202
- }
203
- export type ChessimalsMoveLogStatus = 'accepted' | 'rejected';
204
- export interface ChessimalsMoveLogEntry {
205
- id: string;
206
- at: string;
207
- uid: string;
208
- profileId?: string;
209
- seatKey?: string;
210
- side?: ChessimalsPlayerColor;
211
- status: ChessimalsMoveLogStatus;
212
- code?: string;
213
- message?: string;
214
- move: ChessimalsMove;
215
- moveCountBefore: number;
216
- moveCountAfter?: number;
217
- currentTurnBefore: ChessimalsPlayerColor;
218
- }
219
- export interface ChessimalsOnlineParticipant {
220
- uid: string;
221
- accountUserId?: string;
222
- profileId: string;
223
- seatKey?: string;
224
- name: string;
225
- handle?: string;
226
- email?: string;
227
- avatar: string;
228
- avatarUrl?: string;
229
- color: string;
230
- pawnSkin?: ChessimalsPawnSkin;
231
- side?: ChessimalsPlayerColor;
232
- joinedAt: string;
233
- }
234
- export interface ChessimalsOnlineState {
235
- gameId: string;
236
- hostUid: string;
237
- createdAt: string;
238
- updatedAt: string;
239
- expiresAt: string;
240
- expiresAtMs: number;
241
- round: number;
242
- rematchOf?: string;
243
- lobby?: ChessimalsOnlineParticipant;
244
- pendingGuest?: ChessimalsOnlineParticipant;
245
- participants?: Partial<Record<ChessimalsPlayerColor, ChessimalsOnlineParticipant>>;
246
- rematchRequests?: string[];
247
- moveLog?: ChessimalsMoveLogEntry[];
248
- }
249
- export type ChessimalsHistoryOutcome = 'waiting' | 'pending' | 'in_progress' | 'won' | 'lost' | 'declined';
250
- export interface ChessimalsHistoryEntry {
251
- gameId: string;
252
- mode: 'online';
253
- boardSize: ChessimalsBoardSize;
254
- status: ChessimalsGameStatus;
255
- outcome: ChessimalsHistoryOutcome;
256
- side?: ChessimalsPlayerColor;
257
- opponentUid?: string;
258
- opponentName?: string;
259
- winner?: ChessimalsPlayerColor;
260
- winnerReason?: ChessimalsWinReason;
261
- moveCount: number;
262
- round: number;
263
- createdAt: string;
264
- updatedAt: string;
265
- finishedAt?: string;
266
- expiresAt?: string;
267
- rematchOf?: string;
268
- }
269
- export interface ChessimalsGameState {
270
- id: string;
271
- mode: ChessimalsGameMode;
272
- boardSize: ChessimalsBoardSize;
273
- status: ChessimalsGameStatus;
274
- currentTurn: ChessimalsPlayerColor;
275
- pieces: ChessimalsPiece[];
276
- players: Record<ChessimalsPlayerColor, ChessimalsPlayerState>;
277
- winner?: ChessimalsPlayerColor;
278
- winnerReason?: ChessimalsWinReason;
279
- moveCount: number;
280
- lastMove?: ChessimalsMove;
281
- moveHistory?: ChessimalsMoveHistoryEntry[];
282
- online?: ChessimalsOnlineState;
283
- }
284
- export type ChessimalsAdventureNodeType = 'battle' | 'boss' | 'rest' | 'mystery';
285
- export type ChessimalsAdventureNodeStatus = 'locked' | 'available' | 'completed' | 'failed';
286
- export type ChessimalsAdventureSpecialRule = 'timer-pressure' | 'no-powers' | 'nightmare-mandrill';
287
- export interface ChessimalsAdventurePosition {
288
- x: number;
289
- y: number;
290
- }
291
- export interface ChessimalsAdventureNode {
292
- id: string;
293
- actId: string;
294
- type: ChessimalsAdventureNodeType;
295
- profileId?: ChessimalsBotProfileId;
296
- difficulty?: ChessimalsBotDifficulty;
297
- boardSize?: ChessimalsBoardSize;
298
- position: ChessimalsAdventurePosition;
299
- connectsTo: string[];
300
- titleKey: string;
301
- descriptionKey: string;
302
- quoteKey?: string;
303
- specialRule?: ChessimalsAdventureSpecialRule;
304
- }
305
- export interface ChessimalsAdventureAct {
306
- id: string;
307
- titleKey: string;
308
- descriptionKey: string;
309
- loreKey?: string;
310
- nodes: ChessimalsAdventureNode[];
311
- }
312
- export interface ChessimalsAdventureNodeResult {
313
- stars: number;
314
- completedAt: string;
315
- }
316
- export interface ChessimalsAdventureProgress {
317
- userId?: string;
318
- completedNodes: Record<string, ChessimalsAdventureNodeResult>;
319
- totalStars: number;
320
- updatedAt: string;
321
- }
322
47
  export type ChristianitySeat = 'P1' | 'P2';
323
48
  export type ChristianityGameStatus = 'in_progress' | 'finished';
324
49
  export type ChristianityGameMode = 'solo_bot' | 'two_player' | 'local_pass';
@@ -501,9 +226,3 @@ export interface ChristianityGameState {
501
226
  players: Record<ChristianitySeat, ChristianityPlayerState>;
502
227
  log: string[];
503
228
  }
504
- export interface ChessimalsFeatures {
505
- online?: boolean;
506
- challenge?: boolean;
507
- adventure?: boolean;
508
- difficultyProgression?: boolean;
509
- }
@@ -312,8 +312,12 @@ export type ToolbarAction = {
312
312
  export interface IconMetada {
313
313
  /** Icon name */
314
314
  name: string;
315
- /** Icon slot position */
316
- slot: 'start' | 'end';
315
+ /**
316
+ * Posición del icono. `icon-only` es para un botón SIN texto: Ionic le quita
317
+ * el margen lateral que reserva para la etiqueta, y `val-button` lo detecta
318
+ * para dimensionarlo cuadrado en vez de cápsula.
319
+ */
320
+ slot: 'start' | 'end' | 'icon-only';
317
321
  }
318
322
  /**
319
323
  * Button configuration object.
package/lib/version.d.ts CHANGED
@@ -2,4 +2,4 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export declare const VERSION = "4.0.934";
5
+ export declare const VERSION = "4.0.935";
@@ -8,7 +8,6 @@ export type { MiniGameScorePopMetadata, MiniGameScorePopVariant } from 'valtech-
8
8
  export { MiniGamePlayerProfileService } from 'valtech-components';
9
9
  export { RetroAudioService } from 'valtech-components';
10
10
  export { MINI_GAMES_I18N } from 'valtech-components';
11
- export type { ChessimalsBoardCellSkin, ChessimalsBoardCellTextureSkin, ChessimalsBoardFrameSkin, ChessimalsBoardThemePreset, ChessimalsEffectSkin, ChessimalsLandscapeSkin, ChessimalsPawnSkin, ChessimalsVisualTheme, } from 'valtech-components';
12
11
  export interface ValtechMiniGamesRoutesOptions {
13
12
  path?: string;
14
13
  canActivate?: Route['canActivate'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valtech-components",
3
- "version": "4.0.934",
3
+ "version": "4.0.935",
4
4
  "private": false,
5
5
  "bin": {
6
6
  "valtech-firebase-config": "./src/lib/services/firebase/scripts/generate-sw-config.js"