valtech-components 2.0.713 → 2.0.714
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/cards-carousel/cards-carousel.component.mjs +63 -16
- package/esm2022/lib/components/organisms/cards-carousel/types.mjs +1 -1
- package/esm2022/lib/components/templates/simple/simple.component.mjs +7 -9
- package/esm2022/lib/services/auth/auth.service.mjs +33 -17
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +1 -12
- package/fesm2022/valtech-components.mjs +100 -1995
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/bottom-nav/bottom-nav.component.d.ts +1 -1
- package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +12 -6
- package/lib/components/organisms/cards-carousel/types.d.ts +32 -3
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +0 -11
- package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +0 -514
- package/esm2022/lib/components/molecules/participant-card/types.mjs +0 -21
- package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +0 -476
- package/esm2022/lib/components/molecules/raffle-status-card/types.mjs +0 -23
- package/esm2022/lib/components/molecules/recap-card/recap-card.component.mjs +0 -78
- package/esm2022/lib/components/molecules/recap-card/types.mjs +0 -2
- package/esm2022/lib/components/molecules/ticket-grid/ticket-grid.component.mjs +0 -489
- package/esm2022/lib/components/molecules/ticket-grid/types.mjs +0 -11
- package/esm2022/lib/components/molecules/winner-display/types.mjs +0 -9
- package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +0 -359
- package/esm2022/lib/components/templates/layout/layout.component.mjs +0 -19
- package/lib/components/molecules/participant-card/participant-card.component.d.ts +0 -34
- package/lib/components/molecules/participant-card/types.d.ts +0 -132
- package/lib/components/molecules/raffle-status-card/raffle-status-card.component.d.ts +0 -21
- package/lib/components/molecules/raffle-status-card/types.d.ts +0 -108
- package/lib/components/molecules/recap-card/recap-card.component.d.ts +0 -36
- package/lib/components/molecules/recap-card/types.d.ts +0 -30
- package/lib/components/molecules/ticket-grid/ticket-grid.component.d.ts +0 -40
- package/lib/components/molecules/ticket-grid/types.d.ts +0 -122
- package/lib/components/molecules/winner-display/types.d.ts +0 -103
- package/lib/components/molecules/winner-display/winner-display.component.d.ts +0 -36
- package/lib/components/templates/layout/layout.component.d.ts +0 -5
package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs
DELETED
|
@@ -1,476 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
3
|
-
import { IonIcon, IonBadge, IonProgressBar } from '@ionic/angular/standalone';
|
|
4
|
-
import { addIcons } from 'ionicons';
|
|
5
|
-
import { ticketOutline, calendarOutline, giftOutline, heartOutline, timeOutline, } from 'ionicons/icons';
|
|
6
|
-
import { ImageComponent } from '../../atoms/image/image.component';
|
|
7
|
-
import { ButtonComponent } from '../../atoms/button/button.component';
|
|
8
|
-
import { CountdownComponent } from '../../atoms/countdown/countdown.component';
|
|
9
|
-
import { PriceTagComponent } from '../../atoms/price-tag/price-tag.component';
|
|
10
|
-
import { DEFAULT_STATUS_LABELS, DEFAULT_STATUS_COLORS, } from './types';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
addIcons({
|
|
13
|
-
ticketOutline,
|
|
14
|
-
calendarOutline,
|
|
15
|
-
giftOutline,
|
|
16
|
-
heartOutline,
|
|
17
|
-
timeOutline,
|
|
18
|
-
});
|
|
19
|
-
/**
|
|
20
|
-
* val-raffle-status-card
|
|
21
|
-
*
|
|
22
|
-
* A card component for displaying raffle status and information.
|
|
23
|
-
*
|
|
24
|
-
* @example Basic usage
|
|
25
|
-
* ```html
|
|
26
|
-
* <val-raffle-status-card
|
|
27
|
-
* [props]="{
|
|
28
|
-
* title: 'Rifa Benéfica 2024',
|
|
29
|
-
* status: 'active',
|
|
30
|
-
* ticketPrice: 50,
|
|
31
|
-
* progress: {
|
|
32
|
-
* totalTickets: 1000,
|
|
33
|
-
* soldTickets: 450
|
|
34
|
-
* }
|
|
35
|
-
* }"
|
|
36
|
-
* ></val-raffle-status-card>
|
|
37
|
-
* ```
|
|
38
|
-
*
|
|
39
|
-
* @example Featured with prize
|
|
40
|
-
* ```html
|
|
41
|
-
* <val-raffle-status-card
|
|
42
|
-
* [props]="{
|
|
43
|
-
* title: 'Gran Sorteo iPhone 15',
|
|
44
|
-
* description: 'Participa y gana un iPhone 15 Pro Max',
|
|
45
|
-
* status: 'active',
|
|
46
|
-
* variant: 'featured',
|
|
47
|
-
* coverImage: { src: 'cover.jpg' },
|
|
48
|
-
* prize: {
|
|
49
|
-
* name: 'iPhone 15 Pro Max 256GB',
|
|
50
|
-
* value: 32000,
|
|
51
|
-
* image: { src: 'iphone.jpg' }
|
|
52
|
-
* },
|
|
53
|
-
* ticketPrice: 100,
|
|
54
|
-
* endDate: '2024-12-25',
|
|
55
|
-
* showCountdown: true,
|
|
56
|
-
* primaryAction: {
|
|
57
|
-
* label: 'Comprar boletos',
|
|
58
|
-
* color: 'success'
|
|
59
|
-
* }
|
|
60
|
-
* }"
|
|
61
|
-
* ></val-raffle-status-card>
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
export class RaffleStatusCardComponent {
|
|
65
|
-
constructor() {
|
|
66
|
-
this.primaryActionClick = new EventEmitter();
|
|
67
|
-
this.secondaryActionClick = new EventEmitter();
|
|
68
|
-
}
|
|
69
|
-
get isActiveOrUpcoming() {
|
|
70
|
-
return this.props.status === 'active' || this.props.status === 'upcoming';
|
|
71
|
-
}
|
|
72
|
-
get progressPercentage() {
|
|
73
|
-
if (!this.props.progress)
|
|
74
|
-
return 0;
|
|
75
|
-
const { soldTickets, totalTickets } = this.props.progress;
|
|
76
|
-
if (totalTickets === 0)
|
|
77
|
-
return 0;
|
|
78
|
-
return Math.round((soldTickets / totalTickets) * 100);
|
|
79
|
-
}
|
|
80
|
-
getStatusLabel() {
|
|
81
|
-
const labels = { ...DEFAULT_STATUS_LABELS, ...this.props.statusLabels };
|
|
82
|
-
return labels[this.props.status] || this.props.status;
|
|
83
|
-
}
|
|
84
|
-
getStatusColor() {
|
|
85
|
-
if (this.props.statusColor)
|
|
86
|
-
return this.props.statusColor;
|
|
87
|
-
return DEFAULT_STATUS_COLORS[this.props.status] || 'medium';
|
|
88
|
-
}
|
|
89
|
-
getProgressColor() {
|
|
90
|
-
if (this.progressPercentage >= 100)
|
|
91
|
-
return 'success';
|
|
92
|
-
if (this.progressPercentage >= 75)
|
|
93
|
-
return 'warning';
|
|
94
|
-
return 'primary';
|
|
95
|
-
}
|
|
96
|
-
getTitle() {
|
|
97
|
-
return this.props.title || '';
|
|
98
|
-
}
|
|
99
|
-
getDescription() {
|
|
100
|
-
return this.props.description || '';
|
|
101
|
-
}
|
|
102
|
-
formatCurrency(amount) {
|
|
103
|
-
const symbol = this.props.currencySymbol || '$';
|
|
104
|
-
return `${symbol}${amount.toLocaleString('es-MX')}`;
|
|
105
|
-
}
|
|
106
|
-
formatDate(date) {
|
|
107
|
-
const d = typeof date === 'string' ? new Date(date) : date;
|
|
108
|
-
return d.toLocaleDateString('es-MX', {
|
|
109
|
-
day: 'numeric',
|
|
110
|
-
month: 'short',
|
|
111
|
-
year: 'numeric',
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
onPrimaryAction() {
|
|
115
|
-
this.primaryActionClick.emit();
|
|
116
|
-
}
|
|
117
|
-
onSecondaryAction() {
|
|
118
|
-
this.secondaryActionClick.emit();
|
|
119
|
-
}
|
|
120
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RaffleStatusCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RaffleStatusCardComponent, isStandalone: true, selector: "val-raffle-status-card", inputs: { props: "props" }, outputs: { primaryActionClick: "primaryActionClick", secondaryActionClick: "secondaryActionClick" }, ngImport: i0, template: `
|
|
122
|
-
<article
|
|
123
|
-
class="raffle-card"
|
|
124
|
-
[class]="props.cssClass"
|
|
125
|
-
[class.variant-default]="props.variant === 'default' || !props.variant"
|
|
126
|
-
[class.variant-featured]="props.variant === 'featured'"
|
|
127
|
-
[class.variant-compact]="props.variant === 'compact'"
|
|
128
|
-
[class.variant-horizontal]="props.variant === 'horizontal'"
|
|
129
|
-
[class.size-small]="props.size === 'small'"
|
|
130
|
-
[class.size-medium]="props.size === 'medium' || !props.size"
|
|
131
|
-
[class.size-large]="props.size === 'large'"
|
|
132
|
-
[class]="'status-' + props.status"
|
|
133
|
-
>
|
|
134
|
-
<!-- Cover image -->
|
|
135
|
-
@if (props.coverImage && props.variant !== 'compact') {
|
|
136
|
-
<div class="card-image">
|
|
137
|
-
<val-image [props]="props.coverImage"></val-image>
|
|
138
|
-
|
|
139
|
-
<!-- Status badge over image -->
|
|
140
|
-
@if (props.showStatusBadge !== false) {
|
|
141
|
-
<ion-badge [color]="getStatusColor()" class="status-badge">
|
|
142
|
-
{{ getStatusLabel() }}
|
|
143
|
-
</ion-badge>
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
<!-- Countdown overlay -->
|
|
147
|
-
@if (props.showCountdown && props.endDate && isActiveOrUpcoming) {
|
|
148
|
-
<div class="countdown-overlay">
|
|
149
|
-
<val-countdown
|
|
150
|
-
[props]="{
|
|
151
|
-
targetDate: props.endDate,
|
|
152
|
-
format: 'compact',
|
|
153
|
-
size: 'small',
|
|
154
|
-
color: 'light'
|
|
155
|
-
}"
|
|
156
|
-
></val-countdown>
|
|
157
|
-
</div>
|
|
158
|
-
}
|
|
159
|
-
</div>
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
<div class="card-content">
|
|
163
|
-
<!-- Header -->
|
|
164
|
-
<header class="card-header">
|
|
165
|
-
@if (props.showStatusBadge !== false && (props.variant === 'compact' || !props.coverImage)) {
|
|
166
|
-
<ion-badge [color]="getStatusColor()" class="status-badge inline">
|
|
167
|
-
{{ getStatusLabel() }}
|
|
168
|
-
</ion-badge>
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
<h3 class="card-title">{{ getTitle() }}</h3>
|
|
172
|
-
|
|
173
|
-
@if (props.description) {
|
|
174
|
-
<p class="card-description">{{ getDescription() }}</p>
|
|
175
|
-
}
|
|
176
|
-
</header>
|
|
177
|
-
|
|
178
|
-
<!-- Beneficiary -->
|
|
179
|
-
@if (props.beneficiary) {
|
|
180
|
-
<div class="beneficiary-info">
|
|
181
|
-
<ion-icon name="heart-outline"></ion-icon>
|
|
182
|
-
@if (props.beneficiaryImage) {
|
|
183
|
-
<val-image [props]="props.beneficiaryImage" class="beneficiary-image"></val-image>
|
|
184
|
-
}
|
|
185
|
-
<span>{{ props.beneficiary }}</span>
|
|
186
|
-
</div>
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
<!-- Prize preview -->
|
|
190
|
-
@if (props.prize && props.variant !== 'compact') {
|
|
191
|
-
<div class="prize-preview">
|
|
192
|
-
<div class="prize-header">
|
|
193
|
-
<ion-icon name="gift-outline"></ion-icon>
|
|
194
|
-
<span>Premio</span>
|
|
195
|
-
</div>
|
|
196
|
-
<div class="prize-name">{{ props.prize.name }}</div>
|
|
197
|
-
@if (props.prize.value) {
|
|
198
|
-
<div class="prize-value">
|
|
199
|
-
{{ formatCurrency(props.prize.value) }}
|
|
200
|
-
</div>
|
|
201
|
-
}
|
|
202
|
-
</div>
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
<!-- Progress -->
|
|
206
|
-
@if (props.showProgress !== false && props.progress) {
|
|
207
|
-
<div class="progress-section">
|
|
208
|
-
<div class="progress-header">
|
|
209
|
-
<span class="progress-label">Progreso</span>
|
|
210
|
-
<span class="progress-value">{{ progressPercentage }}%</span>
|
|
211
|
-
</div>
|
|
212
|
-
<ion-progress-bar
|
|
213
|
-
[value]="progressPercentage / 100"
|
|
214
|
-
[color]="getProgressColor()"
|
|
215
|
-
></ion-progress-bar>
|
|
216
|
-
</div>
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
<!-- Ticket stats -->
|
|
220
|
-
@if (props.showTicketStats !== false && props.progress) {
|
|
221
|
-
<div class="ticket-stats">
|
|
222
|
-
<div class="stat">
|
|
223
|
-
<ion-icon name="ticket-outline"></ion-icon>
|
|
224
|
-
<span class="stat-value">{{ props.progress.soldTickets }}</span>
|
|
225
|
-
<span class="stat-label">vendidos</span>
|
|
226
|
-
</div>
|
|
227
|
-
<div class="stat-divider"></div>
|
|
228
|
-
<div class="stat">
|
|
229
|
-
<span class="stat-value">{{ props.progress.totalTickets - props.progress.soldTickets }}</span>
|
|
230
|
-
<span class="stat-label">disponibles</span>
|
|
231
|
-
</div>
|
|
232
|
-
</div>
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
<!-- Price -->
|
|
236
|
-
@if (props.showPrice !== false && props.ticketPrice) {
|
|
237
|
-
<div class="price-section">
|
|
238
|
-
<val-price-tag
|
|
239
|
-
[props]="{
|
|
240
|
-
amount: props.ticketPrice,
|
|
241
|
-
currency: props.currency || 'MXN',
|
|
242
|
-
currencySymbol: props.currencySymbol,
|
|
243
|
-
period: 'por boleto',
|
|
244
|
-
size: props.size === 'large' ? 'large' : 'medium',
|
|
245
|
-
variant: 'highlight'
|
|
246
|
-
}"
|
|
247
|
-
></val-price-tag>
|
|
248
|
-
</div>
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
<!-- Dates -->
|
|
252
|
-
@if (props.showDates !== false && (props.startDate || props.endDate)) {
|
|
253
|
-
<div class="dates-section">
|
|
254
|
-
@if (props.startDate) {
|
|
255
|
-
<div class="date-item">
|
|
256
|
-
<ion-icon name="calendar-outline"></ion-icon>
|
|
257
|
-
<span>Inicia: {{ formatDate(props.startDate) }}</span>
|
|
258
|
-
</div>
|
|
259
|
-
}
|
|
260
|
-
@if (props.endDate) {
|
|
261
|
-
<div class="date-item">
|
|
262
|
-
<ion-icon name="time-outline"></ion-icon>
|
|
263
|
-
<span>Sorteo: {{ formatDate(props.endDate) }}</span>
|
|
264
|
-
</div>
|
|
265
|
-
}
|
|
266
|
-
</div>
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
<!-- Actions -->
|
|
270
|
-
@if (props.primaryAction || props.secondaryAction) {
|
|
271
|
-
<div class="card-actions">
|
|
272
|
-
@if (props.primaryAction) {
|
|
273
|
-
<val-button
|
|
274
|
-
[props]="props.primaryAction"
|
|
275
|
-
(click)="onPrimaryAction()"
|
|
276
|
-
></val-button>
|
|
277
|
-
}
|
|
278
|
-
@if (props.secondaryAction) {
|
|
279
|
-
<val-button
|
|
280
|
-
[props]="props.secondaryAction"
|
|
281
|
-
(click)="onSecondaryAction()"
|
|
282
|
-
></val-button>
|
|
283
|
-
}
|
|
284
|
-
</div>
|
|
285
|
-
}
|
|
286
|
-
</div>
|
|
287
|
-
</article>
|
|
288
|
-
`, isInline: true, styles: [":host{display:block}.raffle-card{display:flex;flex-direction:column;background:var(--ion-color-light);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #00000014;transition:transform .2s,box-shadow .2s}.raffle-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.card-image{position:relative;aspect-ratio:16/9;overflow:hidden}.card-image val-image{width:100%;height:100%}.card-image val-image ::ng-deep img{width:100%;height:100%;object-fit:cover}.status-badge{position:absolute;top:12px;left:12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:4px 10px;border-radius:4px}.status-badge.inline{position:static;margin-bottom:8px}.countdown-overlay{position:absolute;bottom:0;left:0;right:0;padding:8px 12px;background:linear-gradient(transparent,#000000b3)}.card-content{display:flex;flex-direction:column;gap:12px;padding:16px}.card-header{display:flex;flex-direction:column;gap:4px}.card-title{font-size:18px;font-weight:600;color:var(--ion-color-dark);margin:0;line-height:1.3}.card-description{font-size:14px;color:var(--ion-color-medium-shade);margin:0;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.beneficiary-info{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ion-color-medium-shade)}.beneficiary-info ion-icon{font-size:16px;color:var(--ion-color-danger)}.beneficiary-info .beneficiary-image{width:24px;height:24px;border-radius:50%;overflow:hidden}.prize-preview{padding:12px;background:var(--ion-color-light-shade);border-radius:8px}.prize-header{display:flex;align-items:center;gap:4px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--ion-color-medium);margin-bottom:4px}.prize-header ion-icon{font-size:14px;color:var(--ion-color-warning)}.prize-name{font-size:15px;font-weight:600;color:var(--ion-color-dark)}.prize-value{font-size:18px;font-weight:700;color:var(--ion-color-success);margin-top:4px}.progress-section{display:flex;flex-direction:column;gap:6px}.progress-header{display:flex;justify-content:space-between;align-items:center}.progress-label{font-size:12px;color:var(--ion-color-medium-shade)}.progress-value{font-size:14px;font-weight:600;color:var(--ion-color-dark)}ion-progress-bar{height:8px;border-radius:4px;--background: var(--ion-color-light-shade)}.ticket-stats{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px;background:var(--ion-color-light-shade);border-radius:8px}.stat{display:flex;align-items:center;gap:6px;font-size:13px}.stat ion-icon{font-size:18px;color:var(--ion-color-primary)}.stat-value{font-weight:700;color:var(--ion-color-dark);font-size:16px}.stat-label{color:var(--ion-color-medium-shade)}.stat-divider{width:1px;height:24px;background:var(--ion-color-medium-tint)}.price-section{display:flex;justify-content:center;padding:8px 0}.dates-section{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ion-color-medium-shade)}.date-item{display:flex;align-items:center;gap:6px}.date-item ion-icon{font-size:16px;color:var(--ion-color-primary)}.card-actions{display:flex;gap:8px;margin-top:4px}.card-actions val-button{flex:1}.variant-featured{border:2px solid var(--ion-color-warning)}.variant-featured .card-image{aspect-ratio:2/1}.variant-featured .card-title{font-size:22px}.variant-compact .card-content{padding:12px;gap:8px}.variant-compact .card-title{font-size:15px}.variant-compact .card-description{font-size:13px;-webkit-line-clamp:1}.variant-compact .ticket-stats,.variant-compact .dates-section{display:none}.variant-horizontal{flex-direction:row}.variant-horizontal .card-image{width:40%;min-width:150px;aspect-ratio:1}.variant-horizontal .card-content{flex:1;justify-content:center}.size-small .card-content{padding:12px;gap:8px}.size-small .card-title{font-size:15px}.size-small .card-description{font-size:12px}.size-small .ticket-stats{padding:8px}.size-small .stat-value{font-size:14px}.size-large .card-content{padding:24px;gap:16px}.size-large .card-title{font-size:24px}.size-large .card-description{font-size:16px}.size-large .prize-name{font-size:18px}.size-large .prize-value{font-size:22px}.status-upcoming{opacity:.9}.status-sold_out .card-image:after{content:\"\";position:absolute;inset:0;background:#0000004d}.status-completed .card-actions{opacity:.5;pointer-events:none}.status-cancelled{opacity:.6}.status-cancelled .card-image:after{content:\"\";position:absolute;inset:0;background:#0006}@media (max-width: 480px){.variant-horizontal{flex-direction:column}.variant-horizontal .card-image{width:100%;aspect-ratio:16/9}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { kind: "component", type: IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: CountdownComponent, selector: "val-countdown", inputs: ["props"], outputs: ["complete", "tick"] }, { kind: "component", type: PriceTagComponent, selector: "val-price-tag", inputs: ["props"] }] }); }
|
|
289
|
-
}
|
|
290
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RaffleStatusCardComponent, decorators: [{
|
|
291
|
-
type: Component,
|
|
292
|
-
args: [{ selector: 'val-raffle-status-card', standalone: true, imports: [
|
|
293
|
-
CommonModule,
|
|
294
|
-
IonIcon,
|
|
295
|
-
IonBadge,
|
|
296
|
-
IonProgressBar,
|
|
297
|
-
ImageComponent,
|
|
298
|
-
ButtonComponent,
|
|
299
|
-
CountdownComponent,
|
|
300
|
-
PriceTagComponent,
|
|
301
|
-
], template: `
|
|
302
|
-
<article
|
|
303
|
-
class="raffle-card"
|
|
304
|
-
[class]="props.cssClass"
|
|
305
|
-
[class.variant-default]="props.variant === 'default' || !props.variant"
|
|
306
|
-
[class.variant-featured]="props.variant === 'featured'"
|
|
307
|
-
[class.variant-compact]="props.variant === 'compact'"
|
|
308
|
-
[class.variant-horizontal]="props.variant === 'horizontal'"
|
|
309
|
-
[class.size-small]="props.size === 'small'"
|
|
310
|
-
[class.size-medium]="props.size === 'medium' || !props.size"
|
|
311
|
-
[class.size-large]="props.size === 'large'"
|
|
312
|
-
[class]="'status-' + props.status"
|
|
313
|
-
>
|
|
314
|
-
<!-- Cover image -->
|
|
315
|
-
@if (props.coverImage && props.variant !== 'compact') {
|
|
316
|
-
<div class="card-image">
|
|
317
|
-
<val-image [props]="props.coverImage"></val-image>
|
|
318
|
-
|
|
319
|
-
<!-- Status badge over image -->
|
|
320
|
-
@if (props.showStatusBadge !== false) {
|
|
321
|
-
<ion-badge [color]="getStatusColor()" class="status-badge">
|
|
322
|
-
{{ getStatusLabel() }}
|
|
323
|
-
</ion-badge>
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
<!-- Countdown overlay -->
|
|
327
|
-
@if (props.showCountdown && props.endDate && isActiveOrUpcoming) {
|
|
328
|
-
<div class="countdown-overlay">
|
|
329
|
-
<val-countdown
|
|
330
|
-
[props]="{
|
|
331
|
-
targetDate: props.endDate,
|
|
332
|
-
format: 'compact',
|
|
333
|
-
size: 'small',
|
|
334
|
-
color: 'light'
|
|
335
|
-
}"
|
|
336
|
-
></val-countdown>
|
|
337
|
-
</div>
|
|
338
|
-
}
|
|
339
|
-
</div>
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
<div class="card-content">
|
|
343
|
-
<!-- Header -->
|
|
344
|
-
<header class="card-header">
|
|
345
|
-
@if (props.showStatusBadge !== false && (props.variant === 'compact' || !props.coverImage)) {
|
|
346
|
-
<ion-badge [color]="getStatusColor()" class="status-badge inline">
|
|
347
|
-
{{ getStatusLabel() }}
|
|
348
|
-
</ion-badge>
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
<h3 class="card-title">{{ getTitle() }}</h3>
|
|
352
|
-
|
|
353
|
-
@if (props.description) {
|
|
354
|
-
<p class="card-description">{{ getDescription() }}</p>
|
|
355
|
-
}
|
|
356
|
-
</header>
|
|
357
|
-
|
|
358
|
-
<!-- Beneficiary -->
|
|
359
|
-
@if (props.beneficiary) {
|
|
360
|
-
<div class="beneficiary-info">
|
|
361
|
-
<ion-icon name="heart-outline"></ion-icon>
|
|
362
|
-
@if (props.beneficiaryImage) {
|
|
363
|
-
<val-image [props]="props.beneficiaryImage" class="beneficiary-image"></val-image>
|
|
364
|
-
}
|
|
365
|
-
<span>{{ props.beneficiary }}</span>
|
|
366
|
-
</div>
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
<!-- Prize preview -->
|
|
370
|
-
@if (props.prize && props.variant !== 'compact') {
|
|
371
|
-
<div class="prize-preview">
|
|
372
|
-
<div class="prize-header">
|
|
373
|
-
<ion-icon name="gift-outline"></ion-icon>
|
|
374
|
-
<span>Premio</span>
|
|
375
|
-
</div>
|
|
376
|
-
<div class="prize-name">{{ props.prize.name }}</div>
|
|
377
|
-
@if (props.prize.value) {
|
|
378
|
-
<div class="prize-value">
|
|
379
|
-
{{ formatCurrency(props.prize.value) }}
|
|
380
|
-
</div>
|
|
381
|
-
}
|
|
382
|
-
</div>
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
<!-- Progress -->
|
|
386
|
-
@if (props.showProgress !== false && props.progress) {
|
|
387
|
-
<div class="progress-section">
|
|
388
|
-
<div class="progress-header">
|
|
389
|
-
<span class="progress-label">Progreso</span>
|
|
390
|
-
<span class="progress-value">{{ progressPercentage }}%</span>
|
|
391
|
-
</div>
|
|
392
|
-
<ion-progress-bar
|
|
393
|
-
[value]="progressPercentage / 100"
|
|
394
|
-
[color]="getProgressColor()"
|
|
395
|
-
></ion-progress-bar>
|
|
396
|
-
</div>
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
<!-- Ticket stats -->
|
|
400
|
-
@if (props.showTicketStats !== false && props.progress) {
|
|
401
|
-
<div class="ticket-stats">
|
|
402
|
-
<div class="stat">
|
|
403
|
-
<ion-icon name="ticket-outline"></ion-icon>
|
|
404
|
-
<span class="stat-value">{{ props.progress.soldTickets }}</span>
|
|
405
|
-
<span class="stat-label">vendidos</span>
|
|
406
|
-
</div>
|
|
407
|
-
<div class="stat-divider"></div>
|
|
408
|
-
<div class="stat">
|
|
409
|
-
<span class="stat-value">{{ props.progress.totalTickets - props.progress.soldTickets }}</span>
|
|
410
|
-
<span class="stat-label">disponibles</span>
|
|
411
|
-
</div>
|
|
412
|
-
</div>
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
<!-- Price -->
|
|
416
|
-
@if (props.showPrice !== false && props.ticketPrice) {
|
|
417
|
-
<div class="price-section">
|
|
418
|
-
<val-price-tag
|
|
419
|
-
[props]="{
|
|
420
|
-
amount: props.ticketPrice,
|
|
421
|
-
currency: props.currency || 'MXN',
|
|
422
|
-
currencySymbol: props.currencySymbol,
|
|
423
|
-
period: 'por boleto',
|
|
424
|
-
size: props.size === 'large' ? 'large' : 'medium',
|
|
425
|
-
variant: 'highlight'
|
|
426
|
-
}"
|
|
427
|
-
></val-price-tag>
|
|
428
|
-
</div>
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
<!-- Dates -->
|
|
432
|
-
@if (props.showDates !== false && (props.startDate || props.endDate)) {
|
|
433
|
-
<div class="dates-section">
|
|
434
|
-
@if (props.startDate) {
|
|
435
|
-
<div class="date-item">
|
|
436
|
-
<ion-icon name="calendar-outline"></ion-icon>
|
|
437
|
-
<span>Inicia: {{ formatDate(props.startDate) }}</span>
|
|
438
|
-
</div>
|
|
439
|
-
}
|
|
440
|
-
@if (props.endDate) {
|
|
441
|
-
<div class="date-item">
|
|
442
|
-
<ion-icon name="time-outline"></ion-icon>
|
|
443
|
-
<span>Sorteo: {{ formatDate(props.endDate) }}</span>
|
|
444
|
-
</div>
|
|
445
|
-
}
|
|
446
|
-
</div>
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
<!-- Actions -->
|
|
450
|
-
@if (props.primaryAction || props.secondaryAction) {
|
|
451
|
-
<div class="card-actions">
|
|
452
|
-
@if (props.primaryAction) {
|
|
453
|
-
<val-button
|
|
454
|
-
[props]="props.primaryAction"
|
|
455
|
-
(click)="onPrimaryAction()"
|
|
456
|
-
></val-button>
|
|
457
|
-
}
|
|
458
|
-
@if (props.secondaryAction) {
|
|
459
|
-
<val-button
|
|
460
|
-
[props]="props.secondaryAction"
|
|
461
|
-
(click)="onSecondaryAction()"
|
|
462
|
-
></val-button>
|
|
463
|
-
}
|
|
464
|
-
</div>
|
|
465
|
-
}
|
|
466
|
-
</div>
|
|
467
|
-
</article>
|
|
468
|
-
`, styles: [":host{display:block}.raffle-card{display:flex;flex-direction:column;background:var(--ion-color-light);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #00000014;transition:transform .2s,box-shadow .2s}.raffle-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.card-image{position:relative;aspect-ratio:16/9;overflow:hidden}.card-image val-image{width:100%;height:100%}.card-image val-image ::ng-deep img{width:100%;height:100%;object-fit:cover}.status-badge{position:absolute;top:12px;left:12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:4px 10px;border-radius:4px}.status-badge.inline{position:static;margin-bottom:8px}.countdown-overlay{position:absolute;bottom:0;left:0;right:0;padding:8px 12px;background:linear-gradient(transparent,#000000b3)}.card-content{display:flex;flex-direction:column;gap:12px;padding:16px}.card-header{display:flex;flex-direction:column;gap:4px}.card-title{font-size:18px;font-weight:600;color:var(--ion-color-dark);margin:0;line-height:1.3}.card-description{font-size:14px;color:var(--ion-color-medium-shade);margin:0;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.beneficiary-info{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ion-color-medium-shade)}.beneficiary-info ion-icon{font-size:16px;color:var(--ion-color-danger)}.beneficiary-info .beneficiary-image{width:24px;height:24px;border-radius:50%;overflow:hidden}.prize-preview{padding:12px;background:var(--ion-color-light-shade);border-radius:8px}.prize-header{display:flex;align-items:center;gap:4px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--ion-color-medium);margin-bottom:4px}.prize-header ion-icon{font-size:14px;color:var(--ion-color-warning)}.prize-name{font-size:15px;font-weight:600;color:var(--ion-color-dark)}.prize-value{font-size:18px;font-weight:700;color:var(--ion-color-success);margin-top:4px}.progress-section{display:flex;flex-direction:column;gap:6px}.progress-header{display:flex;justify-content:space-between;align-items:center}.progress-label{font-size:12px;color:var(--ion-color-medium-shade)}.progress-value{font-size:14px;font-weight:600;color:var(--ion-color-dark)}ion-progress-bar{height:8px;border-radius:4px;--background: var(--ion-color-light-shade)}.ticket-stats{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px;background:var(--ion-color-light-shade);border-radius:8px}.stat{display:flex;align-items:center;gap:6px;font-size:13px}.stat ion-icon{font-size:18px;color:var(--ion-color-primary)}.stat-value{font-weight:700;color:var(--ion-color-dark);font-size:16px}.stat-label{color:var(--ion-color-medium-shade)}.stat-divider{width:1px;height:24px;background:var(--ion-color-medium-tint)}.price-section{display:flex;justify-content:center;padding:8px 0}.dates-section{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ion-color-medium-shade)}.date-item{display:flex;align-items:center;gap:6px}.date-item ion-icon{font-size:16px;color:var(--ion-color-primary)}.card-actions{display:flex;gap:8px;margin-top:4px}.card-actions val-button{flex:1}.variant-featured{border:2px solid var(--ion-color-warning)}.variant-featured .card-image{aspect-ratio:2/1}.variant-featured .card-title{font-size:22px}.variant-compact .card-content{padding:12px;gap:8px}.variant-compact .card-title{font-size:15px}.variant-compact .card-description{font-size:13px;-webkit-line-clamp:1}.variant-compact .ticket-stats,.variant-compact .dates-section{display:none}.variant-horizontal{flex-direction:row}.variant-horizontal .card-image{width:40%;min-width:150px;aspect-ratio:1}.variant-horizontal .card-content{flex:1;justify-content:center}.size-small .card-content{padding:12px;gap:8px}.size-small .card-title{font-size:15px}.size-small .card-description{font-size:12px}.size-small .ticket-stats{padding:8px}.size-small .stat-value{font-size:14px}.size-large .card-content{padding:24px;gap:16px}.size-large .card-title{font-size:24px}.size-large .card-description{font-size:16px}.size-large .prize-name{font-size:18px}.size-large .prize-value{font-size:22px}.status-upcoming{opacity:.9}.status-sold_out .card-image:after{content:\"\";position:absolute;inset:0;background:#0000004d}.status-completed .card-actions{opacity:.5;pointer-events:none}.status-cancelled{opacity:.6}.status-cancelled .card-image:after{content:\"\";position:absolute;inset:0;background:#0006}@media (max-width: 480px){.variant-horizontal{flex-direction:column}.variant-horizontal .card-image{width:100%;aspect-ratio:16/9}}\n"] }]
|
|
469
|
-
}], propDecorators: { props: [{
|
|
470
|
-
type: Input
|
|
471
|
-
}], primaryActionClick: [{
|
|
472
|
-
type: Output
|
|
473
|
-
}], secondaryActionClick: [{
|
|
474
|
-
type: Output
|
|
475
|
-
}] } });
|
|
476
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFmZmxlLXN0YXR1cy1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcmFmZmxlLXN0YXR1cy1jYXJkL3JhZmZsZS1zdGF0dXMtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGVBQWUsRUFDZixXQUFXLEVBQ1gsWUFBWSxFQUNaLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDOUUsT0FBTyxFQUVMLHFCQUFxQixFQUNyQixxQkFBcUIsR0FDdEIsTUFBTSxTQUFTLENBQUM7O0FBRWpCLFFBQVEsQ0FBQztJQUNQLGFBQWE7SUFDYixlQUFlO0lBQ2YsV0FBVztJQUNYLFlBQVk7SUFDWixXQUFXO0NBQ1osQ0FBQyxDQUFDO0FBeUxIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUFwT3RDO1FBdU9ZLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQTBEM0Q7SUF4REMsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDO0lBQzVFLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMxRCxJQUFJLFlBQVksS0FBSyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLHFCQUFxQixFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4RSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3hELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQzFELE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUM7SUFDOUQsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLEdBQUc7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxFQUFFO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDcEQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYztRQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxHQUFHLENBQUM7UUFDaEQsT0FBTyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFtQjtRQUM1QixNQUFNLENBQUMsR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDM0QsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO1lBQ25DLEdBQUcsRUFBRSxTQUFTO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7K0dBN0RVLHlCQUF5QjttR0FBekIseUJBQXlCLG1OQXZOMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUtULDJrSkFoTEMsWUFBWSwrQkFDWixPQUFPLDJKQUNQLFFBQVEsaUZBQ1IsY0FBYywrSEFDZCxjQUFjLHlFQUNkLGVBQWUsMEdBQ2Ysa0JBQWtCLDRHQUNsQixpQkFBaUI7OzRGQXlOUix5QkFBeUI7a0JBcE9yQyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLFFBQVE7d0JBQ1IsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixpQkFBaUI7cUJBQ2xCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUtUOzhCQWlEUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uQmFkZ2UsIElvblByb2dyZXNzQmFyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7XG4gIHRpY2tldE91dGxpbmUsXG4gIGNhbGVuZGFyT3V0bGluZSxcbiAgZ2lmdE91dGxpbmUsXG4gIGhlYXJ0T3V0bGluZSxcbiAgdGltZU91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IEltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IENvdW50ZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2NvdW50ZG93bi9jb3VudGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IFByaWNlVGFnQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvcHJpY2UtdGFnL3ByaWNlLXRhZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgUmFmZmxlU3RhdHVzQ2FyZE1ldGFkYXRhLFxuICBERUZBVUxUX1NUQVRVU19MQUJFTFMsXG4gIERFRkFVTFRfU1RBVFVTX0NPTE9SUyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmFkZEljb25zKHtcbiAgdGlja2V0T3V0bGluZSxcbiAgY2FsZW5kYXJPdXRsaW5lLFxuICBnaWZ0T3V0bGluZSxcbiAgaGVhcnRPdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbn0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcmFmZmxlLXN0YXR1cy1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25JY29uLFxuICAgIElvbkJhZGdlLFxuICAgIElvblByb2dyZXNzQmFyLFxuICAgIEltYWdlQ29tcG9uZW50LFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBDb3VudGRvd25Db21wb25lbnQsXG4gICAgUHJpY2VUYWdDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGFydGljbGVcbiAgICAgIGNsYXNzPVwicmFmZmxlLWNhcmRcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtjbGFzcy52YXJpYW50LWRlZmF1bHRdPVwicHJvcHMudmFyaWFudCA9PT0gJ2RlZmF1bHQnIHx8ICFwcm9wcy52YXJpYW50XCJcbiAgICAgIFtjbGFzcy52YXJpYW50LWZlYXR1cmVkXT1cInByb3BzLnZhcmlhbnQgPT09ICdmZWF0dXJlZCdcIlxuICAgICAgW2NsYXNzLnZhcmlhbnQtY29tcGFjdF09XCJwcm9wcy52YXJpYW50ID09PSAnY29tcGFjdCdcIlxuICAgICAgW2NsYXNzLnZhcmlhbnQtaG9yaXpvbnRhbF09XCJwcm9wcy52YXJpYW50ID09PSAnaG9yaXpvbnRhbCdcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMuc2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3NdPVwiJ3N0YXR1cy0nICsgcHJvcHMuc3RhdHVzXCJcbiAgICA+XG4gICAgICA8IS0tIENvdmVyIGltYWdlIC0tPlxuICAgICAgQGlmIChwcm9wcy5jb3ZlckltYWdlICYmIHByb3BzLnZhcmlhbnQgIT09ICdjb21wYWN0Jykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pbWFnZVwiPlxuICAgICAgICAgIDx2YWwtaW1hZ2UgW3Byb3BzXT1cInByb3BzLmNvdmVySW1hZ2VcIj48L3ZhbC1pbWFnZT5cblxuICAgICAgICAgIDwhLS0gU3RhdHVzIGJhZGdlIG92ZXIgaW1hZ2UgLS0+XG4gICAgICAgICAgQGlmIChwcm9wcy5zaG93U3RhdHVzQmFkZ2UgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICA8aW9uLWJhZGdlIFtjb2xvcl09XCJnZXRTdGF0dXNDb2xvcigpXCIgY2xhc3M9XCJzdGF0dXMtYmFkZ2VcIj5cbiAgICAgICAgICAgICAge3sgZ2V0U3RhdHVzTGFiZWwoKSB9fVxuICAgICAgICAgICAgPC9pb24tYmFkZ2U+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPCEtLSBDb3VudGRvd24gb3ZlcmxheSAtLT5cbiAgICAgICAgICBAaWYgKHByb3BzLnNob3dDb3VudGRvd24gJiYgcHJvcHMuZW5kRGF0ZSAmJiBpc0FjdGl2ZU9yVXBjb21pbmcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudGRvd24tb3ZlcmxheVwiPlxuICAgICAgICAgICAgICA8dmFsLWNvdW50ZG93blxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICB0YXJnZXREYXRlOiBwcm9wcy5lbmREYXRlLFxuICAgICAgICAgICAgICAgICAgZm9ybWF0OiAnY29tcGFjdCcsXG4gICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdsaWdodCdcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPjwvdmFsLWNvdW50ZG93bj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cbiAgICAgICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgICAgIDxoZWFkZXIgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1N0YXR1c0JhZGdlICE9PSBmYWxzZSAmJiAocHJvcHMudmFyaWFudCA9PT0gJ2NvbXBhY3QnIHx8ICFwcm9wcy5jb3ZlckltYWdlKSkge1xuICAgICAgICAgICAgPGlvbi1iYWRnZSBbY29sb3JdPVwiZ2V0U3RhdHVzQ29sb3IoKVwiIGNsYXNzPVwic3RhdHVzLWJhZGdlIGlubGluZVwiPlxuICAgICAgICAgICAgICB7eyBnZXRTdGF0dXNMYWJlbCgpIH19XG4gICAgICAgICAgICA8L2lvbi1iYWRnZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3sgZ2V0VGl0bGUoKSB9fTwvaDM+XG5cbiAgICAgICAgICBAaWYgKHByb3BzLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cImNhcmQtZGVzY3JpcHRpb25cIj57eyBnZXREZXNjcmlwdGlvbigpIH19PC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPCEtLSBCZW5lZmljaWFyeSAtLT5cbiAgICAgICAgQGlmIChwcm9wcy5iZW5lZmljaWFyeSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZW5lZmljaWFyeS1pbmZvXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImhlYXJ0LW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgQGlmIChwcm9wcy5iZW5lZmljaWFyeUltYWdlKSB7XG4gICAgICAgICAgICAgIDx2YWwtaW1hZ2UgW3Byb3BzXT1cInByb3BzLmJlbmVmaWNpYXJ5SW1hZ2VcIiBjbGFzcz1cImJlbmVmaWNpYXJ5LWltYWdlXCI+PC92YWwtaW1hZ2U+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3Bhbj57eyBwcm9wcy5iZW5lZmljaWFyeSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gUHJpemUgcHJldmlldyAtLT5cbiAgICAgICAgQGlmIChwcm9wcy5wcml6ZSAmJiBwcm9wcy52YXJpYW50ICE9PSAnY29tcGFjdCcpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtcHJldmlld1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaXplLWhlYWRlclwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImdpZnQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPlByZW1pbzwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaXplLW5hbWVcIj57eyBwcm9wcy5wcml6ZS5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICBAaWYgKHByb3BzLnByaXplLnZhbHVlKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcml6ZS12YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdEN1cnJlbmN5KHByb3BzLnByaXplLnZhbHVlKSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gUHJvZ3Jlc3MgLS0+XG4gICAgICAgIEBpZiAocHJvcHMuc2hvd1Byb2dyZXNzICE9PSBmYWxzZSAmJiBwcm9wcy5wcm9ncmVzcykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3MtbGFiZWxcIj5Qcm9ncmVzbzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9ncmVzcy12YWx1ZVwiPnt7IHByb2dyZXNzUGVyY2VudGFnZSB9fSU8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpb24tcHJvZ3Jlc3MtYmFyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9ncmVzc1BlcmNlbnRhZ2UgLyAxMDBcIlxuICAgICAgICAgICAgICBbY29sb3JdPVwiZ2V0UHJvZ3Jlc3NDb2xvcigpXCJcbiAgICAgICAgICAgID48L2lvbi1wcm9ncmVzcy1iYXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFRpY2tldCBzdGF0cyAtLT5cbiAgICAgICAgQGlmIChwcm9wcy5zaG93VGlja2V0U3RhdHMgIT09IGZhbHNlICYmIHByb3BzLnByb2dyZXNzKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1zdGF0c1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXRcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0aWNrZXQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdC12YWx1ZVwiPnt7IHByb3BzLnByb2dyZXNzLnNvbGRUaWNrZXRzIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXQtbGFiZWxcIj52ZW5kaWRvczwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXQtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0LXZhbHVlXCI+e3sgcHJvcHMucHJvZ3Jlc3MudG90YWxUaWNrZXRzIC0gcHJvcHMucHJvZ3Jlc3Muc29sZFRpY2tldHMgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdC1sYWJlbFwiPmRpc3BvbmlibGVzPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFByaWNlIC0tPlxuICAgICAgICBAaWYgKHByb3BzLnNob3dQcmljZSAhPT0gZmFsc2UgJiYgcHJvcHMudGlja2V0UHJpY2UpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utc2VjdGlvblwiPlxuICAgICAgICAgICAgPHZhbC1wcmljZS10YWdcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHByb3BzLnRpY2tldFByaWNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBwcm9wcy5jdXJyZW5jeSB8fCAnTVhOJyxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbDogcHJvcHMuY3VycmVuY3lTeW1ib2wsXG4gICAgICAgICAgICAgICAgcGVyaW9kOiAncG9yIGJvbGV0bycsXG4gICAgICAgICAgICAgICAgc2l6ZTogcHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJyA/ICdsYXJnZScgOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50OiAnaGlnaGxpZ2h0J1xuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID48L3ZhbC1wcmljZS10YWc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIERhdGVzIC0tPlxuICAgICAgICBAaWYgKHByb3BzLnNob3dEYXRlcyAhPT0gZmFsc2UgJiYgKHByb3BzLnN0YXJ0RGF0ZSB8fCBwcm9wcy5lbmREYXRlKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcy1zZWN0aW9uXCI+XG4gICAgICAgICAgICBAaWYgKHByb3BzLnN0YXJ0RGF0ZSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjYWxlbmRhci1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5JbmljaWE6IHt7IGZvcm1hdERhdGUocHJvcHMuc3RhcnREYXRlKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHByb3BzLmVuZERhdGUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidGltZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5Tb3J0ZW86IHt7IGZvcm1hdERhdGUocHJvcHMuZW5kRGF0ZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBBY3Rpb25zIC0tPlxuICAgICAgICBAaWYgKHByb3BzLnByaW1hcnlBY3Rpb24gfHwgcHJvcHMuc2Vjb25kYXJ5QWN0aW9uKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGlmIChwcm9wcy5wcmltYXJ5QWN0aW9uKSB7XG4gICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cInByb3BzLnByaW1hcnlBY3Rpb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblByaW1hcnlBY3Rpb24oKVwiXG4gICAgICAgICAgICAgID48L3ZhbC1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHByb3BzLnNlY29uZGFyeUFjdGlvbikge1xuICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJwcm9wcy5zZWNvbmRhcnlBY3Rpb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlY29uZGFyeUFjdGlvbigpXCJcbiAgICAgICAgICAgICAgPjwvdmFsLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9hcnRpY2xlPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9yYWZmbGUtc3RhdHVzLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1yYWZmbGUtc3RhdHVzLWNhcmRcbiAqXG4gKiBBIGNhcmQgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIHJhZmZsZSBzdGF0dXMgYW5kIGluZm9ybWF0aW9uLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXJhZmZsZS1zdGF0dXMtY2FyZFxuICogICBbcHJvcHNdPVwie1xuICogICAgIHRpdGxlOiAnUmlmYSBCZW7DqWZpY2EgMjAyNCcsXG4gKiAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAqICAgICB0aWNrZXRQcmljZTogNTAsXG4gKiAgICAgcHJvZ3Jlc3M6IHtcbiAqICAgICAgIHRvdGFsVGlja2V0czogMTAwMCxcbiAqICAgICAgIHNvbGRUaWNrZXRzOiA0NTBcbiAqICAgICB9XG4gKiAgIH1cIlxuICogPjwvdmFsLXJhZmZsZS1zdGF0dXMtY2FyZD5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEZlYXR1cmVkIHdpdGggcHJpemVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcmFmZmxlLXN0YXR1cy1jYXJkXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGl0bGU6ICdHcmFuIFNvcnRlbyBpUGhvbmUgMTUnLFxuICogICAgIGRlc2NyaXB0aW9uOiAnUGFydGljaXBhIHkgZ2FuYSB1biBpUGhvbmUgMTUgUHJvIE1heCcsXG4gKiAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAqICAgICB2YXJpYW50OiAnZmVhdHVyZWQnLFxuICogICAgIGNvdmVySW1hZ2U6IHsgc3JjOiAnY292ZXIuanBnJyB9LFxuICogICAgIHByaXplOiB7XG4gKiAgICAgICBuYW1lOiAnaVBob25lIDE1IFBybyBNYXggMjU2R0InLFxuICogICAgICAgdmFsdWU6IDMyMDAwLFxuICogICAgICAgaW1hZ2U6IHsgc3JjOiAnaXBob25lLmpwZycgfVxuICogICAgIH0sXG4gKiAgICAgdGlja2V0UHJpY2U6IDEwMCxcbiAqICAgICBlbmREYXRlOiAnMjAyNC0xMi0yNScsXG4gKiAgICAgc2hvd0NvdW50ZG93bjogdHJ1ZSxcbiAqICAgICBwcmltYXJ5QWN0aW9uOiB7XG4gKiAgICAgICBsYWJlbDogJ0NvbXByYXIgYm9sZXRvcycsXG4gKiAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnXG4gKiAgICAgfVxuICogICB9XCJcbiAqID48L3ZhbC1yYWZmbGUtc3RhdHVzLWNhcmQ+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFJhZmZsZVN0YXR1c0NhcmRDb21wb25lbnQge1xuICBASW5wdXQoKSBwcm9wczogUmFmZmxlU3RhdHVzQ2FyZE1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKSBwcmltYXJ5QWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWNvbmRhcnlBY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgaXNBY3RpdmVPclVwY29taW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnN0YXR1cyA9PT0gJ2FjdGl2ZScgfHwgdGhpcy5wcm9wcy5zdGF0dXMgPT09ICd1cGNvbWluZyc7XG4gIH1cblxuICBnZXQgcHJvZ3Jlc3NQZXJjZW50YWdlKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnByb2dyZXNzKSByZXR1cm4gMDtcbiAgICBjb25zdCB7IHNvbGRUaWNrZXRzLCB0b3RhbFRpY2tldHMgfSA9IHRoaXMucHJvcHMucHJvZ3Jlc3M7XG4gICAgaWYgKHRvdGFsVGlja2V0cyA9PT0gMCkgcmV0dXJuIDA7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoKHNvbGRUaWNrZXRzIC8gdG90YWxUaWNrZXRzKSAqIDEwMCk7XG4gIH1cblxuICBnZXRTdGF0dXNMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhYmVscyA9IHsgLi4uREVGQVVMVF9TVEFUVVNfTEFCRUxTLCAuLi50aGlzLnByb3BzLnN0YXR1c0xhYmVscyB9O1xuICAgIHJldHVybiBsYWJlbHNbdGhpcy5wcm9wcy5zdGF0dXNdIHx8IHRoaXMucHJvcHMuc3RhdHVzO1xuICB9XG5cbiAgZ2V0U3RhdHVzQ29sb3IoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0dXNDb2xvcikgcmV0dXJuIHRoaXMucHJvcHMuc3RhdHVzQ29sb3I7XG4gICAgcmV0dXJuIERFRkFVTFRfU1RBVFVTX0NPTE9SU1t0aGlzLnByb3BzLnN0YXR1c10gfHwgJ21lZGl1bSc7XG4gIH1cblxuICBnZXRQcm9ncmVzc0NvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvZ3Jlc3NQZXJjZW50YWdlID49IDEwMCkgcmV0dXJuICdzdWNjZXNzJztcbiAgICBpZiAodGhpcy5wcm9ncmVzc1BlcmNlbnRhZ2UgPj0gNzUpIHJldHVybiAnd2FybmluZyc7XG4gICAgcmV0dXJuICdwcmltYXJ5JztcbiAgfVxuXG4gIGdldFRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudGl0bGUgfHwgJyc7XG4gIH1cblxuICBnZXREZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmRlc2NyaXB0aW9uIHx8ICcnO1xuICB9XG5cbiAgZm9ybWF0Q3VycmVuY3koYW1vdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN5bWJvbCA9IHRoaXMucHJvcHMuY3VycmVuY3lTeW1ib2wgfHwgJyQnO1xuICAgIHJldHVybiBgJHtzeW1ib2x9JHthbW91bnQudG9Mb2NhbGVTdHJpbmcoJ2VzLU1YJyl9YDtcbiAgfVxuXG4gIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZCA9IHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKGRhdGUpIDogZGF0ZTtcbiAgICByZXR1cm4gZC50b0xvY2FsZURhdGVTdHJpbmcoJ2VzLU1YJywge1xuICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICB9KTtcbiAgfVxuXG4gIG9uUHJpbWFyeUFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnByaW1hcnlBY3Rpb25DbGljay5lbWl0KCk7XG4gIH1cblxuICBvblNlY29uZGFyeUFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlY29uZGFyeUFjdGlvbkNsaWNrLmVtaXQoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default status labels.
|
|
3
|
-
*/
|
|
4
|
-
export const DEFAULT_STATUS_LABELS = {
|
|
5
|
-
upcoming: 'Próximamente',
|
|
6
|
-
active: 'Activo',
|
|
7
|
-
sold_out: 'Agotado',
|
|
8
|
-
drawing: 'Sorteando',
|
|
9
|
-
completed: 'Finalizado',
|
|
10
|
-
cancelled: 'Cancelado',
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Default status colors.
|
|
14
|
-
*/
|
|
15
|
-
export const DEFAULT_STATUS_COLORS = {
|
|
16
|
-
upcoming: 'medium',
|
|
17
|
-
active: 'success',
|
|
18
|
-
sold_out: 'warning',
|
|
19
|
-
drawing: 'tertiary',
|
|
20
|
-
completed: 'primary',
|
|
21
|
-
cancelled: 'danger',
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3JhZmZsZS1zdGF0dXMtY2FyZC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErSEE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBaUM7SUFDakUsUUFBUSxFQUFFLGNBQWM7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsT0FBTyxFQUFFLFdBQVc7SUFDcEIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsU0FBUyxFQUFFLFdBQVc7Q0FDdkIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWdDO0lBQ2hFLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLFFBQVEsRUFBRSxTQUFTO0lBQ25CLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFNBQVMsRUFBRSxRQUFRO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvciB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IEltYWdlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy9pbWFnZS90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuLyoqXG4gKiBSYWZmbGUgc3RhdHVzIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIFJhZmZsZVN0YXR1cyA9XG4gIHwgJ3VwY29taW5nJyAgICAvLyBOb3Qgc3RhcnRlZCB5ZXRcbiAgfCAnYWN0aXZlJyAgICAgIC8vIEN1cnJlbnRseSBzZWxsaW5nIHRpY2tldHNcbiAgfCAnc29sZF9vdXQnICAgIC8vIEFsbCB0aWNrZXRzIHNvbGRcbiAgfCAnZHJhd2luZycgICAgIC8vIERyYXcgaW4gcHJvZ3Jlc3NcbiAgfCAnY29tcGxldGVkJyAgIC8vIFdpbm5lciBhbm5vdW5jZWRcbiAgfCAnY2FuY2VsbGVkJzsgIC8vIFJhZmZsZSBjYW5jZWxsZWRcblxuLyoqXG4gKiBSYWZmbGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmFmZmxlUHJvZ3Jlc3Mge1xuICAvKiogVG90YWwgdGlja2V0cyBhdmFpbGFibGUgKi9cbiAgdG90YWxUaWNrZXRzOiBudW1iZXI7XG4gIC8qKiBUaWNrZXRzIHNvbGQgKi9cbiAgc29sZFRpY2tldHM6IG51bWJlcjtcbiAgLyoqIFRpY2tldHMgcmVzZXJ2ZWQgKG5vdCBwYWlkKSAqL1xuICByZXNlcnZlZFRpY2tldHM/OiBudW1iZXI7XG4gIC8qKiBHb2FsIGFtb3VudCAobW9uZXRhcnkpICovXG4gIGdvYWxBbW91bnQ/OiBudW1iZXI7XG4gIC8qKiBDdXJyZW50IGFtb3VudCByYWlzZWQgKi9cbiAgY3VycmVudEFtb3VudD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcml6ZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHJhZmZsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYWZmbGVQcml6ZSB7XG4gIC8qKiBQcml6ZSBuYW1lICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFByaXplIGRlc2NyaXB0aW9uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogUHJpemUgaW1hZ2UgKi9cbiAgaW1hZ2U/OiBJbWFnZU1ldGFkYXRhO1xuICAvKiogUHJpemUgdmFsdWUgKi9cbiAgdmFsdWU/OiBudW1iZXI7XG4gIC8qKiBDdXJyZW5jeSBmb3IgdmFsdWUgKi9cbiAgY3VycmVuY3k/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgZm9yIHRoZSByYWZmbGUgc3RhdHVzIGNhcmQgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJhZmZsZVN0YXR1c0NhcmRNZXRhZGF0YSB7XG4gIC8qKiBSYWZmbGUgdGl0bGUgKi9cbiAgdGl0bGU6IHN0cmluZztcbiAgLyoqIFJhZmZsZSBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIEN1cnJlbnQgc3RhdHVzICovXG4gIHN0YXR1czogUmFmZmxlU3RhdHVzO1xuICAvKiogUHJvZ3Jlc3MgaW5mb3JtYXRpb24gKi9cbiAgcHJvZ3Jlc3M/OiBSYWZmbGVQcm9ncmVzcztcbiAgLyoqIFByaXplIGluZm9ybWF0aW9uICovXG4gIHByaXplPzogUmFmZmxlUHJpemU7XG4gIC8qKiBDb3ZlciBpbWFnZSAqL1xuICBjb3ZlckltYWdlPzogSW1hZ2VNZXRhZGF0YTtcblxuICAvLyA9PT0gRGF0ZXMgPT09XG4gIC8qKiBSYWZmbGUgc3RhcnQgZGF0ZSAqL1xuICBzdGFydERhdGU/OiBEYXRlIHwgc3RyaW5nO1xuICAvKiogUmFmZmxlIGVuZCBkYXRlIC8gZHJhdyBkYXRlICovXG4gIGVuZERhdGU/OiBEYXRlIHwgc3RyaW5nO1xuICAvKiogU2hvdyBjb3VudGRvd24gdG8gZW5kIGRhdGUgKi9cbiAgc2hvd0NvdW50ZG93bj86IGJvb2xlYW47XG5cbiAgLy8gPT09IFByaWNpbmcgPT09XG4gIC8qKiBUaWNrZXQgcHJpY2UgKi9cbiAgdGlja2V0UHJpY2U/OiBudW1iZXI7XG4gIC8qKiBDdXJyZW5jeSAqL1xuICBjdXJyZW5jeT86IHN0cmluZztcbiAgLyoqIEN1cnJlbmN5IHN5bWJvbCAqL1xuICBjdXJyZW5jeVN5bWJvbD86IHN0cmluZztcblxuICAvLyA9PT0gRGlzcGxheSBvcHRpb25zID09PVxuICAvKiogQ2FyZCB2YXJpYW50ICovXG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZmVhdHVyZWQnIHwgJ2NvbXBhY3QnIHwgJ2hvcml6b250YWwnO1xuICAvKiogU2l6ZSAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcbiAgLyoqIFNob3cgcHJvZ3Jlc3MgYmFyICovXG4gIHNob3dQcm9ncmVzcz86IGJvb2xlYW47XG4gIC8qKiBTaG93IHRpY2tldCBzdGF0cyAqL1xuICBzaG93VGlja2V0U3RhdHM/OiBib29sZWFuO1xuICAvKiogU2hvdyBwcmljZSAqL1xuICBzaG93UHJpY2U/OiBib29sZWFuO1xuICAvKiogU2hvdyBkYXRlcyAqL1xuICBzaG93RGF0ZXM/OiBib29sZWFuO1xuICAvKiogU2hvdyBzdGF0dXMgYmFkZ2UgKi9cbiAgc2hvd1N0YXR1c0JhZGdlPzogYm9vbGVhbjtcblxuICAvLyA9PT0gQWN0aW9ucyA9PT1cbiAgLyoqIFByaW1hcnkgYWN0aW9uIGJ1dHRvbiAqL1xuICBwcmltYXJ5QWN0aW9uPzogQnV0dG9uTWV0YWRhdGE7XG4gIC8qKiBTZWNvbmRhcnkgYWN0aW9uIGJ1dHRvbiAqL1xuICBzZWNvbmRhcnlBY3Rpb24/OiBCdXR0b25NZXRhZGF0YTtcblxuICAvLyA9PT0gU3R5bGluZyA9PT1cbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3MgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBTdGF0dXMgY29sb3Igb3ZlcnJpZGUgKi9cbiAgc3RhdHVzQ29sb3I/OiBDb2xvcjtcblxuICAvLyA9PT0gQmVuZWZpY2lhcnkgPT09XG4gIC8qKiBCZW5lZmljaWFyeSBuYW1lICovXG4gIGJlbmVmaWNpYXJ5Pzogc3RyaW5nO1xuICAvKiogQmVuZWZpY2lhcnkgbG9nby9pbWFnZSAqL1xuICBiZW5lZmljaWFyeUltYWdlPzogSW1hZ2VNZXRhZGF0YTtcblxuICAvLyA9PT0gTGFiZWxzID09PVxuICAvKiogQ3VzdG9tIHN0YXR1cyBsYWJlbHMgKi9cbiAgc3RhdHVzTGFiZWxzPzogUGFydGlhbDxSZWNvcmQ8UmFmZmxlU3RhdHVzLCBzdHJpbmc+PjtcblxuICAvLyA9PT0gUmVhY3RpdmUgY29udGVudCA9PT1cbiAgLyoqIENvbnRlbnQgY2xhc3MgZm9yIHJlYWN0aXZlIGNvbnRlbnQgKi9cbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xuICAvKiogQ29udGVudCBrZXkgZm9yIHRpdGxlICovXG4gIHRpdGxlQ29udGVudEtleT86IHN0cmluZztcbiAgLyoqIENvbnRlbnQga2V5IGZvciBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbkNvbnRlbnRLZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmYXVsdCBzdGF0dXMgbGFiZWxzLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9TVEFUVVNfTEFCRUxTOiBSZWNvcmQ8UmFmZmxlU3RhdHVzLCBzdHJpbmc+ID0ge1xuICB1cGNvbWluZzogJ1Byw7N4aW1hbWVudGUnLFxuICBhY3RpdmU6ICdBY3Rpdm8nLFxuICBzb2xkX291dDogJ0Fnb3RhZG8nLFxuICBkcmF3aW5nOiAnU29ydGVhbmRvJyxcbiAgY29tcGxldGVkOiAnRmluYWxpemFkbycsXG4gIGNhbmNlbGxlZDogJ0NhbmNlbGFkbycsXG59O1xuXG4vKipcbiAqIERlZmF1bHQgc3RhdHVzIGNvbG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RBVFVTX0NPTE9SUzogUmVjb3JkPFJhZmZsZVN0YXR1cywgQ29sb3I+ID0ge1xuICB1cGNvbWluZzogJ21lZGl1bScsXG4gIGFjdGl2ZTogJ3N1Y2Nlc3MnLFxuICBzb2xkX291dDogJ3dhcm5pbmcnLFxuICBkcmF3aW5nOiAndGVydGlhcnknLFxuICBjb21wbGV0ZWQ6ICdwcmltYXJ5JyxcbiAgY2FuY2VsbGVkOiAnZGFuZ2VyJyxcbn07XG4iXX0=
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
3
|
-
import { IonCard, IonCardContent } from '@ionic/angular/standalone';
|
|
4
|
-
import { LinkComponent } from '../link/link.component';
|
|
5
|
-
import { TitleBlockComponent } from '../title-block/title-block.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common";
|
|
8
|
-
/**
|
|
9
|
-
* val-recap-card
|
|
10
|
-
*
|
|
11
|
-
* A decorative card component with geometric shapes, title, and link.
|
|
12
|
-
* Useful for recap sections, feature highlights, or promotional content.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* <val-recap-card
|
|
16
|
-
* [props]="{
|
|
17
|
-
* title: { title: 'Feature Title', subtitle: 'Subtitle here' },
|
|
18
|
-
* link: { text: 'Learn more', url: '/features' },
|
|
19
|
-
* color: 'primary',
|
|
20
|
-
* shapes: [
|
|
21
|
-
* { color: '#ffffff33', style: { top: '-20px', right: '-20px', width: '100px', height: '100px' } }
|
|
22
|
-
* ]
|
|
23
|
-
* }"
|
|
24
|
-
* ></val-recap-card>
|
|
25
|
-
*
|
|
26
|
-
* @input props - Card configuration (title, link, shapes, color)
|
|
27
|
-
*/
|
|
28
|
-
export class RecapCardComponent {
|
|
29
|
-
/**
|
|
30
|
-
* Merges shape color with additional styles.
|
|
31
|
-
*/
|
|
32
|
-
mergeShapeStyle(shape) {
|
|
33
|
-
return { 'background-color': shape.color, ...(shape.style || {}) };
|
|
34
|
-
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecapCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RecapCardComponent, isStandalone: true, selector: "val-recap-card", inputs: { props: "props" }, ngImport: i0, template: `
|
|
37
|
-
<ion-card class="recap-card" [color]="props.color || ''">
|
|
38
|
-
<div class="shapes">
|
|
39
|
-
<ng-container *ngFor="let shape of props.shapes">
|
|
40
|
-
<div class="shape" [ngStyle]="mergeShapeStyle(shape)"></div>
|
|
41
|
-
</ng-container>
|
|
42
|
-
</div>
|
|
43
|
-
<ion-card-content
|
|
44
|
-
class="recap-card__content"
|
|
45
|
-
[style.min-height]="props.minHeight || '400px'"
|
|
46
|
-
[style.min-width]="props.width || '280px'"
|
|
47
|
-
[style.max-width]="props.width || '280px'"
|
|
48
|
-
>
|
|
49
|
-
<val-title-block [props]="props.title" />
|
|
50
|
-
<val-link [props]="props.link" />
|
|
51
|
-
</ion-card-content>
|
|
52
|
-
</ion-card>
|
|
53
|
-
`, isInline: true, styles: [".recap-card{border-radius:24px;box-shadow:0 4px 10px #0000001a;margin:10px;position:relative;overflow:hidden}.recap-card .shapes{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.7;pointer-events:none}.recap-card .shapes .shape{position:absolute;border-radius:50%}.recap-card .recap-card__content{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:space-between;height:100%;min-height:400px;min-width:280px;max-width:280px;padding:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: LinkComponent, selector: "val-link", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: TitleBlockComponent, selector: "val-title-block", inputs: ["props"] }] }); }
|
|
54
|
-
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecapCardComponent, decorators: [{
|
|
56
|
-
type: Component,
|
|
57
|
-
args: [{ selector: 'val-recap-card', standalone: true, imports: [CommonModule, IonCard, IonCardContent, LinkComponent, TitleBlockComponent], template: `
|
|
58
|
-
<ion-card class="recap-card" [color]="props.color || ''">
|
|
59
|
-
<div class="shapes">
|
|
60
|
-
<ng-container *ngFor="let shape of props.shapes">
|
|
61
|
-
<div class="shape" [ngStyle]="mergeShapeStyle(shape)"></div>
|
|
62
|
-
</ng-container>
|
|
63
|
-
</div>
|
|
64
|
-
<ion-card-content
|
|
65
|
-
class="recap-card__content"
|
|
66
|
-
[style.min-height]="props.minHeight || '400px'"
|
|
67
|
-
[style.min-width]="props.width || '280px'"
|
|
68
|
-
[style.max-width]="props.width || '280px'"
|
|
69
|
-
>
|
|
70
|
-
<val-title-block [props]="props.title" />
|
|
71
|
-
<val-link [props]="props.link" />
|
|
72
|
-
</ion-card-content>
|
|
73
|
-
</ion-card>
|
|
74
|
-
`, styles: [".recap-card{border-radius:24px;box-shadow:0 4px 10px #0000001a;margin:10px;position:relative;overflow:hidden}.recap-card .shapes{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.7;pointer-events:none}.recap-card .shapes .shape{position:absolute;border-radius:50%}.recap-card .recap-card__content{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:space-between;height:100%;min-height:400px;min-width:280px;max-width:280px;padding:16px}\n"] }]
|
|
75
|
-
}], propDecorators: { props: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}] } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXAtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3JlY2FwLWNhcmQvcmVjYXAtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7QUFHM0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUF5QkgsTUFBTSxPQUFPLGtCQUFrQjtJQU03Qjs7T0FFRztJQUNILGVBQWUsQ0FBQyxLQUFxQjtRQUNuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JFLENBQUM7K0dBWFUsa0JBQWtCO21HQUFsQixrQkFBa0Isc0dBcEJuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQsd2lCQWxCUyxZQUFZLGlQQUFFLE9BQU8seUxBQUUsY0FBYywrRUFBRSxhQUFhLDhGQUFFLG1CQUFtQjs7NEZBcUJ4RSxrQkFBa0I7a0JBeEI5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxZQUMxRTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7OEJBT1EsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkNhcmQsIElvbkNhcmRDb250ZW50IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vbGluay9saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUJsb2NrQ29tcG9uZW50IH0gZnJvbSAnLi4vdGl0bGUtYmxvY2svdGl0bGUtYmxvY2suY29tcG9uZW50JztcbmltcG9ydCB7IFJlY2FwQ2FyZE1ldGFkYXRhLCBSZWNhcENhcmRTaGFwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIHZhbC1yZWNhcC1jYXJkXG4gKlxuICogQSBkZWNvcmF0aXZlIGNhcmQgY29tcG9uZW50IHdpdGggZ2VvbWV0cmljIHNoYXBlcywgdGl0bGUsIGFuZCBsaW5rLlxuICogVXNlZnVsIGZvciByZWNhcCBzZWN0aW9ucywgZmVhdHVyZSBoaWdobGlnaHRzLCBvciBwcm9tb3Rpb25hbCBjb250ZW50LlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXJlY2FwLWNhcmRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0aXRsZTogeyB0aXRsZTogJ0ZlYXR1cmUgVGl0bGUnLCBzdWJ0aXRsZTogJ1N1YnRpdGxlIGhlcmUnIH0sXG4gKiAgICAgbGluazogeyB0ZXh0OiAnTGVhcm4gbW9yZScsIHVybDogJy9mZWF0dXJlcycgfSxcbiAqICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICogICAgIHNoYXBlczogW1xuICogICAgICAgeyBjb2xvcjogJyNmZmZmZmYzMycsIHN0eWxlOiB7IHRvcDogJy0yMHB4JywgcmlnaHQ6ICctMjBweCcsIHdpZHRoOiAnMTAwcHgnLCBoZWlnaHQ6ICcxMDBweCcgfSB9XG4gKiAgICAgXVxuICogICB9XCJcbiAqID48L3ZhbC1yZWNhcC1jYXJkPlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIENhcmQgY29uZmlndXJhdGlvbiAodGl0bGUsIGxpbmssIHNoYXBlcywgY29sb3IpXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1yZWNhcC1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQ2FyZCwgSW9uQ2FyZENvbnRlbnQsIExpbmtDb21wb25lbnQsIFRpdGxlQmxvY2tDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tY2FyZCBjbGFzcz1cInJlY2FwLWNhcmRcIiBbY29sb3JdPVwicHJvcHMuY29sb3IgfHwgJydcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaGFwZXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2hhcGUgb2YgcHJvcHMuc2hhcGVzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNoYXBlXCIgW25nU3R5bGVdPVwibWVyZ2VTaGFwZVN0eWxlKHNoYXBlKVwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnRcbiAgICAgICAgY2xhc3M9XCJyZWNhcC1jYXJkX19jb250ZW50XCJcbiAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwicHJvcHMubWluSGVpZ2h0IHx8ICc0MDBweCdcIlxuICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cInByb3BzLndpZHRoIHx8ICcyODBweCdcIlxuICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cInByb3BzLndpZHRoIHx8ICcyODBweCdcIlxuICAgICAgPlxuICAgICAgICA8dmFsLXRpdGxlLWJsb2NrIFtwcm9wc109XCJwcm9wcy50aXRsZVwiIC8+XG4gICAgICAgIDx2YWwtbGluayBbcHJvcHNdPVwicHJvcHMubGlua1wiIC8+XG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjYXAtY2FyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSZWNhcENhcmRDb21wb25lbnQge1xuICAvKipcbiAgICogQ2FyZCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHMhOiBSZWNhcENhcmRNZXRhZGF0YTtcblxuICAvKipcbiAgICogTWVyZ2VzIHNoYXBlIGNvbG9yIHdpdGggYWRkaXRpb25hbCBzdHlsZXMuXG4gICAqL1xuICBtZXJnZVNoYXBlU3R5bGUoc2hhcGU6IFJlY2FwQ2FyZFNoYXBlKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHsgJ2JhY2tncm91bmQtY29sb3InOiBzaGFwZS5jb2xvciwgLi4uKHNoYXBlLnN0eWxlIHx8IHt9KSB9O1xuICB9XG59XG4iXX0=
|