valtech-components 2.0.500 → 2.0.501

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/esm2022/lib/components/atoms/button/button.component.mjs +87 -48
  2. package/esm2022/lib/components/molecules/action-header/action-header.component.mjs +1 -1
  3. package/esm2022/lib/components/molecules/ad-slot/ad-slot.component.mjs +249 -0
  4. package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +1 -1
  5. package/esm2022/lib/components/molecules/card/card.component.mjs +2 -2
  6. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +1 -1
  7. package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +2 -2
  8. package/esm2022/lib/components/organisms/article/article.component.mjs +2 -2
  9. package/esm2022/lib/components/organisms/menu/menu.component.mjs +1 -1
  10. package/esm2022/lib/components/templates/page-template/page-template.component.mjs +1 -1
  11. package/esm2022/lib/services/ads/ads-consent.service.mjs +152 -0
  12. package/esm2022/lib/services/ads/ads-loader.service.mjs +160 -0
  13. package/esm2022/lib/services/ads/ads.service.mjs +449 -0
  14. package/esm2022/lib/services/ads/config.mjs +118 -0
  15. package/esm2022/lib/services/ads/index.mjs +14 -0
  16. package/esm2022/lib/services/ads/types.mjs +23 -0
  17. package/esm2022/public-api.mjs +6 -1
  18. package/fesm2022/valtech-components.mjs +1330 -154
  19. package/fesm2022/valtech-components.mjs.map +1 -1
  20. package/lib/components/atoms/button/button.component.d.ts +30 -6
  21. package/lib/components/molecules/ad-slot/ad-slot.component.d.ts +78 -0
  22. package/lib/components/organisms/article/article.component.d.ts +3 -3
  23. package/lib/services/ads/ads-consent.service.d.ts +59 -0
  24. package/lib/services/ads/ads-loader.service.d.ts +46 -0
  25. package/lib/services/ads/ads.service.d.ts +123 -0
  26. package/lib/services/ads/config.d.ts +69 -0
  27. package/lib/services/ads/index.d.ts +10 -0
  28. package/lib/services/ads/types.d.ts +163 -0
  29. package/package.json +1 -1
  30. package/public-api.d.ts +2 -0
@@ -1,6 +1,7 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
3
3
  import { IonButton, IonIcon, IonSpinner, IonText } from '@ionic/angular/standalone';
4
+ import { PresetService } from '../../../services/presets';
4
5
  import { ActionType, ComponentStates } from '../../types';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../../../services/download.service";
@@ -10,7 +11,10 @@ import * as i4 from "@angular/common";
10
11
  /**
11
12
  * val-button
12
13
  *
13
- * A customizable button supporting icons, loading state, and navigation.
14
+ * A customizable button supporting icons, loading state, navigation, and presets.
15
+ *
16
+ * @example With preset (recommended with i18n):
17
+ * <val-button preset="primary-action" [props]="{ text: 'Submit' | t }"></val-button>
14
18
  *
15
19
  * @example Static text:
16
20
  * <val-button [props]="{
@@ -21,41 +25,74 @@ import * as i4 from "@angular/common";
21
25
  * icon: { name: 'save', slot: 'start' }
22
26
  * }" (onClick)="handler()"></val-button>
23
27
  *
24
- * @input props: ButtonMetadata - Configuration for the button (text, color, icon, state, etc.)
28
+ * @input preset: string - Name of preset to apply (e.g., 'primary-action', 'danger')
29
+ * @input props: ButtonMetadata - Configuration for the button (overrides preset values)
25
30
  * @output onClick - Emits when the button is clicked
26
31
  */
