@seniorsistemas/angular-components 19.9.15-develop-11ab86f5 → 19.10.0-develop-ef29acb7

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.
@@ -1,11 +1,10 @@
1
- import { HttpClient } from '@angular/common/http';
2
1
  import { Injectable, inject } from '@angular/core';
3
2
  import { user } from '@seniorsistemas/senior-platform-data';
4
3
  import moment from 'moment';
5
4
  import { from, of } from 'rxjs';
6
- import { catchError, map, switchMap, tap } from 'rxjs/operators';
5
+ import { map, tap } from 'rxjs/operators';
7
6
  import { CookieService } from 'ngx-cookie-service';
8
- import { LocaleOptions } from './options/index';
7
+ import { buildLocaleOptions, getLocaleDecimalSeparator, getLocaleGroupingSeparator } from './options/locale-presets';
9
8
  import 'moment/locale/es';
10
9
  import 'moment/locale/pt-br';
11
10
  import * as i0 from "@angular/core";
@@ -17,12 +16,9 @@ import * as i0 from "@angular/core";
17
16
  * @category Locale
18
17
  */
19
18
  export class LocaleService {
20
- http = inject(HttpClient);
21
19
  cookieService = inject(CookieService);
22
20
  locale;
23
21
  localeOptions;
24
- localeOptionsAddress = 'https://cdn.senior.com.br/primeng/locales';
25
- localeOptionsVersion = '3.0.0';
26
22
  VALID_MOMENT_LANGUAGES = {
27
23
  spanish: ['es-do', 'es-mx', 'es-us', 'es'],
28
24
  english: ['en', 'en-au', 'en-ca', 'en-gb', 'en-ie', 'en-il', 'en-in', 'en-nz', 'en-sg'],
@@ -74,35 +70,16 @@ export class LocaleService {
74
70
  return userLocale;
75
71
  }
76
72
  getLocaleConfig() {
77
- return this.getLocale().pipe(switchMap((locale) => {
73
+ return this.getLocale().pipe(map((locale) => {
78
74
  moment.locale(this.parseUserLocaleToMoment(locale));
79
- return this.http
80
- .get(`${this.localeOptionsAddress}/${this.localeOptionsVersion}/${locale}.json`)
81
- .pipe(map((response) => new LocaleOptions({ ...response, locale })));
82
- }), catchError((err) => {
83
- console.warn(`Error getting locale configuration. Using fallback.`, err);
84
- return user.getUserData();
75
+ return buildLocaleOptions(locale);
85
76
  }));
86
77
  }
87
78
  getGroupingSeparator() {
88
- const numberFormat = new Intl.NumberFormat(this.locale, {
89
- style: 'decimal',
90
- useGrouping: true,
91
- minimumFractionDigits: 5,
92
- maximumFractionDigits: 5,
93
- });
94
- // The default groupingSeparator for 'fr' is the character code 8239. We need it to be the regular space.
95
- if (this.locale?.includes('fr'))
96
- return ' ';
97
- return numberFormat.formatToParts(1000).find((part) => part.type === 'group')?.value;
79
+ return getLocaleGroupingSeparator(this.locale);
98
80
  }
99
81
  getDecimalSeparator() {
100
- const numberFormat = new Intl.NumberFormat(this.locale, {
101
- style: 'decimal',
102
- minimumFractionDigits: 5,
103
- maximumFractionDigits: 5,
104
- });
105
- return numberFormat.formatToParts(1.2).find((part) => part.type === 'decimal')?.value;
82
+ return getLocaleDecimalSeparator(this.locale);
106
83
  }
107
84
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
108
85
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleService, providedIn: 'root' });
@@ -111,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
111
88
  type: Injectable,
112
89
  args: [{ providedIn: 'root' }]
113
90
  }] });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvbG9jYWxlL3NyYy9saWIvbG9jYWxlL2xvY2FsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRSxPQUFPLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8scUJBQXFCLENBQUM7O0FBRTdCOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBQ0wsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQixhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sQ0FBVTtJQUNoQixhQUFhLENBQWlCO0lBQ3JCLG9CQUFvQixHQUFHLDJDQUEyQyxDQUFDO0lBQ25FLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztJQUMvQixzQkFBc0IsR0FBRztRQUN0QyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDMUMsT0FBTyxF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RSxLQUFLLENBQUM7SUFDMUYsQ0FBQzt3R0E1R1EsYUFBYTs0R0FBYixhQUFhLGNBREEsTUFBTTs7NEZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyB1c2VyIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL3Nlbmlvci1wbGF0Zm9ybS1kYXRhJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5cbmltcG9ydCB7IElMb2NhbGVPcHRpb25zLCBMb2NhbGVPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zL2luZGV4JztcblxuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2VzJztcbmltcG9ydCAnbW9tZW50L2xvY2FsZS9wdC1icic7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFNlcnZpw6dvIGRlIGxvY2FsaXphw6fDo28gcXVlIG9idMOpbSBlIGFybWF6ZW5hIG8gbG9jYWxlIGRvIHVzdcOhcmlvXG4gKiBhIHBhcnRpciBkYSBwbGF0YWZvcm1hIFNlbmlvci4gRm9ybmVjZSBzZXBhcmFkb3JlcyBkZWNpbWFpcyBlIGRlIG1pbGhhcixcbiAqIGNvbmZpZ3VyYcOnw7VlcyBkZSBjYWxlbmTDoXJpbyBlIG9ww6fDtWVzIGRlIGZvcm1hdG8gUHJpbWVORyBjb20gYmFzZSBubyBsb2NhbGUgYXRpdm8uXG4gKlxuICogQGNhdGVnb3J5IExvY2FsZVxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExvY2FsZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvb2tpZVNlcnZpY2UgPSBpbmplY3QoQ29va2llU2VydmljZSk7XG5cbiAgICBwcml2YXRlIGxvY2FsZT86IHN0cmluZztcbiAgICBwcml2YXRlIGxvY2FsZU9wdGlvbnM/OiBMb2NhbGVPcHRpb25zO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlT3B0aW9uc0FkZHJlc3MgPSAnaHR0cHM6Ly9jZG4uc2VuaW9yLmNvbS5ici9wcmltZW5nL2xvY2FsZXMnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlT3B0aW9uc1ZlcnNpb24gPSAnMy4wLjAnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgVkFMSURfTU9NRU5UX0xBTkdVQUdFUyA9IHtcbiAgICAgICAgc3BhbmlzaDogWydlcy1kbycsICdlcy1teCcsICdlcy11cycsICdlcyddLFxuICAgICAgICBlbmdsaXNoOiBbJ2VuJywgJ2VuLWF1JywgJ2VuLWNhJywgJ2VuLWdiJywgJ2VuLWllJywgJ2VuLWlsJywgJ2VuLWluJywgJ2VuLW56JywgJ2VuLXNnJ10sXG4gICAgfTtcblxuICAgIGdldCgpOiBPYnNlcnZhYmxlPExvY2FsZU9wdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlT3B0aW9uc1xuICAgICAgICAgICAgPyBvZih0aGlzLmxvY2FsZU9wdGlvbnMpXG4gICAgICAgICAgICA6IHRoaXMuZ2V0TG9jYWxlQ29uZmlnKCkucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcChcbiAgICAgICAgICAgICAgICAgICAgICAobG9jYWxlT3B0aW9uczogTG9jYWxlT3B0aW9ucykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubG9jYWxlT3B0aW9ucyA9IHsgLi4ubG9jYWxlT3B0aW9ucywgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0TG9jYWxlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZVxuICAgICAgICAgICAgPyBvZih0aGlzLmxvY2FsZSlcbiAgICAgICAgICAgIDogZnJvbSh0aGlzLmdldFVzZXJEYXRhKCkpLnBpcGUoXG4gICAgICAgICAgICAgICAgICBtYXAoKHVzZXJEYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGUgPSA8c3RyaW5nPnVzZXJEYXRhLmxvY2FsZSB8fCA8c3RyaW5nPnVzZXJEYXRhLnRlbmFudExvY2FsZSB8fCAncHQtQlInO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb2JqZWN0IHdpdGggdGhlIGxvY2FsZSBvcHRpb25zIGJhc2VkIG9uIHRoZSB1c2VyJ3MgbG9jYWxlKHBsYXRmb3JtIGxvY2FsZSkuXG4gICAgICogQHJldHVybiBUaGUgbG9jYWxlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqL1xuICAgIGdldExvY2FsZU9wdGlvbnMoKTogTG9jYWxlT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZU9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVc2VyRGF0YSgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBvZihKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoJ2NvbS5zZW5pb3IudG9rZW4nKSkpO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmFibGUgdG8gb2J0YWluIHVzZXIgbG9jYWxlIGZyb20gY29va2llLCBjYWxsaW5nIGdldFVzZXInKTtcbiAgICAgICAgICAgIHJldHVybiB1c2VyLmdldFVzZXJEYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdmFsaWQgbG9jYWxlIGZvciBtb21lbnQganMgbG9jYWxlIGJhc2VkIG9uIHVzZXIgY3VycmVudCBsb2NhbGUuXG4gICAgICogU29tZXRpbWVzIHRoZSBsb2NhbGUgZnJvbSB1c2VyIG5vdCBleGlzdHMgaW4gbG9jYWxlIG9mIG1vbWVudCwgZm9yIGV4YW1wbGUsIGlzIHZhbGlkIHVzZXIgd2l0aCBsYW5ndWFnZSAnZXMtQ08nIGJ1dCBmb3IgdGhlIG1vbWVudGpzIHRoZSBsb2NhbGUgJ2VzLUNPJyBub3QgZXhpc3QsIHNvIHdpdGggdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGFwcGxpZWQgdGhlICdlcycgbG9jYWxlLlxuICAgICAqIEBwYXJhbSB1c2VyTG9jYWxlXG4gICAgICogQHJldHVybnMgdmFsaWQgbG9jYWxlIGJhc2VkIGluIHVzZXIgbG9jYWxlLlxuICAgICAqL1xuICAgIHByaXZhdGUgcGFyc2VVc2VyTG9jYWxlVG9Nb21lbnQodXNlckxvY2FsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdXNlckxvY2FsZSA9IHVzZXJMb2NhbGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHVzZXJMb2NhbGUuc3RhcnRzV2l0aCgnZXMnKSAmJiAhdGhpcy5WQUxJRF9NT01FTlRfTEFOR1VBR0VTLnNwYW5pc2guaW5jbHVkZXModXNlckxvY2FsZSkpIHtcbiAgICAgICAgICAgIHVzZXJMb2NhbGUgPSAnZXMnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyTG9jYWxlLnN0YXJ0c1dpdGgoJ2VuJykgJiYgIXRoaXMuVkFMSURfTU9NRU5UX0xBTkdVQUdFUy5lbmdsaXNoLmluY2x1ZGVzKHVzZXJMb2NhbGUpKSB7XG4gICAgICAgICAgICB1c2VyTG9jYWxlID0gJ2VuJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXNlckxvY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvY2FsZUNvbmZpZygpOiBPYnNlcnZhYmxlPExvY2FsZU9wdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxlKCkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgobG9jYWxlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBtb21lbnQubG9jYWxlKHRoaXMucGFyc2VVc2VyTG9jYWxlVG9Nb21lbnQobG9jYWxlKSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgICAgIC5nZXQ8SUxvY2FsZU9wdGlvbnM+KGAke3RoaXMubG9jYWxlT3B0aW9uc0FkZHJlc3N9LyR7dGhpcy5sb2NhbGVPcHRpb25zVmVyc2lvbn0vJHtsb2NhbGV9Lmpzb25gKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlKSA9PiBuZXcgTG9jYWxlT3B0aW9ucyh7IC4uLnJlc3BvbnNlLCBsb2NhbGUgfSkpKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEVycm9yIGdldHRpbmcgbG9jYWxlIGNvbmZpZ3VyYXRpb24uIFVzaW5nIGZhbGxiYWNrLmAsIGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZXIuZ2V0VXNlckRhdGEoKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEdyb3VwaW5nU2VwYXJhdG9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IG51bWJlckZvcm1hdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwge1xuICAgICAgICAgICAgc3R5bGU6ICdkZWNpbWFsJyxcbiAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLFxuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA1LFxuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiA1LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUaGUgZGVmYXVsdCBncm91cGluZ1NlcGFyYXRvciBmb3IgJ2ZyJyBpcyB0aGUgY2hhcmFjdGVyIGNvZGUgODIzOS4gV2UgbmVlZCBpdCB0byBiZSB0aGUgcmVndWxhciBzcGFjZS5cbiAgICAgICAgaWYgKHRoaXMubG9jYWxlPy5pbmNsdWRlcygnZnInKSkgcmV0dXJuICcgJztcblxuICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0LmZvcm1hdFRvUGFydHMoMTAwMCkuZmluZCgocGFydCkgPT4gcGFydC50eXBlID09PSAnZ3JvdXAnKT8udmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0RGVjaW1hbFNlcGFyYXRvcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHtcbiAgICAgICAgICAgIHN0eWxlOiAnZGVjaW1hbCcsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDUsXG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBudW1iZXJGb3JtYXQuZm9ybWF0VG9QYXJ0cygxLjIpLmZpbmQoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ2RlY2ltYWwnKT8udmFsdWU7XG4gICAgfVxufVxuXG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvbG9jYWxlL3NyYy9saWIvbG9jYWxlL2xvY2FsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckgsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLHFCQUFxQixDQUFDOztBQUU3Qjs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQUNMLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFL0MsTUFBTSxDQUFVO0lBQ2hCLGFBQWEsQ0FBaUI7SUFDckIsc0JBQXNCLEdBQUc7UUFDdEMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQzFDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO0tBQzFGLENBQUM7SUFFRixHQUFHO1FBQ0MsT0FBTyxJQUFJLENB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c0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IHVzZXIgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvc2VuaW9yLXBsYXRmb3JtLWRhdGEnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5cbmltcG9ydCB7IExvY2FsZU9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMvaW5kZXgnO1xuaW1wb3J0IHsgYnVpbGRMb2NhbGVPcHRpb25zLCBnZXRMb2NhbGVEZWNpbWFsU2VwYXJhdG9yLCBnZXRMb2NhbGVHcm91cGluZ1NlcGFyYXRvciB9IGZyb20gJy4vb3B0aW9ucy9sb2NhbGUtcHJlc2V0cyc7XG5cbmltcG9ydCAnbW9tZW50L2xvY2FsZS9lcyc7XG5pbXBvcnQgJ21vbWVudC9sb2NhbGUvcHQtYnInO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTZXJ2acOnbyBkZSBsb2NhbGl6YcOnw6NvIHF1ZSBvYnTDqW0gZSBhcm1hemVuYSBvIGxvY2FsZSBkbyB1c3XDoXJpb1xuICogYSBwYXJ0aXIgZGEgcGxhdGFmb3JtYSBTZW5pb3IuIEZvcm5lY2Ugc2VwYXJhZG9yZXMgZGVjaW1haXMgZSBkZSBtaWxoYXIsXG4gKiBjb25maWd1cmHDp8O1ZXMgZGUgY2FsZW5kw6FyaW8gZSBvcMOnw7VlcyBkZSBmb3JtYXRvIFByaW1lTkcgY29tIGJhc2Ugbm8gbG9jYWxlIGF0aXZvLlxuICpcbiAqIEBjYXRlZ29yeSBMb2NhbGVcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvb2tpZVNlcnZpY2UgPSBpbmplY3QoQ29va2llU2VydmljZSk7XG5cbiAgICBwcml2YXRlIGxvY2FsZT86IHN0cmluZztcbiAgICBwcml2YXRlIGxvY2FsZU9wdGlvbnM/OiBMb2NhbGVPcHRpb25zO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgVkFMSURfTU9NRU5UX0xBTkdVQUdFUyA9IHtcbiAgICAgICAgc3BhbmlzaDogWydlcy1kbycsICdlcy1teCcsICdlcy11cycsICdlcyddLFxuICAgICAgICBlbmdsaXNoOiBbJ2VuJywgJ2VuLWF1JywgJ2VuLWNhJywgJ2VuLWdiJywgJ2VuLWllJywgJ2VuLWlsJywgJ2VuLWluJywgJ2VuLW56JywgJ2VuLXNnJ10sXG4gICAgfTtcblxuICAgIGdldCgpOiBPYnNlcnZhYmxlPExvY2FsZU9wdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlT3B0aW9uc1xuICAgICAgICAgICAgPyBvZih0aGlzLmxvY2FsZU9wdGlvbnMpXG4gICAgICAgICAgICA6IHRoaXMuZ2V0TG9jYWxlQ29uZmlnKCkucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcChcbiAgICAgICAgICAgICAgICAgICAgICAobG9jYWxlT3B0aW9uczogTG9jYWxlT3B0aW9ucykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubG9jYWxlT3B0aW9ucyA9IHsgLi4ubG9jYWxlT3B0aW9ucywgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0TG9jYWxlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZVxuICAgICAgICAgICAgPyBvZih0aGlzLmxvY2FsZSlcbiAgICAgICAgICAgIDogZnJvbSh0aGlzLmdldFVzZXJEYXRhKCkpLnBpcGUoXG4gICAgICAgICAgICAgICAgICBtYXAoKHVzZXJEYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGUgPSA8c3RyaW5nPnVzZXJEYXRhLmxvY2FsZSB8fCA8c3RyaW5nPnVzZXJEYXRhLnRlbmFudExvY2FsZSB8fCAncHQtQlInO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb2JqZWN0IHdpdGggdGhlIGxvY2FsZSBvcHRpb25zIGJhc2VkIG9uIHRoZSB1c2VyJ3MgbG9jYWxlKHBsYXRmb3JtIGxvY2FsZSkuXG4gICAgICogQHJldHVybiBUaGUgbG9jYWxlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqL1xuICAgIGdldExvY2FsZU9wdGlvbnMoKTogTG9jYWxlT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZU9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVc2VyRGF0YSgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBvZihKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoJ2NvbS5zZW5pb3IudG9rZW4nKSkpO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmFibGUgdG8gb2J0YWluIHVzZXIgbG9jYWxlIGZyb20gY29va2llLCBjYWxsaW5nIGdldFVzZXInKTtcbiAgICAgICAgICAgIHJldHVybiB1c2VyLmdldFVzZXJEYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdmFsaWQgbG9jYWxlIGZvciBtb21lbnQganMgbG9jYWxlIGJhc2VkIG9uIHVzZXIgY3VycmVudCBsb2NhbGUuXG4gICAgICogU29tZXRpbWVzIHRoZSBsb2NhbGUgZnJvbSB1c2VyIG5vdCBleGlzdHMgaW4gbG9jYWxlIG9mIG1vbWVudCwgZm9yIGV4YW1wbGUsIGlzIHZhbGlkIHVzZXIgd2l0aCBsYW5ndWFnZSAnZXMtQ08nIGJ1dCBmb3IgdGhlIG1vbWVudGpzIHRoZSBsb2NhbGUgJ2VzLUNPJyBub3QgZXhpc3QsIHNvIHdpdGggdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGFwcGxpZWQgdGhlICdlcycgbG9jYWxlLlxuICAgICAqIEBwYXJhbSB1c2VyTG9jYWxlXG4gICAgICogQHJldHVybnMgdmFsaWQgbG9jYWxlIGJhc2VkIGluIHVzZXIgbG9jYWxlLlxuICAgICAqL1xuICAgIHByaXZhdGUgcGFyc2VVc2VyTG9jYWxlVG9Nb21lbnQodXNlckxvY2FsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdXNlckxvY2FsZSA9IHVzZXJMb2NhbGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHVzZXJMb2NhbGUuc3RhcnRzV2l0aCgnZXMnKSAmJiAhdGhpcy5WQUxJRF9NT01FTlRfTEFOR1VBR0VTLnNwYW5pc2guaW5jbHVkZXModXNlckxvY2FsZSkpIHtcbiAgICAgICAgICAgIHVzZXJMb2NhbGUgPSAnZXMnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyTG9jYWxlLnN0YXJ0c1dpdGgoJ2VuJykgJiYgIXRoaXMuVkFMSURfTU9NRU5UX0xBTkdVQUdFUy5lbmdsaXNoLmluY2x1ZGVzKHVzZXJMb2NhbGUpKSB7XG4gICAgICAgICAgICB1c2VyTG9jYWxlID0gJ2VuJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXNlckxvY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvY2FsZUNvbmZpZygpOiBPYnNlcnZhYmxlPExvY2FsZU9wdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxlKCkucGlwZShcbiAgICAgICAgICAgIG1hcCgobG9jYWxlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBtb21lbnQubG9jYWxlKHRoaXMucGFyc2VVc2VyTG9jYWxlVG9Nb21lbnQobG9jYWxlKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1aWxkTG9jYWxlT3B0aW9ucyhsb2NhbGUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0R3JvdXBpbmdTZXBhcmF0b3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGdldExvY2FsZUdyb3VwaW5nU2VwYXJhdG9yKHRoaXMubG9jYWxlKTtcbiAgICB9XG5cbiAgICBnZXREZWNpbWFsU2VwYXJhdG9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBnZXRMb2NhbGVEZWNpbWFsU2VwYXJhdG9yKHRoaXMubG9jYWxlKTtcbiAgICB9XG59XG5cbiJdfQ==
