valtech-components 2.0.293 → 2.0.294
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:8px}.language-flag{font-size:1.2em;margin-right:4px}@media (max-width: 768px){val-popover-selector .selector-trigger{--padding-start: 8px;--padding-end: 8px}val-popover-selector .selector-trigger .trigger-text{font-size:14px}}\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:8px}.language-flag{font-size:1.2em;margin-right:4px}@media (max-width: 768px){val-popover-selector .selector-trigger{--padding-start: 8px;--padding-end: 8px}val-popover-selector .selector-trigger .trigger-text{font-size:14px}}\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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QyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRWpGLE1BQU0sV0FBVyxHQUFHLFVBQVUsSUFBSSxXQUFXLElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxnQkFBbUM7UUFDbEQsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLDhCQUE4QjtZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTNDLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDOytHQXJMVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw0SkFoRDFCOztHQUVULDBaQUhTLFlBQVksK0JBQUUsd0JBQXdCOzs0RkFpRHJDLHlCQUF5QjtrQkFwRHJDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxZQUN2Qzs7R0FFVDs2R0FvREQsS0FBSztzQkFESixLQUFLO2dCQVFOLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgZ2xvYmUsIGxhbmd1YWdlIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL2xhbmctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBMYW5nT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGFuZy1wcm92aWRlci90eXBlcyc7XG5pbXBvcnQgeyBQb3BvdmVyU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9wb3BvdmVyLXNlbGVjdG9yL3BvcG92ZXItc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJPcHRpb24sIFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhIH0gZnJvbSAnLi4vcG9wb3Zlci1zZWxlY3Rvci90eXBlcyc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWxhbmd1YWdlLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9wb3ZlclNlbGVjdG9yQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmFsLXBvcG92ZXItc2VsZWN0b3IgW3Byb3BzXT1cInBvcG92ZXJQcm9wc1wiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25MYW5ndWFnZUNoYW5nZSgkZXZlbnQpXCI+IDwvdmFsLXBvcG92ZXItc2VsZWN0b3I+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2xhbmd1YWdlLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtbGFuZ3VhZ2Utc2VsZWN0b3JcbiAqXG4gKiBBIHNwZWNpYWxpemVkIGxhbmd1YWdlIHNlbGVjdG9yIGNvbXBvbmVudCB0aGF0IGludGVncmF0ZXMgd2l0aCB0aGUgTGFuZ1NlcnZpY2UuXG4gKiBVc2VzIHRoZSBwb3BvdmVyLXNlbGVjdG9yIGNvbXBvbmVudCBpbnRlcm5hbGx5IGFuZCBwcm92aWRlcyBsYW5ndWFnZS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyB1c2FnZSAoYXV0by1kZXRlY3RzIGxhbmd1YWdlcyBmcm9tIExhbmdTZXJ2aWNlKVxuICogPHZhbC1sYW5ndWFnZS1zZWxlY3RvclxuICogICBbcHJvcHNdPVwieyBzaG93TGFiZWw6IHRydWUsIHNob3dGbGFnczogdHJ1ZSB9XCI+XG4gKiA8L3ZhbC1sYW5ndWFnZS1zZWxlY3Rvcj5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAqIGNvbnN0IGxhbmd1YWdlUHJvcHM6IExhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YSA9IHtcbiAqICAgc2hvd0xhYmVsOiB0cnVlLFxuICogICBsYWJlbDogJ0Nob29zZSBMYW5ndWFnZScsXG4gKiAgIHNob3dGbGFnczogdHJ1ZSxcbiAqICAgY29sb3I6ICdwcmltYXJ5JyxcbiAqICAgc2l6ZTogJ2xhcmdlJyxcbiAqICAgZmlsbDogJ291dGxpbmUnLFxuICogICBjdXN0b21MYW5ndWFnZU5hbWVzOiB7XG4gKiAgICAgJ2VzJzogJ0VzcGHDsW9sJyxcbiAqICAgICAnZW4nOiAnRW5nbGlzaCcsXG4gKiAgICAgJ2ZyJzogJ0ZyYW7Dp2FpcydcbiAqICAgfVxuICogfTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2l0aCByZWFjdGl2ZSBjb250ZW50XG4gKiBjb25zdCBsYW5ndWFnZVByb3BzOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgPSB7XG4gKiAgIHNob3dMYWJlbDogdHJ1ZSxcbiAqICAgbGFiZWxDb25maWc6IHtcbiAqICAgICBjbGFzc05hbWU6ICdteUNvbXBvbmVudCcsXG4gKiAgICAga2V5OiAnbGFuZ3VhZ2VMYWJlbCcsXG4gKiAgICAgZmFsbGJhY2s6ICdMYW5ndWFnZSdcbiAqICAgfSxcbiAqICAgY29sb3I6ICd0ZXJ0aWFyeSdcbiAqIH07XG4gKlxuICogQGlucHV0IHByb3BzOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgbGFuZ3VhZ2Ugc2VsZWN0b3JcbiAqIEBvdXRwdXQgbGFuZ3VhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+IC0gRW1pdHRlZCB3aGVuIGxhbmd1YWdlIGNoYW5nZXNcbiAqL1xuZXhwb3J0IGNsYXNzIExhbmd1YWdlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBMYW5ndWFnZSBzZWxlY3RvciBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHR5cGUge0xhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YX1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHByb3BzOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgPSB7fTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBsYW5ndWFnZSBzZWxlY3Rpb24gY2hhbmdlcy5cbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIGNvZGUuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgbGFuZ3VhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogUG9wb3ZlciBzZWxlY3RvciBjb25maWd1cmF0aW9uICovXG4gIHBvcG92ZXJQcm9wczogUG9wb3ZlclNlbGVjdG9yTWV0YWRhdGE7XG5cbiAgLyoqIEN1cnJlbnQgbGFuZ3VhZ2Ugb2JzZXJ2YWJsZSAqL1xuICBjdXJyZW50TGFuZ3VhZ2UkOiBPYnNlcnZhYmxlPExhbmdPcHRpb24+O1xuXG4gIC8qKiBBdmFpbGFibGUgbGFuZ3VhZ2VzIG9ic2VydmFibGUgKi9cbiAgYXZhaWxhYmxlTGFuZ3VhZ2VzJDogT2JzZXJ2YWJsZTxMYW5nT3B0aW9uW10+O1xuXG4gIC8qKiBMYWJlbCBvYnNlcnZhYmxlIGZvciByZWFjdGl2ZSBjb250ZW50ICovXG4gIGxhYmVsJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAvKiogRGVmYXVsdCBsYW5ndWFnZSBkaXNwbGF5IG5hbWVzICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlTmFtZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgZXM6ICdFc3Bhw7FvbCcsXG4gICAgZW46ICdFbmdsaXNoJyxcbiAgICBmcjogJ0ZyYW7Dp2FpcycsXG4gICAgZGU6ICdEZXV0c2NoJyxcbiAgICBwdDogJ1BvcnR1Z3XDqnMnLFxuICAgIGl0OiAnSXRhbGlhbm8nLFxuICAgIHpoOiAn5Lit5paHJyxcbiAgICBqYTogJ+aXpeacrOiqnicsXG4gICAga286ICftlZzqta3slrQnLFxuICAgIHJ1OiAn0KDRg9GB0YHQutC40LknLFxuICAgIGFyOiAn2KfZhNi52LHYqNmK2KknLFxuICB9O1xuXG4gIC8qKiBEZWZhdWx0IGZsYWcgaWNvbnMgZm9yIGxhbmd1YWdlcyAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRMYW5ndWFnZUZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGVzOiAn8J+HqvCfh7gnLFxuICAgIGVuOiAn8J+HuvCfh7gnLFxuICAgIGZyOiAn8J+Hq/Cfh7cnLFxuICAgIGRlOiAn8J+HqfCfh6onLFxuICAgIHB0OiAn8J+HtfCfh7knLFxuICAgIGl0OiAn8J+HrvCfh7knLFxuICAgIHpoOiAn8J+HqPCfh7MnLFxuICAgIGphOiAn8J+Hr/Cfh7UnLFxuICAgIGtvOiAn8J+HsPCfh7cnLFxuICAgIHJ1OiAn8J+Ht/Cfh7onLFxuICAgIGFyOiAn8J+HuPCfh6YnLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGFuZ1NlcnZpY2U6IExhbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlXG4gICkge1xuICAgIC8vIFJlZ2lzdGVyIHJlcXVpcmVkIGljb25zXG4gICAgYWRkSWNvbnMoeyBsYW5ndWFnZSwgZ2xvYmUgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVMYW5ndWFnZVN0YXRlKCk7XG4gICAgdGhpcy5pbml0aWFsaXplTGFiZWwoKTtcbiAgICB0aGlzLmluaXRpYWxpemVQb3BvdmVyUHJvcHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGFuZ3VhZ2VTdGF0ZSgpIHtcbiAgICAvLyBHZXQgY3VycmVudCBsYW5ndWFnZSBhbmQgYXZhaWxhYmxlIGxhbmd1YWdlcyBmcm9tIExhbmdTZXJ2aWNlXG4gICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UkID0gdGhpcy5sYW5nU2VydmljZS5jdXJyZW50TGFuZyQ7XG4gICAgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMkID0gdGhpcy5jdXJyZW50TGFuZ3VhZ2UkLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5wcm9wcy5hdmFpbGFibGVMYW5ndWFnZXMgfHwgdGhpcy5sYW5nU2VydmljZS5hdmFpbGFibGVMYW5ncylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGFiZWwoKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBsYWJlbCBvYnNlcnZhYmxlIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb25cbiAgICBpZiAodGhpcy5wcm9wcy5sYWJlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBTdGF0aWMgbGFiZWxcbiAgICAgIHRoaXMubGFiZWwkID0gb2YodGhpcy5wcm9wcy5sYWJlbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmxhYmVsQ29uZmlnKSB7XG4gICAgICAvLyBSZWFjdGl2ZSBsYWJlbFxuICAgICAgdGhpcy5sYWJlbCQgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmZyb21Db250ZW50KHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnByb3BzLmxhYmVsQ29uZmlnLmNsYXNzTmFtZSB8fCAnX2dsb2JhbCcsXG4gICAgICAgIGtleTogdGhpcy5wcm9wcy5sYWJlbENvbmZpZy5rZXksXG4gICAgICAgIGZhbGxiYWNrOiB0aGlzLnByb3BzLmxhYmVsQ29uZmlnLmZhbGxiYWNrIHx8ICdMYW5ndWFnZScsXG4gICAgICAgIGludGVycG9sYXRpb246IHRoaXMucHJvcHMubGFiZWxDb25maWcuaW50ZXJwb2xhdGlvbixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IGxhYmVsIGZyb20gZ2xvYmFsIGNvbnRlbnRcbiAgICAgIHRoaXMubGFiZWwkID0gdGhpcy5jb250ZW50U2VydmljZS5mcm9tQ29udGVudCh7XG4gICAgICAgIGNsYXNzTmFtZTogJ19nbG9iYWwnLFxuICAgICAgICBrZXk6ICdsYW5ndWFnZScsXG4gICAgICAgIGZhbGxiYWNrOiAnSWRpb21hJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVBvcG92ZXJQcm9wcygpIHtcbiAgICAvLyBTdWJzY3JpYmUgdG8gbGFuZ3VhZ2Ugc3RhdGUgY2hhbmdlcyB0byB1cGRhdGUgcG9wb3ZlciBwcm9wc1xuICAgIGNvbnN0IGxhbmd1YWdlU3Vic2NyaXB0aW9uID0gdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMkLnN1YnNjcmliZShhdmFpbGFibGVMYW5ndWFnZXMgPT4ge1xuICAgICAgY29uc3QgY3VycmVudExhbmd1YWdlU3Vic2NyaXB0aW9uID0gdGhpcy5jdXJyZW50TGFuZ3VhZ2UkLnN1YnNjcmliZShjdXJyZW50TGFuZ3VhZ2UgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVBvcG92ZXJQcm9wcyhhdmFpbGFibGVMYW5ndWFnZXMsIGN1cnJlbnRMYW5ndWFnZSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoY3VycmVudExhbmd1YWdlU3Vic2NyaXB0aW9uKTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGxhbmd1YWdlU3Vic2NyaXB0aW9uKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byBsYWJlbCBjaGFuZ2VzXG4gICAgY29uc3QgbGFiZWxTdWJzY3JpcHRpb24gPSB0aGlzLmxhYmVsJC5zdWJzY3JpYmUobGFiZWwgPT4ge1xuICAgICAgaWYgKHRoaXMucG9wb3ZlclByb3BzKSB7XG4gICAgICAgIHRoaXMucG9wb3ZlclByb3BzID0ge1xuICAgICAgICAgIC4uLnRoaXMucG9wb3ZlclByb3BzLFxuICAgICAgICAgIGxhYmVsOiB0aGlzLnByb3BzLnNob3dMYWJlbCAhPT0gZmFsc2UgPyBsYWJlbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGxhYmVsU3Vic2NyaXB0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9wb3ZlclByb3BzKGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ09wdGlvbltdLCBjdXJyZW50TGFuZ3VhZ2U6IExhbmdPcHRpb24pIHtcbiAgICAvLyBDb252ZXJ0IGxhbmd1YWdlIGNvZGVzIHRvIHBvcG92ZXIgb3B0aW9uc1xuICAgIGNvbnN0IG9wdGlvbnM6IFBvcG92ZXJPcHRpb25bXSA9IGF2YWlsYWJsZUxhbmd1YWdlcy5tYXAobGFuZyA9PiAoe1xuICAgICAgdmFsdWU6IGxhbmcsXG4gICAgICBsYWJlbDogdGhpcy5nZXRMYW5ndWFnZURpc3BsYXlOYW1lKGxhbmcpLFxuICAgICAgaWNvbjogdGhpcy5wcm9wcy5zaG93RmxhZ3MgPyB1bmRlZmluZWQgOiB1bmRlZmluZWQsIC8vIFdlJ2xsIHVzZSB0ZXh0IGZsYWdzIGluc3RlYWRcbiAgICB9KSk7XG5cbiAgICAvLyBDcmVhdGUgcG9wb3ZlciBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5wb3BvdmVyUHJvcHMgPSB7XG4gICAgICBvcHRpb25zLFxuICAgICAgc2VsZWN0ZWRWYWx1ZTogY3VycmVudExhbmd1YWdlLFxuICAgICAgbGFiZWw6IHRoaXMucHJvcHMuc2hvd0xhYmVsICE9PSBmYWxzZSA/ICcnIDogdW5kZWZpbmVkLCAvLyBXaWxsIGJlIHNldCBieSBsYWJlbCBzdWJzY3JpcHRpb25cbiAgICAgIGljb246ICdsYW5ndWFnZScsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjY2lvbmFyIGlkaW9tYS4uLicsXG4gICAgICBjb2xvcjogdGhpcy5wcm9wcy5jb2xvciB8fCAnbWVkaXVtJyxcbiAgICAgIHNpemU6IHRoaXMucHJvcHMuc2l6ZSB8fCAnZGVmYXVsdCcsXG4gICAgICBmaWxsOiB0aGlzLnByb3BzLmZpbGwgfHwgJ291dGxpbmUnLFxuICAgICAgc2hhcGU6IHRoaXMucHJvcHMuc2hhcGUsXG4gICAgICBleHBhbmQ6IHRoaXMucHJvcHMuZXhwYW5kLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2UsXG4gICAgICBpbnRlcmZhY2U6ICdwb3BvdmVyJyxcbiAgICAgIHNob3dDaGVja21hcms6IHRydWUsXG4gICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsYXInLFxuICAgICAgb2tUZXh0OiAnQWNlcHRhcicsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGFuZ3VhZ2VEaXNwbGF5TmFtZShsYW5ndWFnZUNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVXNlIGN1c3RvbSBuYW1lcyBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHVzZSBkZWZhdWx0cywgb3RoZXJ3aXNlIHVzZSB0aGUgY29kZSBpdHNlbGZcbiAgICBjb25zdCBjdXN0b21OYW1lID0gdGhpcy5wcm9wcy5jdXN0b21MYW5ndWFnZU5hbWVzPy5bbGFuZ3VhZ2VDb2RlXTtcbiAgICBjb25zdCBkZWZhdWx0TmFtZSA9IHRoaXMuZGVmYXVsdExhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXTtcbiAgICBjb25zdCBmbGFnID0gdGhpcy5wcm9wcy5zaG93RmxhZ3MgPyB0aGlzLmRlZmF1bHRMYW5ndWFnZUZsYWdzW2xhbmd1YWdlQ29kZV0gOiAnJztcblxuICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gY3VzdG9tTmFtZSB8fCBkZWZhdWx0TmFtZSB8fCBsYW5ndWFnZUNvZGUudG9VcHBlckNhc2UoKTtcbiAgICByZXR1cm4gZmxhZyA/IGAke2ZsYWd9ICR7ZGlzcGxheU5hbWV9YCA6IGRpc3BsYXlOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBsYW5ndWFnZSBzZWxlY3Rpb24gY2hhbmdlLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRMYW5ndWFnZSAtIFRoZSBzZWxlY3RlZCBsYW5ndWFnZSBjb2RlKHMpXG4gICAqL1xuICBvbkxhbmd1YWdlQ2hhbmdlKHNlbGVjdGVkTGFuZ3VhZ2U6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgaWYgKHR5cGVvZiBzZWxlY3RlZExhbmd1YWdlID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gVXBkYXRlIHRoZSBsYW5ndWFnZSBzZXJ2aWNlXG4gICAgICB0aGlzLmxhbmdTZXJ2aWNlLnNldExhbmcoc2VsZWN0ZWRMYW5ndWFnZSk7XG5cbiAgICAgIC8vIEVtaXQgdGhlIGNoYW5nZSBldmVudFxuICAgICAgdGhpcy5sYW5ndWFnZUNoYW5nZS5lbWl0KHNlbGVjdGVkTGFuZ3VhZ2UpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -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}.popover-selector-select .selector-trigger .trigger-text{flex:1;text-align:start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popover-selector-select .selector-trigger .chevron-icon{margin-left:auto;transition:transform .2s ease}.popover-selector-select .selector-trigger.select-expanded .chevron-icon{transform:rotate(180deg)}.option-content{display:flex;align-items:center;gap:8px}.option-content .option-icon{font-size:16px;width:16px;height:16px}.popover-selector-select.size-small .selector-trigger{--padding-start: 8px;--padding-end: 8px;font-size:14px}.popover-selector-select.size-large .selector-trigger{--padding-start: 16px;--padding-end: 16px;font-size:18px}ion-item[disabled]{opacity:.6;pointer-events:none}\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}.popover-selector-select .selector-trigger .trigger-text{flex:1;text-align:start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popover-selector-select .selector-trigger .chevron-icon{margin-left:auto;transition:transform .2s ease}.popover-selector-select .selector-trigger.select-expanded .chevron-icon{transform:rotate(180deg)}.option-content{display:flex;align-items:center;gap:8px}.option-content .option-icon{font-size:16px;width:16px;height:16px}.popover-selector-select.size-small .selector-trigger{--padding-start: 8px;--padding-end: 8px;font-size:14px}.popover-selector-select.size-large .selector-trigger{--padding-start: 16px;--padding-end: 16px;font-size:18px}ion-item[disabled]{opacity:.6;pointer-events:none}\n"] }]
|
|
165
|
+
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], selectionChange: [{
|
|
168
|
+
type: Output
|
|
169
|
+
}] } });
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wb3BvdmVyLXNlbGVjdG9yL3BvcG92ZXItc2VsZWN0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFpRDdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBZW5DO1FBUEE7OztXQUdHO1FBRUgsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUd0RCwwQkFBMEI7UUFDMUIsUUFBUSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsS0FBVTtRQUMxQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLGdCQUFnQixDQUFDO1FBQ3BELENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzVDLHFCQUFxQjtZQUNyQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekYsT0FBTyxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQztRQUM1RCxDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RixPQUFPLGNBQWMsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFDM0QsQ0FBQzsrR0F0RFUsd0JBQXdCO21HQUF4Qix3QkFBd0IsNkpBekV6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNULGk3QkF4Q1MsWUFBWSxnUUFBRSxTQUFTLG9QQUFFLE9BQU8sMkpBQUUsU0FBUyx1VEFBRSxlQUFlLDZGQUFFLE9BQU8sME5BQUUsUUFBUTs7NEZBMEU5RSx3QkFBd0I7a0JBN0VwQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFDaEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDVDt3REF3Q0QsS0FBSztzQkFESixLQUFLO2dCQVFOLGVBQWU7c0JBRGQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uLCBJb25JdGVtLCBJb25MYWJlbCwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hldnJvbkRvd24gfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBQb3BvdmVyU2VsZWN0b3JNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcG9wb3Zlci1zZWxlY3RvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24sIElvbkl0ZW0sIElvbkxhYmVsXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWl0ZW0gW2Rpc2FibGVkXT1cInByb3BzLmRpc2FibGVkXCIgbGluZXM9XCJub25lXCI+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=
|