27
32
  export class ButtonComponent {
28
- constructor(download, icon, navigation) {
33
+ constructor(download, _icon, navigation) {
29
34
  this.download = download;
30
35
  this.navigation = navigation;
31
36
  this.states = ComponentStates;
37
+ this.presets = inject(PresetService);
32
38
  /**
33
39
  * The text to display on the button.
34
40
  */
35
41
  this.displayText = '';
42
+ /**
43
+ * Button configuration. Values here override preset values.
44
+ * When using presets, only partial props are needed (preset provides defaults).
45
+ */
46
+ this.props = {};
47
+ /**
48
+ * Resolved props after merging preset + explicit props.
49
+ * Preset values are overridden by explicit props.
50
+ */
51
+ this.resolvedProps = {};
36
52
  /**
37
53
  * Event emitted when the button is clicked.
38
54
  */
39
55
  this.onClick = new EventEmitter();
40
56
  }
41
57
  ngOnInit() {
58
+ this.resolveProps();
42
59
  this.setupDisplayText();
43
60
  }
61
+ ngOnChanges(changes) {
62
+ if (changes['preset'] || changes['props']) {
63
+ this.resolveProps();
64
+ this.setupDisplayText();
65
+ }
66
+ }
44
67
  /**
45
- * Set up the text content based on the props configuration.
68
+ * Merge preset configuration with explicit props.
69
+ * Explicit props take precedence over preset values.
70
+ */
71
+ resolveProps() {
72
+ const presetProps = this.preset
73
+ ? this.presets.get('button', this.preset)
74
+ : {};
75
+ // Merge: preset defaults < explicit props
76
+ this.resolvedProps = {
77
+ ...presetProps,
78
+ ...this.props,
79
+ };
80
+ }
81
+ /**
82
+ * Set up the text content based on the resolved props configuration.
46
83
  */
47
84
  setupDisplayText() {
48
- if (this.props.text) {
49
- if (this.props.contentInterpolation) {
50
- this.displayText = this.interpolateContent(this.props.text, this.props.contentInterpolation);
85
+ if (this.resolvedProps.text) {
86
+ if (this.resolvedProps.contentInterpolation) {
87
+ this.displayText = this.interpolateContent(this.resolvedProps.text, this.resolvedProps.contentInterpolation);
51
88
  }
52
89
  else {
53
- this.displayText = this.props.text;
90
+ this.displayText = this.resolvedProps.text;
54
91
  }
55
92
  }
56
- else if (this.props.contentFallback) {
93
+ else if (this.resolvedProps.contentFallback) {
57
94
  // Backwards compatibility: use fallback if text is not provided
58
- this.displayText = this.props.contentFallback;
95
+ this.displayText = this.resolvedProps.contentFallback;
59
96
  }
60
97
  else {
61
98
  this.displayText = '';
@@ -71,38 +108,38 @@ export class ButtonComponent {
71
108
  });
72
109
  }
73
110
  clickHandler() {
74
- if (this.props.state === this.states.DISABLED) {
111
+ if (this.resolvedProps.state === this.states.DISABLED) {
75
112
  return;
76
113
  }
77
- if (this.props.actionType === ActionType.APP_NAVIGATION) {
78
- this.navigation.navigateByUrl(this.props.link);
114
+ if (this.resolvedProps.actionType === ActionType.APP_NAVIGATION) {
115
+ this.navigation.navigateByUrl(this.resolvedProps.link);
79
116
  }
80
- if (this.props.download) {
81
- this.download.downloadLinkFromBrowser(this.props.download);
117
+ if (this.resolvedProps.download) {
118
+ this.download.downloadLinkFromBrowser(this.resolvedProps.download);
82
119
  }
83
- if (this.props.handler) {
84
- this.props.handler(this.props.ref);
120
+ if (this.resolvedProps.handler) {
121
+ this.resolvedProps.handler(this.resolvedProps.ref);
85
122
  }
86
- this.onClick.emit(this.props.token);
123
+ this.onClick.emit(this.resolvedProps.token);
87
124
  }
88
125
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ButtonComponent, deps: [{ token: i1.DownloadService }, { token: i2.IconService }, { token: i3.NavigationService }], target: i0.ɵɵFactoryTarget.Component }); }
89
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ButtonComponent, isStandalone: true, selector: "val-button", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
126
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ButtonComponent, isStandalone: true, selector: "val-button", inputs: { preset: "preset", props: "props" }, outputs: { onClick: "onClick" }, usesOnChanges: true, ngImport: i0, template: `
90
127
  <ion-button
91
- [type]="props.type"
92
- [color]="props.color"
93
- [expand]="props.expand"
94
- [fill]="props.fill"
95
- [size]="props.size"
96
- [href]="props.href"
97
- [target]="props.target"
98
- [shape]="props.shape"
128
+ [type]="resolvedProps.type"
129
+ [color]="resolvedProps.color"
130
+ [expand]="resolvedProps.expand"
131
+ [fill]="resolvedProps.fill"
132
+ [size]="resolvedProps.size"
133
+ [href]="resolvedProps.href"
134
+ [target]="resolvedProps.target"
135
+ [shape]="resolvedProps.shape"
99
136
  (click)="clickHandler()"
100
- [disabled]="props.state === states.DISABLED"
101
- [ngClass]="props.size ? [props.size] : []"
137
+ [disabled]="resolvedProps.state === states.DISABLED"
138
+ [ngClass]="resolvedProps.size ? [resolvedProps.size] : []"
102
139
  >
103
- <ion-icon *ngIf="props.icon" [slot]="props.icon.slot" [name]="props.icon.name"></ion-icon>
104
- <ion-spinner *ngIf="props.state === states.WORKING" name="circular"></ion-spinner>
105
- <ion-text *ngIf="props.state !== states.WORKING">{{ displayText }}</ion-text>
140
+ <ion-icon *ngIf="resolvedProps.icon" [slot]="resolvedProps.icon.slot" [name]="resolvedProps.icon.name"></ion-icon>
141
+ <ion-spinner *ngIf="resolvedProps.state === states.WORKING" name="circular"></ion-spinner>
142
+ <ion-text *ngIf="resolvedProps.state !== states.WORKING">{{ displayText }}</ion-text>
106
143
  </ion-button>
107
144
  `, 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;--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)}ion-button{font-family:var(--ion-default-font),Arial,sans-serif;min-width:6.25rem;margin:0}ion-button.small{--padding-bottom: 12px;--padding-end: 14px;--padding-start: 14px;--padding-top: 12px}ion-button.button-clear{padding:0;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
108
145
  }
@@ -110,26 +147,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
110
147
  type: Component,
111
148
  args: [{ selector: 'val-button', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonSpinner, IonText], template: `
112
149
  <ion-button
113
- [type]="props.type"
114
- [color]="props.color"
115
- [expand]="props.expand"
116
- [fill]="props.fill"
117
- [size]="props.size"
118
- [href]="props.href"
119
- [target]="props.target"
120
- [shape]="props.shape"
150
+ [type]="resolvedProps.type"
151
+ [color]="resolvedProps.color"
152
+ [expand]="resolvedProps.expand"
153
+ [fill]="resolvedProps.fill"
154
+ [size]="resolvedProps.size"
155
+ [href]="resolvedProps.href"
156
+ [target]="resolvedProps.target"
157
+ [shape]="resolvedProps.shape"
121
158
  (click)="clickHandler()"
122
- [disabled]="props.state === states.DISABLED"
123
- [ngClass]="props.size ? [props.size] : []"
159
+ [disabled]="resolvedProps.state === states.DISABLED"
160
+ [ngClass]="resolvedProps.size ? [resolvedProps.size] : []"
124
161
  >
125
- <ion-icon *ngIf="props.icon" [slot]="props.icon.slot" [name]="props.icon.name"></ion-icon>
126
- <ion-spinner *ngIf="props.state === states.WORKING" name="circular"></ion-spinner>
127
- <ion-text *ngIf="props.state !== states.WORKING">{{ displayText }}</ion-text>
162
+ <ion-icon *ngIf="resolvedProps.icon" [slot]="resolvedProps.icon.slot" [name]="resolvedProps.icon.name"></ion-icon>
163
+ <ion-spinner *ngIf="resolvedProps.state === states.WORKING" name="circular"></ion-spinner>
164
+ <ion-text *ngIf="resolvedProps.state !== states.WORKING">{{ displayText }}</ion-text>
128
165
  </ion-button>
129
166
  `, 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;--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)}ion-button{font-family:var(--ion-default-font),Arial,sans-serif;min-width:6.25rem;margin:0}ion-button.small{--padding-bottom: 12px;--padding-end: 14px;--padding-start: 14px;--padding-top: 12px}ion-button.button-clear{padding:0;margin:0}\n"] }]
130
- }], ctorParameters: () => [{ type: i1.DownloadService }, { type: i2.IconService }, { type: i3.NavigationService }], propDecorators: { props: [{
167
+ }], ctorParameters: () => [{ type: i1.DownloadService }, { type: i2.IconService }, { type: i3.NavigationService }], propDecorators: { preset: [{
168
+ type: Input
169
+ }], props: [{
131
170
  type: Input
132
171
  }], onClick: [{
133
172
  type: Output
134
173
  }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEYsT0FBTyxFQUFFLFVBQVUsRUFBa0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUEyQjFFOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFpQjFCLFlBQ1UsUUFBeUIsRUFDakMsSUFBaUIsRUFDVCxVQUE2QjtRQUY3QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUV6QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQW5CdkMsV0FBTSxHQUFHLGVBQWUsQ0FBQztRQUV6Qjs7V0FFRztRQUNILGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBS3pCOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFNbEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDL0YsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDckMsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEMsZ0VBQWdFO1lBQ2hFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGtCQUFrQixDQUFDLE9BQWUsRUFBRSxNQUEyQjtRQUNyRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDdEQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQzsrR0F6RVUsZUFBZTttR0FBZixlQUFlLG1JQXRDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVCwyekZBbkJTLFlBQVksaU9BQUUsU0FBUyxvUEFBRSxPQUFPLDJKQUFFLFVBQVUseUdBQUUsT0FBTzs7NEZBdUNwRCxlQUFlO2tCQTFDM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxZQUN0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JUOzhJQTZCRCxLQUFLO3NCQURKLEtBQUs7Z0JBT04sT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uU3Bpbm5lciwgSW9uVGV4dCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgRG93bmxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZG93bmxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ljb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSwgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uU3Bpbm5lciwgSW9uVGV4dF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1idXR0b25cbiAgICAgIFt0eXBlXT1cInByb3BzLnR5cGVcIlxuICAgICAgW2NvbG9yXT1cInByb3BzLmNvbG9yXCJcbiAgICAgIFtleHBhbmRdPVwicHJvcHMuZXhwYW5kXCJcbiAgICAgIFtmaWxsXT1cInByb3BzLmZpbGxcIlxuICAgICAgW3NpemVdPVwicHJvcHMuc2l6ZVwiXG4gICAgICBbaHJlZl09XCJwcm9wcy5ocmVmXCJcbiAgICAgIFt0YXJnZXRdPVwicHJvcHMudGFyZ2V0XCJcbiAgICAgIFtzaGFwZV09XCJwcm9wcy5zaGFwZVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKClcIlxuICAgICAgW2Rpc2FibGVkXT1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIlxuICAgICAgW25nQ2xhc3NdPVwicHJvcHMuc2l6ZSA/IFtwcm9wcy5zaXplXSA6IFtdXCJcbiAgICA+XG4gICAgICA8aW9uLWljb24gKm5nSWY9XCJwcm9wcy5pY29uXCIgW3Nsb3RdPVwicHJvcHMuaWNvbi5zbG90XCIgW25hbWVdPVwicHJvcHMuaWNvbi5uYW1lXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tc3Bpbm5lciAqbmdJZj1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuV09SS0lOR1wiIG5hbWU9XCJjaXJjdWxhclwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICA8aW9uLXRleHQgKm5nSWY9XCJwcm9wcy5zdGF0ZSAhPT0gc3RhdGVzLldPUktJTkdcIj57eyBkaXNwbGF5VGV4dCB9fTwvaW9uLXRleHQ+XG4gICAgPC9pb24tYnV0dG9uPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1idXR0b25cbiAqXG4gKiBBIGN1c3RvbWl6YWJsZSBidXR0b24gc3VwcG9ydGluZyBpY29ucywgbG9hZGluZyBzdGF0ZSwgYW5kIG5hdmlnYXRpb24uXG4gKlxuICogQGV4YW1wbGUgU3RhdGljIHRleHQ6XG4gKiA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwie1xuICogICB0ZXh0OiAnU2F2ZScsXG4gKiAgIGNvbG9yOiAncHJpbWFyeScsXG4gKiAgIHR5cGU6ICdidXR0b24nLFxuICogICBzdGF0ZTogJ0VOQUJMRUQnLFxuICogICBpY29uOiB7IG5hbWU6ICdzYXZlJywgc2xvdDogJ3N0YXJ0JyB9XG4gKiB9XCIgKG9uQ2xpY2spPVwiaGFuZGxlcigpXCI+PC92YWwtYnV0dG9uPlxuICpcbiAqIEBpbnB1dCBwcm9wczogQnV0dG9uTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgYnV0dG9uICh0ZXh0LCBjb2xvciwgaWNvbiwgc3RhdGUsIGV0Yy4pXG4gKiBAb3V0cHV0IG9uQ2xpY2sgLSBFbWl0cyB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZFxuICovXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgc3RhdGVzID0gQ29tcG9uZW50U3RhdGVzO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IG9uIHRoZSBidXR0b24uXG4gICAqL1xuICBkaXNwbGF5VGV4dDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgcHJvcHMhOiBCdXR0b25NZXRhZGF0YTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkb3dubG9hZDogRG93bmxvYWRTZXJ2aWNlLFxuICAgIGljb246IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdGlvbjogTmF2aWdhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0dXBEaXNwbGF5VGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCB0aGUgdGV4dCBjb250ZW50IGJhc2VkIG9uIHRoZSBwcm9wcyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cERpc3BsYXlUZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLnRleHQpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbnRlbnRJbnRlcnBvbGF0aW9uKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheVRleHQgPSB0aGlzLmludGVycG9sYXRlQ29udGVudCh0aGlzLnByb3BzLnRleHQsIHRoaXMucHJvcHMuY29udGVudEludGVycG9sYXRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5VGV4dCA9IHRoaXMucHJvcHMudGV4dDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuY29udGVudEZhbGxiYWNrKSB7XG4gICAgICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogdXNlIGZhbGxiYWNrIGlmIHRleHQgaXMgbm90IHByb3ZpZGVkXG4gICAgICB0aGlzLmRpc3BsYXlUZXh0ID0gdGhpcy5wcm9wcy5jb250ZW50RmFsbGJhY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcGxheVRleHQgPSAnJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJwb2xhdGUgcGxhY2Vob2xkZXJzIGluIGNvbnRlbnQgd2l0aCBwcm92aWRlZCB2YWx1ZXMuXG4gICAqIFN1cHBvcnRzIHt7cGxhY2Vob2xkZXJ9fSBmb3JtYXQuXG4gICAqL1xuICBwcml2YXRlIGludGVycG9sYXRlQ29udGVudChjb250ZW50OiBzdHJpbmcsIHZhbHVlczogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSgvXFx7XFx7KFxcdyspXFx9XFx9L2csIChtYXRjaCwga2V5KSA9PiB7XG4gICAgICByZXR1cm4gdmFsdWVzW2tleV0gIT09IHVuZGVmaW5lZCA/IFN0cmluZyh2YWx1ZXNba2V5XSkgOiBtYXRjaDtcbiAgICB9KTtcbiAgfVxuXG4gIGNsaWNrSGFuZGxlcigpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0ZSA9PT0gdGhpcy5zdGF0ZXMuRElTQUJMRUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5hY3Rpb25UeXBlID09PSBBY3Rpb25UeXBlLkFQUF9OQVZJR0FUSU9OKSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb24ubmF2aWdhdGVCeVVybCh0aGlzLnByb3BzLmxpbmspO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmRvd25sb2FkKSB7XG4gICAgICB0aGlzLmRvd25sb2FkLmRvd25sb2FkTGlua0Zyb21Ccm93c2VyKHRoaXMucHJvcHMuZG93bmxvYWQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmhhbmRsZXIpIHtcbiAgICAgIHRoaXMucHJvcHMuaGFuZGxlcih0aGlzLnByb3BzLnJlZik7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNsaWNrLmVtaXQodGhpcy5wcm9wcy50b2tlbik7XG4gIH1cbn1cbiJdfQ==
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBMkIxRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQXFDMUIsWUFDVSxRQUF5QixFQUNqQyxLQUFrQixFQUNWLFVBQTZCO1FBRjdCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBRXpCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBdkN2QyxXQUFNLEdBQUcsZUFBZSxDQUFDO1FBRWpCLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFeEM7O1dBRUc7UUFDSCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQVd6Qjs7O1dBR0c7UUFDTSxVQUFLLEdBQTRCLEVBQUUsQ0FBQztRQUU3Qzs7O1dBR0c7UUFDSCxrQkFBYSxHQUFtQixFQUFvQixDQUFDO1FBRXJEOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFNbEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFD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LENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDOytHQXJIVSxlQUFlO21HQUFmLGVBQWUsMEtBMUNoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULDJ6RkFuQlMsWUFBWSxpT0FBRSxTQUFTLG9QQUFFLE9BQU8sMkpBQUUsVUFBVSx5R0FBRSxPQUFPOzs0RkEyQ3BELGVBQWU7a0JBOUMzQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQ3REOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7OElBeUNRLE1BQU07c0JBQWQsS0FBSztnQkFNRyxLQUFLO3NCQUFiLEtBQUs7Z0JBWU4sT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24sIElvblNwaW5uZXIsIElvblRleHQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IERvd25sb2FkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Rvd25sb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pY29ucy5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVzZXRzJztcbmltcG9ydCB7IEFjdGlvblR5cGUsIEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25CdXR0b24sIElvbkljb24sIElvblNwaW5uZXIsIElvblRleHRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tYnV0dG9uXG4gICAgICBbdHlwZV09XCJyZXNvbHZlZFByb3BzLnR5cGVcIlxuICAgICAgW2NvbG9yXT1cInJlc29sdmVkUHJvcHMuY29sb3JcIlxuICAgICAgW2V4cGFuZF09XCJyZXNvbHZlZFByb3BzLmV4cGFuZFwiXG4gICAgICBbZmlsbF09XCJyZXNvbHZlZFByb3BzLmZpbGxcIlxuICAgICAgW3NpemVdPVwicmVzb2x2ZWRQcm9wcy5zaXplXCJcbiAgICAgIFtocmVmXT1cInJlc29sdmVkUHJvcHMuaHJlZlwiXG4gICAgICBbdGFyZ2V0XT1cInJlc29sdmVkUHJvcHMudGFyZ2V0XCJcbiAgICAgIFtzaGFwZV09XCJyZXNvbHZlZFByb3BzLnNoYXBlXCJcbiAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicmVzb2x2ZWRQcm9wcy5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEXCJcbiAgICAgIFtuZ0NsYXNzXT1cInJlc29sdmVkUHJvcHMuc2l6ZSA/IFtyZXNvbHZlZFByb3BzLnNpemVdIDogW11cIlxuICAgID5cbiAgICAgIDxpb24taWNvbiAqbmdJZj1cInJlc29sdmVkUHJvcHMuaWNvblwiIFtzbG90XT1cInJlc29sdmVkUHJvcHMuaWNvbi5zbG90XCIgW25hbWVdPVwicmVzb2x2ZWRQcm9wcy5pY29uLm5hbWVcIj48L2lvbi1pY29uPlxuICAgICAgPGlvbi1zcGlubmVyICpuZ0lmPVwicmVzb2x2ZWRQcm9wcy5zdGF0ZSA9PT0gc3RhdGVzLldPUktJTkdcIiBuYW1lPVwiY2lyY3VsYXJcIj48L2lvbi1zcGlubmVyPlxuICAgICAgPGlvbi10ZXh0ICpuZ0lmPVwicmVzb2x2ZWRQcm9wcy5zdGF0ZSAhPT0gc3RhdGVzLldPUktJTkdcIj57eyBkaXNwbGF5VGV4dCB9fTwvaW9uLXRleHQ+XG4gICAgPC9pb24tYnV0dG9uPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1idXR0b25cbiAqXG4gKiBBIGN1c3RvbWl6YWJsZSBidXR0b24gc3VwcG9ydGluZyBpY29ucywgbG9hZGluZyBzdGF0ZSwgbmF2aWdhdGlvbiwgYW5kIHByZXNldHMuXG4gKlxuICogQGV4YW1wbGUgV2l0aCBwcmVzZXQgKHJlY29tbWVuZGVkIHdpdGggaTE4bik6XG4gKiA8dmFsLWJ1dHRvbiBwcmVzZXQ9XCJwcmltYXJ5LWFjdGlvblwiIFtwcm9wc109XCJ7IHRleHQ6ICdTdWJtaXQnIHwgdCB9XCI+PC92YWwtYnV0dG9uPlxuICpcbiAqIEBleGFtcGxlIFN0YXRpYyB0ZXh0OlxuICogPHZhbC1idXR0b24gW3Byb3BzXT1cIntcbiAqICAgdGV4dDogJ1NhdmUnLFxuICogICBjb2xvcjogJ3ByaW1hcnknLFxuICogICB0eXBlOiAnYnV0dG9uJyxcbiAqICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAqICAgaWNvbjogeyBuYW1lOiAnc2F2ZScsIHNsb3Q6ICdzdGFydCcgfVxuICogfVwiIChvbkNsaWNrKT1cImhhbmRsZXIoKVwiPjwvdmFsLWJ1dHRvbj5cbiAqXG4gKiBAaW5wdXQgcHJlc2V0OiBzdHJpbmcgLSBOYW1lIG9mIHByZXNldCB0byBhcHBseSAoZS5nLiwgJ3ByaW1hcnktYWN0aW9uJywgJ2RhbmdlcicpXG4gKiBAaW5wdXQgcHJvcHM6IEJ1dHRvbk1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGJ1dHRvbiAob3ZlcnJpZGVzIHByZXNldCB2YWx1ZXMpXG4gKiBAb3V0cHV0IG9uQ2xpY2sgLSBFbWl0cyB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZFxuICovXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBzdGF0ZXMgPSBDb21wb25lbnRTdGF0ZXM7XG5cbiAgcHJpdmF0ZSBwcmVzZXRzID0gaW5qZWN0KFByZXNldFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IG9uIHRoZSBidXR0b24uXG4gICAqL1xuICBkaXNwbGF5VGV4dDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBidXR0b24gY29uZmlndXJhdGlvbnNcbiAgICogKHNpemUsIGNvbG9yLCBmaWxsLCBldGMuKSB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogPHZhbC1idXR0b24gcHJlc2V0PVwicHJpbWFyeS1hY3Rpb25cIiBbcHJvcHNdPVwieyB0ZXh0OiAnU2F2ZScgfVwiPjwvdmFsLWJ1dHRvbj5cbiAgICovXG4gIEBJbnB1dCgpIHByZXNldD86IHN0cmluZztcblxuICAvKipcbiAgICogQnV0dG9uIGNvbmZpZ3VyYXRpb24uIFZhbHVlcyBoZXJlIG92ZXJyaWRlIHByZXNldCB2YWx1ZXMuXG4gICAqIFdoZW4gdXNpbmcgcHJlc2V0cywgb25seSBwYXJ0aWFsIHByb3BzIGFyZSBuZWVkZWQgKHByZXNldCBwcm92aWRlcyBkZWZhdWx0cykuXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFydGlhbDxCdXR0b25NZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVzb2x2ZWQgcHJvcHMgYWZ0ZXIgbWVyZ2luZyBwcmVzZXQgKyBleHBsaWNpdCBwcm9wcy5cbiAgICogUHJlc2V0IHZhbHVlcyBhcmUgb3ZlcnJpZGRlbiBieSBleHBsaWNpdCBwcm9wcy5cbiAgICovXG4gIHJlc29sdmVkUHJvcHM6IEJ1dHRvbk1ldGFkYXRhID0ge30gYXMgQnV0dG9uTWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZG93bmxvYWQ6IERvd25sb2FkU2VydmljZSxcbiAgICBfaWNvbjogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB0aGlzLnNldHVwRGlzcGxheVRleHQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICAgIHRoaXMuc2V0dXBEaXNwbGF5VGV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSBwcmVzZXQgY29uZmlndXJhdGlvbiB3aXRoIGV4cGxpY2l0IHByb3BzLlxuICAgKiBFeHBsaWNpdCBwcm9wcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBwcmVzZXQgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlUHJvcHMoKTogdm9pZCB7XG4gICAgY29uc3QgcHJlc2V0UHJvcHMgPSB0aGlzLnByZXNldFxuICAgICAgPyAodGhpcy5wcmVzZXRzLmdldCgnYnV0dG9uJywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+KVxuICAgICAgOiB7fTtcblxuICAgIC8vIE1lcmdlOiBwcmVzZXQgZGVmYXVsdHMgPCBleHBsaWNpdCBwcm9wc1xuICAgIHRoaXMucmVzb2x2ZWRQcm9wcyA9IHtcbiAgICAgIC4uLnByZXNldFByb3BzLFxuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICB9IGFzIEJ1dHRvbk1ldGFkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCB0aGUgdGV4dCBjb250ZW50IGJhc2VkIG9uIHRoZSByZXNvbHZlZCBwcm9wcyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cERpc3BsYXlUZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMudGV4dCkge1xuICAgICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250ZW50SW50ZXJwb2xhdGlvbikge1xuICAgICAgICB0aGlzLmRpc3BsYXlUZXh0ID0gdGhpcy5pbnRlcnBvbGF0ZUNvbnRlbnQodGhpcy5yZXNvbHZlZFByb3BzLnRleHQsIHRoaXMucmVzb2x2ZWRQcm9wcy5jb250ZW50SW50ZXJwb2xhdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc3BsYXlUZXh0ID0gdGhpcy5yZXNvbHZlZFByb3BzLnRleHQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnJlc29sdmVkUHJvcHMuY29udGVudEZhbGxiYWNrKSB7XG4gICAgICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogdXNlIGZhbGxiYWNrIGlmIHRleHQgaXMgbm90IHByb3ZpZGVkXG4gICAgICB0aGlzLmRpc3BsYXlUZXh0ID0gdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRlbnRGYWxsYmFjaztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNwbGF5VGV4dCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcnBvbGF0ZSBwbGFjZWhvbGRlcnMgaW4gY29udGVudCB3aXRoIHByb3ZpZGVkIHZhbHVlcy5cbiAgICogU3VwcG9ydHMge3twbGFjZWhvbGRlcn19IGZvcm1hdC5cbiAgICovXG4gIHByaXZhdGUgaW50ZXJwb2xhdGVDb250ZW50KGNvbnRlbnQ6IHN0cmluZywgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29udGVudC5yZXBsYWNlKC9cXHtcXHsoXFx3KylcXH1cXH0vZywgKG1hdGNoLCBrZXkpID0+IHtcbiAgICAgIHJldHVybiB2YWx1ZXNba2V5XSAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKHZhbHVlc1trZXldKSA6IG1hdGNoO1xuICAgIH0pO1xuICB9XG5cbiAgY2xpY2tIYW5kbGVyKCkge1xuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHRoaXMuc3RhdGVzLkRJU0FCTEVEKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5hY3Rpb25UeXBlID09PSBBY3Rpb25UeXBlLkFQUF9OQVZJR0FUSU9OKSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb24ubmF2aWdhdGVCeVVybCh0aGlzLnJlc29sdmVkUHJvcHMubGluayk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5kb3dubG9hZCkge1xuICAgICAgdGhpcy5kb3dubG9hZC5kb3dubG9hZExpbmtGcm9tQnJvd3Nlcih0aGlzLnJlc29sdmVkUHJvcHMuZG93bmxvYWQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMuaGFuZGxlcikge1xuICAgICAgdGhpcy5yZXNvbHZlZFByb3BzLmhhbmRsZXIodGhpcy5yZXNvbHZlZFByb3BzLnJlZik7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNsaWNrLmVtaXQodGhpcy5yZXNvbHZlZFByb3BzLnRva2VuKTtcbiAgfVxufVxuIl19
@@ -10,7 +10,7 @@ export class ActionHeaderComponent {
10
10
  <val-display [props]="props.title" />
11
11
  <val-button [props]="props.action" />
12
12
  </section>
13
- `, isInline: true, styles: [".header-content-container{width:100%;display:flex;align-items:center;justify-content:space-between}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["props"], outputs: ["onClick"] }] }); }
13
+ `, isInline: true, styles: [".header-content-container{width:100%;display:flex;align-items:center;justify-content:space-between}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
14
14
  }
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ActionHeaderComponent, decorators: [{
16
16
  type: Component,
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Ad Slot Component
3
+ *
4
+ * Componente standalone para mostrar ads de Google Ad Manager.
5
+ * Se integra automaticamente con el servicio de Ads y respeta consent + premium.
6
+ *
7
+ * @example
8
+ * ```html
9
+ * <!-- Banner basico -->
10
+ * <val-ad-slot
11
+ * slotId="homepage-top"
12
+ * adUnitPath="/homepage/top"
13
+ * size="leaderboard"
14
+ * />
15
+ *
16
+ * <!-- Con responsivo -->
17
+ * <val-ad-slot
18
+ * slotId="sidebar-ad"
19
+ * adUnitPath="/sidebar"
20
+ * [size]="['medium-rectangle', 'half-page']"
21
+ * [sizeMapping]="[
22
+ * { viewportWidth: 1024, sizes: [[300, 600]] },
23
+ * { viewportWidth: 768, sizes: [[300, 250]] },
24
+ * { viewportWidth: 0, sizes: [[320, 50]] }
25
+ * ]"
26
+ * />
27
+ *
28
+ * <!-- Native ad -->
29
+ * <val-ad-slot
30
+ * slotId="article-native"
31
+ * adUnitPath="/article/native"
32
+ * size="native"
33
+ * [isNative]="true"
34
+ * />
35
+ * ```
36
+ */
37
+ import { Component, Input, inject, signal, computed, PLATFORM_ID, ChangeDetectionStrategy, } from '@angular/core';
38
+ import { CommonModule, isPlatformBrowser } from '@angular/common';
39
+ import { AdsService } from '../../../services/ads/ads.service';
40
+ import { AD_SIZE_MAP } from '../../../services/ads/types';
41
+ import * as i0 from "@angular/core";
42
+ export class AdSlotComponent {
43
+ constructor() {
44
+ this.adsService = inject(AdsService);
45
+ this.platformId = inject(PLATFORM_ID);
46
+ /** Tamano del ad */
47
+ this.size = 'medium-rectangle';
48
+ /** Colapsar si vacio */
49
+ this.collapseEmpty = true;
50
+ /** Es native ad */
51
+ this.isNative = false;
52
+ /** CSS class adicional */
53
+ this.cssClass = '';
54
+ /** Altura minima */
55
+ this.minHeight = '90px';
56
+ /** Mostrar skeleton */
57
+ this.showSkeleton = true;
58
+ // ===========================================================================
59
+ // ESTADO
60
+ // ===========================================================================
61
+ this._state = signal('idle');
62
+ this.state = this._state.asReadonly();
63
+ /** Indica si el componente debe renderizarse */
64
+ this.shouldRender = computed(() => {
65
+ // No renderizar en SSR
66
+ if (!isPlatformBrowser(this.platformId)) {
67
+ return false;
68
+ }
69
+ // No renderizar si usuario es premium
70
+ if (this.adsService.isPremiumUser()) {
71
+ return false;
72
+ }
73
+ // No renderizar si ads estan deshabilitados y aun no inicializado
74
+ if (!this.adsService.isInitialized()) {
75
+ return false;
76
+ }
77
+ return true;
78
+ });
79
+ /** Ancho del skeleton */
80
+ this.skeletonWidth = computed(() => {
81
+ const firstSize = this.getFirstSize();
82
+ return firstSize ? `${firstSize[0]}px` : '100%';
83
+ });
84
+ /** Altura del skeleton */
85
+ this.skeletonHeight = computed(() => {
86
+ const firstSize = this.getFirstSize();
87
+ return firstSize ? `${firstSize[1]}px` : this.minHeight;
88
+ });
89
+ }
90
+ // ===========================================================================
91
+ // LIFECYCLE
92
+ // ===========================================================================
93
+ async ngOnInit() {
94
+ if (!this.shouldRender()) {
95
+ return;
96
+ }
97
+ await this.initializeSlot();
98
+ }
99
+ ngOnDestroy() {
100
+ if (isPlatformBrowser(this.platformId)) {
101
+ this.adsService.destroySlot(this.slotId);
102
+ }
103
+ }
104
+ // ===========================================================================
105
+ // PRIVATE
106
+ // ===========================================================================
107
+ async initializeSlot() {
108
+ this._state.set('loading');
109
+ const config = {
110
+ slotId: this.slotId,
111
+ adUnitPath: this.adUnitPath,
112
+ size: this.size,
113
+ sizeMapping: this.sizeMapping,
114
+ targeting: this.targeting,
115
+ collapseEmpty: this.collapseEmpty,
116
+ isNative: this.isNative,
117
+ cssClass: this.cssClass,
118
+ minHeight: this.minHeight,
119
+ showSkeleton: this.showSkeleton,
120
+ };
121
+ const result = await this.adsService.defineSlot(config);
122
+ if (result) {
123
+ this._state.set('rendered');
124
+ }
125
+ else {
126
+ this._state.set(this.adsService.getSlotState(this.slotId));
127
+ }
128
+ }
129
+ getFirstSize() {
130
+ if (typeof this.size === 'string') {
131
+ const mapped = AD_SIZE_MAP[this.size];
132
+ return mapped === 'fluid' ? null : mapped;
133
+ }
134
+ if (Array.isArray(this.size)) {
135
+ if (typeof this.size[0] === 'number') {
136
+ return this.size;
137
+ }
138
+ if (typeof this.size[0] === 'string') {
139
+ const first = AD_SIZE_MAP[this.size[0]];
140
+ return first === 'fluid' ? null : first;
141
+ }
142
+ if (Array.isArray(this.size[0])) {
143
+ return this.size[0];
144
+ }
145
+ }
146
+ return null;
147
+ }
148
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AdSlotComponent, isStandalone: true, selector: "val-ad-slot", inputs: { slotId: "slotId", adUnitPath: "adUnitPath", size: "size", sizeMapping: "sizeMapping", targeting: "targeting", collapseEmpty: "collapseEmpty", isNative: "isNative", cssClass: "cssClass", minHeight: "minHeight", showSkeleton: "showSkeleton" }, ngImport: i0, template: `
150
+ @if (shouldRender()) {
151
+ <div
152
+ class="val-ad-slot"
153
+ [class.val-ad-slot--loading]="state() === 'loading'"
154
+ [class.val-ad-slot--rendered]="state() === 'rendered'"
155
+ [class.val-ad-slot--empty]="state() === 'empty'"
156
+ [class.val-ad-slot--hidden]="state() === 'hidden'"
157
+ [class.val-ad-slot--native]="isNative"
158
+ [class]="cssClass"
159
+ [style.min-height]="minHeight"
160
+ >
161
+ <!-- Skeleton mientras carga -->
162
+ @if (showSkeleton && state() === 'loading') {
163
+ <div
164
+ class="val-ad-slot__skeleton"
165
+ [style.width]="skeletonWidth()"
166
+ [style.height]="skeletonHeight()"
167
+ ></div>
168
+ }
169
+
170
+ <!-- Container del ad -->
171
+ <div
172
+ [id]="slotId"
173
+ class="val-ad-slot__container"
174
+ [class.val-ad-slot__container--hidden]="state() === 'loading' && showSkeleton"
175
+ ></div>
176
+
177
+ <!-- Debug info -->
178
+ @if (adsService.isDebugMode()) {
179
+ <div class="val-ad-slot__debug">
180
+ <small>{{ slotId }} | {{ adUnitPath }} | {{ state() }}</small>
181
+ </div>
182
+ }
183
+ </div>
184
+ }
185
+ `, isInline: true, styles: [".val-ad-slot{position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden}.val-ad-slot--loading{background-color:var(--ion-color-light, #f4f4f4)}.val-ad-slot--empty,.val-ad-slot--hidden{display:none!important}.val-ad-slot--native{width:100%}.val-ad-slot__skeleton{background:linear-gradient(90deg,var(--ion-color-light, #f4f4f4) 25%,var(--ion-color-light-shade, #e0e0e0) 50%,var(--ion-color-light, #f4f4f4) 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite;border-radius:4px}.val-ad-slot__container--hidden{visibility:hidden;position:absolute}.val-ad-slot__debug{position:absolute;bottom:0;left:0;background:#000000b3;color:#fff;padding:2px 6px;font-size:10px;z-index:1000;font-family:monospace}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
186
+ }
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdSlotComponent, decorators: [{
188
+ type: Component,
189
+ args: [{ selector: 'val-ad-slot', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
190
+ @if (shouldRender()) {
191
+ <div
192
+ class="val-ad-slot"
193
+ [class.val-ad-slot--loading]="state() === 'loading'"
194
+ [class.val-ad-slot--rendered]="state() === 'rendered'"
195
+ [class.val-ad-slot--empty]="state() === 'empty'"
196
+ [class.val-ad-slot--hidden]="state() === 'hidden'"
197
+ [class.val-ad-slot--native]="isNative"
198
+ [class]="cssClass"
199
+ [style.min-height]="minHeight"
200
+ >
201
+ <!-- Skeleton mientras carga -->
202
+ @if (showSkeleton && state() === 'loading') {
203
+ <div
204
+ class="val-ad-slot__skeleton"
205
+ [style.width]="skeletonWidth()"
206
+ [style.height]="skeletonHeight()"
207
+ ></div>
208
+ }
209
+
210
+ <!-- Container del ad -->
211
+ <div
212
+ [id]="slotId"
213
+ class="val-ad-slot__container"
214
+ [class.val-ad-slot__container--hidden]="state() === 'loading' && showSkeleton"
215
+ ></div>
216
+
217
+ <!-- Debug info -->
218
+ @if (adsService.isDebugMode()) {
219
+ <div class="val-ad-slot__debug">
220
+ <small>{{ slotId }} | {{ adUnitPath }} | {{ state() }}</small>
221
+ </div>
222
+ }
223
+ </div>
224
+ }
225
+ `, styles: [".val-ad-slot{position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden}.val-ad-slot--loading{background-color:var(--ion-color-light, #f4f4f4)}.val-ad-slot--empty,.val-ad-slot--hidden{display:none!important}.val-ad-slot--native{width:100%}.val-ad-slot__skeleton{background:linear-gradient(90deg,var(--ion-color-light, #f4f4f4) 25%,var(--ion-color-light-shade, #e0e0e0) 50%,var(--ion-color-light, #f4f4f4) 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite;border-radius:4px}.val-ad-slot__container--hidden{visibility:hidden;position:absolute}.val-ad-slot__debug{position:absolute;bottom:0;left:0;background:#000000b3;color:#fff;padding:2px 6px;font-size:10px;z-index:1000;font-family:monospace}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}\n"] }]
226
+ }], propDecorators: { slotId: [{
227
+ type: Input,
228
+ args: [{ required: true }]
229
+ }], adUnitPath: [{
230
+ type: Input,
231
+ args: [{ required: true }]
232
+ }], size: [{
233
+ type: Input
234
+ }], sizeMapping: [{
235
+ type: Input
236
+ }], targeting: [{
237
+ type: Input
238
+ }], collapseEmpty: [{
239
+ type: Input
240
+ }], isNative: [{
241
+ type: Input
242
+ }], cssClass: [{
243
+ type: Input
244
+ }], minHeight: [{
245
+ type: Input
246
+ }], showSkeleton: [{
247
+ type: Input
248
+ }] } });
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWQtc2xvdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2FkLXNsb3QvYWQtc2xvdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsV0FBVyxFQUNYLHVCQUF1QixHQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBc0QsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBMkc5RyxNQUFNLE9BQU8sZUFBZTtJQXpHNUI7UUEwR1csZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBWWxELG9CQUFvQjtRQUNYLFNBQUksR0FBc0Usa0JBQWtCLENBQUM7UUFRdEcsd0JBQXdCO1FBQ2Ysa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFOUIsbUJBQW1CO1FBQ1YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQiwwQkFBMEI7UUFDakIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUV2QixvQkFBb0I7UUFDWCxjQUFTLEdBQUcsTUFBTSxDQUFDO1FBRTVCLHVCQUF1QjtRQUNkLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRTdCLDhFQUE4RTtRQUM5RSxTQUFTO1FBQ1QsOEVBQThFO1FBRTdELFdBQU0sR0FBRyxNQUFNLENBQWMsTUFBTSxDQUFDLENBQUM7UUFDN0MsVUFBSyxH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NULDg0QkF0Q1MsWUFBWTs7NEZBc0dYLGVBQWU7a0JBekczQixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBQ04sdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NUOzhCQXlFMEIsTUFBTTtzQkFBaEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBR0UsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBR2hCLElBQUk7c0JBQVosS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZCBTbG90IENvbXBvbmVudFxuICpcbiAqIENvbXBvbmVudGUgc3RhbmRhbG9uZSBwYXJhIG1vc3RyYXIgYWRzIGRlIEdvb2dsZSBBZCBNYW5hZ2VyLlxuICogU2UgaW50ZWdyYSBhdXRvbWF0aWNhbWVudGUgY29uIGVsIHNlcnZpY2lvIGRlIEFkcyB5IHJlc3BldGEgY29uc2VudCArIHByZW1pdW0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDwhLS0gQmFubmVyIGJhc2ljbyAtLT5cbiAqIDx2YWwtYWQtc2xvdFxuICogICBzbG90SWQ9XCJob21lcGFnZS10b3BcIlxuICogICBhZFVuaXRQYXRoPVwiL2hvbWVwYWdlL3RvcFwiXG4gKiAgIHNpemU9XCJsZWFkZXJib2FyZFwiXG4gKiAvPlxuICpcbiAqIDwhLS0gQ29uIHJlc3BvbnNpdm8gLS0+XG4gKiA8dmFsLWFkLXNsb3RcbiAqICAgc2xvdElkPVwic2lkZWJhci1hZFwiXG4gKiAgIGFkVW5pdFBhdGg9XCIvc2lkZWJhclwiXG4gKiAgIFtzaXplXT1cIlsnbWVkaXVtLXJlY3RhbmdsZScsICdoYWxmLXBhZ2UnXVwiXG4gKiAgIFtzaXplTWFwcGluZ109XCJbXG4gKiAgICAgeyB2aWV3cG9ydFdpZHRoOiAxMDI0LCBzaXplczogW1szMDAsIDYwMF1dIH0sXG4gKiAgICAgeyB2aWV3cG9ydFdpZHRoOiA3NjgsIHNpemVzOiBbWzMwMCwgMjUwXV0gfSxcbiAqICAgICB7IHZpZXdwb3J0V2lkdGg6IDAsIHNpemVzOiBbWzMyMCwgNTBdXSB9XG4gKiAgIF1cIlxuICogLz5cbiAqXG4gKiA8IS0tIE5hdGl2ZSBhZCAtLT5cbiAqIDx2YWwtYWQtc2xvdFxuICogICBzbG90SWQ9XCJhcnRpY2xlLW5hdGl2ZVwiXG4gKiAgIGFkVW5pdFBhdGg9XCIvYXJ0aWNsZS9uYXRpdmVcIlxuICogICBzaXplPVwibmF0aXZlXCJcbiAqICAgW2lzTmF0aXZlXT1cInRydWVcIlxuICogLz5cbiAqIGBgYFxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIFBMQVRGT1JNX0lELFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFkc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hZHMvYWRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRTbG90Q29uZmlnLCBBZFNsb3RTaXplLCBBZFNsb3RTdGF0ZSwgU2l6ZU1hcHBpbmcsIEFEX1NJWkVfTUFQIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWRzL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWFkLXNsb3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChzaG91bGRSZW5kZXIoKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInZhbC1hZC1zbG90XCJcbiAgICAgICAgW2NsYXNzLnZhbC1hZC1zbG90LS1sb2FkaW5nXT1cInN0YXRlKCkgPT09ICdsb2FkaW5nJ1wiXG4gICAgICAgIFtjbGFzcy52YWwtYWQtc2xvdC0tcmVuZGVyZWRdPVwic3RhdGUoKSA9PT0gJ3JlbmRlcmVkJ1wiXG4gICAgICAgIFtjbGFzcy52YWwtYWQtc2xvdC0tZW1wdHldPVwic3RhdGUoKSA9PT0gJ2VtcHR5J1wiXG4gICAgICAgIFtjbGFzcy52YWwtYWQtc2xvdC0taGlkZGVuXT1cInN0YXRlKCkgPT09ICdoaWRkZW4nXCJcbiAgICAgICAgW2NsYXNzLnZhbC1hZC1zbG90LS1uYXRpdmVdPVwiaXNOYXRpdmVcIlxuICAgICAgICBbY2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICBbc3R5bGUubWluLWhlaWdodF09XCJtaW5IZWlnaHRcIlxuICAgICAgPlxuICAgICAgICA8IS0tIFNrZWxldG9uIG1pZW50cmFzIGNhcmdhIC0tPlxuICAgICAgICBAaWYgKHNob3dTa2VsZXRvbiAmJiBzdGF0ZSgpID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZhbC1hZC1zbG90X19za2VsZXRvblwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwic2tlbGV0b25XaWR0aCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwic2tlbGV0b25IZWlnaHQoKVwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBDb250YWluZXIgZGVsIGFkIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW2lkXT1cInNsb3RJZFwiXG4gICAgICAgICAgY2xhc3M9XCJ2YWwtYWQtc2xvdF9fY29udGFpbmVyXCJcbiAgICAgICAgICBbY2xhc3MudmFsLWFkLXNsb3RfX2NvbnRhaW5lci0taGlkZGVuXT1cInN0YXRlKCkgPT09ICdsb2FkaW5nJyAmJiBzaG93U2tlbGV0b25cIlxuICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgPCEtLSBEZWJ1ZyBpbmZvIC0tPlxuICAgICAgICBAaWYgKGFkc1NlcnZpY2UuaXNEZWJ1Z01vZGUoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtYWQtc2xvdF9fZGVidWdcIj5cbiAgICAgICAgICAgIDxzbWFsbD57eyBzbG90SWQgfX0gfCB7eyBhZFVuaXRQYXRoIH19IHwge3sgc3RhdGUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnZhbC1hZC1zbG90IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLnZhbC1hZC1zbG90LS1sb2FkaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNGY0KTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1hZC1zbG90LS1lbXB0eSxcbiAgICAgIC52YWwtYWQtc2xvdC0taGlkZGVuIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAudmFsLWFkLXNsb3QtLW5hdGl2ZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAudmFsLWFkLXNsb3RfX3NrZWxldG9uIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgIDkwZGVnLFxuICAgICAgICAgIHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjRmNCkgMjUlLFxuICAgICAgICAgIHZhcigtLWlvbi1jb2xvci1saWdodC1zaGFkZSwgI2UwZTBlMCkgNTAlLFxuICAgICAgICAgIHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjRmNCkgNzUlXG4gICAgICAgICk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlO1xuICAgICAgICBhbmltYXRpb246IHNrZWxldG9uLWxvYWRpbmcgMS41cyBpbmZpbml0ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgfVxuXG4gICAgICAudmFsLWFkLXNsb3RfX2NvbnRhaW5lci0taGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB9XG5cbiAgICAgIC52YWwtYWQtc2xvdF9fZGVidWcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjcpO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBza2VsZXRvbi1sb2FkaW5nIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDIwMCUgMDtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjAwJSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWRTbG90Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICByZWFkb25seSBhZHNTZXJ2aWNlID0gaW5qZWN0KEFkc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTlBVVFMgKENvbmZpZ3VyYWNpb24gZGVsIHNsb3QpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBJRCB1bmljbyBkZWwgc2xvdCAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzbG90SWQhOiBzdHJpbmc7XG5cbiAgLyoqIEFkIHVuaXQgcGF0aCAoc2luIGVsIG5ldHdvcmsgSUQpICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGFkVW5pdFBhdGghOiBzdHJpbmc7XG5cbiAgLyoqIFRhbWFubyBkZWwgYWQgKi9cbiAgQElucHV0KCkgc2l6ZTogQWRTbG90U2l6ZSB8IEFkU2xvdFNpemVbXSB8IFtudW1iZXIsIG51bWJlcl0gfCBbbnVtYmVyLCBudW1iZXJdW10gPSAnbWVkaXVtLXJlY3RhbmdsZSc7XG5cbiAgLyoqIE1hcHBpbmcgcmVzcG9uc2l2byAqL1xuICBASW5wdXQoKSBzaXplTWFwcGluZz86IFNpemVNYXBwaW5nW107XG5cbiAgLyoqIFRhcmdldGluZyBlc3BlY2lmaWNvICovXG4gIEBJbnB1dCgpIHRhcmdldGluZz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPjtcblxuICAvKiogQ29sYXBzYXIgc2kgdmFjaW8gKi9cbiAgQElucHV0KCkgY29sbGFwc2VFbXB0eSA9IHRydWU7XG5cbiAgLyoqIEVzIG5hdGl2ZSBhZCAqL1xuICBASW5wdXQoKSBpc05hdGl2ZSA9IGZhbHNlO1xuXG4gIC8qKiBDU1MgY2xhc3MgYWRpY2lvbmFsICovXG4gIEBJbnB1dCgpIGNzc0NsYXNzID0gJyc7XG5cbiAgLyoqIEFsdHVyYSBtaW5pbWEgKi9cbiAgQElucHV0KCkgbWluSGVpZ2h0ID0gJzkwcHgnO1xuXG4gIC8qKiBNb3N0cmFyIHNrZWxldG9uICovXG4gIEBJbnB1dCgpIHNob3dTa2VsZXRvbiA9IHRydWU7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVTVEFET1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSA9IHNpZ25hbDxBZFNsb3RTdGF0ZT4oJ2lkbGUnKTtcbiAgcmVhZG9ubHkgc3RhdGUgPSB0aGlzLl9zdGF0ZS5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIEluZGljYSBzaSBlbCBjb21wb25lbnRlIGRlYmUgcmVuZGVyaXphcnNlICovXG4gIHJlYWRvbmx5IHNob3VsZFJlbmRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAvLyBObyByZW5kZXJpemFyIGVuIFNTUlxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE5vIHJlbmRlcml6YXIgc2kgdXN1YXJpbyBlcyBwcmVtaXVtXG4gICAgaWYgKHRoaXMuYWRzU2VydmljZS5pc1ByZW1pdW1Vc2VyKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBObyByZW5kZXJpemFyIHNpIGFkcyBlc3RhbiBkZXNoYWJpbGl0YWRvcyB5IGF1biBubyBpbmljaWFsaXphZG9cbiAgICBpZiAoIXRoaXMuYWRzU2VydmljZS5pc0luaXRpYWxpemVkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgLyoqIEFuY2hvIGRlbCBza2VsZXRvbiAqL1xuICByZWFkb25seSBza2VsZXRvbldpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGZpcnN0U2l6ZSA9IHRoaXMuZ2V0Rmlyc3RTaXplKCk7XG4gICAgcmV0dXJuIGZpcnN0U2l6ZSA/IGAke2ZpcnN0U2l6ZVswXX1weGAgOiAnMTAwJSc7XG4gIH0pO1xuXG4gIC8qKiBBbHR1cmEgZGVsIHNrZWxldG9uICovXG4gIHJlYWRvbmx5IHNrZWxldG9uSGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGZpcnN0U2l6ZSA9IHRoaXMuZ2V0Rmlyc3RTaXplKCk7XG4gICAgcmV0dXJuIGZpcnN0U2l6ZSA/IGAke2ZpcnN0U2l6ZVsxXX1weGAgOiB0aGlzLm1pbkhlaWdodDtcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExJRkVDWUNMRVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVuZGVyKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVTbG90KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5hZHNTZXJ2aWNlLmRlc3Ryb3lTbG90KHRoaXMuc2xvdElkKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJJVkFURVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemVTbG90KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX3N0YXRlLnNldCgnbG9hZGluZycpO1xuXG4gICAgY29uc3QgY29uZmlnOiBBZFNsb3RDb25maWcgPSB7XG4gICAgICBzbG90SWQ6IHRoaXMuc2xvdElkLFxuICAgICAgYWRVbml0UGF0aDogdGhpcy5hZFVuaXRQYXRoLFxuICAgICAgc2l6ZTogdGhpcy5zaXplLFxuICAgICAgc2l6ZU1hcHBpbmc6IHRoaXMuc2l6ZU1hcHBpbmcsXG4gICAgICB0YXJnZXRpbmc6IHRoaXMudGFyZ2V0aW5nLFxuICAgICAgY29sbGFwc2VFbXB0eTogdGhpcy5jb2xsYXBzZUVtcHR5LFxuICAgICAgaXNOYXRpdmU6IHRoaXMuaXNOYXRpdmUsXG4gICAgICBjc3NDbGFzczogdGhpcy5jc3NDbGFzcyxcbiAgICAgIG1pbkhlaWdodDogdGhpcy5taW5IZWlnaHQsXG4gICAgICBzaG93U2tlbGV0b246IHRoaXMuc2hvd1NrZWxldG9uLFxuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFkc1NlcnZpY2UuZGVmaW5lU2xvdChjb25maWcpO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgdGhpcy5fc3RhdGUuc2V0KCdyZW5kZXJlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zdGF0ZS5zZXQodGhpcy5hZHNTZXJ2aWNlLmdldFNsb3RTdGF0ZSh0aGlzLnNsb3RJZCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rmlyc3RTaXplKCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuc2l6ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IG1hcHBlZCA9IEFEX1NJWkVfTUFQW3RoaXMuc2l6ZSBhcyBBZFNsb3RTaXplXTtcbiAgICAgIHJldHVybiBtYXBwZWQgPT09ICdmbHVpZCcgPyBudWxsIDogbWFwcGVkO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuc2l6ZSkpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5zaXplWzBdID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdGhpcy5zaXplIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHRoaXMuc2l6ZVswXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSBBRF9TSVpFX01BUFt0aGlzLnNpemVbMF0gYXMgQWRTbG90U2l6ZV07XG4gICAgICAgIHJldHVybiBmaXJzdCA9PT0gJ2ZsdWlkJyA/IG51bGwgOiBmaXJzdDtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuc2l6ZVswXSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZVswXSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
@@ -41,7 +41,7 @@ export class ButtonGroupComponent {
41
41
  [ngStyle]="{ width: props.buttons.length === 1 ? '100%' : 'auto' }"
42
42
  ></val-button>
43
43
  </div>
44
- `, 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;--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)}val-button{display:inline-block;margin-top:.25rem;margin-right:.25rem}.group-container{width:100%}.group-container.left{text-align:left}.group-container.center{text-align:center}.group-container.right{text-align:right}.group-container.column{display:flex;flex-direction:column-reverse}.group-container.spaced{display:flex;justify-content:space-between}.group-container.leftocenter{text-align:left}@media (min-width: 768px){.group-container.leftocenter{text-align:center}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["props"], outputs: ["onClick"] }] }); }
44
+ `, 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;--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)}val-button{display:inline-block;margin-top:.25rem;margin-right:.25rem}.group-container{width:100%}.group-container.left{text-align:left}.group-container.center{text-align:center}.group-container.right{text-align:right}.group-container.column{display:flex;flex-direction:column-reverse}.group-container.spaced{display:flex;justify-content:space-between}.group-container.leftocenter{text-align:left}@media (min-width: 768px){.group-container.leftocenter{text-align:center}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
45
45
  }
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ButtonGroupComponent, decorators: [{
47
47
  type: Component,