angular-ecmascript-intl
Version:
Contains Angular pipes to transform internationalization data using Intl.* browser APIs
1 lines • 39.4 kB
Source Map (JSON)
{"version":3,"file":"angular-ecmascript-intl.mjs","sources":["../../../projects/angular-ecmascript-intl/src/lib/country/intl-country-pipe-default-options.ts","../../../projects/angular-ecmascript-intl/src/lib/locale.ts","../../../projects/angular-ecmascript-intl/src/lib/country/intl-country.pipe.ts","../../../projects/angular-ecmascript-intl/src/lib/currency/intl-currency-pipe-default-options.ts","../../../projects/angular-ecmascript-intl/src/lib/utils/number-utils.ts","../../../projects/angular-ecmascript-intl/src/lib/currency/intl-currency.pipe.ts","../../../projects/angular-ecmascript-intl/src/lib/date/intl-date-pipe-default-options.ts","../../../projects/angular-ecmascript-intl/src/lib/date/intl-date.pipe.ts","../../../projects/angular-ecmascript-intl/src/lib/decimal/intl-decimal-pipe-default-options.ts","../../../projects/angular-ecmascript-intl/src/lib/decimal/intl-decimal.pipe.ts","../../../projects/angular-ecmascript-intl/src/lib/duration/intl-duration-pipe-default-options.ts","../../../projects/angular-ecmascript-intl/src/lib/duration/intl-duration.pipe.ts","../../../projects/angular-ecmascript-intl/src/lib/language/intl-language-pipe-default-options.ts","../../../projects/angular-ecmascript-intl/src/lib/language/intl-language.pipe.ts","../../../projects/angular-ecmascript-intl/src/lib/list/intl-list-pipe-default-options.ts","../../../projects/angular-ecmascript-intl/src/lib/list/intl-list.pipe.ts","../../../projects/angular-ecmascript-intl/src/lib/percent/intl-percent-pipe-default-options.ts","../../../projects/angular-ecmascript-intl/src/lib/percent/intl-percent.pipe.ts","../../../projects/angular-ecmascript-intl/src/lib/relative-time/relative-time-pipe-default-options.ts","../../../projects/angular-ecmascript-intl/src/lib/relative-time/relative-time.pipe.ts","../../../projects/angular-ecmascript-intl/src/lib/unit/intl-unit-pipe-default-options.ts","../../../projects/angular-ecmascript-intl/src/lib/unit/intl-unit.pipe.ts","../../../projects/angular-ecmascript-intl/src/lib/intl.module.ts","../../../projects/angular-ecmascript-intl/src/public-api.ts","../../../projects/angular-ecmascript-intl/src/angular-ecmascript-intl.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { IntlCountryPipeOptions } from './intl-country.pipe';\n\nexport const INTL_COUNTRY_PIPE_DEFAULT_OPTIONS = new InjectionToken<\n Omit<IntlCountryPipeOptions, 'locale'>\n>('IntlCountryPipeDefaultOptions');\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Set the locale(s) for all Intl Pipes. If not specified, the user language specified in the browser will be used. If\n * specified, it needs to be a string with a BCP 47 language tag, or an array of such strings.\n */\nexport const INTL_LOCALES = new InjectionToken<string | string[] | undefined>(\n 'IntlLocales',\n);\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { IntlPipeOptions } from '../intl-pipe-options';\nimport { INTL_LOCALES } from '../locale';\nimport { INTL_COUNTRY_PIPE_DEFAULT_OPTIONS } from './intl-country-pipe-default-options';\n\nexport type IntlCountryPipeOptions = Omit<\n Partial<Intl.DisplayNamesOptions>,\n 'languageDisplay'\n> &\n IntlPipeOptions;\n\n@Pipe({\n name: 'intlCountry',\n standalone: true,\n})\nexport class IntlCountryPipe implements PipeTransform {\n private readonly locale? = inject(INTL_LOCALES, { optional: true });\n private readonly defaultOptions? = inject<Omit<\n IntlCountryPipeOptions,\n 'locale'\n > | null>(INTL_COUNTRY_PIPE_DEFAULT_OPTIONS, { optional: true });\n\n transform(\n value: string | null | undefined,\n options?: IntlCountryPipeOptions,\n ): string | null {\n if (!value) {\n return null;\n }\n\n const { locale, ...intlOptions } = options ?? {};\n\n try {\n return (\n new Intl.DisplayNames(locale ?? this.locale ?? undefined, {\n ...this.defaultOptions,\n ...intlOptions,\n type: 'region',\n }).of(value) ?? null\n );\n } catch (e) {\n console.error('Error while transforming the country', e);\n return null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IntlCurrencyPipeOptions } from './intl-currency.pipe';\n\nexport const INTL_CURRENCY_PIPE_DEFAULT_OPTIONS = new InjectionToken<\n Omit<IntlCurrencyPipeOptions, 'locale'>\n>('IntlCurrencyPipeDefaultOptions');\n","export const getNumericValue = (value: string | number): number => {\n if (typeof value === 'number') {\n return value;\n }\n\n if (isNaN(Number(value) - parseFloat(value))) {\n throw new Error(`${value} is not a number!`);\n }\n\n return Number(value);\n};\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { IntlPipeOptions } from '../intl-pipe-options';\nimport { INTL_LOCALES } from '../locale';\nimport { getNumericValue } from '../utils/number-utils';\nimport { INTL_CURRENCY_PIPE_DEFAULT_OPTIONS } from './intl-currency-pipe-default-options';\n\ntype OmitOptions = 'unit' | 'unitDisplay' | 'currency';\nexport type IntlCurrencyPipeOptions = Omit<\n Partial<Intl.NumberFormatOptions>,\n OmitOptions\n> &\n IntlPipeOptions;\n\n@Pipe({\n name: 'intlCurrency',\n standalone: true,\n})\nexport class IntlCurrencyPipe implements PipeTransform {\n private readonly locale? = inject(INTL_LOCALES, { optional: true });\n private readonly defaultOptions? = inject<Omit<\n IntlCurrencyPipeOptions,\n 'locale'\n > | null>(INTL_CURRENCY_PIPE_DEFAULT_OPTIONS, { optional: true });\n\n transform(\n value: number | string | null | undefined,\n currency: string,\n options?: IntlCurrencyPipeOptions,\n ): string | null {\n if (typeof value !== 'number' && !value) {\n return null;\n }\n\n const numericValue = getNumericValue(value);\n\n const { locale, ...intlOptions } = options ?? {};\n\n try {\n return new Intl.NumberFormat(locale ?? this.locale ?? undefined, {\n ...this.defaultOptions,\n ...intlOptions,\n currency,\n style: 'currency',\n }).format(numericValue);\n } catch (e) {\n console.error('Error while transforming the currency', e);\n return null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IntlDatePipeOptions } from './intl-date.pipe';\n\nexport const INTL_DATE_PIPE_DEFAULT_OPTIONS = new InjectionToken<\n Omit<IntlDatePipeOptions, 'locale'>\n>('IntlDatePipeDefaultOptions');\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { IntlPipeOptions } from '../intl-pipe-options';\nimport { INTL_LOCALES } from '../locale';\nimport { INTL_DATE_PIPE_DEFAULT_OPTIONS } from './intl-date-pipe-default-options';\n\nexport type IntlDatePipeOptions = Partial<Intl.DateTimeFormatOptions> &\n IntlPipeOptions;\n\n@Pipe({\n name: 'intlDate',\n standalone: true,\n})\nexport class IntlDatePipe implements PipeTransform {\n private readonly locale? = inject(INTL_LOCALES, { optional: true });\n private readonly defaultOptions? = inject<Omit<\n IntlDatePipeOptions,\n 'locale'\n > | null>(INTL_DATE_PIPE_DEFAULT_OPTIONS, { optional: true });\n\n transform(\n value: string | number | Date | null | undefined,\n options?: IntlDatePipeOptions,\n ): string | null {\n if (typeof value !== 'number' && !value) {\n return null;\n }\n\n const date = new Date(value);\n if (isNaN(date.getTime())) {\n return null;\n }\n\n const { locale, ...intlOptions } = options ?? {};\n\n try {\n return new Intl.DateTimeFormat(locale ?? this.locale ?? undefined, {\n ...this.defaultOptions,\n ...intlOptions,\n }).format(date);\n } catch (e) {\n console.error('Error while transforming the date', e);\n return null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IntlDecimalPipeOptions } from './intl-decimal.pipe';\n\nexport const INTL_DECIMAL_PIPE_DEFAULT_OPTIONS = new InjectionToken<\n Omit<IntlDecimalPipeOptions, 'locale'>\n>('IntlDecimalPipeDefaultOptions');\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { IntlPipeOptions } from '../intl-pipe-options';\nimport { INTL_LOCALES } from '../locale';\nimport { getNumericValue } from '../utils/number-utils';\nimport { INTL_DECIMAL_PIPE_DEFAULT_OPTIONS } from './intl-decimal-pipe-default-options';\n\ntype OmitOptions =\n | 'unit'\n | 'unitDisplay'\n | 'currency'\n | 'currencyDisplay'\n | 'currencySign';\nexport type IntlDecimalPipeOptions = Omit<\n Partial<Intl.NumberFormatOptions>,\n OmitOptions\n> &\n IntlPipeOptions;\n\n@Pipe({\n name: 'intlDecimal',\n standalone: true,\n})\nexport class IntlDecimalPipe implements PipeTransform {\n private readonly locale? = inject(INTL_LOCALES, { optional: true });\n private readonly defaultOptions? = inject<Omit<\n IntlDecimalPipeOptions,\n 'locale'\n > | null>(INTL_DECIMAL_PIPE_DEFAULT_OPTIONS, { optional: true });\n\n transform(\n value: number | string | null | undefined,\n options?: IntlDecimalPipeOptions,\n ): string | null {\n if (typeof value !== 'number' && !value) {\n return null;\n }\n\n const numericValue = getNumericValue(value);\n\n const { locale, ...intlOptions } = options ?? {};\n\n try {\n return new Intl.NumberFormat(locale ?? this.locale ?? undefined, {\n ...this.defaultOptions,\n ...intlOptions,\n style: 'decimal',\n }).format(numericValue);\n } catch (e) {\n console.error('Error while transforming the decimal number', e);\n return null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IntlDurationPipeOptions } from './intl-duration.pipe';\n\nexport const INTL_DURATION_PIPE_DEFAULT_OPTIONS = new InjectionToken<\n Omit<IntlDurationPipeOptions, 'locale'>\n>('IntlDurationPipeDefaultOptions');\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { IntlPipeOptions } from '../intl-pipe-options';\nimport { INTL_LOCALES } from '../locale';\nimport { INTL_DURATION_PIPE_DEFAULT_OPTIONS } from './intl-duration-pipe-default-options';\n\n// ToDo: remove once TypeScript includes official typings\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare namespace Intl {\n export class DurationFormat {\n constructor(locale?: string[] | string, options?: DurationFormatOptions);\n\n format(duration: Duration): string;\n }\n\n export interface DurationFormatOptions {\n style?: DurationItemStyle | 'digital';\n years?: DurationItemStyle;\n yearsDisplay?: DurationItemDisplay;\n months?: DurationItemStyle;\n monthsDisplay?: DurationItemDisplay;\n weeks?: DurationItemStyle;\n weeksDisplay?: DurationItemDisplay;\n days?: DurationItemStyle;\n daysDisplay?: DurationItemDisplay;\n hours?: DurationItemStyle | 'numeric' | '2-digit';\n hoursDisplay?: DurationItemDisplay;\n minutes?: DurationItemStyle | 'numeric' | '2-digit';\n minutesDisplay?: DurationItemDisplay;\n seconds?: DurationItemStyle | 'numeric' | '2-digit';\n secondsDisplay?: DurationItemDisplay;\n milliseconds?: DurationItemStyle | 'numeric' | '2-digit';\n millisecondsDisplay?: DurationItemDisplay;\n microseconds?: DurationItemStyle | 'numeric';\n microsecondsDisplay?: DurationItemDisplay;\n nanoseconds?: DurationItemStyle | 'numeric';\n nanosecondsDisplay?: DurationItemDisplay;\n fractionalDigits?: number;\n }\n\n export type DurationItemStyle = 'long' | 'short' | 'narrow';\n export type DurationItemDisplay = 'always' | 'auto';\n\n export interface Duration {\n years?: number;\n months?: number;\n weeks?: number;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n microseconds?: number;\n nanoseconds?: number;\n }\n}\n\nexport type IntlDurationPipeOptions = Partial<Intl.DurationFormatOptions> &\n IntlPipeOptions;\n\n@Pipe({\n name: 'intlDuration',\n standalone: true,\n})\nexport class IntlDurationPipe implements PipeTransform {\n readonly locale = inject(INTL_LOCALES, { optional: true });\n readonly defaultOptions = inject(INTL_DURATION_PIPE_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n transform(\n value: Intl.Duration | null | undefined,\n options?: IntlDurationPipeOptions,\n ): string | null {\n if (!value) {\n return null;\n }\n\n const { locale, ...intlOptions } = options ?? {};\n\n try {\n return new Intl.DurationFormat(locale ?? this.locale ?? undefined, {\n ...this.defaultOptions,\n ...intlOptions,\n }).format(value);\n } catch (e) {\n console.error('Error while transforming the duration value', e);\n return null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IntlLanguagePipeOptions } from './intl-language.pipe';\n\nexport const INTL_LANGUAGE_PIPE_DEFAULT_OPTIONS = new InjectionToken<\n Omit<IntlLanguagePipeOptions, 'locale'>\n>('IntlLanguagePipeDefaultOptions');\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { IntlPipeOptions } from '../intl-pipe-options';\nimport { INTL_LOCALES } from '../locale';\nimport { INTL_LANGUAGE_PIPE_DEFAULT_OPTIONS } from './intl-language-pipe-default-options';\n\nexport type IntlLanguagePipeOptions = Partial<Intl.DisplayNamesOptions> &\n IntlPipeOptions;\n\n@Pipe({\n name: 'intlLanguage',\n standalone: true,\n})\nexport class IntlLanguagePipe implements PipeTransform {\n private readonly locale? = inject(INTL_LOCALES, { optional: true });\n private readonly defaultOptions? = inject<Omit<\n IntlLanguagePipeOptions,\n 'locale'\n > | null>(INTL_LANGUAGE_PIPE_DEFAULT_OPTIONS, { optional: true });\n\n transform(\n value: string | null | undefined,\n options?: IntlLanguagePipeOptions,\n ): string | null {\n if (!value) {\n return null;\n }\n\n const { locale, ...intlOptions } = options ?? {};\n\n try {\n return (\n new Intl.DisplayNames(locale ?? this.locale ?? undefined, {\n ...this.defaultOptions,\n ...intlOptions,\n type: 'language',\n }).of(value) ?? null\n );\n } catch (e) {\n console.error('Error while transforming the language', e);\n return null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IntlListPipeOptions } from './intl-list.pipe';\n\nexport const INTL_LIST_PIPE_DEFAULT_OPTIONS = new InjectionToken<\n Omit<IntlListPipeOptions, 'locale'>\n>('IntlListPipeDefaultOptions');\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { IntlPipeOptions } from '../intl-pipe-options';\nimport { INTL_LOCALES } from '../locale';\nimport { INTL_LIST_PIPE_DEFAULT_OPTIONS } from './intl-list-pipe-default-options';\n\nexport type IntlListPipeOptions = Partial<Intl.ListFormatOptions> &\n IntlPipeOptions;\n\n@Pipe({\n name: 'intlList',\n standalone: true,\n})\nexport class IntlListPipe implements PipeTransform {\n private readonly locale? = inject(INTL_LOCALES, { optional: true });\n private readonly defaultOptions? = inject<Omit<\n IntlListPipeOptions,\n 'locale'\n > | null>(INTL_LIST_PIPE_DEFAULT_OPTIONS, { optional: true });\n\n transform(\n value: Iterable<string> | null | undefined,\n options?: IntlListPipeOptions,\n ): string | null {\n if (!value) {\n return null;\n }\n\n const { locale, ...intlOptions } = options ?? {};\n\n try {\n return new Intl.ListFormat(locale ?? this.locale ?? undefined, {\n ...this.defaultOptions,\n ...intlOptions,\n }).format(value);\n } catch (e) {\n console.error('Error while transforming the list', e);\n return null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IntlPercentPipeOptions } from './intl-percent.pipe';\n\nexport const INTL_PERCENT_PIPE_DEFAULT_OPTIONS = new InjectionToken<\n Omit<IntlPercentPipeOptions, 'locale'>\n>('IntlPercentPipeDefaultOptions');\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { IntlPipeOptions } from '../intl-pipe-options';\nimport { INTL_LOCALES } from '../locale';\nimport { getNumericValue } from '../utils/number-utils';\nimport { INTL_PERCENT_PIPE_DEFAULT_OPTIONS } from './intl-percent-pipe-default-options';\n\ntype OmitOptions =\n | 'unit'\n | 'unitDisplay'\n | 'currency'\n | 'currencyDisplay'\n | 'currencySign';\nexport type IntlPercentPipeOptions = Omit<\n Partial<Intl.NumberFormatOptions>,\n OmitOptions\n> &\n IntlPipeOptions;\n\n@Pipe({\n name: 'intlPercent',\n standalone: true,\n})\nexport class IntlPercentPipe implements PipeTransform {\n private readonly locale? = inject(INTL_LOCALES, { optional: true });\n private readonly defaultOptions? = inject<Omit<\n IntlPercentPipeOptions,\n 'locale'\n > | null>(INTL_PERCENT_PIPE_DEFAULT_OPTIONS, { optional: true });\n\n transform(\n value: number | string | null | undefined,\n options?: IntlPercentPipeOptions,\n ): string | null {\n if (typeof value !== 'number' && !value) {\n return null;\n }\n\n const numericValue = getNumericValue(value);\n\n const { locale, ...intlOptions } = options ?? {};\n\n try {\n return new Intl.NumberFormat(locale ?? this.locale ?? undefined, {\n ...this.defaultOptions,\n ...intlOptions,\n style: 'percent',\n }).format(numericValue);\n } catch (e) {\n console.error('Error while transforming the percent value', e);\n return null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IntlRelativeTimePipeOptions } from './relative-time.pipe';\n\nexport const INTL_RELATIVE_TIME_PIPE_DEFAULT_OPTIONS = new InjectionToken<\n Omit<IntlRelativeTimePipeOptions, 'locale'>\n>('IntlRelativeTimePipeDefaultOptions');\n","import {\n ChangeDetectorRef,\n OnDestroy,\n Pipe,\n PipeTransform,\n inject,\n} from '@angular/core';\nimport { Subject, interval, takeUntil } from 'rxjs';\nimport { IntlPipeOptions } from '../intl-pipe-options';\nimport { INTL_LOCALES } from '../locale';\nimport { INTL_RELATIVE_TIME_PIPE_DEFAULT_OPTIONS } from './relative-time-pipe-default-options';\n\nexport type IntlRelativeTimePipeOptions =\n Partial<Intl.RelativeTimeFormatOptions> & IntlPipeOptions;\n\nenum Time {\n oneSecond = 1000,\n oneMinute = Time.oneSecond * 60,\n oneHour = Time.oneMinute * 60,\n oneDay = Time.oneHour * 24,\n oneWeek = Time.oneDay * 7,\n oneMonth = Time.oneDay * 30,\n oneYear = Time.oneDay * 365,\n}\n\n@Pipe({\n name: 'intlRelativeTime',\n standalone: true,\n pure: false,\n})\nexport class IntlRelativeTimePipe implements PipeTransform, OnDestroy {\n readonly cdr = inject(ChangeDetectorRef, { optional: true });\n private readonly locales? = inject(INTL_LOCALES, { optional: true });\n private readonly defaultOptions? = inject<Omit<\n IntlRelativeTimePipeOptions,\n 'locale'\n > | null>(INTL_RELATIVE_TIME_PIPE_DEFAULT_OPTIONS, { optional: true });\n\n #destroy$?: Subject<void>;\n\n transform(\n value: string | number | Date | null | undefined,\n options?: IntlRelativeTimePipeOptions,\n ): string | null {\n if (typeof value !== 'number' && !value) {\n return null;\n }\n\n const time = new Date(value).getTime();\n if (isNaN(time)) {\n throw new Error(`${value.toString()} is not a valid date`);\n }\n\n this.#destroy();\n this.#destroy$ = new Subject();\n interval(Time.oneMinute)\n .pipe(takeUntil(this.#destroy$))\n .subscribe(() => this.cdr?.markForCheck());\n\n const relativeTimeFormat = new Intl.RelativeTimeFormat(\n options?.locale ?? this.locales ?? undefined,\n { ...this.defaultOptions, ...options },\n );\n\n const currentTime = new Date().getTime();\n const factor = time < currentTime ? -1 : 1;\n const diff = Math.abs(time - currentTime);\n if (diff > (Time.oneYear as number)) {\n return relativeTimeFormat.format(\n factor * Math.floor(diff / Time.oneYear),\n 'year',\n );\n } else if (diff > (Time.oneMonth as number)) {\n return relativeTimeFormat.format(\n factor * Math.floor(diff / Time.oneMonth),\n 'month',\n );\n } else if (diff > (Time.oneWeek as number)) {\n return relativeTimeFormat.format(\n factor * Math.floor(diff / Time.oneWeek),\n 'week',\n );\n } else if (diff > (Time.oneDay as number)) {\n return relativeTimeFormat.format(\n factor * Math.floor(diff / Time.oneDay),\n 'day',\n );\n } else if (diff > (Time.oneHour as number)) {\n return relativeTimeFormat.format(\n factor * Math.floor(diff / Time.oneHour),\n 'hour',\n );\n } else if (diff > (Time.oneMinute as number)) {\n return relativeTimeFormat.format(\n factor * Math.floor(diff / Time.oneMinute),\n 'minute',\n );\n } else {\n return relativeTimeFormat.format(0, 'minute');\n }\n }\n\n ngOnDestroy(): void {\n this.#destroy();\n }\n\n #destroy(): void {\n this.#destroy$?.next();\n this.#destroy$?.complete();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IntlUnitPipeOptions } from './intl-unit.pipe';\n\nexport const INTL_UNIT_PIPE_DEFAULT_OPTIONS = new InjectionToken<\n Omit<IntlUnitPipeOptions, 'locale'>\n>('IntlUnitPipeDefaultOptions');\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { IntlPipeOptions } from '../intl-pipe-options';\nimport { INTL_LOCALES } from '../locale';\nimport { getNumericValue } from '../utils/number-utils';\nimport { INTL_UNIT_PIPE_DEFAULT_OPTIONS } from './intl-unit-pipe-default-options';\n\ntype OmitOptions = 'unit' | 'currency' | 'currencyDisplay' | 'currencySign';\nexport type IntlUnitPipeOptions = Omit<\n Partial<Intl.NumberFormatOptions>,\n OmitOptions\n> &\n IntlPipeOptions;\n\n@Pipe({\n name: 'intlUnit',\n standalone: true,\n})\nexport class IntlUnitPipe implements PipeTransform {\n private readonly locale? = inject(INTL_LOCALES, { optional: true });\n private readonly defaultOptions? = inject<Omit<\n IntlUnitPipeOptions,\n 'locale'\n > | null>(INTL_UNIT_PIPE_DEFAULT_OPTIONS, { optional: true });\n\n transform(\n value: number | string | null | undefined,\n unit: string | undefined,\n options?: IntlUnitPipeOptions,\n ): string | null {\n if (typeof value !== 'number' && !value) {\n return null;\n }\n\n const numericValue = getNumericValue(value);\n\n const { locale, ...intlOptions } = options ?? {};\n\n try {\n return new Intl.NumberFormat(locale ?? this.locale ?? undefined, {\n ...this.defaultOptions,\n ...intlOptions,\n unit,\n style: 'unit',\n }).format(numericValue);\n } catch (e) {\n console.error('Error while transforming the unit value', e);\n return null;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { IntlCountryPipe } from './country/intl-country.pipe';\nimport { IntlCurrencyPipe } from './currency/intl-currency.pipe';\nimport { IntlDatePipe } from './date/intl-date.pipe';\nimport { IntlDecimalPipe } from './decimal/intl-decimal.pipe';\nimport { IntlDurationPipe } from './duration/intl-duration.pipe';\nimport { IntlLanguagePipe } from './language/intl-language.pipe';\nimport { IntlListPipe } from './list/intl-list.pipe';\nimport { IntlPercentPipe } from './percent/intl-percent.pipe';\nimport { IntlRelativeTimePipe } from './relative-time/relative-time.pipe';\nimport { IntlUnitPipe } from './unit/intl-unit.pipe';\n\n@NgModule({\n imports: [\n IntlDatePipe,\n IntlLanguagePipe,\n IntlDecimalPipe,\n IntlPercentPipe,\n IntlCurrencyPipe,\n IntlCountryPipe,\n IntlUnitPipe,\n IntlListPipe,\n IntlRelativeTimePipe,\n IntlDurationPipe,\n ],\n exports: [\n IntlDatePipe,\n IntlLanguagePipe,\n IntlDecimalPipe,\n IntlPercentPipe,\n IntlCurrencyPipe,\n IntlCountryPipe,\n IntlUnitPipe,\n IntlListPipe,\n IntlRelativeTimePipe,\n IntlDurationPipe,\n ],\n})\nexport class IntlModule {}\n","/*\n * Public API Surface of angular-ecmascript-intl\n */\n\nexport * from './lib/country/intl-country-pipe-default-options';\nexport * from './lib/country/intl-country.pipe';\nexport * from './lib/currency/intl-currency-pipe-default-options';\nexport * from './lib/currency/intl-currency.pipe';\nexport * from './lib/date/intl-date-pipe-default-options';\nexport * from './lib/date/intl-date.pipe';\nexport * from './lib/decimal/intl-decimal-pipe-default-options';\nexport * from './lib/decimal/intl-decimal.pipe';\nexport * from './lib/duration/intl-duration-pipe-default-options';\nexport * from './lib/duration/intl-duration.pipe';\nexport * from './lib/intl.module';\nexport * from './lib/language/intl-language-pipe-default-options';\nexport * from './lib/language/intl-language.pipe';\nexport * from './lib/list/intl-list-pipe-default-options';\nexport * from './lib/list/intl-list.pipe';\nexport * from './lib/locale';\nexport * from './lib/percent/intl-percent-pipe-default-options';\nexport * from './lib/percent/intl-percent.pipe';\nexport * from './lib/relative-time/relative-time-pipe-default-options';\nexport * from './lib/relative-time/relative-time.pipe';\nexport * from './lib/unit/intl-unit-pipe-default-options';\nexport * from './lib/unit/intl-unit.pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}