valtech-components 2.0.302 → 2.0.305

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.
Files changed (32) hide show
  1. package/esm2022/lib/components/atoms/button/button.component.mjs +103 -23
  2. package/esm2022/lib/components/types.mjs +1 -1
  3. package/esm2022/lib/services/lang-provider/content.mjs +1 -72
  4. package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +4 -9
  5. package/esm2022/lib/shared/utils/content.mjs +2 -8
  6. package/esm2022/public-api.mjs +1 -12
  7. package/fesm2022/valtech-components.mjs +124 -2824
  8. package/fesm2022/valtech-components.mjs.map +1 -1
  9. package/lib/components/atoms/button/button.component.d.ts +33 -2
  10. package/lib/components/types.d.ts +19 -7
  11. package/package.json +1 -1
  12. package/public-api.d.ts +0 -10
  13. package/esm2022/lib/examples/comprehensive-link-test.component.mjs +0 -208
  14. package/esm2022/lib/examples/custom-content-demo.component.mjs +0 -291
  15. package/esm2022/lib/examples/display-demo.component.mjs +0 -518
  16. package/esm2022/lib/examples/display-simple-example.component.mjs +0 -202
  17. package/esm2022/lib/examples/link-processing-example.component.mjs +0 -233
  18. package/esm2022/lib/examples/multi-language-demo.component.mjs +0 -304
  19. package/esm2022/lib/examples/reactive-components-demo.component.mjs +0 -303
  20. package/esm2022/lib/examples/reactivity-test.component.mjs +0 -200
  21. package/esm2022/lib/examples/selector-examples.component.mjs +0 -234
  22. package/esm2022/lib/examples/user-issue-test.component.mjs +0 -267
  23. package/lib/examples/comprehensive-link-test.component.d.ts +0 -23
  24. package/lib/examples/custom-content-demo.component.d.ts +0 -26
  25. package/lib/examples/display-demo.component.d.ts +0 -62
  26. package/lib/examples/display-simple-example.component.d.ts +0 -23
  27. package/lib/examples/link-processing-example.component.d.ts +0 -26
  28. package/lib/examples/multi-language-demo.component.d.ts +0 -34
  29. package/lib/examples/reactive-components-demo.component.d.ts +0 -45
  30. package/lib/examples/reactivity-test.component.d.ts +0 -27
  31. package/lib/examples/selector-examples.component.d.ts +0 -21
  32. package/lib/examples/user-issue-test.component.d.ts +0 -31
