valtech-components 2.0.797 → 2.0.799

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.
@@ -0,0 +1,423 @@
1
+ import { Component, computed, Input, signal } from '@angular/core';
2
+ import { SkeletonComponent } from '../../atoms/skeleton/skeleton.component';
3
+ import { SKELETON_LAYOUT_DEFAULT_ROWS } from './types';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * `val-skeleton-layout`
7
+ *
8
+ * Skeleton de página **preset-driven**. En vez de que cada vista componga
9
+ * átomos `val-skeleton` a mano, declara una shape y este organism arma el
10
+ * placeholder completo. Estándar único para loading states en todo el factory.
11
+ *
12
+ * Presets: `form` · `list` · `article` · `cards` · `detail` · `hero`.
13
+ *
14
+ * Extender = agregar un valor a `SkeletonLayoutPreset` + un `@case` acá.
15
+ * Los consumers no cambian.
16
+ *
17
+ * @example
18
+ * ```html
19
+ * @if (loading()) {
20
+ * <val-skeleton-layout [props]="{ preset: 'form', rows: 3, showAvatar: true }" />
21
+ * } @else {
22
+ * ...contenido real...
23
+ * }
24
+ * ```
25
+ */
26
+ export class SkeletonLayoutComponent {
27
+ constructor() {
28
+ this.props_ = signal({ preset: 'list' });
29
+ /** Props con defaults aplicados. */
30
+ this.resolved = computed(() => this.props_());
31
+ /** Shimmer on/off — default on. */
32
+ this.anim = computed(() => this.resolved().animated !== false);
33
+ /** Array `[0..rows)` para los `@for`. rows del prop o default del preset. */
34
+ this.rowsArray = computed(() => {
35
+ const p = this.resolved();
36
+ const preset = p.preset;
37
+ const count = p.rows && p.rows > 0 ? Math.floor(p.rows) : SKELETON_LAYOUT_DEFAULT_ROWS[preset];
38
+ return Array.from({ length: count }, (_, i) => i);
39
+ });
40
+ /** `grid-template-columns` para el preset cards. */
41
+ this.gridColumns = computed(() => {
42
+ const cols = this.resolved().columns ?? 2;
43
+ return `repeat(${Math.max(1, cols)}, 1fr)`;
44
+ });
45
+ }
46
+ set props(value) {
47
+ if (value)
48
+ this.props_.set(value);
49
+ }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SkeletonLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SkeletonLayoutComponent, isStandalone: true, selector: "val-skeleton-layout", inputs: { props: "props" }, ngImport: i0, template: `
52
+ <div class="val-skeleton-layout" [class]="resolved().cssClass || ''" aria-busy="true" aria-live="polite">
53
+ @switch (resolved().preset) {
54
+ <!-- FORM — avatar opcional + N fields (label+input) + botón -->
55
+ @case ('form') {
56
+ @if (resolved().showAvatar) {
57
+ <div class="sk-form__avatar">
58
+ <val-skeleton
59
+ [props]="{
60
+ type: 'avatar',
61
+ width: '96px',
62
+ height: '96px',
63
+ circle: true,
64
+ animated: anim(),
65
+ }"
66
+ />
67
+ <div class="sk-form__avatar-meta">
68
+ <val-skeleton
69
+ [props]="{
70
+ type: 'text',
71
+ width: '150px',
72
+ height: '18px',
73
+ animated: anim(),
74
+ }"
75
+ />
76
+ <val-skeleton
77
+ [props]="{
78
+ type: 'text',
79
+ width: '190px',
80
+ height: '13px',
81
+ animated: anim(),
82
+ }"
83
+ />
84
+ <val-skeleton
85
+ [props]="{
86
+ type: 'text',
87
+ width: '110px',
88
+ height: '13px',
89
+ animated: anim(),
90
+ }"
91
+ />
92
+ </div>
93
+ </div>
94
+ }
95
+ <div class="sk-form__fields">
96
+ @for (i of rowsArray(); track i) {
97
+ <div class="sk-form__field">
98
+ <val-skeleton
99
+ [props]="{
100
+ type: 'text',
101
+ width: '90px',
102
+ height: '13px',
103
+ animated: anim(),
104
+ }"
105
+ />
106
+ <val-skeleton
107
+ [props]="{
108
+ type: 'custom',
109
+ width: '100%',
110
+ height: '48px',
111
+ borderRadius: '12px',
112
+ animated: anim(),
113
+ }"
114
+ />
115
+ </div>
116
+ }
117
+ @if (resolved().showButton !== false) {
118
+ <val-skeleton
119
+ [props]="{
120
+ type: 'custom',
121
+ width: '100%',
122
+ height: '48px',
123
+ borderRadius: '24px',
124
+ animated: anim(),
125
+ }"
126
+ />
127
+ }
128
+ </div>
129
+ }
130
+
131
+ <!-- LIST — N filas list-item (el átomo ya trae icono + 2 líneas) -->
132
+ @case ('list') {
133
+ <div class="sk-list">
134
+ @for (i of rowsArray(); track i) {
135
+ <val-skeleton [props]="{ type: 'list-item', animated: anim() }" />
136
+ }
137
+ </div>
138
+ }
139
+
140
+ <!-- ARTICLE — título + meta + párrafos -->
141
+ @case ('article') {
142
+ <div class="sk-article">
143
+ @if (resolved().showTitle !== false) {
144
+ <val-skeleton
145
+ [props]="{
146
+ type: 'text',
147
+ width: '70%',
148
+ height: '30px',
149
+ animated: anim(),
150
+ }"
151
+ />
152
+ <val-skeleton
153
+ [props]="{
154
+ type: 'text',
155
+ width: '40%',
156
+ height: '14px',
157
+ animated: anim(),
158
+ }"
159
+ />
160
+ }
161
+ @for (i of rowsArray(); track i) {
162
+ <val-skeleton [props]="{ type: 'paragraph', lines: 4, animated: anim() }" />
163
+ }
164
+ </div>
165
+ }
166
+
167
+ <!-- CARDS — grid de N card blocks -->
168
+ @case ('cards') {
169
+ <div class="sk-cards" [style.grid-template-columns]="gridColumns()">
170
+ @for (i of rowsArray(); track i) {
171
+ <val-skeleton [props]="{ type: 'card', animated: anim() }" />
172
+ }
173
+ </div>
174
+ }
175
+
176
+ <!-- DETAIL — N filas key-value -->
177
+ @case ('detail') {
178
+ <div class="sk-detail">
179
+ @for (i of rowsArray(); track i) {
180
+ <div class="sk-detail__row">
181
+ <val-skeleton
182
+ [props]="{
183
+ type: 'text',
184
+ width: '110px',
185
+ height: '14px',
186
+ animated: anim(),
187
+ }"
188
+ />
189
+ <val-skeleton
190
+ [props]="{
191
+ type: 'text',
192
+ width: '160px',
193
+ height: '14px',
194
+ animated: anim(),
195
+ }"
196
+ />
197
+ </div>
198
+ }
199
+ </div>
200
+ }
201
+
202
+ <!-- HERO — banner grande + filas de contenido -->
203
+ @case ('hero') {
204
+ <div class="sk-hero">
205
+ @if (resolved().showTitle !== false) {
206
+ <val-skeleton
207
+ [props]="{
208
+ type: 'custom',
209
+ width: '100%',
210
+ height: '140px',
211
+ borderRadius: '20px',
212
+ animated: anim(),
213
+ }"
214
+ />
215
+ }
216
+ <div class="sk-hero__rows">
217
+ @for (i of rowsArray(); track i) {
218
+ <val-skeleton
219
+ [props]="{
220
+ type: 'custom',
221
+ width: '100%',
222
+ height: '72px',
223
+ borderRadius: '14px',
224
+ animated: anim(),
225
+ }"
226
+ />
227
+ }
228
+ </div>
229
+ </div>
230
+ }
231
+ }
232
+ </div>
233
+ `, isInline: true, styles: [":host{display:block;width:100%}.val-skeleton-layout{width:100%}.sk-form__avatar{display:flex;align-items:center;gap:16px;padding:16px 0}.sk-form__avatar-meta{display:flex;flex-direction:column;gap:8px}.sk-form__fields{padding:16px 0;display:flex;flex-direction:column;gap:18px}.sk-form__field{display:flex;flex-direction:column;gap:8px}.sk-list{display:flex;flex-direction:column;gap:10px;padding:8px 0}.sk-article{display:flex;flex-direction:column;gap:16px;padding:8px 0}.sk-cards{display:grid;gap:12px;padding:8px 0}.sk-detail{display:flex;flex-direction:column;gap:14px;padding:8px 0}.sk-detail__row{display:flex;align-items:center;justify-content:space-between;gap:16px}.sk-hero{display:flex;flex-direction:column;gap:16px;padding:8px 0}.sk-hero__rows{display:flex;flex-direction:column;gap:12px}\n"], dependencies: [{ kind: "component", type: SkeletonComponent, selector: "val-skeleton", inputs: ["props"] }] }); }
234
+ }
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SkeletonLayoutComponent, decorators: [{
236
+ type: Component,
237
+ args: [{ selector: 'val-skeleton-layout', standalone: true, imports: [SkeletonComponent], template: `
238
+ <div class="val-skeleton-layout" [class]="resolved().cssClass || ''" aria-busy="true" aria-live="polite">
239
+ @switch (resolved().preset) {
240
+ <!-- FORM — avatar opcional + N fields (label+input) + botón -->
241
+ @case ('form') {
242
+ @if (resolved().showAvatar) {
243
+ <div class="sk-form__avatar">
244
+ <val-skeleton
245
+ [props]="{
246
+ type: 'avatar',
247
+ width: '96px',
248
+ height: '96px',
249
+ circle: true,
250
+ animated: anim(),
251
+ }"
252
+ />
253
+ <div class="sk-form__avatar-meta">
254
+ <val-skeleton
255
+ [props]="{
256
+ type: 'text',
257
+ width: '150px',
258
+ height: '18px',
259
+ animated: anim(),
260
+ }"
261
+ />
262
+ <val-skeleton
263
+ [props]="{
264
+ type: 'text',
265
+ width: '190px',
266
+ height: '13px',
267
+ animated: anim(),
268
+ }"
269
+ />
270
+ <val-skeleton
271
+ [props]="{
272
+ type: 'text',
273
+ width: '110px',
274
+ height: '13px',
275
+ animated: anim(),
276
+ }"
277
+ />
278
+ </div>
279
+ </div>
280
+ }
281
+ <div class="sk-form__fields">
282
+ @for (i of rowsArray(); track i) {
283
+ <div class="sk-form__field">
284
+ <val-skeleton
285
+ [props]="{
286
+ type: 'text',
287
+ width: '90px',
288
+ height: '13px',
289
+ animated: anim(),
290
+ }"
291
+ />
292
+ <val-skeleton
293
+ [props]="{
294
+ type: 'custom',
295
+ width: '100%',
296
+ height: '48px',
297
+ borderRadius: '12px',
298
+ animated: anim(),
299
+ }"
300
+ />
301
+ </div>
302
+ }
303
+ @if (resolved().showButton !== false) {
304
+ <val-skeleton
305
+ [props]="{
306
+ type: 'custom',
307
+ width: '100%',
308
+ height: '48px',
309
+ borderRadius: '24px',
310
+ animated: anim(),
311
+ }"
312
+ />
313
+ }
314
+ </div>
315
+ }
316
+
317
+ <!-- LIST — N filas list-item (el átomo ya trae icono + 2 líneas) -->
318
+ @case ('list') {
319
+ <div class="sk-list">
320
+ @for (i of rowsArray(); track i) {
321
+ <val-skeleton [props]="{ type: 'list-item', animated: anim() }" />
322
+ }
323
+ </div>
324
+ }
325
+
326
+ <!-- ARTICLE — título + meta + párrafos -->
327
+ @case ('article') {
328
+ <div class="sk-article">
329
+ @if (resolved().showTitle !== false) {
330
+ <val-skeleton
331
+ [props]="{
332
+ type: 'text',
333
+ width: '70%',
334
+ height: '30px',
335
+ animated: anim(),
336
+ }"
337
+ />
338
+ <val-skeleton
339
+ [props]="{
340
+ type: 'text',
341
+ width: '40%',
342
+ height: '14px',
343
+ animated: anim(),
344
+ }"
345
+ />
346
+ }
347
+ @for (i of rowsArray(); track i) {
348
+ <val-skeleton [props]="{ type: 'paragraph', lines: 4, animated: anim() }" />
349
+ }
350
+ </div>
351
+ }
352
+
353
+ <!-- CARDS — grid de N card blocks -->
354
+ @case ('cards') {
355
+ <div class="sk-cards" [style.grid-template-columns]="gridColumns()">
356
+ @for (i of rowsArray(); track i) {
357
+ <val-skeleton [props]="{ type: 'card', animated: anim() }" />
358
+ }
359
+ </div>
360
+ }
361
+
362
+ <!-- DETAIL — N filas key-value -->
363
+ @case ('detail') {
364
+ <div class="sk-detail">
365
+ @for (i of rowsArray(); track i) {
366
+ <div class="sk-detail__row">
367
+ <val-skeleton
368
+ [props]="{
369
+ type: 'text',
370
+ width: '110px',
371
+ height: '14px',
372
+ animated: anim(),
373
+ }"
374
+ />
375
+ <val-skeleton
376
+ [props]="{
377
+ type: 'text',
378
+ width: '160px',
379
+ height: '14px',
380
+ animated: anim(),
381
+ }"
382
+ />
383
+ </div>
384
+ }
385
+ </div>
386
+ }
387
+
388
+ <!-- HERO — banner grande + filas de contenido -->
389
+ @case ('hero') {
390
+ <div class="sk-hero">
391
+ @if (resolved().showTitle !== false) {
392
+ <val-skeleton
393
+ [props]="{
394
+ type: 'custom',
395
+ width: '100%',
396
+ height: '140px',
397
+ borderRadius: '20px',
398
+ animated: anim(),
399
+ }"
400
+ />
401
+ }
402
+ <div class="sk-hero__rows">
403
+ @for (i of rowsArray(); track i) {
404
+ <val-skeleton
405
+ [props]="{
406
+ type: 'custom',
407
+ width: '100%',
408
+ height: '72px',
409
+ borderRadius: '14px',
410
+ animated: anim(),
411
+ }"
412
+ />
413
+ }
414
+ </div>
415
+ </div>
416
+ }
417
+ }
418
+ </div>
419
+ `, styles: [":host{display:block;width:100%}.val-skeleton-layout{width:100%}.sk-form__avatar{display:flex;align-items:center;gap:16px;padding:16px 0}.sk-form__avatar-meta{display:flex;flex-direction:column;gap:8px}.sk-form__fields{padding:16px 0;display:flex;flex-direction:column;gap:18px}.sk-form__field{display:flex;flex-direction:column;gap:8px}.sk-list{display:flex;flex-direction:column;gap:10px;padding:8px 0}.sk-article{display:flex;flex-direction:column;gap:16px;padding:8px 0}.sk-cards{display:grid;gap:12px;padding:8px 0}.sk-detail{display:flex;flex-direction:column;gap:14px;padding:8px 0}.sk-detail__row{display:flex;align-items:center;justify-content:space-between;gap:16px}.sk-hero{display:flex;flex-direction:column;gap:16px;padding:8px 0}.sk-hero__rows{display:flex;flex-direction:column;gap:12px}\n"] }]
420
+ }], propDecorators: { props: [{
421
+ type: Input
422
+ }] } });
423
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvc2tlbGV0b24tbGF5b3V0L3NrZWxldG9uLWxheW91dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RSxPQUFPLEVBQWdELDRCQUE0QixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUVyRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFtUkgsTUFBTSxPQUFPLHVCQUF1QjtJQWxScEM7UUFtUm1CLFdBQU0sR0FBRyxNQUFNLENBQXlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFNN0Usb0NBQW9DO1FBQzNCLGFBQVEsR0FBRyxRQUFRLENBQXlCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTFFLG1DQUFtQztRQUMxQixTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLENBQUM7UUFFbkUsNkVBQTZFO1FBQ3BFLGNBQVMsR0FBRyxRQUFRLENBQVcsR0FBRyxFQUFFO1lBQzNDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixNQUFNLE1BQU0sR0FBeUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUM5QyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxvREFBb0Q7UUFDM0MsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO1lBQzFDLE9BQU8sVUFBVSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0tBQ0o7SUF2QkMsSUFBYSxLQUFLLENBQUMsS0FBeUM7UUFDMUQsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0FMVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwyR0E5UXhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNMVCw2MkJBdkxTLGlCQUFpQjs7NEZBK1FoQix1QkFBdUI7a0JBbFJuQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxpQkFBaUIsQ0FBQyxZQUNsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzTFQ7OEJBMkZZLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBJbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3NrZWxldG9uL3NrZWxldG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa2VsZXRvbkxheW91dE1ldGFkYXRhLCBTa2VsZXRvbkxheW91dFByZXNldCwgU0tFTEVUT05fTEFZT1VUX0RFRkFVTFRfUk9XUyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIGB2YWwtc2tlbGV0b24tbGF5b3V0YFxuICpcbiAqIFNrZWxldG9uIGRlIHDDoWdpbmEgKipwcmVzZXQtZHJpdmVuKiouIEVuIHZleiBkZSBxdWUgY2FkYSB2aXN0YSBjb21wb25nYVxuICogw6F0b21vcyBgdmFsLXNrZWxldG9uYCBhIG1hbm8sIGRlY2xhcmEgdW5hIHNoYXBlIHkgZXN0ZSBvcmdhbmlzbSBhcm1hIGVsXG4gKiBwbGFjZWhvbGRlciBjb21wbGV0by4gRXN0w6FuZGFyIMO6bmljbyBwYXJhIGxvYWRpbmcgc3RhdGVzIGVuIHRvZG8gZWwgZmFjdG9yeS5cbiAqXG4gKiBQcmVzZXRzOiBgZm9ybWAgwrcgYGxpc3RgIMK3IGBhcnRpY2xlYCDCtyBgY2FyZHNgIMK3IGBkZXRhaWxgIMK3IGBoZXJvYC5cbiAqXG4gKiBFeHRlbmRlciA9IGFncmVnYXIgdW4gdmFsb3IgYSBgU2tlbGV0b25MYXlvdXRQcmVzZXRgICsgdW4gYEBjYXNlYCBhY8OhLlxuICogTG9zIGNvbnN1bWVycyBubyBjYW1iaWFuLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiBAaWYgKGxvYWRpbmcoKSkge1xuICogICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdmb3JtJywgcm93czogMywgc2hvd0F2YXRhcjogdHJ1ZSB9XCIgLz5cbiAqIH0gQGVsc2Uge1xuICogICAuLi5jb250ZW5pZG8gcmVhbC4uLlxuICogfVxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1za2VsZXRvbi1sYXlvdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbU2tlbGV0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ2YWwtc2tlbGV0b24tbGF5b3V0XCIgW2NsYXNzXT1cInJlc29sdmVkKCkuY3NzQ2xhc3MgfHwgJydcIiBhcmlhLWJ1c3k9XCJ0cnVlXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICBAc3dpdGNoIChyZXNvbHZlZCgpLnByZXNldCkge1xuICAgICAgICA8IS0tIEZPUk0g4oCUIGF2YXRhciBvcGNpb25hbCArIE4gZmllbGRzIChsYWJlbCtpbnB1dCkgKyBib3TDs24gLS0+XG4gICAgICAgIEBjYXNlICgnZm9ybScpIHtcbiAgICAgICAgICBAaWYgKHJlc29sdmVkKCkuc2hvd0F2YXRhcikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrLWZvcm1fX2F2YXRhclwiPlxuICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uXG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdhdmF0YXInLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6ICc5NnB4JyxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogJzk2cHgnLFxuICAgICAgICAgICAgICAgICAgY2lyY2xlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZWQ6IGFuaW0oKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrLWZvcm1fX2F2YXRhci1tZXRhXCI+XG4gICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvblxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE1MHB4JyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMThweCcsXG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGVkOiBhbmltKCksXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxOTBweCcsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEzcHgnLFxuICAgICAgICAgICAgICAgICAgICBhbmltYXRlZDogYW5pbSgpLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTEwcHgnLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxM3B4JyxcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZWQ6IGFuaW0oKSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzay1mb3JtX19maWVsZHNcIj5cbiAgICAgICAgICAgIEBmb3IgKGkgb2Ygcm93c0FycmF5KCk7IHRyYWNrIGkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrLWZvcm1fX2ZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvblxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzkwcHgnLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxM3B4JyxcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZWQ6IGFuaW0oKSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvblxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzQ4cHgnLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcxMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZWQ6IGFuaW0oKSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChyZXNvbHZlZCgpLnNob3dCdXR0b24gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnNDhweCcsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgIGFuaW1hdGVkOiBhbmltKCksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIExJU1Qg4oCUIE4gZmlsYXMgbGlzdC1pdGVtIChlbCDDoXRvbW8geWEgdHJhZSBpY29ubyArIDIgbMOtbmVhcykgLS0+XG4gICAgICAgIEBjYXNlICgnbGlzdCcpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2stbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAoaSBvZiByb3dzQXJyYXkoKTsgdHJhY2sgaSkge1xuICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uIFtwcm9wc109XCJ7IHR5cGU6ICdsaXN0LWl0ZW0nLCBhbmltYXRlZDogYW5pbSgpIH1cIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBBUlRJQ0xFIOKAlCB0w610dWxvICsgbWV0YSArIHDDoXJyYWZvcyAtLT5cbiAgICAgICAgQGNhc2UgKCdhcnRpY2xlJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzay1hcnRpY2xlXCI+XG4gICAgICAgICAgICBAaWYgKHJlc29sdmVkKCkuc2hvd1RpdGxlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uXG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAnNzAlJyxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogJzMwcHgnLFxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZWQ6IGFuaW0oKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHZhbC1za2VsZXRvblxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzQwJScsXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxNHB4JyxcbiAgICAgICAgICAgICAgICAgIGFuaW1hdGVkOiBhbmltKCksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZm9yIChpIG9mIHJvd3NBcnJheSgpOyB0cmFjayBpKSB7XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgdHlwZTogJ3BhcmFncmFwaCcsIGxpbmVzOiA0LCBhbmltYXRlZDogYW5pbSgpIH1cIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBDQVJEUyDigJQgZ3JpZCBkZSBOIGNhcmQgYmxvY2tzIC0tPlxuICAgICAgICBAY2FzZSAoJ2NhcmRzJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzay1jYXJkc1wiIFtzdHlsZS5ncmlkLXRlbXBsYXRlLWNvbHVtbnNdPVwiZ3JpZENvbHVtbnMoKVwiPlxuICAgICAgICAgICAgQGZvciAoaSBvZiByb3dzQXJyYXkoKTsgdHJhY2sgaSkge1xuICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uIFtwcm9wc109XCJ7IHR5cGU6ICdjYXJkJywgYW5pbWF0ZWQ6IGFuaW0oKSB9XCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gREVUQUlMIOKAlCBOIGZpbGFzIGtleS12YWx1ZSAtLT5cbiAgICAgICAgQGNhc2UgKCdkZXRhaWwnKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNrLWRldGFpbFwiPlxuICAgICAgICAgICAgQGZvciAoaSBvZiByb3dzQXJyYXkoKTsgdHJhY2sgaSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2stZGV0YWlsX19yb3dcIj5cbiAgICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTEwcHgnLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZWQ6IGFuaW0oKSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvblxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE2MHB4JyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTRweCcsXG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGVkOiBhbmltKCksXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gSEVSTyDigJQgYmFubmVyIGdyYW5kZSArIGZpbGFzIGRlIGNvbnRlbmlkbyAtLT5cbiAgICAgICAgQGNhc2UgKCdoZXJvJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzay1oZXJvXCI+XG4gICAgICAgICAgICBAaWYgKHJlc29sdmVkKCkuc2hvd1RpdGxlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uXG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogJzE0MHB4JyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzIwcHgnLFxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZWQ6IGFuaW0oKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzay1oZXJvX19yb3dzXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGkgb2Ygcm93c0FycmF5KCk7IHRyYWNrIGkpIHtcbiAgICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY3VzdG9tJyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnNzJweCcsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzE0cHgnLFxuICAgICAgICAgICAgICAgICAgICBhbmltYXRlZDogYW5pbSgpLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC52YWwtc2tlbGV0b24tbGF5b3V0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC8qIEZPUk0gKi9cbiAgICAgIC5zay1mb3JtX19hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgIH1cbiAgICAgIC5zay1mb3JtX19hdmF0YXItbWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuICAgICAgLnNrLWZvcm1fX2ZpZWxkcyB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxOHB4O1xuICAgICAgfVxuICAgICAgLnNrLWZvcm1fX2ZpZWxkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIExJU1QgKi9cbiAgICAgIC5zay1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBwYWRkaW5nOiA4cHggMDtcbiAgICAgIH1cblxuICAgICAgLyogQVJUSUNMRSAqL1xuICAgICAgLnNrLWFydGljbGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgICAgfVxuXG4gICAgICAvKiBDQVJEUyAqL1xuICAgICAgLnNrLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiA4cHggMDtcbiAgICAgIH1cblxuICAgICAgLyogREVUQUlMICovXG4gICAgICAuc2stZGV0YWlsIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgICBwYWRkaW5nOiA4cHggMDtcbiAgICAgIH1cbiAgICAgIC5zay1kZXRhaWxfX3JvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAxNnB4O1xuICAgICAgfVxuXG4gICAgICAvKiBIRVJPICovXG4gICAgICAuc2staGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTZweDtcbiAgICAgICAgcGFkZGluZzogOHB4IDA7XG4gICAgICB9XG4gICAgICAuc2staGVyb19fcm93cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa2VsZXRvbkxheW91dENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNfID0gc2lnbmFsPFNrZWxldG9uTGF5b3V0TWV0YWRhdGE+KHsgcHJlc2V0OiAnbGlzdCcgfSk7XG5cbiAgQElucHV0KCkgc2V0IHByb3BzKHZhbHVlOiBTa2VsZXRvbkxheW91dE1ldGFkYXRhIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB0aGlzLnByb3BzXy5zZXQodmFsdWUpO1xuICB9XG5cbiAgLyoqIFByb3BzIGNvbiBkZWZhdWx0cyBhcGxpY2Fkb3MuICovXG4gIHJlYWRvbmx5IHJlc29sdmVkID0gY29tcHV0ZWQ8U2tlbGV0b25MYXlvdXRNZXRhZGF0YT4oKCkgPT4gdGhpcy5wcm9wc18oKSk7XG5cbiAgLyoqIFNoaW1tZXIgb24vb2ZmIOKAlCBkZWZhdWx0IG9uLiAqL1xuICByZWFkb25seSBhbmltID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZCgpLmFuaW1hdGVkICE9PSBmYWxzZSk7XG5cbiAgLyoqIEFycmF5IGBbMC4ucm93cylgIHBhcmEgbG9zIGBAZm9yYC4gcm93cyBkZWwgcHJvcCBvIGRlZmF1bHQgZGVsIHByZXNldC4gKi9cbiAgcmVhZG9ubHkgcm93c0FycmF5ID0gY29tcHV0ZWQ8bnVtYmVyW10+KCgpID0+IHtcbiAgICBjb25zdCBwID0gdGhpcy5yZXNvbHZlZCgpO1xuICAgIGNvbnN0IHByZXNldDogU2tlbGV0b25MYXlvdXRQcmVzZXQgPSBwLnByZXNldDtcbiAgICBjb25zdCBjb3VudCA9IHAucm93cyAmJiBwLnJvd3MgPiAwID8gTWF0aC5mbG9vcihwLnJvd3MpIDogU0tFTEVUT05fTEFZT1VUX0RFRkFVTFRfUk9XU1twcmVzZXRdO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9LCAoXywgaSkgPT4gaSk7XG4gIH0pO1xuXG4gIC8qKiBgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zYCBwYXJhIGVsIHByZXNldCBjYXJkcy4gKi9cbiAgcmVhZG9ubHkgZ3JpZENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29scyA9IHRoaXMucmVzb2x2ZWQoKS5jb2x1bW5zID8/IDI7XG4gICAgcmV0dXJuIGByZXBlYXQoJHtNYXRoLm1heCgxLCBjb2xzKX0sIDFmcilgO1xuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ /** Defaults de `rows` por preset cuando el consumer no lo especifica. */
2
+ export const SKELETON_LAYOUT_DEFAULT_ROWS = {
3
+ form: 3,
4
+ list: 5,
5
+ article: 3,
6
+ cards: 4,
7
+ detail: 4,
8
+ hero: 3,
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3NrZWxldG9uLWxheW91dC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErREEseUVBQXlFO0FBQ3pFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUF5QztJQUNoRixJQUFJLEVBQUUsQ0FBQztJQUNQLElBQUksRUFBRSxDQUFDO0lBQ1AsT0FBTyxFQUFFLENBQUM7SUFDVixLQUFLLEVBQUUsQ0FBQztJQUNSLE1BQU0sRUFBRSxDQUFDO0lBQ1QsSUFBSSxFQUFFLENBQUM7Q0FDUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcmVzZXRzIGRlIGxheW91dCBwYXJhIGB2YWwtc2tlbGV0b24tbGF5b3V0YC5cbiAqXG4gKiBDYWRhIHByZXNldCBjb21wb25lIMOhdG9tb3MgYHZhbC1za2VsZXRvbmAgZW4gbGEgZm9ybWEgZGUgdW5hIHNoYXBlIGRlIHDDoWdpbmFcbiAqIGNvbcO6bi4gUGFyYSBhZ3JlZ2FyIHVubyBudWV2bzogYcOxYWRpciBlbCB2YWxvciBhY8OhICsgdW4gYEBjYXNlYCBlbiBlbFxuICogdGVtcGxhdGUgZGVsIGNvbXBvbmVudGUuIENlcm8gY2FtYmlvcyBlbiBsb3MgY29uc3VtZXJzLlxuICovXG5leHBvcnQgdHlwZSBTa2VsZXRvbkxheW91dFByZXNldCA9XG4gIHwgJ2Zvcm0nIC8vIGhlYWRlciBhdmF0YXIgb3BjaW9uYWwgKyBOIGZpZWxkIGJsb2NrcyAobGFiZWwraW5wdXQpICsgYm90w7NuXG4gIHwgJ2xpc3QnIC8vIE4gZmlsYXMgbGlzdC1pdGVtIChpY29ubyArIDIgbMOtbmVhcylcbiAgfCAnYXJ0aWNsZScgLy8gdMOtdHVsbyArIG1ldGEgKyBww6FycmFmb3MgKGRvYyBsZWdhbCAvIG1hcmtkb3duKVxuICB8ICdjYXJkcycgLy8gZ3JpZCBkZSBOIGNhcmQgYmxvY2tzXG4gIHwgJ2RldGFpbCcgLy8gTiBmaWxhcyBrZXktdmFsdWUgKGxhYmVsIGl6cSArIHZhbG9yIGRlcilcbiAgfCAnaGVybyc7IC8vIGJhbm5lciBncmFuZGUgKyBmaWxhcyBkZSBjb250ZW5pZG8gZGViYWpvXG5cbi8qKlxuICogQ29uZmlndXJhY2nDs24gZGVsIGNvbXBvbmVudGUgYHZhbC1za2VsZXRvbi1sYXlvdXRgLlxuICpcbiAqIEBleGFtcGxlIEZvcm0gY29uIGF2YXRhciAocGVyZmlsKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtc2tlbGV0b24tbGF5b3V0IFtwcm9wc109XCJ7IHByZXNldDogJ2Zvcm0nLCByb3dzOiAzLCBzaG93QXZhdGFyOiB0cnVlIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgTGlzdGEgKG5vdGlmaWNhY2lvbmVzLCBzZXNpb25lcyk6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdsaXN0Jywgcm93czogNSB9XCIgLz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEFydMOtY3VsbyBsZWdhbDpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtc2tlbGV0b24tbGF5b3V0IFtwcm9wc109XCJ7IHByZXNldDogJ2FydGljbGUnIH1cIiAvPlxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2tlbGV0b25MYXlvdXRNZXRhZGF0YSB7XG4gIC8qKiBTaGFwZSBkZSBsYSBww6FnaW5hIGEgZXNxdWVsZXRpemFyLiAqL1xuICBwcmVzZXQ6IFNrZWxldG9uTGF5b3V0UHJlc2V0O1xuXG4gIC8qKlxuICAgKiBDYW50aWRhZCBkZSBpdGVtcyByZXBldGlibGVzIChmaWVsZHMgZW4gYGZvcm1gLCBmaWxhcyBlbiBgbGlzdGAvYGRldGFpbGAsXG4gICAqIHDDoXJyYWZvcyBlbiBgYXJ0aWNsZWAsIGNhcmRzIGVuIGBjYXJkc2ApLiBTaSBzZSBvbWl0ZSB1c2EgZWwgZGVmYXVsdCBkZWxcbiAgICogcHJlc2V0LlxuICAgKi9cbiAgcm93cz86IG51bWJlcjtcblxuICAvKiogYGZvcm1gIOKAlCBhbnRlcG9uZSB1biBibG9xdWUgYXZhdGFyICsgbWV0YSBsaW5lcy4gRGVmYXVsdCBgZmFsc2VgLiAqL1xuICBzaG93QXZhdGFyPzogYm9vbGVhbjtcblxuICAvKiogYGZvcm1gIOKAlCByZW5kZXJpemEgdW4gYmxvcXVlIGRlIGJvdMOzbiBhbCBmaW5hbC4gRGVmYXVsdCBgdHJ1ZWAuICovXG4gIHNob3dCdXR0b24/OiBib29sZWFuO1xuXG4gIC8qKiBgY2FyZHNgIOKAlCBjb2x1bW5hcyBwb3IgZmlsYS4gRGVmYXVsdCBgMmAuICovXG4gIGNvbHVtbnM/OiBudW1iZXI7XG5cbiAgLyoqIGBhcnRpY2xlYCAvIGBoZXJvYCDigJQgaW5jbHV5ZSBibG9xdWUgZGUgdMOtdHVsbyBncmFuZGUuIERlZmF1bHQgYHRydWVgLiAqL1xuICBzaG93VGl0bGU/OiBib29sZWFuO1xuXG4gIC8qKiBEZXNhY3RpdmEgZWwgc2hpbW1lci4gRGVmYXVsdCBhbmltYWRvLiAqL1xuICBhbmltYXRlZD86IGJvb2xlYW47XG5cbiAgLyoqIENsYXNlIENTUyBleHRyYSBwYXJhIGVsIGNvbnRlbmVkb3IuICovXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xufVxuXG4vKiogRGVmYXVsdHMgZGUgYHJvd3NgIHBvciBwcmVzZXQgY3VhbmRvIGVsIGNvbnN1bWVyIG5vIGxvIGVzcGVjaWZpY2EuICovXG5leHBvcnQgY29uc3QgU0tFTEVUT05fTEFZT1VUX0RFRkFVTFRfUk9XUzogUmVjb3JkPFNrZWxldG9uTGF5b3V0UHJlc2V0LCBudW1iZXI+ID0ge1xuICBmb3JtOiAzLFxuICBsaXN0OiA1LFxuICBhcnRpY2xlOiAzLFxuICBjYXJkczogNCxcbiAgZGV0YWlsOiA0LFxuICBoZXJvOiAzLFxufTtcbiJdfQ==