valtech-components 2.0.779 → 2.0.780
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/user-avatar/types.mjs +2 -0
- package/esm2022/lib/components/atoms/user-avatar/user-avatar.component.mjs +162 -0
- package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +70 -77
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +32 -14
- package/esm2022/lib/components/types.mjs +1 -1
- package/esm2022/lib/services/auth/auth-state.service.mjs +29 -8
- package/esm2022/lib/services/auth/auth.service.mjs +18 -17
- package/esm2022/lib/services/auth/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/valtech-components.mjs +301 -111
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/user-avatar/types.d.ts +74 -0
- package/lib/components/atoms/user-avatar/user-avatar.component.d.ts +50 -0
- package/lib/components/molecules/notes-box/notes-box.component.d.ts +27 -15
- package/lib/components/types.d.ts +11 -0
- package/lib/services/auth/auth-state.service.d.ts +14 -0
- package/lib/services/auth/auth.service.d.ts +8 -4
- package/lib/services/auth/types.d.ts +8 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvdXNlci1hdmF0YXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhY2nDs24gZGVsIGNvbXBvbmVudGUgYHZhbC11c2VyLWF2YXRhcmAuXG4gKlxuICogQXZhdGFyIHNtYXJ0IGNvbiBjYWRlbmEgZGUgZmFsbGJhY2s6XG4gKiAgIGZvdG8gKGBhdmF0YXJVcmxgKSDihpIgaW5pY2lhbGVzIChkZSBgbmFtZWAvYGVtYWlsYCkg4oaSIGljb25vIHBlcnNvbmEuXG4gKlxuICogRGlzZcOxYWRvIHBhcmEgaGVhZGVycywgcGVyZmlsZXMsIGxpc3RhcyBkZSB1c3VhcmlvcyB5IGRyb3Bkb3ducy5cbiAqXG4gKiBAZXhhbXBsZSBDb24gdXNlciBjb21wbGV0byAoZ3JlZXRpbmcgaGVybyk6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJ7IHVzZXI6IGF1dGgudXNlcigpLCBzaXplOiAnbWVkaXVtJyB9XCIgLz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFN0YW5kYWxvbmUgZmllbGRzOlxuICogYGBgaHRtbFxuICogPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwieyBuYW1lOiAnSnVhbiBQw6lyZXonLCBhdmF0YXJVcmw6ICcvYS5qcGcnLCBzaXplOiAnc21hbGwnIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgSGVhZGVyIGF2YXRhciBjbGlja2FibGUgKGxpbmsgYSAvcHJvZmlsZSk6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJ7IHVzZXI6IGF1dGgudXNlcigpIH1cIiAob25DbGljayk9XCJnb1RvUHJvZmlsZSgpXCIgLz5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJBdmF0YXJNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBVc2VyIHNoYXBlIOKAlCBwYXNhIGVsIHJlc3VsdGFkbyBkZSBgYXV0aC51c2VyKClgIGRpcmVjdGFtZW50ZS4gQ3VhbHF1aWVyXG4gICAqIGNvbWJpbmFjacOzbiBkZSBgbmFtZWAvYGF2YXRhclVybGAvYGVtYWlsYCBzZSBhY2VwdGEuIFRpZW5lbiBwcmVjZWRlbmNpYVxuICAgKiBzb2JyZSBsb3MgcHJvcHMgc3VlbHRvcyAoYG5hbWVgLCBgZW1haWxgLCBgYXZhdGFyVXJsYCkgYWJham8uXG4gICAqL1xuICB1c2VyPzoge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgYXZhdGFyVXJsPzogc3RyaW5nO1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIGhhbmRsZT86IHN0cmluZztcbiAgfSB8IG51bGw7XG5cbiAgLyoqIE5vbWJyZSBkaXJlY3RvIOKAlCB1c2FkbyBzaSBubyBoYXkgYHVzZXJgIG8gc2kgYHVzZXIubmFtZWAgZXN0w6EgdmFjw61vLiAqL1xuICBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBFbWFpbCBkaXJlY3RvIOKAlCB1c2FkbyBzaSBubyBoYXkgYHVzZXJgIG8gc2kgYHVzZXIuZW1haWxgIGVzdMOhIHZhY8Otby4gKi9cbiAgZW1haWw/OiBzdHJpbmc7XG5cbiAgLyoqIFVSTCBkZSBhdmF0YXIgZGlyZWN0YSDigJQgdXNhZG8gc2kgbm8gaGF5IGB1c2VyYCBvIHNpIGB1c2VyLmF2YXRhclVybGAgZXN0w6EgdmFjw61vLiAqL1xuICBhdmF0YXJVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhbWHDsW86XG4gICAqIC0gYCd4c21hbGwnYCAyNHB4XG4gICAqIC0gYCdzbWFsbCdgIChkZWZhdWx0KSAzMnB4XG4gICAqIC0gYCdtZWRpdW0nYCA0OHB4XG4gICAqIC0gYCdsYXJnZSdgIDcycHhcbiAgICogLSBgJ3hsYXJnZSdgIDk2cHhcbiAgICovXG4gIHNpemU/OiAneHNtYWxsJyB8ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJztcblxuICAvKipcbiAgICogRm9ybWE6XG4gICAqIC0gYCdjaXJjbGUnYCAoZGVmYXVsdCkg4oCUIHJlZG9uZG8gY29tcGxldG9cbiAgICogLSBgJ3NxdWFyZSdgIOKAlCBib3JkZXMgcmVkb25kZWFkb3MgcGVybyBjdWFkcmFkb1xuICAgKi9cbiAgc2hhcGU/OiAnY2lyY2xlJyB8ICdzcXVhcmUnO1xuXG4gIC8qKlxuICAgKiBDb2xvciBkZSBmb25kbyBwYXJhIGVsIG1vZG8gaW5pY2lhbGVzL2ljb25vLiBDdWFuZG8gbm8gc2UgcHJvdmVlLCBzZVxuICAgKiBkZXJpdmUgZGV0ZXJtaW5pc3RpY2FtZW50ZSBkZWwgYG5hbWVgL2BlbWFpbGAgKG1pc21vIGlucHV0IOKGkiBtaXNtbyBjb2xvcilcbiAgICogcGFyYSBxdWUgZWwgbWlzbW8gdXNlciB0ZW5nYSBzaWVtcHJlIGVsIG1pc21vIGNvbG9yLlxuICAgKi9cbiAgYmFja2dyb3VuZD86IHN0cmluZztcblxuICAvKiogQ29sb3IgZGVsIHRleHRvL2ljb25vIGN1YW5kbyBubyBoYXkgZm90by4gRGVmYXVsdCBgJyNmZmYnYC4gKi9cbiAgZm9yZWdyb3VuZD86IHN0cmluZztcblxuICAvKipcbiAgICogTW9zdHJhciBib3JkZXIuIMOadGlsIHBhcmEgb3ZlcmxheXMgc29icmUgZm90b3MgbyBiYWNrZ3JvdW5kcyBkYXJrLlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgLlxuICAgKi9cbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xuXG4gIC8qKiBIYWJpbGl0YSBncmF5c2NhbGUgKGUuZy4sIHVzZXIgZGVzYWN0aXZhZG8pLiBEZWZhdWx0OiBgZmFsc2VgLiAqL1xuICBncmF5c2NhbGU/OiBib29sZWFuO1xuXG4gIC8qKiBDbGFzZSBDU1MgZXh0cmEuICovXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, computed, EventEmitter, Input, Output, signal } from '@angular/core';
|
|
3
|
+
import { IonIcon } from '@ionic/angular/standalone';
|
|
4
|
+
import { addIcons } from 'ionicons';
|
|
5
|
+
import { personOutline } from 'ionicons/icons';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
addIcons({ personOutline });
|
|
8
|
+
/**
|
|
9
|
+
* `val-user-avatar`
|
|
10
|
+
*
|
|
11
|
+
* Avatar **smart** con cadena de fallback automática:
|
|
12
|
+
*
|
|
13
|
+
* foto (`avatarUrl`) → iniciales (de `name`/`email`) → icono persona.
|
|
14
|
+
*
|
|
15
|
+
* Si la imagen falla en cargar (404, CORS, etc.), automáticamente cae a las
|
|
16
|
+
* iniciales sin que el caller tenga que hacer nada. Color de fondo derivado
|
|
17
|
+
* deterministicamente del user para que el mismo user tenga siempre el mismo
|
|
18
|
+
* color (a menos que `background` se sobrescriba).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```html
|
|
22
|
+
* <val-user-avatar [props]="{ user: auth.user() }" (onClick)="goProfile()" />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export class UserAvatarComponent {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.props_ = signal({});
|
|
28
|
+
this.imageFailed = signal(false);
|
|
29
|
+
this.onClick = new EventEmitter();
|
|
30
|
+
this.resolvedProps = computed(() => this.props_());
|
|
31
|
+
/** Resuelve los campos del user (user prop > campos sueltos). */
|
|
32
|
+
this.resolvedUser = computed(() => {
|
|
33
|
+
const p = this.resolvedProps();
|
|
34
|
+
return {
|
|
35
|
+
name: p.user?.name?.trim() || p.name?.trim() || '',
|
|
36
|
+
email: p.user?.email?.trim() || p.email?.trim() || '',
|
|
37
|
+
avatarUrl: p.user?.avatarUrl?.trim() || p.avatarUrl?.trim() || '',
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
/** URL de imagen — empty si no hay o si la carga falló. */
|
|
41
|
+
this.imageUrl = computed(() => this.resolvedUser().avatarUrl);
|
|
42
|
+
this.showImage = computed(() => !!this.imageUrl() && !this.imageFailed());
|
|
43
|
+
/** Iniciales — 1-2 chars derivados de name (preferred) o email prefix. */
|
|
44
|
+
this.initials = computed(() => {
|
|
45
|
+
const { name, email } = this.resolvedUser();
|
|
46
|
+
if (name) {
|
|
47
|
+
const parts = name.split(/\s+/).filter(Boolean);
|
|
48
|
+
if (parts.length >= 2)
|
|
49
|
+
return parts[0][0] + parts[1][0];
|
|
50
|
+
if (parts.length === 1 && parts[0].length >= 2) {
|
|
51
|
+
return parts[0].slice(0, 2);
|
|
52
|
+
}
|
|
53
|
+
return parts[0]?.[0] ?? '';
|
|
54
|
+
}
|
|
55
|
+
if (email) {
|
|
56
|
+
const prefix = email.split('@')[0] ?? '';
|
|
57
|
+
// Tomar 1-2 chars del prefix
|
|
58
|
+
if (prefix.length >= 2)
|
|
59
|
+
return prefix.slice(0, 2);
|
|
60
|
+
return prefix[0] ?? '';
|
|
61
|
+
}
|
|
62
|
+
return '';
|
|
63
|
+
});
|
|
64
|
+
this.sizeClass = computed(() => this.resolvedProps().size || 'small');
|
|
65
|
+
this.shapeClass = computed(() => this.resolvedProps().shape || 'circle');
|
|
66
|
+
/** Background — explicito o derivado deterministicamente del user. */
|
|
67
|
+
this.bgColor = computed(() => {
|
|
68
|
+
const p = this.resolvedProps();
|
|
69
|
+
if (p.background)
|
|
70
|
+
return p.background;
|
|
71
|
+
const { name, email } = this.resolvedUser();
|
|
72
|
+
const seed = name || email || 'val';
|
|
73
|
+
return this.colorFromSeed(seed);
|
|
74
|
+
});
|
|
75
|
+
this.ariaLabel = computed(() => {
|
|
76
|
+
const { name, email } = this.resolvedUser();
|
|
77
|
+
return name || email || 'User avatar';
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
set props(value) {
|
|
81
|
+
this.props_.set(value ?? {});
|
|
82
|
+
this.imageFailed.set(false);
|
|
83
|
+
}
|
|
84
|
+
/** Subscribers — usado para condicionar cursor/aria. */
|
|
85
|
+
get hasClick() {
|
|
86
|
+
return this.onClick.observed;
|
|
87
|
+
}
|
|
88
|
+
onImageError() {
|
|
89
|
+
this.imageFailed.set(true);
|
|
90
|
+
}
|
|
91
|
+
onImageLoad() {
|
|
92
|
+
this.imageFailed.set(false);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Hash determinista string → HSL color del rango Valtech (purples/blues).
|
|
96
|
+
* Mismo seed → mismo color (consistencia entre sessions).
|
|
97
|
+
*/
|
|
98
|
+
colorFromSeed(seed) {
|
|
99
|
+
let hash = 0;
|
|
100
|
+
for (let i = 0; i < seed.length; i++) {
|
|
101
|
+
hash = (hash * 31 + seed.charCodeAt(i)) >>> 0;
|
|
102
|
+
}
|
|
103
|
+
// Restringir a rango violet/blue (240-290°) para coherencia con palette
|
|
104
|
+
const hue = 240 + (hash % 50);
|
|
105
|
+
const sat = 55 + ((hash >>> 8) % 20); // 55-75%
|
|
106
|
+
const light = 38 + ((hash >>> 16) % 12); // 38-50% — siempre legible con fg blanco
|
|
107
|
+
return `hsl(${hue}, ${sat}%, ${light}%)`;
|
|
108
|
+
}
|
|
109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UserAvatarComponent, isStandalone: true, selector: "val-user-avatar", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
|
|
111
|
+
<button
|
|
112
|
+
type="button"
|
|
113
|
+
class="val-user-avatar"
|
|
114
|
+
[class.bordered]="resolvedProps().bordered"
|
|
115
|
+
[class.grayscale]="resolvedProps().grayscale"
|
|
116
|
+
[class.has-click]="hasClick"
|
|
117
|
+
[class]="shapeClass() + ' ' + sizeClass() + ' ' + (resolvedProps().cssClass || '')"
|
|
118
|
+
[style.background]="!showImage() ? bgColor() : 'transparent'"
|
|
119
|
+
[style.color]="resolvedProps().foreground || '#fff'"
|
|
120
|
+
[attr.aria-label]="ariaLabel()"
|
|
121
|
+
(click)="onClick.emit()"
|
|
122
|
+
>
|
|
123
|
+
@if (showImage()) {
|
|
124
|
+
<img class="val-user-avatar__img" [src]="imageUrl()" alt="" (error)="onImageError()" (load)="onImageLoad()" />
|
|
125
|
+
} @else if (initials()) {
|
|
126
|
+
<span class="val-user-avatar__initials">{{ initials() }}</span>
|
|
127
|
+
} @else {
|
|
128
|
+
<ion-icon name="person-outline" class="val-user-avatar__icon" aria-hidden="true" />
|
|
129
|
+
}
|
|
130
|
+
</button>
|
|
131
|
+
`, isInline: true, styles: [":host{display:inline-flex}.val-user-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;padding:0;margin:0;border:none;background:var(--ion-color-medium, #92949c);color:#fff;font-weight:600;font-family:inherit;line-height:1;-webkit-user-select:none;user-select:none;cursor:default;transition:transform .15s ease,box-shadow .15s ease}.val-user-avatar.has-click{cursor:pointer}.val-user-avatar.has-click:hover{transform:scale(1.04)}.val-user-avatar.has-click:active{transform:scale(.96)}.val-user-avatar.circle{border-radius:50%}.val-user-avatar.square{border-radius:8px}.val-user-avatar.xsmall{width:24px;height:24px;font-size:.625rem}.val-user-avatar.small{width:32px;height:32px;font-size:.75rem}.val-user-avatar.medium{width:48px;height:48px;font-size:1rem}.val-user-avatar.large{width:72px;height:72px;font-size:1.5rem}.val-user-avatar.xlarge{width:96px;height:96px;font-size:2rem}.val-user-avatar.bordered{box-shadow:0 0 0 2px var(--ion-background-color, #fff)}.val-user-avatar.grayscale{filter:grayscale(100%)}.val-user-avatar__img{width:100%;height:100%;object-fit:cover;display:block}.val-user-avatar__initials{text-transform:uppercase;letter-spacing:.02em}.val-user-avatar__icon{font-size:60%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
|
|
132
|
+
}
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserAvatarComponent, decorators: [{
|
|
134
|
+
type: Component,
|
|
135
|
+
args: [{ selector: 'val-user-avatar', standalone: true, imports: [CommonModule, IonIcon], template: `
|
|
136
|
+
<button
|
|
137
|
+
type="button"
|
|
138
|
+
class="val-user-avatar"
|
|
139
|
+
[class.bordered]="resolvedProps().bordered"
|
|
140
|
+
[class.grayscale]="resolvedProps().grayscale"
|
|
141
|
+
[class.has-click]="hasClick"
|
|
142
|
+
[class]="shapeClass() + ' ' + sizeClass() + ' ' + (resolvedProps().cssClass || '')"
|
|
143
|
+
[style.background]="!showImage() ? bgColor() : 'transparent'"
|
|
144
|
+
[style.color]="resolvedProps().foreground || '#fff'"
|
|
145
|
+
[attr.aria-label]="ariaLabel()"
|
|
146
|
+
(click)="onClick.emit()"
|
|
147
|
+
>
|
|
148
|
+
@if (showImage()) {
|
|
149
|
+
<img class="val-user-avatar__img" [src]="imageUrl()" alt="" (error)="onImageError()" (load)="onImageLoad()" />
|
|
150
|
+
} @else if (initials()) {
|
|
151
|
+
<span class="val-user-avatar__initials">{{ initials() }}</span>
|
|
152
|
+
} @else {
|
|
153
|
+
<ion-icon name="person-outline" class="val-user-avatar__icon" aria-hidden="true" />
|
|
154
|
+
}
|
|
155
|
+
</button>
|
|
156
|
+
`, styles: [":host{display:inline-flex}.val-user-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;padding:0;margin:0;border:none;background:var(--ion-color-medium, #92949c);color:#fff;font-weight:600;font-family:inherit;line-height:1;-webkit-user-select:none;user-select:none;cursor:default;transition:transform .15s ease,box-shadow .15s ease}.val-user-avatar.has-click{cursor:pointer}.val-user-avatar.has-click:hover{transform:scale(1.04)}.val-user-avatar.has-click:active{transform:scale(.96)}.val-user-avatar.circle{border-radius:50%}.val-user-avatar.square{border-radius:8px}.val-user-avatar.xsmall{width:24px;height:24px;font-size:.625rem}.val-user-avatar.small{width:32px;height:32px;font-size:.75rem}.val-user-avatar.medium{width:48px;height:48px;font-size:1rem}.val-user-avatar.large{width:72px;height:72px;font-size:1.5rem}.val-user-avatar.xlarge{width:96px;height:96px;font-size:2rem}.val-user-avatar.bordered{box-shadow:0 0 0 2px var(--ion-background-color, #fff)}.val-user-avatar.grayscale{filter:grayscale(100%)}.val-user-avatar__img{width:100%;height:100%;object-fit:cover;display:block}.val-user-avatar__initials{text-transform:uppercase;letter-spacing:.02em}.val-user-avatar__icon{font-size:60%}\n"] }]
|
|
157
|
+
}], propDecorators: { props: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], onClick: [{
|
|
160
|
+
type: Output
|
|
161
|
+
}] } });
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hdmF0YXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHL0MsUUFBUSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUU1Qjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQWdJSCxNQUFNLE9BQU8sbUJBQW1CO0lBL0hoQztRQWdJbUIsV0FBTSxHQUFHLE1BQU0sQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFPbkMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFPcEMsa0JBQWEsR0FBRyxRQUFRLENBQXFCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLGlFQUFpRTtRQUNoRCxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJ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Q0FBQztRQUNELHdFQUF3RTtRQUN4RSxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQy9DLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMseUNBQXlDO1FBQ2xGLE9BQU8sT0FBTyxHQUFHLEtBQUssR0FBRyxNQUFNLEtBQUssSUFBSSxDQUFDO0lBQzNDLENBQUM7K0dBNUZVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHdJQTNIcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVCwreUNBdEJTLFlBQVksK0JBQUUsT0FBTzs7NEZBNEhwQixtQkFBbUI7a0JBL0gvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVDs4QkEwR1ksS0FBSztzQkFBakIsS0FBSztnQkFLSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IHBlcnNvbk91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBwZXJzb25PdXRsaW5lIH0pO1xuXG4vKipcbiAqIGB2YWwtdXNlci1hdmF0YXJgXG4gKlxuICogQXZhdGFyICoqc21hcnQqKiBjb24gY2FkZW5hIGRlIGZhbGxiYWNrIGF1dG9tw6F0aWNhOlxuICpcbiAqICAgZm90byAoYGF2YXRhclVybGApIOKGkiBpbmljaWFsZXMgKGRlIGBuYW1lYC9gZW1haWxgKSDihpIgaWNvbm8gcGVyc29uYS5cbiAqXG4gKiBTaSBsYSBpbWFnZW4gZmFsbGEgZW4gY2FyZ2FyICg0MDQsIENPUlMsIGV0Yy4pLCBhdXRvbcOhdGljYW1lbnRlIGNhZSBhIGxhc1xuICogaW5pY2lhbGVzIHNpbiBxdWUgZWwgY2FsbGVyIHRlbmdhIHF1ZSBoYWNlciBuYWRhLiBDb2xvciBkZSBmb25kbyBkZXJpdmFkb1xuICogZGV0ZXJtaW5pc3RpY2FtZW50ZSBkZWwgdXNlciBwYXJhIHF1ZSBlbCBtaXNtbyB1c2VyIHRlbmdhIHNpZW1wcmUgZWwgbWlzbW9cbiAqIGNvbG9yIChhIG1lbm9zIHF1ZSBgYmFja2dyb3VuZGAgc2Ugc29icmVzY3JpYmEpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJ7IHVzZXI6IGF1dGgudXNlcigpIH1cIiAob25DbGljayk9XCJnb1Byb2ZpbGUoKVwiIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXVzZXItYXZhdGFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInZhbC11c2VyLWF2YXRhclwiXG4gICAgICBbY2xhc3MuYm9yZGVyZWRdPVwicmVzb2x2ZWRQcm9wcygpLmJvcmRlcmVkXCJcbiAgICAgIFtjbGFzcy5ncmF5c2NhbGVdPVwicmVzb2x2ZWRQcm9wcygpLmdyYXlzY2FsZVwiXG4gICAgICBbY2xhc3MuaGFzLWNsaWNrXT1cImhhc0NsaWNrXCJcbiAgICAgIFtjbGFzc109XCJzaGFwZUNsYXNzKCkgKyAnICcgKyBzaXplQ2xhc3MoKSArICcgJyArIChyZXNvbHZlZFByb3BzKCkuY3NzQ2xhc3MgfHwgJycpXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIiFzaG93SW1hZ2UoKSA/IGJnQ29sb3IoKSA6ICd0cmFuc3BhcmVudCdcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cInJlc29sdmVkUHJvcHMoKS5mb3JlZ3JvdW5kIHx8ICcjZmZmJ1wiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpXCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrLmVtaXQoKVwiXG4gICAgPlxuICAgICAgQGlmIChzaG93SW1hZ2UoKSkge1xuICAgICAgICA8aW1nIGNsYXNzPVwidmFsLXVzZXItYXZhdGFyX19pbWdcIiBbc3JjXT1cImltYWdlVXJsKClcIiBhbHQ9XCJcIiAoZXJyb3IpPVwib25JbWFnZUVycm9yKClcIiAobG9hZCk9XCJvbkltYWdlTG9hZCgpXCIgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGluaXRpYWxzKCkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWwtdXNlci1hdmF0YXJfX2luaXRpYWxzXCI+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1vdXRsaW5lXCIgY2xhc3M9XCJ2YWwtdXNlci1hdmF0YXJfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgfVxuICAgIDwvYnV0dG9uPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgfVxuXG4gICAgICAudmFsLXVzZXItYXZhdGFyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gMC4xNXMgZWFzZSxcbiAgICAgICAgICBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC52YWwtdXNlci1hdmF0YXIuaGFzLWNsaWNrIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuXG4gICAgICAudmFsLXVzZXItYXZhdGFyLmhhcy1jbGljazpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNCk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtdXNlci1hdmF0YXIuaGFzLWNsaWNrOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nik7XG4gICAgICB9XG5cbiAgICAgIC8qIFNoYXBlICovXG4gICAgICAudmFsLXVzZXItYXZhdGFyLmNpcmNsZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cblxuICAgICAgLnZhbC11c2VyLWF2YXRhci5zcXVhcmUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIFNpemVzICovXG4gICAgICAudmFsLXVzZXItYXZhdGFyLnhzbWFsbCB7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgICB9XG4gICAgICAudmFsLXVzZXItYXZhdGFyLnNtYWxsIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgfVxuICAgICAgLnZhbC11c2VyLWF2YXRhci5tZWRpdW0ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgICAudmFsLXVzZXItYXZhdGFyLmxhcmdlIHtcbiAgICAgICAgd2lkdGg6IDcycHg7XG4gICAgICAgIGhlaWdodDogNzJweDtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICB9XG4gICAgICAudmFsLXVzZXItYXZhdGFyLnhsYXJnZSB7XG4gICAgICAgIHdpZHRoOiA5NnB4O1xuICAgICAgICBoZWlnaHQ6IDk2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgIH1cblxuICAgICAgLnZhbC11c2VyLWF2YXRhci5ib3JkZXJlZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZik7XG4gICAgICB9XG5cbiAgICAgIC52YWwtdXNlci1hdmF0YXIuZ3JheXNjYWxlIHtcbiAgICAgICAgZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtdXNlci1hdmF0YXJfX2ltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLnZhbC11c2VyLWF2YXRhcl9faW5pdGlhbHMge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgICAgfVxuXG4gICAgICAudmFsLXVzZXItYXZhdGFyX19pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiA2MCU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlckF2YXRhckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNfID0gc2lnbmFsPFVzZXJBdmF0YXJNZXRhZGF0YT4oe30pO1xuICBwcml2YXRlIHJlYWRvbmx5IGltYWdlRmFpbGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICBASW5wdXQoKSBzZXQgcHJvcHModmFsdWU6IFVzZXJBdmF0YXJNZXRhZGF0YSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucHJvcHNfLnNldCh2YWx1ZSA/PyB7fSk7XG4gICAgdGhpcy5pbWFnZUZhaWxlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgQE91dHB1dCgpIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIFN1YnNjcmliZXJzIOKAlCB1c2FkbyBwYXJhIGNvbmRpY2lvbmFyIGN1cnNvci9hcmlhLiAqL1xuICBnZXQgaGFzQ2xpY2soKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub25DbGljay5vYnNlcnZlZDtcbiAgfVxuXG4gIHJlYWRvbmx5IHJlc29sdmVkUHJvcHMgPSBjb21wdXRlZDxVc2VyQXZhdGFyTWV0YWRhdGE+KCgpID0+IHRoaXMucHJvcHNfKCkpO1xuXG4gIC8qKiBSZXN1ZWx2ZSBsb3MgY2FtcG9zIGRlbCB1c2VyICh1c2VyIHByb3AgPiBjYW1wb3Mgc3VlbHRvcykuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZWRVc2VyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHAgPSB0aGlzLnJlc29sdmVkUHJvcHMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogcC51c2VyPy5uYW1lPy50cmltKCkgfHwgcC5uYW1lPy50cmltKCkgfHwgJycsXG4gICAgICBlbWFpbDogcC51c2VyPy5lbWFpbD8udHJpbSgpIHx8IHAuZW1haWw/LnRyaW0oKSB8fCAnJyxcbiAgICAgIGF2YXRhclVybDogcC51c2VyPy5hdmF0YXJVcmw/LnRyaW0oKSB8fCBwLmF2YXRhclVybD8udHJpbSgpIHx8ICcnLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBVUkwgZGUgaW1hZ2VuIOKAlCBlbXB0eSBzaSBubyBoYXkgbyBzaSBsYSBjYXJnYSBmYWxsw7MuICovXG4gIHJlYWRvbmx5IGltYWdlVXJsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZFVzZXIoKS5hdmF0YXJVcmwpO1xuXG4gIHJlYWRvbmx5IHNob3dJbWFnZSA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5pbWFnZVVybCgpICYmICF0aGlzLmltYWdlRmFpbGVkKCkpO1xuXG4gIC8qKiBJbmljaWFsZXMg4oCUIDEtMiBjaGFycyBkZXJpdmFkb3MgZGUgbmFtZSAocHJlZmVycmVkKSBvIGVtYWlsIHByZWZpeC4gKi9cbiAgcmVhZG9ubHkgaW5pdGlhbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgeyBuYW1lLCBlbWFpbCB9ID0gdGhpcy5yZXNvbHZlZFVzZXIoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgY29uc3QgcGFydHMgPSBuYW1lLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+PSAyKSByZXR1cm4gcGFydHNbMF0hWzBdISArIHBhcnRzWzFdIVswXSE7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID09PSAxICYmIHBhcnRzWzBdIS5sZW5ndGggPj0gMikge1xuICAgICAgICByZXR1cm4gcGFydHNbMF0hLnNsaWNlKDAsIDIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnRzWzBdPy5bMF0gPz8gJyc7XG4gICAgfVxuICAgIGlmIChlbWFpbCkge1xuICAgICAgY29uc3QgcHJlZml4ID0gZW1haWwuc3BsaXQoJ0AnKVswXSA/PyAnJztcbiAgICAgIC8vIFRvbWFyIDEtMiBjaGFycyBkZWwgcHJlZml4XG4gICAgICBpZiAocHJlZml4Lmxlbmd0aCA+PSAyKSByZXR1cm4gcHJlZml4LnNsaWNlKDAsIDIpO1xuICAgICAgcmV0dXJuIHByZWZpeFswXSA/PyAnJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9KTtcblxuICByZWFkb25seSBzaXplQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkUHJvcHMoKS5zaXplIHx8ICdzbWFsbCcpO1xuICByZWFkb25seSBzaGFwZUNsYXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZFByb3BzKCkuc2hhcGUgfHwgJ2NpcmNsZScpO1xuXG4gIC8qKiBCYWNrZ3JvdW5kIOKAlCBleHBsaWNpdG8gbyBkZXJpdmFkbyBkZXRlcm1pbmlzdGljYW1lbnRlIGRlbCB1c2VyLiAqL1xuICByZWFkb25seSBiZ0NvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHAgPSB0aGlzLnJlc29sdmVkUHJvcHMoKTtcbiAgICBpZiAocC5iYWNrZ3JvdW5kKSByZXR1cm4gcC5iYWNrZ3JvdW5kO1xuICAgIGNvbnN0IHsgbmFtZSwgZW1haWwgfSA9IHRoaXMucmVzb2x2ZWRVc2VyKCk7XG4gICAgY29uc3Qgc2VlZCA9IG5hbWUgfHwgZW1haWwgfHwgJ3ZhbCc7XG4gICAgcmV0dXJuIHRoaXMuY29sb3JGcm9tU2VlZChzZWVkKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYXJpYUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHsgbmFtZSwgZW1haWwgfSA9IHRoaXMucmVzb2x2ZWRVc2VyKCk7XG4gICAgcmV0dXJuIG5hbWUgfHwgZW1haWwgfHwgJ1VzZXIgYXZhdGFyJztcbiAgfSk7XG5cbiAgb25JbWFnZUVycm9yKCk6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2VGYWlsZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgb25JbWFnZUxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbWFnZUZhaWxlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhc2ggZGV0ZXJtaW5pc3RhIHN0cmluZyDihpIgSFNMIGNvbG9yIGRlbCByYW5nbyBWYWx0ZWNoIChwdXJwbGVzL2JsdWVzKS5cbiAgICogTWlzbW8gc2VlZCDihpIgbWlzbW8gY29sb3IgKGNvbnNpc3RlbmNpYSBlbnRyZSBzZXNzaW9ucykuXG4gICAqL1xuICBwcml2YXRlIGNvbG9yRnJvbVNlZWQoc2VlZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgaGFzaCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoYXNoID0gKGhhc2ggKiAzMSArIHNlZWQuY2hhckNvZGVBdChpKSkgPj4+IDA7XG4gICAgfVxuICAgIC8vIFJlc3RyaW5naXIgYSByYW5nbyB2aW9sZXQvYmx1ZSAoMjQwLTI5MMKwKSBwYXJhIGNvaGVyZW5jaWEgY29uIHBhbGV0dGVcbiAgICBjb25zdCBodWUgPSAyNDAgKyAoaGFzaCAlIDUwKTtcbiAgICBjb25zdCBzYXQgPSA1NSArICgoaGFzaCA+Pj4gOCkgJSAyMCk7IC8vIDU1LTc1JVxuICAgIGNvbnN0IGxpZ2h0ID0gMzggKyAoKGhhc2ggPj4+IDE2KSAlIDEyKTsgLy8gMzgtNTAlIOKAlCBzaWVtcHJlIGxlZ2libGUgY29uIGZnIGJsYW5jb1xuICAgIHJldHVybiBgaHNsKCR7aHVlfSwgJHtzYXR9JSwgJHtsaWdodH0lKWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,99 +1,92 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
3
|
-
import { BoxComponent } from '../../atoms/box/box.component';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
4
3
|
import { TextComponent } from '../../atoms/text/text.component';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
5
|
/**
|
|
8
|
-
* val-notes-box
|
|
6
|
+
* `val-notes-box` — callout / admonition para resaltar información dentro de un
|
|
7
|
+
* flujo de texto.
|
|
9
8
|
*
|
|
10
|
-
*
|
|
9
|
+
* Diseño tipo GitHub/Docusaurus: fondo tintado suave, accent en el borde
|
|
10
|
+
* izquierdo, prefijo en mayúsculas pequeñas. Funciona en light & dark.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* El color es un Ionic Color (primary, success, warning, danger, tertiary, …).
|
|
13
|
+
* No usa `ion-card` ni `ion-color="X"` como background — sino una mezcla
|
|
14
|
+
* `rgba(--ion-color-X-rgb, 0.08)` para no asfixiar el contenido.
|
|
15
|
+
*
|
|
16
|
+
* Renderiza inline HTML (`<strong>`, links via `processLinks`) cuando los
|
|
17
|
+
* flags están activos.
|
|
14
18
|
*
|
|
15
|
-
* @
|
|
19
|
+
* @example
|
|
20
|
+
* <val-notes-box [props]="{
|
|
21
|
+
* text: 'Recordá guardar tus cambios antes de salir.',
|
|
22
|
+
* prefix: 'Tip',
|
|
23
|
+
* color: 'tertiary',
|
|
24
|
+
* textColor: 'dark',
|
|
25
|
+
* size: 'medium',
|
|
26
|
+
* rounded: true,
|
|
27
|
+
* allowPartialBold: true,
|
|
28
|
+
* }"></val-notes-box>
|
|
16
29
|
*/
|
|
17
30
|
export class NotesBoxComponent {
|
|
18
|
-
constructor() { }
|
|
19
|
-
ngOnInit() { }
|
|
20
31
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NotesBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
32
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: NotesBoxComponent, isStandalone: true, selector: "val-notes-box", inputs: { props: "props" }, ngImport: i0, template: `
|
|
22
33
|
<div
|
|
23
|
-
|
|
24
|
-
[class.
|
|
25
|
-
[class.
|
|
34
|
+
class="val-notes-box"
|
|
35
|
+
[class.is-compact]="props.compact"
|
|
36
|
+
[class.is-rounded]="props.rounded"
|
|
37
|
+
[class.align-center]="props.align === 'center'"
|
|
38
|
+
[class.align-right]="props.align === 'right'"
|
|
39
|
+
[attr.data-color]="props.color || 'primary'"
|
|
40
|
+
role="note"
|
|
26
41
|
>
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
<val-text
|
|
44
|
-
[props]="{
|
|
45
|
-
content: props.text,
|
|
46
|
-
color: props.textColor,
|
|
47
|
-
bold: false,
|
|
48
|
-
size: props.size,
|
|
49
|
-
allowPartialBold: props.allowPartialBold,
|
|
50
|
-
processLinks: props.processLinks,
|
|
51
|
-
}"
|
|
52
|
-
></val-text>
|
|
53
|
-
</div>
|
|
54
|
-
</val-box>
|
|
42
|
+
@if (props.prefix) {
|
|
43
|
+
<div class="val-notes-box__header">{{ props.prefix }}</div>
|
|
44
|
+
}
|
|
45
|
+
<div class="val-notes-box__body" [class]="'size-' + (props.size || 'medium')">
|
|
46
|
+
<val-text
|
|
47
|
+
[props]="{
|
|
48
|
+
content: props.text,
|
|
49
|
+
color: props.textColor,
|
|
50
|
+
bold: false,
|
|
51
|
+
size: props.size,
|
|
52
|
+
allowPartialBold: props.allowPartialBold,
|
|
53
|
+
processLinks: props.processLinks,
|
|
54
|
+
}"
|
|
55
|
+
></val-text>
|
|
56
|
+
</div>
|
|
55
57
|
</div>
|
|
56
|
-
`, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--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)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--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)}.
|
|
58
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--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)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--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)}:host{display:block}.val-notes-box{--notes-rgb: var(--ion-color-primary-rgb, 112, 38, 223);--notes-bg: rgba(var(--notes-rgb), .07);--notes-border: rgba(var(--notes-rgb), .18);--notes-accent: rgb(var(--notes-rgb));--notes-text: var(--ion-color-dark, #0a0612);--notes-link: rgb(var(--notes-rgb));position:relative;display:block;padding:14px 18px 14px 20px;background:var(--notes-bg);border:1px solid var(--notes-border);border-left:4px solid var(--notes-accent);border-radius:10px;color:var(--notes-text);margin:0;line-height:1.55}.val-notes-box.is-rounded{border-radius:12px}.val-notes-box[data-color=primary]{--notes-rgb: var(--ion-color-primary-rgb)}.val-notes-box[data-color=secondary]{--notes-rgb: var(--ion-color-secondary-rgb)}.val-notes-box[data-color=tertiary]{--notes-rgb: var(--ion-color-tertiary-rgb)}.val-notes-box[data-color=success]{--notes-rgb: var(--ion-color-success-rgb)}.val-notes-box[data-color=warning]{--notes-rgb: var(--ion-color-warning-rgb)}.val-notes-box[data-color=danger]{--notes-rgb: var(--ion-color-danger-rgb)}.val-notes-box[data-color=medium]{--notes-rgb: var(--ion-color-medium-rgb)}.val-notes-box[data-color=dark]{--notes-rgb: var(--ion-color-dark-rgb)}.val-notes-box[data-color=light]{--notes-rgb: var(--ion-color-medium-rgb)}.val-notes-box__header{display:block;margin:0 0 6px;font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--notes-accent);font-family:var(--ion-font-family, inherit)}.val-notes-box__body{display:block;color:var(--notes-text);font-size:14px;line-height:1.6}.val-notes-box__body.size-small{font-size:13px;line-height:1.55}.val-notes-box__body.size-large{font-size:15px;line-height:1.6}.val-notes-box__body.size-xlarge{font-size:16px;line-height:1.55}.val-notes-box__body ::ng-deep val-text{display:block;color:var(--notes-text)}.val-notes-box__body ::ng-deep val-text p{margin:0;color:inherit}.val-notes-box__body ::ng-deep val-text ion-text{color:var(--notes-text)!important}.val-notes-box__body ::ng-deep val-text strong,.val-notes-box__body ::ng-deep val-text b,.val-notes-box__body ::ng-deep .partial-bold{color:var(--notes-text);font-weight:700}.val-notes-box__body ::ng-deep val-text a{color:var(--notes-link);text-decoration:underline;text-underline-offset:2px;font-weight:600}.val-notes-box__body ::ng-deep val-text a:hover{opacity:.85}.val-notes-box.align-center,.val-notes-box.align-center .val-notes-box__header{text-align:center}.val-notes-box.align-right,.val-notes-box.align-right .val-notes-box__header{text-align:right}.val-notes-box.is-compact{display:inline-block;width:fit-content;max-width:100%;padding:5px 12px;border-left-width:1px;border-radius:999px;font-size:12px;line-height:1.3}.val-notes-box.is-compact .val-notes-box__header{display:inline;margin:0 6px 0 0;font-size:11px;letter-spacing:.06em}.val-notes-box.is-compact .val-notes-box__body{display:inline;font-size:12px}.val-notes-box.is-compact ::ng-deep val-text{display:inline}.val-notes-box.is-compact ::ng-deep val-text p{display:inline}@media (prefers-color-scheme: dark){:host-context(body:not(.light)) .val-notes-box{--notes-bg: rgba(var(--notes-rgb), .16);--notes-border: rgba(var(--notes-rgb), .3);--notes-text: var(--ion-color-light, #f4f5f8)}}:host-context(body.dark) .val-notes-box,:host-context(.theme-dark) .val-notes-box,:host-context([data-theme=dark]) .val-notes-box{--notes-bg: rgba(var(--notes-rgb), .16);--notes-border: rgba(var(--notes-rgb), .3);--notes-text: var(--ion-color-light, #f4f5f8)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
57
59
|
}
|
|
58
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NotesBoxComponent, decorators: [{
|
|
59
61
|
type: Component,
|
|
60
|
-
args: [{ selector: 'val-notes-box', standalone: true, imports: [CommonModule,
|
|
62
|
+
args: [{ selector: 'val-notes-box', standalone: true, imports: [CommonModule, TextComponent], template: `
|
|
61
63
|
<div
|
|
62
|
-
|
|
63
|
-
[class.
|
|
64
|
-
[class.
|
|
64
|
+
class="val-notes-box"
|
|
65
|
+
[class.is-compact]="props.compact"
|
|
66
|
+
[class.is-rounded]="props.rounded"
|
|
67
|
+
[class.align-center]="props.align === 'center'"
|
|
68
|
+
[class.align-right]="props.align === 'right'"
|
|
69
|
+
[attr.data-color]="props.color || 'primary'"
|
|
70
|
+
role="note"
|
|
65
71
|
>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
<val-text
|
|
83
|
-
[props]="{
|
|
84
|
-
content: props.text,
|
|
85
|
-
color: props.textColor,
|
|
86
|
-
bold: false,
|
|
87
|
-
size: props.size,
|
|
88
|
-
allowPartialBold: props.allowPartialBold,
|
|
89
|
-
processLinks: props.processLinks,
|
|
90
|
-
}"
|
|
91
|
-
></val-text>
|
|
92
|
-
</div>
|
|
93
|
-
</val-box>
|
|
72
|
+
@if (props.prefix) {
|
|
73
|
+
<div class="val-notes-box__header">{{ props.prefix }}</div>
|
|
74
|
+
}
|
|
75
|
+
<div class="val-notes-box__body" [class]="'size-' + (props.size || 'medium')">
|
|
76
|
+
<val-text
|
|
77
|
+
[props]="{
|
|
78
|
+
content: props.text,
|
|
79
|
+
color: props.textColor,
|
|
80
|
+
bold: false,
|
|
81
|
+
size: props.size,
|
|
82
|
+
allowPartialBold: props.allowPartialBold,
|
|
83
|
+
processLinks: props.processLinks,
|
|
84
|
+
}"
|
|
85
|
+
></val-text>
|
|
86
|
+
</div>
|
|
94
87
|
</div>
|
|
95
|
-
`, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--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)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--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)}.
|
|
96
|
-
}],
|
|
88
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--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)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--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)}:host{display:block}.val-notes-box{--notes-rgb: var(--ion-color-primary-rgb, 112, 38, 223);--notes-bg: rgba(var(--notes-rgb), .07);--notes-border: rgba(var(--notes-rgb), .18);--notes-accent: rgb(var(--notes-rgb));--notes-text: var(--ion-color-dark, #0a0612);--notes-link: rgb(var(--notes-rgb));position:relative;display:block;padding:14px 18px 14px 20px;background:var(--notes-bg);border:1px solid var(--notes-border);border-left:4px solid var(--notes-accent);border-radius:10px;color:var(--notes-text);margin:0;line-height:1.55}.val-notes-box.is-rounded{border-radius:12px}.val-notes-box[data-color=primary]{--notes-rgb: var(--ion-color-primary-rgb)}.val-notes-box[data-color=secondary]{--notes-rgb: var(--ion-color-secondary-rgb)}.val-notes-box[data-color=tertiary]{--notes-rgb: var(--ion-color-tertiary-rgb)}.val-notes-box[data-color=success]{--notes-rgb: var(--ion-color-success-rgb)}.val-notes-box[data-color=warning]{--notes-rgb: var(--ion-color-warning-rgb)}.val-notes-box[data-color=danger]{--notes-rgb: var(--ion-color-danger-rgb)}.val-notes-box[data-color=medium]{--notes-rgb: var(--ion-color-medium-rgb)}.val-notes-box[data-color=dark]{--notes-rgb: var(--ion-color-dark-rgb)}.val-notes-box[data-color=light]{--notes-rgb: var(--ion-color-medium-rgb)}.val-notes-box__header{display:block;margin:0 0 6px;font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--notes-accent);font-family:var(--ion-font-family, inherit)}.val-notes-box__body{display:block;color:var(--notes-text);font-size:14px;line-height:1.6}.val-notes-box__body.size-small{font-size:13px;line-height:1.55}.val-notes-box__body.size-large{font-size:15px;line-height:1.6}.val-notes-box__body.size-xlarge{font-size:16px;line-height:1.55}.val-notes-box__body ::ng-deep val-text{display:block;color:var(--notes-text)}.val-notes-box__body ::ng-deep val-text p{margin:0;color:inherit}.val-notes-box__body ::ng-deep val-text ion-text{color:var(--notes-text)!important}.val-notes-box__body ::ng-deep val-text strong,.val-notes-box__body ::ng-deep val-text b,.val-notes-box__body ::ng-deep .partial-bold{color:var(--notes-text);font-weight:700}.val-notes-box__body ::ng-deep val-text a{color:var(--notes-link);text-decoration:underline;text-underline-offset:2px;font-weight:600}.val-notes-box__body ::ng-deep val-text a:hover{opacity:.85}.val-notes-box.align-center,.val-notes-box.align-center .val-notes-box__header{text-align:center}.val-notes-box.align-right,.val-notes-box.align-right .val-notes-box__header{text-align:right}.val-notes-box.is-compact{display:inline-block;width:fit-content;max-width:100%;padding:5px 12px;border-left-width:1px;border-radius:999px;font-size:12px;line-height:1.3}.val-notes-box.is-compact .val-notes-box__header{display:inline;margin:0 6px 0 0;font-size:11px;letter-spacing:.06em}.val-notes-box.is-compact .val-notes-box__body{display:inline;font-size:12px}.val-notes-box.is-compact ::ng-deep val-text{display:inline}.val-notes-box.is-compact ::ng-deep val-text p{display:inline}@media (prefers-color-scheme: dark){:host-context(body:not(.light)) .val-notes-box{--notes-bg: rgba(var(--notes-rgb), .16);--notes-border: rgba(var(--notes-rgb), .3);--notes-text: var(--ion-color-light, #f4f5f8)}}:host-context(body.dark) .val-notes-box,:host-context(.theme-dark) .val-notes-box,:host-context([data-theme=dark]) .val-notes-box{--notes-bg: rgba(var(--notes-rgb), .16);--notes-border: rgba(var(--notes-rgb), .3);--notes-text: var(--ion-color-light, #f4f5f8)}\n"] }]
|
|
89
|
+
}], propDecorators: { props: [{
|
|
97
90
|
type: Input
|
|
98
91
|
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZXMtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbm90ZXMtYm94L25vdGVzLWJveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQW1DSCxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7bUdBQWpCLGlCQUFpQixxR0E5QmxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCVCxncE1BM0JTLFlBQVksK0JBQUUsYUFBYTs7NEZBK0IxQixpQkFBaUI7a0JBbEM3QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFJdEMsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3Rlc0JveE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYHZhbC1ub3Rlcy1ib3hgIOKAlCBjYWxsb3V0IC8gYWRtb25pdGlvbiBwYXJhIHJlc2FsdGFyIGluZm9ybWFjacOzbiBkZW50cm8gZGUgdW5cbiAqIGZsdWpvIGRlIHRleHRvLlxuICpcbiAqIERpc2XDsW8gdGlwbyBHaXRIdWIvRG9jdXNhdXJ1czogZm9uZG8gdGludGFkbyBzdWF2ZSwgYWNjZW50IGVuIGVsIGJvcmRlXG4gKiBpenF1aWVyZG8sIHByZWZpam8gZW4gbWF5w7pzY3VsYXMgcGVxdWXDsWFzLiBGdW5jaW9uYSBlbiBsaWdodCAmIGRhcmsuXG4gKlxuICogRWwgY29sb3IgZXMgdW4gSW9uaWMgQ29sb3IgKHByaW1hcnksIHN1Y2Nlc3MsIHdhcm5pbmcsIGRhbmdlciwgdGVydGlhcnksIOKApikuXG4gKiBObyB1c2EgYGlvbi1jYXJkYCBuaSBgaW9uLWNvbG9yPVwiWFwiYCBjb21vIGJhY2tncm91bmQg4oCUIHNpbm8gdW5hIG1lemNsYVxuICogYHJnYmEoLS1pb24tY29sb3ItWC1yZ2IsIDAuMDgpYCBwYXJhIG5vIGFzZml4aWFyIGVsIGNvbnRlbmlkby5cbiAqXG4gKiBSZW5kZXJpemEgaW5saW5lIEhUTUwgKGA8c3Ryb25nPmAsIGxpbmtzIHZpYSBgcHJvY2Vzc0xpbmtzYCkgY3VhbmRvIGxvc1xuICogZmxhZ3MgZXN0w6FuIGFjdGl2b3MuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtbm90ZXMtYm94IFtwcm9wc109XCJ7XG4gKiAgIHRleHQ6ICdSZWNvcmTDoSBndWFyZGFyIHR1cyBjYW1iaW9zIGFudGVzIGRlIHNhbGlyLicsXG4gKiAgIHByZWZpeDogJ1RpcCcsXG4gKiAgIGNvbG9yOiAndGVydGlhcnknLFxuICogICB0ZXh0Q29sb3I6ICdkYXJrJyxcbiAqICAgc2l6ZTogJ21lZGl1bScsXG4gKiAgIHJvdW5kZWQ6IHRydWUsXG4gKiAgIGFsbG93UGFydGlhbEJvbGQ6IHRydWUsXG4gKiB9XCI+PC92YWwtbm90ZXMtYm94PlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbm90ZXMtYm94JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVGV4dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ2YWwtbm90ZXMtYm94XCJcbiAgICAgIFtjbGFzcy5pcy1jb21wYWN0XT1cInByb3BzLmNvbXBhY3RcIlxuICAgICAgW2NsYXNzLmlzLXJvdW5kZWRdPVwicHJvcHMucm91bmRlZFwiXG4gICAgICBbY2xhc3MuYWxpZ24tY2VudGVyXT1cInByb3BzLmFsaWduID09PSAnY2VudGVyJ1wiXG4gICAgICBbY2xhc3MuYWxpZ24tcmlnaHRdPVwicHJvcHMuYWxpZ24gPT09ICdyaWdodCdcIlxuICAgICAgW2F0dHIuZGF0YS1jb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgcm9sZT1cIm5vdGVcIlxuICAgID5cbiAgICAgIEBpZiAocHJvcHMucHJlZml4KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtbm90ZXMtYm94X19oZWFkZXJcIj57eyBwcm9wcy5wcmVmaXggfX08L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtbm90ZXMtYm94X19ib2R5XCIgW2NsYXNzXT1cIidzaXplLScgKyAocHJvcHMuc2l6ZSB8fCAnbWVkaXVtJylcIj5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzLnRleHQsXG4gICAgICAgICAgICBjb2xvcjogcHJvcHMudGV4dENvbG9yLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICBzaXplOiBwcm9wcy5zaXplLFxuICAgICAgICAgICAgYWxsb3dQYXJ0aWFsQm9sZDogcHJvcHMuYWxsb3dQYXJ0aWFsQm9sZCxcbiAgICAgICAgICAgIHByb2Nlc3NMaW5rczogcHJvcHMucHJvY2Vzc0xpbmtzLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+PC92YWwtdGV4dD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9ub3Rlcy1ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5vdGVzQm94Q29tcG9uZW50IHtcbiAgLyoqIE5vdGVzIGJveCBjb25maWd1cmF0aW9uIG9iamVjdC4gKi9cbiAgQElucHV0KCkgcHJvcHMhOiBOb3Rlc0JveE1ldGFkYXRhO1xufVxuIl19
|