@@ -1,202 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { DisplayComponent } from '../components/atoms/display/display.component';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Ejemplo rápido de uso del componente val-display con contenido reactivo
6
- */
7
- export class DisplayExampleComponent {
8
- constructor() {
9
- // ✅ Ejemplos de contenido estático
10
- this.staticTitle = {
11
- content: 'Este es un título estático',
12
- color: 'primary',
13
- size: 'xlarge',
14
- };
15
- this.staticSubtitle = {
16
- content: 'Este es un subtítulo que no cambia',
17
- color: 'medium',
18
- size: 'large',
19
- };
20
- // ✅ Ejemplos de contenido reactivo (requiere configuración de i18n)
21
- this.reactiveWelcome = {
22
- contentConfig: {
23
- className: 'displayExample',
24
- key: 'welcome.title',
25
- fallback: 'Bienvenido a la aplicación',
26
- },
27
- color: 'primary',
28
- size: 'xlarge',
29
- };
30
- this.reactiveDescription = {
31
- contentConfig: {
32
- className: 'displayExample',
33
- key: 'welcome.description',
34
- fallback: 'Esta descripción cambia según el idioma',
35
- },
36
- color: 'dark',
37
- size: 'medium',
38
- };
39
- // ✅ Ejemplos con interpolación de variables
40
- this.userGreeting = {
41
- contentConfig: {
42
- className: 'displayExample',
43
- key: 'user.greeting',
44
- fallback: 'Hola, {{name}}! Tienes {{messages}} mensajes.',
45
- interpolation: {
46
- name: 'María',
47
- messages: 5,
48
- },
49
- },
50
- color: 'tertiary',
51
- size: 'large',
52
- };
53
- this.statusMessage = {
54
- contentConfig: {
55
- className: 'displayExample',
56
- key: 'status.online',
57
- fallback: 'Estado: {{status}} desde {{time}}',
58
- interpolation: {
59
- status: 'En línea',
60
- time: '10:30 AM',
61
- },
62
- },
63
- color: 'success',
64
- size: 'small',
65
- };
66
- // ✅ Ejemplos de diferentes tamaños
67
- this.smallText = {
68
- content: 'Texto pequeño (small)',
69
- color: 'dark',
70
- size: 'small',
71
- };
72
- this.mediumText = {
73
- content: 'Texto mediano (medium)',
74
- color: 'dark',
75
- size: 'medium',
76
- };
77
- this.largeText = {
78
- content: 'Texto grande (large)',
79
- color: 'dark',
80
- size: 'large',
81
- };
82
- this.xlargeText = {
83
- content: 'Texto extra grande (xlarge)',
84
- color: 'dark',
85
- size: 'xlarge',
86
- };
87
- // ✅ Ejemplos de diferentes colores
88
- this.primaryText = {
89
- content: 'Texto color primary',
90
- color: 'primary',
91
- size: 'medium',
92
- };
93
- this.successText = {
94
- content: 'Texto color success',
95
- color: 'success',
96
- size: 'medium',
97
- };
98
- this.warningText = {
99
- content: 'Texto color warning',
100
- color: 'warning',
101
- size: 'medium',
102
- };
103
- this.dangerText = {
104
- content: 'Texto color danger',
105
- color: 'danger',
106
- size: 'medium',
107
- };
108
- }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DisplayExampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DisplayExampleComponent, isStandalone: true, selector: "app-display-example", ngImport: i0, template: `
111
- <div class="display-examples">
112
- <h2>Ejemplos de val-display</h2>
113
-
114
- <!-- Contenido estático -->
115
- <div class="section">
116
- <h3>Contenido Estático</h3>
117
- <val-display [props]="staticTitle"></val-display>
118
- <val-display [props]="staticSubtitle"></val-display>
119
- </div>
120
-
121
- <!-- Contenido reactivo -->
122
- <div class="section">
123
- <h3>Contenido Reactivo</h3>
124
- <val-display [props]="reactiveWelcome"></val-display>
125
- <val-display [props]="reactiveDescription"></val-display>
126
- </div>
127
-
128
- <!-- Contenido con interpolación -->
129
- <div class="section">
130
- <h3>Contenido con Variables</h3>
131
- <val-display [props]="userGreeting"></val-display>
132
- <val-display [props]="statusMessage"></val-display>
133
- </div>
134
-
135
- <!-- Diferentes tamaños -->
136
- <div class="section">
137
- <h3>Diferentes Tamaños</h3>
138
- <val-display [props]="smallText"></val-display>
139
- <val-display [props]="mediumText"></val-display>
140
- <val-display [props]="largeText"></val-display>
141
- <val-display [props]="xlargeText"></val-display>
142
- </div>
143
-
144
- <!-- Diferentes colores -->
145
- <div class="section">
146
- <h3>Diferentes Colores</h3>
147
- <val-display [props]="primaryText"></val-display>
148
- <val-display [props]="successText"></val-display>
149
- <val-display [props]="warningText"></val-display>
150
- <val-display [props]="dangerText"></val-display>
151
- </div>
152
- </div>
153
- `, isInline: true, styles: [".display-examples{padding:20px;max-width:800px;margin:0 auto}.section{margin:30px 0;padding:20px;border:1px solid var(--ion-color-light);border-radius:8px;background:var(--ion-color-step-50)}.section h3{margin:0 0 15px;color:var(--ion-color-primary)}val-display{display:block;margin:10px 0}\n"], dependencies: [{ kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }] }); }
154
- }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DisplayExampleComponent, decorators: [{
156
- type: Component,
157
- args: [{ selector: 'app-display-example', standalone: true, imports: [DisplayComponent], template: `
158
- <div class="display-examples">
159
- <h2>Ejemplos de val-display</h2>
160
-
161
- <!-- Contenido estático -->
162
- <div class="section">
163
- <h3>Contenido Estático</h3>
164
- <val-display [props]="staticTitle"></val-display>
165
- <val-display [props]="staticSubtitle"></val-display>
166
- </div>
167
-
168
- <!-- Contenido reactivo -->
169
- <div class="section">
170
- <h3>Contenido Reactivo</h3>
171
- <val-display [props]="reactiveWelcome"></val-display>
172
- <val-display [props]="reactiveDescription"></val-display>
173
- </div>
174
-
175
- <!-- Contenido con interpolación -->
176
- <div class="section">
177
- <h3>Contenido con Variables</h3>
178
- <val-display [props]="userGreeting"></val-display>
179
- <val-display [props]="statusMessage"></val-display>
180
- </div>
181
-
182
- <!-- Diferentes tamaños -->
183
- <div class="section">
184
- <h3>Diferentes Tamaños</h3>
185
- <val-display [props]="smallText"></val-display>
186
- <val-display [props]="mediumText"></val-display>
187
- <val-display [props]="largeText"></val-display>
188
- <val-display [props]="xlargeText"></val-display>
189
- </div>
190
-
191
- <!-- Diferentes colores -->
192
- <div class="section">
193
- <h3>Diferentes Colores</h3>
194
- <val-display [props]="primaryText"></val-display>
195
- <val-display [props]="successText"></val-display>
196
- <val-display [props]="warningText"></val-display>
197
- <val-display [props]="dangerText"></val-display>
198
- </div>
199
- </div>
200
- `, styles: [".display-examples{padding:20px;max-width:800px;margin:0 auto}.section{margin:30px 0;padding:20px;border:1px solid var(--ion-color-light);border-radius:8px;background:var(--ion-color-step-50)}.section h3{margin:0 0 15px;color:var(--ion-color-primary)}val-display{display:block;margin:10px 0}\n"] }]
201
- }] });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1zaW1wbGUtZXhhbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9leGFtcGxlcy9kaXNwbGF5LXNpbXBsZS1leGFtcGxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOztBQUdqRjs7R0FFRztBQTZFSCxNQUFNLE9BQU8sdUJBQXVCO0lBNUVwQztRQTZFRSxtQ0FBbUM7UUFDbkMsZ0JBQVcsR0FBb0I7WUFDN0IsT0FBTyxFQUFFLDRCQUE0QjtZQUNyQyxLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUUsUUFBUTtTQUNmLENBQUM7UUFFRixtQkFBYyxHQUFvQjtZQUNoQyxPQUFPLEVBQUUsb0NBQW9DO1lBQzdDLEtBQUssRUFBRSxRQUFRO1lBQ2YsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDO1FBRUYsb0VBQW9FO1FBQ3BFLG9CQUFlLEdBQW9CO1lBQ2pDLGFBQWEsRUFBRTtnQkFDYixTQUFTLEVBQUUsZ0JBQWdCO2dCQUMzQixHQUFHLEVBQUUsZUFBZTtnQkFDcEIsUUFBUSxFQUFFLDRCQUE0QjthQUN2QztZQUNELEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQztRQUVGLHdCQUFtQixHQUFvQjtZQUNyQyxhQUFhLEVBQUU7Z0JBQ2IsU0FBUyxFQUFFLGdCQUFnQjtnQkFDM0IsR0FBRyxFQUFFLHFCQUFxQjtnQkFDMUIsUUFBUSxFQUFFLHlDQUF5QzthQUNwRDtZQUNELEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDO1FBRUYsNENBQTRDO1FBQzVDLGlCQUFZLEdBQW9CO1lBQzlCLGFBQWEsRUFBRTtnQkFDYixTQUFTLEVBQUUsZ0JBQWdCO2dCQUMzQixHQUFHLEVBQUUsZUFBZTtnQkFDcEIsUUFBUSxFQUFFLCtDQUErQztnQkFDekQsYUFBYSxFQUFFO29CQUNiLElBQUksRUFBRSxPQUFPO29CQUNiLFFBQVEsRUFBRSxDQUFDO2lCQUNaO2FBQ0Y7WUFDRCxLQUFLLEVBQUUsVUFBVTtZQUNqQixJQUFJLEVBQUUsT0FBTztTQUNkLENBQUM7UUFFRixrQkFBYSxHQUFvQjtZQUMvQixhQUFhLEVBQUU7Z0JBQ2IsU0FBUyxFQUFFLGdCQUFnQjtnQkFDM0IsR0FBRyxFQUFFLGVBQWU7Z0JBQ3BCLFFBQVEsRUFBRSxtQ0FBbUM7Z0JBQzdDLGFBQWEsRUFBRTtvQkFDYixNQUFNLEVBQUUsVUFBVTtvQkFDbEIsSUFBSSxFQUFFLFVBQVU7aUJBQ2pCO2FBQ0Y7WUFDRCxLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUUsT0FBTztTQUNkLENBQUM7UUFFRixtQ0FBbUM7UUFDbkMsY0FBUyxHQUFvQjtZQUMzQixPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDO1FBRUYsZUFBVSxHQUFvQjtZQUM1QixPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDO1FBRUYsY0FBUyxHQUFvQjtZQUMzQixPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDO1FBRUYsZUFBVSxHQUFvQjtZQUM1QixPQUFPLEVBQUUsNkJBQTZCO1lBQ3RDLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDO1FBRUYsbUNBQW1DO1FBQ25DLGdCQUFXLEdBQW9CO1lBQzdCLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDO1FBRUYsZ0JBQVcsR0FBb0I7WUFDN0IsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUUsUUFBUTtTQUNmLENBQUM7UUFFRixnQkFBVyxHQUFvQjtZQUM3QixPQUFPLEVBQUUscUJBQXFCO1lBQzlCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQztRQUVGLGVBQVUsR0FBb0I7WUFDNUIsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixLQUFLLEVBQUUsUUFBUTtZQUNmLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQztLQUNIOytHQWpIWSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwrRUF4RXhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkNULDhXQTVDUyxnQkFBZ0I7OzRGQXlFZix1QkFBdUI7a0JBNUVuQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUNqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJDVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5TWV0YWRhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL2Rpc3BsYXkvdHlwZXMnO1xuXG4vKipcbiAqIEVqZW1wbG8gcsOhcGlkbyBkZSB1c28gZGVsIGNvbXBvbmVudGUgdmFsLWRpc3BsYXkgY29uIGNvbnRlbmlkbyByZWFjdGl2b1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGlzcGxheS1leGFtcGxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Rpc3BsYXlDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LWV4YW1wbGVzXCI+XG4gICAgICA8aDI+RWplbXBsb3MgZGUgdmFsLWRpc3BsYXk8L2gyPlxuXG4gICAgICA8IS0tIENvbnRlbmlkbyBlc3TDoXRpY28gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICA8aDM+Q29udGVuaWRvIEVzdMOhdGljbzwvaDM+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwic3RhdGljVGl0bGVcIj48L3ZhbC1kaXNwbGF5PlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInN0YXRpY1N1YnRpdGxlXCI+PC92YWwtZGlzcGxheT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENvbnRlbmlkbyByZWFjdGl2byAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgIDxoMz5Db250ZW5pZG8gUmVhY3Rpdm88L2gzPlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInJlYWN0aXZlV2VsY29tZVwiPjwvdmFsLWRpc3BsYXk+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwicmVhY3RpdmVEZXNjcmlwdGlvblwiPjwvdmFsLWRpc3BsYXk+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDb250ZW5pZG8gY29uIGludGVycG9sYWNpw7NuIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgPGgzPkNvbnRlbmlkbyBjb24gVmFyaWFibGVzPC9oMz5cbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ1c2VyR3JlZXRpbmdcIj48L3ZhbC1kaXNwbGF5PlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInN0YXR1c01lc3NhZ2VcIj48L3ZhbC1kaXNwbGF5PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gRGlmZXJlbnRlcyB0YW1hw7FvcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgIDxoMz5EaWZlcmVudGVzIFRhbWHDsW9zPC9oMz5cbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJzbWFsbFRleHRcIj48L3ZhbC1kaXNwbGF5PlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cIm1lZGl1bVRleHRcIj48L3ZhbC1kaXNwbGF5PlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cImxhcmdlVGV4dFwiPjwvdmFsLWRpc3BsYXk+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieGxhcmdlVGV4dFwiPjwvdmFsLWRpc3BsYXk+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEaWZlcmVudGVzIGNvbG9yZXMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICA8aDM+RGlmZXJlbnRlcyBDb2xvcmVzPC9oMz5cbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJwcmltYXJ5VGV4dFwiPjwvdmFsLWRpc3BsYXk+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwic3VjY2Vzc1RleHRcIj48L3ZhbC1kaXNwbGF5PlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cIndhcm5pbmdUZXh0XCI+PC92YWwtZGlzcGxheT5cbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJkYW5nZXJUZXh0XCI+PC92YWwtZGlzcGxheT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuZGlzcGxheS1leGFtcGxlcyB7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAuc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbjogMzBweCAwO1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTUwKTtcbiAgICAgIH1cblxuICAgICAgLnNlY3Rpb24gaDMge1xuICAgICAgICBtYXJnaW46IDAgMCAxNXB4IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERpc3BsYXlFeGFtcGxlQ29tcG9uZW50IHtcbiAgLy8g4pyFIEVqZW1wbG9zIGRlIGNvbnRlbmlkbyBlc3TDoXRpY29cbiAgc3RhdGljVGl0bGU6IERpc3BsYXlNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiAnRXN0ZSBlcyB1biB0w610dWxvIGVzdMOhdGljbycsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBzaXplOiAneGxhcmdlJyxcbiAgfTtcblxuICBzdGF0aWNTdWJ0aXRsZTogRGlzcGxheU1ldGFkYXRhID0ge1xuICAgIGNvbnRlbnQ6ICdFc3RlIGVzIHVuIHN1YnTDrXR1bG8gcXVlIG5vIGNhbWJpYScsXG4gICAgY29sb3I6ICdtZWRpdW0nLFxuICAgIHNpemU6ICdsYXJnZScsXG4gIH07XG5cbiAgLy8g4pyFIEVqZW1wbG9zIGRlIGNvbnRlbmlkbyByZWFjdGl2byAocmVxdWllcmUgY29uZmlndXJhY2nDs24gZGUgaTE4bilcbiAgcmVhY3RpdmVXZWxjb21lOiBEaXNwbGF5TWV0YWRhdGEgPSB7XG4gICAgY29udGVudENvbmZpZzoge1xuICAgICAgY2xhc3NOYW1lOiAnZGlzcGxheUV4YW1wbGUnLFxuICAgICAga2V5OiAnd2VsY29tZS50aXRsZScsXG4gICAgICBmYWxsYmFjazogJ0JpZW52ZW5pZG8gYSBsYSBhcGxpY2FjacOzbicsXG4gICAgfSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIHNpemU6ICd4bGFyZ2UnLFxuICB9O1xuXG4gIHJlYWN0aXZlRGVzY3JpcHRpb246IERpc3BsYXlNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50Q29uZmlnOiB7XG4gICAgICBjbGFzc05hbWU6ICdkaXNwbGF5RXhhbXBsZScsXG4gICAgICBrZXk6ICd3ZWxjb21lLmRlc2NyaXB0aW9uJyxcbiAgICAgIGZhbGxiYWNrOiAnRXN0YSBkZXNjcmlwY2nDs24gY2FtYmlhIHNlZ8O6biBlbCBpZGlvbWEnLFxuICAgIH0sXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBzaXplOiAnbWVkaXVtJyxcbiAgfTtcblxuICAvLyDinIUgRWplbXBsb3MgY29uIGludGVycG9sYWNpw7NuIGRlIHZhcmlhYmxlc1xuICB1c2VyR3JlZXRpbmc6IERpc3BsYXlNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50Q29uZmlnOiB7XG4gICAgICBjbGFzc05hbWU6ICdkaXNwbGF5RXhhbXBsZScsXG4gICAgICBrZXk6ICd1c2VyLmdyZWV0aW5nJyxcbiAgICAgIGZhbGxiYWNrOiAnSG9sYSwge3tuYW1lfX0hIFRpZW5lcyB7e21lc3NhZ2VzfX0gbWVuc2FqZXMuJyxcbiAgICAgIGludGVycG9sYXRpb246IHtcbiAgICAgICAgbmFtZTogJ01hcsOtYScsXG4gICAgICAgIG1lc3NhZ2VzOiA1LFxuICAgICAgfSxcbiAgICB9LFxuICAgIGNvbG9yOiAndGVydGlhcnknLFxuICAgIHNpemU6ICdsYXJnZScsXG4gIH07XG5cbiAgc3RhdHVzTWVzc2FnZTogRGlzcGxheU1ldGFkYXRhID0ge1xuICAgIGNvbnRlbnRDb25maWc6IHtcbiAgICAgIGNsYXNzTmFtZTogJ2Rpc3BsYXlFeGFtcGxlJyxcbiAgICAgIGtleTogJ3N0YXR1cy5vbmxpbmUnLFxuICAgICAgZmFsbGJhY2s6ICdFc3RhZG86IHt7c3RhdHVzfX0gZGVzZGUge3t0aW1lfX0nLFxuICAgICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgICBzdGF0dXM6ICdFbiBsw61uZWEnLFxuICAgICAgICB0aW1lOiAnMTA6MzAgQU0nLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgfTtcblxuICAvLyDinIUgRWplbXBsb3MgZGUgZGlmZXJlbnRlcyB0YW1hw7Fvc1xuICBzbWFsbFRleHQ6IERpc3BsYXlNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiAnVGV4dG8gcGVxdWXDsW8gKHNtYWxsKScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBzaXplOiAnc21hbGwnLFxuICB9O1xuXG4gIG1lZGl1bVRleHQ6IERpc3BsYXlNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiAnVGV4dG8gbWVkaWFubyAobWVkaXVtKScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBzaXplOiAnbWVkaXVtJyxcbiAgfTtcblxuICBsYXJnZVRleHQ6IERpc3BsYXlNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiAnVGV4dG8gZ3JhbmRlIChsYXJnZSknLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgc2l6ZTogJ2xhcmdlJyxcbiAgfTtcblxuICB4bGFyZ2VUZXh0OiBEaXNwbGF5TWV0YWRhdGEgPSB7XG4gICAgY29udGVudDogJ1RleHRvIGV4dHJhIGdyYW5kZSAoeGxhcmdlKScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBzaXplOiAneGxhcmdlJyxcbiAgfTtcblxuICAvLyDinIUgRWplbXBsb3MgZGUgZGlmZXJlbnRlcyBjb2xvcmVzXG4gIHByaW1hcnlUZXh0OiBEaXNwbGF5TWV0YWRhdGEgPSB7XG4gICAgY29udGVudDogJ1RleHRvIGNvbG9yIHByaW1hcnknLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc2l6ZTogJ21lZGl1bScsXG4gIH07XG5cbiAgc3VjY2Vzc1RleHQ6IERpc3BsYXlNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiAnVGV4dG8gY29sb3Igc3VjY2VzcycsXG4gICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICBzaXplOiAnbWVkaXVtJyxcbiAgfTtcblxuICB3YXJuaW5nVGV4dDogRGlzcGxheU1ldGFkYXRhID0ge1xuICAgIGNvbnRlbnQ6ICdUZXh0byBjb2xvciB3YXJuaW5nJyxcbiAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgIHNpemU6ICdtZWRpdW0nLFxuICB9O1xuXG4gIGRhbmdlclRleHQ6IERpc3BsYXlNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiAnVGV4dG8gY29sb3IgZGFuZ2VyJyxcbiAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgc2l6ZTogJ21lZGl1bScsXG4gIH07XG59XG4iXX0=
@@ -1,233 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { TextComponent } from '../components/atoms/text/text.component';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * LinkProcessingExampleComponent - Componente de ejemplo que demuestra el procesamiento automático de enlaces.
6
- *
7
- * Este componente muestra diferentes casos de uso para el procesamiento automático de enlaces
8
- * en el componente val-text, incluyendo enlaces externos, rutas internas y configuraciones personalizadas.
9
- *
10
- * @example Uso en template:
11
- * ```html
12
- * <val-link-processing-example></val-link-processing-example>
13
- * ```
14
- */
15
- export class LinkProcessingExampleComponent {
16
- constructor() {
17
- this.basicTextProps = {
18
- content: 'Este texto contiene https://angular.io y /dashboard pero no se procesan como enlaces.',
19
- size: 'medium',
20
- color: 'dark',
21
- bold: false,
22
- processLinks: false,
23
- };
24
- this.basicLinksProps = {
25
- content: 'Visita https://angular.io para documentación o ve a /dashboard para el panel principal.',
26
- size: 'medium',
27
- color: 'dark',
28
- bold: false,
29
- processLinks: true,
30
- };
31
- this.customLinksProps = {
32
- content: 'Enlaces personalizados: https://github.com/angular/angular y /profile/settings',
33
- size: 'medium',
34
- color: 'dark',
35
- bold: false,
36
- processLinks: true,
37
- linkConfig: {
38
- openExternalInNewTab: true,
39
- openInternalInNewTab: false,
40
- linkClass: 'custom-link-style',
41
- externalLinkClass: 'external-custom',
42
- internalLinkClass: 'internal-custom',
43
- },
44
- };
45
- this.mixedLinksProps = {
46
- content: 'Consulta la documentación en https://ionicframework.com/docs, revisa el código en https://github.com/ionic-team/ionic-framework, o navega a /components/buttons para ejemplos internos.',
47
- size: 'medium',
48
- color: 'dark',
49
- bold: false,
50
- processLinks: true,
51
- linkConfig: {
52
- openExternalInNewTab: true,
53
- openInternalInNewTab: false,
54
- linkClass: 'processed-link',
55
- externalLinkClass: 'external-link',
56
- internalLinkClass: 'internal-link',
57
- },
58
- };
59
- this.sameTabLinksProps = {
60
- content: 'Estos enlaces no abren en nueva pestaña: https://example.com y /home',
61
- size: 'medium',
62
- color: 'dark',
63
- bold: false,
64
- processLinks: true,
65
- linkConfig: {
66
- openExternalInNewTab: false,
67
- openInternalInNewTab: false,
68
- linkClass: 'same-tab-link',
69
- externalLinkClass: 'external-same-tab',
70
- internalLinkClass: 'internal-same-tab',
71
- },
72
- };
73
- this.markdownLinksProps = {
74
- content: 'Consulta [la documentación de Angular](https://angular.io/docs) y ve a [configuración del perfil](/profile/settings) para más opciones.',
75
- size: 'medium',
76
- color: 'dark',
77
- bold: false,
78
- processLinks: true,
79
- linkConfig: {
80
- openExternalInNewTab: true,
81
- openInternalInNewTab: false,
82
- processMarkdownLinks: true,
83
- linkClass: 'markdown-link',
84
- externalLinkClass: 'markdown-external',
85
- internalLinkClass: 'markdown-internal',
86
- },
87
- };
88
- this.mixedFormatsProps = {
89
- content: 'Aquí hay [documentación oficial](https://angular.io/docs), un enlace directo https://github.com/angular/angular, y una ruta interna /dashboard/analytics. ¡Todos funcionan!',
90
- size: 'medium',
91
- color: 'dark',
92
- bold: false,
93
- processLinks: true,
94
- linkConfig: {
95
- openExternalInNewTab: true,
96
- openInternalInNewTab: false,
97
- processMarkdownLinks: true,
98
- linkClass: 'mixed-link',
99
- externalLinkClass: 'mixed-external',
100
- internalLinkClass: 'mixed-internal',
101
- },
102
- };
103
- this.punctuationTestProps = {
104
- content: 'URLs con puntuación final: https://ionicframework.com/docs, también https://angular.io! Pregunta sobre https://github.com/angular? Y punto final: https://typescript.org. Paréntesis (https://rxjs.dev) y comillas "https://zone.js". ¡Todos funcionan!',
105
- size: 'medium',
106
- color: 'dark',
107
- bold: false,
108
- processLinks: true,
109
- linkConfig: {
110
- openExternalInNewTab: true,
111
- linkClass: 'punctuation-test',
112
- externalLinkClass: 'external-punct',
113
- },
114
- };
115
- this.complexUrlsProps = {
116
- content: 'URLs complejas: https://example.com/path?param=value&other=123#section, búsqueda en https://google.com/search?q=angular+components, y API https://api.github.com/repos/owner/repo/issues?state=open. Todos con parámetros y fragmentos.',
117
- size: 'medium',
118
- color: 'dark',
119
- bold: false,
120
- processLinks: true,
121
- linkConfig: {
122
- openExternalInNewTab: true,
123
- linkClass: 'complex-url',
124
- externalLinkClass: 'complex-external',
125
- },
126
- };
127
- }
128
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessingExampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
129
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LinkProcessingExampleComponent, isStandalone: true, selector: "val-link-processing-example", ngImport: i0, template: `
130
- <div class="link-examples">
131
- <h2>Ejemplos de Procesamiento de Enlaces</h2>
132
-
133
- <div class="example-section">
134
- <h3>Texto sin procesamiento de enlaces:</h3>
135
- <val-text [props]="basicTextProps"></val-text>
136
- </div>
137
-
138
- <div class="example-section">
139
- <h3>Texto con procesamiento básico de enlaces:</h3>
140
- <val-text [props]="basicLinksProps"></val-text>
141
- </div>
142
-
143
- <div class="example-section">
144
- <h3>Enlaces con configuración personalizada:</h3>
145
- <val-text [props]="customLinksProps"></val-text>
146
- </div>
147
-
148
- <div class="example-section">
149
- <h3>Enlaces internos y externos mezclados:</h3>
150
- <val-text [props]="mixedLinksProps"></val-text>
151
- </div>
152
-
153
- <div class="example-section">
154
- <h3>Enlaces sin abrir en nueva pestaña:</h3>
155
- <val-text [props]="sameTabLinksProps"></val-text>
156
- </div>
157
-
158
- <div class="example-section">
159
- <h3>Enlaces estilo Markdown [texto](url):</h3>
160
- <val-text [props]="markdownLinksProps"></val-text>
161
- </div>
162
-
163
- <div class="example-section">
164
- <h3>Mezcla de enlaces directos y Markdown:</h3>
165
- <val-text [props]="mixedFormatsProps"></val-text>
166
- </div>
167
-
168
- <div class="example-section">
169
- <h3>Corrección de puntuación en URLs:</h3>
170
- <val-text [props]="punctuationTestProps"></val-text>
171
- </div>
172
-
173
- <div class="example-section">
174
- <h3>URLs complejas con parámetros y fragmentos:</h3>
175
- <val-text [props]="complexUrlsProps"></val-text>
176
- </div>
177
- </div>
178
- `, isInline: true, styles: [".example-section{margin-bottom:24px;padding:16px;border:1px solid var(--ion-color-light, #f4f5f8);border-radius:8px;background:var(--ion-color-light-tint, #f5f6f9)}h2{color:var(--ion-color-primary, #3880ff);margin-bottom:20px}h3{color:var(--ion-color-dark, #222428);margin-bottom:10px;font-size:16px}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
179
- }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessingExampleComponent, decorators: [{
181
- type: Component,
182
- args: [{ selector: 'val-link-processing-example', standalone: true, imports: [TextComponent], template: `
183
- <div class="link-examples">
184
- <h2>Ejemplos de Procesamiento de Enlaces</h2>
185
-
186
- <div class="example-section">
187
- <h3>Texto sin procesamiento de enlaces:</h3>
188
- <val-text [props]="basicTextProps"></val-text>
189
- </div>
190
-
191
- <div class="example-section">
192
- <h3>Texto con procesamiento básico de enlaces:</h3>
193
- <val-text [props]="basicLinksProps"></val-text>
194
- </div>
195
-
196
- <div class="example-section">
197
- <h3>Enlaces con configuración personalizada:</h3>
198
- <val-text [props]="customLinksProps"></val-text>
199
- </div>
200
-
201
- <div class="example-section">
202
- <h3>Enlaces internos y externos mezclados:</h3>
203
- <val-text [props]="mixedLinksProps"></val-text>
204
- </div>
205
-
206
- <div class="example-section">
207
- <h3>Enlaces sin abrir en nueva pestaña:</h3>
208
- <val-text [props]="sameTabLinksProps"></val-text>
209
- </div>
210
-
211
- <div class="example-section">
212
- <h3>Enlaces estilo Markdown [texto](url):</h3>
213
- <val-text [props]="markdownLinksProps"></val-text>
214
- </div>
215
-
216
- <div class="example-section">
217
- <h3>Mezcla de enlaces directos y Markdown:</h3>
218
- <val-text [props]="mixedFormatsProps"></val-text>
219
- </div>
220
-
221
- <div class="example-section">
222
- <h3>Corrección de puntuación en URLs:</h3>
223
- <val-text [props]="punctuationTestProps"></val-text>
224
- </div>
225
-
226
- <div class="example-section">
227
- <h3>URLs complejas con parámetros y fragmentos:</h3>
228
- <val-text [props]="complexUrlsProps"></val-text>
229
- </div>
230
- </div>
231
- `, styles: [".example-section{margin-bottom:24px;padding:16px;border:1px solid var(--ion-color-light, #f4f5f8);border-radius:8px;background:var(--ion-color-light-tint, #f5f6f9)}h2{color:var(--ion-color-primary, #3880ff);margin-bottom:20px}h3{color:var(--ion-color-dark, #222428);margin-bottom:10px;font-size:16px}\n"] }]
232
- }] });
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1wcm9jZXNzaW5nLWV4YW1wbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvZXhhbXBsZXMvbGluay1wcm9jZXNzaW5nLWV4YW1wbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUV4RTs7Ozs7Ozs7OztHQVVHO0FBOEVILE1BQU0sT0FBTyw4QkFBOEI7SUE3RTNDO1FBOEVFLG1CQUFjLEdBQWlCO1lBQzdCLE9BQU8sRUFBRSx1RkFBdUY7WUFDaEcsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLElBQUksRUFBRSxLQUFLO1lBQ1gsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQztRQUVGLG9CQUFlLEdBQWlCO1lBQzlCLE9BQU8sRUFBRSx5RkFBeUY7WUFDbEcsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLElBQUksRUFBRSxLQUFLO1lBQ1gsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQztRQUVGLHFCQUFnQixHQUFpQjtZQUMvQixPQUFPLEVBQUUsZ0ZBQWdGO1lBQ3pGLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsS0FBSztZQUNYLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFVBQVUsRUFBRTtnQkFDVixvQkFBb0IsRUFBRSxJQUFJO2dCQUMxQixvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQixTQUFTLEVBQUUsbUJBQW1CO2dCQUM5QixpQkFBaUIsRUFBRSxpQkFBaUI7Z0JBQ3BDLGlCQUFpQixFQUFFLGlCQUFpQjthQUNyQztTQUNGLENBQUM7UUFFRixvQkFBZSxHQUFp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Ozs7Ozs7Ozs7Ozs7OztHQWlEVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0TWV0YWRhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL3RleHQvdHlwZXMnO1xuLyoqXG4gKiBMaW5rUHJvY2Vzc2luZ0V4YW1wbGVDb21wb25lbnQgLSBDb21wb25lbnRlIGRlIGVqZW1wbG8gcXVlIGRlbXVlc3RyYSBlbCBwcm9jZXNhbWllbnRvIGF1dG9tw6F0aWNvIGRlIGVubGFjZXMuXG4gKlxuICogRXN0ZSBjb21wb25lbnRlIG11ZXN0cmEgZGlmZXJlbnRlcyBjYXNvcyBkZSB1c28gcGFyYSBlbCBwcm9jZXNhbWllbnRvIGF1dG9tw6F0aWNvIGRlIGVubGFjZXNcbiAqIGVuIGVsIGNvbXBvbmVudGUgdmFsLXRleHQsIGluY2x1eWVuZG8gZW5sYWNlcyBleHRlcm5vcywgcnV0YXMgaW50ZXJuYXMgeSBjb25maWd1cmFjaW9uZXMgcGVyc29uYWxpemFkYXMuXG4gKlxuICogQGV4YW1wbGUgVXNvIGVuIHRlbXBsYXRlOlxuICogYGBgaHRtbFxuICogPHZhbC1saW5rLXByb2Nlc3NpbmctZXhhbXBsZT48L3ZhbC1saW5rLXByb2Nlc3NpbmctZXhhbXBsZT5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbGluay1wcm9jZXNzaW5nLWV4YW1wbGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbVGV4dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImxpbmstZXhhbXBsZXNcIj5cbiAgICAgIDxoMj5FamVtcGxvcyBkZSBQcm9jZXNhbWllbnRvIGRlIEVubGFjZXM8L2gyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1zZWN0aW9uXCI+XG4gICAgICAgIDxoMz5UZXh0byBzaW4gcHJvY2VzYW1pZW50byBkZSBlbmxhY2VzOjwvaDM+XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwiYmFzaWNUZXh0UHJvcHNcIj48L3ZhbC10ZXh0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLXNlY3Rpb25cIj5cbiAgICAgICAgPGgzPlRleHRvIGNvbiBwcm9jZXNhbWllbnRvIGLDoXNpY28gZGUgZW5sYWNlczo8L2gzPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cImJhc2ljTGlua3NQcm9wc1wiPjwvdmFsLXRleHQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtc2VjdGlvblwiPlxuICAgICAgICA8aDM+RW5sYWNlcyBjb24gY29uZmlndXJhY2nDs24gcGVyc29uYWxpemFkYTo8L2gzPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cImN1c3RvbUxpbmtzUHJvcHNcIj48L3ZhbC10ZXh0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLXNlY3Rpb25cIj5cbiAgICAgICAgPGgzPkVubGFjZXMgaW50ZXJub3MgeSBleHRlcm5vcyBtZXpjbGFkb3M6PC9oMz5cbiAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJtaXhlZExpbmtzUHJvcHNcIj48L3ZhbC10ZXh0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLXNlY3Rpb25cIj5cbiAgICAgICAgPGgzPkVubGFjZXMgc2luIGFicmlyIGVuIG51ZXZhIHBlc3Rhw7FhOjwvaDM+XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwic2FtZVRhYkxpbmtzUHJvcHNcIj48L3ZhbC10ZXh0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLXNlY3Rpb25cIj5cbiAgICAgICAgPGgzPkVubGFjZXMgZXN0aWxvIE1hcmtkb3duIFt0ZXh0b10odXJsKTo8L2gzPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cIm1hcmtkb3duTGlua3NQcm9wc1wiPjwvdmFsLXRleHQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtc2VjdGlvblwiPlxuICAgICAgICA8aDM+TWV6Y2xhIGRlIGVubGFjZXMgZGlyZWN0b3MgeSBNYXJrZG93bjo8L2gzPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cIm1peGVkRm9ybWF0c1Byb3BzXCI+PC92YWwtdGV4dD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1zZWN0aW9uXCI+XG4gICAgICAgIDxoMz5Db3JyZWNjacOzbiBkZSBwdW50dWFjacOzbiBlbiBVUkxzOjwvaDM+XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwicHVuY3R1YXRpb25UZXN0UHJvcHNcIj48L3ZhbC10ZXh0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLXNlY3Rpb25cIj5cbiAgICAgICAgPGgzPlVSTHMgY29tcGxlamFzIGNvbiBwYXLDoW1ldHJvcyB5IGZyYWdtZW50b3M6PC9oMz5cbiAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJjb21wbGV4VXJsc1Byb3BzXCI+PC92YWwtdGV4dD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuZXhhbXBsZS1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQtdGludCwgI2Y1ZjZmOSk7XG4gICAgICB9XG5cbiAgICAgIGgyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjMzg4MGZmKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIH1cblxuICAgICAgaDMge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICMyMjI0MjgpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlua1Byb2Nlc3NpbmdFeGFtcGxlQ29tcG9uZW50IHtcbiAgYmFzaWNUZXh0UHJvcHM6IFRleHRNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiAnRXN0ZSB0ZXh0byBjb250aWVuZSBodHRwczovL2FuZ3VsYXIuaW8geSAvZGFzaGJvYXJkIHBlcm8gbm8gc2UgcHJvY2VzYW4gY29tbyBlbmxhY2VzLicsXG4gICAgc2l6ZTogJ21lZGl1bScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBib2xkOiBmYWxzZSxcbiAgICBwcm9jZXNzTGlua3M6IGZhbHNlLFxuICB9O1xuXG4gIGJhc2ljTGlua3NQcm9wczogVGV4dE1ldGFkYXRhID0ge1xuICAgIGNvbnRlbnQ6ICdWaXNpdGEgaHR0cHM6Ly9hbmd1bGFyLmlvIHBhcmEgZG9jdW1lbnRhY2nDs24gbyB2ZSBhIC9kYXNoYm9hcmQgcGFyYSBlbCBwYW5lbCBwcmluY2lwYWwuJyxcbiAgICBzaXplOiAnbWVkaXVtJyxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGJvbGQ6IGZhbHNlLFxuICAgIHByb2Nlc3NMaW5rczogdHJ1ZSxcbiAgfTtcblxuICBjdXN0b21MaW5rc1Byb3BzOiBUZXh0TWV0YWRhdGEgPSB7XG4gICAgY29udGVudDogJ0VubGFjZXMgcGVyc29uYWxpemFkb3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIgeSAvcHJvZmlsZS9zZXR0aW5ncycsXG4gICAgc2l6ZTogJ21lZGl1bScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBib2xkOiBmYWxzZSxcbiAgICBwcm9jZXNzTGlua3M6IHRydWUsXG4gICAgbGlua0NvbmZpZzoge1xuICAgICAgb3BlbkV4dGVybmFsSW5OZXdUYWI6IHRydWUsXG4gICAgICBvcGVuSW50ZXJuYWxJbk5ld1RhYjogZmFsc2UsXG4gICAgICBsaW5rQ2xhc3M6ICdjdXN0b20tbGluay1zdHlsZScsXG4gICAgICBleHRlcm5hbExpbmtDbGFzczogJ2V4dGVybmFsLWN1c3RvbScsXG4gICAgICBpbnRlcm5hbExpbmtDbGFzczogJ2ludGVybmFsLWN1c3RvbScsXG4gICAgfSxcbiAgfTtcblxuICBtaXhlZExpbmtzUHJvcHM6IFRleHRNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OlxuICAgICAgJ0NvbnN1bHRhIGxhIGRvY3VtZW50YWNpw7NuIGVuIGh0dHBzOi8vaW9uaWNmcmFtZXdvcmsuY29tL2RvY3MsIHJldmlzYSBlbCBjw7NkaWdvIGVuIGh0dHBzOi8vZ2l0aHViLmNvbS9pb25pYy10ZWFtL2lvbmljLWZyYW1ld29yaywgbyBuYXZlZ2EgYSAvY29tcG9uZW50cy9idXR0b25zIHBhcmEgZWplbXBsb3MgaW50ZXJub3MuJyxcbiAgICBzaXplOiAnbWVkaXVtJyxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGJvbGQ6IGZhbHNlLFxuICAgIHByb2Nlc3NMaW5rczogdHJ1ZSxcbiAgICBsaW5rQ29uZmlnOiB7XG4gICAgICBvcGVuRXh0ZXJuYWxJbk5ld1RhYjogdHJ1ZSxcbiAgICAgIG9wZW5JbnRlcm5hbEluTmV3VGFiOiBmYWxzZSxcbiAgICAgIGxpbmtDbGFzczogJ3Byb2Nlc3NlZC1saW5rJyxcbiAgICAgIGV4dGVybmFsTGlua0NsYXNzOiAnZXh0ZXJuYWwtbGluaycsXG4gICAgICBpbnRlcm5hbExpbmtDbGFzczogJ2ludGVybmFsLWxpbmsnLFxuICAgIH0sXG4gIH07XG5cbiAgc2FtZVRhYkxpbmtzUHJvcHM6IFRleHRNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiAnRXN0b3MgZW5sYWNlcyBubyBhYnJlbiBlbiBudWV2YSBwZXN0YcOxYTogaHR0cHM6Ly9leGFtcGxlLmNvbSB5IC9ob21lJyxcbiAgICBzaXplOiAnbWVkaXVtJyxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGJvbGQ6IGZhbHNlLFxuICAgIHByb2Nlc3NMaW5rczogdHJ1ZSxcbiAgICBsaW5rQ29uZmlnOiB7XG4gICAgICBvcGVuRXh0ZXJuYWxJbk5ld1RhYjogZmFsc2UsXG4gICAgICBvcGVuSW50ZXJuYWxJbk5ld1RhYjogZmFsc2UsXG4gICAgICBsaW5rQ2xhc3M6ICdzYW1lLXRhYi1saW5rJyxcbiAgICAgIGV4dGVybmFsTGlua0NsYXNzOiAnZXh0ZXJuYWwtc2FtZS10YWInLFxuICAgICAgaW50ZXJuYWxMaW5rQ2xhc3M6ICdpbnRlcm5hbC1zYW1lLXRhYicsXG4gICAgfSxcbiAgfTtcblxuICBtYXJrZG93bkxpbmtzUHJvcHM6IFRleHRNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OlxuICAgICAgJ0NvbnN1bHRhIFtsYSBkb2N1bWVudGFjacOzbiBkZSBBbmd1bGFyXShodHRwczovL2FuZ3VsYXIuaW8vZG9jcykgeSB2ZSBhIFtjb25maWd1cmFjacOzbiBkZWwgcGVyZmlsXSgvcHJvZmlsZS9zZXR0aW5ncykgcGFyYSBtw6FzIG9wY2lvbmVzLicsXG4gICAgc2l6ZTogJ21lZGl1bScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBib2xkOiBmYWxzZSxcbiAgICBwcm9jZXNzTGlua3M6IHRydWUsXG4gICAgbGlua0NvbmZpZzoge1xuICAgICAgb3BlbkV4dGVybmFsSW5OZXdUYWI6IHRydWUsXG4gICAgICBvcGVuSW50ZXJuYWxJbk5ld1RhYjogZmFsc2UsXG4gICAgICBwcm9jZXNzTWFya2Rvd25MaW5rczogdHJ1ZSxcbiAgICAgIGxpbmtDbGFzczogJ21hcmtkb3duLWxpbmsnLFxuICAgICAgZXh0ZXJuYWxMaW5rQ2xhc3M6ICdtYXJrZG93bi1leHRlcm5hbCcsXG4gICAgICBpbnRlcm5hbExpbmtDbGFzczogJ21hcmtkb3duLWludGVybmFsJyxcbiAgICB9LFxuICB9O1xuXG4gIG1peGVkRm9ybWF0c1Byb3BzOiBUZXh0TWV0YWRhdGEgPSB7XG4gICAgY29udGVudDpcbiAgICAgICdBcXXDrSBoYXkgW2RvY3VtZW50YWNpw7NuIG9maWNpYWxdKGh0dHBzOi8vYW5ndWxhci5pby9kb2NzKSwgdW4gZW5sYWNlIGRpcmVjdG8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhciwgeSB1bmEgcnV0YSBpbnRlcm5hIC9kYXNoYm9hcmQvYW5hbHl0aWNzLiDCoVRvZG9zIGZ1bmNpb25hbiEnLFxuICAgIHNpemU6ICdtZWRpdW0nLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgYm9sZDogZmFsc2UsXG4gICAgcHJvY2Vzc0xpbmtzOiB0cnVlLFxuICAgIGxpbmtDb25maWc6IHtcbiAgICAgIG9wZW5FeHRlcm5hbEluTmV3VGFiOiB0cnVlLFxuICAgICAgb3BlbkludGVybmFsSW5OZXdUYWI6IGZhbHNlLFxuICAgICAgcHJvY2Vzc01hcmtkb3duTGlua3M6IHRydWUsXG4gICAgICBsaW5rQ2xhc3M6ICdtaXhlZC1saW5rJyxcbiAgICAgIGV4dGVybmFsTGlua0NsYXNzOiAnbWl4ZWQtZXh0ZXJuYWwnLFxuICAgICAgaW50ZXJuYWxMaW5rQ2xhc3M6ICdtaXhlZC1pbnRlcm5hbCcsXG4gICAgfSxcbiAgfTtcblxuICBwdW5jdHVhdGlvblRlc3RQcm9wczogVGV4dE1ldGFkYXRhID0ge1xuICAgIGNvbnRlbnQ6XG4gICAgICAnVVJMcyBjb24gcHVudHVhY2nDs24gZmluYWw6IGh0dHBzOi8vaW9uaWNmcmFtZXdvcmsuY29tL2RvY3MsIHRhbWJpw6luIGh0dHBzOi8vYW5ndWxhci5pbyEgUHJlZ3VudGEgc29icmUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXI/IFkgcHVudG8gZmluYWw6IGh0dHBzOi8vdHlwZXNjcmlwdC5vcmcuIFBhcsOpbnRlc2lzIChodHRwczovL3J4anMuZGV2KSB5IGNvbWlsbGFzIFwiaHR0cHM6Ly96b25lLmpzXCIuIMKhVG9kb3MgZnVuY2lvbmFuIScsXG4gICAgc2l6ZTogJ21lZGl1bScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBib2xkOiBmYWxzZSxcbiAgICBwcm9jZXNzTGlua3M6IHRydWUsXG4gICAgbGlua0NvbmZpZzoge1xuICAgICAgb3BlbkV4dGVybmFsSW5OZXdUYWI6IHRydWUsXG4gICAgICBsaW5rQ2xhc3M6ICdwdW5jdHVhdGlvbi10ZXN0JyxcbiAgICAgIGV4dGVybmFsTGlua0NsYXNzOiAnZXh0ZXJuYWwtcHVuY3QnLFxuICAgIH0sXG4gIH07XG5cbiAgY29tcGxleFVybHNQcm9wczogVGV4dE1ldGFkYXRhID0ge1xuICAgIGNvbnRlbnQ6XG4gICAgICAnVVJMcyBjb21wbGVqYXM6IGh0dHBzOi8vZXhhbXBsZS5jb20vcGF0aD9wYXJhbT12YWx1ZSZvdGhlcj0xMjMjc2VjdGlvbiwgYsO6c3F1ZWRhIGVuIGh0dHBzOi8vZ29vZ2xlLmNvbS9zZWFyY2g/cT1hbmd1bGFyK2NvbXBvbmVudHMsIHkgQVBJIGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvb3duZXIvcmVwby9pc3N1ZXM/c3RhdGU9b3Blbi4gVG9kb3MgY29uIHBhcsOhbWV0cm9zIHkgZnJhZ21lbnRvcy4nLFxuICAgIHNpemU6ICdtZWRpdW0nLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgYm9sZDogZmFsc2UsXG4gICAgcHJvY2Vzc0xpbmtzOiB0cnVlLFxuICAgIGxpbmtDb25maWc6IHtcbiAgICAgIG9wZW5FeHRlcm5hbEluTmV3VGFiOiB0cnVlLFxuICAgICAgbGlua0NsYXNzOiAnY29tcGxleC11cmwnLFxuICAgICAgZXh0ZXJuYWxMaW5rQ2xhc3M6ICdjb21wbGV4LWV4dGVybmFsJyxcbiAgICB9LFxuICB9O1xufVxuIl19