valtech-components 2.0.412 → 2.0.414

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.
@@ -1,10 +1,10 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
3
+ import { IonText } from '@ionic/angular/standalone';
3
4
  import { of } from 'rxjs';
4
5
  import { LangService } from '../../../services/lang-provider/lang-provider.service';
5
6
  import { BoxComponent } from '../../atoms/box/box.component';
6
7
  import { HrefComponent } from '../../atoms/href/href.component';
7
- import { TextComponent } from '../../atoms/text/text.component';
8
8
  import { ButtonGroupComponent } from '../button-group/button-group.component';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "@angular/common";
@@ -33,6 +33,8 @@ import * as i1 from "@angular/common";
33
33
  export class PrompterComponent {
34
34
  constructor() {
35
35
  this.langService = inject(LangService);
36
+ /** Observable for reactive content - follows val-text/val-button pattern */
37
+ this.displayContent$ = of('');
36
38
  this.onClick = new EventEmitter();
37
39
  }
38
40
  ngOnInit() {
@@ -43,6 +45,9 @@ export class PrompterComponent {
43
45
  * Follows the same pattern as val-text and val-button for consistency.
44
46
  */
45
47
  setupContent() {
48
+ if (!this.props) {
49
+ return;
50
+ }
46
51
  if (this.props.contentClass && this.props.contentKey) {
47
52
  // Reactive content - Observable connected to currentLang$
48
53
  this.displayContent$ = this.langService.getContent(this.props.contentClass, this.props.contentKey, this.props.content);
@@ -57,81 +62,75 @@ export class PrompterComponent {
57
62
  }
58
63
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PrompterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
59
64
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PrompterComponent, isStandalone: true, selector: "val-prompter", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
60
- <val-box
61
- class="teleprompter-container"
62
- [props]="{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false, padding: props.padding }"
63
- (onClick)="clickHandler()"
64
- >
65
- <div class="container" [class.teleprompter-content]="props.teleprompter" body>
66
- <div>
67
- <val-text
68
- [props]="{
69
- content: displayContent$ | async,
70
- color: '',
71
- bold: true,
72
- size: props.size,
73
- }"
74
- ></val-text>
75
- </div>
76
- @if (props.buttons || props.hrefs) {
77
- <div class="actions-container">
78
- <val-button-group
79
- class="buttons-container"
80
- [props]="{ buttons: props.buttons, position: 'right', columned: false }"
81
- (onClick)="clickHandler($event)"
82
- ></val-button-group>
83
- <val-href
84
- class="link"
85
- *ngFor="let l of props.hrefs"
86
- [props]="l"
87
- (onClick)="clickHandler($event)"
88
- ></val-href>
65
+ @if (props) {
66
+ <val-box
67
+ class="teleprompter-container"
68
+ [props]="{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false, padding: props.padding }"
69
+ (onClick)="clickHandler()"
70
+ >
71
+ <div class="container" [class.teleprompter-content]="props.teleprompter" body>
72
+ <div>
73
+ <ion-text>
74
+ <p [class]="props.size" class="bold">{{ displayContent$ | async }}</p>
75
+ </ion-text>
89
76
  </div>
90
- }
91
- </div>
92
- </val-box>
93
- `, isInline: true, styles: ["@charset \"UTF-8\";: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;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@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)}.container{display:flex;align-items:center;justify-content:space-between;flex-direction:column}@media (min-width: 768px){.container{flex-direction:row}}.teleprompter-container{overflow:hidden;width:100%}.teleprompter-content{white-space:nowrap;animation:scroll-left 15s linear infinite}@keyframes scroll-left{0%{transform:translate(100%)}to{transform:translate(-100%)}}.link{margin:0 .5rem;width:max-content}.actions-container{display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: BoxComponent, selector: "val-box", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: HrefComponent, selector: "val-href", inputs: ["props"], outputs: ["onClick"] }] }); }
77
+ @if (props.buttons || props.hrefs) {
78
+ <div class="actions-container">
79
+ <val-button-group
80
+ class="buttons-container"
81
+ [props]="{ buttons: props.buttons, position: 'right', columned: false }"
82
+ (onClick)="clickHandler($event)"
83
+ ></val-button-group>
84
+ <val-href
85
+ class="link"
86
+ *ngFor="let l of props.hrefs"
87
+ [props]="l"
88
+ (onClick)="clickHandler($event)"
89
+ ></val-href>
90
+ </div>
91
+ }
92
+ </div>
93
+ </val-box>
94
+ }
95
+ `, isInline: true, styles: ["@charset \"UTF-8\";: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;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@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)}.container{display:flex;align-items:center;justify-content:space-between;flex-direction:column}@media (min-width: 768px){.container{flex-direction:row}}.teleprompter-container{overflow:hidden;width:100%}.teleprompter-content{white-space:nowrap;animation:scroll-left 15s linear infinite}@keyframes scroll-left{0%{transform:translate(100%)}to{transform:translate(-100%)}}.link{margin:0 .5rem;width:max-content}.actions-container{display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: BoxComponent, selector: "val-box", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: HrefComponent, selector: "val-href", inputs: ["props"], outputs: ["onClick"] }] }); }
94
96
  }
95
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PrompterComponent, decorators: [{
96
98
  type: Component,
97
- args: [{ selector: 'val-prompter', standalone: true, imports: [CommonModule, BoxComponent, ButtonGroupComponent, TextComponent, HrefComponent], template: `
98
- <val-box
99
- class="teleprompter-container"
100
- [props]="{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false, padding: props.padding }"
101
- (onClick)="clickHandler()"
102
- >
103
- <div class="container" [class.teleprompter-content]="props.teleprompter" body>
104
- <div>
105
- <val-text
106
- [props]="{
107
- content: displayContent$ | async,
108
- color: '',
109
- bold: true,
110
- size: props.size,
111
- }"
112
- ></val-text>
113
- </div>
114
- @if (props.buttons || props.hrefs) {
115
- <div class="actions-container">
116
- <val-button-group
117
- class="buttons-container"
118
- [props]="{ buttons: props.buttons, position: 'right', columned: false }"
119
- (onClick)="clickHandler($event)"
120
- ></val-button-group>
121
- <val-href
122
- class="link"
123
- *ngFor="let l of props.hrefs"
124
- [props]="l"
125
- (onClick)="clickHandler($event)"
126
- ></val-href>
99
+ args: [{ selector: 'val-prompter', standalone: true, imports: [CommonModule, IonText, BoxComponent, ButtonGroupComponent, HrefComponent], template: `
100
+ @if (props) {
101
+ <val-box
102
+ class="teleprompter-container"
103
+ [props]="{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false, padding: props.padding }"
104
+ (onClick)="clickHandler()"
105
+ >
106
+ <div class="container" [class.teleprompter-content]="props.teleprompter" body>
107
+ <div>
108
+ <ion-text>
109
+ <p [class]="props.size" class="bold">{{ displayContent$ | async }}</p>
110
+ </ion-text>
127
111
  </div>
128
- }
129
- </div>
130
- </val-box>
112
+ @if (props.buttons || props.hrefs) {
113
+ <div class="actions-container">
114
+ <val-button-group
115
+ class="buttons-container"
116
+ [props]="{ buttons: props.buttons, position: 'right', columned: false }"
117
+ (onClick)="clickHandler($event)"
118
+ ></val-button-group>
119
+ <val-href
120
+ class="link"
121
+ *ngFor="let l of props.hrefs"
122
+ [props]="l"
123
+ (onClick)="clickHandler($event)"
124
+ ></val-href>
125
+ </div>
126
+ }
127
+ </div>
128
+ </val-box>
129
+ }
131
130
  `, styles: ["@charset \"UTF-8\";: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;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@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)}.container{display:flex;align-items:center;justify-content:space-between;flex-direction:column}@media (min-width: 768px){.container{flex-direction:row}}.teleprompter-container{overflow:hidden;width:100%}.teleprompter-content{white-space:nowrap;animation:scroll-left 15s linear infinite}@keyframes scroll-left{0%{transform:translate(100%)}to{transform:translate(-100%)}}.link{margin:0 .5rem;width:max-content}.actions-container{display:flex;align-items:center}\n"] }]
132
131
  }], propDecorators: { props: [{
133
132
  type: Input
134
133
  }], onClick: [{
135
134
  type: Output
136
135
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wcm9tcHRlci9wcm9tcHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7QUE0QzlFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBL0Q5QjtRQWdFVSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVkxQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQTJCdEM7SUF6QkMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssWUFBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckQsMERBQTBEO1lBQzFELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ25CLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLHVDQUF1QztZQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQzsrR0F2Q1UsaUJBQWlCO21HQUFqQixpQkFBaUIscUlBM0RsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDVCw2aUdBbkNTLFlBQVksaU5BQUUsWUFBWSw2RkFBRSxvQkFBb0Isc0dBQUUsYUFBYSx3RUFBRSxhQUFhOzs0RkE0RDdFLGlCQUFpQjtrQkEvRDdCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxZQUMvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDVDs4QkFtQ0QsS0FBSztzQkFESixLQUFLO2dCQUlOLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2JveC9ib3guY29tcG9uZW50JztcbmltcG9ydCB7IEhyZWZDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9ocmVmL2hyZWYuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uLWdyb3VwL2J1dHRvbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvbXB0ZXJNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcHJvbXB0ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCb3hDb21wb25lbnQsIEJ1dHRvbkdyb3VwQ29tcG9uZW50LCBUZXh0Q29tcG9uZW50LCBIcmVmQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmFsLWJveFxuICAgICAgY2xhc3M9XCJ0ZWxlcHJvbXB0ZXItY29udGFpbmVyXCJcbiAgICAgIFtwcm9wc109XCJ7IGljb246ICcnLCBib3JkZXJlZDogcHJvcHMuYm9yZGVyZWQsIGNvbG9yOiBwcm9wcy5jb2xvciwgbGVmdEJvcmRlcjogZmFsc2UsIHBhZGRpbmc6IHByb3BzLnBhZGRpbmcgfVwiXG4gICAgICAob25DbGljayk9XCJjbGlja0hhbmRsZXIoKVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIFtjbGFzcy50ZWxlcHJvbXB0ZXItY29udGVudF09XCJwcm9wcy50ZWxlcHJvbXB0ZXJcIiBib2R5PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogZGlzcGxheUNvbnRlbnQkIHwgYXN5bmMsXG4gICAgICAgICAgICAgIGNvbG9yOiAnJyxcbiAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgc2l6ZTogcHJvcHMuc2l6ZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID48L3ZhbC10ZXh0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChwcm9wcy5idXR0b25zIHx8IHByb3BzLmhyZWZzKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvbi1ncm91cFxuICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cInsgYnV0dG9uczogcHJvcHMuYnV0dG9ucywgcG9zaXRpb246ICdyaWdodCcsIGNvbHVtbmVkOiBmYWxzZSB9XCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgPjwvdmFsLWJ1dHRvbi1ncm91cD5cbiAgICAgICAgICAgIDx2YWwtaHJlZlxuICAgICAgICAgICAgICBjbGFzcz1cImxpbmtcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbCBvZiBwcm9wcy5ocmVmc1wiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJsXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgPjwvdmFsLWhyZWY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvdmFsLWJveD5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvbXB0ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1wcm9tcHRlclxuICpcbiAqIERpc3BsYXlzIGEgcHJvbXB0L2luZm8gYm94IHdpdGggdGV4dCwgYWN0aW9ucyAoYnV0dG9ucy9saW5rcyksIGFuZCBjdXN0b20gc3R5bGVzLlxuICogU3VwcG9ydHMgcmVhY3RpdmUgaTE4biBjb250ZW50IHZpYSBjb250ZW50Q2xhc3MgYW5kIGNvbnRlbnRLZXkgcHJvcHMuXG4gKlxuICogQGV4YW1wbGUgU3RhdGljIGNvbnRlbnQ6XG4gKiA8dmFsLXByb21wdGVyIFtwcm9wc109XCJ7IGNvbnRlbnQ6ICdNZXNzYWdlJywgYnV0dG9uczogWy4uLl0sIGNvbG9yOiAncHJpbWFyeScsIHNpemU6ICdtZWRpdW0nIH1cIj48L3ZhbC1wcm9tcHRlcj5cbiAqXG4gKiBAZXhhbXBsZSBSZWFjdGl2ZSBpMThuIGNvbnRlbnQ6XG4gKiA8dmFsLXByb21wdGVyIFtwcm9wc109XCJ7XG4gKiAgIGNvbnRlbnRDbGFzczogJ2hvbWVQYWdlJyxcbiAqICAgY29udGVudEtleTogJ2Nvb2tpZU1lc3NhZ2UnLFxuICogICBjb250ZW50OiAnRmFsbGJhY2sgbWVzc2FnZScsXG4gKiAgIGJ1dHRvbnM6IFsuLi5dLFxuICogICBjb2xvcjogJ3ByaW1hcnknLFxuICogICBzaXplOiAnbWVkaXVtJ1xuICogfVwiPjwvdmFsLXByb21wdGVyPlxuICpcbiAqIEBpbnB1dCBwcm9wczogUHJvbXB0ZXJNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBwcm9tcHRlciAoY29udGVudCwgYnV0dG9ucywgaHJlZnMsIGNvbG9yLCBzaXplLCBldGMuKVxuICogQG91dHB1dCBvbkNsaWNrIC0gRW1pdHMgd2hlbiBhbiBhY3Rpb24gaXMgY2xpY2tlZFxuICovXG5leHBvcnQgY2xhc3MgUHJvbXB0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGxhbmdTZXJ2aWNlID0gaW5qZWN0KExhbmdTZXJ2aWNlKTtcblxuICAvKiogT2JzZXJ2YWJsZSBmb3IgcmVhY3RpdmUgY29udGVudCAtIGZvbGxvd3MgdmFsLXRleHQvdmFsLWJ1dHRvbiBwYXR0ZXJuICovXG4gIGRpc3BsYXlDb250ZW50JDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBQcm9tcHRlciBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHByb3BzOiBQcm9tcHRlck1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXR1cENvbnRlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgY29udGVudCBPYnNlcnZhYmxlLlxuICAgKiBGb2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4gYXMgdmFsLXRleHQgYW5kIHZhbC1idXR0b24gZm9yIGNvbnNpc3RlbmN5LlxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cENvbnRlbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuY29udGVudENsYXNzICYmIHRoaXMucHJvcHMuY29udGVudEtleSkge1xuICAgICAgLy8gUmVhY3RpdmUgY29udGVudCAtIE9ic2VydmFibGUgY29ubmVjdGVkIHRvIGN1cnJlbnRMYW5nJFxuICAgICAgdGhpcy5kaXNwbGF5Q29udGVudCQgPSB0aGlzLmxhbmdTZXJ2aWNlLmdldENvbnRlbnQoXG4gICAgICAgIHRoaXMucHJvcHMuY29udGVudENsYXNzLFxuICAgICAgICB0aGlzLnByb3BzLmNvbnRlbnRLZXksXG4gICAgICAgIHRoaXMucHJvcHMuY29udGVudFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RhdGljIGNvbnRlbnQgd3JhcHBlZCBpbiBPYnNlcnZhYmxlXG4gICAgICB0aGlzLmRpc3BsYXlDb250ZW50JCA9IG9mKHRoaXMucHJvcHMuY29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQodG9rZW4pO1xuICB9XG59XG4iXX0=
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wcm9tcHRlci9wcm9tcHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7QUF5QzlFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBNUQ5QjtRQTZEVSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxQyw0RUFBNEU7UUFDNUUsb0JBQWUsR0FBdUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBUzdDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBOEJ0QztJQTVCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckQsMERBQTBEO1lBQzFELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ25CLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLHVDQUF1QztZQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQzsrR0ExQ1UsaUJBQWlCO21HQUFqQixpQkFBaUIscUlBeERsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCw2aUdBaENTLFlBQVksaU5BQUUsT0FBTyxnRkFBRSxZQUFZLDZGQUFFLG9CQUFvQixzR0FBRSxhQUFhOzs0RkF5RHZFLGlCQUFpQjtrQkE1RDdCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLGFBQWEsQ0FBQyxZQUN6RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVDs4QkFtQ0QsS0FBSztzQkFESixLQUFLO2dCQUlOLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvblRleHQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2JveC9ib3guY29tcG9uZW50JztcbmltcG9ydCB7IEhyZWZDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9ocmVmL2hyZWYuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uLWdyb3VwL2J1dHRvbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvbXB0ZXJNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcHJvbXB0ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25UZXh0LCBCb3hDb21wb25lbnQsIEJ1dHRvbkdyb3VwQ29tcG9uZW50LCBIcmVmQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHByb3BzKSB7XG4gICAgICA8dmFsLWJveFxuICAgICAgICBjbGFzcz1cInRlbGVwcm9tcHRlci1jb250YWluZXJcIlxuICAgICAgICBbcHJvcHNdPVwieyBpY29uOiAnJywgYm9yZGVyZWQ6IHByb3BzLmJvcmRlcmVkLCBjb2xvcjogcHJvcHMuY29sb3IsIGxlZnRCb3JkZXI6IGZhbHNlLCBwYWRkaW5nOiBwcm9wcy5wYWRkaW5nIH1cIlxuICAgICAgICAob25DbGljayk9XCJjbGlja0hhbmRsZXIoKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBbY2xhc3MudGVsZXByb21wdGVyLWNvbnRlbnRdPVwicHJvcHMudGVsZXByb21wdGVyXCIgYm9keT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgICAgICA8cCBbY2xhc3NdPVwicHJvcHMuc2l6ZVwiIGNsYXNzPVwiYm9sZFwiPnt7IGRpc3BsYXlDb250ZW50JCB8IGFzeW5jIH19PC9wPlxuICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYgKHByb3BzLmJ1dHRvbnMgfHwgcHJvcHMuaHJlZnMpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8dmFsLWJ1dHRvbi1ncm91cFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7IGJ1dHRvbnM6IHByb3BzLmJ1dHRvbnMsIHBvc2l0aW9uOiAncmlnaHQnLCBjb2x1bW5lZDogZmFsc2UgfVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgICA+PC92YWwtYnV0dG9uLWdyb3VwPlxuICAgICAgICAgICAgICA8dmFsLWhyZWZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxpbmtcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsIG9mIHByb3BzLmhyZWZzXCJcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwibFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgICA+PC92YWwtaHJlZj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3ZhbC1ib3g+XG4gICAgfVxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9wcm9tcHRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXByb21wdGVyXG4gKlxuICogRGlzcGxheXMgYSBwcm9tcHQvaW5mbyBib3ggd2l0aCB0ZXh0LCBhY3Rpb25zIChidXR0b25zL2xpbmtzKSwgYW5kIGN1c3RvbSBzdHlsZXMuXG4gKiBTdXBwb3J0cyByZWFjdGl2ZSBpMThuIGNvbnRlbnQgdmlhIGNvbnRlbnRDbGFzcyBhbmQgY29udGVudEtleSBwcm9wcy5cbiAqXG4gKiBAZXhhbXBsZSBTdGF0aWMgY29udGVudDpcbiAqIDx2YWwtcHJvbXB0ZXIgW3Byb3BzXT1cInsgY29udGVudDogJ01lc3NhZ2UnLCBidXR0b25zOiBbLi4uXSwgY29sb3I6ICdwcmltYXJ5Jywgc2l6ZTogJ21lZGl1bScgfVwiPjwvdmFsLXByb21wdGVyPlxuICpcbiAqIEBleGFtcGxlIFJlYWN0aXZlIGkxOG4gY29udGVudDpcbiAqIDx2YWwtcHJvbXB0ZXIgW3Byb3BzXT1cIntcbiAqICAgY29udGVudENsYXNzOiAnaG9tZVBhZ2UnLFxuICogICBjb250ZW50S2V5OiAnY29va2llTWVzc2FnZScsXG4gKiAgIGNvbnRlbnQ6ICdGYWxsYmFjayBtZXNzYWdlJyxcbiAqICAgYnV0dG9uczogWy4uLl0sXG4gKiAgIGNvbG9yOiAncHJpbWFyeScsXG4gKiAgIHNpemU6ICdtZWRpdW0nXG4gKiB9XCI+PC92YWwtcHJvbXB0ZXI+XG4gKlxuICogQGlucHV0IHByb3BzOiBQcm9tcHRlck1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHByb21wdGVyIChjb250ZW50LCBidXR0b25zLCBocmVmcywgY29sb3IsIHNpemUsIGV0Yy4pXG4gKiBAb3V0cHV0IG9uQ2xpY2sgLSBFbWl0cyB3aGVuIGFuIGFjdGlvbiBpcyBjbGlja2VkXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9tcHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgbGFuZ1NlcnZpY2UgPSBpbmplY3QoTGFuZ1NlcnZpY2UpO1xuXG4gIC8qKiBPYnNlcnZhYmxlIGZvciByZWFjdGl2ZSBjb250ZW50IC0gZm9sbG93cyB2YWwtdGV4dC92YWwtYnV0dG9uIHBhdHRlcm4gKi9cbiAgZGlzcGxheUNvbnRlbnQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSBvZignJyk7XG5cbiAgLyoqXG4gICAqIFByb21wdGVyIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHJvcHM6IFByb21wdGVyTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldHVwQ29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBjb250ZW50IE9ic2VydmFibGUuXG4gICAqIEZvbGxvd3MgdGhlIHNhbWUgcGF0dGVybiBhcyB2YWwtdGV4dCBhbmQgdmFsLWJ1dHRvbiBmb3IgY29uc2lzdGVuY3kuXG4gICAqL1xuICBwcml2YXRlIHNldHVwQ29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvcHMuY29udGVudENsYXNzICYmIHRoaXMucHJvcHMuY29udGVudEtleSkge1xuICAgICAgLy8gUmVhY3RpdmUgY29udGVudCAtIE9ic2VydmFibGUgY29ubmVjdGVkIHRvIGN1cnJlbnRMYW5nJFxuICAgICAgdGhpcy5kaXNwbGF5Q29udGVudCQgPSB0aGlzLmxhbmdTZXJ2aWNlLmdldENvbnRlbnQoXG4gICAgICAgIHRoaXMucHJvcHMuY29udGVudENsYXNzLFxuICAgICAgICB0aGlzLnByb3BzLmNvbnRlbnRLZXksXG4gICAgICAgIHRoaXMucHJvcHMuY29udGVudFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RhdGljIGNvbnRlbnQgd3JhcHBlZCBpbiBPYnNlcnZhYmxlXG4gICAgICB0aGlzLmRpc3BsYXlDb250ZW50JCA9IG9mKHRoaXMucHJvcHMuY29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQodG9rZW4pO1xuICB9XG59XG4iXX0=
@@ -7542,6 +7542,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7542
7542
  class PrompterComponent {
7543
7543
  constructor() {
7544
7544
  this.langService = inject(LangService);
7545
+ /** Observable for reactive content - follows val-text/val-button pattern */
7546
+ this.displayContent$ = of('');
7545
7547
  this.onClick = new EventEmitter();
7546
7548
  }
7547
7549
  ngOnInit() {
@@ -7552,6 +7554,9 @@ class PrompterComponent {
7552
7554
  * Follows the same pattern as val-text and val-button for consistency.
7553
7555
  */
7554
7556
  setupContent() {
7557
+ if (!this.props) {
7558
+ return;
7559
+ }
7555
7560
  if (this.props.contentClass && this.props.contentKey) {
7556
7561
  // Reactive content - Observable connected to currentLang$
7557
7562
  this.displayContent$ = this.langService.getContent(this.props.contentClass, this.props.contentKey, this.props.content);
@@ -7566,77 +7571,71 @@ class PrompterComponent {
7566
7571
  }
7567
7572
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PrompterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7568
7573
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PrompterComponent, isStandalone: true, selector: "val-prompter", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
7569
- <val-box
7570
- class="teleprompter-container"
7571
- [props]="{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false, padding: props.padding }"
7572
- (onClick)="clickHandler()"
7573
- >
7574
- <div class="container" [class.teleprompter-content]="props.teleprompter" body>
7575
- <div>
7576
- <val-text
7577
- [props]="{
7578
- content: displayContent$ | async,
7579
- color: '',
7580
- bold: true,
7581
- size: props.size,
7582
- }"
7583
- ></val-text>
7584
- </div>
7585
- @if (props.buttons || props.hrefs) {
7586
- <div class="actions-container">
7587
- <val-button-group
7588
- class="buttons-container"
7589
- [props]="{ buttons: props.buttons, position: 'right', columned: false }"
7590
- (onClick)="clickHandler($event)"
7591
- ></val-button-group>
7592
- <val-href
7593
- class="link"
7594
- *ngFor="let l of props.hrefs"
7595
- [props]="l"
7596
- (onClick)="clickHandler($event)"
7597
- ></val-href>
7574
+ @if (props) {
7575
+ <val-box
7576
+ class="teleprompter-container"
7577
+ [props]="{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false, padding: props.padding }"
7578
+ (onClick)="clickHandler()"
7579
+ >
7580
+ <div class="container" [class.teleprompter-content]="props.teleprompter" body>
7581
+ <div>
7582
+ <ion-text>
7583
+ <p [class]="props.size" class="bold">{{ displayContent$ | async }}</p>
7584
+ </ion-text>
7598
7585
  </div>
7599
- }
7600
- </div>
7601
- </val-box>
7602
- `, isInline: true, styles: ["@charset \"UTF-8\";: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;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@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)}.container{display:flex;align-items:center;justify-content:space-between;flex-direction:column}@media (min-width: 768px){.container{flex-direction:row}}.teleprompter-container{overflow:hidden;width:100%}.teleprompter-content{white-space:nowrap;animation:scroll-left 15s linear infinite}@keyframes scroll-left{0%{transform:translate(100%)}to{transform:translate(-100%)}}.link{margin:0 .5rem;width:max-content}.actions-container{display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: BoxComponent, selector: "val-box", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: HrefComponent, selector: "val-href", inputs: ["props"], outputs: ["onClick"] }] }); }
7586
+ @if (props.buttons || props.hrefs) {
7587
+ <div class="actions-container">
7588
+ <val-button-group
7589
+ class="buttons-container"
7590
+ [props]="{ buttons: props.buttons, position: 'right', columned: false }"
7591
+ (onClick)="clickHandler($event)"
7592
+ ></val-button-group>
7593
+ <val-href
7594
+ class="link"
7595
+ *ngFor="let l of props.hrefs"
7596
+ [props]="l"
7597
+ (onClick)="clickHandler($event)"
7598
+ ></val-href>
7599
+ </div>
7600
+ }
7601
+ </div>
7602
+ </val-box>
7603
+ }
7604
+ `, isInline: true, styles: ["@charset \"UTF-8\";: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;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@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)}.container{display:flex;align-items:center;justify-content:space-between;flex-direction:column}@media (min-width: 768px){.container{flex-direction:row}}.teleprompter-container{overflow:hidden;width:100%}.teleprompter-content{white-space:nowrap;animation:scroll-left 15s linear infinite}@keyframes scroll-left{0%{transform:translate(100%)}to{transform:translate(-100%)}}.link{margin:0 .5rem;width:max-content}.actions-container{display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: BoxComponent, selector: "val-box", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: HrefComponent, selector: "val-href", inputs: ["props"], outputs: ["onClick"] }] }); }
7603
7605
  }
7604
7606
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PrompterComponent, decorators: [{
7605
7607
  type: Component,
7606
- args: [{ selector: 'val-prompter', standalone: true, imports: [CommonModule, BoxComponent, ButtonGroupComponent, TextComponent, HrefComponent], template: `
7607
- <val-box
7608
- class="teleprompter-container"
7609
- [props]="{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false, padding: props.padding }"
7610
- (onClick)="clickHandler()"
7611
- >
7612
- <div class="container" [class.teleprompter-content]="props.teleprompter" body>
7613
- <div>
7614
- <val-text
7615
- [props]="{
7616
- content: displayContent$ | async,
7617
- color: '',
7618
- bold: true,
7619
- size: props.size,
7620
- }"
7621
- ></val-text>
7622
- </div>
7623
- @if (props.buttons || props.hrefs) {
7624
- <div class="actions-container">
7625
- <val-button-group
7626
- class="buttons-container"
7627
- [props]="{ buttons: props.buttons, position: 'right', columned: false }"
7628
- (onClick)="clickHandler($event)"
7629
- ></val-button-group>
7630
- <val-href
7631
- class="link"
7632
- *ngFor="let l of props.hrefs"
7633
- [props]="l"
7634
- (onClick)="clickHandler($event)"
7635
- ></val-href>
7608
+ args: [{ selector: 'val-prompter', standalone: true, imports: [CommonModule, IonText, BoxComponent, ButtonGroupComponent, HrefComponent], template: `
7609
+ @if (props) {
7610
+ <val-box
7611
+ class="teleprompter-container"
7612
+ [props]="{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false, padding: props.padding }"
7613
+ (onClick)="clickHandler()"
7614
+ >
7615
+ <div class="container" [class.teleprompter-content]="props.teleprompter" body>
7616
+ <div>
7617
+ <ion-text>
7618
+ <p [class]="props.size" class="bold">{{ displayContent$ | async }}</p>
7619
+ </ion-text>
7636
7620
  </div>
7637
- }
7638
- </div>
7639
- </val-box>
7621
+ @if (props.buttons || props.hrefs) {
7622
+ <div class="actions-container">
7623
+ <val-button-group
7624
+ class="buttons-container"
7625
+ [props]="{ buttons: props.buttons, position: 'right', columned: false }"
7626
+ (onClick)="clickHandler($event)"
7627
+ ></val-button-group>
7628
+ <val-href
7629
+ class="link"
7630
+ *ngFor="let l of props.hrefs"
7631
+ [props]="l"
7632
+ (onClick)="clickHandler($event)"
7633
+ ></val-href>
7634
+ </div>
7635
+ }
7636
+ </div>
7637
+ </val-box>
7638
+ }
7640
7639
  `, styles: ["@charset \"UTF-8\";: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;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@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)}.container{display:flex;align-items:center;justify-content:space-between;flex-direction:column}@media (min-width: 768px){.container{flex-direction:row}}.teleprompter-container{overflow:hidden;width:100%}.teleprompter-content{white-space:nowrap;animation:scroll-left 15s linear infinite}@keyframes scroll-left{0%{transform:translate(100%)}to{transform:translate(-100%)}}.link{margin:0 .5rem;width:max-content}.actions-container{display:flex;align-items:center}\n"] }]
7641
7640
  }], propDecorators: { props: [{
7642
7641
  type: Input