@seniorsistemas/angular-components 19.10.0 → 19.10.1-develop-5b6fdad4
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/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.d.ts +6 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +3 -3
- package/esm2022/lib/locale/fallback.mjs +2 -1
- package/esm2022/locale/lib/locale/locale.service.mjs +7 -30
- package/esm2022/locale/lib/locale/options/locale-presets.mjs +199 -0
- package/esm2022/locale/public-api.mjs +2 -1
- package/esm2022/paginator/lib/paginator/paginator.component.mjs +2 -2
- package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +6 -4
- package/esm2022/select/lib/select/select.component.mjs +41 -8
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-locale.mjs +203 -29
- package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +45 -10
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components.mjs +1 -0
- package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
- package/locale/lib/locale/locale.service.d.ts +0 -3
- package/locale/lib/locale/options/locale-presets.d.ts +22 -0
- package/locale/public-api.d.ts +1 -0
- package/package.json +1 -1
- package/select/README.md +18 -0
- package/select/lib/select/components/select-option/select-option.component.d.ts +3 -1
- package/select/lib/select/select.component.d.ts +17 -2
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { NumberLocaleOptions } from './number';
|
|
2
|
+
import { LocaleOptions } from './index';
|
|
3
|
+
const PT_BR_PRESET = {
|
|
4
|
+
calendar: {
|
|
5
|
+
hourFormat: '24',
|
|
6
|
+
dateFormat: 'dd/mm/yy',
|
|
7
|
+
firstDayOfWeek: 0,
|
|
8
|
+
dayNames: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
|
|
9
|
+
dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],
|
|
10
|
+
dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],
|
|
11
|
+
monthNames: [
|
|
12
|
+
'Janeiro',
|
|
13
|
+
'Fevereiro',
|
|
14
|
+
'Março',
|
|
15
|
+
'Abril',
|
|
16
|
+
'Maio',
|
|
17
|
+
'Junho',
|
|
18
|
+
'Julho',
|
|
19
|
+
'Agosto',
|
|
20
|
+
'Setembro',
|
|
21
|
+
'Outubro',
|
|
22
|
+
'Novembro',
|
|
23
|
+
'Dezembro',
|
|
24
|
+
],
|
|
25
|
+
monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
|
|
26
|
+
today: 'Hoje',
|
|
27
|
+
clear: 'Limpar',
|
|
28
|
+
},
|
|
29
|
+
number: {
|
|
30
|
+
currencySymbol: 'R$',
|
|
31
|
+
thousandsSeparator: '.',
|
|
32
|
+
decimalSeparator: ',',
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
const ES_PRESET = {
|
|
36
|
+
calendar: {
|
|
37
|
+
hourFormat: '24',
|
|
38
|
+
dateFormat: 'dd/mm/yy',
|
|
39
|
+
firstDayOfWeek: 0,
|
|
40
|
+
dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
|
|
41
|
+
dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'],
|
|
42
|
+
dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
|
|
43
|
+
monthNames: [
|
|
44
|
+
'Enero',
|
|
45
|
+
'Febrero',
|
|
46
|
+
'Marzo',
|
|
47
|
+
'Abril',
|
|
48
|
+
'Mayo',
|
|
49
|
+
'Junio',
|
|
50
|
+
'Julio',
|
|
51
|
+
'Agosto',
|
|
52
|
+
'Septiembre',
|
|
53
|
+
'Octubre',
|
|
54
|
+
'Noviembre',
|
|
55
|
+
'Diciembre',
|
|
56
|
+
],
|
|
57
|
+
monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
|
|
58
|
+
today: 'Hoy',
|
|
59
|
+
clear: 'Limpiar',
|
|
60
|
+
},
|
|
61
|
+
number: {
|
|
62
|
+
currencySymbol: '€',
|
|
63
|
+
thousandsSeparator: '.',
|
|
64
|
+
decimalSeparator: ',',
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
const EN_US_PRESET = {
|
|
68
|
+
calendar: {
|
|
69
|
+
hourFormat: '12',
|
|
70
|
+
dateFormat: 'mm/dd/yy',
|
|
71
|
+
firstDayOfWeek: 0,
|
|
72
|
+
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
|
|
73
|
+
dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
|
74
|
+
dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
|
|
75
|
+
monthNames: [
|
|
76
|
+
'January',
|
|
77
|
+
'February',
|
|
78
|
+
'March',
|
|
79
|
+
'April',
|
|
80
|
+
'May',
|
|
81
|
+
'June',
|
|
82
|
+
'July',
|
|
83
|
+
'August',
|
|
84
|
+
'September',
|
|
85
|
+
'October',
|
|
86
|
+
'November',
|
|
87
|
+
'December',
|
|
88
|
+
],
|
|
89
|
+
monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
|
|
90
|
+
today: 'Today',
|
|
91
|
+
clear: 'Clear',
|
|
92
|
+
},
|
|
93
|
+
number: {
|
|
94
|
+
currencySymbol: '$',
|
|
95
|
+
thousandsSeparator: ',',
|
|
96
|
+
decimalSeparator: '.',
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* @description Configurações de locale embarcadas na biblioteca. Mesmo conteúdo publicado
|
|
101
|
+
* anteriormente em `cdn.senior.com.br/primeng/locales/3.0.0`.
|
|
102
|
+
*/
|
|
103
|
+
export const LOCALE_PRESETS = {
|
|
104
|
+
'pt-BR': PT_BR_PRESET,
|
|
105
|
+
'es-ES': ES_PRESET,
|
|
106
|
+
'es-419': ES_PRESET,
|
|
107
|
+
'en-US': EN_US_PRESET,
|
|
108
|
+
};
|
|
109
|
+
/** Preset usado para locales sem preset exato, a partir do idioma base. */
|
|
110
|
+
const BASE_LANGUAGE_PRESETS = {
|
|
111
|
+
pt: PT_BR_PRESET,
|
|
112
|
+
es: ES_PRESET,
|
|
113
|
+
en: EN_US_PRESET,
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* @description Separador decimal do locale, obtido via `Intl.NumberFormat`.
|
|
117
|
+
*/
|
|
118
|
+
export function getLocaleDecimalSeparator(locale) {
|
|
119
|
+
const numberFormat = new Intl.NumberFormat(locale, {
|
|
120
|
+
style: 'decimal',
|
|
121
|
+
minimumFractionDigits: 5,
|
|
122
|
+
maximumFractionDigits: 5,
|
|
123
|
+
});
|
|
124
|
+
return numberFormat.formatToParts(1.2).find((part) => part.type === 'decimal')?.value;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* @description Separador de milhar do locale, obtido via `Intl.NumberFormat`.
|
|
128
|
+
*/
|
|
129
|
+
export function getLocaleGroupingSeparator(locale) {
|
|
130
|
+
// The default groupingSeparator for 'fr' is the character code 8239. We need it to be the regular space.
|
|
131
|
+
if (locale?.includes('fr'))
|
|
132
|
+
return ' ';
|
|
133
|
+
const numberFormat = new Intl.NumberFormat(locale, {
|
|
134
|
+
style: 'decimal',
|
|
135
|
+
useGrouping: true,
|
|
136
|
+
minimumFractionDigits: 5,
|
|
137
|
+
maximumFractionDigits: 5,
|
|
138
|
+
});
|
|
139
|
+
return numberFormat.formatToParts(1000).find((part) => part.type === 'group')?.value;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* @description Formato de data do locale na convenção usada pelos presets (`dd/mm/yy`, onde `yy` é o ano com 4 dígitos).
|
|
143
|
+
*/
|
|
144
|
+
function getLocaleDateFormat(locale) {
|
|
145
|
+
const tokens = { day: 'dd', month: 'mm', year: 'yy' };
|
|
146
|
+
return new Intl.DateTimeFormat(locale, { day: '2-digit', month: '2-digit', year: 'numeric' })
|
|
147
|
+
.formatToParts(new Date(2000, 0, 1))
|
|
148
|
+
.map((part) => tokens[part.type] ?? part.value)
|
|
149
|
+
.join('');
|
|
150
|
+
}
|
|
151
|
+
function getLocaleHourFormat(locale) {
|
|
152
|
+
const { hourCycle, hour12 } = new Intl.DateTimeFormat(locale, { hour: 'numeric' }).resolvedOptions();
|
|
153
|
+
const is12h = hourCycle ? hourCycle === 'h11' || hourCycle === 'h12' : !!hour12;
|
|
154
|
+
return is12h ? '12' : '24';
|
|
155
|
+
}
|
|
156
|
+
function findPreset(locale, presets) {
|
|
157
|
+
const key = Object.keys(presets).find((presetKey) => presetKey.toLowerCase() === locale.toLowerCase());
|
|
158
|
+
return key ? presets[key] : undefined;
|
|
159
|
+
}
|
|
160
|
+
function clonePreset(preset, locale) {
|
|
161
|
+
return new LocaleOptions({
|
|
162
|
+
locale,
|
|
163
|
+
calendar: structuredClone(preset.calendar),
|
|
164
|
+
number: structuredClone(preset.number),
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* @description Monta as opções de locale sem acesso à rede.
|
|
169
|
+
* Locales com preset exato (`pt-BR`, `es-ES`, `es-419`, `en-US`) retornam o preset.
|
|
170
|
+
* Os demais usam os textos do preset do idioma base (ou pt-BR), com separadores e formatos
|
|
171
|
+
* de data/hora derivados via `Intl`. O símbolo de moeda segue o padrão `R$`, pois não é
|
|
172
|
+
* possível inferir a moeda a partir do idioma.
|
|
173
|
+
*/
|
|
174
|
+
export function buildLocaleOptions(locale) {
|
|
175
|
+
const exactPreset = findPreset(locale, LOCALE_PRESETS);
|
|
176
|
+
if (exactPreset) {
|
|
177
|
+
return clonePreset(exactPreset, locale);
|
|
178
|
+
}
|
|
179
|
+
const basePreset = findPreset(locale.split('-')[0], BASE_LANGUAGE_PRESETS) ?? PT_BR_PRESET;
|
|
180
|
+
try {
|
|
181
|
+
return new LocaleOptions({
|
|
182
|
+
locale,
|
|
183
|
+
calendar: {
|
|
184
|
+
...structuredClone(basePreset.calendar),
|
|
185
|
+
dateFormat: getLocaleDateFormat(locale),
|
|
186
|
+
hourFormat: getLocaleHourFormat(locale),
|
|
187
|
+
},
|
|
188
|
+
number: new NumberLocaleOptions({
|
|
189
|
+
decimalSeparator: getLocaleDecimalSeparator(locale) ?? ',',
|
|
190
|
+
thousandsSeparator: getLocaleGroupingSeparator(locale) ?? '',
|
|
191
|
+
}),
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// Locale inválido para o Intl (ex.: 'pt_BR').
|
|
196
|
+
return clonePreset(PT_BR_PRESET, locale);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXByZXNldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvbG9jYWxlL3NyYy9saWIvbG9jYWxlL29wdGlvbnMvbG9jYWxlLXByZXNldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFBa0IsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXhELE1BQU0sWUFBWSxHQUFtQjtJQUNqQyxRQUFRLEVBQUU7UUFDTixVQUFVLEVBQUUsSUFBSTtRQUNoQixVQUFVLEVBQUUsVUFBVTtRQUN0QixjQUFjLEVBQUUsQ0FBQztRQUNqQixRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7UUFDaEYsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQ2hFLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztRQUNoRCxVQUFVLEVBQUU7WUFDUixTQUFTO1lBQ1QsV0FBVztZQUNYLE9BQU87WUFDUCxPQUFPO1lBQ1AsTUFBTTtZQUNOLE9BQU87WUFDUCxPQUFPO1lBQ1AsUUFBUTtZQUNSLFVBQVU7WUFDVixTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDYjtRQUNELGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUss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QztnQkFDNUIsZ0JBQWdCLEVBQUUseUJBQXlCLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRztnQkFDMUQsa0JBQWtCLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTthQUMvRCxDQUFDO1NBQ0wsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNMLDhDQUE4QztRQUM5QyxPQUFPLFdBQVcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOdW1iZXJMb2NhbGVPcHRpb25zIH0gZnJvbSAnLi9udW1iZXInO1xuaW1wb3J0IHsgSUxvY2FsZU9wdGlvbnMsIExvY2FsZU9wdGlvbnMgfSBmcm9tICcuL2luZGV4JztcblxuY29uc3QgUFRfQlJfUFJFU0VUOiBJTG9jYWxlT3B0aW9ucyA9IHtcbiAgICBjYWxlbmRhcjoge1xuICAgICAgICBob3VyRm9ybWF0OiAnMjQnLFxuICAgICAgICBkYXRlRm9ybWF0OiAnZGQvbW0veXknLFxuICAgICAgICBmaXJzdERheU9mV2VlazogMCxcbiAgICAgICAgZGF5TmFtZXM6IFsnRG9taW5nbycsICdTZWd1bmRhJywgJ1RlcsOnYScsICdRdWFydGEnLCAnUXVpbnRhJywgJ1NleHRhJywgJ1PDoWJhZG8nXSxcbiAgICAgICAgZGF5TmFtZXNTaG9ydDogWydEb20nLCAnU2VnJywgJ1RlcicsICdRdWEnLCAnUXVpJywgJ1NleCcsICdTYWInXSxcbiAgICAgICAgZGF5TmFtZXNNaW46IFsnRCcsICdTJywgJ1QnLCAnUScsICdRJywgJ1MnLCAnUyddLFxuICAgICAgICBtb250aE5hbWVzOiBbXG4gICAgICAgICAgICAnSmFuZWlybycsXG4gICAgICAgICAgICAnRmV2ZXJlaXJvJyxcbiAgICAgICAgICAgICdNYXLDp28nLFxuICAgICAgICAgICAgJ0FicmlsJyxcbiAgICAgICAgICAgICdNYWlvJyxcbiAgICAgICAgICAgICdKdW5obycsXG4gICAgICAgICAgICAnSnVsaG8nLFxuICAgICAgICAgICAgJ0Fnb3N0bycsXG4gICAgICAgICAgICAnU2V0ZW1icm8nLFxuICAgICAgICAgICAgJ091dHVicm8nLFxuICAgICAgICAgICAgJ05vdmVtYnJvJyxcbiAgICAgICAgICAgICdEZXplbWJybycsXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoTmFtZXNTaG9ydDogWydKYW4nLCAnRmV2JywgJ01hcicsICdBYnInLCAnTWFpJywgJ0p1bicsICdKdWwnLCAnQWdvJywgJ1NldCcsICdPdXQnLCAnTm92JywgJ0RleiddLFxuICAgICAgICB0b2RheTogJ0hvamUnLFxuICAgICAgICBjbGVhcjogJ0xpbXBhcicsXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgICAgY3VycmVuY3lTeW1ib2w6ICdSJCcsXG4gICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nLFxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsXG4gICAgfSxcbn07XG5cbmNvbnN0IEVTX1BSRVNFVDogSUxvY2FsZU9wdGlvbnMgPSB7XG4gICAgY2FsZW5kYXI6IHtcbiAgICAgICAgaG91ckZvcm1hdDogJzI0JyxcbiAgICAgICAgZGF0ZUZvcm1hdDogJ2RkL21tL3l5JyxcbiAgICAgICAgZmlyc3REYXlPZldlZWs6IDAsXG4gICAgICAgIGRheU5hbWVzOiBbJ0RvbWluZ28nLCAnTHVuZXMnLCAnTWFydGVzJywgJ01pw6lyY29sZXMnLCAnSnVldmVzJywgJ1ZpZXJuZXMnLCAnU8OhYmFkbyddLFxuICAgICAgICBkYXlOYW1lc1Nob3J0OiBbJ0RvbScsICdMdW4nLCAnTWFyJywgJ01pw6knLCAnSnVlJywgJ1ZpZScsICdTw6FiJ10sXG4gICAgICAgIGRheU5hbWVzTWluOiBbJ0QnLCAnTCcsICdNJywgJ00nLCAnSicsICdWJywgJ1MnXSxcbiAgICAgICAgbW9udGhOYW1lczogW1xuICAgICAgICAgICAgJ0VuZXJvJyxcbiAgICAgICAgICAgICdGZWJyZXJvJyxcbiAgICAgICAgICAgICdNYXJ6bycsXG4gICAgICAgICAgICAnQWJyaWwnLFxuICAgICAgICAgICAgJ01heW8nLFxuICAgICAgICAgICAgJ0p1bmlvJyxcbiAgICAgICAgICAgICdKdWxpbycsXG4gICAgICAgICAgICAnQWdvc3RvJyxcbiAgICAgICAgICAgICdTZXB0aWVtYnJlJyxcbiAgICAgICAgICAgICdPY3R1YnJlJyxcbiAgICAgICAgICAgICdOb3ZpZW1icmUnLFxuICAgICAgICAgICAgJ0RpY2llbWJyZScsXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoTmFtZXNTaG9ydDogWydFbmUnLCAnRmViJywgJ01hcicsICdBYnInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQWdvJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RpYyddLFxuICAgICAgICB0b2RheTogJ0hveScsXG4gICAgICAgIGNsZWFyOiAnTGltcGlhcicsXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgICAgY3VycmVuY3lTeW1ib2w6ICfigqwnLFxuICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyxcbiAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgIH0sXG59O1xuXG5jb25zdCBFTl9VU19QUkVTRVQ6IElMb2NhbGVPcHRpb25zID0ge1xuICAgIGNhbGVuZGFyOiB7XG4gICAgICAgIGhvdXJGb3JtYXQ6ICcxMicsXG4gICAgICAgIGRhdGVGb3JtYXQ6ICdtbS9kZC95eScsXG4gICAgICAgIGZpcnN0RGF5T2ZXZWVrOiAwLFxuICAgICAgICBkYXlOYW1lczogWydTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheSddLFxuICAgICAgICBkYXlOYW1lc1Nob3J0OiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddLFxuICAgICAgICBkYXlOYW1lc01pbjogWydTJywgJ00nLCAnVCcsICdXJywgJ1QnLCAnRicsICdTJ10sXG4gICAgICAgIG1vbnRoTmFtZXM6IFtcbiAgICAgICAgICAgICdKYW51YXJ5JyxcbiAgICAgICAgICAgICdGZWJydWFyeScsXG4gICAgICAgICAgICAnTWFyY2gnLFxuICAgICAgICAgICAgJ0FwcmlsJyxcbiAgICAgICAgICAgICdNYXknLFxuICAgICAgICAgICAgJ0p1bmUnLFxuICAgICAgICAgICAgJ0p1bHknLFxuICAgICAgICAgICAgJ0F1Z3VzdCcsXG4gICAgICAgICAgICAnU2VwdGVtYmVyJyxcbiAgICAgICAgICAgICdPY3RvYmVyJyxcbiAgICAgICAgICAgICdOb3ZlbWJlcicsXG4gICAgICAgICAgICAnRGVjZW1iZXInLFxuICAgICAgICBdLFxuICAgICAgICBtb250aE5hbWVzU2hvcnQ6IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcbiAgICAgICAgdG9kYXk6ICdUb2RheScsXG4gICAgICAgIGNsZWFyOiAnQ2xlYXInLFxuICAgIH0sXG4gICAgbnVtYmVyOiB7XG4gICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnJCcsXG4gICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJywnLFxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLicsXG4gICAgfSxcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYcOnw7VlcyBkZSBsb2NhbGUgZW1iYXJjYWRhcyBuYSBiaWJsaW90ZWNhLiBNZXNtbyBjb250ZcO6ZG8gcHVibGljYWRvXG4gKiBhbnRlcmlvcm1lbnRlIGVtIGBjZG4uc2VuaW9yLmNvbS5ici9wcmltZW5nL2xvY2FsZXMvMy4wLjBgLlxuICovXG5leHBvcnQgY29uc3QgTE9DQUxFX1BSRVNFVFM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIElMb2NhbGVPcHRpb25zPj4gPSB7XG4gICAgJ3B0LUJSJzogUFRfQlJfUFJFU0VULFxuICAgICdlcy1FUyc6IEVTX1BSRVNFVCxcbiAgICAnZXMtNDE5JzogRVNfUFJFU0VULFxuICAgICdlbi1VUyc6IEVOX1VTX1BSRVNFVCxcbn07XG5cbi8qKiBQcmVzZXQgdXNhZG8gcGFyYSBsb2NhbGVzIHNlbSBwcmVzZXQgZXhhdG8sIGEgcGFydGlyIGRvIGlkaW9tYSBiYXNlLiAqL1xuY29uc3QgQkFTRV9MQU5HVUFHRV9QUkVTRVRTOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBJTG9jYWxlT3B0aW9ucz4+ID0ge1xuICAgIHB0OiBQVF9CUl9QUkVTRVQsXG4gICAgZXM6IEVTX1BSRVNFVCxcbiAgICBlbjogRU5fVVNfUFJFU0VULFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU2VwYXJhZG9yIGRlY2ltYWwgZG8gbG9jYWxlLCBvYnRpZG8gdmlhIGBJbnRsLk51bWJlckZvcm1hdGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVEZWNpbWFsU2VwYXJhdG9yKGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgICAgICBzdHlsZTogJ2RlY2ltYWwnLFxuICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDUsXG4gICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNSxcbiAgICB9KTtcblxuICAgIHJldHVybiBudW1iZXJGb3JtYXQuZm9ybWF0VG9QYXJ0cygxLjIpLmZpbmQoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ2RlY2ltYWwnKT8udmFsdWU7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFNlcGFyYWRvciBkZSBtaWxoYXIgZG8gbG9jYWxlLCBvYnRpZG8gdmlhIGBJbnRsLk51bWJlckZvcm1hdGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVHcm91cGluZ1NlcGFyYXRvcihsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIFRoZSBkZWZhdWx0IGdyb3VwaW5nU2VwYXJhdG9yIGZvciAnZnInIGlzIHRoZSBjaGFyYWN0ZXIgY29kZSA4MjM5LiBXZSBuZWVkIGl0IHRvIGJlIHRoZSByZWd1bGFyIHNwYWNlLlxuICAgIGlmIChsb2NhbGU/LmluY2x1ZGVzKCdmcicpKSByZXR1cm4gJyAnO1xuXG4gICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgICAgICBzdHlsZTogJ2RlY2ltYWwnLFxuICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSxcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA1LFxuICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDUsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbnVtYmVyRm9ybWF0LmZvcm1hdFRvUGFydHMoMTAwMCkuZmluZCgocGFydCkgPT4gcGFydC50eXBlID09PSAnZ3JvdXAnKT8udmFsdWU7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvcm1hdG8gZGUgZGF0YSBkbyBsb2NhbGUgbmEgY29udmVuw6fDo28gdXNhZGEgcGVsb3MgcHJlc2V0cyAoYGRkL21tL3l5YCwgb25kZSBgeXlgIMOpIG8gYW5vIGNvbSA0IGTDrWdpdG9zKS5cbiAqL1xuZnVuY3Rpb24gZ2V0TG9jYWxlRGF0ZUZvcm1hdChsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdG9rZW5zOiBQYXJ0aWFsPFJlY29yZDxJbnRsLkRhdGVUaW1lRm9ybWF0UGFydFR5cGVzLCBzdHJpbmc+PiA9IHsgZGF5OiAnZGQnLCBtb250aDogJ21tJywgeWVhcjogJ3l5JyB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICcyLWRpZ2l0JywgeWVhcjogJ251bWVyaWMnIH0pXG4gICAgICAgIC5mb3JtYXRUb1BhcnRzKG5ldyBEYXRlKDIwMDAsIDAsIDEpKVxuICAgICAgICAubWFwKChwYXJ0KSA9PiB0b2tlbnNbcGFydC50eXBlXSA/PyBwYXJ0LnZhbHVlKVxuICAgICAgICAuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGdldExvY2FsZUhvdXJGb3JtYXQobG9jYWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgaG91ckN5Y2xlLCBob3VyMTIgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBob3VyOiAnbnVtZXJpYycgfSkucmVzb2x2ZWRPcHRpb25zKCk7XG4gICAgY29uc3QgaXMxMmggPSBob3VyQ3ljbGUgPyBob3VyQ3ljbGUgPT09ICdoMTEnIHx8IGhvdXJDeWNsZSA9PT0gJ2gxMicgOiAhIWhvdXIxMjtcblxuICAgIHJldHVybiBpczEyaCA/ICcxMicgOiAnMjQnO1xufVxuXG5mdW5jdGlvbiBmaW5kUHJlc2V0KGxvY2FsZTogc3RyaW5nLCBwcmVzZXRzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBJTG9jYWxlT3B0aW9ucz4+KTogSUxvY2FsZU9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKHByZXNldHMpLmZpbmQoKHByZXNldEtleSkgPT4gcHJlc2V0S2V5LnRvTG93ZXJDYXNlKCkgPT09IGxvY2FsZS50b0xvd2VyQ2FzZSgpKTtcbiAgICByZXR1cm4ga2V5ID8gcHJlc2V0c1trZXldIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBjbG9uZVByZXNldChwcmVzZXQ6IElMb2NhbGVPcHRpb25zLCBsb2NhbGU6IHN0cmluZyk6IExvY2FsZU9wdGlvbnMge1xuICAgIHJldHVybiBuZXcgTG9jYWxlT3B0aW9ucyh7XG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgY2FsZW5kYXI6IHN0cnVjdHVyZWRDbG9uZShwcmVzZXQuY2FsZW5kYXIpLFxuICAgICAgICBudW1iZXI6IHN0cnVjdHVyZWRDbG9uZShwcmVzZXQubnVtYmVyKSxcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTW9udGEgYXMgb3DDp8O1ZXMgZGUgbG9jYWxlIHNlbSBhY2Vzc28gw6AgcmVkZS5cbiAqIExvY2FsZXMgY29tIHByZXNldCBleGF0byAoYHB0LUJSYCwgYGVzLUVTYCwgYGVzLTQxOWAsIGBlbi1VU2ApIHJldG9ybmFtIG8gcHJlc2V0LlxuICogT3MgZGVtYWlzIHVzYW0gb3MgdGV4dG9zIGRvIHByZXNldCBkbyBpZGlvbWEgYmFzZSAob3UgcHQtQlIpLCBjb20gc2VwYXJhZG9yZXMgZSBmb3JtYXRvc1xuICogZGUgZGF0YS9ob3JhIGRlcml2YWRvcyB2aWEgYEludGxgLiBPIHPDrW1ib2xvIGRlIG1vZWRhIHNlZ3VlIG8gcGFkcsOjbyBgUiRgLCBwb2lzIG7Do28gw6lcbiAqIHBvc3PDrXZlbCBpbmZlcmlyIGEgbW9lZGEgYSBwYXJ0aXIgZG8gaWRpb21hLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMb2NhbGVPcHRpb25zKGxvY2FsZTogc3RyaW5nKTogTG9jYWxlT3B0aW9ucyB7XG4gICAgY29uc3QgZXhhY3RQcmVzZXQgPSBmaW5kUHJlc2V0KGxvY2FsZSwgTE9DQUxFX1BSRVNFVFMpO1xuICAgIGlmIChleGFjdFByZXNldCkge1xuICAgICAgICByZXR1cm4gY2xvbmVQcmVzZXQoZXhhY3RQcmVzZXQsIGxvY2FsZSk7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVByZXNldCA9IGZpbmRQcmVzZXQobG9jYWxlLnNwbGl0KCctJylbMF0sIEJBU0VfTEFOR1VBR0VfUFJFU0VUUykgPz8gUFRfQlJfUFJFU0VUO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb2NhbGVPcHRpb25zKHtcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RydWN0dXJlZENsb25lKGJhc2VQcmVzZXQuY2FsZW5kYXIpLFxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGdldExvY2FsZURhdGVGb3JtYXQobG9jYWxlKSxcbiAgICAgICAgICAgICAgICBob3VyRm9ybWF0OiBnZXRMb2NhbGVIb3VyRm9ybWF0KGxvY2FsZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbnVtYmVyOiBuZXcgTnVtYmVyTG9jYWxlT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogZ2V0TG9jYWxlRGVjaW1hbFNlcGFyYXRvcihsb2NhbGUpID8/ICcsJyxcbiAgICAgICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IGdldExvY2FsZUdyb3VwaW5nU2VwYXJhdG9yKGxvY2FsZSkgPz8gJycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIExvY2FsZSBpbnbDoWxpZG8gcGFyYSBvIEludGwgKGV4LjogJ3B0X0JSJykuXG4gICAgICAgIHJldHVybiBjbG9uZVByZXNldChQVF9CUl9QUkVTRVQsIGxvY2FsZSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './lib/locale/options/index';
|
|
2
|
+
export * from './lib/locale/options/locale-presets';
|
|
2
3
|
export * from './lib/locale/locale.module';
|
|
3
4
|
export * from './lib/locale/provide-locale';
|
|
4
5
|
export * from './lib/locale/locale.service';
|
|
@@ -12,4 +13,4 @@ export * from './lib/locale/pipes/localized-date.pipe';
|
|
|
12
13
|
export * from './lib/locale/pipes/localized-time-impure.pipe';
|
|
13
14
|
export * from './lib/locale/pipes/localized-time.pipe';
|
|
14
15
|
export * from './lib/locale/pipes/localized-number.pipe';
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9sb2NhbGUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMENBQTBDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvb3B0aW9ucy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvb3B0aW9ucy9sb2NhbGUtcHJlc2V0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvbG9jYWxlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcHJvdmlkZS1sb2NhbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL2xvY2FsZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsZS9hcHBseS1sb2NhbGl6ZWQtbWFzayc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcGlwZXMvbG9jYWxpemVkLWJpZ251bWJlci1pbXB1cmUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcGlwZXMvbG9jYWxpemVkLWJpZ251bWJlci5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsZS9waXBlcy9sb2NhbGl6ZWQtY3VycmVuY3ktaW1wdXJlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3BpcGVzL2xvY2FsaXplZC1jdXJyZW5jeS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsZS9waXBlcy9sb2NhbGl6ZWQtZGF0ZS1pbXB1cmUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcGlwZXMvbG9jYWxpemVkLWRhdGUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcGlwZXMvbG9jYWxpemVkLXRpbWUtaW1wdXJlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3BpcGVzL2xvY2FsaXplZC10aW1lLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3BpcGVzL2xvY2FsaXplZC1udW1iZXIucGlwZSc7XG4iXX0=
|
|
@@ -154,10 +154,10 @@ export class PaginatorComponent {
|
|
|
154
154
|
this.requestedPage.set(pageIndex);
|
|
155
155
|
}
|
|
156
156
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
157
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PaginatorComponent, isStandalone: true, selector: "s-paginator", inputs: { totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: true, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rows: "rowsChange", pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"flex justify-between\">\n <section class=\"flex items-center gap-2\">\n <div\n class=\"inline-block h-8 divide-x divide-grayscale-30 overflow-hidden rounded-medium border border-grayscale-30 bg-grayscale-0\"\n >\n @for (btn of buttons(); track $index) {\n @let active = btn.pageIndex === currentPage();\n @let ariaLabelKey =\n btn.ariaLabelKey ??\n (active\n ? 'platform.angular_components.aria_current_page'\n : 'platform.angular_components.aria_page_number');\n <button\n [class.bg-criticality-blue]=\"active\"\n [class.text-grayscale-0]=\"active\"\n [class.text-criticality-blue]=\"!active\"\n [class.rounded-l-medium]=\"$first\"\n [class.rounded-r-medium]=\"$last\"\n (sInteractiveContent)=\"activatedButton(btn)\"\n [attr.disabled]=\"btn.disabled || (btn.validate && btn.validate()) ? '' : null\"\n [attr.aria-label]=\"ariaLabelKey | translate: { page: btn.pageIndex }\"\n [attr.aria-current]=\"active ? 'page' : null\"\n class=\"group h-[30px] w-8 hover:bg-grayscale-20 hover:text-grayscale-100 disabled:hover:bg-[transparent] disabled:hover:text-criticality-blue focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]\"\n >\n <div class=\"group-disabled:opacity-50\">\n @let page = btn.pageIndex;\n @let icon = btn.icon;\n @if (page !== undefined) {\n {{ page }}\n }\n @if (icon) {\n <i [class]=\"icon\" aria-hidden=\"true\"></i>\n }\n </div>\n </button>\n }\n </div>\n <s-select\n [options]=\"rowsPerPageOptions()\"\n [ariaLabel]=\"'platform.angular_components.aria_page_selection' | translate\"\n [(ngModel)]=\"rows\"\n (ngModelChange)=\"rowsPerPageChange()\"\n ></s-select>\n </section>\n <section class=\"flex items-center gap-2\">\n @let text =\n totalRecords() === 0\n ? 'platform.angular_components.total_record'\n : 'platform.angular_components.total_records';\n <p class=\"text-[14px] text-[#212533]\">\n {{ text | translate: { count: totalRecords() } }}\n </p>\n <ng-content></ng-content>\n </section>\n</div>\n\n", dependencies: [{ kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "component", type: SelectComponent, selector: "s-select", inputs: ["placeholder", "multiple", "options", "optionLabel", "optionValue", "showClear", "filter", "checkmark", "checkIconClass", "filterBy", "group", "virtualScroll", "virtualScrollItemSize", "emptyMessage", "disabled", "showOptions", "ariaLabel", "ariaLabelledBy"], outputs: ["disabledChange", "showOptionsChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
157
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PaginatorComponent, isStandalone: true, selector: "s-paginator", inputs: { totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: true, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rows: "rowsChange", pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"flex justify-between\">\n <section class=\"flex items-center gap-2\">\n <div\n class=\"inline-block h-8 divide-x divide-grayscale-30 overflow-hidden rounded-medium border border-grayscale-30 bg-grayscale-0\"\n >\n @for (btn of buttons(); track $index) {\n @let active = btn.pageIndex === currentPage();\n @let ariaLabelKey =\n btn.ariaLabelKey ??\n (active\n ? 'platform.angular_components.aria_current_page'\n : 'platform.angular_components.aria_page_number');\n <button\n [class.bg-criticality-blue]=\"active\"\n [class.text-grayscale-0]=\"active\"\n [class.text-criticality-blue]=\"!active\"\n [class.rounded-l-medium]=\"$first\"\n [class.rounded-r-medium]=\"$last\"\n (sInteractiveContent)=\"activatedButton(btn)\"\n [attr.disabled]=\"btn.disabled || (btn.validate && btn.validate()) ? '' : null\"\n [attr.aria-label]=\"ariaLabelKey | translate: { page: btn.pageIndex }\"\n [attr.aria-current]=\"active ? 'page' : null\"\n class=\"group h-[30px] w-8 hover:bg-grayscale-20 hover:text-grayscale-100 disabled:hover:bg-[transparent] disabled:hover:text-criticality-blue focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]\"\n >\n <div class=\"group-disabled:opacity-50\">\n @let page = btn.pageIndex;\n @let icon = btn.icon;\n @if (page !== undefined) {\n {{ page }}\n }\n @if (icon) {\n <i [class]=\"icon\" aria-hidden=\"true\"></i>\n }\n </div>\n </button>\n }\n </div>\n <s-select\n [options]=\"rowsPerPageOptions()\"\n [ariaLabel]=\"'platform.angular_components.aria_page_selection' | translate\"\n [(ngModel)]=\"rows\"\n (ngModelChange)=\"rowsPerPageChange()\"\n ></s-select>\n </section>\n <section class=\"flex items-center gap-2\">\n @let text =\n totalRecords() === 0\n ? 'platform.angular_components.total_record'\n : 'platform.angular_components.total_records';\n <p class=\"text-[14px] text-[#212533]\">\n {{ text | translate: { count: totalRecords() } }}\n </p>\n <ng-content></ng-content>\n </section>\n</div>\n\n", dependencies: [{ kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "component", type: SelectComponent, selector: "s-select", inputs: ["placeholder", "multiple", "options", "optionLabel", "optionValue", "showClear", "filter", "checkmark", "checkIconClass", "filterBy", "group", "virtualScroll", "virtualScrollItemSize", "emptyMessage", "disabled", "readonly", "showOptions", "ariaLabel", "ariaLabelledBy"], outputs: ["disabledChange", "showOptionsChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
158
158
|
}
|
|
159
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginatorComponent, decorators: [{
|
|
160
160
|
type: Component,
|
|
161
161
|
args: [{ selector: 's-paginator', standalone: true, imports: [InteractiveContentDirective, SelectComponent, FormsModule, TranslateModule], template: "<div class=\"flex justify-between\">\n <section class=\"flex items-center gap-2\">\n <div\n class=\"inline-block h-8 divide-x divide-grayscale-30 overflow-hidden rounded-medium border border-grayscale-30 bg-grayscale-0\"\n >\n @for (btn of buttons(); track $index) {\n @let active = btn.pageIndex === currentPage();\n @let ariaLabelKey =\n btn.ariaLabelKey ??\n (active\n ? 'platform.angular_components.aria_current_page'\n : 'platform.angular_components.aria_page_number');\n <button\n [class.bg-criticality-blue]=\"active\"\n [class.text-grayscale-0]=\"active\"\n [class.text-criticality-blue]=\"!active\"\n [class.rounded-l-medium]=\"$first\"\n [class.rounded-r-medium]=\"$last\"\n (sInteractiveContent)=\"activatedButton(btn)\"\n [attr.disabled]=\"btn.disabled || (btn.validate && btn.validate()) ? '' : null\"\n [attr.aria-label]=\"ariaLabelKey | translate: { page: btn.pageIndex }\"\n [attr.aria-current]=\"active ? 'page' : null\"\n class=\"group h-[30px] w-8 hover:bg-grayscale-20 hover:text-grayscale-100 disabled:hover:bg-[transparent] disabled:hover:text-criticality-blue focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]\"\n >\n <div class=\"group-disabled:opacity-50\">\n @let page = btn.pageIndex;\n @let icon = btn.icon;\n @if (page !== undefined) {\n {{ page }}\n }\n @if (icon) {\n <i [class]=\"icon\" aria-hidden=\"true\"></i>\n }\n </div>\n </button>\n }\n </div>\n <s-select\n [options]=\"rowsPerPageOptions()\"\n [ariaLabel]=\"'platform.angular_components.aria_page_selection' | translate\"\n [(ngModel)]=\"rows\"\n (ngModelChange)=\"rowsPerPageChange()\"\n ></s-select>\n </section>\n <section class=\"flex items-center gap-2\">\n @let text =\n totalRecords() === 0\n ? 'platform.angular_components.total_record'\n : 'platform.angular_components.total_records';\n <p class=\"text-[14px] text-[#212533]\">\n {{ text | translate: { count: totalRecords() } }}\n </p>\n <ng-content></ng-content>\n </section>\n</div>\n\n" }]
|
|
162
162
|
}] });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFHdEQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFPSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLGlFQUFpRTtJQUNqRSxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ3hDLG9GQUFvRjtJQUNwRixJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLDBGQUEwRjtJQUMxRixrQkFBa0IsR0FBRyxLQUFLLENBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3RCxxRkFBcUY7SUFDckYsVUFBVSxHQUFHLE1BQU0sRUFBYyxDQUFDO0lBRWpCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxH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Q0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTyxVQUFVO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sUUFBUSxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7d0dBdkpRLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDhpQkM3Qi9CLDZ2RkF3REEsNENEOUJjLDJCQUEyQiwwSkFBRSxlQUFlLG1YQUFFLFdBQVcsOFZBQUUsZUFBZTs7NEZBRzNFLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDSSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsMkJBQTJCLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvaW50ZXJhY3RpdmUtY29udGVudCc7XG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3NlbGVjdCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgUGFnZUNoYW5nZSwgUGFnaW5hdG9ySW50ZXJuYWxCdXR0b24gfSBmcm9tICcuLi9tb2RlbHMvcGFnaW5hdG9yLm1vZGVscyc7XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIHBhZ2luYcOnw6NvIHN0YW5kYWxvbmUgcXVlIGV4aWJlIGJvdMO1ZXMgZGUgcMOhZ2luYXMsXG4gKiBzZWxldG9yIGRlIGl0ZW5zIHBvciBww6FnaW5hIGUgbmF2ZWdhw6fDo28gcGFyYSBwcmltZWlyYS/Dumx0aW1hIHDDoWdpbmEuXG4gKiBFbWl0ZSBgcGFnZUNoYW5nZWAgYSBjYWRhIG11ZGFuw6dhIGRlIHDDoWdpbmEgb3UgdGFtYW5obyBkZSBww6FnaW5hLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1wYWdpbmF0b3JcbiAqICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFwiXG4gKiAgIFsocm93cyldPVwidGFtYW5ob1BhZ2luYVwiXG4gKiAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnaW5hTXVkb3UoJGV2ZW50KVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgU3RydWN0dXJlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1wYWdpbmF0b3InLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0ludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSwgU2VsZWN0Q29tcG9uZW50LCBGb3Jtc01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE7Dum1lcm8gdG90YWwgZGUgcmVnaXN0cm9zLiBDYW1wbyBvYnJpZ2F0w7NyaW8uICovXG4gICAgdG90YWxSZWNvcmRzID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyBkZSBpdGVucyBwb3IgcMOhZ2luYS4gU3Vwb3J0YSB0d28td2F5IGJpbmRpbmcuIEBkZWZhdWx0IDEwICovXG4gICAgcm93cyA9IG1vZGVsKDEwKTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9ww6fDtWVzIGRvIHNlbGV0b3IgZGUgaXRlbnMgcG9yIHDDoWdpbmEuIEBkZWZhdWx0IFsxMCwgMjAsIDUwLCAxMDAsIDIwMF0gKi9cbiAgICByb3dzUGVyUGFnZU9wdGlvbnMgPSBpbnB1dDxudW1iZXJbXT4oWzEwLCAyMCwgNTAsIDEwMCwgMjAwXSk7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHNlbXByZSBxdWUgYSBww6FnaW5hIG91IG8gbsO6bWVybyBkZSBpdGVucyBwb3IgcMOhZ2luYSBtdWRhLiAqL1xuICAgIHBhZ2VDaGFuZ2UgPSBvdXRwdXQ8UGFnZUNoYW5nZT4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudFBhZ2VFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbFBhZ2VzID0gdGhpcy50b3RhbFBhZ2VzKCk7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgLSAxO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgcGFnZUNvdW50OiB0b3RhbFBhZ2VzLFxuICAgICAgICAgICAgcm93czogdGhpcy5yb3dzKCksXG4gICAgICAgICAgICBmaXJzdDogdGhpcy5yb3dzKCkgKiBwYWdlLFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1BWF9QQUdFX0JVVFRPTlMgPSA1O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFzUHJldmlvdXNQYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgLSAxO1xuICAgICAgICByZXR1cm4gcHJldmlvdXNQYWdlID49IDE7XG4gICAgfSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhc05leHRQYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UoKSArIDE7XG4gICAgICAgIHJldHVybiBuZXh0UGFnZSA8PSB0aGlzLnRvdGFsUGFnZXMoKTtcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdGVkUGFnZSA9IHNpZ25hbCgxKTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFDDoWdpbmEgYXR1YWwsIHNlbXByZSByZWFqdXN0YWRhIHBhcmEgbyBpbnRlcnZhbG8gdsOhbGlkbyBkZSBgWzEsIHRvdGFsUGFnZXNdYC4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1heFBhZ2UgPSBNYXRoLm1heCh0aGlzLnRvdGFsUGFnZXMoKSwgMSk7XG4gICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh0aGlzLnJlcXVlc3RlZFBhZ2UoKSwgMSksIG1heFBhZ2UpO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIGJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25QYWdlQnV0dG9uczogUGFnaW5hdG9ySW50ZXJuYWxCdXR0b25bXSA9IFtdO1xuICAgICAgICBjb25zdCBtYXhQYWdlQnV0dG9ucyA9IHRoaXMuTUFYX1BBR0VfQlVUVE9OUztcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCk7XG4gICAgICAgIGNvbnN0IG1pZGRsZSA9IE1hdGguZmxvb3IobWF4UGFnZUJ1dHRvbnMgLyAyKTtcbiAgICAgICAgY29uc3QgX3N0YXJ0UGFnZSA9IGN1cnJlbnRQYWdlIC0gbWlkZGxlO1xuICAgICAgICBsZXQgc3RhcnRQYWdlID0gX3N0YXJ0UGFnZSA8IDEgPyAxIDogX3N0YXJ0UGFnZTtcbiAgICAgICAgY29uc3QgX2VuZFBhZ2UgPSBzdGFydFBhZ2UgKyBtYXhQYWdlQnV0dG9ucyAtIDE7XG4gICAgICAgIGNvbnN0IGVuZFBhZ2VJc01vcmVUaGFuVG90YWxQYWdlcyA9IF9lbmRQYWdlID4gdGhpcy50b3RhbFBhZ2VzKCk7XG5cbiAgICAgICAgaWYgKGVuZFBhZ2VJc01vcmVUaGFuVG90YWxQYWdlcykge1xuICAgICAgICAgICAgY29uc3QgZGlmZiA9IF9lbmRQYWdlIC0gdGhpcy50b3RhbFBhZ2VzKCk7XG4gICAgICAgICAgICBjb25zdCBjYW5Nb2RpZnlTdGFydFBhZ2UgPSBzdGFydFBhZ2UgLSBkaWZmID49IDE7XG4gICAgICAgICAgICBpZiAoY2FuTW9kaWZ5U3RhcnRQYWdlKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRQYWdlID0gc3RhcnRQYWdlIC0gZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbmRQYWdlID0gZW5kUGFnZUlzTW9yZVRoYW5Ub3RhbFBhZ2VzID8gdGhpcy50b3RhbFBhZ2VzKCkgOiBfZW5kUGFnZTtcblxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRQYWdlOyBpIDw9IGVuZFBhZ2U7IGkrKykge1xuICAgICAgICAgICAgbmF2aWdhdGlvblBhZ2VCdXR0b25zLnB1c2goe1xuICAgICAgICAgICAgICAgIGNsaWNrZWQ6IChwYWdlKSA9PiB0aGlzLmdvVG9QYWdlKHBhZ2UucGFnZUluZGV4IGFzIG51bWJlciksXG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiBpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GSVJTVF9QQUdFX0JVVFRPTixcbiAgICAgICAgICAgIHRoaXMuUFJFVklPVVNfUEFHRV9CVVRUT04sXG4gICAgICAgICAgICAuLi5uYXZpZ2F0aW9uUGFnZUJ1dHRvbnMsXG4gICAgICAgICAgICB0aGlzLk5FWFRfUEFHRV9CVVRUT04sXG4gICAgICAgICAgICB0aGlzLkxBU1RfUEFHRV9CVVRUT04sXG4gICAgICAgIF07XG4gICAgfSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IEZJUlNUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb0ZpcnN0UGFnZS5iaW5kKHRoaXMpLFxuICAgICAgICBpY29uOiAnZmFzIGZhLXN0ZXAtYmFja3dhcmQnLFxuICAgICAgICBhcmlhTGFiZWxLZXk6ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuYXJpYV9maXJzdF9wYWdlJyxcbiAgICAgICAgdmFsaWRhdGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5oYXNQcmV2aW91c1BhZ2UoKTtcbiAgICAgICAgfSksXG4gICAgfTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgUFJFVklPVVNfUEFHRV9CVVRUT046IFBhZ2luYXRvckludGVybmFsQnV0dG9uID0ge1xuICAgICAgICBjbGlja2VkOiB0aGlzLmdvUHJldmlvdXNQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtY2FyZXQtbGVmdCcsXG4gICAgICAgIGFyaWFMYWJlbEtleTogJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5hcmlhX3ByZXZpb3VzX3BhZ2UnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc1ByZXZpb3VzUGFnZSgpO1xuICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBMQVNUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb0xhc3RQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtc3RlcC1mb3J3YXJkJyxcbiAgICAgICAgYXJpYUxhYmVsS2V5OiAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFyaWFfbGFzdF9wYWdlJyxcbiAgICAgICAgdmFsaWRhdGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5oYXNOZXh0UGFnZSgpO1xuICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBORVhUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb05leHRQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtY2FyZXQtcmlnaHQnLFxuICAgICAgICBhcmlhTGFiZWxLZXk6ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuYXJpYV9uZXh0X3BhZ2UnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc05leHRQYWdlKCk7XG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMoKSAvIHRoaXMucm93cygpKTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUVmZmVjdC5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJvd3NQZXJQYWdlQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSgpICE9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFjdGl2YXRlZEJ1dHRvbihidXR0b246IFBhZ2luYXRvckludGVybmFsQnV0dG9uKTogdm9pZCB7XG4gICAgICAgIGJ1dHRvbi5jbGlja2VkKGJ1dHRvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb0ZpcnN0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvTmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5oYXNOZXh0UGFnZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nb1RvUGFnZSh0aGlzLmN1cnJlbnRQYWdlKCkgKyAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzUHJldmlvdXNQYWdlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdvVG9QYWdlKHRoaXMuY3VycmVudFBhZ2UoKSAtIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29MYXN0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFnZSh0aGlzLnRvdGFsUGFnZXMoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb1RvUGFnZShwYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnJlcXVlc3RlZFBhZ2Uuc2V0KHBhZ2VJbmRleCk7XG4gICAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWJsb2NrIGgtOCBkaXZpZGUteCBkaXZpZGUtZ3JheXNjYWxlLTMwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1lZGl1bSBib3JkZXIgYm9yZGVyLWdyYXlzY2FsZS0zMCBiZy1ncmF5c2NhbGUtMFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGJ0biBvZiBidXR0b25zKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIEBsZXQgYWN0aXZlID0gYnRuLnBhZ2VJbmRleCA9PT0gY3VycmVudFBhZ2UoKTtcbiAgICAgICAgICAgICAgICBAbGV0IGFyaWFMYWJlbEtleSA9XG4gICAgICAgICAgICAgICAgICAgIGJ0bi5hcmlhTGFiZWxLZXkgPz9cbiAgICAgICAgICAgICAgICAgICAgKGFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFyaWFfY3VycmVudF9wYWdlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFyaWFfcGFnZV9udW1iZXInKTtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5iZy1jcml0aWNhbGl0eS1ibHVlXT1cImFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LWdyYXlzY2FsZS0wXT1cImFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LWNyaXRpY2FsaXR5LWJsdWVdPVwiIWFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5yb3VuZGVkLWwtbWVkaXVtXT1cIiRmaXJzdFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5yb3VuZGVkLXItbWVkaXVtXT1cIiRsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgKHNJbnRlcmFjdGl2ZUNvbnRlbnQpPVwiYWN0aXZhdGVkQnV0dG9uKGJ0bilcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJidG4uZGlzYWJsZWQgfHwgKGJ0bi52YWxpZGF0ZSAmJiBidG4udmFsaWRhdGUoKSkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbEtleSB8IHRyYW5zbGF0ZTogeyBwYWdlOiBidG4ucGFnZUluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYWN0aXZlID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAgaC1bMzBweF0gdy04IGhvdmVyOmJnLWdyYXlzY2FsZS0yMCBob3Zlcjp0ZXh0LWdyYXlzY2FsZS0xMDAgZGlzYWJsZWQ6aG92ZXI6YmctW3RyYW5zcGFyZW50XSBkaXNhYmxlZDpob3Zlcjp0ZXh0LWNyaXRpY2FsaXR5LWJsdWUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtWy0ycHhdIGZvY3VzLXZpc2libGU6b3V0bGluZS1bdmFyKC0tcy1mb2N1cy1yaW5nLWNvbG9yLCMwMDkwZmYpXVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtZGlzYWJsZWQ6b3BhY2l0eS01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBwYWdlID0gYnRuLnBhZ2VJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgaWNvbiA9IGJ0bi5pY29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cy1zZWxlY3RcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInJvd3NQZXJQYWdlT3B0aW9ucygpXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5hcmlhX3BhZ2Vfc2VsZWN0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd3NcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicm93c1BlclBhZ2VDaGFuZ2UoKVwiXG4gICAgICAgID48L3Mtc2VsZWN0PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIEBsZXQgdGV4dCA9XG4gICAgICAgICAgICB0b3RhbFJlY29yZHMoKSA9PT0gMFxuICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50b3RhbF9yZWNvcmQnXG4gICAgICAgICAgICAgICAgOiAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnRvdGFsX3JlY29yZHMnO1xuICAgICAgICA8cCBjbGFzcz1cInRleHQtWzE0cHhdIHRleHQtWyMyMTI1MzNdXCI+XG4gICAgICAgICAgICB7eyB0ZXh0IHwgdHJhbnNsYXRlOiB7IGNvdW50OiB0b3RhbFJlY29yZHMoKSB9IH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFHdEQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFPSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLGlFQUFpRTtJQUNqRSxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ3hDLG9GQUFvRjtJQUNwRixJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLDBGQUEwRjtJQUMxRixrQkFBa0IsR0FBRyxLQUFLLENBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3RCxxRkFBcUY7SUFDckYsVUFBVSxHQUFHLE1BQU0sRUFBYyxDQUFDO0lBRWpCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxH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Q0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTyxVQUFVO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sUUFBUSxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7d0dBdkpRLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDhpQkM3Qi9CLDZ2RkF3REEsNENEOUJjLDJCQUEyQiwwSkFBRSxlQUFlLCtYQUFFLFdBQVcsOFZBQUUsZUFBZTs7NEZBRzNFLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDSSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsMkJBQTJCLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvaW50ZXJhY3RpdmUtY29udGVudCc7XG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3NlbGVjdCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgUGFnZUNoYW5nZSwgUGFnaW5hdG9ySW50ZXJuYWxCdXR0b24gfSBmcm9tICcuLi9tb2RlbHMvcGFnaW5hdG9yLm1vZGVscyc7XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIHBhZ2luYcOnw6NvIHN0YW5kYWxvbmUgcXVlIGV4aWJlIGJvdMO1ZXMgZGUgcMOhZ2luYXMsXG4gKiBzZWxldG9yIGRlIGl0ZW5zIHBvciBww6FnaW5hIGUgbmF2ZWdhw6fDo28gcGFyYSBwcmltZWlyYS/Dumx0aW1hIHDDoWdpbmEuXG4gKiBFbWl0ZSBgcGFnZUNoYW5nZWAgYSBjYWRhIG11ZGFuw6dhIGRlIHDDoWdpbmEgb3UgdGFtYW5obyBkZSBww6FnaW5hLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1wYWdpbmF0b3JcbiAqICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFwiXG4gKiAgIFsocm93cyldPVwidGFtYW5ob1BhZ2luYVwiXG4gKiAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnaW5hTXVkb3UoJGV2ZW50KVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgU3RydWN0dXJlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1wYWdpbmF0b3InLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0ludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSwgU2VsZWN0Q29tcG9uZW50LCBGb3Jtc01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE7Dum1lcm8gdG90YWwgZGUgcmVnaXN0cm9zLiBDYW1wbyBvYnJpZ2F0w7NyaW8uICovXG4gICAgdG90YWxSZWNvcmRzID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyBkZSBpdGVucyBwb3IgcMOhZ2luYS4gU3Vwb3J0YSB0d28td2F5IGJpbmRpbmcuIEBkZWZhdWx0IDEwICovXG4gICAgcm93cyA9IG1vZGVsKDEwKTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9ww6fDtWVzIGRvIHNlbGV0b3IgZGUgaXRlbnMgcG9yIHDDoWdpbmEuIEBkZWZhdWx0IFsxMCwgMjAsIDUwLCAxMDAsIDIwMF0gKi9cbiAgICByb3dzUGVyUGFnZU9wdGlvbnMgPSBpbnB1dDxudW1iZXJbXT4oWzEwLCAyMCwgNTAsIDEwMCwgMjAwXSk7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHNlbXByZSBxdWUgYSBww6FnaW5hIG91IG8gbsO6bWVybyBkZSBpdGVucyBwb3IgcMOhZ2luYSBtdWRhLiAqL1xuICAgIHBhZ2VDaGFuZ2UgPSBvdXRwdXQ8UGFnZUNoYW5nZT4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudFBhZ2VFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbFBhZ2VzID0gdGhpcy50b3RhbFBhZ2VzKCk7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgLSAxO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgcGFnZUNvdW50OiB0b3RhbFBhZ2VzLFxuICAgICAgICAgICAgcm93czogdGhpcy5yb3dzKCksXG4gICAgICAgICAgICBmaXJzdDogdGhpcy5yb3dzKCkgKiBwYWdlLFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1BWF9QQUdFX0JVVFRPTlMgPSA1O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFzUHJldmlvdXNQYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgLSAxO1xuICAgICAgICByZXR1cm4gcHJldmlvdXNQYWdlID49IDE7XG4gICAgfSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhc05leHRQYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UoKSArIDE7XG4gICAgICAgIHJldHVybiBuZXh0UGFnZSA8PSB0aGlzLnRvdGFsUGFnZXMoKTtcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdGVkUGFnZSA9IHNpZ25hbCgxKTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFDDoWdpbmEgYXR1YWwsIHNlbXByZSByZWFqdXN0YWRhIHBhcmEgbyBpbnRlcnZhbG8gdsOhbGlkbyBkZSBgWzEsIHRvdGFsUGFnZXNdYC4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1heFBhZ2UgPSBNYXRoLm1heCh0aGlzLnRvdGFsUGFnZXMoKSwgMSk7XG4gICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh0aGlzLnJlcXVlc3RlZFBhZ2UoKSwgMSksIG1heFBhZ2UpO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIGJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25QYWdlQnV0dG9uczogUGFnaW5hdG9ySW50ZXJuYWxCdXR0b25bXSA9IFtdO1xuICAgICAgICBjb25zdCBtYXhQYWdlQnV0dG9ucyA9IHRoaXMuTUFYX1BBR0VfQlVUVE9OUztcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCk7XG4gICAgICAgIGNvbnN0IG1pZGRsZSA9IE1hdGguZmxvb3IobWF4UGFnZUJ1dHRvbnMgLyAyKTtcbiAgICAgICAgY29uc3QgX3N0YXJ0UGFnZSA9IGN1cnJlbnRQYWdlIC0gbWlkZGxlO1xuICAgICAgICBsZXQgc3RhcnRQYWdlID0gX3N0YXJ0UGFnZSA8IDEgPyAxIDogX3N0YXJ0UGFnZTtcbiAgICAgICAgY29uc3QgX2VuZFBhZ2UgPSBzdGFydFBhZ2UgKyBtYXhQYWdlQnV0dG9ucyAtIDE7XG4gICAgICAgIGNvbnN0IGVuZFBhZ2VJc01vcmVUaGFuVG90YWxQYWdlcyA9IF9lbmRQYWdlID4gdGhpcy50b3RhbFBhZ2VzKCk7XG5cbiAgICAgICAgaWYgKGVuZFBhZ2VJc01vcmVUaGFuVG90YWxQYWdlcykge1xuICAgICAgICAgICAgY29uc3QgZGlmZiA9IF9lbmRQYWdlIC0gdGhpcy50b3RhbFBhZ2VzKCk7XG4gICAgICAgICAgICBjb25zdCBjYW5Nb2RpZnlTdGFydFBhZ2UgPSBzdGFydFBhZ2UgLSBkaWZmID49IDE7XG4gICAgICAgICAgICBpZiAoY2FuTW9kaWZ5U3RhcnRQYWdlKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRQYWdlID0gc3RhcnRQYWdlIC0gZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbmRQYWdlID0gZW5kUGFnZUlzTW9yZVRoYW5Ub3RhbFBhZ2VzID8gdGhpcy50b3RhbFBhZ2VzKCkgOiBfZW5kUGFnZTtcblxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRQYWdlOyBpIDw9IGVuZFBhZ2U7IGkrKykge1xuICAgICAgICAgICAgbmF2aWdhdGlvblBhZ2VCdXR0b25zLnB1c2goe1xuICAgICAgICAgICAgICAgIGNsaWNrZWQ6IChwYWdlKSA9PiB0aGlzLmdvVG9QYWdlKHBhZ2UucGFnZUluZGV4IGFzIG51bWJlciksXG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiBpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GSVJTVF9QQUdFX0JVVFRPTixcbiAgICAgICAgICAgIHRoaXMuUFJFVklPVVNfUEFHRV9CVVRUT04sXG4gICAgICAgICAgICAuLi5uYXZpZ2F0aW9uUGFnZUJ1dHRvbnMsXG4gICAgICAgICAgICB0aGlzLk5FWFRfUEFHRV9CVVRUT04sXG4gICAgICAgICAgICB0aGlzLkxBU1RfUEFHRV9CVVRUT04sXG4gICAgICAgIF07XG4gICAgfSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IEZJUlNUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb0ZpcnN0UGFnZS5iaW5kKHRoaXMpLFxuICAgICAgICBpY29uOiAnZmFzIGZhLXN0ZXAtYmFja3dhcmQnLFxuICAgICAgICBhcmlhTGFiZWxLZXk6ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuYXJpYV9maXJzdF9wYWdlJyxcbiAgICAgICAgdmFsaWRhdGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5oYXNQcmV2aW91c1BhZ2UoKTtcbiAgICAgICAgfSksXG4gICAgfTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgUFJFVklPVVNfUEFHRV9CVVRUT046IFBhZ2luYXRvckludGVybmFsQnV0dG9uID0ge1xuICAgICAgICBjbGlja2VkOiB0aGlzLmdvUHJldmlvdXNQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtY2FyZXQtbGVmdCcsXG4gICAgICAgIGFyaWFMYWJlbEtleTogJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5hcmlhX3ByZXZpb3VzX3BhZ2UnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc1ByZXZpb3VzUGFnZSgpO1xuICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBMQVNUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb0xhc3RQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtc3RlcC1mb3J3YXJkJyxcbiAgICAgICAgYXJpYUxhYmVsS2V5OiAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFyaWFfbGFzdF9wYWdlJyxcbiAgICAgICAgdmFsaWRhdGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5oYXNOZXh0UGFnZSgpO1xuICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBORVhUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb05leHRQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtY2FyZXQtcmlnaHQnLFxuICAgICAgICBhcmlhTGFiZWxLZXk6ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuYXJpYV9uZXh0X3BhZ2UnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc05leHRQYWdlKCk7XG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMoKSAvIHRoaXMucm93cygpKTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUVmZmVjdC5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJvd3NQZXJQYWdlQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSgpICE9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFjdGl2YXRlZEJ1dHRvbihidXR0b246IFBhZ2luYXRvckludGVybmFsQnV0dG9uKTogdm9pZCB7XG4gICAgICAgIGJ1dHRvbi5jbGlja2VkKGJ1dHRvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb0ZpcnN0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvTmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5oYXNOZXh0UGFnZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nb1RvUGFnZSh0aGlzLmN1cnJlbnRQYWdlKCkgKyAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzUHJldmlvdXNQYWdlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdvVG9QYWdlKHRoaXMuY3VycmVudFBhZ2UoKSAtIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29MYXN0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFnZSh0aGlzLnRvdGFsUGFnZXMoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb1RvUGFnZShwYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnJlcXVlc3RlZFBhZ2Uuc2V0KHBhZ2VJbmRleCk7XG4gICAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWJsb2NrIGgtOCBkaXZpZGUteCBkaXZpZGUtZ3JheXNjYWxlLTMwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1lZGl1bSBib3JkZXIgYm9yZGVyLWdyYXlzY2FsZS0zMCBiZy1ncmF5c2NhbGUtMFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGJ0biBvZiBidXR0b25zKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIEBsZXQgYWN0aXZlID0gYnRuLnBhZ2VJbmRleCA9PT0gY3VycmVudFBhZ2UoKTtcbiAgICAgICAgICAgICAgICBAbGV0IGFyaWFMYWJlbEtleSA9XG4gICAgICAgICAgICAgICAgICAgIGJ0bi5hcmlhTGFiZWxLZXkgPz9cbiAgICAgICAgICAgICAgICAgICAgKGFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFyaWFfY3VycmVudF9wYWdlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFyaWFfcGFnZV9udW1iZXInKTtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5iZy1jcml0aWNhbGl0eS1ibHVlXT1cImFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LWdyYXlzY2FsZS0wXT1cImFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LWNyaXRpY2FsaXR5LWJsdWVdPVwiIWFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5yb3VuZGVkLWwtbWVkaXVtXT1cIiRmaXJzdFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5yb3VuZGVkLXItbWVkaXVtXT1cIiRsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgKHNJbnRlcmFjdGl2ZUNvbnRlbnQpPVwiYWN0aXZhdGVkQnV0dG9uKGJ0bilcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJidG4uZGlzYWJsZWQgfHwgKGJ0bi52YWxpZGF0ZSAmJiBidG4udmFsaWRhdGUoKSkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbEtleSB8IHRyYW5zbGF0ZTogeyBwYWdlOiBidG4ucGFnZUluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYWN0aXZlID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAgaC1bMzBweF0gdy04IGhvdmVyOmJnLWdyYXlzY2FsZS0yMCBob3Zlcjp0ZXh0LWdyYXlzY2FsZS0xMDAgZGlzYWJsZWQ6aG92ZXI6YmctW3RyYW5zcGFyZW50XSBkaXNhYmxlZDpob3Zlcjp0ZXh0LWNyaXRpY2FsaXR5LWJsdWUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtWy0ycHhdIGZvY3VzLXZpc2libGU6b3V0bGluZS1bdmFyKC0tcy1mb2N1cy1yaW5nLWNvbG9yLCMwMDkwZmYpXVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtZGlzYWJsZWQ6b3BhY2l0eS01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBwYWdlID0gYnRuLnBhZ2VJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgaWNvbiA9IGJ0bi5pY29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cy1zZWxlY3RcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInJvd3NQZXJQYWdlT3B0aW9ucygpXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5hcmlhX3BhZ2Vfc2VsZWN0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd3NcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicm93c1BlclBhZ2VDaGFuZ2UoKVwiXG4gICAgICAgID48L3Mtc2VsZWN0PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIEBsZXQgdGV4dCA9XG4gICAgICAgICAgICB0b3RhbFJlY29yZHMoKSA9PT0gMFxuICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50b3RhbF9yZWNvcmQnXG4gICAgICAgICAgICAgICAgOiAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnRvdGFsX3JlY29yZHMnO1xuICAgICAgICA8cCBjbGFzcz1cInRleHQtWzE0cHhdIHRleHQtWyMyMTI1MzNdXCI+XG4gICAgICAgICAgICB7eyB0ZXh0IHwgdHJhbnNsYXRlOiB7IGNvdW50OiB0b3RhbFJlY29yZHMoKSB9IH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG4iXX0=
|
|
@@ -8,6 +8,8 @@ export class SelectOptionComponent {
|
|
|
8
8
|
checkmark = input.required();
|
|
9
9
|
isGrouper = input.required();
|
|
10
10
|
isFocused = input.required();
|
|
11
|
+
/** @description Modo somente leitura: a opção não responde a clique/teclado e não exibe hover. @default false */
|
|
12
|
+
readonly = input(false);
|
|
11
13
|
isSelected = model.required();
|
|
12
14
|
/** @description Classe do ícone de checkmark exibido quando a opção está selecionada. @default 'far fa-check' */
|
|
13
15
|
checkIconClass = input('far fa-check');
|
|
@@ -35,13 +37,13 @@ export class SelectOptionComponent {
|
|
|
35
37
|
setsize = input(null);
|
|
36
38
|
selected = output();
|
|
37
39
|
onClick() {
|
|
38
|
-
if (this.isGrouper()) {
|
|
40
|
+
if (this.isGrouper() || this.readonly()) {
|
|
39
41
|
return;
|
|
40
42
|
}
|
|
41
43
|
this.selected.emit();
|
|
42
44
|
}
|
|
43
45
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SelectOptionComponent, isStandalone: true, selector: "s-select-option", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: true, transformFunction: null }, checkmark: { classPropertyName: "checkmark", publicName: "checkmark", isSignal: true, isRequired: true, transformFunction: null }, isGrouper: { classPropertyName: "isGrouper", publicName: "isGrouper", isSignal: true, isRequired: true, transformFunction: null }, isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: true, isRequired: true, transformFunction: null }, isSelected: { classPropertyName: "isSelected", publicName: "isSelected", isSignal: true, isRequired: true, transformFunction: null }, checkIconClass: { classPropertyName: "checkIconClass", publicName: "checkIconClass", isSignal: true, isRequired: false, transformFunction: null }, groupAnnouncement: { classPropertyName: "groupAnnouncement", publicName: "groupAnnouncement", isSignal: true, isRequired: false, transformFunction: null }, posinset: { classPropertyName: "posinset", publicName: "posinset", isSignal: true, isRequired: false, transformFunction: null }, setsize: { classPropertyName: "setsize", publicName: "setsize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isSelected: "isSelectedChange", selected: "selected" }, host: { attributes: { "role": "presentation" } }, ngImport: i0, template: "<div\n [attr.id]=\"id()\"\n [attr.role]=\"isGrouper() ? 'presentation' : 'option'\"\n [attr.aria-selected]=\"isGrouper() ? null : isSelected()\"\n [attr.aria-describedby]=\"groupAnnouncement() ? id() + '-group' : null\"\n [attr.aria-posinset]=\"isGrouper() ? null : posinset()\"\n [attr.aria-setsize]=\"isGrouper() ? null : setsize()\"\n class=\"flex select-none items-center gap-3 px-3 py-2\"\n [class.hover:bg-grayscale-10]=\"!isGrouper()\"\n [class.bg-grayscale-10]=\"!isGrouper() && isFocused()\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n (keydown.space)=\"onClick(); $event.preventDefault()\"\n>\n @if (!isGrouper() && checkmark() && !multiple() && isSelected()) {\n <i\n class=\"text-grayscale-60\"\n [class]=\"checkIconClass()\"\n aria-hidden=\"true\"\n ></i>\n }\n\n @if (!isGrouper() && multiple()) {\n <!-- aria-hidden: puramente visual \u2014 o clique borbulha pro (click) do pr\u00F3prio option acima,\n e o estado de sele\u00E7\u00E3o j\u00E1 \u00E9 comunicado pelo aria-selected do option. Sem isso, esse\n checkbox aninhado (sem aria-label, com seu pr\u00F3prio aria-checked independente) era um\n segundo objeto de acessibilidade \"concorrente\" anunciando o mesmo estado \u2014 reportado\n via NVDA: o leitor de tela anunciava esse checkbox (sem nome/posi\u00E7\u00E3o pr\u00F3pria) antes\n da op\u00E7\u00E3o correta ser anunciada. -->\n <s-checkbox\n [checked]=\"isSelected()\"\n aria-hidden=\"true\"\n ></s-checkbox>\n }\n <span\n [class]=\"isSelected() ? 'text-[#428BCA]' : 'text-grayscale-90'\"\n [class.font-bold]=\"isGrouper()\"\n >\n {{ label() }}\n </span>\n\n @if (groupAnnouncement()) {\n <!-- aria-hidden pra n\u00E3o entrar no nome acess\u00EDvel da op\u00E7\u00E3o (computado a partir do\n conte\u00FAdo de texto vis\u00EDvel) \u2014 o `aria-describedby` acima ainda consegue ler seu\n texto normalmente, j\u00E1 que essa leitura ignora deliberadamente o aria-hidden do\n elemento referenciado. Sem isso, o texto seria anunciado duas vezes (uma como\n parte do nome, outra como descri\u00E7\u00E3o). -->\n <span\n class=\"sr-only\"\n [id]=\"id() + '-group'\"\n aria-hidden=\"true\"\n >{{ groupAnnouncement() }}</span>\n }\n</div>\n\n", dependencies: [{ kind: "component", type: CheckboxComponent, selector: "s-checkbox", inputs: ["disabled", "checked", "indeterminate", "label", "ariaLabel", "ariaLabelledBy"], outputs: ["disabledChange", "checkedChange"] }] });
|
|
46
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SelectOptionComponent, isStandalone: true, selector: "s-select-option", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: true, transformFunction: null }, checkmark: { classPropertyName: "checkmark", publicName: "checkmark", isSignal: true, isRequired: true, transformFunction: null }, isGrouper: { classPropertyName: "isGrouper", publicName: "isGrouper", isSignal: true, isRequired: true, transformFunction: null }, isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isSelected: { classPropertyName: "isSelected", publicName: "isSelected", isSignal: true, isRequired: true, transformFunction: null }, checkIconClass: { classPropertyName: "checkIconClass", publicName: "checkIconClass", isSignal: true, isRequired: false, transformFunction: null }, groupAnnouncement: { classPropertyName: "groupAnnouncement", publicName: "groupAnnouncement", isSignal: true, isRequired: false, transformFunction: null }, posinset: { classPropertyName: "posinset", publicName: "posinset", isSignal: true, isRequired: false, transformFunction: null }, setsize: { classPropertyName: "setsize", publicName: "setsize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isSelected: "isSelectedChange", selected: "selected" }, host: { attributes: { "role": "presentation" } }, ngImport: i0, template: "<div\n [attr.id]=\"id()\"\n [attr.role]=\"isGrouper() ? 'presentation' : 'option'\"\n [attr.aria-selected]=\"isGrouper() ? null : isSelected()\"\n [attr.aria-disabled]=\"!isGrouper() && readonly() ? true : null\"\n [attr.aria-describedby]=\"groupAnnouncement() ? id() + '-group' : null\"\n [attr.aria-posinset]=\"isGrouper() ? null : posinset()\"\n [attr.aria-setsize]=\"isGrouper() ? null : setsize()\"\n class=\"flex select-none items-center gap-3 px-3 py-2\"\n [class.hover:bg-grayscale-10]=\"!isGrouper() && !readonly()\"\n [class.bg-grayscale-10]=\"!isGrouper() && isFocused()\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n (keydown.space)=\"onClick(); $event.preventDefault()\"\n>\n @if (!isGrouper() && checkmark() && !multiple() && isSelected()) {\n <i\n class=\"text-grayscale-60\"\n [class]=\"checkIconClass()\"\n aria-hidden=\"true\"\n ></i>\n }\n\n @if (!isGrouper() && multiple()) {\n <!-- aria-hidden: puramente visual \u2014 o clique borbulha pro (click) do pr\u00F3prio option acima,\n e o estado de sele\u00E7\u00E3o j\u00E1 \u00E9 comunicado pelo aria-selected do option. Sem isso, esse\n checkbox aninhado (sem aria-label, com seu pr\u00F3prio aria-checked independente) era um\n segundo objeto de acessibilidade \"concorrente\" anunciando o mesmo estado \u2014 reportado\n via NVDA: o leitor de tela anunciava esse checkbox (sem nome/posi\u00E7\u00E3o pr\u00F3pria) antes\n da op\u00E7\u00E3o correta ser anunciada. -->\n <s-checkbox\n [checked]=\"isSelected()\"\n aria-hidden=\"true\"\n ></s-checkbox>\n }\n <span\n [class]=\"isSelected() ? 'text-[#428BCA]' : 'text-grayscale-90'\"\n [class.font-bold]=\"isGrouper()\"\n >\n {{ label() }}\n </span>\n\n @if (groupAnnouncement()) {\n <!-- aria-hidden pra n\u00E3o entrar no nome acess\u00EDvel da op\u00E7\u00E3o (computado a partir do\n conte\u00FAdo de texto vis\u00EDvel) \u2014 o `aria-describedby` acima ainda consegue ler seu\n texto normalmente, j\u00E1 que essa leitura ignora deliberadamente o aria-hidden do\n elemento referenciado. Sem isso, o texto seria anunciado duas vezes (uma como\n parte do nome, outra como descri\u00E7\u00E3o). -->\n <span\n class=\"sr-only\"\n [id]=\"id() + '-group'\"\n aria-hidden=\"true\"\n >{{ groupAnnouncement() }}</span>\n }\n</div>\n\n", dependencies: [{ kind: "component", type: CheckboxComponent, selector: "s-checkbox", inputs: ["disabled", "checked", "indeterminate", "label", "ariaLabel", "ariaLabelledBy"], outputs: ["disabledChange", "checkedChange"] }] });
|
|
45
47
|
}
|
|
46
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectOptionComponent, decorators: [{
|
|
47
49
|
type: Component,
|
|
@@ -51,6 +53,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
51
53
|
// e o role="option" do template interno (ver WAI-ARIA APG: wrappers entre um
|
|
52
54
|
// role pai e um role filho precisam de role="presentation"/"none").
|
|
53
55
|
role: 'presentation',
|
|
54
|
-
}, template: "<div\n [attr.id]=\"id()\"\n [attr.role]=\"isGrouper() ? 'presentation' : 'option'\"\n [attr.aria-selected]=\"isGrouper() ? null : isSelected()\"\n [attr.aria-describedby]=\"groupAnnouncement() ? id() + '-group' : null\"\n [attr.aria-posinset]=\"isGrouper() ? null : posinset()\"\n [attr.aria-setsize]=\"isGrouper() ? null : setsize()\"\n class=\"flex select-none items-center gap-3 px-3 py-2\"\n [class.hover:bg-grayscale-10]=\"!isGrouper()\"\n [class.bg-grayscale-10]=\"!isGrouper() && isFocused()\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n (keydown.space)=\"onClick(); $event.preventDefault()\"\n>\n @if (!isGrouper() && checkmark() && !multiple() && isSelected()) {\n <i\n class=\"text-grayscale-60\"\n [class]=\"checkIconClass()\"\n aria-hidden=\"true\"\n ></i>\n }\n\n @if (!isGrouper() && multiple()) {\n <!-- aria-hidden: puramente visual \u2014 o clique borbulha pro (click) do pr\u00F3prio option acima,\n e o estado de sele\u00E7\u00E3o j\u00E1 \u00E9 comunicado pelo aria-selected do option. Sem isso, esse\n checkbox aninhado (sem aria-label, com seu pr\u00F3prio aria-checked independente) era um\n segundo objeto de acessibilidade \"concorrente\" anunciando o mesmo estado \u2014 reportado\n via NVDA: o leitor de tela anunciava esse checkbox (sem nome/posi\u00E7\u00E3o pr\u00F3pria) antes\n da op\u00E7\u00E3o correta ser anunciada. -->\n <s-checkbox\n [checked]=\"isSelected()\"\n aria-hidden=\"true\"\n ></s-checkbox>\n }\n <span\n [class]=\"isSelected() ? 'text-[#428BCA]' : 'text-grayscale-90'\"\n [class.font-bold]=\"isGrouper()\"\n >\n {{ label() }}\n </span>\n\n @if (groupAnnouncement()) {\n <!-- aria-hidden pra n\u00E3o entrar no nome acess\u00EDvel da op\u00E7\u00E3o (computado a partir do\n conte\u00FAdo de texto vis\u00EDvel) \u2014 o `aria-describedby` acima ainda consegue ler seu\n texto normalmente, j\u00E1 que essa leitura ignora deliberadamente o aria-hidden do\n elemento referenciado. Sem isso, o texto seria anunciado duas vezes (uma como\n parte do nome, outra como descri\u00E7\u00E3o). -->\n <span\n class=\"sr-only\"\n [id]=\"id() + '-group'\"\n aria-hidden=\"true\"\n >{{ groupAnnouncement() }}</span>\n }\n</div>\n\n" }]
|
|
56
|
+
}, template: "<div\n [attr.id]=\"id()\"\n [attr.role]=\"isGrouper() ? 'presentation' : 'option'\"\n [attr.aria-selected]=\"isGrouper() ? null : isSelected()\"\n [attr.aria-disabled]=\"!isGrouper() && readonly() ? true : null\"\n [attr.aria-describedby]=\"groupAnnouncement() ? id() + '-group' : null\"\n [attr.aria-posinset]=\"isGrouper() ? null : posinset()\"\n [attr.aria-setsize]=\"isGrouper() ? null : setsize()\"\n class=\"flex select-none items-center gap-3 px-3 py-2\"\n [class.hover:bg-grayscale-10]=\"!isGrouper() && !readonly()\"\n [class.bg-grayscale-10]=\"!isGrouper() && isFocused()\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n (keydown.space)=\"onClick(); $event.preventDefault()\"\n>\n @if (!isGrouper() && checkmark() && !multiple() && isSelected()) {\n <i\n class=\"text-grayscale-60\"\n [class]=\"checkIconClass()\"\n aria-hidden=\"true\"\n ></i>\n }\n\n @if (!isGrouper() && multiple()) {\n <!-- aria-hidden: puramente visual \u2014 o clique borbulha pro (click) do pr\u00F3prio option acima,\n e o estado de sele\u00E7\u00E3o j\u00E1 \u00E9 comunicado pelo aria-selected do option. Sem isso, esse\n checkbox aninhado (sem aria-label, com seu pr\u00F3prio aria-checked independente) era um\n segundo objeto de acessibilidade \"concorrente\" anunciando o mesmo estado \u2014 reportado\n via NVDA: o leitor de tela anunciava esse checkbox (sem nome/posi\u00E7\u00E3o pr\u00F3pria) antes\n da op\u00E7\u00E3o correta ser anunciada. -->\n <s-checkbox\n [checked]=\"isSelected()\"\n aria-hidden=\"true\"\n ></s-checkbox>\n }\n <span\n [class]=\"isSelected() ? 'text-[#428BCA]' : 'text-grayscale-90'\"\n [class.font-bold]=\"isGrouper()\"\n >\n {{ label() }}\n </span>\n\n @if (groupAnnouncement()) {\n <!-- aria-hidden pra n\u00E3o entrar no nome acess\u00EDvel da op\u00E7\u00E3o (computado a partir do\n conte\u00FAdo de texto vis\u00EDvel) \u2014 o `aria-describedby` acima ainda consegue ler seu\n texto normalmente, j\u00E1 que essa leitura ignora deliberadamente o aria-hidden do\n elemento referenciado. Sem isso, o texto seria anunciado duas vezes (uma como\n parte do nome, outra como descri\u00E7\u00E3o). -->\n <span\n class=\"sr-only\"\n [id]=\"id() + '-group'\"\n aria-hidden=\"true\"\n >{{ groupAnnouncement() }}</span>\n }\n</div>\n\n" }]
|
|
55
57
|
}] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc2VsZWN0L3NyYy9saWIvc2VsZWN0L2NvbXBvbmVudHMvc2VsZWN0LW9wdGlvbi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zZWxlY3Qvc3JjL2xpYi9zZWxlY3QvY29tcG9uZW50cy9zZWxlY3Qtb3B0aW9uL3NlbGVjdC1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFlaEYsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQzlCLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDakMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztJQUNyQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO0lBQ3RDLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7SUFDdEMsU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztJQUU3QyxpSEFBaUg7SUFDMUcsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV4QixVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO0lBRTlDLGlIQUFpSDtJQUMxRyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTlDOzs7Ozs7T0FNRztJQUNJLGlCQUFpQixHQUFHLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFFdEQ7Ozs7OztPQU1HO0lBQ0ksUUFBUSxHQUFHLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFFN0M7Ozs7T0FJRztJQUNJLE9BQU8sR0FBRyxLQUFLLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRXJDLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUVwQixPQUFPO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBakRRLHFCQUFxQjs0RkFBckIscUJBQXFCLCt1RENqQmxDLDRpRkF3REEsNENEaERjLGlCQUFpQjs7NEZBU2xCLHFCQUFxQjtrQkFiakMsU0FBUzsrQkFDSSxpQkFBaUIsY0FFZixJQUFJLFdBQ1AsQ0FBQyxpQkFBaUIsQ0FBQyxRQUN0Qjt3QkFDRiw2RUFBNkU7d0JBQzdFLCtFQUErRTt3QkFDL0UsNkVBQTZFO3dCQUM3RSxvRUFBb0U7d0JBQ3BFLElBQUksRUFBRSxjQUFjO3FCQUN2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIG1vZGVsLCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9jaGVja2JveCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy1zZWxlY3Qtb3B0aW9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ2hlY2tib3hDb21wb25lbnRdLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgIC8vIFNlbSByb2xlPVwicHJlc2VudGF0aW9uXCIgZXN0ZSBlbGVtZW50byBjdXN0b20gcG9kZSBxdWVicmFyLCBlbSBkZXRlcm1pbmFkYXNcclxuICAgICAgICAvLyBjb21iaW5hw6fDtWVzIGRlIG5hdmVnYWRvci9BVCwgYSByZWxhw6fDo28gQVJJQSBwYWkvZmlsaG8gZW50cmUgbyByb2xlPVwibGlzdGJveFwiXHJcbiAgICAgICAgLy8gZSBvIHJvbGU9XCJvcHRpb25cIiBkbyB0ZW1wbGF0ZSBpbnRlcm5vICh2ZXIgV0FJLUFSSUEgQVBHOiB3cmFwcGVycyBlbnRyZSB1bVxyXG4gICAgICAgIC8vIHJvbGUgcGFpIGUgdW0gcm9sZSBmaWxobyBwcmVjaXNhbSBkZSByb2xlPVwicHJlc2VudGF0aW9uXCIvXCJub25lXCIpLlxyXG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nLFxyXG4gICAgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlbGVjdE9wdGlvbkNvbXBvbmVudCB7XHJcbiAgICBwdWJsaWMgaWQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcbiAgICBwdWJsaWMgbGFiZWwgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcbiAgICBwdWJsaWMgbXVsdGlwbGUgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xyXG4gICAgcHVibGljIGNoZWNrbWFyayA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XHJcbiAgICBwdWJsaWMgaXNHcm91cGVyID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcclxuICAgIHB1YmxpYyBpc0ZvY3VzZWQgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTW9kbyBzb21lbnRlIGxlaXR1cmE6IGEgb3DDp8OjbyBuw6NvIHJlc3BvbmRlIGEgY2xpcXVlL3RlY2xhZG8gZSBuw6NvIGV4aWJlIGhvdmVyLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgcHVibGljIHJlYWRvbmx5ID0gaW5wdXQoZmFsc2UpO1xyXG5cclxuICAgIHB1YmxpYyBpc1NlbGVjdGVkID0gbW9kZWwucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIENsYXNzZSBkbyDDrWNvbmUgZGUgY2hlY2ttYXJrIGV4aWJpZG8gcXVhbmRvIGEgb3DDp8OjbyBlc3TDoSBzZWxlY2lvbmFkYS4gQGRlZmF1bHQgJ2ZhciBmYS1jaGVjaycgKi9cclxuICAgIHB1YmxpYyBjaGVja0ljb25DbGFzcyA9IGlucHV0KCdmYXIgZmEtY2hlY2snKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBhbnVuY2lhZG8gdmlhIGBhcmlhLWRlc2NyaWJlZGJ5YCBpbmZvcm1hbmRvIGEgcXVlIGdydXBvIGVzdGEgb3DDp8Ojb1xyXG4gICAgICogcGVydGVuY2UuIE8gYWdydXBhZG9yIHZpc3VhbCB0ZW0gYHJvbGU9XCJwcmVzZW50YXRpb25cImAgKHNpbGVuY2lvc28gcHJvIGxlaXRvciBkZSB0ZWxhKSwgZVxyXG4gICAgICogYHNlbGVjdC5jb21wb25lbnQudHNgIHPDsyBwYXNzYSBlc3RlIGlucHV0IG5hIHByaW1laXJhIG9ww6fDo28gZGUgY2FkYSBncnVwbywgcHJhIG7Do28gcmVwZXRpclxyXG4gICAgICogbyBhbsO6bmNpbyBlbSB0b2RhIG9ww6fDo28gc3Vic2VxdWVudGUuXHJcbiAgICAgKiBAZGVmYXVsdCBudWxsXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBncm91cEFubm91bmNlbWVudCA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFBvc2nDp8OjbyAoMS1iYXNlZCkgZGVzdGEgb3DDp8OjbyBkZW50cm8gZG8gY29uanVudG8gbmF2ZWfDoXZlbCwgZXhwb3N0YSB2aWFcclxuICAgICAqIGBhcmlhLXBvc2luc2V0YC4gTmVjZXNzw6FyaW8gY29tIGB2aXJ0dWFsU2Nyb2xsYCwgasOhIHF1ZSBzw7MgdW1hIGphbmVsYSBkZSBvcMOnw7VlcyBleGlzdGUgZGVcclxuICAgICAqIGZhdG8gbm8gRE9NIGEgY2FkYSBtb21lbnRvIOKAlCBzZW0gaXNzbywgbyBsZWl0b3IgZGUgdGVsYSB0ZW50YSBpbmZlcmlyIGEgcG9zacOnw6NvIGNvbnRhbmRvXHJcbiAgICAgKiBvcyBgcm9sZT1cIm9wdGlvblwiYCBpcm3Do29zIHByZXNlbnRlcyBubyBET00sIG8gcXVlIGZpY2EgZXJyYWRvIG51bWEgbGlzdGEgdmlydHVhbGl6YWRhLlxyXG4gICAgICogQGRlZmF1bHQgbnVsbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcG9zaW5zZXQgPSBpbnB1dDxudW1iZXIgfCBudWxsPihudWxsKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUYW1hbmhvIHRvdGFsIGRvIGNvbmp1bnRvIG5hdmVnw6F2ZWwgYW8gcXVhbCBlc3RhIG9ww6fDo28gcGVydGVuY2UsIGV4cG9zdG8gdmlhXHJcbiAgICAgKiBgYXJpYS1zZXRzaXplYC4gVmVyIGBwb3NpbnNldGAuXHJcbiAgICAgKiBAZGVmYXVsdCBudWxsXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRzaXplID0gaW5wdXQ8bnVtYmVyIHwgbnVsbD4obnVsbCk7XHJcblxyXG4gICAgcHVibGljIHNlbGVjdGVkID0gb3V0cHV0KCk7XHJcblxyXG4gICAgcHVibGljIG9uQ2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNHcm91cGVyKCkgfHwgdGhpcy5yZWFkb25seSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXZcbiAgICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgICBbYXR0ci5yb2xlXT1cImlzR3JvdXBlcigpID8gJ3ByZXNlbnRhdGlvbicgOiAnb3B0aW9uJ1wiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0dyb3VwZXIoKSA/IG51bGwgOiBpc1NlbGVjdGVkKClcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiIWlzR3JvdXBlcigpICYmIHJlYWRvbmx5KCkgPyB0cnVlIDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJncm91cEFubm91bmNlbWVudCgpID8gaWQoKSArICctZ3JvdXAnIDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJpc0dyb3VwZXIoKSA/IG51bGwgOiBwb3NpbnNldCgpXCJcbiAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwiaXNHcm91cGVyKCkgPyBudWxsIDogc2V0c2l6ZSgpXCJcbiAgICBjbGFzcz1cImZsZXggc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIGdhcC0zIHB4LTMgcHktMlwiXG4gICAgW2NsYXNzLmhvdmVyOmJnLWdyYXlzY2FsZS0xMF09XCIhaXNHcm91cGVyKCkgJiYgIXJlYWRvbmx5KClcIlxuICAgIFtjbGFzcy5iZy1ncmF5c2NhbGUtMTBdPVwiIWlzR3JvdXBlcigpICYmIGlzRm9jdXNlZCgpXCJcbiAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkNsaWNrKClcIlxuICAgIChrZXlkb3duLnNwYWNlKT1cIm9uQ2xpY2soKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuPlxuICAgIEBpZiAoIWlzR3JvdXBlcigpICYmIGNoZWNrbWFyaygpICYmICFtdWx0aXBsZSgpICYmIGlzU2VsZWN0ZWQoKSkge1xuICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWdyYXlzY2FsZS02MFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiY2hlY2tJY29uQ2xhc3MoKVwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+PC9pPlxuICAgIH1cblxuICAgIEBpZiAoIWlzR3JvdXBlcigpICYmIG11bHRpcGxlKCkpIHtcbiAgICAgICAgPCEtLSBhcmlhLWhpZGRlbjogcHVyYW1lbnRlIHZpc3VhbCDigJQgbyBjbGlxdWUgYm9yYnVsaGEgcHJvIChjbGljaykgZG8gcHLDs3ByaW8gb3B0aW9uIGFjaW1hLFxuICAgICAgICAgICAgIGUgbyBlc3RhZG8gZGUgc2VsZcOnw6NvIGrDoSDDqSBjb211bmljYWRvIHBlbG8gYXJpYS1zZWxlY3RlZCBkbyBvcHRpb24uIFNlbSBpc3NvLCBlc3NlXG4gICAgICAgICAgICAgY2hlY2tib3ggYW5pbmhhZG8gKHNlbSBhcmlhLWxhYmVsLCBjb20gc2V1IHByw7NwcmlvIGFyaWEtY2hlY2tlZCBpbmRlcGVuZGVudGUpIGVyYSB1bVxuICAgICAgICAgICAgIHNlZ3VuZG8gb2JqZXRvIGRlIGFjZXNzaWJpbGlkYWRlIFwiY29uY29ycmVudGVcIiBhbnVuY2lhbmRvIG8gbWVzbW8gZXN0YWRvIOKAlCByZXBvcnRhZG9cbiAgICAgICAgICAgICB2aWEgTlZEQTogbyBsZWl0b3IgZGUgdGVsYSBhbnVuY2lhdmEgZXNzZSBjaGVja2JveCAoc2VtIG5vbWUvcG9zacOnw6NvIHByw7NwcmlhKSBhbnRlc1xuICAgICAgICAgICAgIGRhIG9ww6fDo28gY29ycmV0YSBzZXIgYW51bmNpYWRhLiAtLT5cbiAgICAgICAgPHMtY2hlY2tib3hcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+PC9zLWNoZWNrYm94PlxuICAgIH1cbiAgICA8c3BhblxuICAgICAgICBbY2xhc3NdPVwiaXNTZWxlY3RlZCgpID8gJ3RleHQtWyM0MjhCQ0FdJyA6ICd0ZXh0LWdyYXlzY2FsZS05MCdcIlxuICAgICAgICBbY2xhc3MuZm9udC1ib2xkXT1cImlzR3JvdXBlcigpXCJcbiAgICA+XG4gICAgICAgIHt7IGxhYmVsKCkgfX1cbiAgICA8L3NwYW4+XG5cbiAgICBAaWYgKGdyb3VwQW5ub3VuY2VtZW50KCkpIHtcbiAgICAgICAgPCEtLSBhcmlhLWhpZGRlbiBwcmEgbsOjbyBlbnRyYXIgbm8gbm9tZSBhY2Vzc8OtdmVsIGRhIG9ww6fDo28gKGNvbXB1dGFkbyBhIHBhcnRpciBkb1xuICAgICAgICAgICAgIGNvbnRlw7pkbyBkZSB0ZXh0byB2aXPDrXZlbCkg4oCUIG8gYGFyaWEtZGVzY3JpYmVkYnlgIGFjaW1hIGFpbmRhIGNvbnNlZ3VlIGxlciBzZXVcbiAgICAgICAgICAgICB0ZXh0byBub3JtYWxtZW50ZSwgasOhIHF1ZSBlc3NhIGxlaXR1cmEgaWdub3JhIGRlbGliZXJhZGFtZW50ZSBvIGFyaWEtaGlkZGVuIGRvXG4gICAgICAgICAgICAgZWxlbWVudG8gcmVmZXJlbmNpYWRvLiBTZW0gaXNzbywgbyB0ZXh0byBzZXJpYSBhbnVuY2lhZG8gZHVhcyB2ZXplcyAodW1hIGNvbW9cbiAgICAgICAgICAgICBwYXJ0ZSBkbyBub21lLCBvdXRyYSBjb21vIGRlc2NyacOnw6NvKS4gLS0+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgICAgW2lkXT1cImlkKCkgKyAnLWdyb3VwJ1wiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+e3sgZ3JvdXBBbm5vdW5jZW1lbnQoKSB9fTwvc3Bhbj5cbiAgICB9XG48L2Rpdj5cblxuIl19
|