{"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';\r\nimport { LocaleService } from '../locale.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { of } from 'rxjs';\r\nimport BigNumber from 'bignumber.js';\r\nimport { applyLocalizedMask, LocalizedBignumberOptions } from '../apply-localized-mask';\r\n\r\nexport type { LocalizedBignumberOptions };\r\n\r\n@Pipe({\r\n    name: 'localizedBignumber',\r\n    standalone: true,\r\n})\r\nexport class LocalizedBignumberPipe implements PipeTransform {\r\n    private localeService = inject(LocaleService);\r\n\r\n    public transform(value?: any, options?: LocalizedBignumberOptions): any {\r\n        return value !== undefined && value !== null ? this.applyMask(value, options) : of(value);\r\n    }\r\n\r\n    private applyMask(value?: any, options?: LocalizedBignumberOptions) {\r\n        return this.localeService.get().pipe(\r\n            map((localeConfig) => {\r\n                const configs: Required<LocalizedBignumberOptions> = {\r\n                    prefix: options?.prefix ?? localeConfig?.number?.currencySymbol ?? 'R$',\r\n                    thousandsSeparator: options?.thousandsSeparator ?? localeConfig?.number?.thousandsSeparator ?? '.',\r\n                    decimalSeparator: options?.decimalSeparator ?? localeConfig?.number?.decimalSeparator ?? ',',\r\n                    scale: options?.scale ?? 2,\r\n                    suffix: options?.suffix ?? '',\r\n                    allowNegative: options?.allowNegative ?? true,\r\n                };\r\n                const isNumber = !new BigNumber(value).isNaN();\r\n                return applyLocalizedMask(value, configs, isNumber);\r\n            }),\r\n        );\r\n    }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { LocalizedBignumberOptions, LocalizedBignumberPipe } from './localized-bignumber.pipe';\r\n\r\n@Pipe({\r\n    name: 'localizedBignumberImpure',\r\n    pure: false,\r\n    standalone: true,\r\n})\r\nexport class LocalizedBignumberImpurePipe extends LocalizedBignumberPipe implements PipeTransform {\r\n    public override transform(value?: any, options?: LocalizedBignumberOptions): any {\r\n        return super.transform(value, options);\r\n    }\r\n}\r\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@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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}