@@ -0,0 +1,199 @@
1
+ import { NumberLocaleOptions } from './number';
2
+ import { LocaleOptions } from './index';
3
+ const PT_BR_PRESET = {
4
+ calendar: {
5
+ hourFormat: '24',
6
+ dateFormat: 'dd/mm/yy',
7
+ firstDayOfWeek: 0,
8
+ dayNames: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
9
+ dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],
10
+ dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],
11
+ monthNames: [
12
+ 'Janeiro',
13
+ 'Fevereiro',
14
+ 'Março',
15
+ 'Abril',
16
+ 'Maio',
17
+ 'Junho',
18
+ 'Julho',
19
+ 'Agosto',
20
+ 'Setembro',
21
+ 'Outubro',
22
+ 'Novembro',
23
+ 'Dezembro',
24
+ ],
25
+ monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
26
+ today: 'Hoje',
27
+ clear: 'Limpar',
28
+ },
29
+ number: {
30
+ currencySymbol: 'R$',
31
+ thousandsSeparator: '.',
32
+ decimalSeparator: ',',
33
+ },
34
+ };
35
+ const ES_PRESET = {
36
+ calendar: {
37
+ hourFormat: '24',
38
+ dateFormat: 'dd/mm/yy',
39
+ firstDayOfWeek: 0,
40
+ dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
41
+ dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'],
42
+ dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
43
+ monthNames: [
44
+ 'Enero',
45
+ 'Febrero',
46
+ 'Marzo',
47
+ 'Abril',
48
+ 'Mayo',
49
+ 'Junio',
50
+ 'Julio',
51
+ 'Agosto',
52
+ 'Septiembre',
53
+ 'Octubre',
54
+ 'Noviembre',
55
+ 'Diciembre',
56
+ ],
57
+ monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
58
+ today: 'Hoy',
59
+ clear: 'Limpiar',
60
+ },
61
+ number: {
62
+ currencySymbol: '€',
63
+ thousandsSeparator: '.',
64
+ decimalSeparator: ',',
65
+ },
66
+ };
67
+ const EN_US_PRESET = {
68
+ calendar: {
69
+ hourFormat: '12',
70
+ dateFormat: 'mm/dd/yy',
71
+ firstDayOfWeek: 0,
72
+ dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
73
+ dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
74
+ dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
75
+ monthNames: [
76
+ 'January',
77
+ 'February',
78
+ 'March',
79
+ 'April',
80
+ 'May',
81
+ 'June',
82
+ 'July',
83
+ 'August',
84
+ 'September',
85
+ 'October',
86
+ 'November',
87
+ 'December',
88
+ ],
89
+ monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
90
+ today: 'Today',
91
+ clear: 'Clear',
92
+ },
93
+ number: {
94
+ currencySymbol: '$',
95
+ thousandsSeparator: ',',
96
+ decimalSeparator: '.',
97
+ },
98
+ };
99
+ /**
100
+ * @description Configurações de locale embarcadas na biblioteca. Mesmo conteúdo publicado
101
+ * anteriormente em `cdn.senior.com.br/primeng/locales/3.0.0`.
102
+ */
103
+ export const LOCALE_PRESETS = {
104
+ 'pt-BR': PT_BR_PRESET,
105
+ 'es-ES': ES_PRESET,
106
+ 'es-419': ES_PRESET,
107
+ 'en-US': EN_US_PRESET,
108
+ };
109
+ /** Preset usado para locales sem preset exato, a partir do idioma base. */
110
+ const BASE_LANGUAGE_PRESETS = {
111
+ pt: PT_BR_PRESET,
112
+ es: ES_PRESET,
113
+ en: EN_US_PRESET,
114
+ };
115
+ /**
116
+ * @description Separador decimal do locale, obtido via `Intl.NumberFormat`.
117
+ */
118
+ export function getLocaleDecimalSeparator(locale) {
119
+ const numberFormat = new Intl.NumberFormat(locale, {
120
+ style: 'decimal',
121
+ minimumFractionDigits: 5,
122
+ maximumFractionDigits: 5,
123
+ });
124
+ return numberFormat.formatToParts(1.2).find((part) => part.type === 'decimal')?.value;
125
+ }
126
+ /**
127
+ * @description Separador de milhar do locale, obtido via `Intl.NumberFormat`.
128
+ */
129
+ export function getLocaleGroupingSeparator(locale) {
130
+ // The default groupingSeparator for 'fr' is the character code 8239. We need it to be the regular space.
131
+ if (locale?.includes('fr'))
132
+ return ' ';
133
+ const numberFormat = new Intl.NumberFormat(locale, {
134
+ style: 'decimal',
135
+ useGrouping: true,
136
+ minimumFractionDigits: 5,
137
+ maximumFractionDigits: 5,
138
+ });
139
+ return numberFormat.formatToParts(1000).find((part) => part.type === 'group')?.value;
140
+ }
141
+ /**
142
+ * @description Formato de data do locale na convenção usada pelos presets (`dd/mm/yy`, onde `yy` é o ano com 4 dígitos).
143
+ */
144
+ function getLocaleDateFormat(locale) {
145
+ const tokens = { day: 'dd', month: 'mm', year: 'yy' };
146
+ return new Intl.DateTimeFormat(locale, { day: '2-digit', month: '2-digit', year: 'numeric' })
147
+ .formatToParts(new Date(2000, 0, 1))
148
+ .map((part) => tokens[part.type] ?? part.value)
149
+ .join('');
150
+ }
151
+ function getLocaleHourFormat(locale) {
152
+ const { hourCycle, hour12 } = new Intl.DateTimeFormat(locale, { hour: 'numeric' }).resolvedOptions();
153
+ const is12h = hourCycle ? hourCycle === 'h11' || hourCycle === 'h12' : !!hour12;
154
+ return is12h ? '12' : '24';
155
+ }
156
+ function findPreset(locale, presets) {
157
+ const key = Object.keys(presets).find((presetKey) => presetKey.toLowerCase() === locale.toLowerCase());
158
+ return key ? presets[key] : undefined;
159
+ }
160
+ function clonePreset(preset, locale) {
161
+ return new LocaleOptions({
162
+ locale,
163
+ calendar: structuredClone(preset.calendar),
164
+ number: structuredClone(preset.number),
165
+ });
166
+ }
167
+ /**
168
+ * @description Monta as opções de locale sem acesso à rede.
169
+ * Locales com preset exato (`pt-BR`, `es-ES`, `es-419`, `en-US`) retornam o preset.
170
+ * Os demais usam os textos do preset do idioma base (ou pt-BR), com separadores e formatos
171
+ * de data/hora derivados via `Intl`. O símbolo de moeda segue o padrão `R$`, pois não é
172
+ * possível inferir a moeda a partir do idioma.
173
+ */
174
+ export function buildLocaleOptions(locale) {
175
+ const exactPreset = findPreset(locale, LOCALE_PRESETS);
176
+ if (exactPreset) {
177
+ return clonePreset(exactPreset, locale);
178
+ }
179
+ const basePreset = findPreset(locale.split('-')[0], BASE_LANGUAGE_PRESETS) ?? PT_BR_PRESET;
180
+ try {
181
+ return new LocaleOptions({
182
+ locale,
183
+ calendar: {
184
+ ...structuredClone(basePreset.calendar),
185
+ dateFormat: getLocaleDateFormat(locale),
186
+ hourFormat: getLocaleHourFormat(locale),
187
+ },
188
+ number: new NumberLocaleOptions({
189
+ decimalSeparator: getLocaleDecimalSeparator(locale) ?? ',',
190
+ thousandsSeparator: getLocaleGroupingSeparator(locale) ?? '',
191
+ }),
192
+ });
193
+ }
194
+ catch {
195
+ // Locale inválido para o Intl (ex.: 'pt_BR').
196
+ return clonePreset(PT_BR_PRESET, locale);
197
+ }
198
+ }
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXByZXNldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvbG9jYWxlL3NyYy9saWIvbG9jYWxlL29wdGlvbnMvbG9jYWxlLXByZXNldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFBa0IsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXhELE1BQU0sWUFBWSxHQUFtQjtJQUNqQyxRQUFRLEVBQUU7UUFDTixVQUFVLEVBQUUsSUFBSTtRQUNoQixVQUFVLEVBQUUsVUFBVTtRQUN0QixjQUFjLEVBQUUsQ0FBQztRQUNqQixRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7UUFDaEYsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQ2hFLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztRQUNoRCxVQUFVLEVBQUU7WUFDUixTQUFTO1lBQ1QsV0FBVztZQUNYLE9BQU87WUFDUCxPQUFPO1lBQ1AsTUFBTTtZQUNOLE9BQU87WUFDUCxPQUFPO1lBQ1AsUUFBUTtZQUNSLFVBQVU7WUFDVixTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDYjtRQUNELGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUss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QztnQkFDNUIsZ0JBQWdCLEVBQUUseUJBQXlCLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRztnQkFDMUQsa0JBQWtCLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTthQUMvRCxDQUFDO1NBQ0wsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNMLDhDQUE4QztRQUM5QyxPQUFPLFdBQVcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOdW1iZXJMb2NhbGVPcHRpb25zIH0gZnJvbSAnLi9udW1iZXInO1xuaW1wb3J0IHsgSUxvY2FsZU9wdGlvbnMsIExvY2FsZU9wdGlvbnMgfSBmcm9tICcuL2luZGV4JztcblxuY29uc3QgUFRfQlJfUFJFU0VUOiBJTG9jYWxlT3B0aW9ucyA9IHtcbiAgICBjYWxlbmRhcjoge1xuICAgICAgICBob3VyRm9ybWF0OiAnMjQnLFxuICAgICAgICBkYXRlRm9ybWF0OiAnZGQvbW0veXknLFxuICAgICAgICBmaXJzdERheU9mV2VlazogMCxcbiAgICAgICAgZGF5TmFtZXM6IFsnRG9taW5nbycsICdTZWd1bmRhJywgJ1RlcsOnYScsICdRdWFydGEnLCAnUXVpbnRhJywgJ1NleHRhJywgJ1PDoWJhZG8nXSxcbiAgICAgICAgZGF5TmFtZXNTaG9ydDogWydEb20nLCAnU2VnJywgJ1RlcicsICdRdWEnLCAnUXVpJywgJ1NleCcsICdTYWInXSxcbiAgICAgICAgZGF5TmFtZXNNaW46IFsnRCcsICdTJywgJ1QnLCAnUScsICdRJywgJ1MnLCAnUyddLFxuICAgICAgICBtb250aE5hbWVzOiBbXG4gICAgICAgICAgICAnSmFuZWlybycsXG4gICAgICAgICAgICAnRmV2ZXJlaXJvJyxcbiAgICAgICAgICAgICdNYXLDp28nLFxuICAgICAgICAgICAgJ0FicmlsJyxcbiAgICAgICAgICAgICdNYWlvJyxcbiAgICAgICAgICAgICdKdW5obycsXG4gICAgICAgICAgICAnSnVsaG8nLFxuICAgICAgICAgICAgJ0Fnb3N0bycsXG4gICAgICAgICAgICAnU2V0ZW1icm8nLFxuICAgICAgICAgICAgJ091dHVicm8nLFxuICAgICAgICAgICAgJ05vdmVtYnJvJyxcbiAgICAgICAgICAgICdEZXplbWJybycsXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoTmFtZXNTaG9ydDogWydKYW4nLCAnRmV2JywgJ01hcicsICdBYnInLCAnTWFpJywgJ0p1bicsICdKdWwnLCAnQWdvJywgJ1NldCcsICdPdXQnLCAnTm92JywgJ0RleiddLFxuICAgICAgICB0b2RheTogJ0hvamUnLFxuICAgICAgICBjbGVhcjogJ0xpbXBhcicsXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgICAgY3VycmVuY3lTeW1ib2w6ICdSJCcsXG4gICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nLFxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsXG4gICAgfSxcbn07XG5cbmNvbnN0IEVTX1BSRVNFVDogSUxvY2FsZU9wdGlvbnMgPSB7XG4gICAgY2FsZW5kYXI6IHtcbiAgICAgICAgaG91ckZvcm1hdDogJzI0JyxcbiAgICAgICAgZGF0ZUZvcm1hdDogJ2RkL21tL3l5JyxcbiAgICAgICAgZmlyc3REYXlPZldlZWs6IDAsXG4gICAgICAgIGRheU5hbWVzOiBbJ0RvbWluZ28nLCAnTHVuZXMnLCAnTWFydGVzJywgJ01pw6lyY29sZXMnLCAnSnVldmVzJywgJ1ZpZXJuZXMnLCAnU8OhYmFkbyddLFxuICAgICAgICBkYXlOYW1lc1Nob3J0OiBbJ0RvbScsICdMdW4nLCAnTWFyJywgJ01pw6knLCAnSnVlJywgJ1ZpZScsICdTw6FiJ10sXG4gICAgICAgIGRheU5hbWVzTWluOiBbJ0QnLCAnTCcsICdNJywgJ00nLCAnSicsICdWJywgJ1MnXSxcbiAgICAgICAgbW9udGhOYW1lczogW1xuICAgICAgICAgICAgJ0VuZXJvJyxcbiAgICAgICAgICAgICdGZWJyZXJvJyxcbiAgICAgICAgICAgICdNYXJ6bycsXG4gICAgICAgICAgICAnQWJyaWwnLFxuICAgICAgICAgICAgJ01heW8nLFxuICAgICAgICAgICAgJ0p1bmlvJyxcbiAgICAgICAgICAgICdKdWxpbycsXG4gICAgICAgICAgICAnQWdvc3RvJyxcbiAgICAgICAgICAgICdTZXB0aWVtYnJlJyxcbiAgICAgICAgICAgICdPY3R1YnJlJyxcbiAgICAgICAgICAgICdOb3ZpZW1icmUnLFxuICAgICAgICAgICAgJ0RpY2llbWJyZScsXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoTmFtZXNTaG9ydDogWydFbmUnLCAnRmViJywgJ01hcicsICdBYnInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQWdvJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RpYyddLFxuICAgICAgICB0b2RheTogJ0hveScsXG4gICAgICAgIGNsZWFyOiAnTGltcGlhcicsXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgICAgY3VycmVuY3lTeW1ib2w6ICfigqwnLFxuICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyxcbiAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgIH0sXG59O1xuXG5jb25zdCBFTl9VU19QUkVTRVQ6IElMb2NhbGVPcHRpb25zID0ge1xuICAgIGNhbGVuZGFyOiB7XG4gICAgICAgIGhvdXJGb3JtYXQ6ICcxMicsXG4gICAgICAgIGRhdGVGb3JtYXQ6ICdtbS9kZC95eScsXG4gICAgICAgIGZpcnN0RGF5T2ZXZWVrOiAwLFxuICAgICAgICBkYXlOYW1lczogWydTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheSddLFxuICAgICAgICBkYXlOYW1lc1Nob3J0OiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddLFxuICAgICAgICBkYXlOYW1lc01pbjogWydTJywgJ00nLCAnVCcsICdXJywgJ1QnLCAnRicsICdTJ10sXG4gICAgICAgIG1vbnRoTmFtZXM6IFtcbiAgICAgICAgICAgICdKYW51YXJ5JyxcbiAgICAgICAgICAgICdGZWJydWFyeScsXG4gICAgICAgICAgICAnTWFyY2gnLFxuICAgICAgICAgICAgJ0FwcmlsJyxcbiAgICAgICAgICAgICdNYXknLFxuICAgICAgICAgICAgJ0p1bmUnLFxuICAgICAgICAgICAgJ0p1bHknLFxuICAgICAgICAgICAgJ0F1Z3VzdCcsXG4gICAgICAgICAgICAnU2VwdGVtYmVyJyxcbiAgICAgICAgICAgICdPY3RvYmVyJyxcbiAgICAgICAgICAgICdOb3ZlbWJlcicsXG4gICAgICAgICAgICAnRGVjZW1iZXInLFxuICAgICAgICBdLFxuICAgICAgICBtb250aE5hbWVzU2hvcnQ6IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcbiAgICAgICAgdG9kYXk6ICdUb2RheScsXG4gICAgICAgIGNsZWFyOiAnQ2xlYXInLFxuICAgIH0sXG4gICAgbnVtYmVyOiB7XG4gICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnJCcsXG4gICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJywnLFxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLicsXG4gICAgfSxcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYcOnw7VlcyBkZSBsb2NhbGUgZW1iYXJjYWRhcyBuYSBiaWJsaW90ZWNhLiBNZXNtbyBjb250ZcO6ZG8gcHVibGljYWRvXG4gKiBhbnRlcmlvcm1lbnRlIGVtIGBjZG4uc2VuaW9yLmNvbS5ici9wcmltZW5nL2xvY2FsZXMvMy4wLjBgLlxuICovXG5leHBvcnQgY29uc3QgTE9DQUxFX1BSRVNFVFM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIElMb2NhbGVPcHRpb25zPj4gPSB7XG4gICAgJ3B0LUJSJzogUFRfQlJfUFJFU0VULFxuICAgICdlcy1FUyc6IEVTX1BSRVNFVCxcbiAgICAnZXMtNDE5JzogRVNfUFJFU0VULFxuICAgICdlbi1VUyc6IEVOX1VTX1BSRVNFVCxcbn07XG5cbi8qKiBQcmVzZXQgdXNhZG8gcGFyYSBsb2NhbGVzIHNlbSBwcmVzZXQgZXhhdG8sIGEgcGFydGlyIGRvIGlkaW9tYSBiYXNlLiAqL1xuY29uc3QgQkFTRV9MQU5HVUFHRV9QUkVTRVRTOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBJTG9jYWxlT3B0aW9ucz4+ID0ge1xuICAgIHB0OiBQVF9CUl9QUkVTRVQsXG4gICAgZXM6IEVTX1BSRVNFVCxcbiAgICBlbjogRU5fVVNfUFJFU0VULFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU2VwYXJhZG9yIGRlY2ltYWwgZG8gbG9jYWxlLCBvYnRpZG8gdmlhIGBJbnRsLk51bWJlckZvcm1hdGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVEZWNpbWFsU2VwYXJhdG9yKGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgICAgICBzdHlsZTogJ2RlY2ltYWwnLFxuICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDUsXG4gICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNSxcbiAgICB9KTtcblxuICAgIHJldHVybiBudW1iZXJGb3JtYXQuZm9ybWF0VG9QYXJ0cygxLjIpLmZpbmQoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ2RlY2ltYWwnKT8udmFsdWU7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFNlcGFyYWRvciBkZSBtaWxoYXIgZG8gbG9jYWxlLCBvYnRpZG8gdmlhIGBJbnRsLk51bWJlckZvcm1hdGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVHcm91cGluZ1NlcGFyYXRvcihsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIFRoZSBkZWZhdWx0IGdyb3VwaW5nU2VwYXJhdG9yIGZvciAnZnInIGlzIHRoZSBjaGFyYWN0ZXIgY29kZSA4MjM5LiBXZSBuZWVkIGl0IHRvIGJlIHRoZSByZWd1bGFyIHNwYWNlLlxuICAgIGlmIChsb2NhbGU/LmluY2x1ZGVzKCdmcicpKSByZXR1cm4gJyAnO1xuXG4gICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgICAgICBzdHlsZTogJ2RlY2ltYWwnLFxuICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSxcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA1LFxuICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDUsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbnVtYmVyRm9ybWF0LmZvcm1hdFRvUGFydHMoMTAwMCkuZmluZCgocGFydCkgPT4gcGFydC50eXBlID09PSAnZ3JvdXAnKT8udmFsdWU7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvcm1hdG8gZGUgZGF0YSBkbyBsb2NhbGUgbmEgY29udmVuw6fDo28gdXNhZGEgcGVsb3MgcHJlc2V0cyAoYGRkL21tL3l5YCwgb25kZSBgeXlgIMOpIG8gYW5vIGNvbSA0IGTDrWdpdG9zKS5cbiAqL1xuZnVuY3Rpb24gZ2V0TG9jYWxlRGF0ZUZvcm1hdChsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdG9rZW5zOiBQYXJ0aWFsPFJlY29yZDxJbnRsLkRhdGVUaW1lRm9ybWF0UGFydFR5cGVzLCBzdHJpbmc+PiA9IHsgZGF5OiAnZGQnLCBtb250aDogJ21tJywgeWVhcjogJ3l5JyB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICcyLWRpZ2l0JywgeWVhcjogJ251bWVyaWMnIH0pXG4gICAgICAgIC5mb3JtYXRUb1BhcnRzKG5ldyBEYXRlKDIwMDAsIDAsIDEpKVxuICAgICAgICAubWFwKChwYXJ0KSA9PiB0b2tlbnNbcGFydC50eXBlXSA/PyBwYXJ0LnZhbHVlKVxuICAgICAgICAuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGdldExvY2FsZUhvdXJGb3JtYXQobG9jYWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgaG91ckN5Y2xlLCBob3VyMTIgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBob3VyOiAnbnVtZXJpYycgfSkucmVzb2x2ZWRPcHRpb25zKCk7XG4gICAgY29uc3QgaXMxMmggPSBob3VyQ3ljbGUgPyBob3VyQ3ljbGUgPT09ICdoMTEnIHx8IGhvdXJDeWNsZSA9PT0gJ2gxMicgOiAhIWhvdXIxMjtcblxuICAgIHJldHVybiBpczEyaCA/ICcxMicgOiAnMjQnO1xufVxuXG5mdW5jdGlvbiBmaW5kUHJlc2V0KGxvY2FsZTogc3RyaW5nLCBwcmVzZXRzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBJTG9jYWxlT3B0aW9ucz4+KTogSUxvY2FsZU9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKHByZXNldHMpLmZpbmQoKHByZXNldEtleSkgPT4gcHJlc2V0S2V5LnRvTG93ZXJDYXNlKCkgPT09IGxvY2FsZS50b0xvd2VyQ2FzZSgpKTtcbiAgICByZXR1cm4ga2V5ID8gcHJlc2V0c1trZXldIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBjbG9uZVByZXNldChwcmVzZXQ6IElMb2NhbGVPcHRpb25zLCBsb2NhbGU6IHN0cmluZyk6IExvY2FsZU9wdGlvbnMge1xuICAgIHJldHVybiBuZXcgTG9jYWxlT3B0aW9ucyh7XG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgY2FsZW5kYXI6IHN0cnVjdHVyZWRDbG9uZShwcmVzZXQuY2FsZW5kYXIpLFxuICAgICAgICBudW1iZXI6IHN0cnVjdHVyZWRDbG9uZShwcmVzZXQubnVtYmVyKSxcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTW9udGEgYXMgb3DDp8O1ZXMgZGUgbG9jYWxlIHNlbSBhY2Vzc28gw6AgcmVkZS5cbiAqIExvY2FsZXMgY29tIHByZXNldCBleGF0byAoYHB0LUJSYCwgYGVzLUVTYCwgYGVzLTQxOWAsIGBlbi1VU2ApIHJldG9ybmFtIG8gcHJlc2V0LlxuICogT3MgZGVtYWlzIHVzYW0gb3MgdGV4dG9zIGRvIHByZXNldCBkbyBpZGlvbWEgYmFzZSAob3UgcHQtQlIpLCBjb20gc2VwYXJhZG9yZXMgZSBmb3JtYXRvc1xuICogZGUgZGF0YS9ob3JhIGRlcml2YWRvcyB2aWEgYEludGxgLiBPIHPDrW1ib2xvIGRlIG1vZWRhIHNlZ3VlIG8gcGFkcsOjbyBgUiRgLCBwb2lzIG7Do28gw6lcbiAqIHBvc3PDrXZlbCBpbmZlcmlyIGEgbW9lZGEgYSBwYXJ0aXIgZG8gaWRpb21hLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMb2NhbGVPcHRpb25zKGxvY2FsZTogc3RyaW5nKTogTG9jYWxlT3B0aW9ucyB7XG4gICAgY29uc3QgZXhhY3RQcmVzZXQgPSBmaW5kUHJlc2V0KGxvY2FsZSwgTE9DQUxFX1BSRVNFVFMpO1xuICAgIGlmIChleGFjdFByZXNldCkge1xuICAgICAgICByZXR1cm4gY2xvbmVQcmVzZXQoZXhhY3RQcmVzZXQsIGxvY2FsZSk7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVByZXNldCA9IGZpbmRQcmVzZXQobG9jYWxlLnNwbGl0KCctJylbMF0sIEJBU0VfTEFOR1VBR0VfUFJFU0VUUykgPz8gUFRfQlJfUFJFU0VUO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb2NhbGVPcHRpb25zKHtcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RydWN0dXJlZENsb25lKGJhc2VQcmVzZXQuY2FsZW5kYXIpLFxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGdldExvY2FsZURhdGVGb3JtYXQobG9jYWxlKSxcbiAgICAgICAgICAgICAgICBob3VyRm9ybWF0OiBnZXRMb2NhbGVIb3VyRm9ybWF0KGxvY2FsZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbnVtYmVyOiBuZXcgTnVtYmVyTG9jYWxlT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogZ2V0TG9jYWxlRGVjaW1hbFNlcGFyYXRvcihsb2NhbGUpID8/ICcsJyxcbiAgICAgICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IGdldExvY2FsZUdyb3VwaW5nU2VwYXJhdG9yKGxvY2FsZSkgPz8gJycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIExvY2FsZSBpbnbDoWxpZG8gcGFyYSBvIEludGwgKGV4LjogJ3B0X0JSJykuXG4gICAgICAgIHJldHVybiBjbG9uZVByZXNldChQVF9CUl9QUkVTRVQsIGxvY2FsZSk7XG4gICAgfVxufVxuIl19
@@ -1,4 +1,5 @@
1
1
  export * from './lib/locale/options/index';
