@bravobit/bb-foundation 0.23.2 → 0.23.5

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 (168) hide show
  1. package/auth/lib/auth.service.d.ts +4 -3
  2. package/auth/lib/guards/anonymous.guard.d.ts +5 -4
  3. package/auth/lib/guards/authenticated.guard.d.ts +5 -4
  4. package/auth/lib/guards/permission.guard.d.ts +5 -4
  5. package/auth/lib/interfaces/config.interface.d.ts +8 -0
  6. package/elements/lib/date-picker/date-picker.component.d.ts +3 -5
  7. package/esm2020/auth/lib/auth.interceptor.mjs +3 -3
  8. package/esm2020/auth/lib/auth.module.mjs +4 -4
  9. package/esm2020/auth/lib/auth.service.mjs +21 -6
  10. package/esm2020/auth/lib/directives/authenticated.directive.mjs +3 -3
  11. package/esm2020/auth/lib/directives/permission.directive.mjs +3 -3
  12. package/esm2020/auth/lib/guards/anonymous.guard.mjs +17 -7
  13. package/esm2020/auth/lib/guards/authenticated.guard.mjs +17 -7
  14. package/esm2020/auth/lib/guards/permission.guard.mjs +17 -7
  15. package/esm2020/auth/lib/interfaces/config.interface.mjs +3 -1
  16. package/esm2020/auth/lib/permissions/permissions.service.mjs +3 -3
  17. package/esm2020/collections/lib/collections.module.mjs +4 -4
  18. package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
  19. package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
  20. package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
  21. package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +3 -3
  22. package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +3 -3
  23. package/esm2020/controls/lib/checkbox/checkbox.module.mjs +4 -4
  24. package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +3 -3
  25. package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +3 -3
  26. package/esm2020/controls/lib/control-error/control-error.module.mjs +4 -4
  27. package/esm2020/controls/lib/controls.module.mjs +4 -4
  28. package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +3 -3
  29. package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +3 -3
  30. package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +3 -3
  31. package/esm2020/controls/lib/form-control/form-control.module.mjs +4 -4
  32. package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
  33. package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
  34. package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
  35. package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
  36. package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
  37. package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +3 -3
  38. package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
  39. package/esm2020/dashboard/lib/dashboard.module.mjs +4 -4
  40. package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
  41. package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +3 -3
  42. package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +3 -3
  43. package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
  44. package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
  45. package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +4 -4
  46. package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
  47. package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
  48. package/esm2020/dialog/lib/dialog.module.mjs +4 -4
  49. package/esm2020/dialog/lib/dialog.service.mjs +3 -3
  50. package/esm2020/elements/lib/avatar/avatar.component.mjs +3 -3
  51. package/esm2020/elements/lib/button/button.component.mjs +6 -6
  52. package/esm2020/elements/lib/checkbox/checkbox.component.mjs +3 -3
  53. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +27 -29
  54. package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
  55. package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
  56. package/esm2020/elements/lib/directives/form-submitter.directive.mjs +3 -3
  57. package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
  58. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +7 -7
  59. package/esm2020/elements/lib/elements.module.mjs +4 -4
  60. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +3 -3
  61. package/esm2020/elements/lib/form-control/form-control.component.mjs +3 -3
  62. package/esm2020/elements/lib/form-error/form-error.component.mjs +3 -3
  63. package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
  64. package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
  65. package/esm2020/elements/lib/image-picker/image-picker.component.mjs +3 -3
  66. package/esm2020/elements/lib/pipes/file-image.pipe.mjs +3 -3
  67. package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
  68. package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +3 -3
  69. package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
  70. package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
  71. package/esm2020/http/lib/http.module.mjs +5 -5
  72. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +3 -3
  73. package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
  74. package/esm2020/lib/core/services/clipboard.service.mjs +4 -4
  75. package/esm2020/lib/core/services/exif.service.mjs +3 -3
  76. package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
  77. package/esm2020/lib/core/services/image-converter.service.mjs +3 -3
  78. package/esm2020/lib/core/services/languages.service.mjs +3 -3
  79. package/esm2020/lib/core/services/network.service.mjs +4 -4
  80. package/esm2020/lib/core/services/patch.service.mjs +4 -4
  81. package/esm2020/localize/lib/dictionary/dictionary.class.mjs +2 -4
  82. package/esm2020/localize/lib/interfaces/config.interfaces.mjs +1 -1
  83. package/esm2020/localize/lib/locale.token.mjs +14 -0
  84. package/esm2020/localize/lib/localize.module.mjs +8 -5
  85. package/esm2020/localize/lib/localize.pipe.mjs +3 -3
  86. package/esm2020/localize/lib/localize.service.mjs +33 -11
  87. package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
  88. package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
  89. package/esm2020/localize/public_api.mjs +2 -1
  90. package/esm2020/masking/lib/directives/currency-mask.directive.mjs +3 -3
  91. package/esm2020/masking/lib/directives/date-mask.directive.mjs +3 -3
  92. package/esm2020/masking/lib/directives/input-mask.directive.mjs +3 -3
  93. package/esm2020/masking/lib/masking.module.mjs +4 -4
  94. package/esm2020/masking/lib/masking.service.mjs +3 -3
  95. package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
  96. package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +3 -3
  97. package/esm2020/notifications/lib/notifications.module.mjs +4 -4
  98. package/esm2020/notifications/lib/notifications.service.mjs +3 -3
  99. package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +49 -15
  100. package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +12 -7
  101. package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
  102. package/esm2020/storage/lib/storage.service.mjs +3 -3
  103. package/esm2020/table/lib/components/table/table.component.mjs +9 -9
  104. package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
  105. package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +3 -3
  106. package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +3 -3
  107. package/esm2020/table/lib/table.module.mjs +4 -4
  108. package/esm2020/theming/lib/theming.directive.mjs +3 -3
  109. package/esm2020/theming/lib/theming.module.mjs +4 -4
  110. package/esm2020/utils/lib/directives/autosize.directive.mjs +3 -3
  111. package/esm2020/utils/lib/directives/focus-trap.directive.mjs +3 -3
  112. package/esm2020/utils/lib/directives/focus.directive.mjs +3 -3
  113. package/esm2020/utils/lib/directives/template.directive.mjs +3 -3
  114. package/esm2020/utils/lib/utils.module.mjs +4 -4
  115. package/fesm2015/bravobit-bb-foundation-auth.mjs +80 -38
  116. package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
  117. package/fesm2015/bravobit-bb-foundation-collections.mjs +22 -22
  118. package/fesm2015/bravobit-bb-foundation-controls.mjs +37 -37
  119. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +25 -25
  120. package/fesm2015/bravobit-bb-foundation-dialog.mjs +31 -31
  121. package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
  122. package/fesm2015/bravobit-bb-foundation-elements.mjs +99 -102
  123. package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
  124. package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
  125. package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -1
  126. package/fesm2015/bravobit-bb-foundation-localize.mjs +73 -35
  127. package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
  128. package/fesm2015/bravobit-bb-foundation-masking.mjs +16 -16
  129. package/fesm2015/bravobit-bb-foundation-notifications.mjs +13 -13
  130. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +64 -25
  131. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  132. package/fesm2015/bravobit-bb-foundation-storage.mjs +3 -3
  133. package/fesm2015/bravobit-bb-foundation-table.mjs +22 -22
  134. package/fesm2015/bravobit-bb-foundation-theming.mjs +7 -7
  135. package/fesm2015/bravobit-bb-foundation-utils.mjs +16 -16
  136. package/fesm2015/bravobit-bb-foundation.mjs +21 -21
  137. package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
  138. package/fesm2020/bravobit-bb-foundation-auth.mjs +80 -38
  139. package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
  140. package/fesm2020/bravobit-bb-foundation-collections.mjs +22 -22
  141. package/fesm2020/bravobit-bb-foundation-controls.mjs +37 -37
  142. package/fesm2020/bravobit-bb-foundation-dashboard.mjs +25 -25
  143. package/fesm2020/bravobit-bb-foundation-dialog.mjs +31 -31
  144. package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
  145. package/fesm2020/bravobit-bb-foundation-elements.mjs +99 -101
  146. package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
  147. package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
  148. package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -1
  149. package/fesm2020/bravobit-bb-foundation-localize.mjs +62 -30
  150. package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
  151. package/fesm2020/bravobit-bb-foundation-masking.mjs +16 -16
  152. package/fesm2020/bravobit-bb-foundation-notifications.mjs +13 -13
  153. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +61 -23
  154. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  155. package/fesm2020/bravobit-bb-foundation-storage.mjs +3 -3
  156. package/fesm2020/bravobit-bb-foundation-table.mjs +22 -22
  157. package/fesm2020/bravobit-bb-foundation-theming.mjs +7 -7
  158. package/fesm2020/bravobit-bb-foundation-utils.mjs +16 -16
  159. package/fesm2020/bravobit-bb-foundation.mjs +21 -21
  160. package/fesm2020/bravobit-bb-foundation.mjs.map +1 -1
  161. package/localize/lib/interfaces/config.interfaces.d.ts +1 -0
  162. package/localize/lib/locale.token.d.ts +3 -0
  163. package/localize/lib/localize.module.d.ts +1 -1
  164. package/localize/lib/localize.service.d.ts +6 -3
  165. package/localize/public_api.d.ts +1 -0
  166. package/package.json +1 -1
  167. package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +11 -3
  168. package/recaptcha/lib/recaptcha-loader.service.d.ts +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-localize.mjs","sources":["../../../projects/bb-foundation/localize/src/lib/interfaces/config.interfaces.ts","../../../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/interfaces/transforms.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/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/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.service.ts","../../../projects/bb-foundation/localize/src/lib/localize.pipe.ts","../../../projects/bb-foundation/localize/src/lib/localize.module.ts","../../../projects/bb-foundation/localize/src/bravobit-bb-foundation-localize.ts"],"sourcesContent":["import {LocalizeDictionaryData} from '../dictionary/dictionary.data';\n\n//\n// The configuration that can be passed when\n// the user initializes the localize module.\n//\n\nexport class LocalizeConfig {\n languages: LocalizeConfigLanguage[];\n mode?: 'automatic' | 'manual';\n storageToken?: string;\n substitutions?: {\n references?: [leftSubstitution: string, rightSubstitution: string];\n interpolation?: [leftSubstitution: string, rightSubstitution: string];\n };\n}\n\nexport interface LocalizeConfigLanguage {\n id: string;\n locale: string;\n supported: string[];\n data: () => LocalizeDictionaryData | Promise<LocalizeDictionaryData>;\n}\n","//\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","import {InjectionToken} from '@angular/core';\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\n//\n// This is the injection token that will be injected\n// into the service so that the all localize functions\n// can retrieved and used.\n//\n\nexport const LOCALIZE_FUNCTION\n : InjectionToken<LocalizeFunction[]>\n = new InjectionToken('localize_function');\n","import {LocalizeTransform} from '../transforms/abstract.transform';\nimport {InjectionToken} from '@angular/core';\n\nexport const LOCALIZE_TRANSFORM\n : InjectionToken<LocalizeTransform[]>\n = new InjectionToken('localize_transform');\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 'maxFileSize': 'The file has exceed the maximum amount of {{maxSize}}.',\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 '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 '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 'maxFileSize': 'Het bestand heeft de maximum hoeveelheid van {{maxSize}} 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 '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 'times': {\n 'tomorrow_at': 'Morgen om {{date}}',\n 'today_at': 'Vandaag om {{date}}',\n 'yesterday_at': 'Gisteren om {{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> = this.formatData(this._dataValues);\n\n constructor(private _id: string,\n private _locale: string,\n private _supported: string[],\n private _dataValues: LocalizeDictionaryDataValues,\n private _localize: Localize) {\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 console.log(`Making sure dictionary \"${dictionaryId}\" is loaded.`);\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 console.log(`Comparing currency dictionary [${this.id}] with [${compareDictionaryIds}]...`);\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.`);\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_FUNCTION, LocalizeFunction, LocalizeFunctionMap} from '../interfaces/functions.interfaces';\nimport {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {Inject, Optional} from '@angular/core';\nimport {Localize} from '../localize.service';\n\nexport class LocalizeInterpolateTransform extends LocalizeTransform {\n\n readonly substitutions = this.config?.substitutions?.references ?? ['{{', '}}'];\n readonly functionsMap: LocalizeFunctionMap = (this.functions ?? []).reduce((previous, current) => {\n previous[current?.keyword()] = current;\n return previous;\n }, {});\n\n constructor(@Optional() protected config: LocalizeConfig,\n @Optional() @Inject(LOCALIZE_FUNCTION) protected functions?: LocalizeFunction[]) {\n super();\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} from '../localize.service';\nimport {Optional} from '@angular/core';\n\nexport class LocalizeReferenceTransform extends LocalizeTransform {\n\n readonly substitutions = this.config?.substitutions?.references ?? ['#(', ')'];\n\n constructor(@Optional() protected config: LocalizeConfig) {\n super();\n }\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: '[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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {BbLocalizeTemplate} from '../localize-template.directive';\nimport {startWith} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: 'bb-localize-string, [bb-localize-string]',\n templateUrl: './localize-string.component.html',\n styleUrls: ['./localize-string.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'class': 'bb-localize-string'\n }\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] = ['[', ']'];\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()\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","<ng-container *ngFor=\"let component of components\">\n <ng-template [bbTemplate]=\"component\">{{ component }}</ng-template>\n</ng-container>\n","import {LocalizeConfig, LocalizeConfigLanguage} from './interfaces/config.interfaces';\nimport {LOCALIZE_TRANSFORM} from './interfaces/transforms.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, Optional} from '@angular/core';\nimport {Languages, WINDOW} from '@bravobit/bb-foundation';\nimport {Storage} from '@bravobit/bb-foundation/storage';\nimport {DOCUMENT} from '@angular/common';\n\n@Injectable()\nexport class Localize {\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: LocalizeDictionary | null = null;\n\n constructor(private _storage: Storage,\n private _languages: Languages,\n private _missingHandler: LocalizeMissingHandler,\n @Optional() private _config?: LocalizeConfig,\n @Optional() @Inject(WINDOW) private _window?: Window,\n @Optional() @Inject(DOCUMENT) private _document?: Document,\n @Optional() @Inject(LOCALIZE_TRANSFORM) private _transforms?: LocalizeTransform[]) {\n this.renderDocumentLanguage();\n }\n\n get languages() {\n return this._availableLanguages ?? [];\n }\n\n get current() {\n return this._current;\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 switch(id: string, options?: { cache?: boolean, reload?: boolean }) {\n this._current = await this.load(id);\n\n const cache = options?.cache ?? true;\n if (cache) {\n this._storage.cookie.set<string>(this._storageToken, this._current?.id, {});\n }\n\n const reload = options?.reload ?? false;\n if (reload) {\n this._window?.location?.reload?.();\n }\n\n return this._current;\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 initialize() {\n return async () => this.switch(this._bestMatchingLanguage?.id, {reload: false, cache: false});\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 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 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 {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 {APP_INITIALIZER, LOCALE_ID, ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbLocalizeString} from './views/localize-string/localize-string.component';\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 {BbLocalizeTemplate} from './views/localize-template.directive';\nimport {LOCALIZE_TRANSFORM} from './interfaces/transforms.interfaces';\nimport {LOCALIZE_FUNCTION} from './interfaces/functions.interfaces';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeDateFunction} from './functions/date.function';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {UtilsModule} from '@bravobit/bb-foundation/utils';\nimport {CommonModule} from '@angular/common';\nimport {Localize} from './localize.service';\nimport {BbLocalize} from './localize.pipe';\n\n@NgModule({\n imports: [CommonModule, UtilsModule],\n declarations: [\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 if (config?.languages?.length <= 0) {\n throw new Error('One or more languages should be supplied.');\n }\n\n const mode = config?.mode ?? 'automatic';\n return {\n ngModule: LocalizeModule,\n providers: [\n // Angular providers.\n ...(mode === 'automatic' ? [\n {provide: APP_INITIALIZER, deps: [Localize], useFactory: initializeLocale, multi: true},\n {provide: LOCALE_ID, deps: [Localize], useFactory: getLocale}\n ] : []),\n // Config provider.\n {provide: LocalizeConfig, useValue: config},\n // Function providers.\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 // Transform providers.\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeReferenceTransform, deps: [LocalizeConfig], multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeInterpolateTransform, deps: [LocalizeConfig, LOCALIZE_FUNCTION], multi: true},\n // Handler providers.\n {provide: LocalizeMissingHandler, useClass: LocalizeMissingHandler},\n // Service providers.\n Localize\n ]\n };\n }\n\n}\n\nexport function initializeLocale(localize: Localize) {\n return localize.initialize();\n}\n\nexport function getLocale(localize: Localize) {\n return localize?.current?.locale ?? null;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3.LocalizeMissingHandler","i4.LocalizeConfig","i1.Localize"],"mappings":";;;;;;;;;;;;;AAEA;AACA;AACA;AACA;MAEa,cAAc,CAAA;AAQ1B;;ACfD;;AC0BA;AACA;AACA;AACA;AACA;MAEa,iBAAiB,GAExB,IAAI,cAAc,CAAC,mBAAmB;;MC/B/B,kBAAkB,GAEzB,IAAI,cAAc,CAAC,oBAAoB;;ACH7C;AACA;AACA;AACA;MAEa,yBAAyB,CAAA;IAElC,OAAO,GAAA;AACH,QAAA,OAAO,WAAW,CAAC;KACtB;AAED,IAAA,SAAS,CAAC,KAAa,EAAA;QACnB,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;KACtC;AAEJ;;ACfD;AACA;AACA;AACA;MAEa,yBAAyB,CAAA;IAElC,OAAO,GAAA;AACH,QAAA,OAAO,WAAW,CAAC;KACtB;AAED,IAAA,SAAS,CAAC,KAAa,EAAA;QACnB,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;KACtC;AAEJ;;ACdD;AACA;AACA;AACA;MAEa,oBAAoB,CAAA;IAE7B,OAAO,GAAA;AACH,QAAA,OAAO,MAAM,CAAC;KACjB;IAED,SAAS,CAAC,KAAa,EAAE,MAAe,EAAA;AACpC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAE7B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,cAAc,EAAE;AACpC,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;QAED,OAAO,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;KAC/C;AAEJ;;ACxBY,MAAA,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,aAAa,EAAE,wDAAwD;AACvE,QAAA,SAAS,EAAE,2CAA2C;AACtD,QAAA,SAAS,EAAE,0CAA0C;AACrD,QAAA,aAAa,EAAE,qCAAqC;AACpD,QAAA,WAAW,EAAE,0FAA0F;AACvG,QAAA,WAAW,EAAE,0FAA0F;AAC1G,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,2BAA2B;AAC/C,KAAA;AACD,IAAA,aAAa,EAAE;AACX,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,MAAM,EAAE,4BAA4B;AACvC,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,aAAa,EAAE,sBAAsB;AACrC,QAAA,UAAU,EAAE,mBAAmB;AAC/B,QAAA,cAAc,EAAE,uBAAuB;AAC1C,KAAA;;;AC1CQ,MAAA,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,aAAa,EAAE,wEAAwE;AACvF,QAAA,SAAS,EAAE,4CAA4C;AACvD,QAAA,SAAS,EAAE,6CAA6C;AACxD,QAAA,aAAa,EAAE,qCAAqC;AACpD,QAAA,WAAW,EAAE,oFAAoF;AACjG,QAAA,WAAW,EAAE,oFAAoF;AACpG,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,iFAAiF;AACrG,KAAA;AACD,IAAA,aAAa,EAAE;AACX,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,QAAQ,EAAE,mBAAmB;AAC7B,QAAA,MAAM,EAAE,kCAAkC;AAC7C,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,aAAa,EAAE,oBAAoB;AACnC,QAAA,UAAU,EAAE,qBAAqB;AACjC,QAAA,cAAc,EAAE,sBAAsB;AACzC,KAAA;;;MCvCQ,sBAAsB,CAAA;AAAnC,IAAA,WAAA,GAAA;AAaY,QAAA,IAAA,CAAA,GAAG,GAAG,CAAC,OAAe,KAAK,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;KAE/D;AAbG,IAAA,MAAM,CAAC,MAAsB,EAAA;;;AAGzB,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,CAAA,sBAAA,EAAyB,MAAM,EAAE,KAAK,CAAkB,gBAAA,CAAA,CAAC,CAAC;AACtE,SAAA;;AAGD,QAAA,OAAO,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC;KAChC;AAIJ;;MChBY,sBAAsB,CAAA;AAE/B,IAAA,WAAA,CAAmB,IAAkC,EAAA;QAAlC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA8B;KACpD;AAEJ;;MCPY,yBAAyB,CAAA;AAAtC,IAAA,WAAA,GAAA;QAEI,IAAM,CAAA,MAAA,GAAW,MAAM,CAAC;KA0B3B;AAxBG,IAAA,OAAO,CAAC,MAAc,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,OAAO,CAAC,KAAwB,EAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,EAAE;AACzB,aAAA,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC;AAC3C,aAAA,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC;KACjD;AAED,IAAA,KAAK,CAAC,KAAwB,EAAA;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;KACzC;AAEO,IAAA,WAAW,CAAC,KAAwB,EAAA;AACxC,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACvB,cAAE,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;cACtC,KAAK,CAAC;KACf;AAEJ;;MCtBY,kBAAkB,CAAA;IAI3B,WAAoB,CAAA,GAAW,EACX,OAAe,EACf,UAAoB,EACpB,WAAyC,EACzC,SAAmB,EAAA;QAJnB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;QACX,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QACf,IAAU,CAAA,UAAA,GAAV,UAAU,CAAU;QACpB,IAAW,CAAA,WAAA,GAAX,WAAW,CAA8B;QACzC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QANtB,IAAK,CAAA,KAAA,GAA2B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAOlF;AAED,IAAA,IAAI,EAAE,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;KAC3B;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;KAC/B;AAED,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;KAChC;AAED,IAAA,GAAG,CAAC,KAAwB,EAAA;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC;KACpC;AAED,IAAA,GAAG,CAAC,KAAwB,EAAA;QACxB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC5B;IAED,GAAG,GAAA;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;KACxC;AAED,IAAA,IAAI,CAAC,QAA2E,EAAA;AAC5E,QAAA,MAAM,cAAc,GAAG,IAAI,yBAAyB,EAAE,CAAC;AACvD,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;QAEvE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AAC/B,aAAA,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACvC,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,EAAC;SAC7C,CAAC,EAAsC,EAAE,CAAC,CAAC;KACnD;IAED,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,CAAC;YACtD,MAAM,YAAY,GAAyB,EAAE,CAAC;AAC9C,YAAA,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;AACtC,gBAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,YAAY,CAAA,YAAA,CAAc,CAAC,CAAC;gBACnE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3D,gBAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjC,aAAA;YAED,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACzB,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,CAAC;AACnE,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE;AACnC,gBAAA,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;AAC/B,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,CAAC;AAC5D,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,MAAM,oBAAoB,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvF,OAAO,CAAC,GAAG,CAAC,CAAkC,+BAAA,EAAA,IAAI,CAAC,EAAE,CAAW,QAAA,EAAA,oBAAoB,CAAM,IAAA,CAAA,CAAC,CAAC;AAC5F,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,CAAC;AAC7F,aAAA;YACD,OAAO,EAAE,IAAI,GAAG,CAAA,SAAA,EAAY,QAAQ,CAAC,MAAM,CAAoB,kBAAA,CAAA,CAAC,CAAC;AACpE,SAAA;KACJ;IAED,KAAK,GAAA;AACD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;KAC/C;AAEO,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,CAAC;YAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACpD,gBAAA,OAAO,EAAC,GAAG,QAAQ,EAAE,GAAG,WAAW,EAAC,CAAC;AACxC,aAAA;YAED,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,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,CAAC;AAChG,aAAA;YAED,OAAO,EAAC,GAAG,QAAQ,EAAE,CAAC,KAAK,GAAG,KAAK,EAAC,CAAC;SACxC,EAA0B,EAAE,CAAC,CAAC;KAClC;AAEJ;;MC/GqB,iBAAiB,CAAA;IAIzB,UAAU,CAAC,KAAa,EAAE,aAA+B,EAAA;;AAE/D,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;;AAGD,QAAA,MAAM,EAAC,KAAK,EAAE,GAAG,EAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;;AAG1D,QAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAG,EAAA,KAAK,CAAM,GAAA,EAAA,GAAG,MAAM,GAAG,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC;;QAG5D,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAuC,EAAE,CAAC;QAEvD,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,CAAC;AACjD,YAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,SAAA;;AAGD,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;KACzC;AAES,IAAA,gBAAgB,CAAC,KAAuB,EAAA;;QAE9C,MAAM,MAAM,GAAG,qBAAqB,CAAC;AACrC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/C,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;AAG7C,QAAA,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC;KACvB;AAEJ;;ACnCM,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,iBAAiB,CAAA;IAQ/D,WAAkC,CAAA,MAAsB,EACK,SAA8B,EAAA;AACvF,QAAA,KAAK,EAAE,CAAC;QAFsB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACK,IAAS,CAAA,SAAA,GAAT,SAAS,CAAqB;AAPlF,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvE,QAAA,IAAA,CAAA,YAAY,GAAwB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;YAC7F,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;AACvC,YAAA,OAAO,QAAQ,CAAC;SACnB,EAAE,EAAE,CAAC,CAAC;KAKN;AAEQ,IAAA,OAAO,CAAC,KAAa,EAAE,IAA4B,EAAE,QAAkB,EAAA;AAC5E,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;;QAG3D,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,CAAC;;YAGvF,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;SAC9D,EAAE,KAAK,CAAC,CAAC;KACb;AAES,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,CAAC;;;QAI9E,MAAM,kBAAkB,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,MAAM,CAAC;;;QAInD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,cAAc,KAAI;;YAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC;;;YAIvD,IAAI,CAAC,UAAU,EAAE;AACb,gBAAA,OAAO,MAAM,CAAC;AACjB,aAAA;;AAGD,YAAA,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACnE,SAAC,EAAE,CAAA,EAAG,kBAAkB,CAAA,CAAE,CAAC,CAAC;KAC/B;EAEJ;AApDY,4BAA4B,GAAA,UAAA,CAAA;IAQxB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;IACV,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAAE,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;AATzC,CAAA,EAAA,4BAA4B,CAoDxC;;ACrDM,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,iBAAiB,CAAA;AAI7D,IAAA,WAAA,CAAkC,MAAsB,EAAA;AACpD,QAAA,KAAK,EAAE,CAAC;QADsB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;AAF/C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAI9E;AAEQ,IAAA,OAAO,CAAC,KAAa,EAAE,CAAyB,EAAE,QAAkB,EAAA;AACzE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;;QAG3D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;;YAExC,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;;YAG3D,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;SAC5D,EAAE,KAAK,CAAC,CAAC;KACb;EAEJ;AArBY,0BAA0B,GAAA,UAAA,CAAA;IAItB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAJd,CAAA,EAAA,0BAA0B,CAqBtC;;MCtBY,kBAAkB,CAAA;AAK3B,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;;QAFnB,IAAI,CAAA,IAAA,GAAkB,IAAI,CAAC;KAGvD;;+GANQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,oBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AACnC,iBAAA,CAAA;kGAIgC,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,oBAAoB,CAAA;;;MCmBlB,gBAAgB,CAAA;AA2BzB,IAAA,WAAA,CAAoB,gBAAmC,EAAA;QAAnC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAmB;;AArB9C,QAAA,IAAA,CAAA,aAAa,GAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;QAGtD,IAAU,CAAA,UAAA,GAAkC,EAAE,CAAC;;AAGvC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;;QAGnC,IAAM,CAAA,MAAA,GAAkB,IAAI,CAAC;KAapC;IAXD,IACI,KAAK,CAAC,KAAoB,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAED,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAKD,eAAe,GAAA;QACX,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;KACrC;IAEO,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,CAAC;AAErC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KACxC;IAEO,UAAU,GAAA;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1C,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YACnB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC7B;AAEO,IAAA,aAAa,CAAC,KAA2B,EAAA;QAC7C,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QAExC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;AACjD,YAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;AAC9C,YAAA,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;AACnC,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE;AACpB,gBAAA,OAAO,QAAQ,CAAC;AACnB,aAAA;AAED,YAAA,OAAO,EAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAA,EAAG,IAAI,CAAA,EAAG,GAAG,CAAE,CAAA,GAAG,QAAQ,EAAC,CAAC;SAC7D,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;AAClD,aAAA,GAAG,CAAC,SAAS,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC;aAC7D,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;KACzC;AAEO,IAAA,mBAAmB,CAAC,KAAa,EAAA;QACrC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7C,QAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,SAAA,EAAY,GAAG,CAAA,CAAA,CAAG,EAAE,GAAG,CAAC,CAAC;AAC3D,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC7B;IAEO,gBAAgB,GAAA;QACpB,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,MAAM,MAAM,GAAG,qBAAqB,CAAC;QAErC,OAAO;AACH,YAAA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7B,YAAA,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;SAC9B,CAAC;KACL;;6GAzFQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,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,EC9BvC,qJAGA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,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,CAAA;2FDwBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;+BACI,0CAA0C,EAAA,eAAA,EAGnC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAChB,mBAAA,EAAA,KAAK,EACpB,IAAA,EAAA;AACF,wBAAA,OAAO,EAAE,oBAAoB;AAChC,qBAAA,EAAA,QAAA,EAAA,qJAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,CAAA;wGAKoC,KAAK,EAAA,CAAA;sBAAzC,eAAe;uBAAC,kBAAkB,CAAA;gBAG1B,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAYF,KAAK,EAAA,CAAA;sBADR,KAAK;;;ME/BG,QAAQ,CAAA;AAYjB,IAAA,WAAA,CAAoB,QAAiB,EACjB,UAAqB,EACrB,eAAuC,EAC3B,OAAwB,EACR,OAAgB,EACd,SAAoB,EACV,WAAiC,EAAA;QANzE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAW;QACrB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAwB;QAC3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QACR,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QACd,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACV,IAAW,CAAA,WAAA,GAAX,WAAW,CAAsB;;QAf5E,IAAa,CAAA,aAAA,GAAW,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,2BAA2B,CAAC;QAClF,IAAmB,CAAA,mBAAA,GAA6B,IAAI,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;AAC/E,QAAA,IAAA,CAAA,qBAAqB,GAA2B,IAAI,CAAC,4BAA4B,EAAE,CAAC;AAEpF,QAAA,IAAA,CAAA,mBAAmB,GAAoC,IAAI,GAAG,EAA8B,CAAC;;QAGtG,IAAQ,CAAA,QAAA,GAA8B,IAAI,CAAC;AA2I3C,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,aAAsC,KAAI;AACjE,YAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;;gBAEnC,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC,GAAG,aAAa,CAAC;;;gBAI1D,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,IAAI,KAAK,EAAE,UAAU,EAAE,UAAU,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC;AACxG,aAAA;;AAGD,YAAA,OAAO,EAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC;AAC/E,SAAC,CAAC;QA9IE,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;AAED,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC;KACzC;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAED,MAAM,IAAI,CAAC,EAAU,EAAA;AACjB,QAAA,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;AACjC,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,CAAA,EAAA,CAAI,CAAC,CAAC;AAC7D,SAAA;QAED,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YAC9B,OAAO,EAAE,IAAI,GAAG,mCAAmC,EAAE,CAAA,0CAAA,CAA4C,CAAC,CAAC;AACnG,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;AACnD,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,SAAA;QAED,MAAM,oBAAoB,GAAG,MAAM,QAAQ,EAAE,IAAI,IAAI,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AAC7C,QAAA,OAAO,UAAU,CAAC;KACrB;AAED,IAAA,MAAM,MAAM,CAAC,EAAU,EAAE,OAA+C,EAAA;QACpE,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEpC,QAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC;AACrC,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAS,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC;AACxC,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACtC,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,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,CAAC;AAC/G,SAAA;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC3C;IAED,UAAU,GAAA;QACN,OAAO,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;KACjG;IAED,KAAK,GAAA;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnD;AAED,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,CAAC;SAChD,EAAE,KAAK,CAAC,CAAC;KACb;AAED,IAAA,SAAS,CAAC,aAAsC,EAAA;;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;;QAGnD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;;QAGzE,IAAI,CAAC,YAAY,EAAE;YACf,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9C,SAAA;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;KACrD;IAEO,4BAA4B,GAAA;QAChC,OAAO,IAAI,CAAC,sBAAsB,EAAE;eAC7B,IAAI,CAAC,2BAA2B,EAAE;AAClC,eAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;KACxC;IAEO,sBAAsB,GAAA;;AAE1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAS,IAAI,CAAC,aAAa,CAAC,CAAC;;AAGhE,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;KACjE;IAEO,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,CAAC;AAErE,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;SACzF,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;KAC7D;IAEO,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,CAAC;KACxG;AAEO,IAAA,aAAa,CAAC,EAAiB,EAAA;AACnC,QAAA,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC;AACxB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAC1B;IAEO,sBAAsB,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;AACV,SAAA;AAED,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC;KACnG;;AAnJQ,QAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,EAgBe,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,MAAM,EACN,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,QAAQ,6BACR,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yGAlBzC,QAAQ,EAAA,CAAA,CAAA;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,UAAU;;0BAgBM,QAAQ;8BACqC,MAAM,EAAA,UAAA,EAAA,CAAA;0BAAnD,QAAQ;;0BAAI,MAAM;2BAAC,MAAM,CAAA;8BACwB,QAAQ,EAAA,UAAA,EAAA,CAAA;0BAAzD,QAAQ;;0BAAI,MAAM;2BAAC,QAAQ,CAAA;;0BAC3B,QAAQ;;0BAAI,MAAM;2BAAC,kBAAkB,CAAA;;;MCxBzC,UAAU,CAAA;AAEnB,IAAA,WAAA,CAAgC,SAAoB,EAAA;QAApB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;KACnD;IAED,SAAS,CAAC,aAAsC,EAAE,IAAsB,EAAA;;QAEpE,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;;AAGlE,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,OAAO,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC;AAChC,SAAA;;QAGD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAC3C;IAEO,wBAAwB,CAAC,aAAsC,EAAE,IAAsB,EAAA;;AAE3F,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;;AAG1B,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,CAAC;AACnB,aAAA;AAED,YAAA,OAAO,EAAC,GAAG,QAAQ,EAAE,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,EAAC,CAAC;SACtD,EAAE,EAAE,CAAC,CAAC;;AAGP,QAAA,MAAM,MAAM,GAAG,OAAO,aAAa,KAAK,QAAQ;AAC5C,cAAE,EAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAC;cACnE,aAAa,CAAC;;AAGpB,QAAA,OAAO,EAAC,GAAG,MAAM,EAAE,GAAG,OAAO,EAAC,CAAC;KAClC;;uGAtCQ,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;qGAAV,UAAU,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AACrB,iBAAA,CAAA;;0BAGgB,QAAQ;;;MCqBZ,cAAc,CAAA;IAEvB,OAAO,OAAO,CAAC,MAAsB,EAAA;AACjC,QAAA,IAAI,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAChE,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,WAAW,CAAC;QACzC,OAAO;AACH,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;;AAEP,gBAAA,IAAI,IAAI,KAAK,WAAW,GAAG;AACvB,oBAAA,EAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAC;AACvF,oBAAA,EAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS,EAAC;iBAChE,GAAG,EAAE,CAAC;;AAEP,gBAAA,EAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAC;;gBAE3C,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAC;gBAC9E,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAC;gBAC9E,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAC;;AAEzE,gBAAA,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC;AACxG,gBAAA,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC;;AAE7H,gBAAA,EAAC,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,sBAAsB,EAAC;;gBAEnE,QAAQ;AACX,aAAA;SACJ,CAAC;KACL;;2GA/BQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAVnB,UAAU;QACV,gBAAgB;AAChB,QAAA,kBAAkB,CAJZ,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,aAO/B,UAAU;QACV,gBAAgB;QAChB,kBAAkB,CAAA,EAAA,CAAA,CAAA;4GAGb,cAAc,EAAA,OAAA,EAAA,CAZb,YAAY,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA;2FAY1B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;AACpC,oBAAA,YAAY,EAAE;wBACV,UAAU;wBACV,gBAAgB;wBAChB,kBAAkB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,UAAU;wBACV,gBAAgB;wBAChB,kBAAkB;AACrB,qBAAA;AACJ,iBAAA,CAAA;;AAoCK,SAAU,gBAAgB,CAAC,QAAkB,EAAA;AAC/C,IAAA,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;AACjC,CAAC;AAEK,SAAU,SAAS,CAAC,QAAkB,EAAA;AACxC,IAAA,OAAO,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC;AAC7C;;ACvEA;;AAEG;;;;"}
