valtech-components 2.0.293 → 2.0.295
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/molecules/language-selector/language-selector.component.mjs +219 -0
- package/esm2022/lib/components/molecules/language-selector/types.mjs +2 -0
- package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +170 -0
- package/esm2022/lib/components/molecules/popover-selector/types.mjs +2 -0
- package/esm2022/lib/examples/display-demo.component.mjs +53 -53
- package/esm2022/lib/examples/selector-examples.component.mjs +208 -0
- package/esm2022/lib/services/lang-provider/components/display-demo.mjs +86 -0
- package/esm2022/lib/services/lang-provider/content.mjs +1 -1
- package/esm2022/public-api.mjs +6 -1
- package/fesm2022/valtech-components.mjs +630 -55
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/language-selector/language-selector.component.d.ts +50 -0
- package/lib/components/molecules/language-selector/types.d.ts +52 -0
- package/lib/components/molecules/popover-selector/popover-selector.component.d.ts +29 -0
- package/lib/components/molecules/popover-selector/types.d.ts +69 -0
- package/lib/examples/display-demo.component.d.ts +3 -0
- package/lib/examples/selector-examples.component.d.ts +20 -0
- package/lib/services/lang-provider/components/display-demo.d.ts +3 -0
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { addIcons } from 'ionicons';
|
|
4
|
+
import { globe, language } from 'ionicons/icons';
|
|
5
|
+
import { Subscription, of } from 'rxjs';
|
|
6
|
+
import { map } from 'rxjs/operators';
|
|
7
|
+
import { PopoverSelectorComponent } from '../popover-selector/popover-selector.component';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../../services/lang-provider/lang-provider.service";
|
|
10
|
+
import * as i2 from "../../../services/content.service";
|
|
11
|
+
/**
|
|
12
|
+
* val-language-selector
|
|
13
|
+
*
|
|
14
|
+
* A specialized language selector component that integrates with the LangService.
|
|
15
|
+
* Uses the popover-selector component internally and provides language-specific functionality.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* // Basic usage (auto-detects languages from LangService)
|
|
19
|
+
* <val-language-selector
|
|
20
|
+
* [props]="{ showLabel: true, showFlags: true }">
|
|
21
|
+
* </val-language-selector>
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // Custom configuration
|
|
25
|
+
* const languageProps: LanguageSelectorMetadata = {
|
|
26
|
+
* showLabel: true,
|
|
27
|
+
* label: 'Choose Language',
|
|
28
|
+
* showFlags: true,
|
|
29
|
+
* color: 'primary',
|
|
30
|
+
* size: 'large',
|
|
31
|
+
* fill: 'outline',
|
|
32
|
+
* customLanguageNames: {
|
|
33
|
+
* 'es': 'Español',
|
|
34
|
+
* 'en': 'English',
|
|
35
|
+
* 'fr': 'Français'
|
|
36
|
+
* }
|
|
37
|
+
* };
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* // With reactive content
|
|
41
|
+
* const languageProps: LanguageSelectorMetadata = {
|
|
42
|
+
* showLabel: true,
|
|
43
|
+
* labelConfig: {
|
|
44
|
+
* className: 'myComponent',
|
|
45
|
+
* key: 'languageLabel',
|
|
46
|
+
* fallback: 'Language'
|
|
47
|
+
* },
|
|
48
|
+
* color: 'tertiary'
|
|
49
|
+
* };
|
|
50
|
+
*
|
|
51
|
+
* @input props: LanguageSelectorMetadata - Configuration for the language selector
|
|
52
|
+
* @output languageChange: EventEmitter<string> - Emitted when language changes
|
|
53
|
+
*/
|
|
54
|
+
export class LanguageSelectorComponent {
|
|
55
|
+
constructor(langService, contentService) {
|
|
56
|
+
this.langService = langService;
|
|
57
|
+
this.contentService = contentService;
|
|
58
|
+
/**
|
|
59
|
+
* Language selector configuration object.
|
|
60
|
+
* @type {LanguageSelectorMetadata}
|
|
61
|
+
*/
|
|
62
|
+
this.props = {};
|
|
63
|
+
/**
|
|
64
|
+
* Event emitted when the language selection changes.
|
|
65
|
+
* Emits the selected language code.
|
|
66
|
+
*/
|
|
67
|
+
this.languageChange = new EventEmitter();
|
|
68
|
+
this.subscriptions = new Subscription();
|
|
69
|
+
/** Default language display names */
|
|
70
|
+
this.defaultLanguageNames = {
|
|
71
|
+
es: 'Español',
|
|
72
|
+
en: 'English',
|
|
73
|
+
fr: 'Français',
|
|
74
|
+
de: 'Deutsch',
|
|
75
|
+
pt: 'Português',
|
|
76
|
+
it: 'Italiano',
|
|
77
|
+
zh: '中文',
|
|
78
|
+
ja: '日本語',
|
|
79
|
+
ko: '한국어',
|
|
80
|
+
ru: 'Русский',
|
|
81
|
+
ar: 'العربية',
|
|
82
|
+
};
|
|
83
|
+
/** Default flag icons for languages */
|
|
84
|
+
this.defaultLanguageFlags = {
|
|
85
|
+
es: '🇪🇸',
|
|
86
|
+
en: '🇺🇸',
|
|
87
|
+
fr: '🇫🇷',
|
|
88
|
+
de: '🇩🇪',
|
|
89
|
+
pt: '🇵🇹',
|
|
90
|
+
it: '🇮🇹',
|
|
91
|
+
zh: '🇨🇳',
|
|
92
|
+
ja: '🇯🇵',
|
|
93
|
+
ko: '🇰🇷',
|
|
94
|
+
ru: '🇷🇺',
|
|
95
|
+
ar: '🇸🇦',
|
|
96
|
+
};
|
|
97
|
+
// Register required icons
|
|
98
|
+
addIcons({ language, globe });
|
|
99
|
+
}
|
|
100
|
+
ngOnInit() {
|
|
101
|
+
this.initializeLanguageState();
|
|
102
|
+
this.initializeLabel();
|
|
103
|
+
this.initializePopoverProps();
|
|
104
|
+
}
|
|
105
|
+
ngOnDestroy() {
|
|
106
|
+
this.subscriptions.unsubscribe();
|
|
107
|
+
}
|
|
108
|
+
initializeLanguageState() {
|
|
109
|
+
// Get current language and available languages from LangService
|
|
110
|
+
this.currentLanguage$ = this.langService.currentLang$;
|
|
111
|
+
this.availableLanguages$ = this.currentLanguage$.pipe(map(() => this.props.availableLanguages || this.langService.availableLangs));
|
|
112
|
+
}
|
|
113
|
+
initializeLabel() {
|
|
114
|
+
// Initialize label observable based on configuration
|
|
115
|
+
if (this.props.label !== undefined) {
|
|
116
|
+
// Static label
|
|
117
|
+
this.label$ = of(this.props.label);
|
|
118
|
+
}
|
|
119
|
+
else if (this.props.labelConfig) {
|
|
120
|
+
// Reactive label
|
|
121
|
+
this.label$ = this.contentService.fromContent({
|
|
122
|
+
className: this.props.labelConfig.className || '_global',
|
|
123
|
+
key: this.props.labelConfig.key,
|
|
124
|
+
fallback: this.props.labelConfig.fallback || 'Language',
|
|
125
|
+
interpolation: this.props.labelConfig.interpolation,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
// Default label from global content
|
|
130
|
+
this.label$ = this.contentService.fromContent({
|
|
131
|
+
className: '_global',
|
|
132
|
+
key: 'language',
|
|
133
|
+
fallback: 'Idioma',
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
initializePopoverProps() {
|
|
138
|
+
// Subscribe to language state changes to update popover props
|
|
139
|
+
const languageSubscription = this.availableLanguages$.subscribe(availableLanguages => {
|
|
140
|
+
const currentLanguageSubscription = this.currentLanguage$.subscribe(currentLanguage => {
|
|
141
|
+
this.updatePopoverProps(availableLanguages, currentLanguage);
|
|
142
|
+
});
|
|
143
|
+
this.subscriptions.add(currentLanguageSubscription);
|
|
144
|
+
});
|
|
145
|
+
this.subscriptions.add(languageSubscription);
|
|
146
|
+
// Subscribe to label changes
|
|
147
|
+
const labelSubscription = this.label$.subscribe(label => {
|
|
148
|
+
if (this.popoverProps) {
|
|
149
|
+
this.popoverProps = {
|
|
150
|
+
...this.popoverProps,
|
|
151
|
+
label: this.props.showLabel !== false ? label : undefined,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
this.subscriptions.add(labelSubscription);
|
|
156
|
+
}
|
|
157
|
+
updatePopoverProps(availableLanguages, currentLanguage) {
|
|
158
|
+
// Convert language codes to popover options
|
|
159
|
+
const options = availableLanguages.map(lang => ({
|
|
160
|
+
value: lang,
|
|
161
|
+
label: this.getLanguageDisplayName(lang),
|
|
162
|
+
icon: this.props.showFlags ? undefined : undefined, // We'll use text flags instead
|
|
163
|
+
}));
|
|
164
|
+
// Create popover configuration
|
|
165
|
+
this.popoverProps = {
|
|
166
|
+
options,
|
|
167
|
+
selectedValue: currentLanguage,
|
|
168
|
+
label: this.props.showLabel !== false ? '' : undefined, // Will be set by label subscription
|
|
169
|
+
icon: 'language',
|
|
170
|
+
placeholder: 'Seleccionar idioma...',
|
|
171
|
+
color: this.props.color || 'medium',
|
|
172
|
+
size: this.props.size || 'default',
|
|
173
|
+
fill: this.props.fill || 'outline',
|
|
174
|
+
shape: this.props.shape,
|
|
175
|
+
expand: this.props.expand,
|
|
176
|
+
disabled: this.props.disabled || false,
|
|
177
|
+
interface: 'popover',
|
|
178
|
+
showCheckmark: true,
|
|
179
|
+
multiple: false,
|
|
180
|
+
cancelText: 'Cancelar',
|
|
181
|
+
okText: 'Aceptar',
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
getLanguageDisplayName(languageCode) {
|
|
185
|
+
// Use custom names if provided, otherwise use defaults, otherwise use the code itself
|
|
186
|
+
const customName = this.props.customLanguageNames?.[languageCode];
|
|
187
|
+
const defaultName = this.defaultLanguageNames[languageCode];
|
|
188
|
+
const flag = this.props.showFlags ? this.defaultLanguageFlags[languageCode] : '';
|
|
189
|
+
const displayName = customName || defaultName || languageCode.toUpperCase();
|
|
190
|
+
return flag ? `${flag} ${displayName}` : displayName;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Handle language selection change.
|
|
194
|
+
* @param selectedLanguage - The selected language code(s)
|
|
195
|
+
*/
|
|
196
|
+
onLanguageChange(selectedLanguage) {
|
|
197
|
+
if (typeof selectedLanguage === 'string') {
|
|
198
|
+
// Update the language service
|
|
199
|
+
this.langService.setLang(selectedLanguage);
|
|
200
|
+
// Emit the change event
|
|
201
|
+
this.languageChange.emit(selectedLanguage);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageSelectorComponent, deps: [{ token: i1.LangService }, { token: i2.ContentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
205
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LanguageSelectorComponent, isStandalone: true, selector: "val-language-selector", inputs: { props: "props" }, outputs: { languageChange: "languageChange" }, ngImport: i0, template: `
|
|
206
|
+
<val-popover-selector [props]="popoverProps" (selectionChange)="onLanguageChange($event)"> </val-popover-selector>
|
|
207
|
+
`, isInline: true, styles: [":host{display:block}val-popover-selector .selector-trigger .trigger-text{display:flex;align-items:center;gap:12px;font-weight:700}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.4em;line-height:1;margin-right:4px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:transform .2s ease}val-popover-selector .selector-trigger.has-flag .trigger-text{letter-spacing:.025em;font-variant:small-caps}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.15)}val-popover-selector .option-content{gap:14px;padding:8px 0}val-popover-selector .option-content .flag-emoji{font-size:1.3em;margin-right:8px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}val-popover-selector .option-content span{font-weight:600;letter-spacing:.01em}.language-flag{font-size:1.4em;margin-right:8px;vertical-align:middle;line-height:1;filter:drop-shadow(0 1px 3px rgba(0,0,0,.1));transition:all .2s ease}@media (max-width: 768px){val-popover-selector .selector-trigger{--padding-start: 14px;--padding-end: 14px;--border-radius: 12px}val-popover-selector .selector-trigger .trigger-text{font-size:15px;gap:10px}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.2em}}val-popover-selector .selector-trigger:focus-visible{outline:2px solid var(--ion-color-primary, #3880ff);outline-offset:2px;box-shadow:0 0 0 4px #3880ff26}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.15) rotate(5deg);transition:transform .25s cubic-bezier(.4,0,.2,1)}val-popover-selector .selector-trigger:active .trigger-text .flag-emoji{transform:scale(1.05)}@media (prefers-contrast: high){val-popover-selector .selector-trigger{border-width:2px;border-color:var(--ion-color-dark, #000)}val-popover-selector .selector-trigger .trigger-text{font-weight:800}}.language-changing .flag-emoji{animation:languageSwitch .4s ease-in-out}@keyframes languageSwitch{0%{transform:scale(1)}50%{transform:scale(1.2) rotate(10deg)}to{transform:scale(1)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: PopoverSelectorComponent, selector: "val-popover-selector", inputs: ["props"], outputs: ["selectionChange"] }] }); }
|
|
208
|
+
}
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageSelectorComponent, decorators: [{
|
|
210
|
+
type: Component,
|
|
211
|
+
args: [{ selector: 'val-language-selector', standalone: true, imports: [CommonModule, PopoverSelectorComponent], template: `
|
|
212
|
+
<val-popover-selector [props]="popoverProps" (selectionChange)="onLanguageChange($event)"> </val-popover-selector>
|
|
213
|
+
`, styles: [":host{display:block}val-popover-selector .selector-trigger .trigger-text{display:flex;align-items:center;gap:12px;font-weight:700}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.4em;line-height:1;margin-right:4px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:transform .2s ease}val-popover-selector .selector-trigger.has-flag .trigger-text{letter-spacing:.025em;font-variant:small-caps}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.15)}val-popover-selector .option-content{gap:14px;padding:8px 0}val-popover-selector .option-content .flag-emoji{font-size:1.3em;margin-right:8px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}val-popover-selector .option-content span{font-weight:600;letter-spacing:.01em}.language-flag{font-size:1.4em;margin-right:8px;vertical-align:middle;line-height:1;filter:drop-shadow(0 1px 3px rgba(0,0,0,.1));transition:all .2s ease}@media (max-width: 768px){val-popover-selector .selector-trigger{--padding-start: 14px;--padding-end: 14px;--border-radius: 12px}val-popover-selector .selector-trigger .trigger-text{font-size:15px;gap:10px}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.2em}}val-popover-selector .selector-trigger:focus-visible{outline:2px solid var(--ion-color-primary, #3880ff);outline-offset:2px;box-shadow:0 0 0 4px #3880ff26}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.15) rotate(5deg);transition:transform .25s cubic-bezier(.4,0,.2,1)}val-popover-selector .selector-trigger:active .trigger-text .flag-emoji{transform:scale(1.05)}@media (prefers-contrast: high){val-popover-selector .selector-trigger{border-width:2px;border-color:var(--ion-color-dark, #000)}val-popover-selector .selector-trigger .trigger-text{font-weight:800}}.language-changing .flag-emoji{animation:languageSwitch .4s ease-in-out}@keyframes languageSwitch{0%{transform:scale(1)}50%{transform:scale(1.2) rotate(10deg)}to{transform:scale(1)}}\n"] }]
|
|
214
|
+
}], ctorParameters: () => [{ type: i1.LangService }, { type: i2.ContentService }], propDecorators: { props: [{
|
|
215
|
+
type: Input
|
|
216
|
+
}], languageChange: [{
|
|
217
|
+
type: Output
|
|
218
|
+
}] } });
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFjLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXJDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7O0FBYTFGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ0c7QUFDSCxNQUFNLE9BQU8seUJBQXlCO0lBMkRwQyxZQUNVLFdBQXdCLEVBQ3hCLGNBQThCO1FBRDlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQTVEeEM7OztXQUdHO1FBRUgsVUFBSyxHQUE2QixFQUFFLENBQUM7UUFFckM7OztXQUdHO1FBRUgsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBY3BDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUzQyxxQ0FBcUM7UUFDcEIseUJBQW9CLEdBQTJC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QyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRWpGLE1BQU0sV0FBVyxHQUFHLFVBQVUsSUFBSSxXQUFXLElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxnQkFBbUM7UUFDbEQsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLDhCQUE4QjtZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTNDLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDOytHQXJMVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw0SkFoRDFCOztHQUVULHVrRUFIUyxZQUFZLCtCQUFFLHdCQUF3Qjs7NEZBaURyQyx5QkFBeUI7a0JBcERyQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLENBQUMsWUFDdkM7O0dBRVQ7NkdBb0RELEtBQUs7c0JBREosS0FBSztnQkFRTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGdsb2JlLCBsYW5ndWFnZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGFuZy1wcm92aWRlci9sYW5nLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGFuZ09wdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvdHlwZXMnO1xuaW1wb3J0IHsgUG9wb3ZlclNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wb3Zlci1zZWxlY3Rvci9wb3BvdmVyLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb3BvdmVyT3B0aW9uLCBQb3BvdmVyU2VsZWN0b3JNZXRhZGF0YSB9IGZyb20gJy4uL3BvcG92ZXItc2VsZWN0b3IvdHlwZXMnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1sYW5ndWFnZS1zZWxlY3RvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFBvcG92ZXJTZWxlY3RvckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHZhbC1wb3BvdmVyLXNlbGVjdG9yIFtwcm9wc109XCJwb3BvdmVyUHJvcHNcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uTGFuZ3VhZ2VDaGFuZ2UoJGV2ZW50KVwiPiA8L3ZhbC1wb3BvdmVyLXNlbGVjdG9yPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWxhbmd1YWdlLXNlbGVjdG9yXG4gKlxuICogQSBzcGVjaWFsaXplZCBsYW5ndWFnZSBzZWxlY3RvciBjb21wb25lbnQgdGhhdCBpbnRlZ3JhdGVzIHdpdGggdGhlIExhbmdTZXJ2aWNlLlxuICogVXNlcyB0aGUgcG9wb3Zlci1zZWxlY3RvciBjb21wb25lbnQgaW50ZXJuYWxseSBhbmQgcHJvdmlkZXMgbGFuZ3VhZ2Utc3BlY2lmaWMgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgdXNhZ2UgKGF1dG8tZGV0ZWN0cyBsYW5ndWFnZXMgZnJvbSBMYW5nU2VydmljZSlcbiAqIDx2YWwtbGFuZ3VhZ2Utc2VsZWN0b3JcbiAqICAgW3Byb3BzXT1cInsgc2hvd0xhYmVsOiB0cnVlLCBzaG93RmxhZ3M6IHRydWUgfVwiPlxuICogPC92YWwtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbSBjb25maWd1cmF0aW9uXG4gKiBjb25zdCBsYW5ndWFnZVByb3BzOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgPSB7XG4gKiAgIHNob3dMYWJlbDogdHJ1ZSxcbiAqICAgbGFiZWw6ICdDaG9vc2UgTGFuZ3VhZ2UnLFxuICogICBzaG93RmxhZ3M6IHRydWUsXG4gKiAgIGNvbG9yOiAncHJpbWFyeScsXG4gKiAgIHNpemU6ICdsYXJnZScsXG4gKiAgIGZpbGw6ICdvdXRsaW5lJyxcbiAqICAgY3VzdG9tTGFuZ3VhZ2VOYW1lczoge1xuICogICAgICdlcyc6ICdFc3Bhw7FvbCcsXG4gKiAgICAgJ2VuJzogJ0VuZ2xpc2gnLFxuICogICAgICdmcic6ICdGcmFuw6dhaXMnXG4gKiAgIH1cbiAqIH07XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdpdGggcmVhY3RpdmUgY29udGVudFxuICogY29uc3QgbGFuZ3VhZ2VQcm9wczogTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhID0ge1xuICogICBzaG93TGFiZWw6IHRydWUsXG4gKiAgIGxhYmVsQ29uZmlnOiB7XG4gKiAgICAgY2xhc3NOYW1lOiAnbXlDb21wb25lbnQnLFxuICogICAgIGtleTogJ2xhbmd1YWdlTGFiZWwnLFxuICogICAgIGZhbGxiYWNrOiAnTGFuZ3VhZ2UnXG4gKiAgIH0sXG4gKiAgIGNvbG9yOiAndGVydGlhcnknXG4gKiB9O1xuICpcbiAqIEBpbnB1dCBwcm9wczogTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGxhbmd1YWdlIHNlbGVjdG9yXG4gKiBAb3V0cHV0IGxhbmd1YWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiAtIEVtaXR0ZWQgd2hlbiBsYW5ndWFnZSBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogTGFuZ3VhZ2Ugc2VsZWN0b3IgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGF9XG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wczogTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhID0ge307XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbGFuZ3VhZ2Ugc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqIEVtaXRzIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBjb2RlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGxhbmd1YWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqIFBvcG92ZXIgc2VsZWN0b3IgY29uZmlndXJhdGlvbiAqL1xuICBwb3BvdmVyUHJvcHM6IFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhO1xuXG4gIC8qKiBDdXJyZW50IGxhbmd1YWdlIG9ic2VydmFibGUgKi9cbiAgY3VycmVudExhbmd1YWdlJDogT2JzZXJ2YWJsZTxMYW5nT3B0aW9uPjtcblxuICAvKiogQXZhaWxhYmxlIGxhbmd1YWdlcyBvYnNlcnZhYmxlICovXG4gIGF2YWlsYWJsZUxhbmd1YWdlcyQ6IE9ic2VydmFibGU8TGFuZ09wdGlvbltdPjtcblxuICAvKiogTGFiZWwgb2JzZXJ2YWJsZSBmb3IgcmVhY3RpdmUgY29udGVudCAqL1xuICBsYWJlbCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgLyoqIERlZmF1bHQgbGFuZ3VhZ2UgZGlzcGxheSBuYW1lcyAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRMYW5ndWFnZU5hbWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGVzOiAnRXNwYcOxb2wnLFxuICAgIGVuOiAnRW5nbGlzaCcsXG4gICAgZnI6ICdGcmFuw6dhaXMnLFxuICAgIGRlOiAnRGV1dHNjaCcsXG4gICAgcHQ6ICdQb3J0dWd1w6pzJyxcbiAgICBpdDogJ0l0YWxpYW5vJyxcbiAgICB6aDogJ+S4reaWhycsXG4gICAgamE6ICfml6XmnKzoqp4nLFxuICAgIGtvOiAn7ZWc6rWt7Ja0JyxcbiAgICBydTogJ9Cg0YPRgdGB0LrQuNC5JyxcbiAgICBhcjogJ9in2YTYudix2KjZitipJyxcbiAgfTtcblxuICAvKiogRGVmYXVsdCBmbGFnIGljb25zIGZvciBsYW5ndWFnZXMgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2VGbGFnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBlczogJ/Cfh6rwn4e4JyxcbiAgICBlbjogJ/Cfh7rwn4e4JyxcbiAgICBmcjogJ/Cfh6vwn4e3JyxcbiAgICBkZTogJ/Cfh6nwn4eqJyxcbiAgICBwdDogJ/Cfh7Xwn4e5JyxcbiAgICBpdDogJ/Cfh67wn4e5JyxcbiAgICB6aDogJ/Cfh6jwn4ezJyxcbiAgICBqYTogJ/Cfh6/wn4e1JyxcbiAgICBrbzogJ/Cfh7Dwn4e3JyxcbiAgICBydTogJ/Cfh7fwn4e6JyxcbiAgICBhcjogJ/Cfh7jwn4emJyxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxhbmdTZXJ2aWNlOiBMYW5nU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZVxuICApIHtcbiAgICAvLyBSZWdpc3RlciByZXF1aXJlZCBpY29uc1xuICAgIGFkZEljb25zKHsgbGFuZ3VhZ2UsIGdsb2JlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplTGFuZ3VhZ2VTdGF0ZSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUxhYmVsKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUG9wb3ZlclByb3BzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxhbmd1YWdlU3RhdGUoKSB7XG4gICAgLy8gR2V0IGN1cnJlbnQgbGFuZ3VhZ2UgYW5kIGF2YWlsYWJsZSBsYW5ndWFnZXMgZnJvbSBMYW5nU2VydmljZVxuICAgIHRoaXMuY3VycmVudExhbmd1YWdlJCA9IHRoaXMubGFuZ1NlcnZpY2UuY3VycmVudExhbmckO1xuICAgIHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzJCA9IHRoaXMuY3VycmVudExhbmd1YWdlJC5waXBlKFxuICAgICAgbWFwKCgpID0+IHRoaXMucHJvcHMuYXZhaWxhYmxlTGFuZ3VhZ2VzIHx8IHRoaXMubGFuZ1NlcnZpY2UuYXZhaWxhYmxlTGFuZ3MpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxhYmVsKCkge1xuICAgIC8vIEluaXRpYWxpemUgbGFiZWwgb2JzZXJ2YWJsZSBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAgaWYgKHRoaXMucHJvcHMubGFiZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gU3RhdGljIGxhYmVsXG4gICAgICB0aGlzLmxhYmVsJCA9IG9mKHRoaXMucHJvcHMubGFiZWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5sYWJlbENvbmZpZykge1xuICAgICAgLy8gUmVhY3RpdmUgbGFiZWxcbiAgICAgIHRoaXMubGFiZWwkID0gdGhpcy5jb250ZW50U2VydmljZS5mcm9tQ29udGVudCh7XG4gICAgICAgIGNsYXNzTmFtZTogdGhpcy5wcm9wcy5sYWJlbENvbmZpZy5jbGFzc05hbWUgfHwgJ19nbG9iYWwnLFxuICAgICAgICBrZXk6IHRoaXMucHJvcHMubGFiZWxDb25maWcua2V5LFxuICAgICAgICBmYWxsYmFjazogdGhpcy5wcm9wcy5sYWJlbENvbmZpZy5mYWxsYmFjayB8fCAnTGFuZ3VhZ2UnLFxuICAgICAgICBpbnRlcnBvbGF0aW9uOiB0aGlzLnByb3BzLmxhYmVsQ29uZmlnLmludGVycG9sYXRpb24sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVmYXVsdCBsYWJlbCBmcm9tIGdsb2JhbCBjb250ZW50XG4gICAgICB0aGlzLmxhYmVsJCA9IHRoaXMuY29udGVudFNlcnZpY2UuZnJvbUNvbnRlbnQoe1xuICAgICAgICBjbGFzc05hbWU6ICdfZ2xvYmFsJyxcbiAgICAgICAga2V5OiAnbGFuZ3VhZ2UnLFxuICAgICAgICBmYWxsYmFjazogJ0lkaW9tYScsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVQb3BvdmVyUHJvcHMoKSB7XG4gICAgLy8gU3Vic2NyaWJlIHRvIGxhbmd1YWdlIHN0YXRlIGNoYW5nZXMgdG8gdXBkYXRlIHBvcG92ZXIgcHJvcHNcbiAgICBjb25zdCBsYW5ndWFnZVN1YnNjcmlwdGlvbiA9IHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzJC5zdWJzY3JpYmUoYXZhaWxhYmxlTGFuZ3VhZ2VzID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRMYW5ndWFnZVN1YnNjcmlwdGlvbiA9IHRoaXMuY3VycmVudExhbmd1YWdlJC5zdWJzY3JpYmUoY3VycmVudExhbmd1YWdlID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVQb3BvdmVyUHJvcHMoYXZhaWxhYmxlTGFuZ3VhZ2VzLCBjdXJyZW50TGFuZ3VhZ2UpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGN1cnJlbnRMYW5ndWFnZVN1YnNjcmlwdGlvbik7XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChsYW5ndWFnZVN1YnNjcmlwdGlvbik7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gbGFiZWwgY2hhbmdlc1xuICAgIGNvbnN0IGxhYmVsU3Vic2NyaXB0aW9uID0gdGhpcy5sYWJlbCQuc3Vic2NyaWJlKGxhYmVsID0+IHtcbiAgICAgIGlmICh0aGlzLnBvcG92ZXJQcm9wcykge1xuICAgICAgICB0aGlzLnBvcG92ZXJQcm9wcyA9IHtcbiAgICAgICAgICAuLi50aGlzLnBvcG92ZXJQcm9wcyxcbiAgICAgICAgICBsYWJlbDogdGhpcy5wcm9wcy5zaG93TGFiZWwgIT09IGZhbHNlID8gbGFiZWwgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChsYWJlbFN1YnNjcmlwdGlvbik7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBvcG92ZXJQcm9wcyhhdmFpbGFibGVMYW5ndWFnZXM6IExhbmdPcHRpb25bXSwgY3VycmVudExhbmd1YWdlOiBMYW5nT3B0aW9uKSB7XG4gICAgLy8gQ29udmVydCBsYW5ndWFnZSBjb2RlcyB0byBwb3BvdmVyIG9wdGlvbnNcbiAgICBjb25zdCBvcHRpb25zOiBQb3BvdmVyT3B0aW9uW10gPSBhdmFpbGFibGVMYW5ndWFnZXMubWFwKGxhbmcgPT4gKHtcbiAgICAgIHZhbHVlOiBsYW5nLFxuICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFuZ3VhZ2VEaXNwbGF5TmFtZShsYW5nKSxcbiAgICAgIGljb246IHRoaXMucHJvcHMuc2hvd0ZsYWdzID8gdW5kZWZpbmVkIDogdW5kZWZpbmVkLCAvLyBXZSdsbCB1c2UgdGV4dCBmbGFncyBpbnN0ZWFkXG4gICAgfSkpO1xuXG4gICAgLy8gQ3JlYXRlIHBvcG92ZXIgY29uZmlndXJhdGlvblxuICAgIHRoaXMucG9wb3ZlclByb3BzID0ge1xuICAgICAgb3B0aW9ucyxcbiAgICAgIHNlbGVjdGVkVmFsdWU6IGN1cnJlbnRMYW5ndWFnZSxcbiAgICAgIGxhYmVsOiB0aGlzLnByb3BzLnNob3dMYWJlbCAhPT0gZmFsc2UgPyAnJyA6IHVuZGVmaW5lZCwgLy8gV2lsbCBiZSBzZXQgYnkgbGFiZWwgc3Vic2NyaXB0aW9uXG4gICAgICBpY29uOiAnbGFuZ3VhZ2UnLFxuICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY2Npb25hciBpZGlvbWEuLi4nLFxuICAgICAgY29sb3I6IHRoaXMucHJvcHMuY29sb3IgfHwgJ21lZGl1bScsXG4gICAgICBzaXplOiB0aGlzLnByb3BzLnNpemUgfHwgJ2RlZmF1bHQnLFxuICAgICAgZmlsbDogdGhpcy5wcm9wcy5maWxsIHx8ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiB0aGlzLnByb3BzLnNoYXBlLFxuICAgICAgZXhwYW5kOiB0aGlzLnByb3BzLmV4cGFuZCxcbiAgICAgIGRpc2FibGVkOiB0aGlzLnByb3BzLmRpc2FibGVkIHx8IGZhbHNlLFxuICAgICAgaW50ZXJmYWNlOiAncG9wb3ZlcicsXG4gICAgICBzaG93Q2hlY2ttYXJrOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgY2FuY2VsVGV4dDogJ0NhbmNlbGFyJyxcbiAgICAgIG9rVGV4dDogJ0FjZXB0YXInLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldExhbmd1YWdlRGlzcGxheU5hbWUobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFVzZSBjdXN0b20gbmFtZXMgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB1c2UgZGVmYXVsdHMsIG90aGVyd2lzZSB1c2UgdGhlIGNvZGUgaXRzZWxmXG4gICAgY29uc3QgY3VzdG9tTmFtZSA9IHRoaXMucHJvcHMuY3VzdG9tTGFuZ3VhZ2VOYW1lcz8uW2xhbmd1YWdlQ29kZV07XG4gICAgY29uc3QgZGVmYXVsdE5hbWUgPSB0aGlzLmRlZmF1bHRMYW5ndWFnZU5hbWVzW2xhbmd1YWdlQ29kZV07XG4gICAgY29uc3QgZmxhZyA9IHRoaXMucHJvcHMuc2hvd0ZsYWdzID8gdGhpcy5kZWZhdWx0TGFuZ3VhZ2VGbGFnc1tsYW5ndWFnZUNvZGVdIDogJyc7XG5cbiAgICBjb25zdCBkaXNwbGF5TmFtZSA9IGN1c3RvbU5hbWUgfHwgZGVmYXVsdE5hbWUgfHwgbGFuZ3VhZ2VDb2RlLnRvVXBwZXJDYXNlKCk7XG4gICAgcmV0dXJuIGZsYWcgPyBgJHtmbGFnfSAke2Rpc3BsYXlOYW1lfWAgOiBkaXNwbGF5TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgbGFuZ3VhZ2Ugc2VsZWN0aW9uIGNoYW5nZS5cbiAgICogQHBhcmFtIHNlbGVjdGVkTGFuZ3VhZ2UgLSBUaGUgc2VsZWN0ZWQgbGFuZ3VhZ2UgY29kZShzKVxuICAgKi9cbiAgb25MYW5ndWFnZUNoYW5nZShzZWxlY3RlZExhbmd1YWdlOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGlmICh0eXBlb2Ygc2VsZWN0ZWRMYW5ndWFnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgbGFuZ3VhZ2Ugc2VydmljZVxuICAgICAgdGhpcy5sYW5nU2VydmljZS5zZXRMYW5nKHNlbGVjdGVkTGFuZ3VhZ2UpO1xuXG4gICAgICAvLyBFbWl0IHRoZSBjaGFuZ2UgZXZlbnRcbiAgICAgIHRoaXMubGFuZ3VhZ2VDaGFuZ2UuZW1pdChzZWxlY3RlZExhbmd1YWdlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3IgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5cbi8qKlxuICogUHJvcHMgZm9yIHZhbC1sYW5ndWFnZS1zZWxlY3RvciBjb21wb25lbnQuXG4gKiBBIHNwZWNpYWxpemVkIGNvbXBvbmVudCBmb3IgbGFuZ3VhZ2Ugc2VsZWN0aW9uLlxuICpcbiAqIEBwcm9wZXJ0eSBjdXJyZW50TGFuZ3VhZ2UgLSBDdXJyZW50bHkgc2VsZWN0ZWQgbGFuZ3VhZ2UgY29kZS5cbiAqIEBwcm9wZXJ0eSBhdmFpbGFibGVMYW5ndWFnZXMgLSBBcnJheSBvZiBhdmFpbGFibGUgbGFuZ3VhZ2UgY29kZXMuXG4gKiBAcHJvcGVydHkgc2hvd0xhYmVsIC0gV2hldGhlciB0byBzaG93IHRoZSBsYWJlbC5cbiAqIEBwcm9wZXJ0eSBsYWJlbCAtIEN1c3RvbSBsYWJlbCB0ZXh0IChzdGF0aWMpLlxuICogQHByb3BlcnR5IGxhYmVsQ29uZmlnIC0gUmVhY3RpdmUgY29udGVudCBjb25maWd1cmF0aW9uIGZvciBsYWJlbC5cbiAqIEBwcm9wZXJ0eSBzaG93RmxhZ3MgLSBXaGV0aGVyIHRvIHNob3cgZmxhZyBpY29ucyBmb3IgbGFuZ3VhZ2VzLlxuICogQHByb3BlcnR5IGNvbG9yIC0gQnV0dG9uIGNvbG9yIChJb25pYyBjb2xvciBzdHJpbmcpLlxuICogQHByb3BlcnR5IHNpemUgLSBCdXR0b24gc2l6ZSAoJ3NtYWxsJyB8ICdkZWZhdWx0JyB8ICdsYXJnZScpLlxuICogQHByb3BlcnR5IGZpbGwgLSBCdXR0b24gZmlsbCBzdHlsZSAoJ2NsZWFyJyB8ICdvdXRsaW5lJyB8ICdzb2xpZCcgfCAnZGVmYXVsdCcpLlxuICogQHByb3BlcnR5IHNoYXBlIC0gQnV0dG9uIHNoYXBlICgncm91bmQnIHwgdW5kZWZpbmVkKS5cbiAqIEBwcm9wZXJ0eSBleHBhbmQgLSBCdXR0b24gZXhwYW5zaW9uICgnZnVsbCcgfCAnYmxvY2snIHwgdW5kZWZpbmVkKS5cbiAqIEBwcm9wZXJ0eSBkaXNhYmxlZCAtIFdoZXRoZXIgdGhlIHNlbGVjdG9yIGlzIGRpc2FibGVkLlxuICogQHByb3BlcnR5IGN1c3RvbUxhbmd1YWdlTmFtZXMgLSBDdXN0b20gZGlzcGxheSBuYW1lcyBmb3IgbGFuZ3VhZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YSB7XG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgbGFuZ3VhZ2UgY29kZSAqL1xuICBjdXJyZW50TGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIC8qKiBBcnJheSBvZiBhdmFpbGFibGUgbGFuZ3VhZ2UgY29kZXMgKi9cbiAgYXZhaWxhYmxlTGFuZ3VhZ2VzPzogc3RyaW5nW107XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGxhYmVsICovXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XG4gIC8qKiBTdGF0aWMgbGFiZWwgdGV4dCAodGFrZXMgcHJlY2VkZW5jZSBvdmVyIGxhYmVsQ29uZmlnKSAqL1xuICBsYWJlbD86IHN0cmluZztcbiAgLyoqIFJlYWN0aXZlIGNvbnRlbnQgY29uZmlndXJhdGlvbiBmb3IgbGFiZWwgKi9cbiAgbGFiZWxDb25maWc/OiB7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGZhbGxiYWNrPzogc3RyaW5nO1xuICAgIGludGVycG9sYXRpb24/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICB9O1xuICAvKiogV2hldGhlciB0byBzaG93IGZsYWcgaWNvbnMgZm9yIGxhbmd1YWdlcyAqL1xuICBzaG93RmxhZ3M/OiBib29sZWFuO1xuICAvKiogQnV0dG9uIGNvbG9yICovXG4gIGNvbG9yPzogQ29sb3I7XG4gIC8qKiBCdXR0b24gc2l6ZSAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdkZWZhdWx0JyB8ICdsYXJnZSc7XG4gIC8qKiBCdXR0b24gZmlsbCBzdHlsZSAqL1xuICBmaWxsPzogJ2NsZWFyJyB8ICdvdXRsaW5lJyB8ICdzb2xpZCcgfCAnZGVmYXVsdCc7XG4gIC8qKiBCdXR0b24gc2hhcGUgKi9cbiAgc2hhcGU/OiAncm91bmQnO1xuICAvKiogQnV0dG9uIGV4cGFuc2lvbiAqL1xuICBleHBhbmQ/OiAnZnVsbCcgfCAnYmxvY2snO1xuICAvKiogV2hldGhlciB0aGUgc2VsZWN0b3IgaXMgZGlzYWJsZWQgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogQ3VzdG9tIGRpc3BsYXkgbmFtZXMgZm9yIGxhbmd1YWdlcyAqL1xuICBjdXN0b21MYW5ndWFnZU5hbWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { IonButton, IonIcon, IonItem, IonLabel, IonSelect, IonSelectOption } from '@ionic/angular/standalone';
|
|
4
|
+
import { addIcons } from 'ionicons';
|
|
5
|
+
import { chevronDown } from 'ionicons/icons';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
/**
|
|
9
|
+
* val-popover-selector
|
|
10
|
+
*
|
|
11
|
+
* A generic reusable popover selector component that can be used for any type of selection.
|
|
12
|
+
* Provides a button trigger that opens a popover with selectable options.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // Basic usage
|
|
16
|
+
* <val-popover-selector
|
|
17
|
+
* [props]="selectorProps"
|
|
18
|
+
* (selectionChange)="onSelectionChange($event)">
|
|
19
|
+
* </val-popover-selector>
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // With icon and custom styling
|
|
23
|
+
* const selectorProps: PopoverSelectorMetadata = {
|
|
24
|
+
* options: [
|
|
25
|
+
* { value: 'option1', label: 'Option 1', icon: 'star' },
|
|
26
|
+
* { value: 'option2', label: 'Option 2', icon: 'heart' }
|
|
27
|
+
* ],
|
|
28
|
+
* selectedValue: 'option1',
|
|
29
|
+
* label: 'Choose option',
|
|
30
|
+
* icon: 'settings',
|
|
31
|
+
* color: 'primary',
|
|
32
|
+
* size: 'large',
|
|
33
|
+
* fill: 'solid'
|
|
34
|
+
* };
|
|
35
|
+
*
|
|
36
|
+
* @input props: PopoverSelectorMetadata - Configuration for the selector
|
|
37
|
+
* @output selectionChange: EventEmitter<string | string[]> - Emitted when selection changes
|
|
38
|
+
*/
|
|
39
|
+
export class PopoverSelectorComponent {
|
|
40
|
+
constructor() {
|
|
41
|
+
/**
|
|
42
|
+
* Event emitted when the selection changes.
|
|
43
|
+
* Emits the selected value(s).
|
|
44
|
+
*/
|
|
45
|
+
this.selectionChange = new EventEmitter();
|
|
46
|
+
// Register required icons
|
|
47
|
+
addIcons({ chevronDown });
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Handle selection change from the ion-select.
|
|
51
|
+
* @param event - The ion-select change event
|
|
52
|
+
*/
|
|
53
|
+
onSelectionChange(event) {
|
|
54
|
+
const selectedValue = event.detail.value;
|
|
55
|
+
this.selectionChange.emit(selectedValue);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get the display text for the trigger button.
|
|
59
|
+
* Shows the selected option's label or placeholder.
|
|
60
|
+
* @returns The display text
|
|
61
|
+
*/
|
|
62
|
+
getDisplayText() {
|
|
63
|
+
if (!this.props.selectedValue) {
|
|
64
|
+
return this.props.placeholder || 'Seleccionar...';
|
|
65
|
+
}
|
|
66
|
+
if (Array.isArray(this.props.selectedValue)) {
|
|
67
|
+
// Multiple selection
|
|
68
|
+
if (this.props.selectedValue.length === 0) {
|
|
69
|
+
return this.props.placeholder || 'Seleccionar...';
|
|
70
|
+
}
|
|
71
|
+
if (this.props.selectedValue.length === 1) {
|
|
72
|
+
const option = this.props.options.find(opt => opt.value === this.props.selectedValue[0]);
|
|
73
|
+
return option?.label || this.props.selectedValue[0];
|
|
74
|
+
}
|
|
75
|
+
return `${this.props.selectedValue.length} seleccionados`;
|
|
76
|
+
}
|
|
77
|
+
// Single selection
|
|
78
|
+
const selectedOption = this.props.options.find(opt => opt.value === this.props.selectedValue);
|
|
79
|
+
return selectedOption?.label || this.props.selectedValue;
|
|
80
|
+
}
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PopoverSelectorComponent, isStandalone: true, selector: "val-popover-selector", inputs: { props: "props" }, outputs: { selectionChange: "selectionChange" }, ngImport: i0, template: `
|
|
83
|
+
<ion-item [disabled]="props.disabled" lines="none">
|
|
84
|
+
<ion-label *ngIf="props.label" position="stacked">{{ props.label }}</ion-label>
|
|
85
|
+
<ion-select
|
|
86
|
+
[value]="props.selectedValue"
|
|
87
|
+
[placeholder]="props.placeholder || 'Seleccionar...'"
|
|
88
|
+
[interface]="props.interface || 'popover'"
|
|
89
|
+
[multiple]="props.multiple || false"
|
|
90
|
+
[disabled]="props.disabled || false"
|
|
91
|
+
[cancelText]="props.cancelText || 'Cancelar'"
|
|
92
|
+
[okText]="props.okText || 'Aceptar'"
|
|
93
|
+
(ionChange)="onSelectionChange($event)"
|
|
94
|
+
class="popover-selector-select"
|
|
95
|
+
>
|
|
96
|
+
<ion-button
|
|
97
|
+
slot="trigger"
|
|
98
|
+
[fill]="props.fill || 'outline'"
|
|
99
|
+
[size]="props.size || 'default'"
|
|
100
|
+
[shape]="props.shape"
|
|
101
|
+
[expand]="props.expand"
|
|
102
|
+
[color]="props.color || 'medium'"
|
|
103
|
+
[disabled]="props.disabled || false"
|
|
104
|
+
class="selector-trigger"
|
|
105
|
+
>
|
|
106
|
+
<ion-icon *ngIf="props.icon" [name]="props.icon" slot="start"> </ion-icon>
|
|
107
|
+
|
|
108
|
+
<span class="trigger-text">{{ getDisplayText() }}</span>
|
|
109
|
+
|
|
110
|
+
<ion-icon name="chevron-down" slot="end" class="chevron-icon"> </ion-icon>
|
|
111
|
+
</ion-button>
|
|
112
|
+
|
|
113
|
+
<ion-select-option *ngFor="let option of props.options" [value]="option.value" [disabled]="option.disabled">
|
|
114
|
+
<div class="option-content">
|
|
115
|
+
<ion-icon *ngIf="option.icon" [name]="option.icon" class="option-icon"> </ion-icon>
|
|
116
|
+
<span>{{ option.label }}</span>
|
|
117
|
+
</div>
|
|
118
|
+
</ion-select-option>
|
|
119
|
+
</ion-select>
|
|
120
|
+
</ion-item>
|
|
121
|
+
`, isInline: true, styles: [".popover-selector-select{width:100%}.popover-selector-select .selector-trigger{width:100%;justify-content:space-between;text-align:left;--padding-start: 18px;--padding-end: 18px;--padding-top: 14px;--padding-bottom: 14px;--border-radius: 14px;border-radius:var(--border-radius);min-height:48px;box-shadow:0 3px 12px #00000014;transition:all .25s cubic-bezier(.4,0,.2,1);background:var(--ion-color-light, #f8f9fa);border:1px solid rgba(0,0,0,.06)}.popover-selector-select .selector-trigger:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 6px 20px #0000001f;border-color:#0000001f}.popover-selector-select .selector-trigger:active{transform:translateY(-1px);box-shadow:0 4px 16px #00000029}.popover-selector-select .selector-trigger:focus-visible{outline:2px solid var(--ion-color-primary, #3880ff);outline-offset:2px;box-shadow:0 0 0 4px #3880ff26}.popover-selector-select .selector-trigger .trigger-text{flex:1;text-align:start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.5;color:var(--ion-color-dark, #1a1a1a)}.popover-selector-select .selector-trigger .chevron-icon{margin-left:auto;transition:transform .3s cubic-bezier(.4,0,.2,1);font-size:20px;opacity:.6;color:var(--ion-color-medium, #92949c)}.popover-selector-select .selector-trigger[disabled]{opacity:.5;pointer-events:none;box-shadow:none;transform:none;background:var(--ion-color-light-shade, #e9ecef);color:var(--ion-color-medium, #92949c)}.popover-selector-select .selector-trigger.select-expanded{box-shadow:0 4px 16px #0000001f;border-color:var(--ion-color-primary, #3880ff)}.popover-selector-select .selector-trigger.select-expanded .chevron-icon{transform:rotate(180deg);color:var(--ion-color-primary, #3880ff)}.popover-selector-select.size-small .selector-trigger{--padding-start: 14px;--padding-end: 14px;--padding-top: 10px;--padding-bottom: 10px;--border-radius: 10px;font-size:14px;min-height:40px}.popover-selector-select.size-small .selector-trigger .chevron-icon{font-size:18px}.popover-selector-select.size-large .selector-trigger{--padding-start: 22px;--padding-end: 22px;--padding-top: 18px;--padding-bottom: 18px;--border-radius: 18px;font-size:18px;min-height:56px}.popover-selector-select.size-large .selector-trigger .chevron-icon{font-size:22px}.option-content{display:flex;align-items:center;gap:12px;padding:6px 0}.option-content .option-icon{font-size:18px;width:18px;height:18px;opacity:.8;color:var(--ion-color-medium-shade, #808289)}.option-content span{font-weight:500;color:var(--ion-color-dark, #1a1a1a);line-height:1.4}ion-item[disabled]{opacity:.5;pointer-events:none}ion-item[disabled] .selector-trigger{opacity:.6;box-shadow:none!important;transform:none!important;background:var(--ion-color-light-shade, #e9ecef)!important;border-color:#00000008!important}@media (max-width: 768px){.popover-selector-select .selector-trigger{--padding-start: 16px;--padding-end: 16px;--border-radius: 12px;min-height:46px}.popover-selector-select .selector-trigger .trigger-text{font-size:15px}.popover-selector-select .selector-trigger .chevron-icon{font-size:19px}}@media (prefers-color-scheme: dark){.popover-selector-select .selector-trigger{background:var(--ion-color-dark-tint, #383a3e);border-color:#ffffff1a}.popover-selector-select .selector-trigger:hover:not([disabled]){border-color:#fff3}.popover-selector-select .selector-trigger .trigger-text{color:var(--ion-color-light, #f4f5f8)}.popover-selector-select .selector-trigger .chevron-icon{color:var(--ion-color-light-shade, #d7d8da)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.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: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }] }); }
|
|
122
|
+
}
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverSelectorComponent, decorators: [{
|
|
124
|
+
type: Component,
|
|
125
|
+
args: [{ selector: 'val-popover-selector', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonSelect, IonSelectOption, IonItem, IonLabel], template: `
|
|
126
|
+
<ion-item [disabled]="props.disabled" lines="none">
|
|
127
|
+
<ion-label *ngIf="props.label" position="stacked">{{ props.label }}</ion-label>
|
|
128
|
+
<ion-select
|
|
129
|
+
[value]="props.selectedValue"
|
|
130
|
+
[placeholder]="props.placeholder || 'Seleccionar...'"
|
|
131
|
+
[interface]="props.interface || 'popover'"
|
|
132
|
+
[multiple]="props.multiple || false"
|
|
133
|
+
[disabled]="props.disabled || false"
|
|
134
|
+
[cancelText]="props.cancelText || 'Cancelar'"
|
|
135
|
+
[okText]="props.okText || 'Aceptar'"
|
|
136
|
+
(ionChange)="onSelectionChange($event)"
|
|
137
|
+
class="popover-selector-select"
|
|
138
|
+
>
|
|
139
|
+
<ion-button
|
|
140
|
+
slot="trigger"
|
|
141
|
+
[fill]="props.fill || 'outline'"
|
|
142
|
+
[size]="props.size || 'default'"
|
|
143
|
+
[shape]="props.shape"
|
|
144
|
+
[expand]="props.expand"
|
|
145
|
+
[color]="props.color || 'medium'"
|
|
146
|
+
[disabled]="props.disabled || false"
|
|
147
|
+
class="selector-trigger"
|
|
148
|
+
>
|
|
149
|
+
<ion-icon *ngIf="props.icon" [name]="props.icon" slot="start"> </ion-icon>
|
|
150
|
+
|
|
151
|
+
<span class="trigger-text">{{ getDisplayText() }}</span>
|
|
152
|
+
|
|
153
|
+
<ion-icon name="chevron-down" slot="end" class="chevron-icon"> </ion-icon>
|
|
154
|
+
</ion-button>
|
|
155
|
+
|
|
156
|
+
<ion-select-option *ngFor="let option of props.options" [value]="option.value" [disabled]="option.disabled">
|
|
157
|
+
<div class="option-content">
|
|
158
|
+
<ion-icon *ngIf="option.icon" [name]="option.icon" class="option-icon"> </ion-icon>
|
|
159
|
+
<span>{{ option.label }}</span>
|
|
160
|
+
</div>
|
|
161
|
+
</ion-select-option>
|
|
162
|
+
</ion-select>
|
|
163
|
+
</ion-item>
|
|
164
|
+
`, styles: [".popover-selector-select{width:100%}.popover-selector-select .selector-trigger{width:100%;justify-content:space-between;text-align:left;--padding-start: 18px;--padding-end: 18px;--padding-top: 14px;--padding-bottom: 14px;--border-radius: 14px;border-radius:var(--border-radius);min-height:48px;box-shadow:0 3px 12px #00000014;transition:all .25s cubic-bezier(.4,0,.2,1);background:var(--ion-color-light, #f8f9fa);border:1px solid rgba(0,0,0,.06)}.popover-selector-select .selector-trigger:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 6px 20px #0000001f;border-color:#0000001f}.popover-selector-select .selector-trigger:active{transform:translateY(-1px);box-shadow:0 4px 16px #00000029}.popover-selector-select .selector-trigger:focus-visible{outline:2px solid var(--ion-color-primary, #3880ff);outline-offset:2px;box-shadow:0 0 0 4px #3880ff26}.popover-selector-select .selector-trigger .trigger-text{flex:1;text-align:start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.5;color:var(--ion-color-dark, #1a1a1a)}.popover-selector-select .selector-trigger .chevron-icon{margin-left:auto;transition:transform .3s cubic-bezier(.4,0,.2,1);font-size:20px;opacity:.6;color:var(--ion-color-medium, #92949c)}.popover-selector-select .selector-trigger[disabled]{opacity:.5;pointer-events:none;box-shadow:none;transform:none;background:var(--ion-color-light-shade, #e9ecef);color:var(--ion-color-medium, #92949c)}.popover-selector-select .selector-trigger.select-expanded{box-shadow:0 4px 16px #0000001f;border-color:var(--ion-color-primary, #3880ff)}.popover-selector-select .selector-trigger.select-expanded .chevron-icon{transform:rotate(180deg);color:var(--ion-color-primary, #3880ff)}.popover-selector-select.size-small .selector-trigger{--padding-start: 14px;--padding-end: 14px;--padding-top: 10px;--padding-bottom: 10px;--border-radius: 10px;font-size:14px;min-height:40px}.popover-selector-select.size-small .selector-trigger .chevron-icon{font-size:18px}.popover-selector-select.size-large .selector-trigger{--padding-start: 22px;--padding-end: 22px;--padding-top: 18px;--padding-bottom: 18px;--border-radius: 18px;font-size:18px;min-height:56px}.popover-selector-select.size-large .selector-trigger .chevron-icon{font-size:22px}.option-content{display:flex;align-items:center;gap:12px;padding:6px 0}.option-content .option-icon{font-size:18px;width:18px;height:18px;opacity:.8;color:var(--ion-color-medium-shade, #808289)}.option-content span{font-weight:500;color:var(--ion-color-dark, #1a1a1a);line-height:1.4}ion-item[disabled]{opacity:.5;pointer-events:none}ion-item[disabled] .selector-trigger{opacity:.6;box-shadow:none!important;transform:none!important;background:var(--ion-color-light-shade, #e9ecef)!important;border-color:#00000008!important}@media (max-width: 768px){.popover-selector-select .selector-trigger{--padding-start: 16px;--padding-end: 16px;--border-radius: 12px;min-height:46px}.popover-selector-select .selector-trigger .trigger-text{font-size:15px}.popover-selector-select .selector-trigger .chevron-icon{font-size:19px}}@media (prefers-color-scheme: dark){.popover-selector-select .selector-trigger{background:var(--ion-color-dark-tint, #383a3e);border-color:#ffffff1a}.popover-selector-select .selector-trigger:hover:not([disabled]){border-color:#fff3}.popover-selector-select .selector-trigger .trigger-text{color:var(--ion-color-light, #f4f5f8)}.popover-selector-select .selector-trigger .chevron-icon{color:var(--ion-color-light-shade, #d7d8da)}}\n"] }]
|
|
165
|
+
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], selectionChange: [{
|
|
168
|
+
type: Output
|
|
169
|
+
}] } });
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wb3BvdmVyLXNlbGVjdG9yL3BvcG92ZXItc2VsZWN0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFpRDdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBZW5DO1FBUEE7OztXQUdHO1FBRUgsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUd0RCwwQkFBMEI7UUFDMUIsUUFBUSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsS0FBVTtRQUMxQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLGdCQUFnQixDQUFDO1FBQ3BELENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzVDLHFCQUFxQjtZQUNyQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekYsT0FBTyxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQztRQUM1RCxDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RixPQUFPLGNBQWMsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFDM0QsQ0FBQzsrR0F0RFUsd0JBQXdCO21HQUF4Qix3QkFBd0IsNkpBekV6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNULDBoSEF4Q1MsWUFBWSxnUUFBRSxTQUFTLG9QQUFFLE9BQU8sMkpBQUUsU0FBUyx1VEFBRSxlQUFlLDZGQUFFLE9BQU8sME5BQUUsUUFBUTs7NEZBMEU5RSx3QkFBd0I7a0JBN0VwQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFDaEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDVDt3REF3Q0QsS0FBSztzQkFESixLQUFLO2dCQVFOLGVBQWU7c0JBRGQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uLCBJb25JdGVtLCBJb25MYWJlbCwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hldnJvbkRvd24gfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBQb3BvdmVyU2VsZWN0b3JNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcG9wb3Zlci1zZWxlY3RvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24sIElvbkl0ZW0sIElvbkxhYmVsXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWl0ZW0gW2Rpc2FibGVkXT1cInByb3BzLmRpc2FibGVkXCIgbGluZXM9XCJub25lXCI+XG4gICAgICA8aW9uLWxhYmVsICpuZ0lmPVwicHJvcHMubGFiZWxcIiBwb3NpdGlvbj1cInN0YWNrZWRcIj57eyBwcm9wcy5sYWJlbCB9fTwvaW9uLWxhYmVsPlxuICAgICAgPGlvbi1zZWxlY3RcbiAgICAgICAgW3ZhbHVlXT1cInByb3BzLnNlbGVjdGVkVmFsdWVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHMucGxhY2Vob2xkZXIgfHwgJ1NlbGVjY2lvbmFyLi4uJ1wiXG4gICAgICAgIFtpbnRlcmZhY2VdPVwicHJvcHMuaW50ZXJmYWNlIHx8ICdwb3BvdmVyJ1wiXG4gICAgICAgIFttdWx0aXBsZV09XCJwcm9wcy5tdWx0aXBsZSB8fCBmYWxzZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5kaXNhYmxlZCB8fCBmYWxzZVwiXG4gICAgICAgIFtjYW5jZWxUZXh0XT1cInByb3BzLmNhbmNlbFRleHQgfHwgJ0NhbmNlbGFyJ1wiXG4gICAgICAgIFtva1RleHRdPVwicHJvcHMub2tUZXh0IHx8ICdBY2VwdGFyJ1wiXG4gICAgICAgIChpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwicG9wb3Zlci1zZWxlY3Rvci1zZWxlY3RcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNsb3Q9XCJ0cmlnZ2VyXCJcbiAgICAgICAgICBbZmlsbF09XCJwcm9wcy5maWxsIHx8ICdvdXRsaW5lJ1wiXG4gICAgICAgICAgW3NpemVdPVwicHJvcHMuc2l6ZSB8fCAnZGVmYXVsdCdcIlxuICAgICAgICAgIFtzaGFwZV09XCJwcm9wcy5zaGFwZVwiXG4gICAgICAgICAgW2V4cGFuZF09XCJwcm9wcy5leHBhbmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAnbWVkaXVtJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLmRpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdG9yLXRyaWdnZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlvbi1pY29uICpuZ0lmPVwicHJvcHMuaWNvblwiIFtuYW1lXT1cInByb3BzLmljb25cIiBzbG90PVwic3RhcnRcIj4gPC9pb24taWNvbj5cblxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJpZ2dlci10ZXh0XCI+e3sgZ2V0RGlzcGxheVRleHQoKSB9fTwvc3Bhbj5cblxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1kb3duXCIgc2xvdD1cImVuZFwiIGNsYXNzPVwiY2hldnJvbi1pY29uXCI+IDwvaW9uLWljb24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wcy5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiAqbmdJZj1cIm9wdGlvbi5pY29uXCIgW25hbWVdPVwib3B0aW9uLmljb25cIiBjbGFzcz1cIm9wdGlvbi1pY29uXCI+IDwvaW9uLWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyBvcHRpb24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgPC9pb24taXRlbT5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vcG9wb3Zlci1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXBvcG92ZXItc2VsZWN0b3JcbiAqXG4gKiBBIGdlbmVyaWMgcmV1c2FibGUgcG9wb3ZlciBzZWxlY3RvciBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCBmb3IgYW55IHR5cGUgb2Ygc2VsZWN0aW9uLlxuICogUHJvdmlkZXMgYSBidXR0b24gdHJpZ2dlciB0aGF0IG9wZW5zIGEgcG9wb3ZlciB3aXRoIHNlbGVjdGFibGUgb3B0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgdXNhZ2VcbiAqIDx2YWwtcG9wb3Zlci1zZWxlY3RvclxuICogICBbcHJvcHNdPVwic2VsZWN0b3JQcm9wc1wiXG4gKiAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICogPC92YWwtcG9wb3Zlci1zZWxlY3Rvcj5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2l0aCBpY29uIGFuZCBjdXN0b20gc3R5bGluZ1xuICogY29uc3Qgc2VsZWN0b3JQcm9wczogUG9wb3ZlclNlbGVjdG9yTWV0YWRhdGEgPSB7XG4gKiAgIG9wdGlvbnM6IFtcbiAqICAgICB7IHZhbHVlOiAnb3B0aW9uMScsIGxhYmVsOiAnT3B0aW9uIDEnLCBpY29uOiAnc3RhcicgfSxcbiAqICAgICB7IHZhbHVlOiAnb3B0aW9uMicsIGxhYmVsOiAnT3B0aW9uIDInLCBpY29uOiAnaGVhcnQnIH1cbiAqICAgXSxcbiAqICAgc2VsZWN0ZWRWYWx1ZTogJ29wdGlvbjEnLFxuICogICBsYWJlbDogJ0Nob29zZSBvcHRpb24nLFxuICogICBpY29uOiAnc2V0dGluZ3MnLFxuICogICBjb2xvcjogJ3ByaW1hcnknLFxuICogICBzaXplOiAnbGFyZ2UnLFxuICogICBmaWxsOiAnc29saWQnXG4gKiB9O1xuICpcbiAqIEBpbnB1dCBwcm9wczogUG9wb3ZlclNlbGVjdG9yTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgc2VsZWN0b3JcbiAqIEBvdXRwdXQgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgc3RyaW5nW10+IC0gRW1pdHRlZCB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBQb3BvdmVyU2VsZWN0b3JDb21wb25lbnQge1xuICAvKipcbiAgICogUG9wb3ZlciBzZWxlY3RvciBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHR5cGUge1BvcG92ZXJTZWxlY3Rvck1ldGFkYXRhfVxuICAgKi9cbiAgQElucHV0KClcbiAgcHJvcHM6IFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKiBFbWl0cyB0aGUgc2VsZWN0ZWQgdmFsdWUocykuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBzdHJpbmdbXT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBSZWdpc3RlciByZXF1aXJlZCBpY29uc1xuICAgIGFkZEljb25zKHsgY2hldnJvbkRvd24gfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHNlbGVjdGlvbiBjaGFuZ2UgZnJvbSB0aGUgaW9uLXNlbGVjdC5cbiAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGlvbi1zZWxlY3QgY2hhbmdlIGV2ZW50XG4gICAqL1xuICBvblNlbGVjdGlvbkNoYW5nZShldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50LmRldGFpbC52YWx1ZTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHNlbGVjdGVkVmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGlzcGxheSB0ZXh0IGZvciB0aGUgdHJpZ2dlciBidXR0b24uXG4gICAqIFNob3dzIHRoZSBzZWxlY3RlZCBvcHRpb24ncyBsYWJlbCBvciBwbGFjZWhvbGRlci5cbiAgICogQHJldHVybnMgVGhlIGRpc3BsYXkgdGV4dFxuICAgKi9cbiAgZ2V0RGlzcGxheVRleHQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucHJvcHMuc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMucGxhY2Vob2xkZXIgfHwgJ1NlbGVjY2lvbmFyLi4uJztcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkVmFsdWUpKSB7XG4gICAgICAvLyBNdWx0aXBsZSBzZWxlY3Rpb25cbiAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnBsYWNlaG9sZGVyIHx8ICdTZWxlY2Npb25hci4uLic7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLnByb3BzLm9wdGlvbnMuZmluZChvcHQgPT4gb3B0LnZhbHVlID09PSB0aGlzLnByb3BzLnNlbGVjdGVkVmFsdWVbMF0pO1xuICAgICAgICByZXR1cm4gb3B0aW9uPy5sYWJlbCB8fCB0aGlzLnByb3BzLnNlbGVjdGVkVmFsdWVbMF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYCR7dGhpcy5wcm9wcy5zZWxlY3RlZFZhbHVlLmxlbmd0aH0gc2VsZWNjaW9uYWRvc2A7XG4gICAgfVxuXG4gICAgLy8gU2luZ2xlIHNlbGVjdGlvblxuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gdGhpcy5wcm9wcy5vcHRpb25zLmZpbmQob3B0ID0+IG9wdC52YWx1ZSA9PT0gdGhpcy5wcm9wcy5zZWxlY3RlZFZhbHVlKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb24/LmxhYmVsIHx8IHRoaXMucHJvcHMuc2VsZWN0ZWRWYWx1ZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wb3BvdmVyLXNlbGVjdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvciB9IGZyb20gJ0Bpb25pYy9jb3JlJztcblxuLyoqXG4gKiBPcHRpb24gZm9yIHRoZSBwb3BvdmVyIHNlbGVjdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvcG92ZXJPcHRpb24ge1xuICAvKiogT3B0aW9uIHZhbHVlICovXG4gIHZhbHVlOiBzdHJpbmc7XG4gIC8qKiBPcHRpb24gZGlzcGxheSBsYWJlbCAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogT3B0aW9uIGljb24gKG9wdGlvbmFsKSAqL1xuICBpY29uPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGUgb3B0aW9uIGlzIGRpc2FibGVkICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdmFsLXBvcG92ZXItc2VsZWN0b3IgY29tcG9uZW50LlxuICogQSBnZW5lcmljIHJldXNhYmxlIHBvcG92ZXIgc2VsZWN0b3IgY29tcG9uZW50LlxuICpcbiAqIEBwcm9wZXJ0eSBvcHRpb25zIC0gQXJyYXkgb2Ygc2VsZWN0YWJsZSBvcHRpb25zLlxuICogQHByb3BlcnR5IHNlbGVjdGVkVmFsdWUgLSBDdXJyZW50bHkgc2VsZWN0ZWQgdmFsdWUuXG4gKiBAcHJvcGVydHkgbGFiZWwgLSBEaXNwbGF5IGxhYmVsIGZvciB0aGUgc2VsZWN0b3IuXG4gKiBAcHJvcGVydHkgaWNvbiAtIEljb24gdG8gZGlzcGxheSBpbiB0aGUgdHJpZ2dlciBidXR0b24gKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBwbGFjZWhvbGRlciAtIFBsYWNlaG9sZGVyIHRleHQgd2hlbiBubyBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gKiBAcHJvcGVydHkgY29sb3IgLSBCdXR0b24gY29sb3IgKElvbmljIGNvbG9yIHN0cmluZykuXG4gKiBAcHJvcGVydHkgc2l6ZSAtIEJ1dHRvbiBzaXplICgnc21hbGwnIHwgJ2RlZmF1bHQnIHwgJ2xhcmdlJykuXG4gKiBAcHJvcGVydHkgZmlsbCAtIEJ1dHRvbiBmaWxsIHN0eWxlICgnY2xlYXInIHwgJ291dGxpbmUnIHwgJ3NvbGlkJyB8ICdkZWZhdWx0JykuXG4gKiBAcHJvcGVydHkgc2hhcGUgLSBCdXR0b24gc2hhcGUgKCdyb3VuZCcgfCB1bmRlZmluZWQpLlxuICogQHByb3BlcnR5IGV4cGFuZCAtIEJ1dHRvbiBleHBhbnNpb24gKCdmdWxsJyB8ICdibG9jaycgfCB1bmRlZmluZWQpLlxuICogQHByb3BlcnR5IGRpc2FibGVkIC0gV2hldGhlciB0aGUgc2VsZWN0b3IgaXMgZGlzYWJsZWQuXG4gKiBAcHJvcGVydHkgaW50ZXJmYWNlIC0gUG9wb3ZlciBpbnRlcmZhY2Ugc3R5bGUgKCdwb3BvdmVyJyB8ICdhY3Rpb24tc2hlZXQnIHwgJ2FsZXJ0JykuXG4gKiBAcHJvcGVydHkgc2hvd0NoZWNrbWFyayAtIFdoZXRoZXIgdG8gc2hvdyBjaGVja21hcmtzIGZvciBzZWxlY3RlZCBvcHRpb25zLlxuICogQHByb3BlcnR5IG11bHRpcGxlIC0gV2hldGhlciBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgYWxsb3dlZC5cbiAqIEBwcm9wZXJ0eSBjYW5jZWxUZXh0IC0gVGV4dCBmb3IgY2FuY2VsIGJ1dHRvbi5cbiAqIEBwcm9wZXJ0eSBva1RleHQgLSBUZXh0IGZvciBPSyBidXR0b24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9wb3ZlclNlbGVjdG9yTWV0YWRhdGEge1xuICAvKiogQXJyYXkgb2Ygc2VsZWN0YWJsZSBvcHRpb25zICovXG4gIG9wdGlvbnM6IFBvcG92ZXJPcHRpb25bXTtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCB2YWx1ZShzKSAqL1xuICBzZWxlY3RlZFZhbHVlPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKiBEaXNwbGF5IGxhYmVsIGZvciB0aGUgc2VsZWN0b3IgKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBJY29uIHRvIGRpc3BsYXkgaW4gdGhlIHRyaWdnZXIgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgd2hlbiBubyBvcHRpb24gaXMgc2VsZWN0ZWQgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBCdXR0b24gY29sb3IgKi9cbiAgY29sb3I/OiBDb2xvcjtcbiAgLyoqIEJ1dHRvbiBzaXplICovXG4gIHNpemU/OiAnc21hbGwnIHwgJ2RlZmF1bHQnIHwgJ2xhcmdlJztcbiAgLyoqIEJ1dHRvbiBmaWxsIHN0eWxlICovXG4gIGZpbGw/OiAnY2xlYXInIHwgJ291dGxpbmUnIHwgJ3NvbGlkJyB8ICdkZWZhdWx0JztcbiAgLyoqIEJ1dHRvbiBzaGFwZSAqL1xuICBzaGFwZT86ICdyb3VuZCc7XG4gIC8qKiBCdXR0b24gZXhwYW5zaW9uICovXG4gIGV4cGFuZD86ICdmdWxsJyB8ICdibG9jayc7XG4gIC8qKiBXaGV0aGVyIHRoZSBzZWxlY3RvciBpcyBkaXNhYmxlZCAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBQb3BvdmVyIGludGVyZmFjZSBzdHlsZSAqL1xuICBpbnRlcmZhY2U/OiAncG9wb3ZlcicgfCAnYWN0aW9uLXNoZWV0JyB8ICdhbGVydCc7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgY2hlY2ttYXJrcyBmb3Igc2VsZWN0ZWQgb3B0aW9ucyAqL1xuICBzaG93Q2hlY2ttYXJrPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0aW9uIGlzIGFsbG93ZWQgKi9cbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAvKiogQ2FuY2VsIGJ1dHRvbiB0ZXh0ICovXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XG4gIC8qKiBPSyBidXR0b24gdGV4dCAqL1xuICBva1RleHQ/OiBzdHJpbmc7XG59XG4iXX0=
|