@bravobit/bb-foundation 0.55.1 → 0.55.2

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.
Files changed (40) hide show
  1. package/dialog/index.d.ts +5 -7
  2. package/elements/index.d.ts +33 -42
  3. package/fesm2022/bravobit-bb-foundation-auth.mjs +22 -22
  4. package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
  5. package/fesm2022/bravobit-bb-foundation-collections.mjs +45 -45
  6. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  7. package/fesm2022/bravobit-bb-foundation-combobox.mjs +16 -16
  8. package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
  9. package/fesm2022/bravobit-bb-foundation-dashboard.mjs +25 -25
  10. package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  11. package/fesm2022/bravobit-bb-foundation-dialog.mjs +43 -53
  12. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  13. package/fesm2022/bravobit-bb-foundation-elements.mjs +188 -292
  14. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
  15. package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
  16. package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
  17. package/fesm2022/bravobit-bb-foundation-localize.mjs +16 -16
  18. package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
  19. package/fesm2022/bravobit-bb-foundation-masking.mjs +16 -16
  20. package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
  21. package/fesm2022/bravobit-bb-foundation-notifications.mjs +13 -13
  22. package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
  23. package/fesm2022/bravobit-bb-foundation-permissions.mjs +10 -10
  24. package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
  25. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +10 -10
  26. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  27. package/fesm2022/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  28. package/fesm2022/bravobit-bb-foundation-select.mjs +43 -25
  29. package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
  30. package/fesm2022/bravobit-bb-foundation-storage.mjs +3 -3
  31. package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
  32. package/fesm2022/bravobit-bb-foundation-table.mjs +23 -23
  33. package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
  34. package/fesm2022/bravobit-bb-foundation-tooltip.mjs +10 -10
  35. package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
  36. package/fesm2022/bravobit-bb-foundation-utils.mjs +16 -16
  37. package/fesm2022/bravobit-bb-foundation.mjs +21 -21
  38. package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
  39. package/package.json +23 -23
  40. package/select/index.d.ts +9 -2
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-localize.mjs","sources":["../../../projects/bb-foundation/localize/src/lib/interfaces/options.interfaces.ts","../../../projects/bb-foundation/localize/src/lib/interfaces/functions.interfaces.ts","../../../projects/bb-foundation/localize/src/lib/functions/lowercase.function.ts","../../../projects/bb-foundation/localize/src/lib/functions/uppercase.function.ts","../../../projects/bb-foundation/localize/src/lib/functions/date.function.ts","../../../projects/bb-foundation/localize/src/lib/localizations/english.localization.ts","../../../projects/bb-foundation/localize/src/lib/localizations/dutch.localization.ts","../../../projects/bb-foundation/localize/src/lib/localizations/papiamento.localization.ts","../../../projects/bb-foundation/localize/src/lib/localizations/spanish.localization.ts","../../../projects/bb-foundation/localize/src/lib/handlers/missing.handler.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.data.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.context.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.class.ts","../../../projects/bb-foundation/localize/src/lib/transforms/abstract.transform.ts","../../../projects/bb-foundation/localize/src/lib/localize.service.ts","../../../projects/bb-foundation/localize/src/lib/localize.tokens.ts","../../../projects/bb-foundation/localize/src/lib/transforms/plural.transform.ts","../../../projects/bb-foundation/localize/src/lib/transforms/interpolate.transform.ts","../../../projects/bb-foundation/localize/src/lib/transforms/reference.transform.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-template.directive.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-string/localize-string.component.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-string/localize-string.component.html","../../../projects/bb-foundation/localize/src/lib/localize.pipe.ts","../../../projects/bb-foundation/localize/src/lib/localize.config.ts","../../../projects/bb-foundation/localize/src/lib/localize.module.ts","../../../projects/bb-foundation/localize/src/bravobit-bb-foundation-localize.ts"],"sourcesContent":["//\n// These are the options that the user has\n// when localizing the token.\n//\n\nexport interface LocalizeOptions {\n optional?: boolean;\n dictionary?: string;\n data?: LocalizeOptionsData;\n}\n\n//\n// This is the data that the user can interpolate\n// in the localized strings.\n//\n\nexport interface LocalizeOptionsData {\n [token: string]: string | number | boolean | Date;\n}\n\n//\n// These are the params that the user can set\n// when he wants to localize a token (with the\n// optional options).\n//\n\nexport interface LocalizeParams extends LocalizeOptions {\n token: string;\n}\n","//\n// This is the interface that handles the localize functions.\n// every localize function needs to conform to this interface.\n// The interface allows the user to transform a token into\n// another value.\n//\n\nexport interface LocalizeFunction {\n\n keyword(): string;\n\n transform(value: string, locale?: string): string;\n\n}\n\n//\n// This is the interface that handles the map\n// of all the localize functions.\n//\n\nexport interface LocalizeFunctionMap {\n [keyword: string]: LocalizeFunction;\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\n\n//\n// This function transform the value\n// to a lowercase variant of the value.\n//\n\nexport class LocalizeLowercaseFunction implements LocalizeFunction {\n\n keyword() {\n return 'lowercase';\n }\n\n transform(value: string) {\n return (value ?? '').toLowerCase();\n }\n\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\n\n//\n// This function transform the value\n// to a uppercase variant of the value.\n//\n\nexport class LocalizeUppercaseFunction implements LocalizeFunction {\n\n keyword() {\n return 'uppercase';\n }\n\n transform(value: string) {\n return (value ?? '').toUpperCase();\n }\n\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\nimport {formatDate} from '@angular/common';\n\n//\n// This function transform the value\n// to a localized date.\n//\n\nexport class LocalizeDateFunction implements LocalizeFunction {\n\n keyword() {\n return 'date';\n }\n\n transform(value: string, locale?: string) {\n const date = new Date(value);\n\n if (date.toString() === 'Invalid Date') {\n return '?';\n }\n\n return formatDate(date, 'longDate', locale);\n }\n\n}\n","export const extraEnglishDictionary = {\n 'form-control-errors': {\n 'unknown': 'The field has an unknown error.',\n 'required': 'This field is required.',\n 'pattern': 'Invalid format.',\n 'email': 'The field does not match a valid email address.',\n 'emailTaken': 'The e-mail is already taken.',\n 'passwordMatch': 'The passwords don\\'t match.',\n 'confirm': 'The field does not match.',\n 'fullNumber': 'The field should be a full number.',\n 'min': 'Minimum amount should be {{min}}.',\n 'max': 'Maximum amount should be {{max}}.',\n 'invalidFileType': 'The file type is not allowed.',\n 'invalidFiles': 'One of the files is not allowed.',\n 'maxFileSize': 'The file has exceed the maximum amount of {{maxSize}}.',\n \"maxTotalFileSize\": \"The files together are {{current}} in size and have exceeded the maximum of {{max}}.\",\n 'minDate': 'The first accepted date is {{date|date}}.',\n 'maxDate': 'The last accepted date is {{date|date}}.',\n 'invalidDate': 'The field contains an invalid date.',\n 'minlength': 'Expected a minimum of {{requiredLength}} characters but got {{actualLength}} characters.',\n 'maxlength': 'Expected a maximum of {{requiredLength}} characters but got {{actualLength}} characters.'\n },\n 'select': {\n 'not_found_text': 'No items found',\n 'clear_all_text': 'Clear all',\n 'loading_text': 'Loading...',\n 'type_to_search_text': 'Typ to search',\n 'add_tag_text': 'Add tag'\n },\n 'multi-file-control': {\n 'choose_file': 'Choose a file',\n 'choose_file_text': '@element(label) or drag and drop files here'\n },\n 'image-control': {\n 'button_label': 'Choose an image',\n 'delete_label': 'Delete'\n },\n 'collection': {\n 'search_label': 'Search...',\n 'showing_label': 'Showing @element(start) to @element(end) of @element(total) results',\n 'no_results_label': 'There are no results for @element(query). Try a different search term to find results...',\n 'empty_label': 'There are no results...',\n 'error_label': 'It seems that an error occurred while using the application.'\n },\n 'tables': {\n 'search': 'Search...',\n 'loading': 'Loading...',\n 'empty': 'There is nothing to find here.',\n 'page': 'page',\n 'error_datasource': 'No data source was provided.',\n 'error_unauthorized': 'You need to be authenticated to view this data.',\n 'error_forbidden': 'You do not have access to view this data.',\n 'error_not_found': 'The data was not found.',\n 'error_server': 'A server error occurred while fetching data from the server.',\n 'error_down': 'It looks like the server is down.',\n 'error_unknown': 'A unknown error occurred.'\n },\n 'file-picker': {\n 'choose': 'Choose file',\n 'remove': 'Remove file',\n 'drop': 'or drag and drop file here'\n },\n 'dialog': {\n 'default_confirm_button': 'Confirm',\n 'default_cancel_button': 'Cancel',\n 'default_title': 'Are you sure you want to do this?',\n 'default_description': 'This action may not be undoable once you confirm it. Are you sure you want to do this?'\n },\n 'times': {\n 'tomorrow_at': 'Tomorrow at {{date}}',\n 'today_at': 'Today at {{date}}',\n 'yesterday_at': 'Yesterday at {{date}}'\n }\n};\n","export const extraDutchDictionary = {\n 'form-control-errors': {\n 'unknown': 'Het veld heeft een onbekende fout.',\n 'required': 'Dit veld is verplicht.',\n 'pattern': 'Ongeldig formaat.',\n 'email': 'Het veld komt niet overeen met een geldig e-mailadres.',\n 'emailTaken': 'Het e-mailadres is al bezet.',\n 'passwordMatch': 'De wachtwoorden komen niet overeen.',\n 'confirm': 'Het veld komt niet overeen.',\n 'fullNumber': 'Het veld moet een volledig getal zijn.',\n 'min': 'Minimum hoeveelheid moet {{min}} zijn.',\n 'max': 'Maximum hoeveelheid moet {{max}} zijn.',\n 'invalidFileType': 'Het type bestand is niet toegestaan.',\n 'invalidFiles': 'Een van de bestanden is niet toegestaan.',\n 'maxFileSize': 'Het bestand heeft de maximum hoeveelheid van {{maxSize}} overschreden.',\n 'maxTotalFileSize': 'De bestanden zijn samen {{current}} groot en hebben het maximum van {{max}} overschreden.',\n 'minDate': 'De eerst mogelijke datum is {{date|date}}.',\n 'maxDate': 'De laatst mogelijke datum is {{date|date}}.',\n 'invalidDate': 'Het veld bevat een ongeldige datum.',\n 'minlength': 'Verwachtte minimaal {{requiredLength}} tekens, maar kreeg {{actualLength}} tekens.',\n 'maxlength': 'Verwachtte maximaal {{requiredLength}} tekens, maar kreeg {{actualLength}} tekens.'\n },\n 'select': {\n 'not_found_text': 'Geen items gevonden',\n 'clear_all_text': 'Wis alles',\n 'loading_text': 'Aan het laden...',\n 'type_to_search_text': 'Typ om te zoeken',\n 'add_tag_text': 'Tag toevoegen'\n },\n 'multi-file-control': {\n 'choose_file': 'Kies een bestand',\n 'choose_file_text': '@element(label) of sleep de bestanden hiernaartoe'\n },\n 'image-control': {\n 'button_label': 'Kies een afbeelding',\n 'delete_label': 'Verwijderen'\n },\n 'collection': {\n 'search_label': 'Zoeken...',\n 'showing_label': 'Toont @element(start) tot @element(end) van @element(total) resultaten',\n 'no_results_label': 'Er zijn geen resultaten voor @element(query). Probeer een andere zoekterm om resultaten te vinden...',\n 'empty_label': 'Er zijn geen resultaten...',\n 'error_label': 'Het lijkt erop dat een fout is opgetreden tijdens het gebruiken van de applicatie.'\n },\n 'tables': {\n 'search': 'Zoeken...',\n 'loading': 'Aan het laden...',\n 'empty': 'Er is hier niets te vinden.',\n 'page': 'pagina',\n 'error_datasource': 'Er is geen gegevensbron verstrekt.',\n 'error_unauthorized': 'U moet ingelogd zijn om deze gegevens te bekijken.',\n 'error_forbidden': 'U hebt geen toegang om deze gegevens te bekijken.',\n 'error_not_found': 'De gegevens zijn niet gevonden.',\n 'error_server': 'Er is een serverfout opgetreden bij het ophalen van gegevens van de server.',\n 'error_down': 'Het lijkt erop dat de server down is.',\n 'error_unknown': 'Er is een onbekende fout opgetreden bij het ophalen van gegevens van de server.'\n },\n 'file-picker': {\n 'choose': 'Kies bestand',\n 'remove': 'Verwijder bestand',\n 'drop': 'of sleep het bestand hiernaartoe'\n },\n 'dialog': {\n 'default_confirm_button': 'Ik weet het zeker',\n 'default_cancel_button': 'Annuleren',\n 'default_title': 'Weet u zeker dat u dit wilt doen?',\n 'default_description': 'Deze actie kan mogelijk niet ongedaan worden gemaakt wanneer u deze bevestigt. Weet u zeker dat u dit wilt doen?'\n },\n 'times': {\n 'tomorrow_at': 'Morgen om {{date}}',\n 'today_at': 'Vandaag om {{date}}',\n 'yesterday_at': 'Gisteren om {{date}}'\n }\n};\n","export const extraPapiamentoDictionary = {\n 'form-control-errors': {\n 'unknown': 'E campo tin un fout no konosí.',\n 'required': 'E campo aki ta obligatoro.',\n 'pattern': 'Formato no válido.',\n 'email': 'E campo no ta koinsidí ku un adres di email válido.',\n 'emailTaken': 'E-mail ya ta usa.',\n 'passwordMatch': 'E passwordnan no ta koinsidí.',\n 'confirm': 'E campo no ta koinsidí.',\n 'fullNumber': 'E campo mester ta un number komplet.',\n 'min': 'Kantidad mínimo mester ta {{min}}.',\n 'max': 'Kantidad máximo mester ta {{max}}.',\n 'invalidFileType': 'E tipo di archivo no ta permití.',\n 'invalidFiles': 'Un di e archivonan no ta permití.',\n 'maxFileSize': 'E archivo a pasa e límite máximo di {{maxSize}}.',\n 'maxTotalFileSize': 'E archivonan huntu ta {{current}} den tamaño i a surpasá e máksimo di {{max}}.',\n 'minDate': 'E promé fecha akseptá ta {{date|date}}.',\n 'maxDate': 'E último fecha akseptá ta {{date|date}}.',\n 'invalidDate': 'E campo tin un fecha no válido.',\n 'minlength': 'Espera un mínimo di {{requiredLength}} karakter pero haña {{actualLength}} karakter.',\n 'maxlength': 'Espera un máximo di {{requiredLength}} karakter pero haña {{actualLength}} karakter.'\n },\n 'select': {\n 'not_found_text': 'No a haña niun item',\n 'clear_all_text': 'Limpia tur',\n 'loading_text': 'Ta karga...',\n 'type_to_search_text': 'Skribi pa buska',\n 'add_tag_text': 'Haña tag'\n },\n 'multi-file-control': {\n 'choose_file': 'Skohe un archivo',\n 'choose_file_text': '@element(label) òf trèk i kai archivonan aki'\n },\n 'image-control': {\n 'button_label': 'Skohe un imágen',\n 'delete_label': 'Eliminá'\n },\n 'collection': {\n 'search_label': 'Buska...',\n 'showing_label': 'Ta mustra @element(start) te @element(end) di @element(total) rezultadonan',\n 'no_results_label': 'No tin rezultadonan pa @element(query). Purba un otro término di buska pa haña rezultadonan...',\n 'empty_label': 'No tin rezultadonan...',\n 'error_label': 'Parece ku un fout a pasa durante e uzo di e aplikashon.'\n },\n 'tables': {\n 'search': 'Buska...',\n 'loading': 'Ta karga...',\n 'empty': 'No tin nada pa haña aki.',\n 'page': 'página',\n 'error_datasource': 'No a duna un fuente di dato.',\n 'error_unauthorized': 'Bo mester ta autentiká pa mira e datonan aki.',\n 'error_forbidden': 'Bo no tin akses pa mira e datonan aki.',\n 'error_not_found': 'E datonan no a haña.',\n 'error_server': 'Un fout di server a pasa durante e haña di dato di e server.',\n 'error_down': 'Parece ku e server ta afó.',\n 'error_unknown': 'Un fout no konosí a pasa.'\n },\n 'file-picker': {\n 'choose': 'Skohe archivo',\n 'remove': 'Kita archivo',\n 'drop': 'òf trèk i kai archivo aki'\n },\n 'dialog': {\n 'default_confirm_button': 'Konfirma',\n 'default_cancel_button': 'Kanselá',\n 'default_title': 'Bo ta sigur ku bo ke hasi esaki?',\n 'default_description': 'E akshon aki por no ta reversibel ora bo konfirma. Bo ta sigur ku bo ke hasi esaki?'\n },\n 'times': {\n 'tomorrow_at': 'Mañan na {{date}}',\n 'today_at': 'Awe na {{date}}',\n 'yesterday_at': 'Ayer na {{date}}'\n }\n};\n","export const extraSpanishDictionary = {\n 'form-control-errors': {\n 'unknown': 'El campo tiene un error desconocido.',\n 'required': 'Este campo es obligatorio.',\n 'pattern': 'Formato inválido.',\n 'email': 'El campo no corresponde a una dirección de correo válida.',\n 'emailTaken': 'El correo electrónico ya está en uso.',\n 'passwordMatch': 'Las contraseñas no coinciden.',\n 'confirm': 'El campo no coincide.',\n 'fullNumber': 'El campo debe ser un número completo.',\n 'min': 'La cantidad mínima debe ser {{min}}.',\n 'max': 'La cantidad máxima debe ser {{max}}.',\n 'invalidFileType': 'El tipo de archivo no está permitido.',\n 'invalidFiles': 'Uno de los archivos no está permitido.',\n 'maxFileSize': 'El archivo excede el tamaño máximo de {{maxSize}}.',\n 'maxTotalFileSize': 'Los archivos en conjunto tienen un tamaño de {{current}} y han excedido el máximo de {{max}}.',\n 'minDate': 'La primera fecha aceptada es {{date|date}}.',\n 'maxDate': 'La última fecha aceptada es {{date|date}}.',\n 'invalidDate': 'El campo contiene una fecha inválida.',\n 'minlength': 'Se esperaban al menos {{requiredLength}} caracteres pero se obtuvieron {{actualLength}}.',\n 'maxlength': 'Se esperaban un máximo de {{requiredLength}} caracteres pero se obtuvieron {{actualLength}}.'\n },\n 'select': {\n 'not_found_text': 'No se encontraron artículos',\n 'clear_all_text': 'Limpiar todo',\n 'loading_text': 'Cargando...',\n 'type_to_search_text': 'Escribe para buscar',\n 'add_tag_text': 'Agregar etiqueta'\n },\n 'multi-file-control': {\n 'choose_file': 'Elige un archivo',\n 'choose_file_text': '@element(label) o arrastre los archivos aquí'\n },\n 'image-control': {\n 'button_label': 'Elige una imagen',\n 'delete_label': 'Borrar'\n },\n 'collection': {\n 'search_label': 'Para buscar...',\n 'showing_label': 'Muestra los resultados de @element(start) a @element(end) de @element(total)',\n 'no_results_label': 'No hay resultados para @element(query). Pruebe con un término de búsqueda diferente para encontrar resultados...',\n 'empty_label': 'No hay resultados...',\n 'error_label': 'Parece que se produjo un error al utilizar la aplicación.'\n },\n 'tables': {\n 'search': 'Buscar...',\n 'loading': 'Cargando...',\n 'empty': 'No hay nada que encontrar aquí.',\n 'page': 'página',\n 'error_datasource': 'No se proporcionó una fuente de datos.',\n 'error_unauthorized': 'Necesitas estar autenticado para ver estos datos.',\n 'error_forbidden': 'No tienes acceso para ver estos datos.',\n 'error_not_found': 'No se encontraron los datos.',\n 'error_server': 'Ocurrió un error en el servidor al obtener los datos.',\n 'error_down': 'Parece que el servidor está caído.',\n 'error_unknown': 'Ocurrió un error desconocido.'\n },\n 'file-picker': {\n 'choose': 'Elegir archivo',\n 'remove': 'Quitar archivo',\n 'drop': 'o arrastra y suelta el archivo aquí'\n },\n 'dialog': {\n 'default_confirm_button': 'Confirmar',\n 'default_cancel_button': 'Cancelar',\n 'default_title': '¿Estás seguro de que quieres hacer esto?',\n 'default_description': 'Esta acción puede no ser reversible una vez que la confirmes. ¿Estás seguro de que quieres hacer esto?'\n },\n 'times': {\n 'tomorrow_at': 'Mañana a las {{date}}',\n 'today_at': 'Hoy a las {{date}}',\n 'yesterday_at': 'Ayer a las {{date}}'\n }\n};\n","import {LocalizeHandlerProtocol} from '../interfaces/handlers.interfaces';\nimport {LocalizeParams} from '../interfaces/options.interfaces';\n\nexport class LocalizeMissingHandler implements LocalizeHandlerProtocol {\n\n handle(params: LocalizeParams) {\n // Log to the console when the token was not found\n // if the user did not mark it as optional.\n if (!params?.optional) {\n this.log(`The token with name: \"${params?.token}\" was not found.`);\n }\n\n // Return the default token back.\n return params?.token ?? null;\n }\n\n private log = (message: string) => console?.warn?.(message);\n\n}\n","export type LocalizeDictionaryDataValues = { [key: string]: string | LocalizeDictionaryDataValues };\n\nexport class LocalizeDictionaryData {\n\n constructor(public data: LocalizeDictionaryDataValues) {\n }\n\n}\n","export class LocalizeDictionaryContext {\n\n regexp: RegExp = /^.*$/;\n\n pattern(regexp: RegExp) {\n this.regexp = regexp;\n return this;\n }\n\n matches(value: string | string[]) {\n const formatted = this.formatValue(value);\n const regex = (formatted ?? '')\n .replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n .replace(/\\\\\\*/g, '.*');\n return this.pattern(new RegExp(`^${regex}$`));\n }\n\n group(value: string | string[]) {\n const formatted = this.formatValue(value);\n return this.matches([formatted, '*']);\n }\n\n private formatValue(value: string | string[]) {\n return Array.isArray(value)\n ? value.filter(item => !!item).join('.')\n : value;\n }\n\n}\n","import {LocalizeDictionaryDataValues} from './dictionary.data';\nimport {LocalizeDictionaryContext} from './dictionary.context';\nimport {Localize} from '../localize.service';\n\ndeclare let ngDevMode;\n\nexport class LocalizeDictionary {\n\n private readonly _data: Record<string, string>;\n\n constructor(private _id: string,\n private _locale: string,\n private _supported: string[],\n private _dataValues: LocalizeDictionaryDataValues,\n private _localize: Localize) {\n this._data = this.formatData(this._dataValues);\n }\n\n get id() {\n return this._id ?? null;\n }\n\n get locale() {\n return this._locale ?? null;\n }\n\n get supported() {\n return this._supported ?? [];\n }\n\n get(token: string | string[]) {\n const key = Array.isArray(token) ? token.join('.') : token;\n return this._data?.[key] ?? null;\n }\n\n has(token: string | string[]) {\n return !!this.get(token);\n }\n\n all() {\n return this.some(context => context);\n }\n\n some(callback: (context: LocalizeDictionaryContext) => LocalizeDictionaryContext) {\n const defaultContext = new LocalizeDictionaryContext();\n const context = !!callback ? callback(defaultContext) : defaultContext;\n\n return Object.keys(this._data ?? {})\n .filter(key => context.regexp.test(key))\n .reduce((previous, current) => ([\n ...previous,\n {token: current, value: this.get(current)}\n ]), <{ token: string, value: string }[]>[]);\n }\n\n async compare(to: string | string[]) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode)) {\n const dictionaryIds = (Array.isArray(to) ? to : [to]);\n const dictionaries: LocalizeDictionary[] = [];\n for (const dictionaryId of dictionaryIds) {\n const dictionary = await this._localize.load(dictionaryId);\n dictionaries.push(dictionary);\n }\n\n const warnings = [];\n\n const items = this.all();\n for (const item of items) {\n for (const dictionary of dictionaries) {\n if (!dictionary.has(item?.token)) {\n warnings.push({dictionary: dictionary?.id, value: item?.token});\n }\n }\n }\n\n for (const dictionary of dictionaries) {\n const items = dictionary.all();\n for (const item of items) {\n if (!this.has(item?.token)) {\n warnings.push({dictionary: this.id, value: item?.token});\n }\n }\n }\n\n const compareDictionaryIds = dictionaries.map(dictionary => dictionary?.id).join(', ');\n for (const warning of warnings) {\n console?.warn?.(`Dictionary \"${warning.dictionary}\" is missing token \"${warning.value}\"`);\n }\n console?.warn?.(`Total of ${warnings.length} warning(s) found while comparing \"${this.id}\" -> [${compareDictionaryIds}].`);\n }\n }\n\n count() {\n return Object.keys(this._data ?? {}).length;\n }\n\n private formatData(data: LocalizeDictionaryDataValues, scope: string | null = null) {\n return Object.keys(data ?? {}).reduce((previous, current) => {\n const value = data?.[current];\n if (typeof value === 'object' && value !== null) {\n const reformatted = this.formatData(value, current);\n return {...previous, ...reformatted};\n }\n\n const token = [scope, current].filter(item => !!item).join('.');\n if (previous[token] && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console?.warn?.(`Duplicate key \"${token}\" was found, please verify your translation files.`);\n }\n\n return {...previous, [token]: value};\n }, <Record<string, string>>{});\n }\n\n}\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {Localize} from '../localize.service';\n\nexport abstract class LocalizeTransform {\n\n abstract execute(value: string, data: LocalizeParams['data'], localize: Localize): string;\n\n protected getMatches(value: string, substitutions: [string, string]) {\n // Validate our value exists, else return zero matches.\n if (value === undefined || value === null) {\n return [];\n }\n\n // Get the matching substitutions.\n const {start, end} = this.getSubstitutions(substitutions);\n\n // Compose a regex that will find the matches.\n const regex = new RegExp(`${start}([^${end}]+)${end}`, 'g');\n\n // Execute the regex to find matches.\n let match = regex.exec(value);\n const matches: { match: string, token: string }[] = [];\n\n while (match !== null) {\n matches.push({match: match[0], token: match[1]});\n match = regex.exec(value);\n }\n\n // Return the processed value.\n return matches.filter(item => !!item);\n }\n\n protected getSubstitutions(value: [string, string]) {\n // Escape both substitutions so that they can be used.\n const escape = /[.*+?^${}()|[\\]\\\\]/g;\n const start = value[0].replace(escape, '\\\\$&');\n const end = value[1].replace(escape, '\\\\$&');\n\n // Return the substitutions.\n return {start, end};\n }\n\n}\n","import {LOCALIZE_CONFIG, LOCALIZE_MISSING_HANDLER, LOCALIZE_TRANSFORM} from './localize.tokens';\nimport {LocalizeConfig, LocalizeConfigLanguage} from './interfaces/config.interfaces';\nimport {LocalizeDictionaryData} from './dictionary/dictionary.data';\nimport {LocalizeTransform} from './transforms/abstract.transform';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeDictionary} from './dictionary/dictionary.class';\nimport {LocalizeParams} from './interfaces/options.interfaces';\nimport {inject, Injectable, DOCUMENT} from '@angular/core';\nimport {Languages, WINDOW} from '@bravobit/bb-foundation';\nimport {Storage} from '@bravobit/bb-foundation/storage';\n\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Localize {\n\n // Dependencies.\n private readonly _storage: Storage = inject(Storage);\n private readonly _languages: Languages = inject(Languages);\n private readonly _window?: Window = inject(WINDOW, {optional: true});\n private readonly _document?: Document = inject(DOCUMENT, {optional: true});\n private readonly _config?: LocalizeConfig = inject(LOCALIZE_CONFIG, {optional: true});\n private readonly _transforms?: LocalizeTransform[] = inject(LOCALIZE_TRANSFORM, {optional: true});\n private readonly _missingHandler?: LocalizeMissingHandler = inject(LOCALIZE_MISSING_HANDLER, {optional: true});\n\n // Readonly data.\n private readonly _storageToken: string = this._config?.storageToken ?? 'bb-language-dictionary-id';\n private readonly _availableLanguages: LocalizeConfigLanguage[] = this?._config?.languages ?? [];\n private readonly _bestMatchingLanguage: LocalizeConfigLanguage = this.retrieveBestMatchingLanguage();\n\n private readonly _loadedDictionaries: Map<string, LocalizeDictionary> = new Map<string, LocalizeDictionary>();\n\n // Current dictionary.\n private _current$ = new BehaviorSubject<LocalizeDictionary | null>(null);\n\n // State changes.\n dictionaryChanges$ = this._current$.asObservable();\n\n constructor() {\n this.renderDocumentLanguage();\n }\n\n get languages() {\n return this._availableLanguages ?? [];\n }\n\n get current() {\n return this._current$.getValue();\n }\n\n async load(id: string) {\n if (id === null || id === undefined) {\n throw new Error(`Cannot load language with id: \"${id}\".`);\n }\n\n if (this._loadedDictionaries.has(id)) {\n return this._loadedDictionaries.get(id);\n }\n\n const language = this.languages?.find(language => language?.id === id);\n if (!language || !language?.data) {\n console?.warn?.(`No language was found with id: \"${id}\"; Defaulting to first available language.`);\n const languageId = this.languages?.[0]?.id ?? null;\n return this.load(languageId);\n }\n\n const dictionaryDataValues = await language?.data?.();\n const dictionary = this.createDictionary(dictionaryDataValues, language);\n this._loadedDictionaries.set(id, dictionary);\n return dictionary;\n }\n\n async loadAllLanguages() {\n for (const language of this.languages) {\n await this.load(language?.id);\n }\n }\n\n async switch(id: string, options?: { cache?: boolean, reload?: boolean }) {\n const dictionary = await this.load(id);\n this._current$.next(dictionary);\n\n const cache = options?.cache ?? true;\n if (cache) {\n this._storage.cookie.set<string>(this._storageToken, dictionary?.id, {});\n }\n\n const reload = options?.reload ?? false;\n if (reload) {\n this._window?.location?.reload?.();\n }\n\n return dictionary;\n }\n\n select(id: string) {\n if (!this._loadedDictionaries.has(id)) {\n throw new Error(`Dictionary with id: \"${id}\" not loaded; Load dictionary first before using .select(:id).`);\n }\n return this._loadedDictionaries.get(id);\n }\n\n async initialize() {\n await this.switch(this._bestMatchingLanguage?.id, {reload: false, cache: false});\n return this.compareDictionaries();\n }\n\n clear() {\n this._storage.cookie.remove(this._storageToken);\n }\n\n transform(value: string, data: LocalizeParams['data'] = {}) {\n return (this._transforms ?? []).reduce((previous, current) => {\n return current.execute(previous, data, this);\n }, value);\n }\n\n translate(tokenOrParams: string | LocalizeParams) {\n // 1. Convert to the params.\n const params = this.convertToParams(tokenOrParams);\n\n // 2. Try to find the translation in the dictionary.\n const dictionary = this.getDictionary(params?.dictionary);\n const searchResult = !!dictionary ? dictionary.get(params?.token) : null;\n\n // 3. Verify the translation was found.\n if (!searchResult) {\n if (!this._missingHandler) {\n return null;\n }\n return this._missingHandler.handle(params);\n }\n\n return this.transform(searchResult, params?.data);\n }\n\n private retrieveBestMatchingLanguage() {\n return this.getLanguageFromStorage()\n ?? this.getBestBrowserMatchLanguage()\n ?? this._availableLanguages?.[0];\n }\n\n private getLanguageFromStorage() {\n // Get id from the storage.\n const id = this._storage.cookie.get<string>(this._storageToken);\n\n // Return the language based on the storage id.\n return this._availableLanguages.find(item => item?.id === id);\n }\n\n private getBestBrowserMatchLanguage() {\n // Loop through all browser languages and return the\n // best matching language.\n return this._languages.all.map(({code, region}) => {\n const languageCode = [code, region].filter(data => !!data).join('-');\n\n return this._availableLanguages.find(item => item?.supported?.includes(languageCode));\n }).filter(item => !!item).find((_, index) => index === 0);\n }\n\n private createDictionary(data: LocalizeDictionaryData, language: LocalizeConfigLanguage) {\n return new LocalizeDictionary(language?.id, language?.locale, language?.supported, data?.data, this);\n }\n\n private getDictionary(id: string | null) {\n if (id === null || id === undefined) {\n return this.current;\n }\n return this.select(id);\n }\n\n private renderDocumentLanguage() {\n const element = this._document?.documentElement;\n if (!element) {\n return;\n }\n\n element.lang = this._bestMatchingLanguage?.supported?.[0] ?? this._bestMatchingLanguage?.locale;\n }\n\n private async compareDictionaries() {\n const compareDictionaries = this._config.compareDictionaries ?? false;\n if (!compareDictionaries || !this.current) {\n return;\n }\n\n const languageIds = (this.languages ?? [])\n ?.filter(language => language?.id !== this.current?.id)\n ?.map(language => language?.id);\n\n return await this.current.compare(languageIds);\n }\n\n private convertToParams = (tokenOrParams: string | LocalizeParams) => {\n if (typeof tokenOrParams !== 'string') {\n // Destruct the params from the object.\n const {token, optional, dictionary, data} = tokenOrParams;\n\n // Make sure all parameters are valid\n // by type safe adding them.\n return {token: token, optional: optional ?? false, dictionary: dictionary ?? null, data: data ?? {}};\n }\n\n // If the parameter is a string fill in the blanks.\n return {token: tokenOrParams, optional: false, dictionary: null, data: {}};\n };\n\n}\n","import {distinctUntilChanged, map, startWith} from 'rxjs/operators';\nimport {LocalizeFunction} from './interfaces/functions.interfaces';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeTransform} from './transforms/abstract.transform';\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {Localize} from './localize.service';\nimport {Observable, of} from 'rxjs';\n\nexport const LOCALIZE_FUNCTION: InjectionToken<LocalizeFunction[]> = new InjectionToken('localize function');\nexport const LOCALIZE_CONFIG: InjectionToken<LocalizeConfig> = new InjectionToken('localize config');\nexport const LOCALIZE_TRANSFORM: InjectionToken<LocalizeTransform[]> = new InjectionToken('localize transform');\nexport const LOCALIZE_MISSING_HANDLER: InjectionToken<LocalizeMissingHandler> = new InjectionToken('localize missing handler');\n\nexport const LOCALIZE_ID = new InjectionToken<Observable<string>>(\n 'An abstraction over locale changes',\n {\n factory: () => {\n const localize = inject(Localize, {optional: true});\n if (!localize) {\n return of(inject(LOCALE_ID));\n }\n\n return localize.dictionaryChanges$.pipe(\n map(dictionary => dictionary?.locale ?? null),\n distinctUntilChanged(),\n startWith(localize?.current?.locale ?? null)\n );\n }\n }\n);\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {LOCALIZE_CONFIG} from '../localize.tokens';\nimport {Localize} from '../localize.service';\nimport {inject} from '@angular/core';\n\nexport class LocalizePluralTransform extends LocalizeTransform {\n\n protected readonly config?: LocalizeConfig = inject(LOCALIZE_CONFIG, {optional: true});\n protected readonly substitutions = this.config?.substitutions?.plural ?? ['@plural(', ')'];\n protected readonly defaultAmount = 'default';\n protected readonly multiItemRegex = new RegExp(`(?<value>=([0-9]+|${this.defaultAmount}): *[^,]+)`, 'g');\n protected readonly singleItemRegex = new RegExp(`(=(?<amount>[0-9]+|${this.defaultAmount}): *(?<sentence>.+))`);\n\n override execute(value: string, data: LocalizeParams['data'], _: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n return matches.reduce((previous, current) => {\n const [variable, content] = current.token?.split('|');\n const amount = this.extractAmount(variable, data);\n const pluralToken = this.parsePluralToken(content, amount);\n return previous.replace(current?.match, pluralToken ?? current?.match);\n }, value);\n }\n\n private extractAmount(variable: string, data: LocalizeParams['data']) {\n const trimmedVariable = variable?.trim();\n const value = data?.[trimmedVariable] ?? null;\n return typeof value === 'string' || typeof value === 'number'\n ? value\n : null;\n }\n\n private parsePluralToken(value: string, amount: string | number) {\n const plural = this.getPluralObject(value);\n return plural?.[amount] ?? plural?.[this.defaultAmount] ?? null;\n }\n\n private splitMatches(value: string) {\n let match = this.multiItemRegex.exec(value);\n const matches: string[] = [];\n\n while (match !== null) {\n matches.push(match[0]);\n match = this.multiItemRegex.exec(value);\n }\n\n return matches;\n }\n\n private getPluralObject(value: string) {\n const matches = this.splitMatches(value);\n\n return matches.reduce((previous, current) => {\n const result = current.match(this.singleItemRegex);\n const amount = result.groups['amount'].trim();\n const sentence = result.groups['sentence'].trim();\n return {...previous, [amount]: sentence};\n }, <Record<string, string>>{});\n }\n\n}\n","import {LocalizeFunction, LocalizeFunctionMap} from '../interfaces/functions.interfaces';\nimport {LOCALIZE_CONFIG, LOCALIZE_FUNCTION} from '../localize.tokens';\nimport {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {Localize} from '../localize.service';\nimport {inject} from '@angular/core';\n\nexport class LocalizeInterpolateTransform extends LocalizeTransform {\n\n // Dependencies.\n protected readonly config?: LocalizeConfig = inject(LOCALIZE_CONFIG, {optional: true});\n protected readonly functions?: LocalizeFunction[] = inject(LOCALIZE_FUNCTION, {optional: true});\n protected readonly substitutions = this.config?.substitutions?.references ?? ['{{', '}}'];\n protected readonly functionsMap: LocalizeFunctionMap = (this.functions ?? []).reduce((previous, current) => {\n previous[current?.keyword()] = current;\n return previous;\n }, {});\n\n override execute(value: string, data: LocalizeParams['data'], localize: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n // Replace all matches with the translated value.\n return matches.reduce((previous, current) => {\n // Try to parse the token.\n const interpolatedToken = this.parseInterpolationToken(current?.token, data, localize);\n\n // Replace the match with the translated token.\n return previous.replace(current?.match, interpolatedToken);\n }, value);\n }\n\n protected parseInterpolationToken(value: string, data: LocalizeParams['data'], localize: Localize) {\n // Get the token and the methods by splitting\n // on the pipe symbol.\n const [token, ...methods] = (value ?? '').split('|').map(item => item.trim());\n\n // Get the value for the token from\n // the interpolation data.\n const interpolationValue = data?.[token] ?? 'null';\n\n // Loop through all the middleware methods and try to\n // conform the string to the given parameters.\n return methods.reduce((string, middlewareName) => {\n // Try to retrieve the middleware from the collection.\n const middleware = this.functionsMap?.[middlewareName];\n\n // If the middleware is missing return an error\n // so that the user knows it was not found.\n if (!middleware) {\n return string;\n }\n\n // Execute the middleware function with the string.\n return middleware.transform(string, localize?.current?.locale);\n }, `${interpolationValue}`);\n }\n\n}\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {LOCALIZE_CONFIG} from '../localize.tokens';\nimport {Localize} from '../localize.service';\nimport {inject} from '@angular/core';\n\nexport class LocalizeReferenceTransform extends LocalizeTransform {\n\n // Dependencies.\n protected readonly config?: LocalizeConfig = inject(LOCALIZE_CONFIG, {optional: true});\n protected readonly substitutions = this.config?.substitutions?.references ?? ['#(', ')'];\n\n override execute(value: string, _: LocalizeParams['data'], localize: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n // Replace all matches with the translated value.\n return matches.reduce((previous, current) => {\n // Try to translate the token.\n const translatedToken = localize.translate(current?.token);\n\n // Replace the match with the translated token.\n return previous.replace(current?.match, translatedToken);\n }, value);\n }\n\n}\n","import {Directive, Input, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[bbLocalizeTemplate]'\n})\nexport class BbLocalizeTemplate {\n\n // Inputs.\n @Input('bbLocalizeTemplate') name: string | null = null;\n\n constructor(public templateRef: TemplateRef<any>) {\n }\n\n}\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Input, OnDestroy, QueryList, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbLocalizeTemplate} from '../localize-template.directive';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {startWith} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: '[bb-localize-string]',\n templateUrl: './localize-string.component.html',\n styleUrls: ['./localize-string.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-localize-string'},\n encapsulation: ViewEncapsulation.None,\n imports: [BbTemplate]\n})\nexport class BbLocalizeString implements AfterViewInit, OnDestroy {\n\n // Content children.\n @ContentChildren(BbLocalizeTemplate) items?: QueryList<BbLocalizeTemplate>;\n\n // Inputs.\n @Input() substitutions: [string, string] = ['@element(', ')'];\n\n // Data.\n components: (string | TemplateRef<any>)[] = [];\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n // State.\n private _value: string | null = null;\n\n @Input('bb-localize-string')\n set value(value: string | null) {\n this._value = value;\n this.revalidate();\n }\n\n get value() {\n return this._value;\n }\n\n constructor(private _changeDetection: ChangeDetectorRef) {\n }\n\n ngAfterViewInit() {\n this.observeItemChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private observeItemChanges() {\n const subscription = this.items.changes.pipe(\n startWith(0)\n ).subscribe(() => this.revalidate());\n\n this._subscription.add(subscription);\n }\n\n private revalidate() {\n const items = this.items?.toArray() ?? [];\n if (items.length <= 0) {\n return;\n }\n\n this.setComponents(items);\n }\n\n private setComponents(items: BbLocalizeTemplate[]) {\n const [start, end] = this.substitutions;\n\n const templates = items.reduce((previous, current) => {\n const template = current?.templateRef ?? null;\n const name = current?.name ?? null;\n if (!template || !name) {\n return previous;\n }\n\n return {...previous, [`${start}${name}${end}`]: template};\n }, {});\n\n this.components = this.getStringComponents(this._value)\n .map(component => templates?.[component] ?? component ?? null)\n .filter(item => !!item);\n\n this._changeDetection.detectChanges();\n }\n\n private getStringComponents(value: string) {\n const [start, end] = this.getSubstitutions();\n const regex = new RegExp(`(${start}[a-zA-Z]+${end})`, 'g');\n return value.split(regex);\n }\n\n private getSubstitutions() {\n const [start, end] = this.substitutions;\n const escape = /[.*+?^${}()|[\\]\\\\]/g;\n\n return [\n start.replace(escape, '\\\\$&'),\n end.replace(escape, '\\\\$&')\n ];\n }\n\n}\n","@for (component of components; track component) {\n <ng-template [bbTemplate]=\"component\">{{ component }}</ng-template>\n}\n","import {LocalizeOptions, LocalizeParams} from './interfaces/options.interfaces';\nimport {Optional, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from './localize.service';\n\n@Pipe({\n name: 'bbLocalize'\n})\nexport class BbLocalize implements PipeTransform {\n\n constructor(@Optional() private _localize?: Localize) {\n }\n\n transform(tokenOrParams: string | LocalizeParams, args?: LocalizeOptions) {\n // Combine the params with the options to form the localize params.\n const params = this.combineParamsWithOptions(tokenOrParams, args);\n\n // Validate that the localize service exists in the pipe.\n if (!this._localize) {\n return params?.token ?? null;\n }\n\n // Try to localize the value.\n return this._localize.translate(params);\n }\n\n private combineParamsWithOptions(tokenOrParams: string | LocalizeParams, args?: LocalizeOptions) {\n // Gather the extras.\n const extras = args ?? {};\n\n // Loop through all the keys to find the set options.\n const options = Object.keys(extras).reduce((previous, current) => {\n if (typeof extras?.[current] === 'undefined') {\n return previous;\n }\n\n return {...previous, [current]: extras?.[current]};\n }, {});\n\n // Convert the string token to a params object.\n const params = typeof tokenOrParams === 'string'\n ? {token: tokenOrParams, optional: false, data: {}, dictionary: null}\n : tokenOrParams;\n\n // Return the combined params and options.\n return {...params, ...options};\n }\n\n}\n","import {EnvironmentProviders, LOCALE_ID, makeEnvironmentProviders, inject, provideAppInitializer} from '@angular/core';\nimport {LOCALIZE_CONFIG, LOCALIZE_FUNCTION, LOCALIZE_MISSING_HANDLER, LOCALIZE_TRANSFORM} from './localize.tokens';\nimport {LocalizeInterpolateTransform} from './transforms/interpolate.transform';\nimport {LocalizeReferenceTransform} from './transforms/reference.transform';\nimport {LocalizeLowercaseFunction} from './functions/lowercase.function';\nimport {LocalizeUppercaseFunction} from './functions/uppercase.function';\nimport {LocalizePluralTransform} from './transforms/plural.transform';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeDateFunction} from './functions/date.function';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {Localize} from './localize.service';\n\nexport function provideLocalizeConfig(config: LocalizeConfig): EnvironmentProviders {\n if (config?.languages?.length <= 0) {\n throw new Error('One or more languages should be supplied.');\n }\n\n if (config?.compareDictionaries && config?.mode === 'manual') {\n console?.warn?.('You cannot enable \"compareDictionaries\" when having mode set to \"manual\"; This setting will be ignored.');\n }\n\n const mode = config?.mode ?? 'automatic';\n const automaticProviders = mode === 'automatic'\n ? [\n provideAppInitializer(() => inject(Localize).initialize()),\n {provide: LOCALE_ID, deps: [Localize], useFactory: getLocale}\n ]\n : [];\n\n return makeEnvironmentProviders([\n {provide: LOCALIZE_CONFIG, useValue: config},\n ...automaticProviders,\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeLowercaseFunction, multi: true},\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeUppercaseFunction, multi: true},\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeDateFunction, multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizePluralTransform, deps: [LOCALIZE_CONFIG], multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeReferenceTransform, deps: [LOCALIZE_CONFIG], multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeInterpolateTransform, deps: [LOCALIZE_CONFIG, LOCALIZE_FUNCTION], multi: true},\n {provide: LOCALIZE_MISSING_HANDLER, useClass: LocalizeMissingHandler}\n ]);\n}\n\nexport function getLocale(localize: Localize) {\n return localize?.current?.locale ?? null;\n}\n","import {BbLocalizeString} from './views/localize-string/localize-string.component';\nimport {BbLocalizeTemplate} from './views/localize-template.directive';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {provideLocalizeConfig} from './localize.config';\nimport {BbLocalize} from './localize.pipe';\n\n@NgModule({\n imports: [\n BbLocalize,\n BbLocalizeString,\n BbLocalizeTemplate\n ],\n exports: [\n BbLocalize,\n BbLocalizeString,\n BbLocalizeTemplate\n ]\n})\nexport class LocalizeModule {\n\n static forRoot(config: LocalizeConfig): ModuleWithProviders<LocalizeModule> {\n return {\n ngModule: LocalizeModule,\n providers: [\n provideLocalizeConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.Localize"],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-localize.mjs","sources":["../../../projects/bb-foundation/localize/src/lib/interfaces/options.interfaces.ts","../../../projects/bb-foundation/localize/src/lib/interfaces/functions.interfaces.ts","../../../projects/bb-foundation/localize/src/lib/functions/lowercase.function.ts","../../../projects/bb-foundation/localize/src/lib/functions/uppercase.function.ts","../../../projects/bb-foundation/localize/src/lib/functions/date.function.ts","../../../projects/bb-foundation/localize/src/lib/localizations/english.localization.ts","../../../projects/bb-foundation/localize/src/lib/localizations/dutch.localization.ts","../../../projects/bb-foundation/localize/src/lib/localizations/papiamento.localization.ts","../../../projects/bb-foundation/localize/src/lib/localizations/spanish.localization.ts","../../../projects/bb-foundation/localize/src/lib/handlers/missing.handler.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.data.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.context.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.class.ts","../../../projects/bb-foundation/localize/src/lib/transforms/abstract.transform.ts","../../../projects/bb-foundation/localize/src/lib/localize.service.ts","../../../projects/bb-foundation/localize/src/lib/localize.tokens.ts","../../../projects/bb-foundation/localize/src/lib/transforms/plural.transform.ts","../../../projects/bb-foundation/localize/src/lib/transforms/interpolate.transform.ts","../../../projects/bb-foundation/localize/src/lib/transforms/reference.transform.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-template.directive.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-string/localize-string.component.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-string/localize-string.component.html","../../../projects/bb-foundation/localize/src/lib/localize.pipe.ts","../../../projects/bb-foundation/localize/src/lib/localize.config.ts","../../../projects/bb-foundation/localize/src/lib/localize.module.ts","../../../projects/bb-foundation/localize/src/bravobit-bb-foundation-localize.ts"],"sourcesContent":["//\n// These are the options that the user has\n// when localizing the token.\n//\n\nexport interface LocalizeOptions {\n optional?: boolean;\n dictionary?: string;\n data?: LocalizeOptionsData;\n}\n\n//\n// This is the data that the user can interpolate\n// in the localized strings.\n//\n\nexport interface LocalizeOptionsData {\n [token: string]: string | number | boolean | Date;\n}\n\n//\n// These are the params that the user can set\n// when he wants to localize a token (with the\n// optional options).\n//\n\nexport interface LocalizeParams extends LocalizeOptions {\n token: string;\n}\n","//\n// This is the interface that handles the localize functions.\n// every localize function needs to conform to this interface.\n// The interface allows the user to transform a token into\n// another value.\n//\n\nexport interface LocalizeFunction {\n\n keyword(): string;\n\n transform(value: string, locale?: string): string;\n\n}\n\n//\n// This is the interface that handles the map\n// of all the localize functions.\n//\n\nexport interface LocalizeFunctionMap {\n [keyword: string]: LocalizeFunction;\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\n\n//\n// This function transform the value\n// to a lowercase variant of the value.\n//\n\nexport class LocalizeLowercaseFunction implements LocalizeFunction {\n\n keyword() {\n return 'lowercase';\n }\n\n transform(value: string) {\n return (value ?? '').toLowerCase();\n }\n\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\n\n//\n// This function transform the value\n// to a uppercase variant of the value.\n//\n\nexport class LocalizeUppercaseFunction implements LocalizeFunction {\n\n keyword() {\n return 'uppercase';\n }\n\n transform(value: string) {\n return (value ?? '').toUpperCase();\n }\n\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\nimport {formatDate} from '@angular/common';\n\n//\n// This function transform the value\n// to a localized date.\n//\n\nexport class LocalizeDateFunction implements LocalizeFunction {\n\n keyword() {\n return 'date';\n }\n\n transform(value: string, locale?: string) {\n const date = new Date(value);\n\n if (date.toString() === 'Invalid Date') {\n return '?';\n }\n\n return formatDate(date, 'longDate', locale);\n }\n\n}\n","export const extraEnglishDictionary = {\n 'form-control-errors': {\n 'unknown': 'The field has an unknown error.',\n 'required': 'This field is required.',\n 'pattern': 'Invalid format.',\n 'email': 'The field does not match a valid email address.',\n 'emailTaken': 'The e-mail is already taken.',\n 'passwordMatch': 'The passwords don\\'t match.',\n 'confirm': 'The field does not match.',\n 'fullNumber': 'The field should be a full number.',\n 'min': 'Minimum amount should be {{min}}.',\n 'max': 'Maximum amount should be {{max}}.',\n 'invalidFileType': 'The file type is not allowed.',\n 'invalidFiles': 'One of the files is not allowed.',\n 'maxFileSize': 'The file has exceed the maximum amount of {{maxSize}}.',\n \"maxTotalFileSize\": \"The files together are {{current}} in size and have exceeded the maximum of {{max}}.\",\n 'minDate': 'The first accepted date is {{date|date}}.',\n 'maxDate': 'The last accepted date is {{date|date}}.',\n 'invalidDate': 'The field contains an invalid date.',\n 'minlength': 'Expected a minimum of {{requiredLength}} characters but got {{actualLength}} characters.',\n 'maxlength': 'Expected a maximum of {{requiredLength}} characters but got {{actualLength}} characters.'\n },\n 'select': {\n 'not_found_text': 'No items found',\n 'clear_all_text': 'Clear all',\n 'loading_text': 'Loading...',\n 'type_to_search_text': 'Typ to search',\n 'add_tag_text': 'Add tag'\n },\n 'multi-file-control': {\n 'choose_file': 'Choose a file',\n 'choose_file_text': '@element(label) or drag and drop files here'\n },\n 'image-control': {\n 'button_label': 'Choose an image',\n 'delete_label': 'Delete'\n },\n 'collection': {\n 'search_label': 'Search...',\n 'showing_label': 'Showing @element(start) to @element(end) of @element(total) results',\n 'no_results_label': 'There are no results for @element(query). Try a different search term to find results...',\n 'empty_label': 'There are no results...',\n 'error_label': 'It seems that an error occurred while using the application.'\n },\n 'tables': {\n 'search': 'Search...',\n 'loading': 'Loading...',\n 'empty': 'There is nothing to find here.',\n 'page': 'page',\n 'error_datasource': 'No data source was provided.',\n 'error_unauthorized': 'You need to be authenticated to view this data.',\n 'error_forbidden': 'You do not have access to view this data.',\n 'error_not_found': 'The data was not found.',\n 'error_server': 'A server error occurred while fetching data from the server.',\n 'error_down': 'It looks like the server is down.',\n 'error_unknown': 'A unknown error occurred.'\n },\n 'file-picker': {\n 'choose': 'Choose file',\n 'remove': 'Remove file',\n 'drop': 'or drag and drop file here'\n },\n 'dialog': {\n 'default_confirm_button': 'Confirm',\n 'default_cancel_button': 'Cancel',\n 'default_title': 'Are you sure you want to do this?',\n 'default_description': 'This action may not be undoable once you confirm it. Are you sure you want to do this?'\n },\n 'times': {\n 'tomorrow_at': 'Tomorrow at {{date}}',\n 'today_at': 'Today at {{date}}',\n 'yesterday_at': 'Yesterday at {{date}}'\n }\n};\n","export const extraDutchDictionary = {\n 'form-control-errors': {\n 'unknown': 'Het veld heeft een onbekende fout.',\n 'required': 'Dit veld is verplicht.',\n 'pattern': 'Ongeldig formaat.',\n 'email': 'Het veld komt niet overeen met een geldig e-mailadres.',\n 'emailTaken': 'Het e-mailadres is al bezet.',\n 'passwordMatch': 'De wachtwoorden komen niet overeen.',\n 'confirm': 'Het veld komt niet overeen.',\n 'fullNumber': 'Het veld moet een volledig getal zijn.',\n 'min': 'Minimum hoeveelheid moet {{min}} zijn.',\n 'max': 'Maximum hoeveelheid moet {{max}} zijn.',\n 'invalidFileType': 'Het type bestand is niet toegestaan.',\n 'invalidFiles': 'Een van de bestanden is niet toegestaan.',\n 'maxFileSize': 'Het bestand heeft de maximum hoeveelheid van {{maxSize}} overschreden.',\n 'maxTotalFileSize': 'De bestanden zijn samen {{current}} groot en hebben het maximum van {{max}} overschreden.',\n 'minDate': 'De eerst mogelijke datum is {{date|date}}.',\n 'maxDate': 'De laatst mogelijke datum is {{date|date}}.',\n 'invalidDate': 'Het veld bevat een ongeldige datum.',\n 'minlength': 'Verwachtte minimaal {{requiredLength}} tekens, maar kreeg {{actualLength}} tekens.',\n 'maxlength': 'Verwachtte maximaal {{requiredLength}} tekens, maar kreeg {{actualLength}} tekens.'\n },\n 'select': {\n 'not_found_text': 'Geen items gevonden',\n 'clear_all_text': 'Wis alles',\n 'loading_text': 'Aan het laden...',\n 'type_to_search_text': 'Typ om te zoeken',\n 'add_tag_text': 'Tag toevoegen'\n },\n 'multi-file-control': {\n 'choose_file': 'Kies een bestand',\n 'choose_file_text': '@element(label) of sleep de bestanden hiernaartoe'\n },\n 'image-control': {\n 'button_label': 'Kies een afbeelding',\n 'delete_label': 'Verwijderen'\n },\n 'collection': {\n 'search_label': 'Zoeken...',\n 'showing_label': 'Toont @element(start) tot @element(end) van @element(total) resultaten',\n 'no_results_label': 'Er zijn geen resultaten voor @element(query). Probeer een andere zoekterm om resultaten te vinden...',\n 'empty_label': 'Er zijn geen resultaten...',\n 'error_label': 'Het lijkt erop dat een fout is opgetreden tijdens het gebruiken van de applicatie.'\n },\n 'tables': {\n 'search': 'Zoeken...',\n 'loading': 'Aan het laden...',\n 'empty': 'Er is hier niets te vinden.',\n 'page': 'pagina',\n 'error_datasource': 'Er is geen gegevensbron verstrekt.',\n 'error_unauthorized': 'U moet ingelogd zijn om deze gegevens te bekijken.',\n 'error_forbidden': 'U hebt geen toegang om deze gegevens te bekijken.',\n 'error_not_found': 'De gegevens zijn niet gevonden.',\n 'error_server': 'Er is een serverfout opgetreden bij het ophalen van gegevens van de server.',\n 'error_down': 'Het lijkt erop dat de server down is.',\n 'error_unknown': 'Er is een onbekende fout opgetreden bij het ophalen van gegevens van de server.'\n },\n 'file-picker': {\n 'choose': 'Kies bestand',\n 'remove': 'Verwijder bestand',\n 'drop': 'of sleep het bestand hiernaartoe'\n },\n 'dialog': {\n 'default_confirm_button': 'Ik weet het zeker',\n 'default_cancel_button': 'Annuleren',\n 'default_title': 'Weet u zeker dat u dit wilt doen?',\n 'default_description': 'Deze actie kan mogelijk niet ongedaan worden gemaakt wanneer u deze bevestigt. Weet u zeker dat u dit wilt doen?'\n },\n 'times': {\n 'tomorrow_at': 'Morgen om {{date}}',\n 'today_at': 'Vandaag om {{date}}',\n 'yesterday_at': 'Gisteren om {{date}}'\n }\n};\n","export const extraPapiamentoDictionary = {\n 'form-control-errors': {\n 'unknown': 'E campo tin un fout no konosí.',\n 'required': 'E campo aki ta obligatoro.',\n 'pattern': 'Formato no válido.',\n 'email': 'E campo no ta koinsidí ku un adres di email válido.',\n 'emailTaken': 'E-mail ya ta usa.',\n 'passwordMatch': 'E passwordnan no ta koinsidí.',\n 'confirm': 'E campo no ta koinsidí.',\n 'fullNumber': 'E campo mester ta un number komplet.',\n 'min': 'Kantidad mínimo mester ta {{min}}.',\n 'max': 'Kantidad máximo mester ta {{max}}.',\n 'invalidFileType': 'E tipo di archivo no ta permití.',\n 'invalidFiles': 'Un di e archivonan no ta permití.',\n 'maxFileSize': 'E archivo a pasa e límite máximo di {{maxSize}}.',\n 'maxTotalFileSize': 'E archivonan huntu ta {{current}} den tamaño i a surpasá e máksimo di {{max}}.',\n 'minDate': 'E promé fecha akseptá ta {{date|date}}.',\n 'maxDate': 'E último fecha akseptá ta {{date|date}}.',\n 'invalidDate': 'E campo tin un fecha no válido.',\n 'minlength': 'Espera un mínimo di {{requiredLength}} karakter pero haña {{actualLength}} karakter.',\n 'maxlength': 'Espera un máximo di {{requiredLength}} karakter pero haña {{actualLength}} karakter.'\n },\n 'select': {\n 'not_found_text': 'No a haña niun item',\n 'clear_all_text': 'Limpia tur',\n 'loading_text': 'Ta karga...',\n 'type_to_search_text': 'Skribi pa buska',\n 'add_tag_text': 'Haña tag'\n },\n 'multi-file-control': {\n 'choose_file': 'Skohe un archivo',\n 'choose_file_text': '@element(label) òf trèk i kai archivonan aki'\n },\n 'image-control': {\n 'button_label': 'Skohe un imágen',\n 'delete_label': 'Eliminá'\n },\n 'collection': {\n 'search_label': 'Buska...',\n 'showing_label': 'Ta mustra @element(start) te @element(end) di @element(total) rezultadonan',\n 'no_results_label': 'No tin rezultadonan pa @element(query). Purba un otro término di buska pa haña rezultadonan...',\n 'empty_label': 'No tin rezultadonan...',\n 'error_label': 'Parece ku un fout a pasa durante e uzo di e aplikashon.'\n },\n 'tables': {\n 'search': 'Buska...',\n 'loading': 'Ta karga...',\n 'empty': 'No tin nada pa haña aki.',\n 'page': 'página',\n 'error_datasource': 'No a duna un fuente di dato.',\n 'error_unauthorized': 'Bo mester ta autentiká pa mira e datonan aki.',\n 'error_forbidden': 'Bo no tin akses pa mira e datonan aki.',\n 'error_not_found': 'E datonan no a haña.',\n 'error_server': 'Un fout di server a pasa durante e haña di dato di e server.',\n 'error_down': 'Parece ku e server ta afó.',\n 'error_unknown': 'Un fout no konosí a pasa.'\n },\n 'file-picker': {\n 'choose': 'Skohe archivo',\n 'remove': 'Kita archivo',\n 'drop': 'òf trèk i kai archivo aki'\n },\n 'dialog': {\n 'default_confirm_button': 'Konfirma',\n 'default_cancel_button': 'Kanselá',\n 'default_title': 'Bo ta sigur ku bo ke hasi esaki?',\n 'default_description': 'E akshon aki por no ta reversibel ora bo konfirma. Bo ta sigur ku bo ke hasi esaki?'\n },\n 'times': {\n 'tomorrow_at': 'Mañan na {{date}}',\n 'today_at': 'Awe na {{date}}',\n 'yesterday_at': 'Ayer na {{date}}'\n }\n};\n","export const extraSpanishDictionary = {\n 'form-control-errors': {\n 'unknown': 'El campo tiene un error desconocido.',\n 'required': 'Este campo es obligatorio.',\n 'pattern': 'Formato inválido.',\n 'email': 'El campo no corresponde a una dirección de correo válida.',\n 'emailTaken': 'El correo electrónico ya está en uso.',\n 'passwordMatch': 'Las contraseñas no coinciden.',\n 'confirm': 'El campo no coincide.',\n 'fullNumber': 'El campo debe ser un número completo.',\n 'min': 'La cantidad mínima debe ser {{min}}.',\n 'max': 'La cantidad máxima debe ser {{max}}.',\n 'invalidFileType': 'El tipo de archivo no está permitido.',\n 'invalidFiles': 'Uno de los archivos no está permitido.',\n 'maxFileSize': 'El archivo excede el tamaño máximo de {{maxSize}}.',\n 'maxTotalFileSize': 'Los archivos en conjunto tienen un tamaño de {{current}} y han excedido el máximo de {{max}}.',\n 'minDate': 'La primera fecha aceptada es {{date|date}}.',\n 'maxDate': 'La última fecha aceptada es {{date|date}}.',\n 'invalidDate': 'El campo contiene una fecha inválida.',\n 'minlength': 'Se esperaban al menos {{requiredLength}} caracteres pero se obtuvieron {{actualLength}}.',\n 'maxlength': 'Se esperaban un máximo de {{requiredLength}} caracteres pero se obtuvieron {{actualLength}}.'\n },\n 'select': {\n 'not_found_text': 'No se encontraron artículos',\n 'clear_all_text': 'Limpiar todo',\n 'loading_text': 'Cargando...',\n 'type_to_search_text': 'Escribe para buscar',\n 'add_tag_text': 'Agregar etiqueta'\n },\n 'multi-file-control': {\n 'choose_file': 'Elige un archivo',\n 'choose_file_text': '@element(label) o arrastre los archivos aquí'\n },\n 'image-control': {\n 'button_label': 'Elige una imagen',\n 'delete_label': 'Borrar'\n },\n 'collection': {\n 'search_label': 'Para buscar...',\n 'showing_label': 'Muestra los resultados de @element(start) a @element(end) de @element(total)',\n 'no_results_label': 'No hay resultados para @element(query). Pruebe con un término de búsqueda diferente para encontrar resultados...',\n 'empty_label': 'No hay resultados...',\n 'error_label': 'Parece que se produjo un error al utilizar la aplicación.'\n },\n 'tables': {\n 'search': 'Buscar...',\n 'loading': 'Cargando...',\n 'empty': 'No hay nada que encontrar aquí.',\n 'page': 'página',\n 'error_datasource': 'No se proporcionó una fuente de datos.',\n 'error_unauthorized': 'Necesitas estar autenticado para ver estos datos.',\n 'error_forbidden': 'No tienes acceso para ver estos datos.',\n 'error_not_found': 'No se encontraron los datos.',\n 'error_server': 'Ocurrió un error en el servidor al obtener los datos.',\n 'error_down': 'Parece que el servidor está caído.',\n 'error_unknown': 'Ocurrió un error desconocido.'\n },\n 'file-picker': {\n 'choose': 'Elegir archivo',\n 'remove': 'Quitar archivo',\n 'drop': 'o arrastra y suelta el archivo aquí'\n },\n 'dialog': {\n 'default_confirm_button': 'Confirmar',\n 'default_cancel_button': 'Cancelar',\n 'default_title': '¿Estás seguro de que quieres hacer esto?',\n 'default_description': 'Esta acción puede no ser reversible una vez que la confirmes. ¿Estás seguro de que quieres hacer esto?'\n },\n 'times': {\n 'tomorrow_at': 'Mañana a las {{date}}',\n 'today_at': 'Hoy a las {{date}}',\n 'yesterday_at': 'Ayer a las {{date}}'\n }\n};\n","import {LocalizeHandlerProtocol} from '../interfaces/handlers.interfaces';\nimport {LocalizeParams} from '../interfaces/options.interfaces';\n\nexport class LocalizeMissingHandler implements LocalizeHandlerProtocol {\n\n handle(params: LocalizeParams) {\n // Log to the console when the token was not found\n // if the user did not mark it as optional.\n if (!params?.optional) {\n this.log(`The token with name: \"${params?.token}\" was not found.`);\n }\n\n // Return the default token back.\n return params?.token ?? null;\n }\n\n private log = (message: string) => console?.warn?.(message);\n\n}\n","export type LocalizeDictionaryDataValues = { [key: string]: string | LocalizeDictionaryDataValues };\n\nexport class LocalizeDictionaryData {\n\n constructor(public data: LocalizeDictionaryDataValues) {\n }\n\n}\n","export class LocalizeDictionaryContext {\n\n regexp: RegExp = /^.*$/;\n\n pattern(regexp: RegExp) {\n this.regexp = regexp;\n return this;\n }\n\n matches(value: string | string[]) {\n const formatted = this.formatValue(value);\n const regex = (formatted ?? '')\n .replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n .replace(/\\\\\\*/g, '.*');\n return this.pattern(new RegExp(`^${regex}$`));\n }\n\n group(value: string | string[]) {\n const formatted = this.formatValue(value);\n return this.matches([formatted, '*']);\n }\n\n private formatValue(value: string | string[]) {\n return Array.isArray(value)\n ? value.filter(item => !!item).join('.')\n : value;\n }\n\n}\n","import {LocalizeDictionaryDataValues} from './dictionary.data';\nimport {LocalizeDictionaryContext} from './dictionary.context';\nimport {Localize} from '../localize.service';\n\ndeclare let ngDevMode;\n\nexport class LocalizeDictionary {\n\n private readonly _data: Record<string, string>;\n\n constructor(private _id: string,\n private _locale: string,\n private _supported: string[],\n private _dataValues: LocalizeDictionaryDataValues,\n private _localize: Localize) {\n this._data = this.formatData(this._dataValues);\n }\n\n get id() {\n return this._id ?? null;\n }\n\n get locale() {\n return this._locale ?? null;\n }\n\n get supported() {\n return this._supported ?? [];\n }\n\n get(token: string | string[]) {\n const key = Array.isArray(token) ? token.join('.') : token;\n return this._data?.[key] ?? null;\n }\n\n has(token: string | string[]) {\n return !!this.get(token);\n }\n\n all() {\n return this.some(context => context);\n }\n\n some(callback: (context: LocalizeDictionaryContext) => LocalizeDictionaryContext) {\n const defaultContext = new LocalizeDictionaryContext();\n const context = !!callback ? callback(defaultContext) : defaultContext;\n\n return Object.keys(this._data ?? {})\n .filter(key => context.regexp.test(key))\n .reduce((previous, current) => ([\n ...previous,\n {token: current, value: this.get(current)}\n ]), <{ token: string, value: string }[]>[]);\n }\n\n async compare(to: string | string[]) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode)) {\n const dictionaryIds = (Array.isArray(to) ? to : [to]);\n const dictionaries: LocalizeDictionary[] = [];\n for (const dictionaryId of dictionaryIds) {\n const dictionary = await this._localize.load(dictionaryId);\n dictionaries.push(dictionary);\n }\n\n const warnings = [];\n\n const items = this.all();\n for (const item of items) {\n for (const dictionary of dictionaries) {\n if (!dictionary.has(item?.token)) {\n warnings.push({dictionary: dictionary?.id, value: item?.token});\n }\n }\n }\n\n for (const dictionary of dictionaries) {\n const items = dictionary.all();\n for (const item of items) {\n if (!this.has(item?.token)) {\n warnings.push({dictionary: this.id, value: item?.token});\n }\n }\n }\n\n const compareDictionaryIds = dictionaries.map(dictionary => dictionary?.id).join(', ');\n for (const warning of warnings) {\n console?.warn?.(`Dictionary \"${warning.dictionary}\" is missing token \"${warning.value}\"`);\n }\n console?.warn?.(`Total of ${warnings.length} warning(s) found while comparing \"${this.id}\" -> [${compareDictionaryIds}].`);\n }\n }\n\n count() {\n return Object.keys(this._data ?? {}).length;\n }\n\n private formatData(data: LocalizeDictionaryDataValues, scope: string | null = null) {\n return Object.keys(data ?? {}).reduce((previous, current) => {\n const value = data?.[current];\n if (typeof value === 'object' && value !== null) {\n const reformatted = this.formatData(value, current);\n return {...previous, ...reformatted};\n }\n\n const token = [scope, current].filter(item => !!item).join('.');\n if (previous[token] && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console?.warn?.(`Duplicate key \"${token}\" was found, please verify your translation files.`);\n }\n\n return {...previous, [token]: value};\n }, <Record<string, string>>{});\n }\n\n}\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {Localize} from '../localize.service';\n\nexport abstract class LocalizeTransform {\n\n abstract execute(value: string, data: LocalizeParams['data'], localize: Localize): string;\n\n protected getMatches(value: string, substitutions: [string, string]) {\n // Validate our value exists, else return zero matches.\n if (value === undefined || value === null) {\n return [];\n }\n\n // Get the matching substitutions.\n const {start, end} = this.getSubstitutions(substitutions);\n\n // Compose a regex that will find the matches.\n const regex = new RegExp(`${start}([^${end}]+)${end}`, 'g');\n\n // Execute the regex to find matches.\n let match = regex.exec(value);\n const matches: { match: string, token: string }[] = [];\n\n while (match !== null) {\n matches.push({match: match[0], token: match[1]});\n match = regex.exec(value);\n }\n\n // Return the processed value.\n return matches.filter(item => !!item);\n }\n\n protected getSubstitutions(value: [string, string]) {\n // Escape both substitutions so that they can be used.\n const escape = /[.*+?^${}()|[\\]\\\\]/g;\n const start = value[0].replace(escape, '\\\\$&');\n const end = value[1].replace(escape, '\\\\$&');\n\n // Return the substitutions.\n return {start, end};\n }\n\n}\n","import {LOCALIZE_CONFIG, LOCALIZE_MISSING_HANDLER, LOCALIZE_TRANSFORM} from './localize.tokens';\nimport {LocalizeConfig, LocalizeConfigLanguage} from './interfaces/config.interfaces';\nimport {LocalizeDictionaryData} from './dictionary/dictionary.data';\nimport {LocalizeTransform} from './transforms/abstract.transform';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeDictionary} from './dictionary/dictionary.class';\nimport {LocalizeParams} from './interfaces/options.interfaces';\nimport {inject, Injectable, DOCUMENT} from '@angular/core';\nimport {Languages, WINDOW} from '@bravobit/bb-foundation';\nimport {Storage} from '@bravobit/bb-foundation/storage';\n\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Localize {\n\n // Dependencies.\n private readonly _storage: Storage = inject(Storage);\n private readonly _languages: Languages = inject(Languages);\n private readonly _window?: Window = inject(WINDOW, {optional: true});\n private readonly _document?: Document = inject(DOCUMENT, {optional: true});\n private readonly _config?: LocalizeConfig = inject(LOCALIZE_CONFIG, {optional: true});\n private readonly _transforms?: LocalizeTransform[] = inject(LOCALIZE_TRANSFORM, {optional: true});\n private readonly _missingHandler?: LocalizeMissingHandler = inject(LOCALIZE_MISSING_HANDLER, {optional: true});\n\n // Readonly data.\n private readonly _storageToken: string = this._config?.storageToken ?? 'bb-language-dictionary-id';\n private readonly _availableLanguages: LocalizeConfigLanguage[] = this?._config?.languages ?? [];\n private readonly _bestMatchingLanguage: LocalizeConfigLanguage = this.retrieveBestMatchingLanguage();\n\n private readonly _loadedDictionaries: Map<string, LocalizeDictionary> = new Map<string, LocalizeDictionary>();\n\n // Current dictionary.\n private _current$ = new BehaviorSubject<LocalizeDictionary | null>(null);\n\n // State changes.\n dictionaryChanges$ = this._current$.asObservable();\n\n constructor() {\n this.renderDocumentLanguage();\n }\n\n get languages() {\n return this._availableLanguages ?? [];\n }\n\n get current() {\n return this._current$.getValue();\n }\n\n async load(id: string) {\n if (id === null || id === undefined) {\n throw new Error(`Cannot load language with id: \"${id}\".`);\n }\n\n if (this._loadedDictionaries.has(id)) {\n return this._loadedDictionaries.get(id);\n }\n\n const language = this.languages?.find(language => language?.id === id);\n if (!language || !language?.data) {\n console?.warn?.(`No language was found with id: \"${id}\"; Defaulting to first available language.`);\n const languageId = this.languages?.[0]?.id ?? null;\n return this.load(languageId);\n }\n\n const dictionaryDataValues = await language?.data?.();\n const dictionary = this.createDictionary(dictionaryDataValues, language);\n this._loadedDictionaries.set(id, dictionary);\n return dictionary;\n }\n\n async loadAllLanguages() {\n for (const language of this.languages) {\n await this.load(language?.id);\n }\n }\n\n async switch(id: string, options?: { cache?: boolean, reload?: boolean }) {\n const dictionary = await this.load(id);\n this._current$.next(dictionary);\n\n const cache = options?.cache ?? true;\n if (cache) {\n this._storage.cookie.set<string>(this._storageToken, dictionary?.id, {});\n }\n\n const reload = options?.reload ?? false;\n if (reload) {\n this._window?.location?.reload?.();\n }\n\n return dictionary;\n }\n\n select(id: string) {\n if (!this._loadedDictionaries.has(id)) {\n throw new Error(`Dictionary with id: \"${id}\" not loaded; Load dictionary first before using .select(:id).`);\n }\n return this._loadedDictionaries.get(id);\n }\n\n async initialize() {\n await this.switch(this._bestMatchingLanguage?.id, {reload: false, cache: false});\n return this.compareDictionaries();\n }\n\n clear() {\n this._storage.cookie.remove(this._storageToken);\n }\n\n transform(value: string, data: LocalizeParams['data'] = {}) {\n return (this._transforms ?? []).reduce((previous, current) => {\n return current.execute(previous, data, this);\n }, value);\n }\n\n translate(tokenOrParams: string | LocalizeParams) {\n // 1. Convert to the params.\n const params = this.convertToParams(tokenOrParams);\n\n // 2. Try to find the translation in the dictionary.\n const dictionary = this.getDictionary(params?.dictionary);\n const searchResult = !!dictionary ? dictionary.get(params?.token) : null;\n\n // 3. Verify the translation was found.\n if (!searchResult) {\n if (!this._missingHandler) {\n return null;\n }\n return this._missingHandler.handle(params);\n }\n\n return this.transform(searchResult, params?.data);\n }\n\n private retrieveBestMatchingLanguage() {\n return this.getLanguageFromStorage()\n ?? this.getBestBrowserMatchLanguage()\n ?? this._availableLanguages?.[0];\n }\n\n private getLanguageFromStorage() {\n // Get id from the storage.\n const id = this._storage.cookie.get<string>(this._storageToken);\n\n // Return the language based on the storage id.\n return this._availableLanguages.find(item => item?.id === id);\n }\n\n private getBestBrowserMatchLanguage() {\n // Loop through all browser languages and return the\n // best matching language.\n return this._languages.all.map(({code, region}) => {\n const languageCode = [code, region].filter(data => !!data).join('-');\n\n return this._availableLanguages.find(item => item?.supported?.includes(languageCode));\n }).filter(item => !!item).find((_, index) => index === 0);\n }\n\n private createDictionary(data: LocalizeDictionaryData, language: LocalizeConfigLanguage) {\n return new LocalizeDictionary(language?.id, language?.locale, language?.supported, data?.data, this);\n }\n\n private getDictionary(id: string | null) {\n if (id === null || id === undefined) {\n return this.current;\n }\n return this.select(id);\n }\n\n private renderDocumentLanguage() {\n const element = this._document?.documentElement;\n if (!element) {\n return;\n }\n\n element.lang = this._bestMatchingLanguage?.supported?.[0] ?? this._bestMatchingLanguage?.locale;\n }\n\n private async compareDictionaries() {\n const compareDictionaries = this._config.compareDictionaries ?? false;\n if (!compareDictionaries || !this.current) {\n return;\n }\n\n const languageIds = (this.languages ?? [])\n ?.filter(language => language?.id !== this.current?.id)\n ?.map(language => language?.id);\n\n return await this.current.compare(languageIds);\n }\n\n private convertToParams = (tokenOrParams: string | LocalizeParams) => {\n if (typeof tokenOrParams !== 'string') {\n // Destruct the params from the object.\n const {token, optional, dictionary, data} = tokenOrParams;\n\n // Make sure all parameters are valid\n // by type safe adding them.\n return {token: token, optional: optional ?? false, dictionary: dictionary ?? null, data: data ?? {}};\n }\n\n // If the parameter is a string fill in the blanks.\n return {token: tokenOrParams, optional: false, dictionary: null, data: {}};\n };\n\n}\n","import {distinctUntilChanged, map, startWith} from 'rxjs/operators';\nimport {LocalizeFunction} from './interfaces/functions.interfaces';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeTransform} from './transforms/abstract.transform';\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {Localize} from './localize.service';\nimport {Observable, of} from 'rxjs';\n\nexport const LOCALIZE_FUNCTION: InjectionToken<LocalizeFunction[]> = new InjectionToken('localize function');\nexport const LOCALIZE_CONFIG: InjectionToken<LocalizeConfig> = new InjectionToken('localize config');\nexport const LOCALIZE_TRANSFORM: InjectionToken<LocalizeTransform[]> = new InjectionToken('localize transform');\nexport const LOCALIZE_MISSING_HANDLER: InjectionToken<LocalizeMissingHandler> = new InjectionToken('localize missing handler');\n\nexport const LOCALIZE_ID = new InjectionToken<Observable<string>>(\n 'An abstraction over locale changes',\n {\n factory: () => {\n const localize = inject(Localize, {optional: true});\n if (!localize) {\n return of(inject(LOCALE_ID));\n }\n\n return localize.dictionaryChanges$.pipe(\n map(dictionary => dictionary?.locale ?? null),\n distinctUntilChanged(),\n startWith(localize?.current?.locale ?? null)\n );\n }\n }\n);\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {LOCALIZE_CONFIG} from '../localize.tokens';\nimport {Localize} from '../localize.service';\nimport {inject} from '@angular/core';\n\nexport class LocalizePluralTransform extends LocalizeTransform {\n\n protected readonly config?: LocalizeConfig = inject(LOCALIZE_CONFIG, {optional: true});\n protected readonly substitutions = this.config?.substitutions?.plural ?? ['@plural(', ')'];\n protected readonly defaultAmount = 'default';\n protected readonly multiItemRegex = new RegExp(`(?<value>=([0-9]+|${this.defaultAmount}): *[^,]+)`, 'g');\n protected readonly singleItemRegex = new RegExp(`(=(?<amount>[0-9]+|${this.defaultAmount}): *(?<sentence>.+))`);\n\n override execute(value: string, data: LocalizeParams['data'], _: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n return matches.reduce((previous, current) => {\n const [variable, content] = current.token?.split('|');\n const amount = this.extractAmount(variable, data);\n const pluralToken = this.parsePluralToken(content, amount);\n return previous.replace(current?.match, pluralToken ?? current?.match);\n }, value);\n }\n\n private extractAmount(variable: string, data: LocalizeParams['data']) {\n const trimmedVariable = variable?.trim();\n const value = data?.[trimmedVariable] ?? null;\n return typeof value === 'string' || typeof value === 'number'\n ? value\n : null;\n }\n\n private parsePluralToken(value: string, amount: string | number) {\n const plural = this.getPluralObject(value);\n return plural?.[amount] ?? plural?.[this.defaultAmount] ?? null;\n }\n\n private splitMatches(value: string) {\n let match = this.multiItemRegex.exec(value);\n const matches: string[] = [];\n\n while (match !== null) {\n matches.push(match[0]);\n match = this.multiItemRegex.exec(value);\n }\n\n return matches;\n }\n\n private getPluralObject(value: string) {\n const matches = this.splitMatches(value);\n\n return matches.reduce((previous, current) => {\n const result = current.match(this.singleItemRegex);\n const amount = result.groups['amount'].trim();\n const sentence = result.groups['sentence'].trim();\n return {...previous, [amount]: sentence};\n }, <Record<string, string>>{});\n }\n\n}\n","import {LocalizeFunction, LocalizeFunctionMap} from '../interfaces/functions.interfaces';\nimport {LOCALIZE_CONFIG, LOCALIZE_FUNCTION} from '../localize.tokens';\nimport {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {Localize} from '../localize.service';\nimport {inject} from '@angular/core';\n\nexport class LocalizeInterpolateTransform extends LocalizeTransform {\n\n // Dependencies.\n protected readonly config?: LocalizeConfig = inject(LOCALIZE_CONFIG, {optional: true});\n protected readonly functions?: LocalizeFunction[] = inject(LOCALIZE_FUNCTION, {optional: true});\n protected readonly substitutions = this.config?.substitutions?.references ?? ['{{', '}}'];\n protected readonly functionsMap: LocalizeFunctionMap = (this.functions ?? []).reduce((previous, current) => {\n previous[current?.keyword()] = current;\n return previous;\n }, {});\n\n override execute(value: string, data: LocalizeParams['data'], localize: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n // Replace all matches with the translated value.\n return matches.reduce((previous, current) => {\n // Try to parse the token.\n const interpolatedToken = this.parseInterpolationToken(current?.token, data, localize);\n\n // Replace the match with the translated token.\n return previous.replace(current?.match, interpolatedToken);\n }, value);\n }\n\n protected parseInterpolationToken(value: string, data: LocalizeParams['data'], localize: Localize) {\n // Get the token and the methods by splitting\n // on the pipe symbol.\n const [token, ...methods] = (value ?? '').split('|').map(item => item.trim());\n\n // Get the value for the token from\n // the interpolation data.\n const interpolationValue = data?.[token] ?? 'null';\n\n // Loop through all the middleware methods and try to\n // conform the string to the given parameters.\n return methods.reduce((string, middlewareName) => {\n // Try to retrieve the middleware from the collection.\n const middleware = this.functionsMap?.[middlewareName];\n\n // If the middleware is missing return an error\n // so that the user knows it was not found.\n if (!middleware) {\n return string;\n }\n\n // Execute the middleware function with the string.\n return middleware.transform(string, localize?.current?.locale);\n }, `${interpolationValue}`);\n }\n\n}\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {LOCALIZE_CONFIG} from '../localize.tokens';\nimport {Localize} from '../localize.service';\nimport {inject} from '@angular/core';\n\nexport class LocalizeReferenceTransform extends LocalizeTransform {\n\n // Dependencies.\n protected readonly config?: LocalizeConfig = inject(LOCALIZE_CONFIG, {optional: true});\n protected readonly substitutions = this.config?.substitutions?.references ?? ['#(', ')'];\n\n override execute(value: string, _: LocalizeParams['data'], localize: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n // Replace all matches with the translated value.\n return matches.reduce((previous, current) => {\n // Try to translate the token.\n const translatedToken = localize.translate(current?.token);\n\n // Replace the match with the translated token.\n return previous.replace(current?.match, translatedToken);\n }, value);\n }\n\n}\n","import {Directive, Input, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[bbLocalizeTemplate]'\n})\nexport class BbLocalizeTemplate {\n\n // Inputs.\n @Input('bbLocalizeTemplate') name: string | null = null;\n\n constructor(public templateRef: TemplateRef<any>) {\n }\n\n}\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Input, OnDestroy, QueryList, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbLocalizeTemplate} from '../localize-template.directive';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {startWith} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: '[bb-localize-string]',\n templateUrl: './localize-string.component.html',\n styleUrls: ['./localize-string.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-localize-string'},\n encapsulation: ViewEncapsulation.None,\n imports: [BbTemplate]\n})\nexport class BbLocalizeString implements AfterViewInit, OnDestroy {\n\n // Content children.\n @ContentChildren(BbLocalizeTemplate) items?: QueryList<BbLocalizeTemplate>;\n\n // Inputs.\n @Input() substitutions: [string, string] = ['@element(', ')'];\n\n // Data.\n components: (string | TemplateRef<any>)[] = [];\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n // State.\n private _value: string | null = null;\n\n @Input('bb-localize-string')\n set value(value: string | null) {\n this._value = value;\n this.revalidate();\n }\n\n get value() {\n return this._value;\n }\n\n constructor(private _changeDetection: ChangeDetectorRef) {\n }\n\n ngAfterViewInit() {\n this.observeItemChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private observeItemChanges() {\n const subscription = this.items.changes.pipe(\n startWith(0)\n ).subscribe(() => this.revalidate());\n\n this._subscription.add(subscription);\n }\n\n private revalidate() {\n const items = this.items?.toArray() ?? [];\n if (items.length <= 0) {\n return;\n }\n\n this.setComponents(items);\n }\n\n private setComponents(items: BbLocalizeTemplate[]) {\n const [start, end] = this.substitutions;\n\n const templates = items.reduce((previous, current) => {\n const template = current?.templateRef ?? null;\n const name = current?.name ?? null;\n if (!template || !name) {\n return previous;\n }\n\n return {...previous, [`${start}${name}${end}`]: template};\n }, {});\n\n this.components = this.getStringComponents(this._value)\n .map(component => templates?.[component] ?? component ?? null)\n .filter(item => !!item);\n\n this._changeDetection.detectChanges();\n }\n\n private getStringComponents(value: string) {\n const [start, end] = this.getSubstitutions();\n const regex = new RegExp(`(${start}[a-zA-Z]+${end})`, 'g');\n return value.split(regex);\n }\n\n private getSubstitutions() {\n const [start, end] = this.substitutions;\n const escape = /[.*+?^${}()|[\\]\\\\]/g;\n\n return [\n start.replace(escape, '\\\\$&'),\n end.replace(escape, '\\\\$&')\n ];\n }\n\n}\n","@for (component of components; track component) {\n <ng-template [bbTemplate]=\"component\">{{ component }}</ng-template>\n}\n","import {LocalizeOptions, LocalizeParams} from './interfaces/options.interfaces';\nimport {Optional, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from './localize.service';\n\n@Pipe({\n name: 'bbLocalize'\n})\nexport class BbLocalize implements PipeTransform {\n\n constructor(@Optional() private _localize?: Localize) {\n }\n\n transform(tokenOrParams: string | LocalizeParams, args?: LocalizeOptions) {\n // Combine the params with the options to form the localize params.\n const params = this.combineParamsWithOptions(tokenOrParams, args);\n\n // Validate that the localize service exists in the pipe.\n if (!this._localize) {\n return params?.token ?? null;\n }\n\n // Try to localize the value.\n return this._localize.translate(params);\n }\n\n private combineParamsWithOptions(tokenOrParams: string | LocalizeParams, args?: LocalizeOptions) {\n // Gather the extras.\n const extras = args ?? {};\n\n // Loop through all the keys to find the set options.\n const options = Object.keys(extras).reduce((previous, current) => {\n if (typeof extras?.[current] === 'undefined') {\n return previous;\n }\n\n return {...previous, [current]: extras?.[current]};\n }, {});\n\n // Convert the string token to a params object.\n const params = typeof tokenOrParams === 'string'\n ? {token: tokenOrParams, optional: false, data: {}, dictionary: null}\n : tokenOrParams;\n\n // Return the combined params and options.\n return {...params, ...options};\n }\n\n}\n","import {EnvironmentProviders, LOCALE_ID, makeEnvironmentProviders, inject, provideAppInitializer} from '@angular/core';\nimport {LOCALIZE_CONFIG, LOCALIZE_FUNCTION, LOCALIZE_MISSING_HANDLER, LOCALIZE_TRANSFORM} from './localize.tokens';\nimport {LocalizeInterpolateTransform} from './transforms/interpolate.transform';\nimport {LocalizeReferenceTransform} from './transforms/reference.transform';\nimport {LocalizeLowercaseFunction} from './functions/lowercase.function';\nimport {LocalizeUppercaseFunction} from './functions/uppercase.function';\nimport {LocalizePluralTransform} from './transforms/plural.transform';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeDateFunction} from './functions/date.function';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {Localize} from './localize.service';\n\nexport function provideLocalizeConfig(config: LocalizeConfig): EnvironmentProviders {\n if (config?.languages?.length <= 0) {\n throw new Error('One or more languages should be supplied.');\n }\n\n if (config?.compareDictionaries && config?.mode === 'manual') {\n console?.warn?.('You cannot enable \"compareDictionaries\" when having mode set to \"manual\"; This setting will be ignored.');\n }\n\n const mode = config?.mode ?? 'automatic';\n const automaticProviders = mode === 'automatic'\n ? [\n provideAppInitializer(() => inject(Localize).initialize()),\n {provide: LOCALE_ID, deps: [Localize], useFactory: getLocale}\n ]\n : [];\n\n return makeEnvironmentProviders([\n {provide: LOCALIZE_CONFIG, useValue: config},\n ...automaticProviders,\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeLowercaseFunction, multi: true},\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeUppercaseFunction, multi: true},\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeDateFunction, multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizePluralTransform, deps: [LOCALIZE_CONFIG], multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeReferenceTransform, deps: [LOCALIZE_CONFIG], multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeInterpolateTransform, deps: [LOCALIZE_CONFIG, LOCALIZE_FUNCTION], multi: true},\n {provide: LOCALIZE_MISSING_HANDLER, useClass: LocalizeMissingHandler}\n ]);\n}\n\nexport function getLocale(localize: Localize) {\n return localize?.current?.locale ?? null;\n}\n","import {BbLocalizeString} from './views/localize-string/localize-string.component';\nimport {BbLocalizeTemplate} from './views/localize-template.directive';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {provideLocalizeConfig} from './localize.config';\nimport {BbLocalize} from './localize.pipe';\n\n@NgModule({\n imports: [\n BbLocalize,\n BbLocalizeString,\n BbLocalizeTemplate\n ],\n exports: [\n BbLocalize,\n BbLocalizeString,\n BbLocalizeTemplate\n ]\n})\nexport class LocalizeModule {\n\n static forRoot(config: LocalizeConfig): ModuleWithProviders<LocalizeModule> {\n return {\n ngModule: LocalizeModule,\n providers: [\n provideLocalizeConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.Localize"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;MAEa,yBAAyB,CAAA;IAElC,OAAO,GAAA;AACH,QAAA,OAAO,WAAW;;AAGtB,IAAA,SAAS,CAAC,KAAa,EAAA;QACnB,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE;;AAGzC;;ACfD;AACA;AACA;AACA;MAEa,yBAAyB,CAAA;IAElC,OAAO,GAAA;AACH,QAAA,OAAO,WAAW;;AAGtB,IAAA,SAAS,CAAC,KAAa,EAAA;QACnB,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE;;AAGzC;;ACdD;AACA;AACA;AACA;MAEa,oBAAoB,CAAA;IAE7B,OAAO,GAAA;AACH,QAAA,OAAO,MAAM;;IAGjB,SAAS,CAAC,KAAa,EAAE,MAAe,EAAA;AACpC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAE5B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,cAAc,EAAE;AACpC,YAAA,OAAO,GAAG;;QAGd,OAAO,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC;;AAGlD;;ACxBM,MAAM,sBAAsB,GAAG;AAClC,IAAA,qBAAqB,EAAE;AACnB,QAAA,SAAS,EAAE,iCAAiC;AAC5C,QAAA,UAAU,EAAE,yBAAyB;AACrC,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,OAAO,EAAE,iDAAiD;AAC1D,QAAA,YAAY,EAAE,8BAA8B;AAC5C,QAAA,eAAe,EAAE,6BAA6B;AAC9C,QAAA,SAAS,EAAE,2BAA2B;AACtC,QAAA,YAAY,EAAE,oCAAoC;AAClD,QAAA,KAAK,EAAE,mCAAmC;AAC1C,QAAA,KAAK,EAAE,mCAAmC;AAC1C,QAAA,iBAAiB,EAAE,+BAA+B;AAClD,QAAA,cAAc,EAAE,kCAAkC;AAClD,QAAA,aAAa,EAAE,wDAAwD;AACvE,QAAA,kBAAkB,EAAE,sFAAsF;AAC1G,QAAA,SAAS,EAAE,2CAA2C;AACtD,QAAA,SAAS,EAAE,0CAA0C;AACrD,QAAA,aAAa,EAAE,qCAAqC;AACpD,QAAA,WAAW,EAAE,0FAA0F;AACvG,QAAA,WAAW,EAAE;AAChB,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,gBAAgB,EAAE,gBAAgB;AAClC,QAAA,gBAAgB,EAAE,WAAW;AAC7B,QAAA,cAAc,EAAE,YAAY;AAC5B,QAAA,qBAAqB,EAAE,eAAe;AACtC,QAAA,cAAc,EAAE;AACnB,KAAA;AACD,IAAA,oBAAoB,EAAE;AAClB,QAAA,aAAa,EAAE,eAAe;AAC9B,QAAA,kBAAkB,EAAE;AACvB,KAAA;AACD,IAAA,eAAe,EAAE;AACb,QAAA,cAAc,EAAE,iBAAiB;AACjC,QAAA,cAAc,EAAE;AACnB,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,cAAc,EAAE,WAAW;AAC3B,QAAA,eAAe,EAAE,qEAAqE;AACtF,QAAA,kBAAkB,EAAE,0FAA0F;AAC9G,QAAA,aAAa,EAAE,yBAAyB;AACxC,QAAA,aAAa,EAAE;AAClB,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,OAAO,EAAE,gCAAgC;AACzC,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,kBAAkB,EAAE,8BAA8B;AAClD,QAAA,oBAAoB,EAAE,iDAAiD;AACvE,QAAA,iBAAiB,EAAE,2CAA2C;AAC9D,QAAA,iBAAiB,EAAE,yBAAyB;AAC5C,QAAA,cAAc,EAAE,8DAA8D;AAC9E,QAAA,YAAY,EAAE,mCAAmC;AACjD,QAAA,eAAe,EAAE;AACpB,KAAA;AACD,IAAA,aAAa,EAAE;AACX,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,MAAM,EAAE;AACX,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,uBAAuB,EAAE,QAAQ;AACjC,QAAA,eAAe,EAAE,mCAAmC;AACpD,QAAA,qBAAqB,EAAE;AAC1B,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,aAAa,EAAE,sBAAsB;AACrC,QAAA,UAAU,EAAE,mBAAmB;AAC/B,QAAA,cAAc,EAAE;AACnB;;;ACxEE,MAAM,oBAAoB,GAAG;AAChC,IAAA,qBAAqB,EAAE;AACnB,QAAA,SAAS,EAAE,oCAAoC;AAC/C,QAAA,UAAU,EAAE,wBAAwB;AACpC,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,OAAO,EAAE,wDAAwD;AACjE,QAAA,YAAY,EAAE,8BAA8B;AAC5C,QAAA,eAAe,EAAE,qCAAqC;AACtD,QAAA,SAAS,EAAE,6BAA6B;AACxC,QAAA,YAAY,EAAE,wCAAwC;AACtD,QAAA,KAAK,EAAE,wCAAwC;AAC/C,QAAA,KAAK,EAAE,wCAAwC;AAC/C,QAAA,iBAAiB,EAAE,sCAAsC;AACzD,QAAA,cAAc,EAAE,0CAA0C;AAC1D,QAAA,aAAa,EAAE,wEAAwE;AACvF,QAAA,kBAAkB,EAAE,2FAA2F;AAC/G,QAAA,SAAS,EAAE,4CAA4C;AACvD,QAAA,SAAS,EAAE,6CAA6C;AACxD,QAAA,aAAa,EAAE,qCAAqC;AACpD,QAAA,WAAW,EAAE,oFAAoF;AACjG,QAAA,WAAW,EAAE;AAChB,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,gBAAgB,EAAE,qBAAqB;AACvC,QAAA,gBAAgB,EAAE,WAAW;AAC7B,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,cAAc,EAAE;AACnB,KAAA;AACD,IAAA,oBAAoB,EAAE;AAClB,QAAA,aAAa,EAAE,kBAAkB;AACjC,QAAA,kBAAkB,EAAE;AACvB,KAAA;AACD,IAAA,eAAe,EAAE;AACb,QAAA,cAAc,EAAE,qBAAqB;AACrC,QAAA,cAAc,EAAE;AACnB,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,cAAc,EAAE,WAAW;AAC3B,QAAA,eAAe,EAAE,wEAAwE;AACzF,QAAA,kBAAkB,EAAE,sGAAsG;AAC1H,QAAA,aAAa,EAAE,4BAA4B;AAC3C,QAAA,aAAa,EAAE;AAClB,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,OAAO,EAAE,6BAA6B;AACtC,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,kBAAkB,EAAE,oCAAoC;AACxD,QAAA,oBAAoB,EAAE,oDAAoD;AAC1E,QAAA,iBAAiB,EAAE,mDAAmD;AACtE,QAAA,iBAAiB,EAAE,iCAAiC;AACpD,QAAA,cAAc,EAAE,6EAA6E;AAC7F,QAAA,YAAY,EAAE,uCAAuC;AACrD,QAAA,eAAe,EAAE;AACpB,KAAA;AACD,IAAA,aAAa,EAAE;AACX,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,QAAQ,EAAE,mBAAmB;AAC7B,QAAA,MAAM,EAAE;AACX,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,wBAAwB,EAAE,mBAAmB;AAC7C,QAAA,uBAAuB,EAAE,WAAW;AACpC,QAAA,eAAe,EAAE,mCAAmC;AACpD,QAAA,qBAAqB,EAAE;AAC1B,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,aAAa,EAAE,oBAAoB;AACnC,QAAA,UAAU,EAAE,qBAAqB;AACjC,QAAA,cAAc,EAAE;AACnB;;;ACxEE,MAAM,yBAAyB,GAAG;AACrC,IAAA,qBAAqB,EAAE;AACnB,QAAA,SAAS,EAAE,gCAAgC;AAC3C,QAAA,UAAU,EAAE,4BAA4B;AACxC,QAAA,SAAS,EAAE,oBAAoB;AAC/B,QAAA,OAAO,EAAE,qDAAqD;AAC9D,QAAA,YAAY,EAAE,mBAAmB;AACjC,QAAA,eAAe,EAAE,+BAA+B;AAChD,QAAA,SAAS,EAAE,yBAAyB;AACpC,QAAA,YAAY,EAAE,sCAAsC;AACpD,QAAA,KAAK,EAAE,oCAAoC;AAC3C,QAAA,KAAK,EAAE,oCAAoC;AAC3C,QAAA,iBAAiB,EAAE,kCAAkC;AACrD,QAAA,cAAc,EAAE,mCAAmC;AACnD,QAAA,aAAa,EAAE,kDAAkD;AACjE,QAAA,kBAAkB,EAAE,gFAAgF;AACpG,QAAA,SAAS,EAAE,yCAAyC;AACpD,QAAA,SAAS,EAAE,0CAA0C;AACrD,QAAA,aAAa,EAAE,iCAAiC;AAChD,QAAA,WAAW,EAAE,sFAAsF;AACnG,QAAA,WAAW,EAAE;AAChB,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,gBAAgB,EAAE,qBAAqB;AACvC,QAAA,gBAAgB,EAAE,YAAY;AAC9B,QAAA,cAAc,EAAE,aAAa;AAC7B,QAAA,qBAAqB,EAAE,iBAAiB;AACxC,QAAA,cAAc,EAAE;AACnB,KAAA;AACD,IAAA,oBAAoB,EAAE;AAClB,QAAA,aAAa,EAAE,kBAAkB;AACjC,QAAA,kBAAkB,EAAE;AACvB,KAAA;AACD,IAAA,eAAe,EAAE;AACb,QAAA,cAAc,EAAE,iBAAiB;AACjC,QAAA,cAAc,EAAE;AACnB,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,eAAe,EAAE,4EAA4E;AAC7F,QAAA,kBAAkB,EAAE,gGAAgG;AACpH,QAAA,aAAa,EAAE,wBAAwB;AACvC,QAAA,aAAa,EAAE;AAClB,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,OAAO,EAAE,0BAA0B;AACnC,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,kBAAkB,EAAE,8BAA8B;AAClD,QAAA,oBAAoB,EAAE,+CAA+C;AACrE,QAAA,iBAAiB,EAAE,wCAAwC;AAC3D,QAAA,iBAAiB,EAAE,sBAAsB;AACzC,QAAA,cAAc,EAAE,8DAA8D;AAC9E,QAAA,YAAY,EAAE,4BAA4B;AAC1C,QAAA,eAAe,EAAE;AACpB,KAAA;AACD,IAAA,aAAa,EAAE;AACX,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,MAAM,EAAE;AACX,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,uBAAuB,EAAE,SAAS;AAClC,QAAA,eAAe,EAAE,kCAAkC;AACnD,QAAA,qBAAqB,EAAE;AAC1B,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,aAAa,EAAE,mBAAmB;AAClC,QAAA,UAAU,EAAE,iBAAiB;AAC7B,QAAA,cAAc,EAAE;AACnB;;;ACxEE,MAAM,sBAAsB,GAAG;AAClC,IAAA,qBAAqB,EAAE;AACnB,QAAA,SAAS,EAAE,sCAAsC;AACjD,QAAA,UAAU,EAAE,4BAA4B;AACxC,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,OAAO,EAAE,2DAA2D;AACpE,QAAA,YAAY,EAAE,uCAAuC;AACrD,QAAA,eAAe,EAAE,+BAA+B;AAChD,QAAA,SAAS,EAAE,uBAAuB;AAClC,QAAA,YAAY,EAAE,uCAAuC;AACrD,QAAA,KAAK,EAAE,sCAAsC;AAC7C,QAAA,KAAK,EAAE,sCAAsC;AAC7C,QAAA,iBAAiB,EAAE,uCAAuC;AAC1D,QAAA,cAAc,EAAE,wCAAwC;AACxD,QAAA,aAAa,EAAE,oDAAoD;AACnE,QAAA,kBAAkB,EAAE,+FAA+F;AACnH,QAAA,SAAS,EAAE,6CAA6C;AACxD,QAAA,SAAS,EAAE,4CAA4C;AACvD,QAAA,aAAa,EAAE,uCAAuC;AACtD,QAAA,WAAW,EAAE,0FAA0F;AACvG,QAAA,WAAW,EAAE;AAChB,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,gBAAgB,EAAE,6BAA6B;AAC/C,QAAA,gBAAgB,EAAE,cAAc;AAChC,QAAA,cAAc,EAAE,aAAa;AAC7B,QAAA,qBAAqB,EAAE,qBAAqB;AAC5C,QAAA,cAAc,EAAE;AACnB,KAAA;AACD,IAAA,oBAAoB,EAAE;AAClB,QAAA,aAAa,EAAE,kBAAkB;AACjC,QAAA,kBAAkB,EAAE;AACvB,KAAA;AACD,IAAA,eAAe,EAAE;AACb,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,cAAc,EAAE;AACnB,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,cAAc,EAAE,gBAAgB;AAChC,QAAA,eAAe,EAAE,8EAA8E;AAC/F,QAAA,kBAAkB,EAAE,kHAAkH;AACtI,QAAA,aAAa,EAAE,sBAAsB;AACrC,QAAA,aAAa,EAAE;AAClB,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,OAAO,EAAE,iCAAiC;AAC1C,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,kBAAkB,EAAE,wCAAwC;AAC5D,QAAA,oBAAoB,EAAE,mDAAmD;AACzE,QAAA,iBAAiB,EAAE,wCAAwC;AAC3D,QAAA,iBAAiB,EAAE,8BAA8B;AACjD,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,YAAY,EAAE,oCAAoC;AAClD,QAAA,eAAe,EAAE;AACpB,KAAA;AACD,IAAA,aAAa,EAAE;AACX,QAAA,QAAQ,EAAE,gBAAgB;AAC1B,QAAA,QAAQ,EAAE,gBAAgB;AAC1B,QAAA,MAAM,EAAE;AACX,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,wBAAwB,EAAE,WAAW;AACrC,QAAA,uBAAuB,EAAE,UAAU;AACnC,QAAA,eAAe,EAAE,0CAA0C;AAC3D,QAAA,qBAAqB,EAAE;AAC1B,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,aAAa,EAAE,uBAAuB;AACtC,QAAA,UAAU,EAAE,oBAAoB;AAChC,QAAA,cAAc,EAAE;AACnB;;;MCrEQ,sBAAsB,CAAA;AAE/B,IAAA,MAAM,CAAC,MAAsB,EAAA;;;AAGzB,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,CAAA,sBAAA,EAAyB,MAAM,EAAE,KAAK,CAAA,gBAAA,CAAkB,CAAC;;;AAItE,QAAA,OAAO,MAAM,EAAE,KAAK,IAAI,IAAI;;AAGxB,IAAA,GAAG,GAAG,CAAC,OAAe,KAAK,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC;AAE9D;;MChBY,sBAAsB,CAAA;AAEZ,IAAA,IAAA;AAAnB,IAAA,WAAA,CAAmB,IAAkC,EAAA;QAAlC,IAAA,CAAA,IAAI,GAAJ,IAAI;;AAG1B;;MCPY,yBAAyB,CAAA;IAElC,MAAM,GAAW,MAAM;AAEvB,IAAA,OAAO,CAAC,MAAc,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,OAAO,IAAI;;AAGf,IAAA,OAAO,CAAC,KAAwB,EAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACzC,QAAA,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,EAAE;AACzB,aAAA,OAAO,CAAC,0BAA0B,EAAE,MAAM;AAC1C,aAAA,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;;AAGjD,IAAA,KAAK,CAAC,KAAwB,EAAA;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;;AAGjC,IAAA,WAAW,CAAC,KAAwB,EAAA;AACxC,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK;AACtB,cAAE,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG;cACrC,KAAK;;AAGlB;;MCtBY,kBAAkB,CAAA;AAIP,IAAA,GAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;AACA,IAAA,WAAA;AACA,IAAA,SAAA;AANH,IAAA,KAAK;IAEtB,WAAA,CAAoB,GAAW,EACX,OAAe,EACf,UAAoB,EACpB,WAAyC,EACzC,SAAmB,EAAA;QAJnB,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,SAAS,GAAT,SAAS;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;;AAGlD,IAAA,IAAI,EAAE,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI;;AAG3B,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI;;AAG/B,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,EAAE;;AAGhC,IAAA,GAAG,CAAC,KAAwB,EAAA;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;QAC1D,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI;;AAGpC,IAAA,GAAG,CAAC,KAAwB,EAAA;QACxB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;IAG5B,GAAG,GAAA;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;;AAGxC,IAAA,IAAI,CAAC,QAA2E,EAAA;AAC5E,QAAA,MAAM,cAAc,GAAG,IAAI,yBAAyB,EAAE;AACtD,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,cAAc;QAEtE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AAC9B,aAAA,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACtC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,MAAM;AAC5B,YAAA,GAAG,QAAQ;AACX,YAAA,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;SAC5C,CAAC,EAAsC,EAAE,CAAC;;IAGnD,MAAM,OAAO,CAAC,EAAqB,EAAA;QAC/B,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,GAAG;YACjD,MAAM,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,YAAY,GAAyB,EAAE;AAC7C,YAAA,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;gBACtC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1D,gBAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;;YAGjC,MAAM,QAAQ,GAAG,EAAE;AAEnB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AACxB,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,gBAAA,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE;oBACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAC9B,wBAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC;;;;AAK3E,YAAA,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE;AACnC,gBAAA,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;AAC9B,gBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACxB,wBAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC;;;;AAKpE,YAAA,MAAM,oBAAoB,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACtF,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC5B,gBAAA,OAAO,EAAE,IAAI,GAAG,eAAe,OAAO,CAAC,UAAU,CAAA,oBAAA,EAAuB,OAAO,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC;;AAE7F,YAAA,OAAO,EAAE,IAAI,GAAG,CAAA,SAAA,EAAY,QAAQ,CAAC,MAAM,CAAA,mCAAA,EAAsC,IAAI,CAAC,EAAE,CAAA,MAAA,EAAS,oBAAoB,CAAA,EAAA,CAAI,CAAC;;;IAIlI,KAAK,GAAA;AACD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM;;AAGvC,IAAA,UAAU,CAAC,IAAkC,EAAE,KAAA,GAAuB,IAAI,EAAA;AAC9E,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;AACxD,YAAA,MAAM,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC;YAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;AACnD,gBAAA,OAAO,EAAC,GAAG,QAAQ,EAAE,GAAG,WAAW,EAAC;;YAGxC,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/D,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;gBACpE,OAAO,EAAE,IAAI,GAAG,kBAAkB,KAAK,CAAA,kDAAA,CAAoD,CAAC;;YAGhG,OAAO,EAAC,GAAG,QAAQ,EAAE,CAAC,KAAK,GAAG,KAAK,EAAC;SACvC,EAA0B,EAAE,CAAC;;AAGrC;;MC9GqB,iBAAiB,CAAA;IAIzB,UAAU,CAAC,KAAa,EAAE,aAA+B,EAAA;;QAE/D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,EAAE;;;AAIb,QAAA,MAAM,EAAC,KAAK,EAAE,GAAG,EAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;;AAGzD,QAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAA,EAAG,KAAK,CAAA,GAAA,EAAM,GAAG,MAAM,GAAG,CAAA,CAAE,EAAE,GAAG,CAAC;;QAG3D,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,MAAM,OAAO,GAAuC,EAAE;AAEtD,QAAA,OAAO,KAAK,KAAK,IAAI,EAAE;AACnB,YAAA,OAAO,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC;AAChD,YAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAI7B,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;;AAG/B,IAAA,gBAAgB,CAAC,KAAuB,EAAA;;QAE9C,MAAM,MAAM,GAAG,qBAAqB;AACpC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AAC9C,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;;AAG5C,QAAA,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC;;AAG1B;;MC1BY,QAAQ,CAAA;;AAGA,IAAA,QAAQ,GAAY,MAAM,CAAC,OAAO,CAAC;AACnC,IAAA,UAAU,GAAc,MAAM,CAAC,SAAS,CAAC;IACzC,OAAO,GAAY,MAAM,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IACnD,SAAS,GAAc,MAAM,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IACzD,OAAO,GAAoB,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IACpE,WAAW,GAAyB,MAAM,CAAC,kBAAkB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IAChF,eAAe,GAA4B,MAAM,CAAC,wBAAwB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;;IAG7F,aAAa,GAAW,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,2BAA2B;IACjF,mBAAmB,GAA6B,IAAI,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE;AAC9E,IAAA,qBAAqB,GAA2B,IAAI,CAAC,4BAA4B,EAAE;AAEnF,IAAA,mBAAmB,GAAoC,IAAI,GAAG,EAA8B;;AAGrG,IAAA,SAAS,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC;;AAGxE,IAAA,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AAElD,IAAA,WAAA,GAAA;QACI,IAAI,CAAC,sBAAsB,EAAE;;AAGjC,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,EAAE;;AAGzC,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;IAGpC,MAAM,IAAI,CAAC,EAAU,EAAA;QACjB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;AACjC,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,CAAA,EAAA,CAAI,CAAC;;QAG7D,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;;AAG3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC;QACtE,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YAC9B,OAAO,EAAE,IAAI,GAAG,mCAAmC,EAAE,CAAA,0CAAA,CAA4C,CAAC;AAClG,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI;AAClD,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;QAGhC,MAAM,oBAAoB,GAAG,MAAM,QAAQ,EAAE,IAAI,IAAI;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,QAAQ,CAAC;QACxE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC;AAC5C,QAAA,OAAO,UAAU;;AAGrB,IAAA,MAAM,gBAAgB,GAAA;AAClB,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACnC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;;;AAIrC,IAAA,MAAM,MAAM,CAAC,EAAU,EAAE,OAA+C,EAAA;QACpE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAE/B,QAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI;QACpC,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAS,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;;AAG5E,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK;QACvC,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI;;AAGtC,QAAA,OAAO,UAAU;;AAGrB,IAAA,MAAM,CAAC,EAAU,EAAA;QACb,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACnC,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAA,8DAAA,CAAgE,CAAC;;QAE/G,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;;AAG3C,IAAA,MAAM,UAAU,GAAA;QACZ,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;AAChF,QAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE;;IAGrC,KAAK,GAAA;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;;AAGnD,IAAA,SAAS,CAAC,KAAa,EAAE,IAAA,GAA+B,EAAE,EAAA;AACtD,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;YACzD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;SAC/C,EAAE,KAAK,CAAC;;AAGb,IAAA,SAAS,CAAC,aAAsC,EAAA;;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;;QAGlD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC;QACzD,MAAM,YAAY,GAAG,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI;;QAGxE,IAAI,CAAC,YAAY,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,gBAAA,OAAO,IAAI;;YAEf,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;;QAG9C,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC;;IAG7C,4BAA4B,GAAA;QAChC,OAAO,IAAI,CAAC,sBAAsB;eAC3B,IAAI,CAAC,2BAA2B;AAChC,eAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;;IAGhC,sBAAsB,GAAA;;AAE1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAS,IAAI,CAAC,aAAa,CAAC;;AAG/D,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;;IAGzD,2BAA2B,GAAA;;;AAG/B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,KAAI;YAC9C,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAEpE,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;SACxF,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC;;IAGrD,gBAAgB,CAAC,IAA4B,EAAE,QAAgC,EAAA;QACnF,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;;AAGhG,IAAA,aAAa,CAAC,EAAiB,EAAA;QACnC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;YACjC,OAAO,IAAI,CAAC,OAAO;;AAEvB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;;IAGlB,sBAAsB,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe;QAC/C,IAAI,CAAC,OAAO,EAAE;YACV;;AAGJ,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,MAAM;;AAG3F,IAAA,MAAM,mBAAmB,GAAA;QAC7B,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,KAAK;QACrE,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACvC;;QAGJ,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;AACrC,cAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE;cACpD,GAAG,CAAC,QAAQ,IAAI,QAAQ,EAAE,EAAE,CAAC;QAEnC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;;AAG1C,IAAA,eAAe,GAAG,CAAC,aAAsC,KAAI;AACjE,QAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;;YAEnC,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC,GAAG,aAAa;;;YAIzD,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,IAAI,KAAK,EAAE,UAAU,EAAE,UAAU,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAC;;;AAIxG,QAAA,OAAO,EAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAC;AAC9E,KAAC;uGA/LQ,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAR,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,cAFL,MAAM,EAAA,CAAA;;2FAET,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCNY,iBAAiB,GAAuC,IAAI,cAAc,CAAC,mBAAmB;MAC9F,eAAe,GAAmC,IAAI,cAAc,CAAC,iBAAiB;MACtF,kBAAkB,GAAwC,IAAI,cAAc,CAAC,oBAAoB;MACjG,wBAAwB,GAA2C,IAAI,cAAc,CAAC,0BAA0B;MAEhH,WAAW,GAAG,IAAI,cAAc,CACzC,oCAAoC,EACpC;IACI,OAAO,EAAE,MAAK;AACV,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,OAAO,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;AAGhC,QAAA,OAAO,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CACnC,GAAG,CAAC,UAAU,IAAI,UAAU,EAAE,MAAM,IAAI,IAAI,CAAC,EAC7C,oBAAoB,EAAE,EACtB,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,CAC/C;;AAER,CAAA;;ACtBC,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;IAEvC,MAAM,GAAoB,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AACnE,IAAA,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;IACvE,aAAa,GAAG,SAAS;AACzB,IAAA,cAAc,GAAG,IAAI,MAAM,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAC,aAAa,CAAA,UAAA,CAAY,EAAE,GAAG,CAAC;IACrF,eAAe,GAAG,IAAI,MAAM,CAAC,CAAA,mBAAA,EAAsB,IAAI,CAAC,aAAa,CAAA,oBAAA,CAAsB,CAAC;AAEtG,IAAA,OAAO,CAAC,KAAa,EAAE,IAA4B,EAAE,CAAW,EAAA;AACrE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;QAE1D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;AACxC,YAAA,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;AAC1D,YAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,EAAE,KAAK,CAAC;SACzE,EAAE,KAAK,CAAC;;IAGL,aAAa,CAAC,QAAgB,EAAE,IAA4B,EAAA;AAChE,QAAA,MAAM,eAAe,GAAG,QAAQ,EAAE,IAAI,EAAE;QACxC,MAAM,KAAK,GAAG,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI;QAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK;AACjD,cAAE;cACA,IAAI;;IAGN,gBAAgB,CAAC,KAAa,EAAE,MAAuB,EAAA;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC1C,QAAA,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI;;AAG3D,IAAA,YAAY,CAAC,KAAa,EAAA;QAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3C,MAAM,OAAO,GAAa,EAAE;AAE5B,QAAA,OAAO,KAAK,KAAK,IAAI,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG3C,QAAA,OAAO,OAAO;;AAGV,IAAA,eAAe,CAAC,KAAa,EAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAExC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;YAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;YACjD,OAAO,EAAC,GAAG,QAAQ,EAAE,CAAC,MAAM,GAAG,QAAQ,EAAC;SAC3C,EAA0B,EAAE,CAAC;;AAGrC;;ACtDK,MAAO,4BAA6B,SAAQ,iBAAiB,CAAA;;IAG5C,MAAM,GAAoB,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IACnE,SAAS,GAAwB,MAAM,CAAC,iBAAiB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAC5E,IAAA,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AACtE,IAAA,YAAY,GAAwB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;QACvG,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO;AACtC,QAAA,OAAO,QAAQ;KAClB,EAAE,EAAE,CAAC;AAEG,IAAA,OAAO,CAAC,KAAa,EAAE,IAA4B,EAAE,QAAkB,EAAA;AAC5E,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;;QAG1D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;;AAExC,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC;;YAGtF,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC;SAC7D,EAAE,KAAK,CAAC;;AAGH,IAAA,uBAAuB,CAAC,KAAa,EAAE,IAA4B,EAAE,QAAkB,EAAA;;;AAG7F,QAAA,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;;;QAI7E,MAAM,kBAAkB,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,MAAM;;;QAIlD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,cAAc,KAAI;;YAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;;;YAItD,IAAI,CAAC,UAAU,EAAE;AACb,gBAAA,OAAO,MAAM;;;AAIjB,YAAA,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AAClE,SAAC,EAAE,CAAA,EAAG,kBAAkB,CAAA,CAAE,CAAC;;AAGlC;;ACnDK,MAAO,0BAA2B,SAAQ,iBAAiB,CAAA;;IAG1C,MAAM,GAAoB,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AACnE,IAAA,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;AAE/E,IAAA,OAAO,CAAC,KAAa,EAAE,CAAyB,EAAE,QAAkB,EAAA;AACzE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;;QAG1D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;;YAExC,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;;YAG1D,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC;SAC3D,EAAE,KAAK,CAAC;;AAGhB;;MCrBY,kBAAkB,CAAA;AAKR,IAAA,WAAA;;IAFU,IAAI,GAAkB,IAAI;AAEvD,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAA,CAAA,WAAW,GAAX,WAAW;;uGALrB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,oBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;gFAIgC,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,oBAAoB;;;MCOlB,gBAAgB,CAAA;AA2BL,IAAA,gBAAA;;AAxBiB,IAAA,KAAK;;AAGjC,IAAA,aAAa,GAAqB,CAAC,WAAW,EAAE,GAAG,CAAC;;IAG7D,UAAU,GAAkC,EAAE;;AAGtC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAE;;IAGlC,MAAM,GAAkB,IAAI;IAEpC,IACI,KAAK,CAAC,KAAoB,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,CAAC,UAAU,EAAE;;AAGrB,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM;;AAGtB,IAAA,WAAA,CAAoB,gBAAmC,EAAA;QAAnC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;;IAGpC,eAAe,GAAA;QACX,IAAI,CAAC,kBAAkB,EAAE;;IAG7B,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;;IAG7B,kBAAkB,GAAA;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CACxC,SAAS,CAAC,CAAC,CAAC,CACf,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAEpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;;IAGhC,UAAU,GAAA;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;AACzC,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YACnB;;AAGJ,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;AAGrB,IAAA,aAAa,CAAC,KAA2B,EAAA;QAC7C,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa;QAEvC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;AACjD,YAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI;AAC7C,YAAA,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI;AAClC,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE;AACpB,gBAAA,OAAO,QAAQ;;AAGnB,YAAA,OAAO,EAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAA,EAAG,IAAI,CAAA,EAAG,GAAG,CAAA,CAAE,GAAG,QAAQ,EAAC;SAC5D,EAAE,EAAE,CAAC;QAEN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM;AACjD,aAAA,GAAG,CAAC,SAAS,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI,SAAS,IAAI,IAAI;aAC5D,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;AAE3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;;AAGjC,IAAA,mBAAmB,CAAC,KAAa,EAAA;QACrC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,SAAA,EAAY,GAAG,CAAA,CAAA,CAAG,EAAE,GAAG,CAAC;AAC1D,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;;IAGrB,gBAAgB,GAAA;QACpB,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa;QACvC,MAAM,MAAM,GAAG,qBAAqB;QAEpC,OAAO;AACH,YAAA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7B,YAAA,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;SAC7B;;uGAxFI,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,KAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAGR,kBAAkB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBvC,mIAGA,0DDUc,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAEX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,mBAGf,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAC,OAAO,EAAE,oBAAoB,EAAC,iBACtB,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,UAAU,CAAC,EAAA,QAAA,EAAA,mIAAA,EAAA;sFAKgB,KAAK,EAAA,CAAA;sBAAzC,eAAe;uBAAC,kBAAkB;gBAG1B,aAAa,EAAA,CAAA;sBAArB;gBAYG,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,oBAAoB;;;MEzBlB,UAAU,CAAA;AAEa,IAAA,SAAA;AAAhC,IAAA,WAAA,CAAgC,SAAoB,EAAA;QAApB,IAAA,CAAA,SAAS,GAAT,SAAS;;IAGzC,SAAS,CAAC,aAAsC,EAAE,IAAsB,EAAA;;QAEpE,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,IAAI,CAAC;;AAGjE,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,OAAO,MAAM,EAAE,KAAK,IAAI,IAAI;;;QAIhC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;;IAGnC,wBAAwB,CAAC,aAAsC,EAAE,IAAsB,EAAA;;AAE3F,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE;;AAGzB,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;YAC7D,IAAI,OAAO,MAAM,GAAG,OAAO,CAAC,KAAK,WAAW,EAAE;AAC1C,gBAAA,OAAO,QAAQ;;AAGnB,YAAA,OAAO,EAAC,GAAG,QAAQ,EAAE,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,EAAC;SACrD,EAAE,EAAE,CAAC;;AAGN,QAAA,MAAM,MAAM,GAAG,OAAO,aAAa,KAAK;AACpC,cAAE,EAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI;cAClE,aAAa;;AAGnB,QAAA,OAAO,EAAC,GAAG,MAAM,EAAE,GAAG,OAAO,EAAC;;uGArCzB,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE;AACT,iBAAA;;0BAGgB;;;ACGX,SAAU,qBAAqB,CAAC,MAAsB,EAAA;IACxD,IAAI,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,EAAE;AAChC,QAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;;IAGhE,IAAI,MAAM,EAAE,mBAAmB,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ,EAAE;AAC1D,QAAA,OAAO,EAAE,IAAI,GAAG,yGAAyG,CAAC;;AAG9H,IAAA,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,WAAW;AACxC,IAAA,MAAM,kBAAkB,GAAG,IAAI,KAAK;AAChC,UAAE;YACE,qBAAqB,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;AAC1D,YAAA,EAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS;AAC/D;UACC,EAAE;AAER,IAAA,OAAO,wBAAwB,CAAC;AAC5B,QAAA,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAC;AAC5C,QAAA,GAAG,kBAAkB;QACrB,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAC;QAC9E,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAC;QAC9E,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAC;AACzE,QAAA,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC;AACtG,QAAA,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC;AACzG,QAAA,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC,eAAe,EAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC;AAC9H,QAAA,EAAC,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,sBAAsB;AACvE,KAAA,CAAC;AACN;AAEM,SAAU,SAAS,CAAC,QAAkB,EAAA;AACxC,IAAA,OAAO,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI;AAC5C;;MCzBa,cAAc,CAAA;IAEvB,OAAO,OAAO,CAAC,MAAsB,EAAA;QACjC,OAAO;AACH,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;gBACP,qBAAqB,CAAC,MAAM;AAC/B;SACJ;;uGARI,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAVnB,UAAU;YACV,gBAAgB;AAChB,YAAA,kBAAkB,aAGlB,UAAU;YACV,gBAAgB;YAChB,kBAAkB,CAAA,EAAA,CAAA;wGAGb,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,UAAU;wBACV,gBAAgB;wBAChB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,UAAU;wBACV,gBAAgB;wBAChB;AACH;AACJ,iBAAA;;;AClBD;;AAEG;;;;"}
@@ -105,10 +105,10 @@ class BbInputMask {
105
105
  }
