{"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/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\n// /**\n//  * @deprecated\n//  */\n// export const DEFAULT_CALENDAR_LOCALE_OPTIONS = new CalendarLocaleOptions();\n\n// /**\n//  * @deprecated\n//  */\n// export const DEFAULT_NUMBER_LOCALE_OPTIONS = new NumberLocaleOptions();\n\n// /**\n//  * @deprecated\n//  */\n// export const DEFAULT_LOCALE_OPTIONS = new LocaleOptions();\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()\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@Pipe({\n    name: \"localizedBignumber\",\n})\nexport class LocalizedBignumberPipe implements PipeTransform {\n    private localeService = inject(LocaleService);\n\n\n    public transform(value?: any, options?: LocalizedBignumberOptions): any {\n        return value !== undefined && value !== null ? this.applyMask(value, options) : of(value);\n    }\n\n    private applyMask(value?: any, options?: LocalizedBignumberOptions) {\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 { LocalizedBignumberOptions, LocalizedBignumberPipe } from \"./localized-bignumber.pipe\";\n\n@Pipe({\n    name: \"localizedBignumberImpure\",\n    pure: false,\n})\nexport class LocalizedBignumberImpurePipe extends LocalizedBignumberPipe implements PipeTransform {\n    public override transform(value?: any, options?: LocalizedBignumberOptions): any {\n        return super.transform(value, options);\n    }\n}\n","import { Pipe, PipeTransform, inject } from \"@angular/core\";\nimport { LocaleService } from \"../locale.service\";\nimport { map } from \"rxjs/operators\";\nimport { of } from \"rxjs\";\nimport { INumberLocaleOptions, NumberLocaleOptions } from \"../options\";\n\nexport interface ILocalizedCurrencyPipeOptions extends INumberLocaleOptions {\n    scale?: number;\n}\n\nexport class LocalizedCurrencyPipeOptions extends NumberLocaleOptions implements ILocalizedCurrencyPipeOptions {\n    public scale = 2;\n\n    constructor(config: ILocalizedCurrencyPipeOptions = {}) {\n        super(config);\n    }\n}\n\n/**\n * @deprecated Should use localizedBignumberPipe instead\n */\n@Pipe({\n    name: \"localizedCurrency\",\n})\nexport class LocalizedCurrencyPipe implements PipeTransform {\n    private localeService = inject(LocaleService);\n\n\n    public transform(value?: any, options?: LocalizedCurrencyPipeOptions): any {\n        if (!options) {\n            options = new LocalizedCurrencyPipeOptions();\n        }\n        return value !== undefined && value !== null ? this.applyMask(value, options) : of(value);\n    }\n\n    private applyMask(value: any, options: LocalizedCurrencyPipeOptions) {\n        return this.localeService.get().pipe(\n            map(localeConfig => {\n                const config = { ...localeConfig.number, ...options };\n                const { scale, currencySymbol, thousandsSeparator, decimalSeparator } = config;\n\n                const rawValue = Number(value).toFixed(scale);\n                const onlyNumbers = rawValue.replace(/[^0-9]/g, ``);\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 = !Number(onlyNumbers);\n                const operator = rawValue.includes(\"-\") && !isZero ? \"-\" : \"\";\n                return `${operator}${currencySymbol}${newValue}`;\n            })\n        );\n    }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\nimport { LocalizedCurrencyPipe, LocalizedCurrencyPipeOptions } from \"./localized-currency.pipe\";\n\n/**\n * @deprecated Should use localizedBignumberPipe instead\n */\n@Pipe({\n    name: \"localizedCurrencyImpure\",\n    pure: false,\n})\nexport class LocalizedCurrencyImpurePipe extends LocalizedCurrencyPipe implements PipeTransform {\n    public override transform(value?: any, options: LocalizedCurrencyPipeOptions = new LocalizedCurrencyPipeOptions()): any {\n        return super.transform(value, options);\n    }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\n\nimport moment from 'moment';\nimport { map } from 'rxjs/operators';\n\nimport { LocaleService } from '../locale.service';\n\n@Pipe({\n    name: 'localizedDate',\n})\nexport class LocalizedDatePipe implements PipeTransform {\n    private localeService = inject(LocaleService);\n\n\n    public transform(value: any, format: string = 'L LTS'): any {\n        return this.localeService.get().pipe(map(() => (value ? moment(value).format(format) : value)));\n    }\n}\n\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { LocalizedDatePipe } from \"./localized-date.pipe\";\n\n@Pipe({\n    name: \"localizedDateImpure\",\n    pure: false,\n})\nexport class LocalizedDateImpurePipe extends LocalizedDatePipe implements PipeTransform {}\n","import { Pipe, PipeTransform, inject } from \"@angular/core\";\nimport { from } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { LocaleService } from \"../locale.service\";\n\n/**\n * @deprecated Should use localizedBignumberPipe instead\n */\n@Pipe({ name: \"localizedNumber\" })\nexport class LocalizedNumberPipe implements PipeTransform {\n    private localeService = inject(LocaleService);\n\n\n    transform(value: number | string, minimumFractionDigits?: number) {\n        return from(this.localeService.getLocale()).pipe(\n            map((locale: string) => {\n                const numericValue = Number(value);\n\n                if (!value && isNaN(numericValue)) return;\n\n                return new Intl.NumberFormat(locale, {\n                    minimumFractionDigits: minimumFractionDigits || 0,\n                }).format(Number(value));\n            })\n        );\n    }\n}\n\nexport interface Locale {\n    localidade?: string;\n    tenantLocale?: string;\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport moment from 'moment';\nimport { map } from 'rxjs/operators';\n\nimport { LocaleService } from '../locale.service';\n\n@Pipe({\n    name: 'localizedTime',\n})\nexport class LocalizedTimePipe implements PipeTransform {\n    private localeService = inject(LocaleService);\n\n\n    public transform(value: any, format: string = 'LTS'): any {\n        return this.localeService.get().pipe(map(() => (value ? moment(value, 'HH:mm:ss').format(format) : value)));\n    }\n}\n\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { LocalizedTimePipe } from \"./localized-time.pipe\";\n\n@Pipe({\n    name: \"localizedTimeImpure\",\n    pure: false,\n})\nexport class LocalizedTimeImpurePipe extends LocalizedTimePipe implements PipeTransform {}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } 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@NgModule({\n    imports: [CommonModule],\n    exports: [\n        LocalizedCurrencyPipe,\n        LocalizedDatePipe,\n        LocalizedTimePipe,\n        LocalizedNumberPipe,\n        LocalizedCurrencyImpurePipe,\n        LocalizedDateImpurePipe,\n        LocalizedTimeImpurePipe,\n        LocalizedBignumberPipe,\n        LocalizedBignumberImpurePipe,\n    ],\n    declarations: [\n        LocalizedCurrencyPipe,\n        LocalizedDatePipe,\n        LocalizedTimePipe,\n        LocalizedNumberPipe,\n        LocalizedCurrencyImpurePipe,\n        LocalizedDateImpurePipe,\n        LocalizedTimeImpurePipe,\n        LocalizedBignumberPipe,\n        LocalizedBignumberImpurePipe,\n    ],\n})\nexport class LocaleModule {\n    public static forRoot(): ModuleWithProviders<LocaleModule> {\n        return {\n            ngModule: LocaleModule,\n            providers: [\n                LocaleService,\n                LocalizedCurrencyPipe,\n                LocalizedDatePipe,\n                LocalizedTimePipe,\n                LocalizedNumberPipe,\n                LocalizedCurrencyImpurePipe,\n                LocalizedDateImpurePipe,\n                LocalizedTimeImpurePipe,\n                LocalizedBignumberPipe,\n                LocalizedBignumberImpurePipe,\n            ],\n        };\n    }\n\n    public static forChild(): ModuleWithProviders<LocaleModule> {\n        return {\n            ngModule: LocaleModule,\n        };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}