1
+ {"version":3,"file":"bravobit-bb-foundation-localize.mjs","sources":["../../../projects/bb-foundation/localize/src/lib/interfaces/config.interfaces.ts","../../../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/interfaces/transforms.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/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/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.service.ts","../../../projects/bb-foundation/localize/src/lib/locale.token.ts","../../../projects/bb-foundation/localize/src/lib/localize.pipe.ts","../../../projects/bb-foundation/localize/src/lib/localize.module.ts","../../../projects/bb-foundation/localize/src/bravobit-bb-foundation-localize.ts"],"sourcesContent":["import {LocalizeDictionaryData} from '../dictionary/dictionary.data';\n\n//\n// The configuration that can be passed when\n// the user initializes the localize module.\n//\n\nexport class LocalizeConfig {\n languages: LocalizeConfigLanguage[];\n mode?: 'automatic' | 'manual';\n storageToken?: string;\n substitutions?: {\n references?: [leftSubstitution: string, rightSubstitution: string];\n interpolation?: [leftSubstitution: string, rightSubstitution: string];\n };\n compareDictionaries?: boolean;\n}\n\nexport interface LocalizeConfigLanguage {\n id: string;\n locale: string;\n supported: string[];\n data: () => LocalizeDictionaryData | Promise<LocalizeDictionaryData>;\n}\n","//\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","import {InjectionToken} from '@angular/core';\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\n//\n// This is the injection token that will be injected\n// into the service so that the all localize functions\n// can retrieved and used.\n//\n\nexport const LOCALIZE_FUNCTION\n : InjectionToken<LocalizeFunction[]>\n = new InjectionToken('localize_function');\n","import {LocalizeTransform} from '../transforms/abstract.transform';\nimport {InjectionToken} from '@angular/core';\n\nexport const LOCALIZE_TRANSFORM\n : InjectionToken<LocalizeTransform[]>\n = new InjectionToken('localize_transform');\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 'maxFileSize': 'The file has exceed the maximum amount of {{maxSize}}.',\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 '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 '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 'maxFileSize': 'Het bestand heeft de maximum hoeveelheid van {{maxSize}} 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 '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 'times': {\n 'tomorrow_at': 'Morgen om {{date}}',\n 'today_at': 'Vandaag om {{date}}',\n 'yesterday_at': 'Gisteren om {{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> = this.formatData(this._dataValues);\n\n constructor(private _id: string,\n private _locale: string,\n private _supported: string[],\n private _dataValues: LocalizeDictionaryDataValues,\n private _localize: Localize) {\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_FUNCTION, LocalizeFunction, LocalizeFunctionMap} from '../interfaces/functions.interfaces';\nimport {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {Inject, Optional} from '@angular/core';\nimport {Localize} from '../localize.service';\n\nexport class LocalizeInterpolateTransform extends LocalizeTransform {\n\n readonly substitutions = this.config?.substitutions?.references ?? ['{{', '}}'];\n readonly functionsMap: LocalizeFunctionMap = (this.functions ?? []).reduce((previous, current) => {\n previous[current?.keyword()] = current;\n return previous;\n }, {});\n\n constructor(@Optional() protected config: LocalizeConfig,\n @Optional() @Inject(LOCALIZE_FUNCTION) protected functions?: LocalizeFunction[]) {\n super();\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} from '../localize.service';\nimport {Optional} from '@angular/core';\n\nexport class LocalizeReferenceTransform extends LocalizeTransform {\n\n readonly substitutions = this.config?.substitutions?.references ?? ['#(', ')'];\n\n constructor(@Optional() protected config: LocalizeConfig) {\n super();\n }\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: '[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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {BbLocalizeTemplate} from '../localize-template.directive';\nimport {startWith} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: 'bb-localize-string, [bb-localize-string]',\n templateUrl: './localize-string.component.html',\n styleUrls: ['./localize-string.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'class': 'bb-localize-string'\n }\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] = ['[', ']'];\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()\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","<ng-container *ngFor=\"let component of components\">\n <ng-template [bbTemplate]=\"component\">{{ component }}</ng-template>\n</ng-container>\n","import {LocalizeConfig, LocalizeConfigLanguage} from './interfaces/config.interfaces';\nimport {LOCALIZE_TRANSFORM} from './interfaces/transforms.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, Optional} from '@angular/core';\nimport {Languages, WINDOW} from '@bravobit/bb-foundation';\nimport {Storage} from '@bravobit/bb-foundation/storage';\nimport {DOCUMENT} from '@angular/common';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable()\nexport class Localize {\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(private _storage: Storage,\n private _languages: Languages,\n private _missingHandler: LocalizeMissingHandler,\n @Optional() private _config?: LocalizeConfig,\n @Optional() @Inject(WINDOW) private _window?: Window,\n @Optional() @Inject(DOCUMENT) private _document?: Document,\n @Optional() @Inject(LOCALIZE_TRANSFORM) private _transforms?: LocalizeTransform[]) {\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(this.current?.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 initialize() {\n return async () => {\n await this.switch(this._bestMatchingLanguage?.id, {reload: false, cache: false});\n return this.compareDictionaries();\n };\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 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 {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Localize} from './localize.service';\nimport {Observable, of} from 'rxjs';\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 {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 {APP_INITIALIZER, LOCALE_ID, ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbLocalizeString} from './views/localize-string/localize-string.component';\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 {BbLocalizeTemplate} from './views/localize-template.directive';\nimport {LOCALIZE_TRANSFORM} from './interfaces/transforms.interfaces';\nimport {LOCALIZE_FUNCTION} from './interfaces/functions.interfaces';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeDateFunction} from './functions/date.function';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {UtilsModule} from '@bravobit/bb-foundation/utils';\nimport {CommonModule} from '@angular/common';\nimport {Localize} from './localize.service';\nimport {BbLocalize} from './localize.pipe';\n\n@NgModule({\n imports: [CommonModule, UtilsModule],\n declarations: [\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 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 return {\n ngModule: LocalizeModule,\n providers: [\n // Angular providers.\n ...(mode === 'automatic' ? [\n {provide: APP_INITIALIZER, deps: [Localize], useFactory: initializeLocale, multi: true},\n {provide: LOCALE_ID, deps: [Localize], useFactory: getLocale}\n ] : []),\n // Config provider.\n {provide: LocalizeConfig, useValue: config},\n // Function providers.\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 // Transform providers.\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeReferenceTransform, deps: [LocalizeConfig], multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeInterpolateTransform, deps: [LocalizeConfig, LOCALIZE_FUNCTION], multi: true},\n // Handler providers.\n {provide: LocalizeMissingHandler, useClass: LocalizeMissingHandler},\n // Service providers.\n Localize\n ]\n };\n }\n\n}\n\nexport function initializeLocale(localize: Localize) {\n return localize.initialize();\n}\n\nexport function getLocale(localize: Localize) {\n return localize?.current?.locale ?? null;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3.LocalizeMissingHandler","i4.LocalizeConfig","i1.Localize"],"mappings":"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"}
@@ -99,9 +99,9 @@ class BbInputMask {
99
99
  this.inputMaskPlugin = null;
100
100
  }