2
+ export * from './lib/locale/options/locale-presets';
2
3
  export * from './lib/locale/locale.module';
3
4
  export * from './lib/locale/provide-locale';
4
5
  export * from './lib/locale/locale.service';
@@ -12,4 +13,4 @@ export * from './lib/locale/pipes/localized-date.pipe';
12
13
  export * from './lib/locale/pipes/localized-time-impure.pipe';
13
14
  export * from './lib/locale/pipes/localized-time.pipe';
14
15
  export * from './lib/locale/pipes/localized-number.pipe';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9sb2NhbGUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDBDQUEwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL29wdGlvbnMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL2xvY2FsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3Byb3ZpZGUtbG9jYWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsZS9sb2NhbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvYXBwbHktbG9jYWxpemVkLW1hc2snO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3BpcGVzL2xvY2FsaXplZC1iaWdudW1iZXItaW1wdXJlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3BpcGVzL2xvY2FsaXplZC1iaWdudW1iZXIucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcGlwZXMvbG9jYWxpemVkLWN1cnJlbmN5LWltcHVyZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsZS9waXBlcy9sb2NhbGl6ZWQtY3VycmVuY3kucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcGlwZXMvbG9jYWxpemVkLWRhdGUtaW1wdXJlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3BpcGVzL2xvY2FsaXplZC1kYXRlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3BpcGVzL2xvY2FsaXplZC10aW1lLWltcHVyZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsZS9waXBlcy9sb2NhbGl6ZWQtdGltZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsZS9waXBlcy9sb2NhbGl6ZWQtbnVtYmVyLnBpcGUnO1xuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9sb2NhbGUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMENBQTBDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvb3B0aW9ucy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvb3B0aW9ucy9sb2NhbGUtcHJlc2V0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvbG9jYWxlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcHJvdmlkZS1sb2NhbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL2xvY2FsZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsZS9hcHBseS1sb2NhbGl6ZWQtbWFzayc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcGlwZXMvbG9jYWxpemVkLWJpZ251bWJlci1pbXB1cmUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcGlwZXMvbG9jYWxpemVkLWJpZ251bWJlci5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsZS9waXBlcy9sb2NhbGl6ZWQtY3VycmVuY3ktaW1wdXJlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3BpcGVzL2xvY2FsaXplZC1jdXJyZW5jeS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsZS9waXBlcy9sb2NhbGl6ZWQtZGF0ZS1pbXB1cmUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcGlwZXMvbG9jYWxpemVkLWRhdGUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGUvcGlwZXMvbG9jYWxpemVkLXRpbWUtaW1wdXJlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3BpcGVzL2xvY2FsaXplZC10aW1lLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxlL3BpcGVzL2xvY2FsaXplZC1udW1iZXIucGlwZSc7XG4iXX0=
