valtech-components 2.0.848 → 2.0.850

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,167 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, computed, input, } from '@angular/core';
3
+ import { IonIcon } from '@ionic/angular/standalone';
4
+ import { addIcons } from 'ionicons';
5
+ import { alertCircleOutline, cloudOfflineOutline, documentOutline, } from 'ionicons/icons';
6
+ import { ButtonComponent } from '../../atoms/button/button.component';
7
+ import { TextComponent } from '../../atoms/text/text.component';
8
+ import { TitleComponent } from '../../atoms/title/title.component';
9
+ import { ComponentStates } from '../../types';
10
+ import * as i0 from "@angular/core";
11
+ // Registra los 3 iconos default (variantes). Si la página pasa un icono custom
12
+ // en `props.icon`, debe registrarlo ella misma con addIcons() — Ionic
13
+ // standalone no resuelve nombres global, solo los del registry local.
14
+ addIcons({
15
+ alertCircleOutline,
16
+ cloudOfflineOutline,
17
+ documentOutline,
18
+ });
19
+ const DEFAULT_ICON_BY_VARIANT = {
20
+ empty: 'document-outline',
21
+ error: 'alert-circle-outline',
22
+ offline: 'cloud-offline-outline',
23
+ };
24
+ /**
25
+ * `<val-empty-state>` — molecule declarativo para estados de "no hay datos /
26
+ * hubo error / sin red". Reemplaza el patrón ad-hoc (ion-icon + val-title +
27
+ * val-text + val-button) que cada página venía improvisando.
28
+ *
29
+ * Uso típico:
30
+ *
31
+ * ```html
32
+ * @if (loading()) {
33
+ * <val-skeleton-layout [props]="..." />
34
+ * } @else if (errorState(); as e) {
35
+ * <val-empty-state [props]="e" />
36
+ * } @else if (items().length === 0) {
37
+ * <val-empty-state [props]="emptyProps" />
38
+ * } @else {
39
+ * <!-- contenido normal -->
40
+ * }
41
+ * ```
42
+ *
43
+ * I18n: las cadenas vienen ya traducidas en las props (la lib es agnóstica de
44
+ * namespaces). Para wiring automático desde un error capturado, usar el
45
+ * helper `createErrorStateProps(err, ...)` (`valtech-components`).
46
+ */
47
+ export class EmptyStateComponent {
48
+ constructor() {
49
+ this.props = input.required();
50
+ /** Variante resuelta (default `'empty'`). */
51
+ this.variantClass = computed(() => this.props().variant ?? 'empty');
52
+ /** Icono final — custom si se pasó, default de la variante si no. */
53
+ this.iconName = computed(() => this.props().icon ?? DEFAULT_ICON_BY_VARIANT[this.variantClass()]);
54
+ /** Tamaño en px. Default 64. */
55
+ this.iconSize = computed(() => this.props().iconSize ?? 64);
56
+ /**
57
+ * Props del botón CTA. Construidas a partir de `props().action`. El estado
58
+ * `WORKING` se aplica cuando `action.loading === true` (spinner mientras
59
+ * el handler corre).
60
+ */
61
+ this.ctaProps = computed(() => {
62
+ const action = this.props().action;
63
+ return {
64
+ text: action?.label ?? '',
65
+ color: 'dark',
66
+ type: 'button',
67
+ fill: 'solid',
68
+ size: 'default',
69
+ shape: 'round',
70
+ state: action?.loading ? ComponentStates.WORKING : ComponentStates.ENABLED,
71
+ };
72
+ });
73
+ }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
75
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: EmptyStateComponent, isStandalone: true, selector: "val-empty-state", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
76
+ <section
77
+ class="empty-state"
78
+ [class.empty-state--error]="variantClass() === 'error'"
79
+ [class.empty-state--offline]="variantClass() === 'offline'"
80
+ role="status"
81
+ aria-live="polite"
82
+ >
83
+ <ion-icon
84
+ class="empty-state__icon"
85
+ [name]="iconName()"
86
+ [style.font-size.px]="iconSize()"
87
+ aria-hidden="true"
88
+ />
89
+
90
+ <val-title
91
+ [props]="{
92
+ size: 'large',
93
+ color: 'dark',
94
+ bold: true,
95
+ content: props().title,
96
+ }"
97
+ />
98
+
99
+ @if (props().description; as desc) {
100
+ <val-text
101
+ [props]="{
102
+ size: 'large',
103
+ color: 'medium',
104
+ bold: false,
105
+ content: desc,
106
+ }"
107
+ />
108
+ }
109
+
110
+ @if (props().action; as a) {
111
+ <val-button
112
+ class="empty-state__cta"
113
+ [props]="ctaProps()"
114
+ (click)="a.handler()"
115
+ />
116
+ }
117
+ </section>
118
+ `, isInline: true, styles: [".empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:32px 16px;min-height:240px}.empty-state__icon{color:var(--ion-color-medium)}.empty-state--error .empty-state__icon{color:var(--ion-color-warning, #ffb800)}.empty-state--offline .empty-state__icon{color:var(--ion-color-medium);opacity:.7}.empty-state__cta{margin-top:8px}\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: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
119
+ }
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyStateComponent, decorators: [{
121
+ type: Component,
122
+ args: [{ selector: 'val-empty-state', standalone: true, imports: [CommonModule, IonIcon, ButtonComponent, TextComponent, TitleComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
123
+ <section
124
+ class="empty-state"
125
+ [class.empty-state--error]="variantClass() === 'error'"
126
+ [class.empty-state--offline]="variantClass() === 'offline'"
127
+ role="status"
128
+ aria-live="polite"
129
+ >
130
+ <ion-icon
131
+ class="empty-state__icon"
132
+ [name]="iconName()"
133
+ [style.font-size.px]="iconSize()"
134
+ aria-hidden="true"
135
+ />
136
+
137
+ <val-title
138
+ [props]="{
139
+ size: 'large',
140
+ color: 'dark',
141
+ bold: true,
142
+ content: props().title,
143
+ }"
144
+ />
145
+
146
+ @if (props().description; as desc) {
147
+ <val-text
148
+ [props]="{
149
+ size: 'large',
150
+ color: 'medium',
151
+ bold: false,
152
+ content: desc,
153
+ }"
154
+ />
155
+ }
156
+
157
+ @if (props().action; as a) {
158
+ <val-button
159
+ class="empty-state__cta"
160
+ [props]="ctaProps()"
161
+ (click)="a.handler()"
162
+ />
163
+ }
164
+ </section>
165
+ `, styles: [".empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:32px 16px;min-height:240px}.empty-state__icon{color:var(--ion-color-medium)}.empty-state--error .empty-state__icon{color:var(--ion-color-warning, #ffb800)}.empty-state--offline .empty-state__icon{color:var(--ion-color-medium);opacity:.7}.empty-state__cta{margin-top:8px}\n"] }]
166
+ }] });
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsZUFBZSxHQUNoQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUc5RCwrRUFBK0U7QUFDL0Usc0VBQXNFO0FBQ3RFLHNFQUFzRTtBQUN0RSxRQUFRLENBQUM7SUFDUCxrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGVBQWU7Q0FDaEIsQ0FBQyxDQUFDO0FBRUgsTUFBTSx1QkFBdUIsR0FBc0M7SUFDakUsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixLQUFLLEVBQUUsc0JBQXNCO0lBQzdCLE9BQU8sRUFBRSx1QkFBdUI7Q0FDakMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBOEVILE1BQU0sT0FBTyxtQkFBbUI7SUE3RWhDO1FBOEVFLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFzQixDQUFDO1FBRTdDLDZDQUE2QztRQUNuQyxpQkFBWSxHQUFHLFFBQVEsQ0FDL0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQ3RDLENBQUM7UUFFRixxRUFBcUU7UUFDM0QsYUFBUSxHQUFHLFFBQVEsQ0FDM0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FDeEUsQ0FBQztRQUVGLGdDQUFnQztRQUN0QixhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFFakU7Ozs7V0FJRztRQUNPLGFBQVEsR0FBRyxRQUFRLENBQWlCLEdBQUcsRUFBRTtZQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ25DLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDekIsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPO2FBQ3pELENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7S0FDSjsrR0FqQ1ksbUJBQW1CO21HQUFuQixtQkFBbUIsOE1BeEVwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJDVCxzZEE3Q1MsWUFBWSwrQkFBRSxPQUFPLDJKQUFFLGVBQWUsMEdBQUUsYUFBYSx3RUFBRSxjQUFjOzs0RkEwRXBFLG1CQUFtQjtrQkE3RS9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGNBQWMsQ0FBQyxtQkFDL0QsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJDVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhbGVydENpcmNsZU91dGxpbmUsXG4gIGNsb3VkT2ZmbGluZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZU1ldGFkYXRhLCBFbXB0eVN0YXRlVmFyaWFudCB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBSZWdpc3RyYSBsb3MgMyBpY29ub3MgZGVmYXVsdCAodmFyaWFudGVzKS4gU2kgbGEgcMOhZ2luYSBwYXNhIHVuIGljb25vIGN1c3RvbVxuLy8gZW4gYHByb3BzLmljb25gLCBkZWJlIHJlZ2lzdHJhcmxvIGVsbGEgbWlzbWEgY29uIGFkZEljb25zKCkg4oCUIElvbmljXG4vLyBzdGFuZGFsb25lIG5vIHJlc3VlbHZlIG5vbWJyZXMgZ2xvYmFsLCBzb2xvIGxvcyBkZWwgcmVnaXN0cnkgbG9jYWwuXG5hZGRJY29ucyh7XG4gIGFsZXJ0Q2lyY2xlT3V0bGluZSxcbiAgY2xvdWRPZmZsaW5lT3V0bGluZSxcbiAgZG9jdW1lbnRPdXRsaW5lLFxufSk7XG5cbmNvbnN0IERFRkFVTFRfSUNPTl9CWV9WQVJJQU5UOiBSZWNvcmQ8RW1wdHlTdGF0ZVZhcmlhbnQsIHN0cmluZz4gPSB7XG4gIGVtcHR5OiAnZG9jdW1lbnQtb3V0bGluZScsXG4gIGVycm9yOiAnYWxlcnQtY2lyY2xlLW91dGxpbmUnLFxuICBvZmZsaW5lOiAnY2xvdWQtb2ZmbGluZS1vdXRsaW5lJyxcbn07XG5cbi8qKlxuICogYDx2YWwtZW1wdHktc3RhdGU+YCDigJQgbW9sZWN1bGUgZGVjbGFyYXRpdm8gcGFyYSBlc3RhZG9zIGRlIFwibm8gaGF5IGRhdG9zIC9cbiAqIGh1Ym8gZXJyb3IgLyBzaW4gcmVkXCIuIFJlZW1wbGF6YSBlbCBwYXRyw7NuIGFkLWhvYyAoaW9uLWljb24gKyB2YWwtdGl0bGUgK1xuICogdmFsLXRleHQgKyB2YWwtYnV0dG9uKSBxdWUgY2FkYSBww6FnaW5hIHZlbsOtYSBpbXByb3Zpc2FuZG8uXG4gKlxuICogVXNvIHTDrXBpY286XG4gKlxuICogYGBgaHRtbFxuICogQGlmIChsb2FkaW5nKCkpIHtcbiAqICAgPHZhbC1za2VsZXRvbi1sYXlvdXQgW3Byb3BzXT1cIi4uLlwiIC8+XG4gKiB9IEBlbHNlIGlmIChlcnJvclN0YXRlKCk7IGFzIGUpIHtcbiAqICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwiZVwiIC8+XG4gKiB9IEBlbHNlIGlmIChpdGVtcygpLmxlbmd0aCA9PT0gMCkge1xuICogICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJlbXB0eVByb3BzXCIgLz5cbiAqIH0gQGVsc2Uge1xuICogICA8IS0tIGNvbnRlbmlkbyBub3JtYWwgLS0+XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBJMThuOiBsYXMgY2FkZW5hcyB2aWVuZW4geWEgdHJhZHVjaWRhcyBlbiBsYXMgcHJvcHMgKGxhIGxpYiBlcyBhZ27Ds3N0aWNhIGRlXG4gKiBuYW1lc3BhY2VzKS4gUGFyYSB3aXJpbmcgYXV0b23DoXRpY28gZGVzZGUgdW4gZXJyb3IgY2FwdHVyYWRvLCB1c2FyIGVsXG4gKiBoZWxwZXIgYGNyZWF0ZUVycm9yU3RhdGVQcm9wcyhlcnIsIC4uLilgIChgdmFsdGVjaC1jb21wb25lbnRzYCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1lbXB0eS1zdGF0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb24sIEJ1dHRvbkNvbXBvbmVudCwgVGV4dENvbXBvbmVudCwgVGl0bGVDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c2VjdGlvblxuICAgICAgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiXG4gICAgICBbY2xhc3MuZW1wdHktc3RhdGUtLWVycm9yXT1cInZhcmlhbnRDbGFzcygpID09PSAnZXJyb3InXCJcbiAgICAgIFtjbGFzcy5lbXB0eS1zdGF0ZS0tb2ZmbGluZV09XCJ2YXJpYW50Q2xhc3MoKSA9PT0gJ29mZmxpbmUnXCJcbiAgICAgIHJvbGU9XCJzdGF0dXNcIlxuICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICA+XG4gICAgICA8aW9uLWljb25cbiAgICAgICAgY2xhc3M9XCJlbXB0eS1zdGF0ZV9faWNvblwiXG4gICAgICAgIFtuYW1lXT1cImljb25OYW1lKClcIlxuICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cImljb25TaXplKClcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgLz5cblxuICAgICAgPHZhbC10aXRsZVxuICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgIGNvbnRlbnQ6IHByb3BzKCkudGl0bGUsXG4gICAgICAgIH1cIlxuICAgICAgLz5cblxuICAgICAgQGlmIChwcm9wcygpLmRlc2NyaXB0aW9uOyBhcyBkZXNjKSB7XG4gICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICBjb250ZW50OiBkZXNjLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgfVxuXG4gICAgICBAaWYgKHByb3BzKCkuYWN0aW9uOyBhcyBhKSB7XG4gICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJlbXB0eS1zdGF0ZV9fY3RhXCJcbiAgICAgICAgICBbcHJvcHNdPVwiY3RhUHJvcHMoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImEuaGFuZGxlcigpXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA8L3NlY3Rpb24+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5lbXB0eS1zdGF0ZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMzJweCAxNnB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAyNDBweDtcbiAgICAgIH1cbiAgICAgIC5lbXB0eS1zdGF0ZV9faWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cbiAgICAgIC5lbXB0eS1zdGF0ZS0tZXJyb3IgLmVtcHR5LXN0YXRlX19pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci13YXJuaW5nLCAjZmZiODAwKTtcbiAgICAgIH1cbiAgICAgIC5lbXB0eS1zdGF0ZS0tb2ZmbGluZSAuZW1wdHktc3RhdGVfX2ljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIH1cbiAgICAgIC5lbXB0eS1zdGF0ZV9fY3RhIHtcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVtcHR5U3RhdGVDb21wb25lbnQge1xuICBwcm9wcyA9IGlucHV0LnJlcXVpcmVkPEVtcHR5U3RhdGVNZXRhZGF0YT4oKTtcblxuICAvKiogVmFyaWFudGUgcmVzdWVsdGEgKGRlZmF1bHQgYCdlbXB0eSdgKS4gKi9cbiAgcHJvdGVjdGVkIHZhcmlhbnRDbGFzcyA9IGNvbXB1dGVkPEVtcHR5U3RhdGVWYXJpYW50PihcbiAgICAoKSA9PiB0aGlzLnByb3BzKCkudmFyaWFudCA/PyAnZW1wdHknLFxuICApO1xuXG4gIC8qKiBJY29ubyBmaW5hbCDigJQgY3VzdG9tIHNpIHNlIHBhc8OzLCBkZWZhdWx0IGRlIGxhIHZhcmlhbnRlIHNpIG5vLiAqL1xuICBwcm90ZWN0ZWQgaWNvbk5hbWUgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLnByb3BzKCkuaWNvbiA/PyBERUZBVUxUX0lDT05fQllfVkFSSUFOVFt0aGlzLnZhcmlhbnRDbGFzcygpXSxcbiAgKTtcblxuICAvKiogVGFtYcOxbyBlbiBweC4gRGVmYXVsdCA2NC4gKi9cbiAgcHJvdGVjdGVkIGljb25TaXplID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpLmljb25TaXplID8/IDY0KTtcblxuICAvKipcbiAgICogUHJvcHMgZGVsIGJvdMOzbiBDVEEuIENvbnN0cnVpZGFzIGEgcGFydGlyIGRlIGBwcm9wcygpLmFjdGlvbmAuIEVsIGVzdGFkb1xuICAgKiBgV09SS0lOR2Agc2UgYXBsaWNhIGN1YW5kbyBgYWN0aW9uLmxvYWRpbmcgPT09IHRydWVgIChzcGlubmVyIG1pZW50cmFzXG4gICAqIGVsIGhhbmRsZXIgY29ycmUpLlxuICAgKi9cbiAgcHJvdGVjdGVkIGN0YVByb3BzID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGE+KCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLnByb3BzKCkuYWN0aW9uO1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiBhY3Rpb24/LmxhYmVsID8/ICcnLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgc3RhdGU6IGFjdGlvbj8ubG9hZGluZyA/IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfSBhcyBCdXR0b25NZXRhZGF0YTtcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,54 @@
1
+ import { interpretError } from '../../../services/errors/interpret-error';
2
+ /**
3
+ * Convierte un error capturado en `EmptyStateMetadata` listo para
4
+ * `<val-empty-state>`. Decide la variante (`offline` vs `error`) según
5
+ * `interpretError(err).isNetwork`.
6
+ *
7
+ * Uso típico en una page:
8
+ *
9
+ * ```ts
10
+ * readonly errorState = computed(() => {
11
+ * const err = this.loadError();
12
+ * if (!err) return null;
13
+ * return createErrorStateProps(err, {
14
+ * title: { offline: this.t('offlineTitle'), error: this.t('errorTitle') },
15
+ * description: { offline: this.t('offlineHint'), error: interpretError(err).message },
16
+ * retryLabel: this.t('retry'),
17
+ * onRetry: () => this.reload(),
18
+ * retrying: this.reloading(),
19
+ * });
20
+ * });
21
+ * ```
22
+ *
23
+ * En el template:
24
+ *
25
+ * ```html
26
+ * @if (errorState(); as e) {
27
+ * <val-empty-state [props]="e" />
28
+ * }
29
+ * ```
30
+ *
31
+ * Para escenarios SIN error (lista vacía), construir `EmptyStateMetadata`
32
+ * manualmente con `variant: 'empty'` — no es lo que este helper resuelve.
33
+ */
34
+ export function createErrorStateProps(err, opts) {
35
+ const interpreted = interpretError(err);
36
+ const variant = interpreted.isNetwork ? 'offline' : 'error';
37
+ const pick = (v) => typeof v === 'object' && v !== null && 'offline' in v
38
+ ? v[variant]
39
+ : v;
40
+ const action = opts.retryLabel && opts.onRetry
41
+ ? {
42
+ label: opts.retryLabel,
43
+ handler: opts.onRetry,
44
+ loading: opts.retrying ?? false,
45
+ }
46
+ : undefined;
47
+ return {
48
+ variant,
49
+ title: pick(opts.title),
50
+ description: opts.description ? pick(opts.description) : undefined,
51
+ action,
52
+ };
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZW1wdHktc3RhdGUvZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUE0QjFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxHQUFZLEVBQ1osSUFBMEI7SUFFMUIsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBRTVELE1BQU0sSUFBSSxHQUFHLENBQUksQ0FBK0IsRUFBSyxFQUFFLENBQ3JELE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLFNBQVMsSUFBSSxDQUFDO1FBQ25ELENBQUMsQ0FBRSxDQUE4QixDQUFDLE9BQU8sQ0FBQztRQUMxQyxDQUFDLENBQUUsQ0FBTyxDQUFDO0lBRWYsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTztRQUM3QixDQUFDLENBQUM7WUFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDdEIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUs7U0FDaEM7UUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRWhCLE9BQU87UUFDTCxPQUFPO1FBQ1AsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ2xFLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVycHJldEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL2ludGVycHJldC1lcnJvcic7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBPcGNpb25lcyBkZWwgaGVscGVyLiBMb3Mgc3RyaW5ncyBzb24gcmVxdWVyaWRvcyBwYXJhIG1hbnRlbmVyIGVsXG4gKiBjb21wb25lbnRlIGkxOG4tYWduw7NzdGljbyDigJQgbGEgcMOhZ2luYSBsb3MgcmVzdWVsdmUgKGNvbiBzdSBuYW1lc3BhY2UpIHkgbG9zXG4gKiBwYXNhIHlhIHRyYWR1Y2lkb3MuIEVsIGhlbHBlciBzb2xvIGRlY2lkZSBsYSBWQVJJQU5URSB5IGNvbXBvbmUgbG9zIHByb3BzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUVycm9yU3RhdGVPcHRzIHtcbiAgLyoqXG4gICAqIFTDrXR1bG8gYSBtb3N0cmFyLiBDb252ZW5jacOzbjogbGEgcMOhZ2luYSBsbyByZXN1ZWx2ZSBwb3IgZXNjZW5hcmlvOlxuICAgKiAgLSByZWQgY2HDrWRhICAgICDihpIgYHQoJ29mZmxpbmVUaXRsZScpYFxuICAgKiAgLSBlcnJvciBiYWNrZW5kIOKGkiBgdCgnZXJyb3JUaXRsZScpYFxuICAgKlxuICAgKiBTaSBwYXPDoXMgdW4gc29sbyBzdHJpbmcsIHNlIHVzYSBlbiBhbWJhcyB2YXJpYW50ZXMuIFNpIHBhc8OhcyBlbCBvYmpldG8sXG4gICAqIGVsIGhlbHBlciBlbGlnZSBzZWfDum4gYGlzTmV0d29ya2AgZGVsIGVycm9yIGludGVycHJldGFkby5cbiAgICovXG4gIHRpdGxlOiBzdHJpbmcgfCB7IG9mZmxpbmU6IHN0cmluZzsgZXJyb3I6IHN0cmluZyB9O1xuICAvKiogRGVzY3JpcGNpw7NuIGEgbW9zdHJhciAodMOtcGljYW1lbnRlIGVsIGBtZXNzYWdlYCBkZWwgYmFja2VuZCBlbiBlc3Bhw7FvbCkuICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgeyBvZmZsaW5lOiBzdHJpbmc7IGVycm9yOiBzdHJpbmcgfTtcbiAgLyoqIExhYmVsIGRlbCBib3TDs24gQ1RBICh0w61waWNhbWVudGUgYHQoJ3JldHJ5JylgKS4gU2kgc2Ugb21pdGUsIG5vIHNlIG11ZXN0cmEgYm90w7NuLiAqL1xuICByZXRyeUxhYmVsPzogc3RyaW5nO1xuICAvKiogSGFuZGxlciBpbnZvY2FkbyBhbCBjbGljayBkZSByZXRyeS4gUmVxdWVyaWRvIHNpIGByZXRyeUxhYmVsYCBlc3TDoS4gKi9cbiAgb25SZXRyeT86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAvKiogYHRydWVgIG1pZW50cmFzIGVsIHJldHJ5IGVzdMOhIGNvcnJpZW5kbyDigJQgZWwgYm90w7NuIHBhc2EgYSBXT1JLSU5HLiAqL1xuICByZXRyeWluZz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmllcnRlIHVuIGVycm9yIGNhcHR1cmFkbyBlbiBgRW1wdHlTdGF0ZU1ldGFkYXRhYCBsaXN0byBwYXJhXG4gKiBgPHZhbC1lbXB0eS1zdGF0ZT5gLiBEZWNpZGUgbGEgdmFyaWFudGUgKGBvZmZsaW5lYCB2cyBgZXJyb3JgKSBzZWfDum5cbiAqIGBpbnRlcnByZXRFcnJvcihlcnIpLmlzTmV0d29ya2AuXG4gKlxuICogVXNvIHTDrXBpY28gZW4gdW5hIHBhZ2U6XG4gKlxuICogYGBgdHNcbiAqIHJlYWRvbmx5IGVycm9yU3RhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gKiAgIGNvbnN0IGVyciA9IHRoaXMubG9hZEVycm9yKCk7XG4gKiAgIGlmICghZXJyKSByZXR1cm4gbnVsbDtcbiAqICAgcmV0dXJuIGNyZWF0ZUVycm9yU3RhdGVQcm9wcyhlcnIsIHtcbiAqICAgICB0aXRsZTogeyBvZmZsaW5lOiB0aGlzLnQoJ29mZmxpbmVUaXRsZScpLCBlcnJvcjogdGhpcy50KCdlcnJvclRpdGxlJykgfSxcbiAqICAgICBkZXNjcmlwdGlvbjogeyBvZmZsaW5lOiB0aGlzLnQoJ29mZmxpbmVIaW50JyksIGVycm9yOiBpbnRlcnByZXRFcnJvcihlcnIpLm1lc3NhZ2UgfSxcbiAqICAgICByZXRyeUxhYmVsOiB0aGlzLnQoJ3JldHJ5JyksXG4gKiAgICAgb25SZXRyeTogKCkgPT4gdGhpcy5yZWxvYWQoKSxcbiAqICAgICByZXRyeWluZzogdGhpcy5yZWxvYWRpbmcoKSxcbiAqICAgfSk7XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEVuIGVsIHRlbXBsYXRlOlxuICpcbiAqIGBgYGh0bWxcbiAqIEBpZiAoZXJyb3JTdGF0ZSgpOyBhcyBlKSB7XG4gKiAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cImVcIiAvPlxuICogfVxuICogYGBgXG4gKlxuICogUGFyYSBlc2NlbmFyaW9zIFNJTiBlcnJvciAobGlzdGEgdmFjw61hKSwgY29uc3RydWlyIGBFbXB0eVN0YXRlTWV0YWRhdGFgXG4gKiBtYW51YWxtZW50ZSBjb24gYHZhcmlhbnQ6ICdlbXB0eSdgIOKAlCBubyBlcyBsbyBxdWUgZXN0ZSBoZWxwZXIgcmVzdWVsdmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFcnJvclN0YXRlUHJvcHMoXG4gIGVycjogdW5rbm93bixcbiAgb3B0czogQ3JlYXRlRXJyb3JTdGF0ZU9wdHMsXG4pOiBFbXB0eVN0YXRlTWV0YWRhdGEge1xuICBjb25zdCBpbnRlcnByZXRlZCA9IGludGVycHJldEVycm9yKGVycik7XG4gIGNvbnN0IHZhcmlhbnQgPSBpbnRlcnByZXRlZC5pc05ldHdvcmsgPyAnb2ZmbGluZScgOiAnZXJyb3InO1xuXG4gIGNvbnN0IHBpY2sgPSA8VD4odjogVCB8IHsgb2ZmbGluZTogVDsgZXJyb3I6IFQgfSk6IFQgPT5cbiAgICB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdiAhPT0gbnVsbCAmJiAnb2ZmbGluZScgaW4gdlxuICAgICAgPyAodiBhcyB7IG9mZmxpbmU6IFQ7IGVycm9yOiBUIH0pW3ZhcmlhbnRdXG4gICAgICA6ICh2IGFzIFQpO1xuXG4gIGNvbnN0IGFjdGlvbiA9XG4gICAgb3B0cy5yZXRyeUxhYmVsICYmIG9wdHMub25SZXRyeVxuICAgICAgPyB7XG4gICAgICAgICAgbGFiZWw6IG9wdHMucmV0cnlMYWJlbCxcbiAgICAgICAgICBoYW5kbGVyOiBvcHRzLm9uUmV0cnksXG4gICAgICAgICAgbG9hZGluZzogb3B0cy5yZXRyeWluZyA/PyBmYWxzZSxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICB2YXJpYW50LFxuICAgIHRpdGxlOiBwaWNrKG9wdHMudGl0bGUpLFxuICAgIGRlc2NyaXB0aW9uOiBvcHRzLmRlc2NyaXB0aW9uID8gcGljayhvcHRzLmRlc2NyaXB0aW9uKSA6IHVuZGVmaW5lZCxcbiAgICBhY3Rpb24sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2VtcHR5LXN0YXRlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZhcmlhbnRlIHNlbcOhbnRpY2EgZGVsIGVtcHR5L2Vycm9yIHN0YXRlLlxuICpcbiAqIC0gYGVtcHR5YCAgICDigJQgbGEgZnVlbnRlIGRldm9sdmnDsyBjZXJvIHJlc3VsdGFkb3MgKGxpc3RhIHZhY8OtYSwgc2luIG5vdGlmcykuXG4gKiAgICAgICAgICAgICAgICBJY29ubyBuZXV0cm8sIHNpbiBhbGFybWEuXG4gKiAtIGBlcnJvcmAgICAg4oCUIGxhIGZ1ZW50ZSBmYWxsw7MgcG9yIHVuIGVycm9yIGRlIGxhIGFwcC9zZXJ2aWRvciAoNTAwLCBwYXJzZSkuXG4gKiAgICAgICAgICAgICAgICBJY29ubyBkZSBhbGVydGEuXG4gKiAtIGBvZmZsaW5lYCAg4oCUIGxhIGZ1ZW50ZSBmYWxsw7MgcG9yIHJlZCBjYcOtZGEgLyBGaXJlc3RvcmUgdW5yZWFjaGFibGUuXG4gKiAgICAgICAgICAgICAgICBJY29ubyBjbG91ZC1vZmZsaW5lLlxuICpcbiAqIENhZGEgdmFyaWFudGUgbWFwZWEgYSB1biBpY29ubyBkZWZhdWx0IHNpIGBpY29uYCBubyBzZSBlc3BlY2lmaWNhLlxuICovXG5leHBvcnQgdHlwZSBFbXB0eVN0YXRlVmFyaWFudCA9ICdlbXB0eScgfCAnZXJyb3InIHwgJ29mZmxpbmUnO1xuXG4vKipcbiAqIEFjY2nDs24gQ1RBIG9wY2lvbmFsIGRlbCBzdGF0ZSAodMOtcGljYW1lbnRlIFwiUmVpbnRlbnRhclwiIC8gXCJSZWNhcmdhclwiKS5cbiAqXG4gKiBTaSBzZSBvbWl0ZSwgZWwgY29tcG9uZW50ZSBubyByZW5kZXJpemEgYm90w7NuLiBFbCBgaGFuZGxlcmAgeWEgdmllbmVcbiAqIHRyYWR1Y2lkbyDigJQgZWwgY29tcG9uZW50ZSBOTyByZXN1ZWx2ZSBpMThuIGludGVybmFtZW50ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXB0eVN0YXRlQWN0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgaGFuZGxlcjogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIC8qKiBTaSBgdHJ1ZWAsIGVsIGJvdMOzbiBwYXNhIGEgZXN0YWRvIFdPUktJTkcgKHNwaW5uZXIpLiDDmnRpbCBtaWVudHJhcyByZS1mZXRjaGEuICovXG4gIGxvYWRpbmc/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIHBhcmEgYDx2YWwtZW1wdHktc3RhdGU+YCDigJQgbW9sZWN1bGUgcXVlIHJlbmRlcml6YSB1biBlc3RhZG9cbiAqIGRlY2xhcmF0aXZvIGRlIFwibm8gaGF5IGRhdG9zIC8gaHVibyBlcnJvciAvIHNpbiByZWRcIiBjb24gdMOtdHVsbywgZGVzY3JpcGNpw7NuXG4gKiBvcGNpb25hbCB5IENUQSBvcGNpb25hbC4gUmVlbXBsYXphIGVsIHBhdHLDs24gYWQtaG9jIChpb24taWNvbiArIHZhbC10aXRsZSArXG4gKiB2YWwtdGV4dCArIHZhbC1idXR0b24pIHF1ZSBjYWRhIHDDoWdpbmEgdmVuw61hIGltcHJvdmlzYW5kby5cbiAqXG4gKiBJMThuOiBsb3Mgc3RyaW5ncyAoYHRpdGxlYCwgYGRlc2NyaXB0aW9uYCwgYGFjdGlvbi5sYWJlbGApIGxvcyByZXN1ZWx2ZSBsYVxuICogcMOhZ2luYSBhbnRlcyBkZSBjb25zdHJ1aXIgbGFzIHByb3BzLiBFc3RvIG1hbnRpZW5lIGVsIGNvbXBvbmVudGUgYWduw7NzdGljb1xuICogYSBuYW1lc3BhY2VzIHkgY29uc2lzdGVudGUgY29uIGVsIHJlc3RvIGRlIGxhIGxpYiAoRm9ybU1ldGFkYXRhLCBldGMuKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXB0eVN0YXRlTWV0YWRhdGEge1xuICAvKiogVMOtdHVsbyBwcmluY2lwYWwuIFJlcXVlcmlkby4gKi9cbiAgdGl0bGU6IHN0cmluZztcbiAgLyoqIERlc2NyaXBjacOzbiBvcGNpb25hbCAoMS0yIGzDrW5lYXMpIGRlYmFqbyBkZWwgdMOtdHVsby4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBWYXJpYW50ZSBzZW3DoW50aWNhLiBEZWZhdWx0IGAnZW1wdHknYC4gKi9cbiAgdmFyaWFudD86IEVtcHR5U3RhdGVWYXJpYW50O1xuICAvKipcbiAgICogTm9tYnJlIGRlbCBpY29ubyBJb25pY29ucyAoa2ViYWItY2FzZSkuIFNpIHNlIG9taXRlLCBlbCBjb21wb25lbnRlIHVzYVxuICAgKiBlbCBkZWZhdWx0IGRlIGxhIHZhcmlhbnRlOlxuICAgKiAgLSBlbXB0eSAgIOKGkiBgZG9jdW1lbnQtb3V0bGluZWBcbiAgICogIC0gZXJyb3IgICDihpIgYGFsZXJ0LWNpcmNsZS1vdXRsaW5lYFxuICAgKiAgLSBvZmZsaW5lIOKGkiBgY2xvdWQtb2ZmbGluZS1vdXRsaW5lYFxuICAgKlxuICAgKiBTaSBwYXPDoXMgdW4gaWNvbm8gY3VzdG9tLCBpbXBvcnRhbG8gKyByZWdpc3RyYWxvIGNvbiBgYWRkSWNvbnMoeyAuLi4gfSlgXG4gICAqIGVuIGVsIGNvbXBvbmVudGUgY29uc3VtaWRvciAoSW9uaWMgc3RhbmRhbG9uZSBubyBhdXRvLXJlZ2lzdHJhKS5cbiAgICovXG4gIGljb24/OiBzdHJpbmc7XG4gIC8qKiBUYW1hw7FvIGRlbCBpY29ubyBlbiBww614ZWxlcy4gRGVmYXVsdCBgNjRgLiAqL1xuICBpY29uU2l6ZT86IG51bWJlcjtcbiAgLyoqIEFjY2nDs24gQ1RBIG9wY2lvbmFsLiBTaSBzZSBvbWl0ZSwgbm8gc2UgbXVlc3RyYSBib3TDs24uICovXG4gIGFjdGlvbj86IEVtcHR5U3RhdGVBY3Rpb247XG59XG4iXX0=