valtech-components 4.0.425 → 4.0.427
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/mini-games/chessimals-engine.mjs +22 -33
- package/esm2022/lib/components/organisms/mini-games/christianity-game.component.mjs +505 -0
- package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +51 -1
- package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/mini-games/public-api.mjs +34 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/valtech-components-mini-games.mjs +34 -2
- package/fesm2022/valtech-components-mini-games.mjs.map +1 -1
- package/fesm2022/valtech-components.mjs +574 -34
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +1 -1
- package/lib/components/organisms/mini-games/christianity-game.component.d.ts +35 -0
- package/lib/components/organisms/mini-games/types.d.ts +45 -0
- package/lib/version.d.ts +1 -1
- package/mini-games/public-api.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -58,7 +58,7 @@ import fixWebmDuration from 'fix-webm-duration';
|
|
|
58
58
|
* Current version of valtech-components.
|
|
59
59
|
* This is automatically updated during the publish process.
|
|
60
60
|
*/
|
|
61
|
-
const VERSION = '4.0.
|
|
61
|
+
const VERSION = '4.0.427';
|
|
62
62
|
|
|
63
63
|
// Control de estado de refresco (singleton a nivel de módulo)
|
|
64
64
|
let isRefreshing = false;
|
|
@@ -61174,8 +61174,17 @@ function chooseChessimalsBotMove(state, difficulty = 'normal', profileId = DEFAU
|
|
|
61174
61174
|
if (moves.length === 0)
|
|
61175
61175
|
return undefined;
|
|
61176
61176
|
const style = BOT_STYLES[profileId] ?? BOT_STYLES[DEFAULT_BOT_PROFILE_BY_DIFFICULTY[difficulty]];
|
|
61177
|
-
const
|
|
61178
|
-
.map((move) => ({ move, score:
|
|
61177
|
+
const quickScored = moves
|
|
61178
|
+
.map((move) => ({ move, score: scoreBotMove(state, move, difficulty, style) }))
|
|
61179
|
+
.sort((a, b) => b.score - a.score);
|
|
61180
|
+
const lookaheadLimit = difficulty === 'hard' ? 32 : difficulty === 'normal' ? 24 : 0;
|
|
61181
|
+
const scored = quickScored
|
|
61182
|
+
.map((item, index) => ({
|
|
61183
|
+
move: item.move,
|
|
61184
|
+
score: index < lookaheadLimit
|
|
61185
|
+
? scoreBotMoveWithLookahead(state, item.move, difficulty, style)
|
|
61186
|
+
: item.score,
|
|
61187
|
+
}))
|
|
61179
61188
|
.sort((a, b) => b.score - a.score);
|
|
61180
61189
|
if (difficulty === 'easy') {
|
|
61181
61190
|
const playable = scored.filter((item) => item.score > -3000);
|
|
@@ -61434,7 +61443,7 @@ function getKangarooMoves(state, piece) {
|
|
|
61434
61443
|
}
|
|
61435
61444
|
return moves;
|
|
61436
61445
|
}
|
|
61437
|
-
function scoreBotMove(state, move, difficulty, style) {
|
|
61446
|
+
function scoreBotMove(state, move, difficulty, style, includeTacticalPressure = true) {
|
|
61438
61447
|
const color = state.currentTurn;
|
|
61439
61448
|
const targetPiece = move.capturesPieceId
|
|
61440
61449
|
? activePieces(state).find((piece) => piece.id === move.capturesPieceId)
|
|
@@ -61460,9 +61469,14 @@ function scoreBotMove(state, move, difficulty, style) {
|
|
|
61460
61469
|
score += 14 * style.power;
|
|
61461
61470
|
if (wouldUnlockPower(state, color, move.to))
|
|
61462
61471
|
score += 90 * style.unlock;
|
|
61463
|
-
|
|
61464
|
-
|
|
61465
|
-
|
|
61472
|
+
if (includeTacticalPressure && state.boardSize <= 6) {
|
|
61473
|
+
score += countPowerReachAfterMove(state, move, color) * (difficulty === 'hard' ? 8 : 4) * style.mobility;
|
|
61474
|
+
score += countProtectedThreatsAfterMove(state, move, color) * (difficulty === 'hard' ? 36 : 18) * style.trap;
|
|
61475
|
+
score += scoreEndgamePressure(state, move, color) * style.endgame;
|
|
61476
|
+
}
|
|
61477
|
+
else {
|
|
61478
|
+
score += scoreEndgamePressure(state, move, color) * style.endgame;
|
|
61479
|
+
}
|
|
61466
61480
|
if (difficulty === 'hard' && isSquareVulnerableAfterMove(state, move)) {
|
|
61467
61481
|
score -= (targetPiece ? 80 : 140) * style.safety;
|
|
61468
61482
|
}
|
|
@@ -61493,15 +61507,12 @@ function scoreBotMoveWithLookahead(state, move, difficulty, style) {
|
|
|
61493
61507
|
score += centerControl * (difficulty === 'hard' ? 18 : 10) * style.center;
|
|
61494
61508
|
}
|
|
61495
61509
|
const opponentBestReply = opponentMoves
|
|
61496
|
-
.map((opponentMove) => scoreBotMove(afterMove, opponentMove, difficulty, style))
|
|
61510
|
+
.map((opponentMove) => scoreBotMove(afterMove, opponentMove, difficulty, style, false))
|
|
61497
61511
|
.sort((a, b) => b - a)[0];
|
|
61498
61512
|
if (opponentBestReply) {
|
|
61499
61513
|
const replyWeight = difficulty === 'easy' ? 0.12 : difficulty === 'normal' ? 0.32 : 0.48;
|
|
61500
61514
|
score -= opponentBestReply * replyWeight * style.reply;
|
|
61501
61515
|
}
|
|
61502
|
-
if (difficulty === 'hard') {
|
|
61503
|
-
score += scoreBestCounterplay(afterMove, state.currentTurn, style) * 0.28;
|
|
61504
|
-
}
|
|
61505
61516
|
}
|
|
61506
61517
|
catch {
|
|
61507
61518
|
score -= 1000;
|
|
@@ -61536,28 +61547,6 @@ function scoreEndgamePressure(state, move, color) {
|
|
|
61536
61547
|
const distanceToPromotion = color === 'white' ? move.to.row : state.boardSize - 1 - move.to.row;
|
|
61537
61548
|
return Math.max(0, state.boardSize - distanceToPromotion) * 14 * urgency;
|
|
61538
61549
|
}
|
|
61539
|
-
function scoreBestCounterplay(afterMove, color, style) {
|
|
61540
|
-
const opponentMoves = getChessimalsAllLegalMoves(afterMove);
|
|
61541
|
-
if (opponentMoves.length === 0)
|
|
61542
|
-
return 900;
|
|
61543
|
-
const replies = opponentMoves.slice(0, 16).map((opponentMove) => {
|
|
61544
|
-
try {
|
|
61545
|
-
const afterReply = applyChessimalsMove(afterMove, opponentMove);
|
|
61546
|
-
if (afterReply.status === 'finished')
|
|
61547
|
-
return -6000;
|
|
61548
|
-
const counterState = { ...afterReply, currentTurn: color };
|
|
61549
|
-
const counterMoves = getChessimalsAllLegalMoves(counterState, color);
|
|
61550
|
-
const bestCounter = counterMoves
|
|
61551
|
-
.map((counterMove) => scoreBotMove(counterState, counterMove, 'hard', style))
|
|
61552
|
-
.sort((a, b) => b - a)[0] ?? 0;
|
|
61553
|
-
return bestCounter;
|
|
61554
|
-
}
|
|
61555
|
-
catch {
|
|
61556
|
-
return -1000;
|
|
61557
|
-
}
|
|
61558
|
-
});
|
|
61559
|
-
return Math.min(...replies);
|
|
61560
|
-
}
|
|
61561
61550
|
function pickNoisyBotMove(scored, spread) {
|
|
61562
61551
|
if (scored.length === 0)
|
|
61563
61552
|
return undefined;
|
|
@@ -62466,6 +62455,31 @@ const MINI_GAMES_I18N = {
|
|
|
62466
62455
|
bubbleDescription: 'Revienta grupos de burbujas, encadena combos y sube tu puntaje.',
|
|
62467
62456
|
chessimalsTitle: 'Chessimals',
|
|
62468
62457
|
chessimalsDescription: 'Una carrera de peones con cartas de animales y poderes tácticos.',
|
|
62458
|
+
christianityTitle: 'Christianity',
|
|
62459
|
+
christianityDescription: 'Un juego de cartas familiar con líderes, ofrendas y decisiones tácticas.',
|
|
62460
|
+
christianityEyebrow: 'MVP de mesa',
|
|
62461
|
+
christianityTable: 'Mesa de Christianity',
|
|
62462
|
+
christianityTurn: 'Turno',
|
|
62463
|
+
christianityOfferings: 'Ofrendas',
|
|
62464
|
+
christianityHand: 'Mano',
|
|
62465
|
+
christianityOpponentBattle: 'Zona de batalla rival',
|
|
62466
|
+
christianityYourBattle: 'Tu zona de batalla',
|
|
62467
|
+
christianitySharedZone: 'Zona compartida',
|
|
62468
|
+
christianityHistory: 'Historia',
|
|
62469
|
+
christianityDeck: 'Mazo',
|
|
62470
|
+
christianityPlace: 'Lugar',
|
|
62471
|
+
christianityEmpty: 'Vacío',
|
|
62472
|
+
christianityYourHand: 'Tu mano',
|
|
62473
|
+
christianityCost: 'Coste',
|
|
62474
|
+
christianityEndTurn: 'Terminar turno',
|
|
62475
|
+
christianityPlayCard: 'Jugar carta',
|
|
62476
|
+
christianityReset: 'Reiniciar mock',
|
|
62477
|
+
christianityWaitTurn: 'Espera el turno rival.',
|
|
62478
|
+
christianityChooseTarget: 'Elige un objetivo para atacar.',
|
|
62479
|
+
christianityReadyToPlay: 'Puedes jugar esta carta.',
|
|
62480
|
+
christianityNeedOfferings: 'Necesitas más ofrendas para jugar esa carta.',
|
|
62481
|
+
christianityChooseCard: 'Elige una carta o un personaje listo para actuar.',
|
|
62482
|
+
christianityHistoryEmpty: 'Todavía no hay cartas en historia.',
|
|
62469
62483
|
soonTitle: 'Próximamente',
|
|
62470
62484
|
openGame: 'Jugar',
|
|
62471
62485
|
close: 'Cerrar',
|
|
@@ -62845,6 +62859,31 @@ const MINI_GAMES_I18N = {
|
|
|
62845
62859
|
bubbleDescription: 'Pop bubble groups, chain combos, and push your score higher.',
|
|
62846
62860
|
chessimalsTitle: 'Chessimals',
|
|
62847
62861
|
chessimalsDescription: 'A pawn race with animal cards and tactical powers.',
|
|
62862
|
+
christianityTitle: 'Christianity',
|
|
62863
|
+
christianityDescription: 'A family card game with leaders, offerings, and tactical choices.',
|
|
62864
|
+
christianityEyebrow: 'Table MVP',
|
|
62865
|
+
christianityTable: 'Christianity table',
|
|
62866
|
+
christianityTurn: 'Turn',
|
|
62867
|
+
christianityOfferings: 'Offerings',
|
|
62868
|
+
christianityHand: 'Hand',
|
|
62869
|
+
christianityOpponentBattle: 'Opponent battle zone',
|
|
62870
|
+
christianityYourBattle: 'Your battle zone',
|
|
62871
|
+
christianitySharedZone: 'Shared zone',
|
|
62872
|
+
christianityHistory: 'History',
|
|
62873
|
+
christianityDeck: 'Deck',
|
|
62874
|
+
christianityPlace: 'Place',
|
|
62875
|
+
christianityEmpty: 'Empty',
|
|
62876
|
+
christianityYourHand: 'Your hand',
|
|
62877
|
+
christianityCost: 'Cost',
|
|
62878
|
+
christianityEndTurn: 'End turn',
|
|
62879
|
+
christianityPlayCard: 'Play card',
|
|
62880
|
+
christianityReset: 'Reset mock',
|
|
62881
|
+
christianityWaitTurn: 'Wait for the opponent turn.',
|
|
62882
|
+
christianityChooseTarget: 'Choose a target to attack.',
|
|
62883
|
+
christianityReadyToPlay: 'You can play this card.',
|
|
62884
|
+
christianityNeedOfferings: 'You need more offerings to play that card.',
|
|
62885
|
+
christianityChooseCard: 'Choose a card or a ready character.',
|
|
62886
|
+
christianityHistoryEmpty: 'There are no cards in history yet.',
|
|
62848
62887
|
soonTitle: 'Coming soon',
|
|
62849
62888
|
openGame: 'Play',
|
|
62850
62889
|
close: 'Close',
|
|
@@ -67833,6 +67872,507 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
67833
67872
|
type: Input
|
|
67834
67873
|
}] } });
|
|
67835
67874
|
|
|
67875
|
+
const STARTER_CARDS = {
|
|
67876
|
+
p_scout: { id: 'p_scout', name: 'Scout', cost: 1, attack: 1, life: 1 },
|
|
67877
|
+
p_guard: { id: 'p_guard', name: 'Guard', cost: 2, attack: 1, life: 3 },
|
|
67878
|
+
p_warrior: { id: 'p_warrior', name: 'Warrior', cost: 2, attack: 2, life: 2 },
|
|
67879
|
+
p_elder: { id: 'p_elder', name: 'Elder', cost: 3, attack: 2, life: 4 },
|
|
67880
|
+
p_champion: { id: 'p_champion', name: 'Champion', cost: 4, attack: 4, life: 4 },
|
|
67881
|
+
};
|
|
67882
|
+
const STARTING_GAME = {
|
|
67883
|
+
gameId: 'mock-christianity',
|
|
67884
|
+
status: 'in_progress',
|
|
67885
|
+
mode: 'local_pass',
|
|
67886
|
+
turnOwner: 'P1',
|
|
67887
|
+
revision: 0,
|
|
67888
|
+
turnCount: 1,
|
|
67889
|
+
sharedDeckCount: 12,
|
|
67890
|
+
historyZone: [],
|
|
67891
|
+
players: {
|
|
67892
|
+
P1: {
|
|
67893
|
+
seat: 'P1',
|
|
67894
|
+
displayName: 'Jugador',
|
|
67895
|
+
leaderName: 'Adam',
|
|
67896
|
+
leaderHp: 15,
|
|
67897
|
+
leaderMaxHp: 15,
|
|
67898
|
+
maxOfferings: 3,
|
|
67899
|
+
offeringPoints: 3,
|
|
67900
|
+
hand: ['p_scout', 'p_warrior', 'p_guard', 'p_elder'],
|
|
67901
|
+
battleZone: [],
|
|
67902
|
+
},
|
|
67903
|
+
P2: {
|
|
67904
|
+
seat: 'P2',
|
|
67905
|
+
displayName: 'Rival',
|
|
67906
|
+
leaderName: 'Noah',
|
|
67907
|
+
leaderHp: 15,
|
|
67908
|
+
leaderMaxHp: 15,
|
|
67909
|
+
maxOfferings: 3,
|
|
67910
|
+
offeringPoints: 3,
|
|
67911
|
+
handCount: 4,
|
|
67912
|
+
battleZone: [
|
|
67913
|
+
{
|
|
67914
|
+
instanceId: 'opp_001',
|
|
67915
|
+
cardId: 'p_scout',
|
|
67916
|
+
name: 'Scout',
|
|
67917
|
+
owner: 'P2',
|
|
67918
|
+
controller: 'P2',
|
|
67919
|
+
attack: 1,
|
|
67920
|
+
currentHp: 1,
|
|
67921
|
+
maxHp: 1,
|
|
67922
|
+
canAttack: false,
|
|
67923
|
+
},
|
|
67924
|
+
],
|
|
67925
|
+
},
|
|
67926
|
+
},
|
|
67927
|
+
log: ['Partida iniciada.'],
|
|
67928
|
+
};
|
|
67929
|
+
class ChristianityGameComponent {
|
|
67930
|
+
constructor() {
|
|
67931
|
+
this.i18n = inject(I18nService);
|
|
67932
|
+
this.game = signal(structuredClone(STARTING_GAME));
|
|
67933
|
+
this.selectedHandCard = signal(null);
|
|
67934
|
+
this.selectedAttacker = signal(null);
|
|
67935
|
+
this.showHistory = signal(false);
|
|
67936
|
+
this.player = computed(() => this.game().players.P1);
|
|
67937
|
+
this.opponent = computed(() => this.game().players.P2);
|
|
67938
|
+
this.currentPlayer = computed(() => this.game().players[this.game().turnOwner]);
|
|
67939
|
+
this.isOwnTurn = computed(() => this.game().turnOwner === 'P1');
|
|
67940
|
+
this.opponentHandCount = computed(() => this.opponent().handCount ?? this.opponent().hand?.length ?? 0);
|
|
67941
|
+
this.statusText = computed(() => {
|
|
67942
|
+
const attacker = this.selectedAttacker();
|
|
67943
|
+
const handCard = this.selectedHandCard();
|
|
67944
|
+
if (!this.isOwnTurn()) {
|
|
67945
|
+
return this.t('christianityWaitTurn');
|
|
67946
|
+
}
|
|
67947
|
+
if (attacker) {
|
|
67948
|
+
return this.t('christianityChooseTarget');
|
|
67949
|
+
}
|
|
67950
|
+
if (handCard) {
|
|
67951
|
+
const card = this.cardDefinition(handCard);
|
|
67952
|
+
return this.canPlay(card) ? this.t('christianityReadyToPlay') : this.t('christianityNeedOfferings');
|
|
67953
|
+
}
|
|
67954
|
+
return this.t('christianityChooseCard');
|
|
67955
|
+
});
|
|
67956
|
+
this.i18n.registerDefaults('MiniGames', MINI_GAMES_I18N);
|
|
67957
|
+
}
|
|
67958
|
+
t(key) {
|
|
67959
|
+
this.i18n.lang();
|
|
67960
|
+
return this.i18n.t(key, 'MiniGames');
|
|
67961
|
+
}
|
|
67962
|
+
cardDefinition(cardId) {
|
|
67963
|
+
return STARTER_CARDS[cardId] ?? STARTER_CARDS['p_scout'];
|
|
67964
|
+
}
|
|
67965
|
+
battleSlots(seat) {
|
|
67966
|
+
const cards = this.game().players[seat].battleZone;
|
|
67967
|
+
return Array.from({ length: 5 }, (_, index) => ({
|
|
67968
|
+
trackId: cards[index]?.instanceId ?? `${seat}-empty-${index}`,
|
|
67969
|
+
card: cards[index],
|
|
67970
|
+
}));
|
|
67971
|
+
}
|
|
67972
|
+
canPlay(card) {
|
|
67973
|
+
return this.isOwnTurn() && this.player().offeringPoints >= card.cost && this.player().battleZone.length < 5;
|
|
67974
|
+
}
|
|
67975
|
+
canPlaySelected() {
|
|
67976
|
+
const selected = this.selectedHandCard();
|
|
67977
|
+
return !!selected && this.canPlay(this.cardDefinition(selected));
|
|
67978
|
+
}
|
|
67979
|
+
selectHandCard(cardId) {
|
|
67980
|
+
this.selectedAttacker.set(null);
|
|
67981
|
+
this.selectedHandCard.set(this.selectedHandCard() === cardId ? null : cardId);
|
|
67982
|
+
}
|
|
67983
|
+
playSelectedCard() {
|
|
67984
|
+
const cardId = this.selectedHandCard();
|
|
67985
|
+
if (!cardId)
|
|
67986
|
+
return;
|
|
67987
|
+
const card = this.cardDefinition(cardId);
|
|
67988
|
+
if (!this.canPlay(card))
|
|
67989
|
+
return;
|
|
67990
|
+
this.game.update(game => {
|
|
67991
|
+
const next = structuredClone(game);
|
|
67992
|
+
const player = next.players.P1;
|
|
67993
|
+
const handIndex = player.hand?.indexOf(cardId) ?? -1;
|
|
67994
|
+
if (handIndex < 0 || !player.hand)
|
|
67995
|
+
return game;
|
|
67996
|
+
player.hand.splice(handIndex, 1);
|
|
67997
|
+
player.offeringPoints -= card.cost;
|
|
67998
|
+
player.battleZone.push({
|
|
67999
|
+
instanceId: `p1_${next.revision + 1}_${player.battleZone.length}`,
|
|
68000
|
+
cardId: card.id,
|
|
68001
|
+
name: card.name,
|
|
68002
|
+
owner: 'P1',
|
|
68003
|
+
controller: 'P1',
|
|
68004
|
+
attack: card.attack,
|
|
68005
|
+
currentHp: card.life,
|
|
68006
|
+
maxHp: card.life,
|
|
68007
|
+
canAttack: false,
|
|
68008
|
+
});
|
|
68009
|
+
next.revision++;
|
|
68010
|
+
next.log = [`${card.name} entra en batalla.`, ...next.log].slice(0, 4);
|
|
68011
|
+
return next;
|
|
68012
|
+
});
|
|
68013
|
+
this.selectedHandCard.set(null);
|
|
68014
|
+
}
|
|
68015
|
+
selectAttacker(card) {
|
|
68016
|
+
this.selectedHandCard.set(null);
|
|
68017
|
+
if (!this.isOwnTurn() || !card.canAttack)
|
|
68018
|
+
return;
|
|
68019
|
+
this.selectedAttacker.set(this.selectedAttacker()?.instanceId === card.instanceId ? null : card);
|
|
68020
|
+
}
|
|
68021
|
+
attackLeader() {
|
|
68022
|
+
const attacker = this.selectedAttacker();
|
|
68023
|
+
if (!attacker)
|
|
68024
|
+
return;
|
|
68025
|
+
this.game.update(game => {
|
|
68026
|
+
const next = structuredClone(game);
|
|
68027
|
+
const liveAttacker = next.players.P1.battleZone.find(card => card.instanceId === attacker.instanceId);
|
|
68028
|
+
if (!liveAttacker || !liveAttacker.canAttack)
|
|
68029
|
+
return game;
|
|
68030
|
+
next.players.P2.leaderHp = Math.max(0, next.players.P2.leaderHp - liveAttacker.attack);
|
|
68031
|
+
liveAttacker.canAttack = false;
|
|
68032
|
+
next.revision++;
|
|
68033
|
+
next.log = [`${liveAttacker.name} ataca al lider rival.`, ...next.log].slice(0, 4);
|
|
68034
|
+
return next;
|
|
68035
|
+
});
|
|
68036
|
+
this.selectedAttacker.set(null);
|
|
68037
|
+
}
|
|
68038
|
+
attackCharacter(target) {
|
|
68039
|
+
const attacker = this.selectedAttacker();
|
|
68040
|
+
if (!attacker)
|
|
68041
|
+
return;
|
|
68042
|
+
this.game.update(game => {
|
|
68043
|
+
const next = structuredClone(game);
|
|
68044
|
+
const liveAttacker = next.players.P1.battleZone.find(card => card.instanceId === attacker.instanceId);
|
|
68045
|
+
const liveTarget = next.players.P2.battleZone.find(card => card.instanceId === target.instanceId);
|
|
68046
|
+
if (!liveAttacker || !liveTarget || !liveAttacker.canAttack)
|
|
68047
|
+
return game;
|
|
68048
|
+
liveTarget.currentHp -= liveAttacker.attack;
|
|
68049
|
+
liveAttacker.currentHp -= liveTarget.attack;
|
|
68050
|
+
liveAttacker.canAttack = false;
|
|
68051
|
+
this.cleanupDestroyed(next.players.P1, next);
|
|
68052
|
+
this.cleanupDestroyed(next.players.P2, next);
|
|
68053
|
+
next.revision++;
|
|
68054
|
+
next.log = [`${liveAttacker.name} combate contra ${liveTarget.name}.`, ...next.log].slice(0, 4);
|
|
68055
|
+
return next;
|
|
68056
|
+
});
|
|
68057
|
+
this.selectedAttacker.set(null);
|
|
68058
|
+
}
|
|
68059
|
+
endTurn() {
|
|
68060
|
+
this.selectedHandCard.set(null);
|
|
68061
|
+
this.selectedAttacker.set(null);
|
|
68062
|
+
this.game.update(game => {
|
|
68063
|
+
const next = structuredClone(game);
|
|
68064
|
+
next.turnOwner = next.turnOwner === 'P1' ? 'P2' : 'P1';
|
|
68065
|
+
next.turnCount++;
|
|
68066
|
+
const current = next.players[next.turnOwner];
|
|
68067
|
+
current.maxOfferings = Math.min(10, current.maxOfferings + 1);
|
|
68068
|
+
current.offeringPoints = current.maxOfferings;
|
|
68069
|
+
current.battleZone = current.battleZone.map(card => ({ ...card, canAttack: true }));
|
|
68070
|
+
next.revision++;
|
|
68071
|
+
next.log = [`Turno de ${current.displayName}.`, ...next.log].slice(0, 4);
|
|
68072
|
+
return next;
|
|
68073
|
+
});
|
|
68074
|
+
}
|
|
68075
|
+
resetMock() {
|
|
68076
|
+
this.game.set(structuredClone(STARTING_GAME));
|
|
68077
|
+
this.selectedHandCard.set(null);
|
|
68078
|
+
this.selectedAttacker.set(null);
|
|
68079
|
+
}
|
|
68080
|
+
historyNames() {
|
|
68081
|
+
return this.game()
|
|
68082
|
+
.historyZone.map(cardId => this.cardDefinition(cardId).name)
|
|
68083
|
+
.join(', ');
|
|
68084
|
+
}
|
|
68085
|
+
cleanupDestroyed(player, game) {
|
|
68086
|
+
const destroyed = player.battleZone.filter(card => card.currentHp <= 0);
|
|
68087
|
+
if (!destroyed.length)
|
|
68088
|
+
return;
|
|
68089
|
+
game.historyZone.push(...destroyed.map(card => card.cardId));
|
|
68090
|
+
player.battleZone = player.battleZone.filter(card => card.currentHp > 0);
|
|
68091
|
+
}
|
|
68092
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChristianityGameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
68093
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChristianityGameComponent, isStandalone: true, selector: "val-christianity-game", ngImport: i0, template: `
|
|
68094
|
+
<main class="christianity-shell">
|
|
68095
|
+
<section class="christianity-header">
|
|
68096
|
+
<div>
|
|
68097
|
+
<p>{{ t('christianityEyebrow') }}</p>
|
|
68098
|
+
<h1>{{ t('christianityTitle') }}</h1>
|
|
68099
|
+
</div>
|
|
68100
|
+
<div class="christianity-turn" [class.is-own-turn]="isOwnTurn()">
|
|
68101
|
+
<span>{{ t('christianityTurn') }}</span>
|
|
68102
|
+
<strong>{{ currentPlayer().displayName }}</strong>
|
|
68103
|
+
</div>
|
|
68104
|
+
</section>
|
|
68105
|
+
|
|
68106
|
+
<section class="christianity-table" [attr.aria-label]="t('christianityTable')">
|
|
68107
|
+
<section class="christianity-player christianity-player--opponent">
|
|
68108
|
+
<div class="christianity-player__summary">
|
|
68109
|
+
<div class="christianity-leader">
|
|
68110
|
+
<span>{{ opponent().leaderName }}</span>
|
|
68111
|
+
<strong>{{ opponent().leaderHp }}/{{ opponent().leaderMaxHp }}</strong>
|
|
68112
|
+
</div>
|
|
68113
|
+
<div class="christianity-offerings">
|
|
68114
|
+
<span>{{ t('christianityOfferings') }}</span>
|
|
68115
|
+
<strong>{{ opponent().offeringPoints }}/{{ opponent().maxOfferings }}</strong>
|
|
68116
|
+
</div>
|
|
68117
|
+
<div class="christianity-hidden-hand">
|
|
68118
|
+
<span>{{ t('christianityHand') }}</span>
|
|
68119
|
+
<strong>{{ opponentHandCount() }}</strong>
|
|
68120
|
+
</div>
|
|
68121
|
+
</div>
|
|
68122
|
+
<div class="christianity-battle-zone" [attr.aria-label]="t('christianityOpponentBattle')">
|
|
68123
|
+
@for (slot of battleSlots('P2'); track slot.trackId) {
|
|
68124
|
+
@if (slot.card) {
|
|
68125
|
+
<button
|
|
68126
|
+
type="button"
|
|
68127
|
+
class="christianity-card christianity-card--battle"
|
|
68128
|
+
[class.is-target]="selectedAttacker()"
|
|
68129
|
+
(click)="attackCharacter(slot.card)"
|
|
68130
|
+
>
|
|
68131
|
+
<span>{{ slot.card.name }}</span>
|
|
68132
|
+
<strong>{{ slot.card.attack }} / {{ slot.card.currentHp }}</strong>
|
|
68133
|
+
</button>
|
|
68134
|
+
} @else {
|
|
68135
|
+
<span class="christianity-slot"></span>
|
|
68136
|
+
}
|
|
68137
|
+
}
|
|
68138
|
+
</div>
|
|
68139
|
+
</section>
|
|
68140
|
+
|
|
68141
|
+
<section class="christianity-shared-zone" [attr.aria-label]="t('christianitySharedZone')">
|
|
68142
|
+
<button type="button" class="christianity-pile" (click)="showHistory.set(!showHistory())">
|
|
68143
|
+
<span>{{ t('christianityHistory') }}</span>
|
|
68144
|
+
<strong>{{ game().historyZone.length }}</strong>
|
|
68145
|
+
</button>
|
|
68146
|
+
<div class="christianity-deck" aria-live="polite">
|
|
68147
|
+
<span>{{ t('christianityDeck') }}</span>
|
|
68148
|
+
<strong>{{ game().sharedDeckCount }}</strong>
|
|
68149
|
+
</div>
|
|
68150
|
+
<div class="christianity-place">
|
|
68151
|
+
<span>{{ t('christianityPlace') }}</span>
|
|
68152
|
+
<strong>{{ t('christianityEmpty') }}</strong>
|
|
68153
|
+
</div>
|
|
68154
|
+
</section>
|
|
68155
|
+
|
|
68156
|
+
<section class="christianity-player">
|
|
68157
|
+
<div class="christianity-battle-zone" [attr.aria-label]="t('christianityYourBattle')">
|
|
68158
|
+
@for (slot of battleSlots('P1'); track slot.trackId) {
|
|
68159
|
+
@if (slot.card) {
|
|
68160
|
+
<button
|
|
68161
|
+
type="button"
|
|
68162
|
+
class="christianity-card christianity-card--battle"
|
|
68163
|
+
[class.is-selected]="selectedAttacker()?.instanceId === slot.card.instanceId"
|
|
68164
|
+
[class.is-exhausted]="!slot.card.canAttack"
|
|
68165
|
+
(click)="selectAttacker(slot.card)"
|
|
68166
|
+
>
|
|
68167
|
+
<span>{{ slot.card.name }}</span>
|
|
68168
|
+
<strong>{{ slot.card.attack }} / {{ slot.card.currentHp }}</strong>
|
|
68169
|
+
</button>
|
|
68170
|
+
} @else {
|
|
68171
|
+
<span class="christianity-slot"></span>
|
|
68172
|
+
}
|
|
68173
|
+
}
|
|
68174
|
+
</div>
|
|
68175
|
+
<div class="christianity-player__summary">
|
|
68176
|
+
<div class="christianity-offerings">
|
|
68177
|
+
<span>{{ t('christianityOfferings') }}</span>
|
|
68178
|
+
<strong>{{ player().offeringPoints }}/{{ player().maxOfferings }}</strong>
|
|
68179
|
+
</div>
|
|
68180
|
+
<button type="button" class="christianity-leader Christianity-leader--target" (click)="attackLeader()">
|
|
68181
|
+
<span>{{ player().leaderName }}</span>
|
|
68182
|
+
<strong>{{ player().leaderHp }}/{{ player().leaderMaxHp }}</strong>
|
|
68183
|
+
</button>
|
|
68184
|
+
<button type="button" class="christianity-end-turn" (click)="endTurn()">
|
|
68185
|
+
{{ t('christianityEndTurn') }}
|
|
68186
|
+
</button>
|
|
68187
|
+
</div>
|
|
68188
|
+
</section>
|
|
68189
|
+
</section>
|
|
68190
|
+
|
|
68191
|
+
<section class="christianity-hand" [attr.aria-label]="t('christianityYourHand')">
|
|
68192
|
+
@for (cardId of player().hand ?? []; track cardId + $index) {
|
|
68193
|
+
@let card = cardDefinition(cardId);
|
|
68194
|
+
<button
|
|
68195
|
+
type="button"
|
|
68196
|
+
class="christianity-card christianity-card--hand"
|
|
68197
|
+
[class.is-selected]="selectedHandCard() === cardId"
|
|
68198
|
+
[class.is-disabled]="!canPlay(card)"
|
|
68199
|
+
(click)="selectHandCard(cardId)"
|
|
68200
|
+
>
|
|
68201
|
+
<small>{{ t('christianityCost') }} {{ card.cost }}</small>
|
|
68202
|
+
<span>{{ card.name }}</span>
|
|
68203
|
+
<strong>{{ card.attack }} / {{ card.life }}</strong>
|
|
68204
|
+
</button>
|
|
68205
|
+
}
|
|
68206
|
+
</section>
|
|
68207
|
+
|
|
68208
|
+
<section class="christianity-actions" aria-live="polite">
|
|
68209
|
+
<p>{{ statusText() }}</p>
|
|
68210
|
+
<div>
|
|
68211
|
+
<button type="button" [disabled]="!selectedHandCard() || !canPlaySelected()" (click)="playSelectedCard()">
|
|
68212
|
+
{{ t('christianityPlayCard') }}
|
|
68213
|
+
</button>
|
|
68214
|
+
<button type="button" (click)="resetMock()">
|
|
68215
|
+
{{ t('christianityReset') }}
|
|
68216
|
+
</button>
|
|
68217
|
+
</div>
|
|
68218
|
+
</section>
|
|
68219
|
+
|
|
68220
|
+
@if (showHistory()) {
|
|
68221
|
+
<section class="christianity-history">
|
|
68222
|
+
<h2>{{ t('christianityHistory') }}</h2>
|
|
68223
|
+
@if (game().historyZone.length) {
|
|
68224
|
+
<p>{{ historyNames() }}</p>
|
|
68225
|
+
} @else {
|
|
68226
|
+
<p>{{ t('christianityHistoryEmpty') }}</p>
|
|
68227
|
+
}
|
|
68228
|
+
</section>
|
|
68229
|
+
}
|
|
68230
|
+
</main>
|
|
68231
|
+
`, isInline: true, styles: [":host{display:block;color:var(--val-text-color, #1f2933)}.christianity-shell{display:grid;gap:.875rem;padding:1rem;border:1px solid rgba(36,48,68,.12);border-radius:.75rem;background:#f6f8fb}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-header h1,.christianity-header p,.christianity-history h2,.christianity-actions p{margin:0}.christianity-header h1{font-size:1.35rem;line-height:1.1}.christianity-header p,.christianity-turn span,.christianity-offerings span,.christianity-hidden-hand span,.christianity-deck span,.christianity-place span,.christianity-pile span,.christianity-leader span{color:#1f2933a3;font-size:.75rem}.christianity-turn,.christianity-leader,.christianity-offerings,.christianity-hidden-hand,.christianity-pile,.christianity-deck,.christianity-place{display:grid;gap:.15rem;min-width:5.25rem;padding:.55rem .65rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#fff}.christianity-turn.is-own-turn{border-color:#12806c59;background:#ecfdf5}.christianity-table{display:grid;gap:.75rem;padding:.75rem;border-radius:.75rem;background:#dceafb}.christianity-player{display:grid;gap:.65rem}.christianity-battle-zone{display:grid;grid-template-columns:repeat(5,minmax(4.2rem,1fr));gap:.5rem;min-height:7rem;padding:.65rem;border-radius:.75rem;background:#ffffffc2}.christianity-shared-zone{padding:.65rem;border-radius:.75rem;background:#ffffffe6}.christianity-card,.christianity-end-turn,.christianity-actions button,.christianity-pile,.christianity-leader--target{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card{display:grid;align-content:space-between;min-height:5.8rem;padding:.5rem;text-align:left;box-shadow:0 .5rem 1.25rem #24304414}.christianity-card span{font-weight:700}.christianity-card strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-card.is-selected{border-color:#2563eb;box-shadow:0 0 0 .2rem #2563eb29}.christianity-card.is-disabled,.christianity-card.is-exhausted{opacity:.55}.christianity-card.is-target{border-color:#dc2626}.christianity-slot{min-height:5.8rem;border:1px dashed rgba(36,48,68,.22);border-radius:.5rem;background:#ffffff73}.christianity-hand{display:grid;grid-auto-columns:minmax(6rem,8rem);grid-auto-flow:column;gap:.55rem;overflow-x:auto;padding-bottom:.25rem}.christianity-actions{align-items:flex-start;padding:.75rem;border-radius:.75rem;background:#fff}.christianity-actions div{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.christianity-actions button,.christianity-end-turn{min-height:2.4rem;padding:0 .75rem;font-weight:700}.christianity-actions button:not(:disabled),.christianity-end-turn{background:#102a43;color:#fff}.christianity-history{padding:.75rem;border-radius:.75rem;background:#fff}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible{outline:.1875rem solid rgba(37,99,235,.24);outline-offset:.125rem}@media (max-width: 720px){.christianity-shell{padding:.75rem}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{align-items:stretch;flex-direction:column}.christianity-battle-zone{grid-template-columns:repeat(5,minmax(3.8rem,1fr));overflow-x:auto}}\n"] }); }
|
|
68232
|
+
}
|
|
68233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChristianityGameComponent, decorators: [{
|
|
68234
|
+
type: Component,
|
|
68235
|
+
args: [{ selector: 'val-christianity-game', standalone: true, template: `
|
|
68236
|
+
<main class="christianity-shell">
|
|
68237
|
+
<section class="christianity-header">
|
|
68238
|
+
<div>
|
|
68239
|
+
<p>{{ t('christianityEyebrow') }}</p>
|
|
68240
|
+
<h1>{{ t('christianityTitle') }}</h1>
|
|
68241
|
+
</div>
|
|
68242
|
+
<div class="christianity-turn" [class.is-own-turn]="isOwnTurn()">
|
|
68243
|
+
<span>{{ t('christianityTurn') }}</span>
|
|
68244
|
+
<strong>{{ currentPlayer().displayName }}</strong>
|
|
68245
|
+
</div>
|
|
68246
|
+
</section>
|
|
68247
|
+
|
|
68248
|
+
<section class="christianity-table" [attr.aria-label]="t('christianityTable')">
|
|
68249
|
+
<section class="christianity-player christianity-player--opponent">
|
|
68250
|
+
<div class="christianity-player__summary">
|
|
68251
|
+
<div class="christianity-leader">
|
|
68252
|
+
<span>{{ opponent().leaderName }}</span>
|
|
68253
|
+
<strong>{{ opponent().leaderHp }}/{{ opponent().leaderMaxHp }}</strong>
|
|
68254
|
+
</div>
|
|
68255
|
+
<div class="christianity-offerings">
|
|
68256
|
+
<span>{{ t('christianityOfferings') }}</span>
|
|
68257
|
+
<strong>{{ opponent().offeringPoints }}/{{ opponent().maxOfferings }}</strong>
|
|
68258
|
+
</div>
|
|
68259
|
+
<div class="christianity-hidden-hand">
|
|
68260
|
+
<span>{{ t('christianityHand') }}</span>
|
|
68261
|
+
<strong>{{ opponentHandCount() }}</strong>
|
|
68262
|
+
</div>
|
|
68263
|
+
</div>
|
|
68264
|
+
<div class="christianity-battle-zone" [attr.aria-label]="t('christianityOpponentBattle')">
|
|
68265
|
+
@for (slot of battleSlots('P2'); track slot.trackId) {
|
|
68266
|
+
@if (slot.card) {
|
|
68267
|
+
<button
|
|
68268
|
+
type="button"
|
|
68269
|
+
class="christianity-card christianity-card--battle"
|
|
68270
|
+
[class.is-target]="selectedAttacker()"
|
|
68271
|
+
(click)="attackCharacter(slot.card)"
|
|
68272
|
+
>
|
|
68273
|
+
<span>{{ slot.card.name }}</span>
|
|
68274
|
+
<strong>{{ slot.card.attack }} / {{ slot.card.currentHp }}</strong>
|
|
68275
|
+
</button>
|
|
68276
|
+
} @else {
|
|
68277
|
+
<span class="christianity-slot"></span>
|
|
68278
|
+
}
|
|
68279
|
+
}
|
|
68280
|
+
</div>
|
|
68281
|
+
</section>
|
|
68282
|
+
|
|
68283
|
+
<section class="christianity-shared-zone" [attr.aria-label]="t('christianitySharedZone')">
|
|
68284
|
+
<button type="button" class="christianity-pile" (click)="showHistory.set(!showHistory())">
|
|
68285
|
+
<span>{{ t('christianityHistory') }}</span>
|
|
68286
|
+
<strong>{{ game().historyZone.length }}</strong>
|
|
68287
|
+
</button>
|
|
68288
|
+
<div class="christianity-deck" aria-live="polite">
|
|
68289
|
+
<span>{{ t('christianityDeck') }}</span>
|
|
68290
|
+
<strong>{{ game().sharedDeckCount }}</strong>
|
|
68291
|
+
</div>
|
|
68292
|
+
<div class="christianity-place">
|
|
68293
|
+
<span>{{ t('christianityPlace') }}</span>
|
|
68294
|
+
<strong>{{ t('christianityEmpty') }}</strong>
|
|
68295
|
+
</div>
|
|
68296
|
+
</section>
|
|
68297
|
+
|
|
68298
|
+
<section class="christianity-player">
|
|
68299
|
+
<div class="christianity-battle-zone" [attr.aria-label]="t('christianityYourBattle')">
|
|
68300
|
+
@for (slot of battleSlots('P1'); track slot.trackId) {
|
|
68301
|
+
@if (slot.card) {
|
|
68302
|
+
<button
|
|
68303
|
+
type="button"
|
|
68304
|
+
class="christianity-card christianity-card--battle"
|
|
68305
|
+
[class.is-selected]="selectedAttacker()?.instanceId === slot.card.instanceId"
|
|
68306
|
+
[class.is-exhausted]="!slot.card.canAttack"
|
|
68307
|
+
(click)="selectAttacker(slot.card)"
|
|
68308
|
+
>
|
|
68309
|
+
<span>{{ slot.card.name }}</span>
|
|
68310
|
+
<strong>{{ slot.card.attack }} / {{ slot.card.currentHp }}</strong>
|
|
68311
|
+
</button>
|
|
68312
|
+
} @else {
|
|
68313
|
+
<span class="christianity-slot"></span>
|
|
68314
|
+
}
|
|
68315
|
+
}
|
|
68316
|
+
</div>
|
|
68317
|
+
<div class="christianity-player__summary">
|
|
68318
|
+
<div class="christianity-offerings">
|
|
68319
|
+
<span>{{ t('christianityOfferings') }}</span>
|
|
68320
|
+
<strong>{{ player().offeringPoints }}/{{ player().maxOfferings }}</strong>
|
|
68321
|
+
</div>
|
|
68322
|
+
<button type="button" class="christianity-leader Christianity-leader--target" (click)="attackLeader()">
|
|
68323
|
+
<span>{{ player().leaderName }}</span>
|
|
68324
|
+
<strong>{{ player().leaderHp }}/{{ player().leaderMaxHp }}</strong>
|
|
68325
|
+
</button>
|
|
68326
|
+
<button type="button" class="christianity-end-turn" (click)="endTurn()">
|
|
68327
|
+
{{ t('christianityEndTurn') }}
|
|
68328
|
+
</button>
|
|
68329
|
+
</div>
|
|
68330
|
+
</section>
|
|
68331
|
+
</section>
|
|
68332
|
+
|
|
68333
|
+
<section class="christianity-hand" [attr.aria-label]="t('christianityYourHand')">
|
|
68334
|
+
@for (cardId of player().hand ?? []; track cardId + $index) {
|
|
68335
|
+
@let card = cardDefinition(cardId);
|
|
68336
|
+
<button
|
|
68337
|
+
type="button"
|
|
68338
|
+
class="christianity-card christianity-card--hand"
|
|
68339
|
+
[class.is-selected]="selectedHandCard() === cardId"
|
|
68340
|
+
[class.is-disabled]="!canPlay(card)"
|
|
68341
|
+
(click)="selectHandCard(cardId)"
|
|
68342
|
+
>
|
|
68343
|
+
<small>{{ t('christianityCost') }} {{ card.cost }}</small>
|
|
68344
|
+
<span>{{ card.name }}</span>
|
|
68345
|
+
<strong>{{ card.attack }} / {{ card.life }}</strong>
|
|
68346
|
+
</button>
|
|
68347
|
+
}
|
|
68348
|
+
</section>
|
|
68349
|
+
|
|
68350
|
+
<section class="christianity-actions" aria-live="polite">
|
|
68351
|
+
<p>{{ statusText() }}</p>
|
|
68352
|
+
<div>
|
|
68353
|
+
<button type="button" [disabled]="!selectedHandCard() || !canPlaySelected()" (click)="playSelectedCard()">
|
|
68354
|
+
{{ t('christianityPlayCard') }}
|
|
68355
|
+
</button>
|
|
68356
|
+
<button type="button" (click)="resetMock()">
|
|
68357
|
+
{{ t('christianityReset') }}
|
|
68358
|
+
</button>
|
|
68359
|
+
</div>
|
|
68360
|
+
</section>
|
|
68361
|
+
|
|
68362
|
+
@if (showHistory()) {
|
|
68363
|
+
<section class="christianity-history">
|
|
68364
|
+
<h2>{{ t('christianityHistory') }}</h2>
|
|
68365
|
+
@if (game().historyZone.length) {
|
|
68366
|
+
<p>{{ historyNames() }}</p>
|
|
68367
|
+
} @else {
|
|
68368
|
+
<p>{{ t('christianityHistoryEmpty') }}</p>
|
|
68369
|
+
}
|
|
68370
|
+
</section>
|
|
68371
|
+
}
|
|
68372
|
+
</main>
|
|
68373
|
+
`, styles: [":host{display:block;color:var(--val-text-color, #1f2933)}.christianity-shell{display:grid;gap:.875rem;padding:1rem;border:1px solid rgba(36,48,68,.12);border-radius:.75rem;background:#f6f8fb}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-header h1,.christianity-header p,.christianity-history h2,.christianity-actions p{margin:0}.christianity-header h1{font-size:1.35rem;line-height:1.1}.christianity-header p,.christianity-turn span,.christianity-offerings span,.christianity-hidden-hand span,.christianity-deck span,.christianity-place span,.christianity-pile span,.christianity-leader span{color:#1f2933a3;font-size:.75rem}.christianity-turn,.christianity-leader,.christianity-offerings,.christianity-hidden-hand,.christianity-pile,.christianity-deck,.christianity-place{display:grid;gap:.15rem;min-width:5.25rem;padding:.55rem .65rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#fff}.christianity-turn.is-own-turn{border-color:#12806c59;background:#ecfdf5}.christianity-table{display:grid;gap:.75rem;padding:.75rem;border-radius:.75rem;background:#dceafb}.christianity-player{display:grid;gap:.65rem}.christianity-battle-zone{display:grid;grid-template-columns:repeat(5,minmax(4.2rem,1fr));gap:.5rem;min-height:7rem;padding:.65rem;border-radius:.75rem;background:#ffffffc2}.christianity-shared-zone{padding:.65rem;border-radius:.75rem;background:#ffffffe6}.christianity-card,.christianity-end-turn,.christianity-actions button,.christianity-pile,.christianity-leader--target{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card{display:grid;align-content:space-between;min-height:5.8rem;padding:.5rem;text-align:left;box-shadow:0 .5rem 1.25rem #24304414}.christianity-card span{font-weight:700}.christianity-card strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-card.is-selected{border-color:#2563eb;box-shadow:0 0 0 .2rem #2563eb29}.christianity-card.is-disabled,.christianity-card.is-exhausted{opacity:.55}.christianity-card.is-target{border-color:#dc2626}.christianity-slot{min-height:5.8rem;border:1px dashed rgba(36,48,68,.22);border-radius:.5rem;background:#ffffff73}.christianity-hand{display:grid;grid-auto-columns:minmax(6rem,8rem);grid-auto-flow:column;gap:.55rem;overflow-x:auto;padding-bottom:.25rem}.christianity-actions{align-items:flex-start;padding:.75rem;border-radius:.75rem;background:#fff}.christianity-actions div{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.christianity-actions button,.christianity-end-turn{min-height:2.4rem;padding:0 .75rem;font-weight:700}.christianity-actions button:not(:disabled),.christianity-end-turn{background:#102a43;color:#fff}.christianity-history{padding:.75rem;border-radius:.75rem;background:#fff}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible{outline:.1875rem solid rgba(37,99,235,.24);outline-offset:.125rem}@media (max-width: 720px){.christianity-shell{padding:.75rem}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{align-items:stretch;flex-direction:column}.christianity-battle-zone{grid-template-columns:repeat(5,minmax(3.8rem,1fr));overflow-x:auto}}\n"] }]
|
|
68374
|
+
}], ctorParameters: () => [] });
|
|
68375
|
+
|
|
67836
68376
|
addIcons({ refreshOutline, sparklesOutline, trophyOutline });
|
|
67837
68377
|
const BUBBLE_COLORS = {
|
|
67838
68378
|
rose: '#ff4f9f',
|
|
@@ -85385,5 +85925,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
85385
85925
|
* Generated bundle index. Do not edit.
|
|
85386
85926
|
*/
|
|
85387
85927
|
|
|
85388
|
-
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, BubbleBlitzGameComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHESSIMALS_BOT_PROFILES, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, ChatComposerComponent, ChatInputComponent, ChatWindowComponent, CheckInputComponent, CheckboxRadioInputComponent, ChessimalsGameComponent, ChessimalsOnlineService, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, 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_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, 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, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, EntityFeedService, ExpandableTextComponent, ExternalBrowserService, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSchemaBuilderService, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, 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, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LiveReadFallbackService, LoadMoreComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, META_SCHEMA_VERSION, METRIC_CARD_DEFAULTS, 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, MetricCardComponent, MfaModalComponent, MiniGamePlayerProfileService, MiniGamesMenuComponent, ModalLayoutComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OperationReferenceComponent, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, POST_UPDATE_TS_KEY, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PdfService, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneDisplayComponent, PhoneFormatService, PhoneInputComponent, PickerV2Component, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PricingTableComponent, ProcessLinksPipe, ProfileContentComponent, ProfileModalComponent, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, ReactionBarComponent, ReactionsService, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RetroAudioService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SessionTransitionOverlayComponent, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimonGameComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, 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_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_CHAT_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_REACTIONS_CONFIG, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, WorkflowService, applyChessimalsMove, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, chooseChessimalsBotMove, collections, connectPageRefresh, createChessimalsGame, createChessimalsReviewState, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialDatasetState, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, datasetPageFromLegacyCursor, docs, errorLoggingInterceptor, extractPathParams, formatClockTime, formatDateSeparator, formatRelativeTime, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getChessimalsAllLegalMoves, getChessimalsLegalMoves, getChessimalsPieceAt, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isKnownRoute, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, positionKey, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechChat, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationClickActions, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechReactions, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, rbacGuard, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resignChessimalsGame, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle, validateRoutes };
|
|
85928
|
+
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, BubbleBlitzGameComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHESSIMALS_BOT_PROFILES, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, ChatComposerComponent, ChatInputComponent, ChatWindowComponent, CheckInputComponent, CheckboxRadioInputComponent, ChessimalsGameComponent, ChessimalsOnlineService, ChipGroupComponent, ChristianityGameComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, 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_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, 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, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, EntityFeedService, ExpandableTextComponent, ExternalBrowserService, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSchemaBuilderService, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, 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, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LiveReadFallbackService, LoadMoreComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, META_SCHEMA_VERSION, METRIC_CARD_DEFAULTS, 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, MetricCardComponent, MfaModalComponent, MiniGamePlayerProfileService, MiniGamesMenuComponent, ModalLayoutComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OperationReferenceComponent, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, POST_UPDATE_TS_KEY, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PdfService, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneDisplayComponent, PhoneFormatService, PhoneInputComponent, PickerV2Component, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PricingTableComponent, ProcessLinksPipe, ProfileContentComponent, ProfileModalComponent, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, ReactionBarComponent, ReactionsService, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RetroAudioService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SessionTransitionOverlayComponent, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimonGameComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, 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_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_CHAT_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_REACTIONS_CONFIG, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, WorkflowService, applyChessimalsMove, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, chooseChessimalsBotMove, collections, connectPageRefresh, createChessimalsGame, createChessimalsReviewState, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialDatasetState, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, datasetPageFromLegacyCursor, docs, errorLoggingInterceptor, extractPathParams, formatClockTime, formatDateSeparator, formatRelativeTime, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getChessimalsAllLegalMoves, getChessimalsLegalMoves, getChessimalsPieceAt, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isKnownRoute, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, positionKey, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechChat, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationClickActions, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechReactions, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, rbacGuard, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resignChessimalsGame, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle, validateRoutes };
|
|
85389
85929
|
//# sourceMappingURL=valtech-components.mjs.map
|