101
101
  }
102
- BbInputMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", 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 });
103
- BbInputMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: BbInputMask, 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 });
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbInputMask, decorators: [{
102
+ BbInputMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", 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 });
103
+ BbInputMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: BbInputMask, 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 });
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbInputMask, decorators: [{
105
105
  type: Directive,
106
106
  args: [{
107
107
  selector: 'input[bbInputMask],input[bbCurrencyMask],input[bbDateMask]'
@@ -208,9 +208,9 @@ class Masking {
208
208
  }
209
209
  }
210
210
  }
211
- Masking.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Masking, deps: [{ token: i1$1.Localize, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
212
- Masking.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Masking, providedIn: 'root' });
213
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Masking, decorators: [{
211
+ Masking.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: Masking, deps: [{ token: i1$1.Localize, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
212
+ Masking.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: Masking, providedIn: 'root' });
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: Masking, decorators: [{
214
214
  type: Injectable,
215
215
  args: [{
216
216
  providedIn: 'root'
@@ -233,9 +233,9 @@ class BbCurrencyMask {
233
233
  this._inputMask.mask = this._masking.currency(currencyCode, options);
234
234
  }
235
235
  }
236
- BbCurrencyMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCurrencyMask, deps: [{ token: Masking }, { token: BbInputMask, self: true }], target: i0.ɵɵFactoryTarget.Directive });
237
- BbCurrencyMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: BbCurrencyMask, selector: "input[bbCurrencyMask]", inputs: { currencyCode: ["bbCurrencyMask", "currencyCode"], options: ["bbCurrencyMaskOptions", "options"] }, usesOnChanges: true, ngImport: i0 });
238
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCurrencyMask, decorators: [{
236
+ BbCurrencyMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbCurrencyMask, deps: [{ token: Masking }, { token: BbInputMask, self: true }], target: i0.ɵɵFactoryTarget.Directive });
237
+ BbCurrencyMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: BbCurrencyMask, selector: "input[bbCurrencyMask]", inputs: { currencyCode: ["bbCurrencyMask", "currencyCode"], options: ["bbCurrencyMaskOptions", "options"] }, usesOnChanges: true, ngImport: i0 });
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbCurrencyMask, decorators: [{
239
239
  type: Directive,
240
240
  args: [{
241
241
  selector: 'input[bbCurrencyMask]'
@@ -264,9 +264,9 @@ class BbDateMask {
264
264
  this._inputMask.mask = this._masking.date(format, separator);
265
265
  }
266
266
  }
267
- BbDateMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbDateMask, deps: [{ token: Masking }, { token: BbInputMask, self: true }], target: i0.ɵɵFactoryTarget.Directive });
268
- BbDateMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: BbDateMask, selector: "input[bbDateMask]", inputs: { format: ["bbDateMask", "format"], separator: ["bbDateMaskSeparator", "separator"] }, usesOnChanges: true, ngImport: i0 });
269
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbDateMask, decorators: [{
267
+ BbDateMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbDateMask, deps: [{ token: Masking }, { token: BbInputMask, self: true }], target: i0.ɵɵFactoryTarget.Directive });
268
+ BbDateMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: BbDateMask, selector: "input[bbDateMask]", inputs: { format: ["bbDateMask", "format"], separator: ["bbDateMaskSeparator", "separator"] }, usesOnChanges: true, ngImport: i0 });
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbDateMask, decorators: [{
270
270
  type: Directive,
271
271
  args: [{
272
272
  selector: 'input[bbDateMask]'
@@ -283,14 +283,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
283
283
 
284
284
  class MaskingModule {
285
285
  }
286
- MaskingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaskingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
287
- MaskingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: MaskingModule, declarations: [BbInputMask,
286
+ MaskingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MaskingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
287
+ MaskingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: MaskingModule, declarations: [BbInputMask,
288
288
  BbCurrencyMask,
289
289
  BbDateMask], exports: [BbInputMask,
290
290
  BbCurrencyMask,
291
291
  BbDateMask] });
292
- MaskingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaskingModule });
293
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaskingModule, decorators: [{
292
+ MaskingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MaskingModule });
293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MaskingModule, decorators: [{
294
294
  type: NgModule,
295
295
  args: [{
296
296
  declarations: [
@@ -132,9 +132,9 @@ class BbNotificationsItem {
132
132
  this._zone.runOutsideAngular(() => this._timer = this.setTimeout(this.instance, this._speed));
133
133
  }
134
134
  }
135
- BbNotificationsItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbNotificationsItem, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
136
- BbNotificationsItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: BbNotificationsItem, selector: "bb-notifications-item", inputs: { notification: "notification", dismissButtonText: "dismissButtonText" }, host: { attributes: { "role": "alert" }, properties: { "class": "this.getClass" } }, viewQueries: [{ propertyName: "progressElementRef", first: true, predicate: ["progress"], descendants: true }], ngImport: i0, template: "<div class=\"notification-content-wrapper\">\n <!--\n The icon for the notification.\n\n The icon is reflected by the type of the\n notification. Same goes for the color and\n background-color.\n -->\n <div [style.color]=\"notification?.color\"\n [style.background-color]=\"notification?.backgroundColor\"\n class=\"notification-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 19.5\"\n class=\"notification-icon\">\n <path\n d=\"M8 19.5c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zM14 13.5v-5c0-3.1-1.6-5.6-4.5-6.3v-.7C9.5.7 8.8 0 8 0S6.5.7 6.5 1.5v.7C3.6 2.9 2 5.4 2 8.5v5l-2 2v1h16v-1l-2-2z\">\n </path>\n </svg>\n\n <!--\n The circular progress for the notification.\n\n The progress is only visible when a timeout is\n set. The progress adapts to the time remaining\n for the notification.\n -->\n <svg *ngIf=\"notification?.timeout > 0\"\n class=\"notification-progress-ring\"\n viewBox=\"0 0 40 40\"\n role=\"progressbar\">\n <circle #progress\n [attr.stroke-dasharray]=\"progressStrokeArray\"\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\n [style.stroke]=\"notification?.color\"\n class=\"notification-progress-circle\"\n stroke-width=\"2\"\n fill=\"transparent\"\n r=\"19\"\n cx=\"20\"\n cy=\"20\">\n </circle>\n </svg>\n </div>\n\n <!--\n The content for the notification.\n\n This displays a string or a template based\n on the given parameter by the user.\n -->\n <div class=\"notification-content\">\n <ng-container *ngIf=\"isContentString; else templateContent\"\n [ngSwitch]=\"notification?.localize\">\n <ng-container *ngSwitchCase=\"true\">\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ notification?.content }}\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<!--\n The actions of the notification.\n\n All actions are displayed here and are\n based on the actions array the user provided.\n-->\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\n class=\"notification-actions\">\n <button *ngFor=\"let action of notification?.actions\"\n (click)=\"callActionAndDestroy(notification, action)\"\n type=\"button\"\n [class.destructive]=\"action?.type === 'cancel'\"\n class=\"notification-actions-button\">\n <span [ngSwitch]=\"notification?.localize\"\n class=\"notification-actions-button-highlight\">\n <ng-container *ngSwitchCase=\"true\">\n {{ action?.title | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ action?.title }}\n </ng-container>\n </span>\n </button>\n <button *ngIf=\"notification?.dismiss\"\n (click)=\"notification?.destroy()\"\n class=\"notification-actions-button destructive\"\n type=\"button\">\n <span class=\"notification-actions-button-highlight\">\n {{ notification?.dismissText || dismissButtonText }}\n </span>\n </button>\n</div>\n\n<!--\n The outlet for the notification content template ref.\n-->\n<ng-template #templateContent>\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\n</ng-template>\n", styles: [".bb-notifications-item{display:flex;border-radius:4px;flex-direction:column;background-color:#fff;border:1px solid #d6dbe0}.bb-notifications-item.success .notification-icon-wrapper{color:#2dc05d;background-color:#ebfaf0}.bb-notifications-item.success .notification-progress-circle{stroke:#36d068}.bb-notifications-item.error .notification-icon-wrapper{color:#f43e3e;background-color:#feeeee}.bb-notifications-item.error .notification-progress-circle{stroke:#f55656}.bb-notifications-item.warning .notification-icon-wrapper{color:#f1ae00;background-color:#fff8e7}.bb-notifications-item.warning .notification-progress-circle{stroke:#ffbc0b}.bb-notifications-item.info .notification-icon-wrapper{color:#099bf6;background-color:#e9f6fe}.bb-notifications-item.info .notification-progress-circle{stroke:#22a5f7}.bb-notifications-item.custom .notification-icon-wrapper{color:#657385;background-color:#f3f5f6}.bb-notifications-item.custom .notification-progress-circle{stroke:#657385}.notification-content-wrapper{padding:20px;display:flex;align-items:center}.notification-icon-wrapper{width:40px;height:40px;display:flex;-webkit-user-select:none;user-select:none;position:relative;border-radius:50%;align-items:center;justify-content:center;color:#657385;background-color:#f3f5f6}.notification-icon{width:100%;height:100%;padding:10px;fill:currentColor}.notification-content{flex:1;font-size:14px;line-height:1.5;font-weight:500;margin-left:20px;color:#000000d9}.notification-content i{font-style:italic}.notification-content,.notification-actions-button{font-family:inherit}.notification-actions{display:flex;margin:0 20px;-webkit-user-select:none;user-select:none;border-top:1px solid #f3f5f6}.notification-actions-button{flex:1;border:none;color:#22a5f7;cursor:pointer;font-size:14px;font-weight:500;padding:12px 2px;text-align:center;background-color:transparent}.notification-actions-button:hover>.notification-actions-button-highlight,.notification-actions-button:focus>.notification-actions-button-highlight{background-color:#22a5f71a}.notification-actions-button:active>.notification-actions-button-highlight{background-color:#22a5f733}.notification-actions-button.destructive{color:#f55656}.notification-actions-button.destructive:hover>.notification-actions-button-highlight,.notification-actions-button.destructive:focus>.notification-actions-button-highlight{background-color:#f556561a}.notification-actions-button.destructive:active>.notification-actions-button-highlight{background-color:#f5565633}.notification-actions-button-highlight{padding:4px 12px;border-radius:12px;display:inline-flex;transition:background-color .15s cubic-bezier(0,0,.2,1)}.notification-progress-ring{top:0;left:0;right:0;bottom:0;width:100%;height:100%;position:absolute}.notification-progress-circle{transform:rotate(-90deg);transform-origin:50% 50%;stroke:#657385}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i2$1.BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbNotificationsItem, decorators: [{
135
+ BbNotificationsItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbNotificationsItem, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
136
+ BbNotificationsItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BbNotificationsItem, selector: "bb-notifications-item", inputs: { notification: "notification", dismissButtonText: "dismissButtonText" }, host: { attributes: { "role": "alert" }, properties: { "class": "this.getClass" } }, viewQueries: [{ propertyName: "progressElementRef", first: true, predicate: ["progress"], descendants: true }], ngImport: i0, template: "<div class=\"notification-content-wrapper\">\n <!--\n The icon for the notification.\n\n The icon is reflected by the type of the\n notification. Same goes for the color and\n background-color.\n -->\n <div [style.color]=\"notification?.color\"\n [style.background-color]=\"notification?.backgroundColor\"\n class=\"notification-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 19.5\"\n class=\"notification-icon\">\n <path\n d=\"M8 19.5c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zM14 13.5v-5c0-3.1-1.6-5.6-4.5-6.3v-.7C9.5.7 8.8 0 8 0S6.5.7 6.5 1.5v.7C3.6 2.9 2 5.4 2 8.5v5l-2 2v1h16v-1l-2-2z\">\n </path>\n </svg>\n\n <!--\n The circular progress for the notification.\n\n The progress is only visible when a timeout is\n set. The progress adapts to the time remaining\n for the notification.\n -->\n <svg *ngIf=\"notification?.timeout > 0\"\n class=\"notification-progress-ring\"\n viewBox=\"0 0 40 40\"\n role=\"progressbar\">\n <circle #progress\n [attr.stroke-dasharray]=\"progressStrokeArray\"\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\n [style.stroke]=\"notification?.color\"\n class=\"notification-progress-circle\"\n stroke-width=\"2\"\n fill=\"transparent\"\n r=\"19\"\n cx=\"20\"\n cy=\"20\">\n </circle>\n </svg>\n </div>\n\n <!--\n The content for the notification.\n\n This displays a string or a template based\n on the given parameter by the user.\n -->\n <div class=\"notification-content\">\n <ng-container *ngIf=\"isContentString; else templateContent\"\n [ngSwitch]=\"notification?.localize\">\n <ng-container *ngSwitchCase=\"true\">\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ notification?.content }}\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<!--\n The actions of the notification.\n\n All actions are displayed here and are\n based on the actions array the user provided.\n-->\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\n class=\"notification-actions\">\n <button *ngFor=\"let action of notification?.actions\"\n (click)=\"callActionAndDestroy(notification, action)\"\n type=\"button\"\n [class.destructive]=\"action?.type === 'cancel'\"\n class=\"notification-actions-button\">\n <span [ngSwitch]=\"notification?.localize\"\n class=\"notification-actions-button-highlight\">\n <ng-container *ngSwitchCase=\"true\">\n {{ action?.title | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ action?.title }}\n </ng-container>\n </span>\n </button>\n <button *ngIf=\"notification?.dismiss\"\n (click)=\"notification?.destroy()\"\n class=\"notification-actions-button destructive\"\n type=\"button\">\n <span class=\"notification-actions-button-highlight\">\n {{ notification?.dismissText || dismissButtonText }}\n </span>\n </button>\n</div>\n\n<!--\n The outlet for the notification content template ref.\n-->\n<ng-template #templateContent>\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\n</ng-template>\n", styles: [".bb-notifications-item{display:flex;border-radius:4px;flex-direction:column;background-color:#fff;border:1px solid #d6dbe0}.bb-notifications-item.success .notification-icon-wrapper{color:#2dc05d;background-color:#ebfaf0}.bb-notifications-item.success .notification-progress-circle{stroke:#36d068}.bb-notifications-item.error .notification-icon-wrapper{color:#f43e3e;background-color:#feeeee}.bb-notifications-item.error .notification-progress-circle{stroke:#f55656}.bb-notifications-item.warning .notification-icon-wrapper{color:#f1ae00;background-color:#fff8e7}.bb-notifications-item.warning .notification-progress-circle{stroke:#ffbc0b}.bb-notifications-item.info .notification-icon-wrapper{color:#099bf6;background-color:#e9f6fe}.bb-notifications-item.info .notification-progress-circle{stroke:#22a5f7}.bb-notifications-item.custom .notification-icon-wrapper{color:#657385;background-color:#f3f5f6}.bb-notifications-item.custom .notification-progress-circle{stroke:#657385}.notification-content-wrapper{padding:20px;display:flex;align-items:center}.notification-icon-wrapper{width:40px;height:40px;display:flex;-webkit-user-select:none;user-select:none;position:relative;border-radius:50%;align-items:center;justify-content:center;color:#657385;background-color:#f3f5f6}.notification-icon{width:100%;height:100%;padding:10px;fill:currentColor}.notification-content{flex:1;font-size:14px;line-height:1.5;font-weight:500;margin-left:20px;color:#000000d9}.notification-content i{font-style:italic}.notification-content,.notification-actions-button{font-family:inherit}.notification-actions{display:flex;margin:0 20px;-webkit-user-select:none;user-select:none;border-top:1px solid #f3f5f6}.notification-actions-button{flex:1;border:none;color:#22a5f7;cursor:pointer;font-size:14px;font-weight:500;padding:12px 2px;text-align:center;background-color:transparent}.notification-actions-button:hover>.notification-actions-button-highlight,.notification-actions-button:focus>.notification-actions-button-highlight{background-color:#22a5f71a}.notification-actions-button:active>.notification-actions-button-highlight{background-color:#22a5f733}.notification-actions-button.destructive{color:#f55656}.notification-actions-button.destructive:hover>.notification-actions-button-highlight,.notification-actions-button.destructive:focus>.notification-actions-button-highlight{background-color:#f556561a}.notification-actions-button.destructive:active>.notification-actions-button-highlight{background-color:#f5565633}.notification-actions-button-highlight{padding:4px 12px;border-radius:12px;display:inline-flex;transition:background-color .15s cubic-bezier(0,0,.2,1)}.notification-progress-ring{top:0;left:0;right:0;bottom:0;width:100%;height:100%;position:absolute}.notification-progress-circle{transform:rotate(-90deg);transform-origin:50% 50%;stroke:#657385}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i2$1.BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbNotificationsItem, decorators: [{
138
138
  type: Component,
139
139
  args: [{ selector: 'bb-notifications-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
140
140
  'role': 'alert'
@@ -176,9 +176,9 @@ class BbNotificationsList {
176
176
  return { vertical: y ?? null, horizontal: x ?? null };
177
177
  }
178
178
  }
179
- BbNotificationsList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbNotificationsList, deps: [{ token: NotificationsData }], target: i0.ɵɵFactoryTarget.Component });
180
- BbNotificationsList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: BbNotificationsList, selector: "bb-notifications-list", host: { attributes: { "role": "list" }, properties: { "style.justify-content": "this.horizontalPosition", "style.align-items": "this.verticalPosition" }, classAttribute: "bb-notifications-list" }, ngImport: i0, template: "<!--\n The notifications list.\n\n The list provides the animation effect for the\n incoming notifications.\n-->\n<div *ngIf=\"data?.data | async as notifications\"\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\n class=\"notifications-list-wrapper\">\n <!--\n The loop for the notifications.\n\n All notifications will be displayed here. They\n are wrapped within a wrapper which separates them.\n -->\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\n class=\"notifications-item-wrapper\">\n <bb-notifications-item [notification]=\"notification\"\n [dismissButtonText]=\"data?.dismissText\">\n </bb-notifications-item>\n </div>\n</div>\n", styles: [".bb-notifications-list{top:0;left:0;right:0;bottom:0;z-index:1100;padding:10px;display:flex;position:fixed;pointer-events:none}.notifications-list-wrapper{width:100%;display:block;max-width:400px;position:relative}.notifications-item-wrapper{padding:0;margin:0 0 10px;pointer-events:all}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BbNotificationsItem, selector: "bb-notifications-item", inputs: ["notification", "dismissButtonText"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [notificationAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbNotificationsList, decorators: [{
179
+ BbNotificationsList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbNotificationsList, deps: [{ token: NotificationsData }], target: i0.ɵɵFactoryTarget.Component });
180
+ BbNotificationsList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BbNotificationsList, selector: "bb-notifications-list", host: { attributes: { "role": "list" }, properties: { "style.justify-content": "this.horizontalPosition", "style.align-items": "this.verticalPosition" }, classAttribute: "bb-notifications-list" }, ngImport: i0, template: "<!--\n The notifications list.\n\n The list provides the animation effect for the\n incoming notifications.\n-->\n<div *ngIf=\"data?.data | async as notifications\"\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\n class=\"notifications-list-wrapper\">\n <!--\n The loop for the notifications.\n\n All notifications will be displayed here. They\n are wrapped within a wrapper which separates them.\n -->\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\n class=\"notifications-item-wrapper\">\n <bb-notifications-item [notification]=\"notification\"\n [dismissButtonText]=\"data?.dismissText\">\n </bb-notifications-item>\n </div>\n</div>\n", styles: [".bb-notifications-list{top:0;left:0;right:0;bottom:0;z-index:1100;padding:10px;display:flex;position:fixed;pointer-events:none}.notifications-list-wrapper{width:100%;display:block;max-width:400px;position:relative}.notifications-item-wrapper{padding:0;margin:0 0 10px;pointer-events:all}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BbNotificationsItem, selector: "bb-notifications-item", inputs: ["notification", "dismissButtonText"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [notificationAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbNotificationsList, decorators: [{
182
182
  type: Component,
183
183
  args: [{ selector: 'bb-notifications-list', animations: [notificationAnimation], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
184
184
  'class': 'bb-notifications-list',
@@ -314,9 +314,9 @@ class Notifications {
314
314
  }
315
315
  }
316
316
  }
317
- Notifications.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Notifications, deps: [{ token: i1.Platform }, { token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }, { token: i2$1.Localize, optional: true }, { token: NotificationsConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
318
- Notifications.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Notifications });
319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Notifications, decorators: [{
317
+ Notifications.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: Notifications, deps: [{ token: i1.Platform }, { token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }, { token: i2$1.Localize, optional: true }, { token: NotificationsConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
318
+ Notifications.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: Notifications });
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: Notifications, decorators: [{
320
320
  type: Injectable
321
321
  }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }, { type: i2$1.Localize, decorators: [{
322
322
  type: Optional
@@ -335,10 +335,10 @@ class NotificationsModule {
335
335
  };
336
336
  }
337
337
  }
338
- NotificationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
339
- NotificationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: NotificationsModule, declarations: [BbNotificationsList, BbNotificationsItem], imports: [CommonModule, LocalizeModule] });
340
- NotificationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NotificationsModule, imports: [CommonModule, LocalizeModule] });
341
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: NotificationsModule, decorators: [{
338
+ NotificationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: NotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
339
+ NotificationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: NotificationsModule, declarations: [BbNotificationsList, BbNotificationsItem], imports: [CommonModule, LocalizeModule] });
340
+ NotificationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: NotificationsModule, imports: [CommonModule, LocalizeModule] });
341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: NotificationsModule, decorators: [{
342
342
  type: NgModule,
343
343
  args: [{
344
344
  imports: [CommonModule, LocalizeModule],