@@ -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, switchMap, catchError } from 'rxjs/operators';
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(switchMap((locale) => {
316
+ return this.getLocale().pipe(map((locale) => {
124
317
  moment.locale(this.parseUserLocaleToMoment(locale));
125
- return this.http
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
- const numberFormat = new Intl.NumberFormat(this.locale, {
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
- const numberFormat = new Intl.NumberFormat(this.locale, {
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":"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"}
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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"}
@@ -11,12 +11,9 @@ import * as i0 from "@angular/core";
11
11
  * @category Locale
12
12
  */
13
13
  export declare class LocaleService {
14
- private readonly http;
15
14
  private readonly cookieService;
16
15
  private locale?;
17
16
  private localeOptions?;
18
- private readonly localeOptionsAddress;
19
- private readonly localeOptionsVersion;
20
17
  private readonly VALID_MOMENT_LANGUAGES;
21
18
  get(): Observable<LocaleOptions>;
22
19
  getLocale(): Observable<string>;
@@ -0,0 +1,22 @@
1
+ import { ILocaleOptions, LocaleOptions } from './index';
2
+ /**
3
+ * @description Configurações de locale embarcadas na biblioteca. Mesmo conteúdo publicado
4
+ * anteriormente em `cdn.senior.com.br/primeng/locales/3.0.0`.
5
+ */
6
+ export declare const LOCALE_PRESETS: Readonly<Record<string, ILocaleOptions>>;
7
+ /**
8
+ * @description Separador decimal do locale, obtido via `Intl.NumberFormat`.
9
+ */
10
+ export declare function getLocaleDecimalSeparator(locale?: string): string | undefined;
11
+ /**
12
+ * @description Separador de milhar do locale, obtido via `Intl.NumberFormat`.
13
+ */
14
+ export declare function getLocaleGroupingSeparator(locale?: string): string | undefined;
15
+ /**
16
+ * @description Monta as opções de locale sem acesso à rede.
17
+ * Locales com preset exato (`pt-BR`, `es-ES`, `es-419`, `en-US`) retornam o preset.
18
+ * Os demais usam os textos do preset do idioma base (ou pt-BR), com separadores e formatos
19
+ * de data/hora derivados via `Intl`. O símbolo de moeda segue o padrão `R$`, pois não é
20
+ * possível inferir a moeda a partir do idioma.
21
+ */
22
+ export declare function buildLocaleOptions(locale: string): LocaleOptions;
@@ -1,4 +1,5 @@
1
1
  export * from './lib/locale/options/index';
2
+ export * from './lib/locale/options/locale-presets';
2
3
  export * from './lib/locale/locale.module';
3
4
  export * from './lib/locale/provide-locale';
4
5
  export * from './lib/locale/locale.service';
package/package.json CHANGED
@@ -707,5 +707,5 @@
707
707
  "schematics": "./schematics/collection.json",
708
708
  "sideEffects": true,
709
709
  "typings": "index.d.ts",
710
- "version": "19.9.15-develop-11ab86f5"
710
+ "version": "19.10.0-develop-ef29acb7"
711
711
  }