valtech-components 2.0.500 → 2.0.502
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/atoms/button/button.component.mjs +87 -48
- package/esm2022/lib/components/molecules/action-header/action-header.component.mjs +1 -1
- package/esm2022/lib/components/molecules/ad-slot/ad-slot.component.mjs +249 -0
- package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +1 -1
- package/esm2022/lib/components/molecules/card/card.component.mjs +2 -2
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +1 -1
- package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +2 -2
- package/esm2022/lib/components/organisms/article/article.component.mjs +2 -2
- package/esm2022/lib/components/organisms/menu/menu.component.mjs +1 -1
- package/esm2022/lib/components/templates/page-template/page-template.component.mjs +1 -1
- package/esm2022/lib/services/ads/ads-consent.service.mjs +152 -0
- package/esm2022/lib/services/ads/ads-loader.service.mjs +160 -0
- package/esm2022/lib/services/ads/ads.service.mjs +449 -0
- package/esm2022/lib/services/ads/config.mjs +118 -0
- package/esm2022/lib/services/ads/index.mjs +14 -0
- package/esm2022/lib/services/ads/types.mjs +23 -0
- package/esm2022/public-api.mjs +6 -1
- package/fesm2022/valtech-components.mjs +1330 -154
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/button/button.component.d.ts +30 -6
- package/lib/components/molecules/ad-slot/ad-slot.component.d.ts +78 -0
- package/lib/services/ads/ads-consent.service.d.ts +59 -0
- package/lib/services/ads/ads-loader.service.d.ts +46 -0
- package/lib/services/ads/ads.service.d.ts +123 -0
- package/lib/services/ads/config.d.ts +69 -0
- package/lib/services/ads/index.d.ts +10 -0
- package/lib/services/ads/types.d.ts +163 -0
- package/package.json +1 -1
- 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
|
|
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
|
|
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,
|
|
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
|
-
*
|
|
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.
|
|
49
|
-
if (this.
|
|
50
|
-
this.displayText = this.interpolateContent(this.
|
|
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.
|
|
90
|
+
this.displayText = this.resolvedProps.text;
|
|
54
91
|
}
|
|
55
92
|
}
|
|
56
|
-
else if (this.
|
|
93
|
+
else if (this.resolvedProps.contentFallback) {
|
|
57
94
|
// Backwards compatibility: use fallback if text is not provided
|
|
58
|
-
this.displayText = this.
|
|
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.
|
|
111
|
+
if (this.resolvedProps.state === this.states.DISABLED) {
|
|
75
112
|
return;
|
|
76
113
|
}
|
|
77
|
-
if (this.
|
|
78
|
-
this.navigation.navigateByUrl(this.
|
|
114
|
+
if (this.resolvedProps.actionType === ActionType.APP_NAVIGATION) {
|
|
115
|
+
this.navigation.navigateByUrl(this.resolvedProps.link);
|
|
79
116
|
}
|
|
80
|
-
if (this.
|
|
81
|
-
this.download.downloadLinkFromBrowser(this.
|
|
117
|
+
if (this.resolvedProps.download) {
|
|
118
|
+
this.download.downloadLinkFromBrowser(this.resolvedProps.download);
|
|
82
119
|
}
|
|
83
|
-
if (this.
|
|
84
|
-
this.
|
|
120
|
+
if (this.resolvedProps.handler) {
|
|
121
|
+
this.resolvedProps.handler(this.resolvedProps.ref);
|
|
85
122
|
}
|
|
86
|
-
this.onClick.emit(this.
|
|
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]="
|
|
92
|
-
[color]="
|
|
93
|
-
[expand]="
|
|
94
|
-
[fill]="
|
|
95
|
-
[size]="
|
|
96
|
-
[href]="
|
|
97
|
-
[target]="
|
|
98
|
-
[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]="
|
|
101
|
-
[ngClass]="
|
|
137
|
+
[disabled]="resolvedProps.state === states.DISABLED"
|
|
138
|
+
[ngClass]="resolvedProps.size ? [resolvedProps.size] : []"
|
|
102
139
|
>
|
|
103
|
-
<ion-icon *ngIf="
|
|
104
|
-
<ion-spinner *ngIf="
|
|
105
|
-
<ion-text *ngIf="
|
|
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]="
|
|
114
|
-
[color]="
|
|
115
|
-
[expand]="
|
|
116
|
-
[fill]="
|
|
117
|
-
[size]="
|
|
118
|
-
[href]="
|
|
119
|
-
[target]="
|
|
120
|
-
[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]="
|
|
123
|
-
[ngClass]="
|
|
159
|
+
[disabled]="resolvedProps.state === states.DISABLED"
|
|
160
|
+
[ngClass]="resolvedProps.size ? [resolvedProps.size] : []"
|
|
124
161
|
>
|
|
125
|
-
<ion-icon *ngIf="
|
|
126
|
-
<ion-spinner *ngIf="
|
|
127
|
-
<ion-text *ngIf="
|
|
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: {
|
|
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,
|