@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
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Injectable, Pipe, NgModule, makeEnvironmentProviders } from '@angular/core';
|
|
3
|
-
import { HttpClient } from '@angular/common/http';
|
|
4
3
|
import { user } from '@seniorsistemas/senior-platform-data';
|
|
5
4
|
import moment from 'moment';
|
|
6
5
|
import { of, from } from 'rxjs';
|
|
7
|
-
import { tap, map
|
|
6
|
+
import { tap, map } from 'rxjs/operators';
|
|
8
7
|
import { CookieService } from 'ngx-cookie-service';
|
|
9
8
|
import 'moment/locale/es';
|
|
10
9
|
import 'moment/locale/pt-br';
|
|
@@ -55,6 +54,203 @@ class LocaleOptions {
|
|
|
55
54
|
}
|
|
56
55
|
}
|
|
57
56
|
|
|
57
|
+
const PT_BR_PRESET = {
|
|
58
|
+
calendar: {
|
|
59
|
+
hourFormat: '24',
|
|
60
|
+
dateFormat: 'dd/mm/yy',
|
|
61
|
+
firstDayOfWeek: 0,
|
|
62
|
+
dayNames: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
|
|
63
|
+
dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],
|
|
64
|
+
dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],
|
|
65
|
+
monthNames: [
|
|
66
|
+
'Janeiro',
|
|
67
|
+
'Fevereiro',
|
|
68
|
+
'Março',
|
|
69
|
+
'Abril',
|
|
70
|
+
'Maio',
|
|
71
|
+
'Junho',
|
|
72
|
+
'Julho',
|
|
73
|
+
'Agosto',
|
|
74
|
+
'Setembro',
|
|
75
|
+
'Outubro',
|
|
76
|
+
'Novembro',
|
|
77
|
+
'Dezembro',
|
|
78
|
+
],
|
|
79
|
+
monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
|
|
80
|
+
today: 'Hoje',
|
|
81
|
+
clear: 'Limpar',
|
|
82
|
+
},
|
|
83
|
+
number: {
|
|
84
|
+
currencySymbol: 'R$',
|
|
85
|
+
thousandsSeparator: '.',
|
|
86
|
+
decimalSeparator: ',',
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
const ES_PRESET = {
|
|
90
|
+
calendar: {
|
|
91
|
+
hourFormat: '24',
|
|
92
|
+
dateFormat: 'dd/mm/yy',
|
|
93
|
+
firstDayOfWeek: 0,
|
|
94
|
+
dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
|
|
95
|
+
dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'],
|
|
96
|
+
dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
|
|
97
|
+
monthNames: [
|
|
98
|
+
'Enero',
|
|
99
|
+
'Febrero',
|
|
100
|
+
'Marzo',
|
|
101
|
+
'Abril',
|
|
102
|
+
'Mayo',
|
|
103
|
+
'Junio',
|
|
104
|
+
'Julio',
|
|
105
|
+
'Agosto',
|
|
106
|
+
'Septiembre',
|
|
107
|
+
'Octubre',
|
|
108
|
+
'Noviembre',
|
|
109
|
+
'Diciembre',
|
|
110
|
+
],
|
|
111
|
+
monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
|
|
112
|
+
today: 'Hoy',
|
|
113
|
+
clear: 'Limpiar',
|
|
114
|
+
},
|
|
115
|
+
number: {
|
|
116
|
+
currencySymbol: '€',
|
|
117
|
+
thousandsSeparator: '.',
|
|
118
|
+
decimalSeparator: ',',
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
const EN_US_PRESET = {
|
|
122
|
+
calendar: {
|
|
123
|
+
hourFormat: '12',
|
|
124
|
+
dateFormat: 'mm/dd/yy',
|
|
125
|
+
firstDayOfWeek: 0,
|
|
126
|
+
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
|
|
127
|
+
dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
|
128
|
+
dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
|
|
129
|
+
monthNames: [
|
|
130
|
+
'January',
|
|
131
|
+
'February',
|
|
132
|
+
'March',
|
|
133
|
+
'April',
|
|
134
|
+
'May',
|
|
135
|
+
'June',
|
|
136
|
+
'July',
|
|
137
|
+
'August',
|
|
138
|
+
'September',
|
|
139
|
+
'October',
|
|
140
|
+
'November',
|
|
141
|
+
'December',
|
|
142
|
+
],
|
|
143
|
+
monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
|
|
144
|
+
today: 'Today',
|
|
145
|
+
clear: 'Clear',
|
|
146
|
+
},
|
|
147
|
+
number: {
|
|
148
|
+
currencySymbol: '$',
|
|
149
|
+
thousandsSeparator: ',',
|
|
150
|
+
decimalSeparator: '.',
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* @description Configurações de locale embarcadas na biblioteca. Mesmo conteúdo publicado
|
|
155
|
+
* anteriormente em `cdn.senior.com.br/primeng/locales/3.0.0`.
|
|
156
|
+
*/
|
|
157
|
+
const LOCALE_PRESETS = {
|
|
158
|
+
'pt-BR': PT_BR_PRESET,
|
|
159
|
+
'es-ES': ES_PRESET,
|
|
160
|
+
'es-419': ES_PRESET,
|
|
161
|
+
'en-US': EN_US_PRESET,
|
|
162
|
+
};
|
|
163
|
+
/** Preset usado para locales sem preset exato, a partir do idioma base. */
|
|
164
|
+
const BASE_LANGUAGE_PRESETS = {
|
|
165
|
+
pt: PT_BR_PRESET,
|
|
166
|
+
es: ES_PRESET,
|
|
167
|
+
en: EN_US_PRESET,
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* @description Separador decimal do locale, obtido via `Intl.NumberFormat`.
|
|
171
|
+
*/
|
|
172
|
+
function getLocaleDecimalSeparator(locale) {
|
|
173
|
+
const numberFormat = new Intl.NumberFormat(locale, {
|
|
174
|
+
style: 'decimal',
|
|
175
|
+
minimumFractionDigits: 5,
|
|
176
|
+
maximumFractionDigits: 5,
|
|
177
|
+
});
|
|
178
|
+
return numberFormat.formatToParts(1.2).find((part) => part.type === 'decimal')?.value;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* @description Separador de milhar do locale, obtido via `Intl.NumberFormat`.
|
|
182
|
+
*/
|
|
183
|
+
function getLocaleGroupingSeparator(locale) {
|
|
184
|
+
// The default groupingSeparator for 'fr' is the character code 8239. We need it to be the regular space.
|
|
185
|
+
if (locale?.includes('fr'))
|
|
186
|
+
return ' ';
|
|
187
|
+
const numberFormat = new Intl.NumberFormat(locale, {
|
|
188
|
+
style: 'decimal',
|
|
189
|
+
useGrouping: true,
|
|
190
|
+
minimumFractionDigits: 5,
|
|
191
|
+
maximumFractionDigits: 5,
|
|
192
|
+
});
|
|
193
|
+
return numberFormat.formatToParts(1000).find((part) => part.type === 'group')?.value;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* @description Formato de data do locale na convenção usada pelos presets (`dd/mm/yy`, onde `yy` é o ano com 4 dígitos).
|
|
197
|
+
*/
|
|
198
|
+
function getLocaleDateFormat(locale) {
|
|
199
|
+
const tokens = { day: 'dd', month: 'mm', year: 'yy' };
|
|
200
|
+
return new Intl.DateTimeFormat(locale, { day: '2-digit', month: '2-digit', year: 'numeric' })
|
|
201
|
+
.formatToParts(new Date(2000, 0, 1))
|
|
202
|
+
.map((part) => tokens[part.type] ?? part.value)
|
|
203
|
+
.join('');
|
|
204
|
+
}
|
|
205
|
+
function getLocaleHourFormat(locale) {
|
|
206
|
+
const { hourCycle, hour12 } = new Intl.DateTimeFormat(locale, { hour: 'numeric' }).resolvedOptions();
|
|
207
|
+
const is12h = hourCycle ? hourCycle === 'h11' || hourCycle === 'h12' : !!hour12;
|
|
208
|
+
return is12h ? '12' : '24';
|
|
209
|
+
}
|
|
210
|
+
function findPreset(locale, presets) {
|
|
211
|
+
const key = Object.keys(presets).find((presetKey) => presetKey.toLowerCase() === locale.toLowerCase());
|
|
212
|
+
return key ? presets[key] : undefined;
|
|
213
|
+
}
|
|
214
|
+
function clonePreset(preset, locale) {
|
|
215
|
+
return new LocaleOptions({
|
|
216
|
+
locale,
|
|
217
|
+
calendar: structuredClone(preset.calendar),
|
|
218
|
+
number: structuredClone(preset.number),
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* @description Monta as opções de locale sem acesso à rede.
|
|
223
|
+
* Locales com preset exato (`pt-BR`, `es-ES`, `es-419`, `en-US`) retornam o preset.
|
|
224
|
+
* Os demais usam os textos do preset do idioma base (ou pt-BR), com separadores e formatos
|
|
225
|
+
* de data/hora derivados via `Intl`. O símbolo de moeda segue o padrão `R$`, pois não é
|
|
226
|
+
* possível inferir a moeda a partir do idioma.
|
|
227
|
+
*/
|
|
228
|
+
function buildLocaleOptions(locale) {
|
|
229
|
+
const exactPreset = findPreset(locale, LOCALE_PRESETS);
|
|
230
|
+
if (exactPreset) {
|
|
231
|
+
return clonePreset(exactPreset, locale);
|
|
232
|
+
}
|
|
233
|
+
const basePreset = findPreset(locale.split('-')[0], BASE_LANGUAGE_PRESETS) ?? PT_BR_PRESET;
|
|
234
|
+
try {
|
|
235
|
+
return new LocaleOptions({
|
|
236
|
+
locale,
|
|
237
|
+
calendar: {
|
|
238
|
+
...structuredClone(basePreset.calendar),
|
|
239
|
+
dateFormat: getLocaleDateFormat(locale),
|
|
240
|
+
hourFormat: getLocaleHourFormat(locale),
|
|
241
|
+
},
|
|
242
|
+
number: new NumberLocaleOptions({
|
|
243
|
+
decimalSeparator: getLocaleDecimalSeparator(locale) ?? ',',
|
|
244
|
+
thousandsSeparator: getLocaleGroupingSeparator(locale) ?? '',
|
|
245
|
+
}),
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
// Locale inválido para o Intl (ex.: 'pt_BR').
|
|
250
|
+
return clonePreset(PT_BR_PRESET, locale);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
58
254
|
/**
|
|
59
255
|
* @description Serviço de localização que obtém e armazena o locale do usuário
|
|
60
256
|
* a partir da plataforma Senior. Fornece separadores decimais e de milhar,
|
|
@@ -63,12 +259,9 @@ class LocaleOptions {
|
|
|
63
259
|
* @category Locale
|
|
64
260
|
*/
|
|
65
261
|
class LocaleService {
|
|
66
|
-
http = inject(HttpClient);
|
|
67
262
|
cookieService = inject(CookieService);
|
|
68
263
|
locale;
|
|
69
264
|
localeOptions;
|
|
70
|
-
localeOptionsAddress = 'https://cdn.senior.com.br/primeng/locales';
|
|
71
|
-
localeOptionsVersion = '3.0.0';
|
|
72
265
|
VALID_MOMENT_LANGUAGES = {
|
|
73
266
|
spanish: ['es-do', 'es-mx', 'es-us', 'es'],
|
|
74
267
|
english: ['en', 'en-au', 'en-ca', 'en-gb', 'en-ie', 'en-il', 'en-in', 'en-nz', 'en-sg'],
|
|
@@ -120,35 +313,16 @@ class LocaleService {
|
|
|
120
313
|
return userLocale;
|
|
121
314
|
}
|
|
122
315
|
getLocaleConfig() {
|
|
123
|
-
return this.getLocale().pipe(
|
|
316
|
+
return this.getLocale().pipe(map((locale) => {
|
|
124
317
|
moment.locale(this.parseUserLocaleToMoment(locale));
|
|
125
|
-
return
|
|
126
|
-
.get(`${this.localeOptionsAddress}/${this.localeOptionsVersion}/${locale}.json`)
|
|
127
|
-
.pipe(map((response) => new LocaleOptions({ ...response, locale })));
|
|
128
|
-
}), catchError((err) => {
|
|
129
|
-
console.warn(`Error getting locale configuration. Using fallback.`, err);
|
|
130
|
-
return user.getUserData();
|
|
318
|
+
return buildLocaleOptions(locale);
|
|
131
319
|
}));
|
|
132
320
|
}
|
|
133
321
|
getGroupingSeparator() {
|
|
134
|
-
|
|
135
|
-
style: 'decimal',
|
|
136
|
-
useGrouping: true,
|
|
137
|
-
minimumFractionDigits: 5,
|
|
138
|
-
maximumFractionDigits: 5,
|
|
139
|
-
});
|
|
140
|
-
// The default groupingSeparator for 'fr' is the character code 8239. We need it to be the regular space.
|
|
141
|
-
if (this.locale?.includes('fr'))
|
|
142
|
-
return ' ';
|
|
143
|
-
return numberFormat.formatToParts(1000).find((part) => part.type === 'group')?.value;
|
|
322
|
+
return getLocaleGroupingSeparator(this.locale);
|
|
144
323
|
}
|
|
145
324
|
getDecimalSeparator() {
|
|
146
|
-
|
|
147
|
-
style: 'decimal',
|
|
148
|
-
minimumFractionDigits: 5,
|
|
149
|
-
maximumFractionDigits: 5,
|
|
150
|
-
});
|
|
151
|
-
return numberFormat.formatToParts(1.2).find((part) => part.type === 'decimal')?.value;
|
|
325
|
+
return getLocaleDecimalSeparator(this.locale);
|
|
152
326
|
}
|
|
153
327
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
154
328
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleService, providedIn: 'root' });
|
|
@@ -497,5 +671,5 @@ function provideLocale() {
|
|
|
497
671
|
* Generated bundle index. Do not edit.
|
|
498
672
|
*/
|
|
499
673
|
|
|
500
|
-
export { CalendarLocaleOptions, LocaleModule, LocaleOptions, LocaleService, LocalizedBignumberImpurePipe, LocalizedBignumberPipe, LocalizedCurrencyImpurePipe, LocalizedCurrencyPipe, LocalizedCurrencyPipeOptions, LocalizedDateImpurePipe, LocalizedDatePipe, LocalizedNumberPipe, LocalizedTimeImpurePipe, LocalizedTimePipe, NumberLocaleOptions, applyLocalizedMask, provideLocale };
|
|
674
|
+
export { CalendarLocaleOptions, LOCALE_PRESETS, LocaleModule, LocaleOptions, LocaleService, LocalizedBignumberImpurePipe, LocalizedBignumberPipe, LocalizedCurrencyImpurePipe, LocalizedCurrencyPipe, LocalizedCurrencyPipeOptions, LocalizedDateImpurePipe, LocalizedDatePipe, LocalizedNumberPipe, LocalizedTimeImpurePipe, LocalizedTimePipe, NumberLocaleOptions, applyLocalizedMask, buildLocaleOptions, getLocaleDecimalSeparator, getLocaleGroupingSeparator, provideLocale };
|
|
501
675
|
//# sourceMappingURL=seniorsistemas-angular-components-locale.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-locale.mjs","sources":["../../projects/angular-components/locale/src/lib/locale/options/calendar.ts","../../projects/angular-components/locale/src/lib/locale/options/number.ts","../../projects/angular-components/locale/src/lib/locale/options/index.ts","../../projects/angular-components/locale/src/lib/locale/locale.service.ts","../../projects/angular-components/locale/src/lib/locale/apply-localized-mask.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-bignumber.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-bignumber-impure.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-currency.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-currency-impure.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-date.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-date-impure.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-number.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-time.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-time-impure.pipe.ts","../../projects/angular-components/locale/src/lib/locale/locale.module.ts","../../projects/angular-components/locale/src/lib/locale/provide-locale.ts","../../projects/angular-components/locale/src/seniorsistemas-angular-components-locale.ts"],"sourcesContent":["export interface ICalendarLocaleOptions {\n hourFormat?: string;\n dateFormat?: string;\n firstDayOfWeek?: number;\n today?: string;\n clear?: string;\n dayNames?: string[];\n dayNamesShort?: string[];\n dayNamesMin?: string[];\n monthNamesShort?: string[];\n monthNames?: string[];\n}\n\nexport class CalendarLocaleOptions implements ICalendarLocaleOptions {\n public hourFormat? = '24';\n public dateFormat? = 'dd/mm/yy';\n public firstDayOfWeek? = 0;\n public today? = 'Hoje';\n public clear? = 'Limpar';\n public dayNames?: string[] = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'];\n public dayNamesShort?: string[] = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'];\n public dayNamesMin?: string[] = ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'];\n public monthNamesShort?: string[] = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'];\n public monthNames?: string[] = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];\n\n constructor(config: ICalendarLocaleOptions = {}) {\n this.clear = config?.clear ?? this.clear;\n this.dateFormat = config?.dateFormat ?? this.dateFormat;\n this.dayNames = config?.dayNames ?? this.dayNames;\n this.dayNamesMin = config?.dayNamesMin ?? this.dayNamesMin;\n this.firstDayOfWeek = config?.firstDayOfWeek ?? this.firstDayOfWeek;\n this.hourFormat = config?.hourFormat ?? this.hourFormat;\n this.monthNames = config?.monthNames ?? this.monthNames;\n this.monthNamesShort = config?.monthNamesShort ?? this.monthNamesShort;\n this.today = config?.today ?? this.today;\n }\n}\n","export interface INumberLocaleOptions {\n thousandsSeparator?: string;\n decimalSeparator?: string;\n currencySymbol?: string;\n}\n\nexport class NumberLocaleOptions implements INumberLocaleOptions {\n public thousandsSeparator? = \".\";\n public decimalSeparator? = \",\";\n public currencySymbol? = \"R$\";\n\n constructor(config: INumberLocaleOptions = {}) {\n Object.assign(this, config);\n }\n}\n","import { CalendarLocaleOptions } from './calendar';\nimport { NumberLocaleOptions } from './number';\n\nexport interface ILocaleOptions {\n locale?: string;\n calendar?: CalendarLocaleOptions;\n number?: NumberLocaleOptions;\n}\n\nexport class LocaleOptions implements ILocaleOptions {\n locale? = 'pt-BR';\n calendar = new CalendarLocaleOptions({});\n number = new NumberLocaleOptions();\n\n constructor(config: ILocaleOptions = {}) {\n this.calendar = config.calendar ?? this.calendar;\n this.number = config.number ?? this.number;\n this.locale = config.locale ?? this.locale;\n // Object.keys(config).forEach(key => (this[key] = config[key] || this[key]));\n }\n}\n\nexport * from './calendar';\nexport * from './number';\n\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { user } from '@seniorsistemas/senior-platform-data';\nimport moment from 'moment';\nimport { from, Observable, of } from 'rxjs';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\nimport { CookieService } from 'ngx-cookie-service';\n\nimport { ILocaleOptions, LocaleOptions } from './options/index';\n\nimport 'moment/locale/es';\nimport 'moment/locale/pt-br';\n\n/**\n * @description Serviço de localização que obtém e armazena o locale do usuário\n * a partir da plataforma Senior. Fornece separadores decimais e de milhar,\n * configurações de calendário e opções de formato PrimeNG com base no locale ativo.\n *\n * @category Locale\n */\n@Injectable({ providedIn: 'root' })\nexport class LocaleService {\n private readonly http = inject(HttpClient);\n private readonly cookieService = inject(CookieService);\n\n private locale?: string;\n private localeOptions?: LocaleOptions;\n private readonly localeOptionsAddress = 'https://cdn.senior.com.br/primeng/locales';\n private readonly localeOptionsVersion = '3.0.0';\n private readonly VALID_MOMENT_LANGUAGES = {\n spanish: ['es-do', 'es-mx', 'es-us', 'es'],\n english: ['en', 'en-au', 'en-ca', 'en-gb', 'en-ie', 'en-il', 'en-in', 'en-nz', 'en-sg'],\n };\n\n get(): Observable<LocaleOptions> {\n return this.localeOptions\n ? of(this.localeOptions)\n : this.getLocaleConfig().pipe(\n tap(\n (localeOptions: LocaleOptions) =>\n (this.localeOptions = { ...localeOptions, locale: this.locale }),\n ),\n );\n }\n\n getLocale(): Observable<string> {\n return this.locale\n ? of(this.locale)\n : from(this.getUserData()).pipe(\n map((userData: any) => {\n const locale = <string>userData.locale || <string>userData.tenantLocale || 'pt-BR';\n this.locale = locale;\n return this.locale;\n }),\n );\n }\n\n /**\n * Returns an object with the locale options based on the user's locale(platform locale).\n * @return The locale options object.\n */\n getLocaleOptions(): LocaleOptions | undefined {\n return this.localeOptions;\n }\n\n private getUserData() {\n try {\n return of(JSON.parse(this.cookieService.get('com.senior.token')));\n } catch (ex) {\n console.warn('Unable to obtain user locale from cookie, calling getUser');\n return user.getUserData();\n }\n }\n\n /**\n * Set valid locale for moment js locale based on user current locale.\n * Sometimes the locale from user not exists in locale of moment, for example, is valid user with language 'es-CO' but for the momentjs the locale 'es-CO' not exist, so with this function will be applied the 'es' locale.\n * @param userLocale\n * @returns valid locale based in user locale.\n */\n private parseUserLocaleToMoment(userLocale: string): string {\n userLocale = userLocale.toLowerCase();\n if (userLocale.startsWith('es') && !this.VALID_MOMENT_LANGUAGES.spanish.includes(userLocale)) {\n userLocale = 'es';\n }\n if (userLocale.startsWith('en') && !this.VALID_MOMENT_LANGUAGES.english.includes(userLocale)) {\n userLocale = 'en';\n }\n return userLocale;\n }\n\n private getLocaleConfig(): Observable<LocaleOptions> {\n return this.getLocale().pipe(\n switchMap((locale: string) => {\n moment.locale(this.parseUserLocaleToMoment(locale));\n\n return this.http\n .get<ILocaleOptions>(`${this.localeOptionsAddress}/${this.localeOptionsVersion}/${locale}.json`)\n .pipe(map((response) => new LocaleOptions({ ...response, locale })));\n }),\n catchError((err: any) => {\n console.warn(`Error getting locale configuration. Using fallback.`, err);\n return user.getUserData();\n }),\n );\n }\n\n getGroupingSeparator(): string | undefined {\n const numberFormat = new Intl.NumberFormat(this.locale, {\n style: 'decimal',\n useGrouping: true,\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n });\n\n // The default groupingSeparator for 'fr' is the character code 8239. We need it to be the regular space.\n if (this.locale?.includes('fr')) return ' ';\n\n return numberFormat.formatToParts(1000).find((part) => part.type === 'group')?.value;\n }\n\n getDecimalSeparator(): string | undefined {\n const numberFormat = new Intl.NumberFormat(this.locale, {\n style: 'decimal',\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n });\n\n return numberFormat.formatToParts(1.2).find((part) => part.type === 'decimal')?.value;\n }\n}\n\n","import BigNumber from 'bignumber.js';\n\nexport interface LocalizedBignumberOptions {\n decimalSeparator?: string;\n thousandsSeparator?: string;\n scale?: number;\n prefix?: string;\n suffix?: string;\n allowNegative?: boolean;\n}\n\nexport function applyLocalizedMask(\n rawValue: any,\n options: Required<LocalizedBignumberOptions>,\n isNumber: boolean,\n): string {\n const { allowNegative, decimalSeparator, scale, prefix, suffix, thousandsSeparator } = options;\n const value = isNumber ? new BigNumber(rawValue).toFixed(scale).toString() : String(rawValue);\n const onlyNumbers = value.replace(/\\D/g, '');\n if (!onlyNumbers) {\n return '';\n }\n const integerPart =\n onlyNumbers\n .slice(0, onlyNumbers.length - scale)\n .replace(/^0*/g, '')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator) || '0';\n const decimalPart = onlyNumbers.slice(onlyNumbers.length - scale);\n const newValue = scale ? integerPart + decimalSeparator + decimalPart : integerPart;\n const isZero = !integerPart && !decimalPart;\n const operator = String(value).includes('-') && allowNegative && !isZero ? '-' : '';\n return `${operator}${prefix}${newValue}${suffix}`;\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { LocaleService } from '../locale.service';\nimport { map } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport BigNumber from 'bignumber.js';\nimport { applyLocalizedMask, LocalizedBignumberOptions } from '../apply-localized-mask';\n\nexport type { LocalizedBignumberOptions };\n\n/**\n * Opções do pipe `localizedBignumber`: as da máscara mais as de compatibilidade com os pipes depreciados\n * `localizedNumber` e `localizedCurrency`, que formatavam valores vazios como `0`.\n */\nexport interface LocalizedBignumberPipeOptions extends LocalizedBignumberOptions {\n /**\n * Quando `true`, uma string vazia (ou só com espaços) é formatada como `0`, em vez de ficar vazia.\n * É o comportamento dos pipes depreciados `localizedNumber` e `localizedCurrency` (`Number('')` é `0`).\n * @default false\n */\n emptyAsZero?: boolean;\n /**\n * Quando `true`, `null` é formatado como `0`, em vez de ser devolvido como está.\n * É o comportamento do pipe depreciado `localizedNumber` (`Number(null)` é `0`). `undefined` nunca é convertido.\n * @default false\n */\n nullAsZero?: boolean;\n}\n\n@Pipe({\n name: 'localizedBignumber',\n standalone: true,\n})\nexport class LocalizedBignumberPipe implements PipeTransform {\n private localeService = inject(LocaleService);\n\n public transform(value?: any, options?: LocalizedBignumberPipeOptions): any {\n const input = this.coerceEmpty(value, options);\n return input !== undefined && input !== null ? this.applyMask(input, options) : of(input);\n }\n\n private coerceEmpty(value: any, options?: LocalizedBignumberPipeOptions): any {\n if (options?.nullAsZero && value === null) return 0;\n if (options?.emptyAsZero && typeof value === 'string' && value.trim() === '') return 0;\n return value;\n }\n\n private applyMask(value?: any, options?: LocalizedBignumberPipeOptions) {\n return this.localeService.get().pipe(\n map((localeConfig) => {\n const configs: Required<LocalizedBignumberOptions> = {\n prefix: options?.prefix ?? localeConfig?.number?.currencySymbol ?? 'R$',\n thousandsSeparator: options?.thousandsSeparator ?? localeConfig?.number?.thousandsSeparator ?? '.',\n decimalSeparator: options?.decimalSeparator ?? localeConfig?.number?.decimalSeparator ?? ',',\n scale: options?.scale ?? 2,\n suffix: options?.suffix ?? '',\n allowNegative: options?.allowNegative ?? true,\n };\n const isNumber = !new BigNumber(value).isNaN();\n return applyLocalizedMask(value, configs, isNumber);\n }),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { LocalizedBignumberPipe, LocalizedBignumberPipeOptions } from './localized-bignumber.pipe';\n\n@Pipe({\n name: 'localizedBignumberImpure',\n pure: false,\n standalone: true,\n})\nexport class LocalizedBignumberImpurePipe extends LocalizedBignumberPipe implements PipeTransform {\n public override transform(value?: any, options?: LocalizedBignumberPipeOptions): any {\n return super.transform(value, options);\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { LocaleService } from '../locale.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { of } from 'rxjs';\r\nimport { INumberLocaleOptions, NumberLocaleOptions } from '../options';\r\n\r\nexport interface ILocalizedCurrencyPipeOptions extends INumberLocaleOptions {\r\n scale?: number;\r\n}\r\n\r\nexport class LocalizedCurrencyPipeOptions extends NumberLocaleOptions implements ILocalizedCurrencyPipeOptions {\r\n public scale = 2;\r\n\r\n constructor(config: ILocalizedCurrencyPipeOptions = {}) {\r\n super(config);\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated Should use localizedBignumberPipe instead\r\n */\r\n@Pipe({\r\n name: 'localizedCurrency',\r\n standalone: true,\r\n})\r\nexport class LocalizedCurrencyPipe implements PipeTransform {\r\n private localeService = inject(LocaleService);\r\n\r\n public transform(value?: any, options?: LocalizedCurrencyPipeOptions): any {\r\n if (!options) {\r\n options = new LocalizedCurrencyPipeOptions();\r\n }\r\n return value !== undefined && value !== null ? this.applyMask(value, options) : of(value);\r\n }\r\n\r\n private applyMask(value: any, options: LocalizedCurrencyPipeOptions) {\r\n return this.localeService.get().pipe(\r\n map((localeConfig) => {\r\n const config = { ...localeConfig.number, ...options };\r\n const { scale, currencySymbol, thousandsSeparator, decimalSeparator } = config;\r\n\r\n const rawValue = Number(value).toFixed(scale);\r\n const onlyNumbers = rawValue.replace(/[^0-9]/g, ``);\r\n const integerPart =\r\n onlyNumbers\r\n .slice(0, onlyNumbers.length - scale)\r\n .replace(/^0*/g, ``)\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator!) || `0`;\r\n const decimalPart = onlyNumbers.slice(onlyNumbers.length - scale);\r\n const newValue = scale ? integerPart + decimalSeparator + decimalPart : integerPart;\r\n const isZero = !Number(onlyNumbers);\r\n const operator = rawValue.includes('-') && !isZero ? '-' : '';\r\n return `${operator}${currencySymbol}${newValue}`;\r\n }),\r\n );\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { LocalizedCurrencyPipe, LocalizedCurrencyPipeOptions } from './localized-currency.pipe';\r\n\r\n/**\r\n * @deprecated Should use localizedBignumberPipe instead\r\n */\r\n@Pipe({\r\n name: 'localizedCurrencyImpure',\r\n pure: false,\r\n standalone: true,\r\n})\r\nexport class LocalizedCurrencyImpurePipe extends LocalizedCurrencyPipe implements PipeTransform {\r\n public override transform(\r\n value?: any,\r\n options: LocalizedCurrencyPipeOptions = new LocalizedCurrencyPipeOptions(),\r\n ): any {\r\n return super.transform(value, options);\r\n }\r\n}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\n\r\nimport moment from 'moment';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { LocaleService } from '../locale.service';\r\n\r\n@Pipe({\r\n name: 'localizedDate',\r\n standalone: true,\r\n})\r\nexport class LocalizedDatePipe implements PipeTransform {\r\n private localeService = inject(LocaleService);\r\n\r\n public transform(value: any, format: string = 'L LTS'): any {\r\n return this.localeService.get().pipe(map(() => (value ? moment(value).format(format) : value)));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizedDatePipe } from './localized-date.pipe';\r\n\r\n@Pipe({\r\n name: 'localizedDateImpure',\r\n pure: false,\r\n standalone: true,\r\n})\r\nexport class LocalizedDateImpurePipe extends LocalizedDatePipe implements PipeTransform {}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { from } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { LocaleService } from '../locale.service';\r\n\r\n/**\r\n * @deprecated Should use localizedBignumberPipe instead\r\n */\r\n@Pipe({\r\n name: 'localizedNumber',\r\n standalone: true,\r\n})\r\nexport class LocalizedNumberPipe implements PipeTransform {\r\n private localeService = inject(LocaleService);\r\n\r\n transform(value: number | string, minimumFractionDigits?: number) {\r\n return from(this.localeService.getLocale()).pipe(\r\n map((locale: string) => {\r\n const numericValue = Number(value);\r\n\r\n if (!value && isNaN(numericValue)) return;\r\n\r\n return new Intl.NumberFormat(locale, {\r\n minimumFractionDigits: minimumFractionDigits || 0,\r\n }).format(Number(value));\r\n }),\r\n );\r\n }\r\n}\r\n\r\nexport interface Locale {\r\n localidade?: string;\r\n tenantLocale?: string;\r\n}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { LocaleService } from '../locale.service';\r\n\r\n@Pipe({\r\n name: 'localizedTime',\r\n standalone: true,\r\n})\r\nexport class LocalizedTimePipe implements PipeTransform {\r\n private localeService = inject(LocaleService);\r\n\r\n public transform(value: any, format: string = 'LTS'): any {\r\n return this.localeService.get().pipe(map(() => (value ? moment(value, 'HH:mm:ss').format(format) : value)));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizedTimePipe } from './localized-time.pipe';\r\n\r\n@Pipe({\r\n name: 'localizedTimeImpure',\r\n pure: false,\r\n standalone: true,\r\n})\r\nexport class LocalizedTimeImpurePipe extends LocalizedTimePipe implements PipeTransform {}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { LocaleService } from './locale.service';\r\nimport { LocalizedBignumberImpurePipe } from './pipes/localized-bignumber-impure.pipe';\r\nimport { LocalizedBignumberPipe } from './pipes/localized-bignumber.pipe';\r\nimport { LocalizedCurrencyImpurePipe } from './pipes/localized-currency-impure.pipe';\r\nimport { LocalizedCurrencyPipe } from './pipes/localized-currency.pipe';\r\nimport { LocalizedDateImpurePipe } from './pipes/localized-date-impure.pipe';\r\nimport { LocalizedDatePipe } from './pipes/localized-date.pipe';\r\nimport { LocalizedNumberPipe } from './pipes/localized-number.pipe';\r\nimport { LocalizedTimeImpurePipe } from './pipes/localized-time-impure.pipe';\r\nimport { LocalizedTimePipe } from './pipes/localized-time.pipe';\r\n\r\n/**\r\n * @deprecated Será removido na v20. Importe diretamente os standalones `LocalizedCurrencyPipe`,\r\n * `LocalizedDatePipe`, `LocalizedTimePipe`, `LocalizedNumberPipe`, `LocalizedCurrencyImpurePipe`,\r\n * `LocalizedDateImpurePipe`, `LocalizedTimeImpurePipe`, `LocalizedBignumberPipe` e\r\n * `LocalizedBignumberImpurePipe` (de `@seniorsistemas/angular-components/locale`) no lugar deste módulo.\r\n *\r\n * Substitua `LocaleModule.forRoot()` por `provideLocale()` (de `@seniorsistemas/angular-components/locale`).\r\n *\r\n * `LocaleModule.forChild()` não tem equivalente e pode ser removido.\r\n *\r\n * Migração automática (também executada pelo `ng update` na v20):\r\n * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`\r\n */\r\n@NgModule({\r\n imports: [\r\n LocalizedCurrencyPipe,\r\n LocalizedDatePipe,\r\n LocalizedTimePipe,\r\n LocalizedNumberPipe,\r\n LocalizedCurrencyImpurePipe,\r\n LocalizedDateImpurePipe,\r\n LocalizedTimeImpurePipe,\r\n LocalizedBignumberPipe,\r\n LocalizedBignumberImpurePipe,\r\n ],\r\n exports: [\r\n LocalizedCurrencyPipe,\r\n LocalizedDatePipe,\r\n LocalizedTimePipe,\r\n LocalizedNumberPipe,\r\n LocalizedCurrencyImpurePipe,\r\n LocalizedDateImpurePipe,\r\n LocalizedTimeImpurePipe,\r\n LocalizedBignumberPipe,\r\n LocalizedBignumberImpurePipe,\r\n ],\r\n})\r\nexport class LocaleModule {\r\n public static forRoot(): ModuleWithProviders<LocaleModule> {\r\n return {\r\n ngModule: LocaleModule,\r\n providers: [\r\n LocaleService,\r\n LocalizedCurrencyPipe,\r\n LocalizedDatePipe,\r\n LocalizedTimePipe,\r\n LocalizedNumberPipe,\r\n LocalizedCurrencyImpurePipe,\r\n LocalizedDateImpurePipe,\r\n LocalizedTimeImpurePipe,\r\n LocalizedBignumberPipe,\r\n LocalizedBignumberImpurePipe,\r\n ],\r\n };\r\n }\r\n\r\n public static forChild(): ModuleWithProviders<LocaleModule> {\r\n return {\r\n ngModule: LocaleModule,\r\n };\r\n }\r\n}\r\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { LocaleService } from './locale.service';\nimport { LocalizedBignumberImpurePipe } from './pipes/localized-bignumber-impure.pipe';\nimport { LocalizedBignumberPipe } from './pipes/localized-bignumber.pipe';\nimport { LocalizedCurrencyImpurePipe } from './pipes/localized-currency-impure.pipe';\nimport { LocalizedCurrencyPipe } from './pipes/localized-currency.pipe';\nimport { LocalizedDateImpurePipe } from './pipes/localized-date-impure.pipe';\nimport { LocalizedDatePipe } from './pipes/localized-date.pipe';\nimport { LocalizedNumberPipe } from './pipes/localized-number.pipe';\nimport { LocalizedTimeImpurePipe } from './pipes/localized-time-impure.pipe';\nimport { LocalizedTimePipe } from './pipes/localized-time.pipe';\n\n/**\n * Registra o `LocaleService` e os pipes de localização como providers, para que possam ser injetados\n * em classes (`inject(LocalizedDatePipe)`).\n *\n * Substitui `LocaleModule.forRoot()` e funciona em aplicações standalone (`app.config.ts`) e também\n * em `NgModule.providers`. Para usar os pipes nos templates, importe os pipes standalone diretamente.\n *\n * @example\n * ```typescript\n * export const appConfig: ApplicationConfig = {\n * providers: [provideLocale()],\n * };\n * ```\n *\n * @returns Providers de ambiente para o injetor raiz.\n */\nexport function provideLocale(): EnvironmentProviders {\n return makeEnvironmentProviders([\n LocaleService,\n LocalizedCurrencyPipe,\n LocalizedDatePipe,\n LocalizedTimePipe,\n LocalizedNumberPipe,\n LocalizedCurrencyImpurePipe,\n LocalizedDateImpurePipe,\n LocalizedTimeImpurePipe,\n LocalizedBignumberPipe,\n LocalizedBignumberImpurePipe,\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;MAaa,qBAAqB,CAAA;IACvB,UAAU,GAAI,IAAI,CAAC;IACnB,UAAU,GAAI,UAAU,CAAC;IACzB,cAAc,GAAI,CAAC,CAAC;IACpB,KAAK,GAAI,MAAM,CAAC;IAChB,KAAK,GAAI,QAAQ,CAAC;AAClB,IAAA,QAAQ,GAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC7F,IAAA,aAAa,GAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7E,IAAA,WAAW,GAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7D,eAAe,GAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAClH,UAAU,GAAc,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE7J,IAAA,WAAA,CAAY,SAAiC,EAAE,EAAA;QAC3C,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QAC3D,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC;QACvE,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;KAC5C;AACJ;;MC9BY,mBAAmB,CAAA;IACrB,kBAAkB,GAAI,GAAG,CAAC;IAC1B,gBAAgB,GAAI,GAAG,CAAC;IACxB,cAAc,GAAI,IAAI,CAAC;AAE9B,IAAA,WAAA,CAAY,SAA+B,EAAE,EAAA;AACzC,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC/B;AACJ;;MCLY,aAAa,CAAA;IACtB,MAAM,GAAI,OAAO,CAAC;AAClB,IAAA,QAAQ,GAAG,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;AACzC,IAAA,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAEnC,IAAA,WAAA,CAAY,SAAyB,EAAE,EAAA;QACnC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;;KAE9C;AACJ;;ACND;;;;;;AAMG;MAEU,aAAa,CAAA;AACL,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1B,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAE/C,IAAA,MAAM,CAAU;AAChB,IAAA,aAAa,CAAiB;IACrB,oBAAoB,GAAG,2CAA2C,CAAC;IACnE,oBAAoB,GAAG,OAAO,CAAC;AAC/B,IAAA,sBAAsB,GAAG;QACtC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC1C,QAAA,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;KAC1F,CAAC;IAEF,GAAG,GAAA;QACC,OAAO,IAAI,CAAC,aAAa;AACrB,cAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC;AACxB,cAAE,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CACvB,GAAG,CACC,CAAC,aAA4B,MACxB,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CACvE,CACJ,CAAC;KACX;IAED,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,MAAM;AACd,cAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACjB,cAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CACzB,GAAG,CAAC,CAAC,QAAa,KAAI;gBAClB,MAAM,MAAM,GAAW,QAAQ,CAAC,MAAM,IAAY,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC;AACnF,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,OAAO,IAAI,CAAC,MAAM,CAAC;aACtB,CAAC,CACL,CAAC;KACX;AAED;;;AAGG;IACH,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAEO,WAAW,GAAA;AACf,QAAA,IAAI;AACA,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;SACrE;QAAC,OAAO,EAAE,EAAE;AACT,YAAA,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;AAC1E,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC7B;KACJ;AAED;;;;;AAKG;AACK,IAAA,uBAAuB,CAAC,UAAkB,EAAA;AAC9C,QAAA,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;AACtC,QAAA,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC1F,UAAU,GAAG,IAAI,CAAC;SACrB;AACD,QAAA,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC1F,UAAU,GAAG,IAAI,CAAC;SACrB;AACD,QAAA,OAAO,UAAU,CAAC;KACrB;IAEO,eAAe,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CACxB,SAAS,CAAC,CAAC,MAAc,KAAI;YACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;YAEpD,OAAO,IAAI,CAAC,IAAI;AACX,iBAAA,GAAG,CAAiB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,CAAA,EAAI,MAAM,CAAA,KAAA,CAAO,CAAC;iBAC/F,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,aAAa,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,GAAQ,KAAI;AACpB,YAAA,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAE,GAAG,CAAC,CAAC;AACzE,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC7B,CAAC,CACL,CAAC;KACL;IAED,oBAAoB,GAAA;QAChB,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;AACpD,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,qBAAqB,EAAE,CAAC;AACxB,YAAA,qBAAqB,EAAE,CAAC;AAC3B,SAAA,CAAC,CAAC;;AAGH,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,GAAG,CAAC;QAE5C,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,CAAC;KACxF;IAED,mBAAmB,GAAA;QACf,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;AACpD,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,qBAAqB,EAAE,CAAC;AACxB,YAAA,qBAAqB,EAAE,CAAC;AAC3B,SAAA,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,CAAC;KACzF;wGA5GQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA,CAAA;;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;SCVlB,kBAAkB,CAC9B,QAAa,EACb,OAA4C,EAC5C,QAAiB,EAAA;AAEjB,IAAA,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;IAC/F,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9F,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,WAAW,EAAE;AACd,QAAA,OAAO,EAAE,CAAC;KACb;IACD,MAAM,WAAW,GACb,WAAW;SACN,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;AACpC,SAAA,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACnB,SAAA,OAAO,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,IAAI,GAAG,CAAC;AACrE,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AAClE,IAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,gBAAgB,GAAG,WAAW,GAAG,WAAW,CAAC;AACpF,IAAA,MAAM,MAAM,GAAG,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;IACpF,OAAO,CAAA,EAAG,QAAQ,CAAG,EAAA,MAAM,GAAG,QAAQ,CAAA,EAAG,MAAM,CAAA,CAAE,CAAC;AACtD;;MCAa,sBAAsB,CAAA;AACvB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAEvC,SAAS,CAAC,KAAW,EAAE,OAAuC,EAAA;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;KAC7F;IAEO,WAAW,CAAC,KAAU,EAAE,OAAuC,EAAA;AACnE,QAAA,IAAI,OAAO,EAAE,UAAU,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,CAAC,CAAC;AACpD,QAAA,IAAI,OAAO,EAAE,WAAW,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;AAAE,YAAA,OAAO,CAAC,CAAC;AACvF,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,SAAS,CAAC,KAAW,EAAE,OAAuC,EAAA;AAClE,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,YAAY,KAAI;AACjB,YAAA,MAAM,OAAO,GAAwC;gBACjD,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,EAAE,cAAc,IAAI,IAAI;gBACvE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,EAAE,kBAAkB,IAAI,GAAG;gBAClG,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,IAAI,YAAY,EAAE,MAAM,EAAE,gBAAgB,IAAI,GAAG;AAC5F,gBAAA,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAC1B,gBAAA,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE;AAC7B,gBAAA,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,IAAI;aAChD,CAAC;YACF,MAAM,QAAQ,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YAC/C,OAAO,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SACvD,CAAC,CACL,CAAC;KACL;wGA7BQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACtBK,MAAO,4BAA6B,SAAQ,sBAAsB,CAAA;IACpD,SAAS,CAAC,KAAW,EAAE,OAAuC,EAAA;QAC1E,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAC1C;wGAHQ,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,0BAA0B;AAChC,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACEK,MAAO,4BAA6B,SAAQ,mBAAmB,CAAA;IAC1D,KAAK,GAAG,CAAC,CAAC;AAEjB,IAAA,WAAA,CAAY,SAAwC,EAAE,EAAA;QAClD,KAAK,CAAC,MAAM,CAAC,CAAC;KACjB;AACJ,CAAA;AAED;;AAEG;MAKU,qBAAqB,CAAA;AACtB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAEvC,SAAS,CAAC,KAAW,EAAE,OAAsC,EAAA;QAChE,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,GAAG,IAAI,4BAA4B,EAAE,CAAC;SAChD;QACD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;KAC7F;IAEO,SAAS,CAAC,KAAU,EAAE,OAAqC,EAAA;AAC/D,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,YAAY,KAAI;YACjB,MAAM,MAAM,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;YACtD,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;YAE/E,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,CAAE,CAAA,CAAC,CAAC;YACpD,MAAM,WAAW,GACb,WAAW;iBACN,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;AACpC,iBAAA,OAAO,CAAC,MAAM,EAAE,CAAA,CAAE,CAAC;AACnB,iBAAA,OAAO,CAAC,uBAAuB,EAAE,kBAAmB,CAAC,IAAI,GAAG,CAAC;AACtE,YAAA,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AAClE,YAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,gBAAgB,GAAG,WAAW,GAAG,WAAW,CAAC;AACpF,YAAA,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACpC,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;AAC9D,YAAA,OAAO,GAAG,QAAQ,CAAA,EAAG,cAAc,CAAG,EAAA,QAAQ,EAAE,CAAC;SACpD,CAAC,CACL,CAAC;KACL;wGA9BQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACpBD;;AAEG;AAMG,MAAO,2BAA4B,SAAQ,qBAAqB,CAAA;AAClD,IAAA,SAAS,CACrB,KAAW,EACX,OAAwC,GAAA,IAAI,4BAA4B,EAAE,EAAA;QAE1E,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAC1C;wGANQ,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;MCAY,iBAAiB,CAAA;AAClB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAEvC,IAAA,SAAS,CAAC,KAAU,EAAE,MAAA,GAAiB,OAAO,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KACnG;wGALQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACFK,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;wGAAjD,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,qBAAqB;AAC3B,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACFD;;AAEG;MAKU,mBAAmB,CAAA;AACpB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAE9C,SAAS,CAAC,KAAsB,EAAE,qBAA8B,EAAA;AAC5D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAC5C,GAAG,CAAC,CAAC,MAAc,KAAI;AACnB,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAEnC,YAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC;gBAAE,OAAO;AAE1C,YAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;gBACjC,qBAAqB,EAAE,qBAAqB,IAAI,CAAC;aACpD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5B,CAAC,CACL,CAAC;KACL;wGAfQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;MCDY,iBAAiB,CAAA;AAClB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAEvC,IAAA,SAAS,CAAC,KAAU,EAAE,MAAA,GAAiB,KAAK,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KAC/G;wGALQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACDK,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;wGAAjD,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,qBAAqB;AAC3B,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACMD;;;;;;;;;;;;AAYG;MAyBU,YAAY,CAAA;AACd,IAAA,OAAO,OAAO,GAAA;QACjB,OAAO;AACH,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE;gBACP,aAAa;gBACb,qBAAqB;gBACrB,iBAAiB;gBACjB,iBAAiB;gBACjB,mBAAmB;gBACnB,2BAA2B;gBAC3B,uBAAuB;gBACvB,uBAAuB;gBACvB,sBAAsB;gBACtB,4BAA4B;AAC/B,aAAA;SACJ,CAAC;KACL;AAEM,IAAA,OAAO,QAAQ,GAAA;QAClB,OAAO;AACH,YAAA,QAAQ,EAAE,YAAY;SACzB,CAAC;KACL;wGAvBQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAtBjB,qBAAqB;YACrB,iBAAiB;YACjB,iBAAiB;YACjB,mBAAmB;YACnB,2BAA2B;YAC3B,uBAAuB;YACvB,uBAAuB;YACvB,sBAAsB;AACtB,YAAA,4BAA4B,aAG5B,qBAAqB;YACrB,iBAAiB;YACjB,iBAAiB;YACjB,mBAAmB;YACnB,2BAA2B;YAC3B,uBAAuB;YACvB,uBAAuB;YACvB,sBAAsB;YACtB,4BAA4B,CAAA,EAAA,CAAA,CAAA;yGAGvB,YAAY,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAxBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,qBAAqB;wBACrB,iBAAiB;wBACjB,iBAAiB;wBACjB,mBAAmB;wBACnB,2BAA2B;wBAC3B,uBAAuB;wBACvB,uBAAuB;wBACvB,sBAAsB;wBACtB,4BAA4B;AAC/B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,qBAAqB;wBACrB,iBAAiB;wBACjB,iBAAiB;wBACjB,mBAAmB;wBACnB,2BAA2B;wBAC3B,uBAAuB;wBACvB,uBAAuB;wBACvB,sBAAsB;wBACtB,4BAA4B;AAC/B,qBAAA;AACJ,iBAAA,CAAA;;;ACpCD;;;;;;;;;;;;;;;AAeG;SACa,aAAa,GAAA;AACzB,IAAA,OAAO,wBAAwB,CAAC;QAC5B,aAAa;QACb,qBAAqB;QACrB,iBAAiB;QACjB,iBAAiB;QACjB,mBAAmB;QACnB,2BAA2B;QAC3B,uBAAuB;QACvB,uBAAuB;QACvB,sBAAsB;QACtB,4BAA4B;AAC/B,KAAA,CAAC,CAAC;AACP;;AC1CA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-locale.mjs","sources":["../../projects/angular-components/locale/src/lib/locale/options/calendar.ts","../../projects/angular-components/locale/src/lib/locale/options/number.ts","../../projects/angular-components/locale/src/lib/locale/options/index.ts","../../projects/angular-components/locale/src/lib/locale/options/locale-presets.ts","../../projects/angular-components/locale/src/lib/locale/locale.service.ts","../../projects/angular-components/locale/src/lib/locale/apply-localized-mask.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-bignumber.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-bignumber-impure.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-currency.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-currency-impure.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-date.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-date-impure.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-number.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-time.pipe.ts","../../projects/angular-components/locale/src/lib/locale/pipes/localized-time-impure.pipe.ts","../../projects/angular-components/locale/src/lib/locale/locale.module.ts","../../projects/angular-components/locale/src/lib/locale/provide-locale.ts","../../projects/angular-components/locale/src/seniorsistemas-angular-components-locale.ts"],"sourcesContent":["export interface ICalendarLocaleOptions {\n hourFormat?: string;\n dateFormat?: string;\n firstDayOfWeek?: number;\n today?: string;\n clear?: string;\n dayNames?: string[];\n dayNamesShort?: string[];\n dayNamesMin?: string[];\n monthNamesShort?: string[];\n monthNames?: string[];\n}\n\nexport class CalendarLocaleOptions implements ICalendarLocaleOptions {\n public hourFormat? = '24';\n public dateFormat? = 'dd/mm/yy';\n public firstDayOfWeek? = 0;\n public today? = 'Hoje';\n public clear? = 'Limpar';\n public dayNames?: string[] = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'];\n public dayNamesShort?: string[] = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'];\n public dayNamesMin?: string[] = ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'];\n public monthNamesShort?: string[] = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'];\n public monthNames?: string[] = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];\n\n constructor(config: ICalendarLocaleOptions = {}) {\n this.clear = config?.clear ?? this.clear;\n this.dateFormat = config?.dateFormat ?? this.dateFormat;\n this.dayNames = config?.dayNames ?? this.dayNames;\n this.dayNamesMin = config?.dayNamesMin ?? this.dayNamesMin;\n this.firstDayOfWeek = config?.firstDayOfWeek ?? this.firstDayOfWeek;\n this.hourFormat = config?.hourFormat ?? this.hourFormat;\n this.monthNames = config?.monthNames ?? this.monthNames;\n this.monthNamesShort = config?.monthNamesShort ?? this.monthNamesShort;\n this.today = config?.today ?? this.today;\n }\n}\n","export interface INumberLocaleOptions {\n thousandsSeparator?: string;\n decimalSeparator?: string;\n currencySymbol?: string;\n}\n\nexport class NumberLocaleOptions implements INumberLocaleOptions {\n public thousandsSeparator? = \".\";\n public decimalSeparator? = \",\";\n public currencySymbol? = \"R$\";\n\n constructor(config: INumberLocaleOptions = {}) {\n Object.assign(this, config);\n }\n}\n","import { CalendarLocaleOptions } from './calendar';\nimport { NumberLocaleOptions } from './number';\n\nexport interface ILocaleOptions {\n locale?: string;\n calendar?: CalendarLocaleOptions;\n number?: NumberLocaleOptions;\n}\n\nexport class LocaleOptions implements ILocaleOptions {\n locale? = 'pt-BR';\n calendar = new CalendarLocaleOptions({});\n number = new NumberLocaleOptions();\n\n constructor(config: ILocaleOptions = {}) {\n this.calendar = config.calendar ?? this.calendar;\n this.number = config.number ?? this.number;\n this.locale = config.locale ?? this.locale;\n // Object.keys(config).forEach(key => (this[key] = config[key] || this[key]));\n }\n}\n\nexport * from './calendar';\nexport * from './number';\n\n","import { NumberLocaleOptions } from './number';\nimport { ILocaleOptions, LocaleOptions } from './index';\n\nconst PT_BR_PRESET: ILocaleOptions = {\n calendar: {\n hourFormat: '24',\n dateFormat: 'dd/mm/yy',\n firstDayOfWeek: 0,\n dayNames: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],\n dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],\n dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],\n monthNames: [\n 'Janeiro',\n 'Fevereiro',\n 'Março',\n 'Abril',\n 'Maio',\n 'Junho',\n 'Julho',\n 'Agosto',\n 'Setembro',\n 'Outubro',\n 'Novembro',\n 'Dezembro',\n ],\n monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n today: 'Hoje',\n clear: 'Limpar',\n },\n number: {\n currencySymbol: 'R$',\n thousandsSeparator: '.',\n decimalSeparator: ',',\n },\n};\n\nconst ES_PRESET: ILocaleOptions = {\n calendar: {\n hourFormat: '24',\n dateFormat: 'dd/mm/yy',\n firstDayOfWeek: 0,\n dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],\n dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'],\n dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\n monthNames: [\n 'Enero',\n 'Febrero',\n 'Marzo',\n 'Abril',\n 'Mayo',\n 'Junio',\n 'Julio',\n 'Agosto',\n 'Septiembre',\n 'Octubre',\n 'Noviembre',\n 'Diciembre',\n ],\n monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],\n today: 'Hoy',\n clear: 'Limpiar',\n },\n number: {\n currencySymbol: '€',\n thousandsSeparator: '.',\n decimalSeparator: ',',\n },\n};\n\nconst EN_US_PRESET: ILocaleOptions = {\n calendar: {\n hourFormat: '12',\n dateFormat: 'mm/dd/yy',\n firstDayOfWeek: 0,\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n today: 'Today',\n clear: 'Clear',\n },\n number: {\n currencySymbol: '$',\n thousandsSeparator: ',',\n decimalSeparator: '.',\n },\n};\n\n/**\n * @description Configurações de locale embarcadas na biblioteca. Mesmo conteúdo publicado\n * anteriormente em `cdn.senior.com.br/primeng/locales/3.0.0`.\n */\nexport const LOCALE_PRESETS: Readonly<Record<string, ILocaleOptions>> = {\n 'pt-BR': PT_BR_PRESET,\n 'es-ES': ES_PRESET,\n 'es-419': ES_PRESET,\n 'en-US': EN_US_PRESET,\n};\n\n/** Preset usado para locales sem preset exato, a partir do idioma base. */\nconst BASE_LANGUAGE_PRESETS: Readonly<Record<string, ILocaleOptions>> = {\n pt: PT_BR_PRESET,\n es: ES_PRESET,\n en: EN_US_PRESET,\n};\n\n/**\n * @description Separador decimal do locale, obtido via `Intl.NumberFormat`.\n */\nexport function getLocaleDecimalSeparator(locale?: string): string | undefined {\n const numberFormat = new Intl.NumberFormat(locale, {\n style: 'decimal',\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n });\n\n return numberFormat.formatToParts(1.2).find((part) => part.type === 'decimal')?.value;\n}\n\n/**\n * @description Separador de milhar do locale, obtido via `Intl.NumberFormat`.\n */\nexport function getLocaleGroupingSeparator(locale?: string): string | undefined {\n // The default groupingSeparator for 'fr' is the character code 8239. We need it to be the regular space.\n if (locale?.includes('fr')) return ' ';\n\n const numberFormat = new Intl.NumberFormat(locale, {\n style: 'decimal',\n useGrouping: true,\n minimumFractionDigits: 5,\n maximumFractionDigits: 5,\n });\n\n return numberFormat.formatToParts(1000).find((part) => part.type === 'group')?.value;\n}\n\n/**\n * @description Formato de data do locale na convenção usada pelos presets (`dd/mm/yy`, onde `yy` é o ano com 4 dígitos).\n */\nfunction getLocaleDateFormat(locale: string): string {\n const tokens: Partial<Record<Intl.DateTimeFormatPartTypes, string>> = { day: 'dd', month: 'mm', year: 'yy' };\n\n return new Intl.DateTimeFormat(locale, { day: '2-digit', month: '2-digit', year: 'numeric' })\n .formatToParts(new Date(2000, 0, 1))\n .map((part) => tokens[part.type] ?? part.value)\n .join('');\n}\n\nfunction getLocaleHourFormat(locale: string): string {\n const { hourCycle, hour12 } = new Intl.DateTimeFormat(locale, { hour: 'numeric' }).resolvedOptions();\n const is12h = hourCycle ? hourCycle === 'h11' || hourCycle === 'h12' : !!hour12;\n\n return is12h ? '12' : '24';\n}\n\nfunction findPreset(locale: string, presets: Readonly<Record<string, ILocaleOptions>>): ILocaleOptions | undefined {\n const key = Object.keys(presets).find((presetKey) => presetKey.toLowerCase() === locale.toLowerCase());\n return key ? presets[key] : undefined;\n}\n\nfunction clonePreset(preset: ILocaleOptions, locale: string): LocaleOptions {\n return new LocaleOptions({\n locale,\n calendar: structuredClone(preset.calendar),\n number: structuredClone(preset.number),\n });\n}\n\n/**\n * @description Monta as opções de locale sem acesso à rede.\n * Locales com preset exato (`pt-BR`, `es-ES`, `es-419`, `en-US`) retornam o preset.\n * Os demais usam os textos do preset do idioma base (ou pt-BR), com separadores e formatos\n * de data/hora derivados via `Intl`. O símbolo de moeda segue o padrão `R$`, pois não é\n * possível inferir a moeda a partir do idioma.\n */\nexport function buildLocaleOptions(locale: string): LocaleOptions {\n const exactPreset = findPreset(locale, LOCALE_PRESETS);\n if (exactPreset) {\n return clonePreset(exactPreset, locale);\n }\n\n const basePreset = findPreset(locale.split('-')[0], BASE_LANGUAGE_PRESETS) ?? PT_BR_PRESET;\n\n try {\n return new LocaleOptions({\n locale,\n calendar: {\n ...structuredClone(basePreset.calendar),\n dateFormat: getLocaleDateFormat(locale),\n hourFormat: getLocaleHourFormat(locale),\n },\n number: new NumberLocaleOptions({\n decimalSeparator: getLocaleDecimalSeparator(locale) ?? ',',\n thousandsSeparator: getLocaleGroupingSeparator(locale) ?? '',\n }),\n });\n } catch {\n // Locale inválido para o Intl (ex.: 'pt_BR').\n return clonePreset(PT_BR_PRESET, locale);\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { user } from '@seniorsistemas/senior-platform-data';\nimport moment from 'moment';\nimport { from, Observable, of } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { CookieService } from 'ngx-cookie-service';\n\nimport { LocaleOptions } from './options/index';\nimport { buildLocaleOptions, getLocaleDecimalSeparator, getLocaleGroupingSeparator } from './options/locale-presets';\n\nimport 'moment/locale/es';\nimport 'moment/locale/pt-br';\n\n/**\n * @description Serviço de localização que obtém e armazena o locale do usuário\n * a partir da plataforma Senior. Fornece separadores decimais e de milhar,\n * configurações de calendário e opções de formato PrimeNG com base no locale ativo.\n *\n * @category Locale\n */\n@Injectable({ providedIn: 'root' })\nexport class LocaleService {\n private readonly cookieService = inject(CookieService);\n\n private locale?: string;\n private localeOptions?: LocaleOptions;\n private readonly VALID_MOMENT_LANGUAGES = {\n spanish: ['es-do', 'es-mx', 'es-us', 'es'],\n english: ['en', 'en-au', 'en-ca', 'en-gb', 'en-ie', 'en-il', 'en-in', 'en-nz', 'en-sg'],\n };\n\n get(): Observable<LocaleOptions> {\n return this.localeOptions\n ? of(this.localeOptions)\n : this.getLocaleConfig().pipe(\n tap(\n (localeOptions: LocaleOptions) =>\n (this.localeOptions = { ...localeOptions, locale: this.locale }),\n ),\n );\n }\n\n getLocale(): Observable<string> {\n return this.locale\n ? of(this.locale)\n : from(this.getUserData()).pipe(\n map((userData: any) => {\n const locale = <string>userData.locale || <string>userData.tenantLocale || 'pt-BR';\n this.locale = locale;\n return this.locale;\n }),\n );\n }\n\n /**\n * Returns an object with the locale options based on the user's locale(platform locale).\n * @return The locale options object.\n */\n getLocaleOptions(): LocaleOptions | undefined {\n return this.localeOptions;\n }\n\n private getUserData() {\n try {\n return of(JSON.parse(this.cookieService.get('com.senior.token')));\n } catch (ex) {\n console.warn('Unable to obtain user locale from cookie, calling getUser');\n return user.getUserData();\n }\n }\n\n /**\n * Set valid locale for moment js locale based on user current locale.\n * Sometimes the locale from user not exists in locale of moment, for example, is valid user with language 'es-CO' but for the momentjs the locale 'es-CO' not exist, so with this function will be applied the 'es' locale.\n * @param userLocale\n * @returns valid locale based in user locale.\n */\n private parseUserLocaleToMoment(userLocale: string): string {\n userLocale = userLocale.toLowerCase();\n if (userLocale.startsWith('es') && !this.VALID_MOMENT_LANGUAGES.spanish.includes(userLocale)) {\n userLocale = 'es';\n }\n if (userLocale.startsWith('en') && !this.VALID_MOMENT_LANGUAGES.english.includes(userLocale)) {\n userLocale = 'en';\n }\n return userLocale;\n }\n\n private getLocaleConfig(): Observable<LocaleOptions> {\n return this.getLocale().pipe(\n map((locale: string) => {\n moment.locale(this.parseUserLocaleToMoment(locale));\n return buildLocaleOptions(locale);\n }),\n );\n }\n\n getGroupingSeparator(): string | undefined {\n return getLocaleGroupingSeparator(this.locale);\n }\n\n getDecimalSeparator(): string | undefined {\n return getLocaleDecimalSeparator(this.locale);\n }\n}\n\n","import BigNumber from 'bignumber.js';\n\nexport interface LocalizedBignumberOptions {\n decimalSeparator?: string;\n thousandsSeparator?: string;\n scale?: number;\n prefix?: string;\n suffix?: string;\n allowNegative?: boolean;\n}\n\nexport function applyLocalizedMask(\n rawValue: any,\n options: Required<LocalizedBignumberOptions>,\n isNumber: boolean,\n): string {\n const { allowNegative, decimalSeparator, scale, prefix, suffix, thousandsSeparator } = options;\n const value = isNumber ? new BigNumber(rawValue).toFixed(scale).toString() : String(rawValue);\n const onlyNumbers = value.replace(/\\D/g, '');\n if (!onlyNumbers) {\n return '';\n }\n const integerPart =\n onlyNumbers\n .slice(0, onlyNumbers.length - scale)\n .replace(/^0*/g, '')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator) || '0';\n const decimalPart = onlyNumbers.slice(onlyNumbers.length - scale);\n const newValue = scale ? integerPart + decimalSeparator + decimalPart : integerPart;\n const isZero = !integerPart && !decimalPart;\n const operator = String(value).includes('-') && allowNegative && !isZero ? '-' : '';\n return `${operator}${prefix}${newValue}${suffix}`;\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { LocaleService } from '../locale.service';\nimport { map } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport BigNumber from 'bignumber.js';\nimport { applyLocalizedMask, LocalizedBignumberOptions } from '../apply-localized-mask';\n\nexport type { LocalizedBignumberOptions };\n\n/**\n * Opções do pipe `localizedBignumber`: as da máscara mais as de compatibilidade com os pipes depreciados\n * `localizedNumber` e `localizedCurrency`, que formatavam valores vazios como `0`.\n */\nexport interface LocalizedBignumberPipeOptions extends LocalizedBignumberOptions {\n /**\n * Quando `true`, uma string vazia (ou só com espaços) é formatada como `0`, em vez de ficar vazia.\n * É o comportamento dos pipes depreciados `localizedNumber` e `localizedCurrency` (`Number('')` é `0`).\n * @default false\n */\n emptyAsZero?: boolean;\n /**\n * Quando `true`, `null` é formatado como `0`, em vez de ser devolvido como está.\n * É o comportamento do pipe depreciado `localizedNumber` (`Number(null)` é `0`). `undefined` nunca é convertido.\n * @default false\n */\n nullAsZero?: boolean;\n}\n\n@Pipe({\n name: 'localizedBignumber',\n standalone: true,\n})\nexport class LocalizedBignumberPipe implements PipeTransform {\n private localeService = inject(LocaleService);\n\n public transform(value?: any, options?: LocalizedBignumberPipeOptions): any {\n const input = this.coerceEmpty(value, options);\n return input !== undefined && input !== null ? this.applyMask(input, options) : of(input);\n }\n\n private coerceEmpty(value: any, options?: LocalizedBignumberPipeOptions): any {\n if (options?.nullAsZero && value === null) return 0;\n if (options?.emptyAsZero && typeof value === 'string' && value.trim() === '') return 0;\n return value;\n }\n\n private applyMask(value?: any, options?: LocalizedBignumberPipeOptions) {\n return this.localeService.get().pipe(\n map((localeConfig) => {\n const configs: Required<LocalizedBignumberOptions> = {\n prefix: options?.prefix ?? localeConfig?.number?.currencySymbol ?? 'R$',\n thousandsSeparator: options?.thousandsSeparator ?? localeConfig?.number?.thousandsSeparator ?? '.',\n decimalSeparator: options?.decimalSeparator ?? localeConfig?.number?.decimalSeparator ?? ',',\n scale: options?.scale ?? 2,\n suffix: options?.suffix ?? '',\n allowNegative: options?.allowNegative ?? true,\n };\n const isNumber = !new BigNumber(value).isNaN();\n return applyLocalizedMask(value, configs, isNumber);\n }),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { LocalizedBignumberPipe, LocalizedBignumberPipeOptions } from './localized-bignumber.pipe';\n\n@Pipe({\n name: 'localizedBignumberImpure',\n pure: false,\n standalone: true,\n})\nexport class LocalizedBignumberImpurePipe extends LocalizedBignumberPipe implements PipeTransform {\n public override transform(value?: any, options?: LocalizedBignumberPipeOptions): any {\n return super.transform(value, options);\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { LocaleService } from '../locale.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { of } from 'rxjs';\r\nimport { INumberLocaleOptions, NumberLocaleOptions } from '../options';\r\n\r\nexport interface ILocalizedCurrencyPipeOptions extends INumberLocaleOptions {\r\n scale?: number;\r\n}\r\n\r\nexport class LocalizedCurrencyPipeOptions extends NumberLocaleOptions implements ILocalizedCurrencyPipeOptions {\r\n public scale = 2;\r\n\r\n constructor(config: ILocalizedCurrencyPipeOptions = {}) {\r\n super(config);\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated Should use localizedBignumberPipe instead\r\n */\r\n@Pipe({\r\n name: 'localizedCurrency',\r\n standalone: true,\r\n})\r\nexport class LocalizedCurrencyPipe implements PipeTransform {\r\n private localeService = inject(LocaleService);\r\n\r\n public transform(value?: any, options?: LocalizedCurrencyPipeOptions): any {\r\n if (!options) {\r\n options = new LocalizedCurrencyPipeOptions();\r\n }\r\n return value !== undefined && value !== null ? this.applyMask(value, options) : of(value);\r\n }\r\n\r\n private applyMask(value: any, options: LocalizedCurrencyPipeOptions) {\r\n return this.localeService.get().pipe(\r\n map((localeConfig) => {\r\n const config = { ...localeConfig.number, ...options };\r\n const { scale, currencySymbol, thousandsSeparator, decimalSeparator } = config;\r\n\r\n const rawValue = Number(value).toFixed(scale);\r\n const onlyNumbers = rawValue.replace(/[^0-9]/g, ``);\r\n const integerPart =\r\n onlyNumbers\r\n .slice(0, onlyNumbers.length - scale)\r\n .replace(/^0*/g, ``)\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator!) || `0`;\r\n const decimalPart = onlyNumbers.slice(onlyNumbers.length - scale);\r\n const newValue = scale ? integerPart + decimalSeparator + decimalPart : integerPart;\r\n const isZero = !Number(onlyNumbers);\r\n const operator = rawValue.includes('-') && !isZero ? '-' : '';\r\n return `${operator}${currencySymbol}${newValue}`;\r\n }),\r\n );\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { LocalizedCurrencyPipe, LocalizedCurrencyPipeOptions } from './localized-currency.pipe';\r\n\r\n/**\r\n * @deprecated Should use localizedBignumberPipe instead\r\n */\r\n@Pipe({\r\n name: 'localizedCurrencyImpure',\r\n pure: false,\r\n standalone: true,\r\n})\r\nexport class LocalizedCurrencyImpurePipe extends LocalizedCurrencyPipe implements PipeTransform {\r\n public override transform(\r\n value?: any,\r\n options: LocalizedCurrencyPipeOptions = new LocalizedCurrencyPipeOptions(),\r\n ): any {\r\n return super.transform(value, options);\r\n }\r\n}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\n\r\nimport moment from 'moment';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { LocaleService } from '../locale.service';\r\n\r\n@Pipe({\r\n name: 'localizedDate',\r\n standalone: true,\r\n})\r\nexport class LocalizedDatePipe implements PipeTransform {\r\n private localeService = inject(LocaleService);\r\n\r\n public transform(value: any, format: string = 'L LTS'): any {\r\n return this.localeService.get().pipe(map(() => (value ? moment(value).format(format) : value)));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizedDatePipe } from './localized-date.pipe';\r\n\r\n@Pipe({\r\n name: 'localizedDateImpure',\r\n pure: false,\r\n standalone: true,\r\n})\r\nexport class LocalizedDateImpurePipe extends LocalizedDatePipe implements PipeTransform {}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { from } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { LocaleService } from '../locale.service';\r\n\r\n/**\r\n * @deprecated Should use localizedBignumberPipe instead\r\n */\r\n@Pipe({\r\n name: 'localizedNumber',\r\n standalone: true,\r\n})\r\nexport class LocalizedNumberPipe implements PipeTransform {\r\n private localeService = inject(LocaleService);\r\n\r\n transform(value: number | string, minimumFractionDigits?: number) {\r\n return from(this.localeService.getLocale()).pipe(\r\n map((locale: string) => {\r\n const numericValue = Number(value);\r\n\r\n if (!value && isNaN(numericValue)) return;\r\n\r\n return new Intl.NumberFormat(locale, {\r\n minimumFractionDigits: minimumFractionDigits || 0,\r\n }).format(Number(value));\r\n }),\r\n );\r\n }\r\n}\r\n\r\nexport interface Locale {\r\n localidade?: string;\r\n tenantLocale?: string;\r\n}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { LocaleService } from '../locale.service';\r\n\r\n@Pipe({\r\n name: 'localizedTime',\r\n standalone: true,\r\n})\r\nexport class LocalizedTimePipe implements PipeTransform {\r\n private localeService = inject(LocaleService);\r\n\r\n public transform(value: any, format: string = 'LTS'): any {\r\n return this.localeService.get().pipe(map(() => (value ? moment(value, 'HH:mm:ss').format(format) : value)));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizedTimePipe } from './localized-time.pipe';\r\n\r\n@Pipe({\r\n name: 'localizedTimeImpure',\r\n pure: false,\r\n standalone: true,\r\n})\r\nexport class LocalizedTimeImpurePipe extends LocalizedTimePipe implements PipeTransform {}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { LocaleService } from './locale.service';\r\nimport { LocalizedBignumberImpurePipe } from './pipes/localized-bignumber-impure.pipe';\r\nimport { LocalizedBignumberPipe } from './pipes/localized-bignumber.pipe';\r\nimport { LocalizedCurrencyImpurePipe } from './pipes/localized-currency-impure.pipe';\r\nimport { LocalizedCurrencyPipe } from './pipes/localized-currency.pipe';\r\nimport { LocalizedDateImpurePipe } from './pipes/localized-date-impure.pipe';\r\nimport { LocalizedDatePipe } from './pipes/localized-date.pipe';\r\nimport { LocalizedNumberPipe } from './pipes/localized-number.pipe';\r\nimport { LocalizedTimeImpurePipe } from './pipes/localized-time-impure.pipe';\r\nimport { LocalizedTimePipe } from './pipes/localized-time.pipe';\r\n\r\n/**\r\n * @deprecated Será removido na v20. Importe diretamente os standalones `LocalizedCurrencyPipe`,\r\n * `LocalizedDatePipe`, `LocalizedTimePipe`, `LocalizedNumberPipe`, `LocalizedCurrencyImpurePipe`,\r\n * `LocalizedDateImpurePipe`, `LocalizedTimeImpurePipe`, `LocalizedBignumberPipe` e\r\n * `LocalizedBignumberImpurePipe` (de `@seniorsistemas/angular-components/locale`) no lugar deste módulo.\r\n *\r\n * Substitua `LocaleModule.forRoot()` por `provideLocale()` (de `@seniorsistemas/angular-components/locale`).\r\n *\r\n * `LocaleModule.forChild()` não tem equivalente e pode ser removido.\r\n *\r\n * Migração automática (também executada pelo `ng update` na v20):\r\n * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`\r\n */\r\n@NgModule({\r\n imports: [\r\n LocalizedCurrencyPipe,\r\n LocalizedDatePipe,\r\n LocalizedTimePipe,\r\n LocalizedNumberPipe,\r\n LocalizedCurrencyImpurePipe,\r\n LocalizedDateImpurePipe,\r\n LocalizedTimeImpurePipe,\r\n LocalizedBignumberPipe,\r\n LocalizedBignumberImpurePipe,\r\n ],\r\n exports: [\r\n LocalizedCurrencyPipe,\r\n LocalizedDatePipe,\r\n LocalizedTimePipe,\r\n LocalizedNumberPipe,\r\n LocalizedCurrencyImpurePipe,\r\n LocalizedDateImpurePipe,\r\n LocalizedTimeImpurePipe,\r\n LocalizedBignumberPipe,\r\n LocalizedBignumberImpurePipe,\r\n ],\r\n})\r\nexport class LocaleModule {\r\n public static forRoot(): ModuleWithProviders<LocaleModule> {\r\n return {\r\n ngModule: LocaleModule,\r\n providers: [\r\n LocaleService,\r\n LocalizedCurrencyPipe,\r\n LocalizedDatePipe,\r\n LocalizedTimePipe,\r\n LocalizedNumberPipe,\r\n LocalizedCurrencyImpurePipe,\r\n LocalizedDateImpurePipe,\r\n LocalizedTimeImpurePipe,\r\n LocalizedBignumberPipe,\r\n LocalizedBignumberImpurePipe,\r\n ],\r\n };\r\n }\r\n\r\n public static forChild(): ModuleWithProviders<LocaleModule> {\r\n return {\r\n ngModule: LocaleModule,\r\n };\r\n }\r\n}\r\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { LocaleService } from './locale.service';\nimport { LocalizedBignumberImpurePipe } from './pipes/localized-bignumber-impure.pipe';\nimport { LocalizedBignumberPipe } from './pipes/localized-bignumber.pipe';\nimport { LocalizedCurrencyImpurePipe } from './pipes/localized-currency-impure.pipe';\nimport { LocalizedCurrencyPipe } from './pipes/localized-currency.pipe';\nimport { LocalizedDateImpurePipe } from './pipes/localized-date-impure.pipe';\nimport { LocalizedDatePipe } from './pipes/localized-date.pipe';\nimport { LocalizedNumberPipe } from './pipes/localized-number.pipe';\nimport { LocalizedTimeImpurePipe } from './pipes/localized-time-impure.pipe';\nimport { LocalizedTimePipe } from './pipes/localized-time.pipe';\n\n/**\n * Registra o `LocaleService` e os pipes de localização como providers, para que possam ser injetados\n * em classes (`inject(LocalizedDatePipe)`).\n *\n * Substitui `LocaleModule.forRoot()` e funciona em aplicações standalone (`app.config.ts`) e também\n * em `NgModule.providers`. Para usar os pipes nos templates, importe os pipes standalone diretamente.\n *\n * @example\n * ```typescript\n * export const appConfig: ApplicationConfig = {\n * providers: [provideLocale()],\n * };\n * ```\n *\n * @returns Providers de ambiente para o injetor raiz.\n */\nexport function provideLocale(): EnvironmentProviders {\n return makeEnvironmentProviders([\n LocaleService,\n LocalizedCurrencyPipe,\n LocalizedDatePipe,\n LocalizedTimePipe,\n LocalizedNumberPipe,\n LocalizedCurrencyImpurePipe,\n LocalizedDateImpurePipe,\n LocalizedTimeImpurePipe,\n LocalizedBignumberPipe,\n LocalizedBignumberImpurePipe,\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -155,7 +155,7 @@ class PaginatorComponent {
|
|
|
155
155
|
this.requestedPage.set(pageIndex);
|
|
156
156
|
}
|
|
157
157
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
158
|
-
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" }] });
|
|
158
|
+
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" }] });
|
|
159
159
|
}
|
|
160
160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginatorComponent, decorators: [{
|
|
161
161
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-paginator.mjs","sources":["../../projects/angular-components/paginator/src/lib/paginator/paginator.component.ts","../../projects/angular-components/paginator/src/lib/paginator/paginator.component.html","../../projects/angular-components/paginator/src/seniorsistemas-angular-components-paginator.ts"],"sourcesContent":["import { Component, computed, effect, input, model, OnDestroy, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';\nimport { SelectComponent } from '@seniorsistemas/angular-components/select';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { PageChange, PaginatorInternalButton } from '../models/paginator.models';\n/**\n * @description Componente de paginação standalone que exibe botões de páginas,\n * seletor de itens por página e navegação para primeira/última página.\n * Emite `pageChange` a cada mudança de página ou tamanho de página.\n *\n * @example\n * ```html\n * <s-paginator\n * [totalRecords]=\"total\"\n * [(rows)]=\"tamanhoPagina\"\n * (pageChange)=\"onPaginaMudou($event)\" />\n * ```\n *\n * @category Structure\n */\n@Component({\n selector: 's-paginator',\n standalone: true,\n imports: [InteractiveContentDirective, SelectComponent, FormsModule, TranslateModule],\n templateUrl: './paginator.component.html',\n})\nexport class PaginatorComponent implements OnDestroy {\n /** @description Número total de registros. Campo obrigatório. */\n totalRecords = input.required<number>();\n /** @description Número de itens por página. Suporta two-way binding. @default 10 */\n rows = model(10);\n /** @description Opções do seletor de itens por página. @default [10, 20, 50, 100, 200] */\n rowsPerPageOptions = input<number[]>([10, 20, 50, 100, 200]);\n /** @description Emitido sempre que a página ou o número de itens por página muda. */\n pageChange = output<PageChange>();\n\n private readonly currentPageEffect = effect(() => {\n const totalPages = this.totalPages();\n const page = this.currentPage() - 1;\n this.pageChange.emit({\n page,\n pageCount: totalPages,\n rows: this.rows(),\n first: this.rows() * page,\n });\n });\n private readonly MAX_PAGE_BUTTONS = 5;\n private readonly hasPreviousPage = computed(() => {\n const previousPage = this.currentPage() - 1;\n return previousPage >= 1;\n });\n\n private readonly hasNextPage = computed(() => {\n const nextPage = this.currentPage() + 1;\n return nextPage <= this.totalPages();\n });\n\n private readonly requestedPage = signal(1);\n /** @description Página atual, sempre reajustada para o intervalo válido de `[1, totalPages]`. */\n protected readonly currentPage = computed(() => {\n const maxPage = Math.max(this.totalPages(), 1);\n return Math.min(Math.max(this.requestedPage(), 1), maxPage);\n });\n\n protected buttons = computed(() => {\n const navigationPageButtons: PaginatorInternalButton[] = [];\n const maxPageButtons = this.MAX_PAGE_BUTTONS;\n const currentPage = this.currentPage();\n const middle = Math.floor(maxPageButtons / 2);\n const _startPage = currentPage - middle;\n let startPage = _startPage < 1 ? 1 : _startPage;\n const _endPage = startPage + maxPageButtons - 1;\n const endPageIsMoreThanTotalPages = _endPage > this.totalPages();\n\n if (endPageIsMoreThanTotalPages) {\n const diff = _endPage - this.totalPages();\n const canModifyStartPage = startPage - diff >= 1;\n if (canModifyStartPage) {\n startPage = startPage - diff;\n }\n }\n const endPage = endPageIsMoreThanTotalPages ? this.totalPages() : _endPage;\n\n for (let i = startPage; i <= endPage; i++) {\n navigationPageButtons.push({\n clicked: (page) => this.goToPage(page.pageIndex as number),\n pageIndex: i,\n });\n }\n\n return [\n this.FIRST_PAGE_BUTTON,\n this.PREVIOUS_PAGE_BUTTON,\n ...navigationPageButtons,\n this.NEXT_PAGE_BUTTON,\n this.LAST_PAGE_BUTTON,\n ];\n });\n\n private readonly FIRST_PAGE_BUTTON: PaginatorInternalButton = {\n clicked: this.goFirstPage.bind(this),\n icon: 'fas fa-step-backward',\n ariaLabelKey: 'platform.angular_components.aria_first_page',\n validate: computed(() => {\n return !this.hasPreviousPage();\n }),\n };\n\n private readonly PREVIOUS_PAGE_BUTTON: PaginatorInternalButton = {\n clicked: this.goPreviousPage.bind(this),\n icon: 'fas fa-caret-left',\n ariaLabelKey: 'platform.angular_components.aria_previous_page',\n validate: computed(() => {\n return !this.hasPreviousPage();\n }),\n };\n\n private readonly LAST_PAGE_BUTTON: PaginatorInternalButton = {\n clicked: this.goLastPage.bind(this),\n icon: 'fas fa-step-forward',\n ariaLabelKey: 'platform.angular_components.aria_last_page',\n validate: computed(() => {\n return !this.hasNextPage();\n }),\n };\n\n private readonly NEXT_PAGE_BUTTON: PaginatorInternalButton = {\n clicked: this.goNextPage.bind(this),\n icon: 'fas fa-caret-right',\n ariaLabelKey: 'platform.angular_components.aria_next_page',\n validate: computed(() => {\n return !this.hasNextPage();\n }),\n };\n\n private totalPages = computed(() => {\n return Math.ceil(this.totalRecords() / this.rows());\n });\n\n public ngOnDestroy(): void {\n this.currentPageEffect.destroy();\n }\n\n protected rowsPerPageChange(): void {\n if (this.currentPage() !== 1) {\n this.goToPage(1);\n }\n }\n\n protected activatedButton(button: PaginatorInternalButton): void {\n button.clicked(button);\n }\n\n private goFirstPage(): void {\n this.goToPage(1);\n }\n\n private goNextPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n this.goToPage(this.currentPage() + 1);\n }\n\n private goPreviousPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n this.goToPage(this.currentPage() - 1);\n }\n\n private goLastPage(): void {\n this.goToPage(this.totalPages());\n }\n\n private goToPage(pageIndex: number): void {\n this.requestedPage.set(pageIndex);\n }\n}\n\n","<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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-paginator.mjs","sources":["../../projects/angular-components/paginator/src/lib/paginator/paginator.component.ts","../../projects/angular-components/paginator/src/lib/paginator/paginator.component.html","../../projects/angular-components/paginator/src/seniorsistemas-angular-components-paginator.ts"],"sourcesContent":["import { Component, computed, effect, input, model, OnDestroy, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';\nimport { SelectComponent } from '@seniorsistemas/angular-components/select';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { PageChange, PaginatorInternalButton } from '../models/paginator.models';\n/**\n * @description Componente de paginação standalone que exibe botões de páginas,\n * seletor de itens por página e navegação para primeira/última página.\n * Emite `pageChange` a cada mudança de página ou tamanho de página.\n *\n * @example\n * ```html\n * <s-paginator\n * [totalRecords]=\"total\"\n * [(rows)]=\"tamanhoPagina\"\n * (pageChange)=\"onPaginaMudou($event)\" />\n * ```\n *\n * @category Structure\n */\n@Component({\n selector: 's-paginator',\n standalone: true,\n imports: [InteractiveContentDirective, SelectComponent, FormsModule, TranslateModule],\n templateUrl: './paginator.component.html',\n})\nexport class PaginatorComponent implements OnDestroy {\n /** @description Número total de registros. Campo obrigatório. */\n totalRecords = input.required<number>();\n /** @description Número de itens por página. Suporta two-way binding. @default 10 */\n rows = model(10);\n /** @description Opções do seletor de itens por página. @default [10, 20, 50, 100, 200] */\n rowsPerPageOptions = input<number[]>([10, 20, 50, 100, 200]);\n /** @description Emitido sempre que a página ou o número de itens por página muda. */\n pageChange = output<PageChange>();\n\n private readonly currentPageEffect = effect(() => {\n const totalPages = this.totalPages();\n const page = this.currentPage() - 1;\n this.pageChange.emit({\n page,\n pageCount: totalPages,\n rows: this.rows(),\n first: this.rows() * page,\n });\n });\n private readonly MAX_PAGE_BUTTONS = 5;\n private readonly hasPreviousPage = computed(() => {\n const previousPage = this.currentPage() - 1;\n return previousPage >= 1;\n });\n\n private readonly hasNextPage = computed(() => {\n const nextPage = this.currentPage() + 1;\n return nextPage <= this.totalPages();\n });\n\n private readonly requestedPage = signal(1);\n /** @description Página atual, sempre reajustada para o intervalo válido de `[1, totalPages]`. */\n protected readonly currentPage = computed(() => {\n const maxPage = Math.max(this.totalPages(), 1);\n return Math.min(Math.max(this.requestedPage(), 1), maxPage);\n });\n\n protected buttons = computed(() => {\n const navigationPageButtons: PaginatorInternalButton[] = [];\n const maxPageButtons = this.MAX_PAGE_BUTTONS;\n const currentPage = this.currentPage();\n const middle = Math.floor(maxPageButtons / 2);\n const _startPage = currentPage - middle;\n let startPage = _startPage < 1 ? 1 : _startPage;\n const _endPage = startPage + maxPageButtons - 1;\n const endPageIsMoreThanTotalPages = _endPage > this.totalPages();\n\n if (endPageIsMoreThanTotalPages) {\n const diff = _endPage - this.totalPages();\n const canModifyStartPage = startPage - diff >= 1;\n if (canModifyStartPage) {\n startPage = startPage - diff;\n }\n }\n const endPage = endPageIsMoreThanTotalPages ? this.totalPages() : _endPage;\n\n for (let i = startPage; i <= endPage; i++) {\n navigationPageButtons.push({\n clicked: (page) => this.goToPage(page.pageIndex as number),\n pageIndex: i,\n });\n }\n\n return [\n this.FIRST_PAGE_BUTTON,\n this.PREVIOUS_PAGE_BUTTON,\n ...navigationPageButtons,\n this.NEXT_PAGE_BUTTON,\n this.LAST_PAGE_BUTTON,\n ];\n });\n\n private readonly FIRST_PAGE_BUTTON: PaginatorInternalButton = {\n clicked: this.goFirstPage.bind(this),\n icon: 'fas fa-step-backward',\n ariaLabelKey: 'platform.angular_components.aria_first_page',\n validate: computed(() => {\n return !this.hasPreviousPage();\n }),\n };\n\n private readonly PREVIOUS_PAGE_BUTTON: PaginatorInternalButton = {\n clicked: this.goPreviousPage.bind(this),\n icon: 'fas fa-caret-left',\n ariaLabelKey: 'platform.angular_components.aria_previous_page',\n validate: computed(() => {\n return !this.hasPreviousPage();\n }),\n };\n\n private readonly LAST_PAGE_BUTTON: PaginatorInternalButton = {\n clicked: this.goLastPage.bind(this),\n icon: 'fas fa-step-forward',\n ariaLabelKey: 'platform.angular_components.aria_last_page',\n validate: computed(() => {\n return !this.hasNextPage();\n }),\n };\n\n private readonly NEXT_PAGE_BUTTON: PaginatorInternalButton = {\n clicked: this.goNextPage.bind(this),\n icon: 'fas fa-caret-right',\n ariaLabelKey: 'platform.angular_components.aria_next_page',\n validate: computed(() => {\n return !this.hasNextPage();\n }),\n };\n\n private totalPages = computed(() => {\n return Math.ceil(this.totalRecords() / this.rows());\n });\n\n public ngOnDestroy(): void {\n this.currentPageEffect.destroy();\n }\n\n protected rowsPerPageChange(): void {\n if (this.currentPage() !== 1) {\n this.goToPage(1);\n }\n }\n\n protected activatedButton(button: PaginatorInternalButton): void {\n button.clicked(button);\n }\n\n private goFirstPage(): void {\n this.goToPage(1);\n }\n\n private goNextPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n this.goToPage(this.currentPage() + 1);\n }\n\n private goPreviousPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n this.goToPage(this.currentPage() - 1);\n }\n\n private goLastPage(): void {\n this.goToPage(this.totalPages());\n }\n\n private goToPage(pageIndex: number): void {\n this.requestedPage.set(pageIndex);\n }\n}\n\n","<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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|