valtech-components 2.0.277 → 2.0.278
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +149 -6
- package/esm2022/lib/components/_examples/global-content-example-content.mjs +23 -0
- package/esm2022/lib/components/_examples/global-content-example.component.mjs +504 -0
- package/esm2022/lib/components/_examples/reactive-content-example-content.mjs +43 -0
- package/esm2022/lib/components/_examples/reactive-content-example.component.mjs +347 -0
- package/esm2022/lib/components/atoms/text/text.component.mjs +143 -15
- package/esm2022/lib/components/atoms/text/types.mjs +1 -1
- package/esm2022/lib/services/content.service.mjs +327 -0
- package/esm2022/lib/services/icons.service.mjs +3 -2
- package/esm2022/lib/services/lang-provider/content.mjs +136 -1
- package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +118 -8
- package/esm2022/lib/shared/utils/content.mjs +186 -0
- package/esm2022/public-api.mjs +11 -5
- package/fesm2022/valtech-components.mjs +2938 -1359
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/_examples/global-content-example-content.d.ts +9 -0
- package/lib/components/_examples/global-content-example.component.d.ts +73 -0
- package/lib/components/_examples/reactive-content-example-content.d.ts +32 -0
- package/lib/components/_examples/reactive-content-example.component.d.ts +47 -0
- package/lib/components/atoms/text/text.component.d.ts +57 -8
- package/lib/components/atoms/text/types.d.ts +26 -5
- package/lib/services/content.service.d.ts +296 -0
- package/lib/services/lang-provider/lang-provider.service.d.ts +87 -7
- package/lib/shared/utils/content.d.ts +199 -0
- package/package.json +1 -1
- package/public-api.d.ts +9 -4
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import { AsyncPipe, NgIf } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
3
|
+
import { IonButton, IonCard, IonCardContent, IonCardHeader, IonCardTitle } from '@ionic/angular/standalone';
|
|
4
|
+
import { ContentService } from '../../services/content.service';
|
|
5
|
+
import { LangOption } from '../../services/lang-provider/types';
|
|
6
|
+
import { TextComponent } from '../atoms/text/text.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* Reactive Content Example Component
|
|
10
|
+
*
|
|
11
|
+
* This component demonstrates various ways to use the new reactive content system with ContentService:
|
|
12
|
+
* 1. Direct reactive content binding with val-text
|
|
13
|
+
* 2. Content with interpolation (dynamic values)
|
|
14
|
+
* 3. Multiple content keys retrieved at once
|
|
15
|
+
* 4. Using the scoped content helper (forComponent)
|
|
16
|
+
* 5. Language switching functionality
|
|
17
|
+
*
|
|
18
|
+
* The component automatically updates all text when the language changes,
|
|
19
|
+
* using the simplified ContentService API that eliminates the need for manual
|
|
20
|
+
* LangService injection and utility function imports.
|
|
21
|
+
*
|
|
22
|
+
* @example Usage patterns:
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // Simple injection
|
|
25
|
+
* content = inject(ContentService);
|
|
26
|
+
*
|
|
27
|
+
* // Scoped helper for this component
|
|
28
|
+
* componentContent = this.content.forComponent('MyComponent');
|
|
29
|
+
*
|
|
30
|
+
* // Get reactive content
|
|
31
|
+
* title$ = this.componentContent.get('title');
|
|
32
|
+
* multipleTexts$ = this.componentContent.getMultiple(['title', 'subtitle']);
|
|
33
|
+
* ```
|
|
34
|
+
* without requiring manual subscriptions or change detection triggers.
|
|
35
|
+
*/
|
|
36
|
+
export class ReactiveContentExampleComponent {
|
|
37
|
+
constructor() {
|
|
38
|
+
// Use the new ContentService with inject
|
|
39
|
+
this.content = inject(ContentService);
|
|
40
|
+
// Create a scoped content helper for this component
|
|
41
|
+
this.componentContent = this.content.forComponent('ReactiveContentExample');
|
|
42
|
+
// State for confirmation dialog
|
|
43
|
+
this.showConfirmation = false;
|
|
44
|
+
// Example 1: Simple reactive content props for val-text
|
|
45
|
+
this.titleProps = {
|
|
46
|
+
contentKey: 'title',
|
|
47
|
+
contentClass: 'ReactiveContentExample',
|
|
48
|
+
contentFallback: 'Default Title',
|
|
49
|
+
color: 'primary',
|
|
50
|
+
size: 'xlarge',
|
|
51
|
+
bold: true,
|
|
52
|
+
};
|
|
53
|
+
// Example 2: Reactive content with interpolation
|
|
54
|
+
this.greetingProps = {
|
|
55
|
+
contentKey: 'greeting',
|
|
56
|
+
contentClass: 'ReactiveContentExample',
|
|
57
|
+
contentInterpolation: { name: 'Developer', count: 3 },
|
|
58
|
+
contentFallback: 'Hello Developer',
|
|
59
|
+
color: 'secondary',
|
|
60
|
+
size: 'large',
|
|
61
|
+
bold: false,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
ngOnInit() {
|
|
65
|
+
// Set up reactive observables using ContentService
|
|
66
|
+
this.currentLanguage$ = this.content.currentLang$;
|
|
67
|
+
// Example 3: Get multiple content keys reactively - using the new API
|
|
68
|
+
this.multipleContent$ = this.componentContent.getMultiple(['description', 'dynamicText']);
|
|
69
|
+
// Button text reactive - using the new simplified API with options
|
|
70
|
+
this.buttonText$ = this.componentContent.get('buttonText');
|
|
71
|
+
// Global content observables using unified fromContent method
|
|
72
|
+
this.saveButton$ = this.content.fromContent({ key: 'save' });
|
|
73
|
+
this.cancelButton$ = this.content.fromContent({ key: 'cancel' });
|
|
74
|
+
this.deleteButton$ = this.content.fromContent({ key: 'delete' });
|
|
75
|
+
this.okButton$ = this.content.fromContent({ key: 'ok' });
|
|
76
|
+
this.loadingText$ = this.content.fromContent({ key: 'loading' });
|
|
77
|
+
// Global content with interpolation using unified method
|
|
78
|
+
this.deleteConfirmationText$ = this.content.fromContent({
|
|
79
|
+
key: 'deleteConfirmation',
|
|
80
|
+
interpolation: { itemName: 'este elemento' },
|
|
81
|
+
});
|
|
82
|
+
// Example of synchronous global content access
|
|
83
|
+
console.log('Global save text:', this.content.getText('save'));
|
|
84
|
+
console.log('Global cancel text:', this.content.getGlobalText('cancel'));
|
|
85
|
+
// Example of using new scoped helper with interpolation
|
|
86
|
+
const greetingWithNewAPI$ = this.componentContent.get('greeting', {
|
|
87
|
+
interpolation: { name: 'Developer', count: 3 },
|
|
88
|
+
fallback: 'Hello!',
|
|
89
|
+
});
|
|
90
|
+
console.log('New unified API works!', greetingWithNewAPI$);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Toggle between Spanish and English
|
|
94
|
+
*/
|
|
95
|
+
toggleLanguage() {
|
|
96
|
+
const currentLang = this.content.currentLang;
|
|
97
|
+
const newLang = currentLang === LangOption.ES ? LangOption.EN : LangOption.ES;
|
|
98
|
+
this.content.setLang(newLang);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Show delete confirmation dialog
|
|
102
|
+
*/
|
|
103
|
+
showDeleteConfirmation() {
|
|
104
|
+
this.showConfirmation = true;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Hide delete confirmation dialog
|
|
108
|
+
*/
|
|
109
|
+
hideDeleteConfirmation() {
|
|
110
|
+
this.showConfirmation = false;
|
|
111
|
+
}
|
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReactiveContentExampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReactiveContentExampleComponent, isStandalone: true, selector: "val-reactive-content-example", ngImport: i0, template: `
|
|
114
|
+
<ion-card>
|
|
115
|
+
<ion-card-header>
|
|
116
|
+
<ion-card-title>
|
|
117
|
+
<!-- Example 1: Direct reactive content using val-text -->
|
|
118
|
+
<val-text [props]="titleProps"></val-text>
|
|
119
|
+
</ion-card-title>
|
|
120
|
+
</ion-card-header>
|
|
121
|
+
|
|
122
|
+
<ion-card-content>
|
|
123
|
+
<!-- Example 2: Reactive content with interpolation -->
|
|
124
|
+
<val-text [props]="greetingProps"></val-text>
|
|
125
|
+
|
|
126
|
+
<div class="example-divider"></div>
|
|
127
|
+
|
|
128
|
+
<!-- Example 3: Multiple content keys -->
|
|
129
|
+
<div *ngIf="multipleContent$ | async as content">
|
|
130
|
+
<val-text
|
|
131
|
+
[props]="{
|
|
132
|
+
content: content['description'],
|
|
133
|
+
color: 'medium',
|
|
134
|
+
size: 'medium',
|
|
135
|
+
bold: false,
|
|
136
|
+
}"
|
|
137
|
+
></val-text>
|
|
138
|
+
|
|
139
|
+
<br /><br />
|
|
140
|
+
|
|
141
|
+
<val-text
|
|
142
|
+
[props]="{
|
|
143
|
+
content: content['dynamicText'],
|
|
144
|
+
color: 'primary',
|
|
145
|
+
size: 'small',
|
|
146
|
+
bold: true,
|
|
147
|
+
}"
|
|
148
|
+
></val-text>
|
|
149
|
+
</div>
|
|
150
|
+
|
|
151
|
+
<div class="example-divider"></div>
|
|
152
|
+
|
|
153
|
+
<!-- Example 4: Using content helper -->
|
|
154
|
+
<val-text
|
|
155
|
+
[props]="{
|
|
156
|
+
content: componentContent.getText('welcomeMessage'),
|
|
157
|
+
color: 'success',
|
|
158
|
+
size: 'large',
|
|
159
|
+
bold: true,
|
|
160
|
+
}"
|
|
161
|
+
></val-text>
|
|
162
|
+
|
|
163
|
+
<div class="example-divider"></div>
|
|
164
|
+
|
|
165
|
+
<!-- Example 5: Global content - buttons using global text -->
|
|
166
|
+
<div class="button-group">
|
|
167
|
+
<ion-button [fill]="'solid'" [color]="'primary'">
|
|
168
|
+
{{ saveButton$ | async }}
|
|
169
|
+
</ion-button>
|
|
170
|
+
<ion-button [fill]="'outline'" [color]="'secondary'">
|
|
171
|
+
{{ cancelButton$ | async }}
|
|
172
|
+
</ion-button>
|
|
173
|
+
<ion-button [fill]="'outline'" [color]="'danger'" (click)="showDeleteConfirmation()">
|
|
174
|
+
{{ deleteButton$ | async }}
|
|
175
|
+
</ion-button>
|
|
176
|
+
</div>
|
|
177
|
+
|
|
178
|
+
<div class="example-divider"></div>
|
|
179
|
+
|
|
180
|
+
<!-- Example 6: Global content with interpolation -->
|
|
181
|
+
<div *ngIf="showConfirmation" class="confirmation-message">
|
|
182
|
+
<val-text
|
|
183
|
+
[props]="{
|
|
184
|
+
content: deleteConfirmationText$ | async,
|
|
185
|
+
color: 'warning',
|
|
186
|
+
size: 'medium',
|
|
187
|
+
bold: true,
|
|
188
|
+
}"
|
|
189
|
+
></val-text>
|
|
190
|
+
<br /><br />
|
|
191
|
+
<ion-button [fill]="'solid'" [color]="'danger'" size="small" (click)="hideDeleteConfirmation()">
|
|
192
|
+
{{ okButton$ | async }}
|
|
193
|
+
</ion-button>
|
|
194
|
+
<ion-button [fill]="'clear'" [color]="'medium'" size="small" (click)="hideDeleteConfirmation()">
|
|
195
|
+
{{ cancelButton$ | async }}
|
|
196
|
+
</ion-button>
|
|
197
|
+
</div>
|
|
198
|
+
|
|
199
|
+
<div class="example-divider"></div>
|
|
200
|
+
|
|
201
|
+
<!-- Example 7: Language switching button -->
|
|
202
|
+
<ion-button expand="block" fill="outline" color="tertiary" (click)="toggleLanguage()">
|
|
203
|
+
{{ buttonText$ | async }}
|
|
204
|
+
</ion-button>
|
|
205
|
+
|
|
206
|
+
<!-- Example 8: Current language display -->
|
|
207
|
+
<div class="language-info">
|
|
208
|
+
<p>
|
|
209
|
+
Current language:
|
|
210
|
+
<strong>{{ currentLanguage$ | async }}</strong>
|
|
211
|
+
</p>
|
|
212
|
+
|
|
213
|
+
<!-- Example of mixed global and component content -->
|
|
214
|
+
<p>
|
|
215
|
+
<val-text
|
|
216
|
+
[props]="{
|
|
217
|
+
content: loadingText$ | async,
|
|
218
|
+
color: 'medium',
|
|
219
|
+
size: 'small',
|
|
220
|
+
bold: false,
|
|
221
|
+
}"
|
|
222
|
+
></val-text>
|
|
223
|
+
</p>
|
|
224
|
+
</div>
|
|
225
|
+
</ion-card-content>
|
|
226
|
+
</ion-card>
|
|
227
|
+
`, isInline: true, styles: [":host{display:block;margin:16px}.example-divider{margin:24px 0;border-bottom:1px solid var(--ion-color-light);padding-bottom:16px}.language-info{margin-top:24px;padding:16px;background-color:var(--ion-color-light);border-radius:8px;text-align:center}.language-info p{margin:0;color:var(--ion-color-dark)}.language-info strong{color:var(--ion-color-primary);text-transform:uppercase}ion-card{margin:0;border-radius:12px;box-shadow:0 4px 16px #0000001a}ion-card-header{padding-bottom:8px}ion-card-title{font-size:1.5rem;font-weight:600}ion-card-content{padding-top:16px}ion-button{margin:16px 0;--border-radius: 8px}ion-card-content{padding:20px}.language-info{margin-top:16px;padding:12px;background-color:var(--ion-color-light);border-radius:8px;text-align:center}.content-section{margin:16px 0;padding:12px;border:1px solid var(--ion-color-light);border-radius:8px}.content-section h3{margin-top:0;color:var(--ion-color-primary)}.example-divider{margin:24px 0;height:1px;background-color:var(--ion-color-light)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
228
|
+
}
|
|
229
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReactiveContentExampleComponent, decorators: [{
|
|
230
|
+
type: Component,
|
|
231
|
+
args: [{ selector: 'val-reactive-content-example', standalone: true, imports: [AsyncPipe, NgIf, IonCard, IonCardContent, IonCardHeader, IonCardTitle, IonButton, TextComponent], template: `
|
|
232
|
+
<ion-card>
|
|
233
|
+
<ion-card-header>
|
|
234
|
+
<ion-card-title>
|
|
235
|
+
<!-- Example 1: Direct reactive content using val-text -->
|
|
236
|
+
<val-text [props]="titleProps"></val-text>
|
|
237
|
+
</ion-card-title>
|
|
238
|
+
</ion-card-header>
|
|
239
|
+
|
|
240
|
+
<ion-card-content>
|
|
241
|
+
<!-- Example 2: Reactive content with interpolation -->
|
|
242
|
+
<val-text [props]="greetingProps"></val-text>
|
|
243
|
+
|
|
244
|
+
<div class="example-divider"></div>
|
|
245
|
+
|
|
246
|
+
<!-- Example 3: Multiple content keys -->
|
|
247
|
+
<div *ngIf="multipleContent$ | async as content">
|
|
248
|
+
<val-text
|
|
249
|
+
[props]="{
|
|
250
|
+
content: content['description'],
|
|
251
|
+
color: 'medium',
|
|
252
|
+
size: 'medium',
|
|
253
|
+
bold: false,
|
|
254
|
+
}"
|
|
255
|
+
></val-text>
|
|
256
|
+
|
|
257
|
+
<br /><br />
|
|
258
|
+
|
|
259
|
+
<val-text
|
|
260
|
+
[props]="{
|
|
261
|
+
content: content['dynamicText'],
|
|
262
|
+
color: 'primary',
|
|
263
|
+
size: 'small',
|
|
264
|
+
bold: true,
|
|
265
|
+
}"
|
|
266
|
+
></val-text>
|
|
267
|
+
</div>
|
|
268
|
+
|
|
269
|
+
<div class="example-divider"></div>
|
|
270
|
+
|
|
271
|
+
<!-- Example 4: Using content helper -->
|
|
272
|
+
<val-text
|
|
273
|
+
[props]="{
|
|
274
|
+
content: componentContent.getText('welcomeMessage'),
|
|
275
|
+
color: 'success',
|
|
276
|
+
size: 'large',
|
|
277
|
+
bold: true,
|
|
278
|
+
}"
|
|
279
|
+
></val-text>
|
|
280
|
+
|
|
281
|
+
<div class="example-divider"></div>
|
|
282
|
+
|
|
283
|
+
<!-- Example 5: Global content - buttons using global text -->
|
|
284
|
+
<div class="button-group">
|
|
285
|
+
<ion-button [fill]="'solid'" [color]="'primary'">
|
|
286
|
+
{{ saveButton$ | async }}
|
|
287
|
+
</ion-button>
|
|
288
|
+
<ion-button [fill]="'outline'" [color]="'secondary'">
|
|
289
|
+
{{ cancelButton$ | async }}
|
|
290
|
+
</ion-button>
|
|
291
|
+
<ion-button [fill]="'outline'" [color]="'danger'" (click)="showDeleteConfirmation()">
|
|
292
|
+
{{ deleteButton$ | async }}
|
|
293
|
+
</ion-button>
|
|
294
|
+
</div>
|
|
295
|
+
|
|
296
|
+
<div class="example-divider"></div>
|
|
297
|
+
|
|
298
|
+
<!-- Example 6: Global content with interpolation -->
|
|
299
|
+
<div *ngIf="showConfirmation" class="confirmation-message">
|
|
300
|
+
<val-text
|
|
301
|
+
[props]="{
|
|
302
|
+
content: deleteConfirmationText$ | async,
|
|
303
|
+
color: 'warning',
|
|
304
|
+
size: 'medium',
|
|
305
|
+
bold: true,
|
|
306
|
+
}"
|
|
307
|
+
></val-text>
|
|
308
|
+
<br /><br />
|
|
309
|
+
<ion-button [fill]="'solid'" [color]="'danger'" size="small" (click)="hideDeleteConfirmation()">
|
|
310
|
+
{{ okButton$ | async }}
|
|
311
|
+
</ion-button>
|
|
312
|
+
<ion-button [fill]="'clear'" [color]="'medium'" size="small" (click)="hideDeleteConfirmation()">
|
|
313
|
+
{{ cancelButton$ | async }}
|
|
314
|
+
</ion-button>
|
|
315
|
+
</div>
|
|
316
|
+
|
|
317
|
+
<div class="example-divider"></div>
|
|
318
|
+
|
|
319
|
+
<!-- Example 7: Language switching button -->
|
|
320
|
+
<ion-button expand="block" fill="outline" color="tertiary" (click)="toggleLanguage()">
|
|
321
|
+
{{ buttonText$ | async }}
|
|
322
|
+
</ion-button>
|
|
323
|
+
|
|
324
|
+
<!-- Example 8: Current language display -->
|
|
325
|
+
<div class="language-info">
|
|
326
|
+
<p>
|
|
327
|
+
Current language:
|
|
328
|
+
<strong>{{ currentLanguage$ | async }}</strong>
|
|
329
|
+
</p>
|
|
330
|
+
|
|
331
|
+
<!-- Example of mixed global and component content -->
|
|
332
|
+
<p>
|
|
333
|
+
<val-text
|
|
334
|
+
[props]="{
|
|
335
|
+
content: loadingText$ | async,
|
|
336
|
+
color: 'medium',
|
|
337
|
+
size: 'small',
|
|
338
|
+
bold: false,
|
|
339
|
+
}"
|
|
340
|
+
></val-text>
|
|
341
|
+
</p>
|
|
342
|
+
</div>
|
|
343
|
+
</ion-card-content>
|
|
344
|
+
</ion-card>
|
|
345
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;margin:16px}.example-divider{margin:24px 0;border-bottom:1px solid var(--ion-color-light);padding-bottom:16px}.language-info{margin-top:24px;padding:16px;background-color:var(--ion-color-light);border-radius:8px;text-align:center}.language-info p{margin:0;color:var(--ion-color-dark)}.language-info strong{color:var(--ion-color-primary);text-transform:uppercase}ion-card{margin:0;border-radius:12px;box-shadow:0 4px 16px #0000001a}ion-card-header{padding-bottom:8px}ion-card-title{font-size:1.5rem;font-weight:600}ion-card-content{padding-top:16px}ion-button{margin:16px 0;--border-radius: 8px}ion-card-content{padding:20px}.language-info{margin-top:16px;padding:12px;background-color:var(--ion-color-light);border-radius:8px;text-align:center}.content-section{margin:16px 0;padding:12px;border:1px solid var(--ion-color-light);border-radius:8px}.content-section h3{margin-top:0;color:var(--ion-color-primary)}.example-divider{margin:24px 0;height:1px;background-color:var(--ion-color-light)}\n"] }]
|
|
346
|
+
}], ctorParameters: () => [] });
|
|
347
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtY29udGVudC1leGFtcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvX2V4YW1wbGVzL3JlYWN0aXZlLWNvbnRlbnQtZXhhbXBsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzVHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQTZIN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUNILE1BQU0sT0FBTywrQkFBK0I7SUFnRDFDO1FBL0NBLHlDQUF5QztRQUN6QyxZQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWpDLG9EQUFvRDtRQUNwRCxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBZ0J2RSxnQ0FBZ0M7UUFDaEMscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCLHdEQUF3RDtRQUN4RCxlQUFVLEdBQWlCO1lBQ3pCLFVBQVUsRUFBRSxPQUFPO1lBQ25CLFlBQVksRUFBRSx3QkFBd0I7WUFDdEMsZUFBZSxFQUFFLGVBQWU7WUFDaEMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7UUFFRixpREFBaUQ7UUFDakQsa0JBQWEsR0FBaUI7WUFDNUIsVUFBVSxFQUFFLFVBQVU7WUFDdEIsWUFBWSxFQUFFLHdCQUF3QjtZQUN0QyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNyRCxlQUFlLEVBQUUsaUJBQWlCO1lBQ2xDLEtBQUssRUFBRSxXQUFXO1lBQ2xCLElBQUksRUFBRSxPQUFPO1lBQ2IsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDO0lBS2EsQ0FBQztJQUVoQixRQUFRO1FBQ04sbURBQW1EO1FBQ25ELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUVsRCxzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUUxRixtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTNELDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDdEQsR0FBRyxFQUFFLG9CQUFvQjtZQUN6QixhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFO1NBQzdDLENBQUMsQ0FBQztRQUVILCtDQUErQztRQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRXpFLHdEQUF3RDtRQUN4RCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFO1lBQ2hFLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUM5QyxRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNaLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLFdBQVcsS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzlFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7K0dBMUdVLCtCQUErQjttR0FBL0IsK0JBQStCLHdGQWxKaEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtIVCwyakNBbkhTLFNBQVMsOENBQUUsSUFBSSw2RkFBRSxPQUFPLHlMQUFFLGNBQWMsK0VBQUUsYUFBYSxzR0FBRSxZQUFZLHNGQUFFLFNBQVMsb1BBQUUsYUFBYTs7NEZBbUo5RiwrQkFBK0I7a0JBdEozQyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLFlBQ2hHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrSFQsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uQ2FyZCwgSW9uQ2FyZENvbnRlbnQsIElvbkNhcmRIZWFkZXIsIElvbkNhcmRUaXRsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBMYW5nT3B0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGFuZy1wcm92aWRlci90eXBlcyc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0TWV0YWRhdGEgfSBmcm9tICcuLi9hdG9tcy90ZXh0L3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXJlYWN0aXZlLWNvbnRlbnQtZXhhbXBsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBc3luY1BpcGUsIE5nSWYsIElvbkNhcmQsIElvbkNhcmRDb250ZW50LCBJb25DYXJkSGVhZGVyLCBJb25DYXJkVGl0bGUsIElvbkJ1dHRvbiwgVGV4dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1jYXJkPlxuICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgIDwhLS0gRXhhbXBsZSAxOiBEaXJlY3QgcmVhY3RpdmUgY29udGVudCB1c2luZyB2YWwtdGV4dCAtLT5cbiAgICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInRpdGxlUHJvcHNcIj48L3ZhbC10ZXh0PlxuICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8IS0tIEV4YW1wbGUgMjogUmVhY3RpdmUgY29udGVudCB3aXRoIGludGVycG9sYXRpb24gLS0+XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwiZ3JlZXRpbmdQcm9wc1wiPjwvdmFsLXRleHQ+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICAgIDwhLS0gRXhhbXBsZSAzOiBNdWx0aXBsZSBjb250ZW50IGtleXMgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXBsZUNvbnRlbnQkIHwgYXN5bmMgYXMgY29udGVudFwiPlxuICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogY29udGVudFsnZGVzY3JpcHRpb24nXSxcbiAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+PC92YWwtdGV4dD5cblxuICAgICAgICAgIDxiciAvPjxiciAvPlxuXG4gICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50WydkeW5hbWljVGV4dCddLFxuICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPjwvdmFsLXRleHQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgICA8IS0tIEV4YW1wbGUgNDogVXNpbmcgY29udGVudCBoZWxwZXIgLS0+XG4gICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBjb250ZW50OiBjb21wb25lbnRDb250ZW50LmdldFRleHQoJ3dlbGNvbWVNZXNzYWdlJyksXG4gICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3ZhbC10ZXh0PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgICA8IS0tIEV4YW1wbGUgNTogR2xvYmFsIGNvbnRlbnQgLSBidXR0b25zIHVzaW5nIGdsb2JhbCB0ZXh0IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gW2ZpbGxdPVwiJ3NvbGlkJ1wiIFtjb2xvcl09XCIncHJpbWFyeSdcIj5cbiAgICAgICAgICAgIHt7IHNhdmVCdXR0b24kIHwgYXN5bmMgfX1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b24gW2ZpbGxdPVwiJ291dGxpbmUnXCIgW2NvbG9yXT1cIidzZWNvbmRhcnknXCI+XG4gICAgICAgICAgICB7eyBjYW5jZWxCdXR0b24kIHwgYXN5bmMgfX1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b24gW2ZpbGxdPVwiJ291dGxpbmUnXCIgW2NvbG9yXT1cIidkYW5nZXInXCIgKGNsaWNrKT1cInNob3dEZWxldGVDb25maXJtYXRpb24oKVwiPlxuICAgICAgICAgICAge3sgZGVsZXRlQnV0dG9uJCB8IGFzeW5jIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgPCEtLSBFeGFtcGxlIDY6IEdsb2JhbCBjb250ZW50IHdpdGggaW50ZXJwb2xhdGlvbiAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dDb25maXJtYXRpb25cIiBjbGFzcz1cImNvbmZpcm1hdGlvbi1tZXNzYWdlXCI+XG4gICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBjb250ZW50OiBkZWxldGVDb25maXJtYXRpb25UZXh0JCB8IGFzeW5jLFxuICAgICAgICAgICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID48L3ZhbC10ZXh0PlxuICAgICAgICAgIDxiciAvPjxiciAvPlxuICAgICAgICAgIDxpb24tYnV0dG9uIFtmaWxsXT1cIidzb2xpZCdcIiBbY29sb3JdPVwiJ2RhbmdlcidcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiaGlkZURlbGV0ZUNvbmZpcm1hdGlvbigpXCI+XG4gICAgICAgICAgICB7eyBva0J1dHRvbiQgfCBhc3luYyB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBbZmlsbF09XCInY2xlYXInXCIgW2NvbG9yXT1cIidtZWRpdW0nXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImhpZGVEZWxldGVDb25maXJtYXRpb24oKVwiPlxuICAgICAgICAgICAge3sgY2FuY2VsQnV0dG9uJCB8IGFzeW5jIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgPCEtLSBFeGFtcGxlIDc6IExhbmd1YWdlIHN3aXRjaGluZyBidXR0b24gLS0+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cInRlcnRpYXJ5XCIgKGNsaWNrKT1cInRvZ2dsZUxhbmd1YWdlKClcIj5cbiAgICAgICAgICB7eyBidXR0b25UZXh0JCB8IGFzeW5jIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICA8IS0tIEV4YW1wbGUgODogQ3VycmVudCBsYW5ndWFnZSBkaXNwbGF5IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGFuZ3VhZ2UtaW5mb1wiPlxuICAgICAgICAgIDxwPlxuICAgICAgICAgICAgQ3VycmVudCBsYW5ndWFnZTpcbiAgICAgICAgICAgIDxzdHJvbmc+e3sgY3VycmVudExhbmd1YWdlJCB8IGFzeW5jIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgPCEtLSBFeGFtcGxlIG9mIG1peGVkIGdsb2JhbCBhbmQgY29tcG9uZW50IGNvbnRlbnQgLS0+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiBsb2FkaW5nVGV4dCQgfCBhc3luYyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+PC92YWwtdGV4dD5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3JlYWN0aXZlLWNvbnRlbnQtZXhhbXBsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG4vKipcbiAqIFJlYWN0aXZlIENvbnRlbnQgRXhhbXBsZSBDb21wb25lbnRcbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBkZW1vbnN0cmF0ZXMgdmFyaW91cyB3YXlzIHRvIHVzZSB0aGUgbmV3IHJlYWN0aXZlIGNvbnRlbnQgc3lzdGVtIHdpdGggQ29udGVudFNlcnZpY2U6XG4gKiAxLiBEaXJlY3QgcmVhY3RpdmUgY29udGVudCBiaW5kaW5nIHdpdGggdmFsLXRleHRcbiAqIDIuIENvbnRlbnQgd2l0aCBpbnRlcnBvbGF0aW9uIChkeW5hbWljIHZhbHVlcylcbiAqIDMuIE11bHRpcGxlIGNvbnRlbnQga2V5cyByZXRyaWV2ZWQgYXQgb25jZVxuICogNC4gVXNpbmcgdGhlIHNjb3BlZCBjb250ZW50IGhlbHBlciAoZm9yQ29tcG9uZW50KVxuICogNS4gTGFuZ3VhZ2Ugc3dpdGNoaW5nIGZ1bmN0aW9uYWxpdHlcbiAqXG4gKiBUaGUgY29tcG9uZW50IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyBhbGwgdGV4dCB3aGVuIHRoZSBsYW5ndWFnZSBjaGFuZ2VzLFxuICogdXNpbmcgdGhlIHNpbXBsaWZpZWQgQ29udGVudFNlcnZpY2UgQVBJIHRoYXQgZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgbWFudWFsXG4gKiBMYW5nU2VydmljZSBpbmplY3Rpb24gYW5kIHV0aWxpdHkgZnVuY3Rpb24gaW1wb3J0cy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZSBwYXR0ZXJuczpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFNpbXBsZSBpbmplY3Rpb25cbiAqIGNvbnRlbnQgPSBpbmplY3QoQ29udGVudFNlcnZpY2UpO1xuICpcbiAqIC8vIFNjb3BlZCBoZWxwZXIgZm9yIHRoaXMgY29tcG9uZW50XG4gKiBjb21wb25lbnRDb250ZW50ID0gdGhpcy5jb250ZW50LmZvckNvbXBvbmVudCgnTXlDb21wb25lbnQnKTtcbiAqXG4gKiAvLyBHZXQgcmVhY3RpdmUgY29udGVudFxuICogdGl0bGUkID0gdGhpcy5jb21wb25lbnRDb250ZW50LmdldCgndGl0bGUnKTtcbiAqIG11bHRpcGxlVGV4dHMkID0gdGhpcy5jb21wb25lbnRDb250ZW50LmdldE11bHRpcGxlKFsndGl0bGUnLCAnc3VidGl0bGUnXSk7XG4gKiBgYGBcbiAqIHdpdGhvdXQgcmVxdWlyaW5nIG1hbnVhbCBzdWJzY3JpcHRpb25zIG9yIGNoYW5nZSBkZXRlY3Rpb24gdHJpZ2dlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWFjdGl2ZUNvbnRlbnRFeGFtcGxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gVXNlIHRoZSBuZXcgQ29udGVudFNlcnZpY2Ugd2l0aCBpbmplY3RcbiAgY29udGVudCA9IGluamVjdChDb250ZW50U2VydmljZSk7XG5cbiAgLy8gQ3JlYXRlIGEgc2NvcGVkIGNvbnRlbnQgaGVscGVyIGZvciB0aGlzIGNvbXBvbmVudFxuICBjb21wb25lbnRDb250ZW50ID0gdGhpcy5jb250ZW50LmZvckNvbXBvbmVudCgnUmVhY3RpdmVDb250ZW50RXhhbXBsZScpO1xuXG4gIC8vIE9ic2VydmFibGUgZm9yIGN1cnJlbnQgbGFuZ3VhZ2VcbiAgY3VycmVudExhbmd1YWdlJDogT2JzZXJ2YWJsZTxMYW5nT3B0aW9uPjtcblxuICAvLyBPYnNlcnZhYmxlIGZvciBidXR0b24gdGV4dFxuICBidXR0b25UZXh0JDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8vIEdsb2JhbCBjb250ZW50IG9ic2VydmFibGVzXG4gIHNhdmVCdXR0b24kOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGNhbmNlbEJ1dHRvbiQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZGVsZXRlQnV0dG9uJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBva0J1dHRvbiQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZGVsZXRlQ29uZmlybWF0aW9uVGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgbG9hZGluZ1RleHQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgLy8gU3RhdGUgZm9yIGNvbmZpcm1hdGlvbiBkaWFsb2dcbiAgc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuXG4gIC8vIEV4YW1wbGUgMTogU2ltcGxlIHJlYWN0aXZlIGNvbnRlbnQgcHJvcHMgZm9yIHZhbC10ZXh0XG4gIHRpdGxlUHJvcHM6IFRleHRNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50S2V5OiAndGl0bGUnLFxuICAgIGNvbnRlbnRDbGFzczogJ1JlYWN0aXZlQ29udGVudEV4YW1wbGUnLFxuICAgIGNvbnRlbnRGYWxsYmFjazogJ0RlZmF1bHQgVGl0bGUnLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc2l6ZTogJ3hsYXJnZScsXG4gICAgYm9sZDogdHJ1ZSxcbiAgfTtcblxuICAvLyBFeGFtcGxlIDI6IFJlYWN0aXZlIGNvbnRlbnQgd2l0aCBpbnRlcnBvbGF0aW9uXG4gIGdyZWV0aW5nUHJvcHM6IFRleHRNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50S2V5OiAnZ3JlZXRpbmcnLFxuICAgIGNvbnRlbnRDbGFzczogJ1JlYWN0aXZlQ29udGVudEV4YW1wbGUnLFxuICAgIGNvbnRlbnRJbnRlcnBvbGF0aW9uOiB7IG5hbWU6ICdEZXZlbG9wZXInLCBjb3VudDogMyB9LFxuICAgIGNvbnRlbnRGYWxsYmFjazogJ0hlbGxvIERldmVsb3BlcicsXG4gICAgY29sb3I6ICdzZWNvbmRhcnknLFxuICAgIHNpemU6ICdsYXJnZScsXG4gICAgYm9sZDogZmFsc2UsXG4gIH07XG5cbiAgLy8gRXhhbXBsZSAzOiBNdWx0aXBsZSBjb250ZW50IGtleXNcbiAgbXVsdGlwbGVDb250ZW50JDogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PjtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gU2V0IHVwIHJlYWN0aXZlIG9ic2VydmFibGVzIHVzaW5nIENvbnRlbnRTZXJ2aWNlXG4gICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UkID0gdGhpcy5jb250ZW50LmN1cnJlbnRMYW5nJDtcblxuICAgIC8vIEV4YW1wbGUgMzogR2V0IG11bHRpcGxlIGNvbnRlbnQga2V5cyByZWFjdGl2ZWx5IC0gdXNpbmcgdGhlIG5ldyBBUElcbiAgICB0aGlzLm11bHRpcGxlQ29udGVudCQgPSB0aGlzLmNvbXBvbmVudENvbnRlbnQuZ2V0TXVsdGlwbGUoWydkZXNjcmlwdGlvbicsICdkeW5hbWljVGV4dCddKTtcblxuICAgIC8vIEJ1dHRvbiB0ZXh0IHJlYWN0aXZlIC0gdXNpbmcgdGhlIG5ldyBzaW1wbGlmaWVkIEFQSSB3aXRoIG9wdGlvbnNcbiAgICB0aGlzLmJ1dHRvblRleHQkID0gdGhpcy5jb21wb25lbnRDb250ZW50LmdldCgnYnV0dG9uVGV4dCcpO1xuXG4gICAgLy8gR2xvYmFsIGNvbnRlbnQgb2JzZXJ2YWJsZXMgdXNpbmcgdW5pZmllZCBmcm9tQ29udGVudCBtZXRob2RcbiAgICB0aGlzLnNhdmVCdXR0b24kID0gdGhpcy5jb250ZW50LmZyb21Db250ZW50KHsga2V5OiAnc2F2ZScgfSk7XG4gICAgdGhpcy5jYW5jZWxCdXR0b24kID0gdGhpcy5jb250ZW50LmZyb21Db250ZW50KHsga2V5OiAnY2FuY2VsJyB9KTtcbiAgICB0aGlzLmRlbGV0ZUJ1dHRvbiQgPSB0aGlzLmNvbnRlbnQuZnJvbUNvbnRlbnQoeyBrZXk6ICdkZWxldGUnIH0pO1xuICAgIHRoaXMub2tCdXR0b24kID0gdGhpcy5jb250ZW50LmZyb21Db250ZW50KHsga2V5OiAnb2snIH0pO1xuICAgIHRoaXMubG9hZGluZ1RleHQkID0gdGhpcy5jb250ZW50LmZyb21Db250ZW50KHsga2V5OiAnbG9hZGluZycgfSk7XG5cbiAgICAvLyBHbG9iYWwgY29udGVudCB3aXRoIGludGVycG9sYXRpb24gdXNpbmcgdW5pZmllZCBtZXRob2RcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvblRleHQkID0gdGhpcy5jb250ZW50LmZyb21Db250ZW50KHtcbiAgICAgIGtleTogJ2RlbGV0ZUNvbmZpcm1hdGlvbicsXG4gICAgICBpbnRlcnBvbGF0aW9uOiB7IGl0ZW1OYW1lOiAnZXN0ZSBlbGVtZW50bycgfSxcbiAgICB9KTtcblxuICAgIC8vIEV4YW1wbGUgb2Ygc3luY2hyb25vdXMgZ2xvYmFsIGNvbnRlbnQgYWNjZXNzXG4gICAgY29uc29sZS5sb2coJ0dsb2JhbCBzYXZlIHRleHQ6JywgdGhpcy5jb250ZW50LmdldFRleHQoJ3NhdmUnKSk7XG4gICAgY29uc29sZS5sb2coJ0dsb2JhbCBjYW5jZWwgdGV4dDonLCB0aGlzLmNvbnRlbnQuZ2V0R2xvYmFsVGV4dCgnY2FuY2VsJykpO1xuXG4gICAgLy8gRXhhbXBsZSBvZiB1c2luZyBuZXcgc2NvcGVkIGhlbHBlciB3aXRoIGludGVycG9sYXRpb25cbiAgICBjb25zdCBncmVldGluZ1dpdGhOZXdBUEkkID0gdGhpcy5jb21wb25lbnRDb250ZW50LmdldCgnZ3JlZXRpbmcnLCB7XG4gICAgICBpbnRlcnBvbGF0aW9uOiB7IG5hbWU6ICdEZXZlbG9wZXInLCBjb3VudDogMyB9LFxuICAgICAgZmFsbGJhY2s6ICdIZWxsbyEnLFxuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKCdOZXcgdW5pZmllZCBBUEkgd29ya3MhJywgZ3JlZXRpbmdXaXRoTmV3QVBJJCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIGJldHdlZW4gU3BhbmlzaCBhbmQgRW5nbGlzaFxuICAgKi9cbiAgdG9nZ2xlTGFuZ3VhZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudExhbmcgPSB0aGlzLmNvbnRlbnQuY3VycmVudExhbmc7XG4gICAgY29uc3QgbmV3TGFuZyA9IGN1cnJlbnRMYW5nID09PSBMYW5nT3B0aW9uLkVTID8gTGFuZ09wdGlvbi5FTiA6IExhbmdPcHRpb24uRVM7XG4gICAgdGhpcy5jb250ZW50LnNldExhbmcobmV3TGFuZyk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBkZWxldGUgY29uZmlybWF0aW9uIGRpYWxvZ1xuICAgKi9cbiAgc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGUgZGVsZXRlIGNvbmZpcm1hdGlvbiBkaWFsb2dcbiAgICovXG4gIGhpZGVEZWxldGVDb25maXJtYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,34 +1,162 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AsyncPipe } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
3
|
import { IonText } from '@ionic/angular/standalone';
|
|
4
|
+
import { of, Subscription } from 'rxjs';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../../services/content.service";
|
|
4
7
|
/**
|
|
5
8
|
* val-text
|
|
6
9
|
*
|
|
7
|
-
*
|
|
10
|
+
* Enhanced text component that supports both static content and reactive content from the language service.
|
|
11
|
+
* The component automatically updates when the language changes if using reactive content.
|
|
8
12
|
*
|
|
9
|
-
* @example
|
|
10
|
-
*
|
|
13
|
+
* @example Static content:
|
|
14
|
+
* ```html
|
|
15
|
+
* <val-text [props]="{
|
|
16
|
+
* content: 'Static text',
|
|
17
|
+
* color: 'primary',
|
|
18
|
+
* size: 'medium',
|
|
19
|
+
* bold: false
|
|
20
|
+
* }"></val-text>
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @example Reactive content:
|
|
24
|
+
* ```html
|
|
25
|
+
* <val-text [props]="{
|
|
26
|
+
* contentKey: 'welcomeMessage',
|
|
27
|
+
* contentClass: 'HomeComponent',
|
|
28
|
+
* contentFallback: 'Welcome!',
|
|
29
|
+
* color: 'primary',
|
|
30
|
+
* size: 'large',
|
|
31
|
+
* bold: true
|
|
32
|
+
* }"></val-text>
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @example Reactive content with interpolation:
|
|
36
|
+
* ```html
|
|
37
|
+
* <val-text [props]="{
|
|
38
|
+
* contentKey: 'greeting',
|
|
39
|
+
* contentClass: 'UserComponent',
|
|
40
|
+
* contentInterpolation: { name: 'John', count: 5 },
|
|
41
|
+
* color: 'secondary',
|
|
42
|
+
* size: 'medium',
|
|
43
|
+
* bold: false
|
|
44
|
+
* }"></val-text>
|
|
45
|
+
* ```
|
|
11
46
|
*
|
|
12
|
-
* @
|
|
47
|
+
* @example Using ContentService helper:
|
|
48
|
+
* ```typescript
|
|
49
|
+
* // In component
|
|
50
|
+
* content = inject(ContentService);
|
|
51
|
+
* componentContent = this.content.forComponent('MyComponent');
|
|
52
|
+
*
|
|
53
|
+
* textProps = {
|
|
54
|
+
* content: this.componentContent.getText('title'), // sync
|
|
55
|
+
* color: 'primary',
|
|
56
|
+
* size: 'large',
|
|
57
|
+
* bold: true
|
|
58
|
+
* };
|
|
59
|
+
* // Or with reactive binding:
|
|
60
|
+
* title$ = this.componentContent.get('title');
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* @input props: TextMetadata - Configuration for the text (content, styling, and reactive content options)
|
|
13
64
|
*/
|
|
14
65
|
export class TextComponent {
|
|
15
|
-
constructor() {
|
|
16
|
-
|
|
17
|
-
|
|
66
|
+
constructor(contentService) {
|
|
67
|
+
this.contentService = contentService;
|
|
68
|
+
this.subscription = new Subscription();
|
|
69
|
+
}
|
|
70
|
+
ngOnInit() {
|
|
71
|
+
this.setupDisplayContent();
|
|
72
|
+
}
|
|
73
|
+
ngOnDestroy() {
|
|
74
|
+
this.subscription.unsubscribe();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Set up the content observable based on the props configuration.
|
|
78
|
+
* Priority: static content > reactive content with interpolation > reactive content
|
|
79
|
+
*/
|
|
80
|
+
setupDisplayContent() {
|
|
81
|
+
if (this.props.content) {
|
|
82
|
+
// Static content takes precedence
|
|
83
|
+
this.displayContent$ = of(this.props.content);
|
|
84
|
+
}
|
|
85
|
+
else if (this.props.contentKey && this.props.contentClass) {
|
|
86
|
+
// Reactive content from language service
|
|
87
|
+
if (this.props.contentInterpolation) {
|
|
88
|
+
// With interpolation
|
|
89
|
+
this.displayContent$ = this.contentService.fromContentWithInterpolation({
|
|
90
|
+
className: this.props.contentClass,
|
|
91
|
+
key: this.props.contentKey,
|
|
92
|
+
fallback: this.props.contentFallback,
|
|
93
|
+
interpolation: this.props.contentInterpolation,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// Simple reactive content
|
|
98
|
+
this.displayContent$ = this.contentService.fromContent({
|
|
99
|
+
className: this.props.contentClass,
|
|
100
|
+
key: this.props.contentKey,
|
|
101
|
+
fallback: this.props.contentFallback,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Fallback to empty string if no valid content configuration
|
|
107
|
+
console.warn('val-text: No valid content configuration provided. Use either "content" for static text or "contentKey" + "contentClass" for reactive content.');
|
|
108
|
+
this.displayContent$ = of(this.props.contentFallback || '');
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextComponent, deps: [{ token: i1.ContentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
112
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TextComponent, isStandalone: true, selector: "val-text", inputs: { props: "props" }, ngImport: i0, template: `
|
|
19
113
|
<ion-text [color]="props.color">
|
|
20
|
-
<p [class]="props.size" [class.bold]="props.bold">{{
|
|
114
|
+
<p [class]="props.size" [class.bold]="props.bold">{{ displayContent$ | async }}</p>
|
|
21
115
|
</ion-text>
|
|
22
|
-
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.small{font-size:.75rem;line-height:1.25rem;font-weight:400}.small.bold{font-size:.75rem;line-height:1.25rem;font-weight:700}.medium{font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.medium{font-size:1rem;line-height:1.5rem}}.medium.bold{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium.bold{font-size:1rem;line-height:1.5rem}}.large{font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.large{font-size:1.125rem;line-height:1.5rem}}.large.bold{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large.bold{font-size:1.125rem;line-height:1.5rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}.xlarge.bold{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge.bold{font-size:1.5rem;line-height:2rem}}\n"], dependencies: [{ kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
|
|
116
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.small{font-size:.75rem;line-height:1.25rem;font-weight:400}.small.bold{font-size:.75rem;line-height:1.25rem;font-weight:700}.medium{font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.medium{font-size:1rem;line-height:1.5rem}}.medium.bold{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium.bold{font-size:1rem;line-height:1.5rem}}.large{font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.large{font-size:1.125rem;line-height:1.5rem}}.large.bold{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large.bold{font-size:1.125rem;line-height:1.5rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}.xlarge.bold{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge.bold{font-size:1.5rem;line-height:2rem}}\n"], dependencies: [{ kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23
117
|
}
|
|
24
118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextComponent, decorators: [{
|
|
25
119
|
type: Component,
|
|
26
|
-
args: [{ selector: 'val-text', standalone: true, imports: [IonText], template: `
|
|
120
|
+
args: [{ selector: 'val-text', standalone: true, imports: [IonText, AsyncPipe], template: `
|
|
27
121
|
<ion-text [color]="props.color">
|
|
28
|
-
<p [class]="props.size" [class.bold]="props.bold">{{
|
|
122
|
+
<p [class]="props.size" [class.bold]="props.bold">{{ displayContent$ | async }}</p>
|
|
29
123
|
</ion-text>
|
|
30
|
-
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.small{font-size:.75rem;line-height:1.25rem;font-weight:400}.small.bold{font-size:.75rem;line-height:1.25rem;font-weight:700}.medium{font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.medium{font-size:1rem;line-height:1.5rem}}.medium.bold{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium.bold{font-size:1rem;line-height:1.5rem}}.large{font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.large{font-size:1.125rem;line-height:1.5rem}}.large.bold{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large.bold{font-size:1.125rem;line-height:1.5rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}.xlarge.bold{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge.bold{font-size:1.5rem;line-height:2rem}}\n"] }]
|
|
31
|
-
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
124
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.small{font-size:.75rem;line-height:1.25rem;font-weight:400}.small.bold{font-size:.75rem;line-height:1.25rem;font-weight:700}.medium{font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.medium{font-size:1rem;line-height:1.5rem}}.medium.bold{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium.bold{font-size:1rem;line-height:1.5rem}}.large{font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.large{font-size:1.125rem;line-height:1.5rem}}.large.bold{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large.bold{font-size:1.125rem;line-height:1.5rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}.xlarge.bold{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge.bold{font-size:1.5rem;line-height:2rem}}\n"] }]
|
|
125
|
+
}], ctorParameters: () => [{ type: i1.ContentService }], propDecorators: { props: [{
|
|
32
126
|
type: Input
|
|
33
127
|
}] } });
|
|
34
|
-
|
|
128
|
+
/**
|
|
129
|
+
* Helper function to create reactive text props from content configuration.
|
|
130
|
+
* This provides a convenient way to create val-text props with reactive content.
|
|
131
|
+
*
|
|
132
|
+
* @param contentConfig - Content configuration
|
|
133
|
+
* @param styleConfig - Optional style configuration
|
|
134
|
+
* @returns Partial TextMetadata with content properties set
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* // In component
|
|
139
|
+
* titleProps: TextMetadata = {
|
|
140
|
+
* ...createTextProps({
|
|
141
|
+
* contentKey: 'title',
|
|
142
|
+
* contentClass: 'HeaderComponent'
|
|
143
|
+
* }, {
|
|
144
|
+
* color: 'primary',
|
|
145
|
+
* size: 'large',
|
|
146
|
+
* bold: true
|
|
147
|
+
* })
|
|
148
|
+
* };
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
export function createTextProps(contentConfig, styleConfig = {}) {
|
|
152
|
+
return {
|
|
153
|
+
contentKey: contentConfig.contentKey,
|
|
154
|
+
contentClass: contentConfig.contentClass,
|
|
155
|
+
contentFallback: contentConfig.contentFallback,
|
|
156
|
+
contentInterpolation: contentConfig.contentInterpolation,
|
|
157
|
+
color: styleConfig.color || 'dark',
|
|
158
|
+
size: styleConfig.size || 'medium',
|
|
159
|
+
bold: styleConfig.bold || false,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQWdCcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlERztBQUNILE1BQU0sT0FBTyxhQUFhO0lBOEJ4QixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFGMUMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRVcsQ0FBQztJQUV0RCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLGtDQUFrQztZQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUQseUNBQXlDO1lBQ3pDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNwQyxxQkFBcUI7Z0JBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDdEUsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtvQkFDbEMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtvQkFDMUIsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZTtvQkFDcEMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CO2lCQUMvQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sMEJBQTBCO2dCQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO29CQUNyRCxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO29CQUNsQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO29CQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlO2lCQUNyQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTiw2REFBNkQ7WUFDN0QsT0FBTyxDQUFDLElBQUksQ0FDVixnSkFBZ0osQ0FDakosQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDOytHQXpFVSxhQUFhO21HQUFiLGFBQWEsZ0dBbEVkOzs7O0dBSVQsdzBHQUxTLE9BQU8sMkVBQUUsU0FBUzs7NEZBbUVqQixhQUFhO2tCQXRFekIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxZQUNuQjs7OztHQUlULG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNO21GQWdGL0MsS0FBSztzQkFESixLQUFLOztBQXlEUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzdCLGFBQWdDLEVBQ2hDLGNBQXNFLEVBQUU7SUFFeEUsT0FBTztRQUNMLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVTtRQUNwQyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVk7UUFDeEMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxlQUFlO1FBQzlDLG9CQUFvQixFQUFFLGFBQWEsQ0FBQyxvQkFBb0I7UUFDeEQsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLElBQUksTUFBTTtRQUNsQyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksSUFBSSxRQUFRO1FBQ2xDLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxJQUFJLEtBQUs7S0FDaEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25UZXh0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBUZXh0Q29udGVudENvbmZpZywgVGV4dE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC10ZXh0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvblRleHQsIEFzeW5jUGlwZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi10ZXh0IFtjb2xvcl09XCJwcm9wcy5jb2xvclwiPlxuICAgICAgPHAgW2NsYXNzXT1cInByb3BzLnNpemVcIiBbY2xhc3MuYm9sZF09XCJwcm9wcy5ib2xkXCI+e3sgZGlzcGxheUNvbnRlbnQkIHwgYXN5bmMgfX08L3A+XG4gICAgPC9pb24tdGV4dD5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG4vKipcbiAqIHZhbC10ZXh0XG4gKlxuICogRW5oYW5jZWQgdGV4dCBjb21wb25lbnQgdGhhdCBzdXBwb3J0cyBib3RoIHN0YXRpYyBjb250ZW50IGFuZCByZWFjdGl2ZSBjb250ZW50IGZyb20gdGhlIGxhbmd1YWdlIHNlcnZpY2UuXG4gKiBUaGUgY29tcG9uZW50IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB3aGVuIHRoZSBsYW5ndWFnZSBjaGFuZ2VzIGlmIHVzaW5nIHJlYWN0aXZlIGNvbnRlbnQuXG4gKlxuICogQGV4YW1wbGUgU3RhdGljIGNvbnRlbnQ6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXRleHQgW3Byb3BzXT1cIntcbiAqICAgY29udGVudDogJ1N0YXRpYyB0ZXh0JyxcbiAqICAgY29sb3I6ICdwcmltYXJ5JyxcbiAqICAgc2l6ZTogJ21lZGl1bScsXG4gKiAgIGJvbGQ6IGZhbHNlXG4gKiB9XCI+PC92YWwtdGV4dD5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFJlYWN0aXZlIGNvbnRlbnQ6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXRleHQgW3Byb3BzXT1cIntcbiAqICAgY29udGVudEtleTogJ3dlbGNvbWVNZXNzYWdlJyxcbiAqICAgY29udGVudENsYXNzOiAnSG9tZUNvbXBvbmVudCcsXG4gKiAgIGNvbnRlbnRGYWxsYmFjazogJ1dlbGNvbWUhJyxcbiAqICAgY29sb3I6ICdwcmltYXJ5JyxcbiAqICAgc2l6ZTogJ2xhcmdlJyxcbiAqICAgYm9sZDogdHJ1ZVxuICogfVwiPjwvdmFsLXRleHQ+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBSZWFjdGl2ZSBjb250ZW50IHdpdGggaW50ZXJwb2xhdGlvbjpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtdGV4dCBbcHJvcHNdPVwie1xuICogICBjb250ZW50S2V5OiAnZ3JlZXRpbmcnLFxuICogICBjb250ZW50Q2xhc3M6ICdVc2VyQ29tcG9uZW50JyxcbiAqICAgY29udGVudEludGVycG9sYXRpb246IHsgbmFtZTogJ0pvaG4nLCBjb3VudDogNSB9LFxuICogICBjb2xvcjogJ3NlY29uZGFyeScsXG4gKiAgIHNpemU6ICdtZWRpdW0nLFxuICogICBib2xkOiBmYWxzZVxuICogfVwiPjwvdmFsLXRleHQ+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBVc2luZyBDb250ZW50U2VydmljZSBoZWxwZXI6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbiBjb21wb25lbnRcbiAqIGNvbnRlbnQgPSBpbmplY3QoQ29udGVudFNlcnZpY2UpO1xuICogY29tcG9uZW50Q29udGVudCA9IHRoaXMuY29udGVudC5mb3JDb21wb25lbnQoJ015Q29tcG9uZW50Jyk7XG4gKlxuICogdGV4dFByb3BzID0ge1xuICogICBjb250ZW50OiB0aGlzLmNvbXBvbmVudENvbnRlbnQuZ2V0VGV4dCgndGl0bGUnKSwgLy8gc3luY1xuICogICBjb2xvcjogJ3ByaW1hcnknLFxuICogICBzaXplOiAnbGFyZ2UnLFxuICogICBib2xkOiB0cnVlXG4gKiB9O1xuICogLy8gT3Igd2l0aCByZWFjdGl2ZSBiaW5kaW5nOlxuICogdGl0bGUkID0gdGhpcy5jb21wb25lbnRDb250ZW50LmdldCgndGl0bGUnKTtcbiAqIGBgYFxuICpcbiAqIEBpbnB1dCBwcm9wczogVGV4dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHRleHQgKGNvbnRlbnQsIHN0eWxpbmcsIGFuZCByZWFjdGl2ZSBjb250ZW50IG9wdGlvbnMpXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGV4dCBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHR5cGUge1RleHRNZXRhZGF0YX1cbiAgICpcbiAgICogRm9yIHN0YXRpYyBjb250ZW50OlxuICAgKiBAcHJvcGVydHkgY29udGVudCAtIFRoZSB0ZXh0IHRvIGRpc3BsYXkgKHRha2VzIHByZWNlZGVuY2Ugb3ZlciByZWFjdGl2ZSBjb250ZW50KVxuICAgKlxuICAgKiBGb3IgcmVhY3RpdmUgY29udGVudDpcbiAgICogQHByb3BlcnR5IGNvbnRlbnRLZXkgLSBUaGUgY29udGVudCBrZXkgdG8gcmV0cmlldmUgZnJvbSBsYW5ndWFnZSBzZXJ2aWNlXG4gICAqIEBwcm9wZXJ0eSBjb250ZW50Q2xhc3MgLSBUaGUgY29tcG9uZW50IGNsYXNzIG5hbWUgZm9yIGNvbnRlbnQgbG9va3VwXG4gICAqIEBwcm9wZXJ0eSBjb250ZW50RmFsbGJhY2sgLSBPcHRpb25hbCBmYWxsYmFjayB0ZXh0IGlmIGNvbnRlbnQgaXMgbm90IGZvdW5kXG4gICAqIEBwcm9wZXJ0eSBjb250ZW50SW50ZXJwb2xhdGlvbiAtIE9wdGlvbmFsIHZhbHVlcyB0byBpbnRlcnBvbGF0ZSBpbnRvIGNvbnRlbnRcbiAgICpcbiAgICogRm9yIHN0eWxpbmc6XG4gICAqIEBwcm9wZXJ0eSBjb2xvciAtIFRoZSB0ZXh0IGNvbG9yIChJb25pYyBjb2xvciBzdHJpbmcpXG4gICAqIEBwcm9wZXJ0eSBzaXplIC0gVGhlIHRleHQgc2l6ZSAoJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICd4bGFyZ2UnKVxuICAgKiBAcHJvcGVydHkgYm9sZCAtIFdoZXRoZXIgdGhlIHRleHQgaXMgYm9sZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHJvcHM6IFRleHRNZXRhZGF0YTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0aGF0IHByb3ZpZGVzIHRoZSBjb250ZW50IHRvIGRpc3BsYXkuXG4gICAqIFRoaXMgd2lsbCBiZSBlaXRoZXIgc3RhdGljIGNvbnRlbnQgb3IgcmVhY3RpdmUgY29udGVudCBmcm9tIHRoZSBsYW5ndWFnZSBzZXJ2aWNlLlxuICAgKi9cbiAgZGlzcGxheUNvbnRlbnQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXR1cERpc3BsYXlDb250ZW50KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCB0aGUgY29udGVudCBvYnNlcnZhYmxlIGJhc2VkIG9uIHRoZSBwcm9wcyBjb25maWd1cmF0aW9uLlxuICAgKiBQcmlvcml0eTogc3RhdGljIGNvbnRlbnQgPiByZWFjdGl2ZSBjb250ZW50IHdpdGggaW50ZXJwb2xhdGlvbiA+IHJlYWN0aXZlIGNvbnRlbnRcbiAgICovXG4gIHByaXZhdGUgc2V0dXBEaXNwbGF5Q29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5jb250ZW50KSB7XG4gICAgICAvLyBTdGF0aWMgY29udGVudCB0YWtlcyBwcmVjZWRlbmNlXG4gICAgICB0aGlzLmRpc3BsYXlDb250ZW50JCA9IG9mKHRoaXMucHJvcHMuY29udGVudCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmNvbnRlbnRLZXkgJiYgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MpIHtcbiAgICAgIC8vIFJlYWN0aXZlIGNvbnRlbnQgZnJvbSBsYW5ndWFnZSBzZXJ2aWNlXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb250ZW50SW50ZXJwb2xhdGlvbikge1xuICAgICAgICAvLyBXaXRoIGludGVycG9sYXRpb25cbiAgICAgICAgdGhpcy5kaXNwbGF5Q29udGVudCQgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmZyb21Db250ZW50V2l0aEludGVycG9sYXRpb24oe1xuICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsXG4gICAgICAgICAga2V5OiB0aGlzLnByb3BzLmNvbnRlbnRLZXksXG4gICAgICAgICAgZmFsbGJhY2s6IHRoaXMucHJvcHMuY29udGVudEZhbGxiYWNrLFxuICAgICAgICAgIGludGVycG9sYXRpb246IHRoaXMucHJvcHMuY29udGVudEludGVycG9sYXRpb24sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2ltcGxlIHJlYWN0aXZlIGNvbnRlbnRcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29udGVudCQgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmZyb21Db250ZW50KHtcbiAgICAgICAgICBjbGFzc05hbWU6IHRoaXMucHJvcHMuY29udGVudENsYXNzLFxuICAgICAgICAgIGtleTogdGhpcy5wcm9wcy5jb250ZW50S2V5LFxuICAgICAgICAgIGZhbGxiYWNrOiB0aGlzLnByb3BzLmNvbnRlbnRGYWxsYmFjayxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZhbGxiYWNrIHRvIGVtcHR5IHN0cmluZyBpZiBubyB2YWxpZCBjb250ZW50IGNvbmZpZ3VyYXRpb25cbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ3ZhbC10ZXh0OiBObyB2YWxpZCBjb250ZW50IGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQuIFVzZSBlaXRoZXIgXCJjb250ZW50XCIgZm9yIHN0YXRpYyB0ZXh0IG9yIFwiY29udGVudEtleVwiICsgXCJjb250ZW50Q2xhc3NcIiBmb3IgcmVhY3RpdmUgY29udGVudC4nXG4gICAgICApO1xuICAgICAgdGhpcy5kaXNwbGF5Q29udGVudCQgPSBvZih0aGlzLnByb3BzLmNvbnRlbnRGYWxsYmFjayB8fCAnJyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSByZWFjdGl2ZSB0ZXh0IHByb3BzIGZyb20gY29udGVudCBjb25maWd1cmF0aW9uLlxuICogVGhpcyBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IHRvIGNyZWF0ZSB2YWwtdGV4dCBwcm9wcyB3aXRoIHJlYWN0aXZlIGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnRDb25maWcgLSBDb250ZW50IGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBzdHlsZUNvbmZpZyAtIE9wdGlvbmFsIHN0eWxlIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIFBhcnRpYWwgVGV4dE1ldGFkYXRhIHdpdGggY29udGVudCBwcm9wZXJ0aWVzIHNldFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbiBjb21wb25lbnRcbiAqIHRpdGxlUHJvcHM6IFRleHRNZXRhZGF0YSA9IHtcbiAqICAgLi4uY3JlYXRlVGV4dFByb3BzKHtcbiAqICAgICBjb250ZW50S2V5OiAndGl0bGUnLFxuICogICAgIGNvbnRlbnRDbGFzczogJ0hlYWRlckNvbXBvbmVudCdcbiAqICAgfSwge1xuICogICAgIGNvbG9yOiAncHJpbWFyeScsXG4gKiAgICAgc2l6ZTogJ2xhcmdlJyxcbiAqICAgICBib2xkOiB0cnVlXG4gKiAgIH0pXG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXh0UHJvcHMoXG4gIGNvbnRlbnRDb25maWc6IFRleHRDb250ZW50Q29uZmlnLFxuICBzdHlsZUNvbmZpZzogUGFydGlhbDxQaWNrPFRleHRNZXRhZGF0YSwgJ2NvbG9yJyB8ICdzaXplJyB8ICdib2xkJz4+ID0ge31cbik6IFBhcnRpYWw8VGV4dE1ldGFkYXRhPiB7XG4gIHJldHVybiB7XG4gICAgY29udGVudEtleTogY29udGVudENvbmZpZy5jb250ZW50S2V5LFxuICAgIGNvbnRlbnRDbGFzczogY29udGVudENvbmZpZy5jb250ZW50Q2xhc3MsXG4gICAgY29udGVudEZhbGxiYWNrOiBjb250ZW50Q29uZmlnLmNvbnRlbnRGYWxsYmFjayxcbiAgICBjb250ZW50SW50ZXJwb2xhdGlvbjogY29udGVudENvbmZpZy5jb250ZW50SW50ZXJwb2xhdGlvbixcbiAgICBjb2xvcjogc3R5bGVDb25maWcuY29sb3IgfHwgJ2RhcmsnLFxuICAgIHNpemU6IHN0eWxlQ29uZmlnLnNpemUgfHwgJ21lZGl1bScsXG4gICAgYm9sZDogc3R5bGVDb25maWcuYm9sZCB8fCBmYWxzZSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL3RleHQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuXG4vKipcbiAqIFByb3BzIGZvciB2YWwtdGV4dCBjb21wb25lbnQuXG4gKlxuICogVGhlIGNvbXBvbmVudCBzdXBwb3J0cyBib3RoIHN0YXRpYyBjb250ZW50IGFuZCByZWFjdGl2ZSBjb250ZW50IGZyb20gdGhlIGxhbmd1YWdlIHNlcnZpY2UuXG4gKiBVc2UgZWl0aGVyIGBjb250ZW50YCBmb3Igc3RhdGljIHRleHQgb3IgYGNvbnRlbnRLZXlgICsgYGNvbnRlbnRDbGFzc2AgZm9yIHJlYWN0aXZlIHRleHQuXG4gKlxuICogQHByb3BlcnR5IGNvbnRlbnQgLSBTdGF0aWMgdGV4dCB0byBkaXNwbGF5ICh0YWtlcyBwcmVjZWRlbmNlIG92ZXIgY29udGVudEtleSlcbiAqIEBwcm9wZXJ0eSBjb250ZW50S2V5IC0gS2V5IGZvciBkeW5hbWljIGNvbnRlbnQgZnJvbSBsYW5ndWFnZSBzZXJ2aWNlXG4gKiBAcHJvcGVydHkgY29udGVudENsYXNzIC0gQ29tcG9uZW50IGNsYXNzIG5hbWUgZm9yIGNvbnRlbnQgbG9va3VwIChyZXF1aXJlZCB3aXRoIGNvbnRlbnRLZXkpXG4gKiBAcHJvcGVydHkgY29udGVudEZhbGxiYWNrIC0gRmFsbGJhY2sgdGV4dCBpZiBjb250ZW50S2V5IGlzIG5vdCBmb3VuZFxuICogQHByb3BlcnR5IGNvbnRlbnRJbnRlcnBvbGF0aW9uIC0gVmFsdWVzIHRvIGludGVycG9sYXRlIGludG8gdGhlIGNvbnRlbnQgc3RyaW5nXG4gKiBAcHJvcGVydHkgY29sb3IgLSBUaGUgdGV4dCBjb2xvciAoSW9uaWMgY29sb3Igc3RyaW5nKVxuICogQHByb3BlcnR5IHNpemUgLSBUaGUgdGV4dCBzaXplICgnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJ3hsYXJnZScpXG4gKiBAcHJvcGVydHkgYm9sZCAtIFdoZXRoZXIgdGhlIHRleHQgaXMgYm9sZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRleHRNZXRhZGF0YSB7XG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJztcbiAgY29sb3I6IENvbG9yO1xuICBjb250ZW50Pzogc3RyaW5nO1xuICBib2xkOiBib29sZWFuO1xuXG4gIC8vIFJlYWN0aXZlIGNvbnRlbnQgcHJvcGVydGllc1xuICBjb250ZW50S2V5Pzogc3RyaW5nO1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XG4gIGNvbnRlbnRGYWxsYmFjaz86IHN0cmluZztcbiAgY29udGVudEludGVycG9sYXRpb24/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHJlYWN0aXZlIGNvbnRlbnQgaW4gdmFsLXRleHQgY29tcG9uZW50LlxuICogVXNlIHRoaXMgaW50ZXJmYWNlIHdoZW4geW91IG9ubHkgbmVlZCB0byBzcGVjaWZ5IGNvbnRlbnQtcmVsYXRlZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDb250ZW50Q29uZmlnIHtcbiAgY29udGVudEtleTogc3RyaW5nO1xuICBjb250ZW50Q2xhc3M6IHN0cmluZztcbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xuICBjb250ZW50SW50ZXJwb2xhdGlvbj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj47XG59XG4iXX0=
|