106
106
  // Required so that the template type checker can infer the type of the coerced inputs.
107
107
  static ngAcceptInputType_bbInputMask;
108
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BbInputMask, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
109
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: BbInputMask, isStandalone: true, selector: "input[bbInputMask],input[bbCurrencyMask],input[bbDateMask]", inputs: { mask: ["bbInputMask", "mask"] }, host: { listeners: { "input": "onInput($event.target.value)", "blur": "onTouched($event.target.value)" } }, ngImport: i0 });
108
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: BbInputMask, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
109
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: BbInputMask, isStandalone: true, selector: "input[bbInputMask],input[bbCurrencyMask],input[bbDateMask]", inputs: { mask: ["bbInputMask", "mask"] }, host: { listeners: { "input": "onInput($event.target.value)", "blur": "onTouched($event.target.value)" } }, ngImport: i0 });
110
110
  }
111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BbInputMask, decorators: [{
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: BbInputMask, decorators: [{
112
112
  type: Directive,
113
113
  args: [{
114
114
  selector: 'input[bbInputMask],input[bbCurrencyMask],input[bbDateMask]'
@@ -216,10 +216,10 @@ class Masking {
216
216
  return ['yyyy', 'MM', 'dd'];
217
217
  }
218
218
  }
219
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: Masking, deps: [{ token: i1$1.Localize, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
220
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: Masking, providedIn: 'root' });
219
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: Masking, deps: [{ token: i1$1.Localize, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
220
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: Masking, providedIn: 'root' });
221
221
  }
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: Masking, decorators: [{
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: Masking, decorators: [{
223
223
  type: Injectable,
224
224
  args: [{
225
225
  providedIn: 'root'
@@ -246,10 +246,10 @@ class BbCurrencyMask {
246
246
  // Required so that the template type checker can infer the type of the coerced inputs.
247
247
  static ngAcceptInputType_bbCurrencyMask;
248
248
  static ngAcceptInputType_bbCurrencyMaskOptions;
249
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BbCurrencyMask, deps: [{ token: Masking }, { token: BbInputMask, self: true }], target: i0.ɵɵFactoryTarget.Directive });
250
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: BbCurrencyMask, isStandalone: true, selector: "input[bbCurrencyMask]", inputs: { currencyCode: ["bbCurrencyMask", "currencyCode"], options: ["bbCurrencyMaskOptions", "options"] }, usesOnChanges: true, ngImport: i0 });
249
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: BbCurrencyMask, deps: [{ token: Masking }, { token: BbInputMask, self: true }], target: i0.ɵɵFactoryTarget.Directive });
250
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: BbCurrencyMask, isStandalone: true, selector: "input[bbCurrencyMask]", inputs: { currencyCode: ["bbCurrencyMask", "currencyCode"], options: ["bbCurrencyMaskOptions", "options"] }, usesOnChanges: true, ngImport: i0 });
251
251
  }
252
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BbCurrencyMask, decorators: [{
252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: BbCurrencyMask, decorators: [{
253
253
  type: Directive,
254
254
  args: [{
255
255
  selector: 'input[bbCurrencyMask]'
@@ -282,10 +282,10 @@ class BbDateMask {
282
282
  // Required so that the template type checker can infer the type of the coerced inputs.
283
283
  static ngAcceptInputType_bbDateMask;
284
284
  static ngAcceptInputType_bbDateMaskSeparator;
285
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BbDateMask, deps: [{ token: Masking }, { token: BbInputMask, self: true }], target: i0.ɵɵFactoryTarget.Directive });
286
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: BbDateMask, isStandalone: true, selector: "input[bbDateMask]", inputs: { format: ["bbDateMask", "format"], separator: ["bbDateMaskSeparator", "separator"] }, usesOnChanges: true, ngImport: i0 });
285
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: BbDateMask, deps: [{ token: Masking }, { token: BbInputMask, self: true }], target: i0.ɵɵFactoryTarget.Directive });
286
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: BbDateMask, isStandalone: true, selector: "input[bbDateMask]", inputs: { format: ["bbDateMask", "format"], separator: ["bbDateMaskSeparator", "separator"] }, usesOnChanges: true, ngImport: i0 });
287
287
  }
288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BbDateMask, decorators: [{
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: BbDateMask, decorators: [{
289
289
  type: Directive,
290
290
  args: [{
291
291
  selector: 'input[bbDateMask]'
@@ -301,15 +301,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
301
301
  }] } });
302
302
 
303
303
  class MaskingModule {
304
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: MaskingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
305
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type: MaskingModule, imports: [BbInputMask,
304
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: MaskingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
305
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: MaskingModule, imports: [BbInputMask,
306
306
  BbCurrencyMask,
307
307
  BbDateMask], exports: [BbInputMask,
308
308
  BbCurrencyMask,
309
309
  BbDateMask] });
310
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: MaskingModule });
310
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: MaskingModule });
311
311
  }
312
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: MaskingModule, decorators: [{
312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: MaskingModule, decorators: [{
313
313
  type: NgModule,
314
314
  args: [{
315
315
  imports: [