@bravobit/bb-foundation 0.45.4 → 0.50.0
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.
- package/auth/lib/auth.config.d.ts +0 -2
- package/auth/lib/auth.service.d.ts +1 -1
- package/auth/lib/directives/authenticated.directive.d.ts +1 -1
- package/collections/lib/directives/collections-data-row.directive.d.ts +1 -1
- package/collections/lib/directives/collections-data.directive.d.ts +1 -1
- package/collections/lib/directives/collections-empty.directive.d.ts +1 -1
- package/collections/lib/directives/collections-error.directive.d.ts +1 -1
- package/collections/lib/directives/collections-initial.directive.d.ts +1 -1
- package/collections/lib/directives/collections-item.directive.d.ts +1 -1
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +1 -0
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +1 -0
- package/fesm2022/bravobit-bb-foundation-auth.mjs +44 -50
- package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-collections.mjs +69 -75
- package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-combobox.mjs +21 -24
- package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs +35 -35
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dialog.mjs +63 -47
- package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-elements.mjs +119 -131
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-localize.mjs +25 -32
- package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-masking.mjs +19 -22
- package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-notifications.mjs +15 -17
- package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-permissions.mjs +11 -12
- package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +11 -11
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-rxjs.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-select.mjs +26 -30
- package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-storage.mjs +16 -8
- package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-table.mjs +29 -31
- package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs +12 -13
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-utils.mjs +20 -24
- package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation.mjs +21 -21
- package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
- package/localize/lib/localize.config.d.ts +0 -1
- package/localize/lib/localize.service.d.ts +1 -1
- package/localize/lib/views/localize-template.directive.d.ts +1 -1
- package/masking/lib/masking.service.d.ts +2 -2
- package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -2
- package/package.json +25 -63
- package/permissions/lib/directives/permission.directive.d.ts +1 -1
- package/storage/lib/interfaces/strategy.interface.d.ts +1 -1
- package/table/lib/components/table/table.component.d.ts +2 -2
- package/esm2022/auth/bravobit-bb-foundation-auth.mjs +0 -5
- package/esm2022/auth/lib/auth.config.mjs +0 -16
- package/esm2022/auth/lib/auth.interceptor.mjs +0 -87
- package/esm2022/auth/lib/auth.module.mjs +0 -25
- package/esm2022/auth/lib/auth.service.mjs +0 -261
- package/esm2022/auth/lib/auth.session.mjs +0 -142
- package/esm2022/auth/lib/directives/authenticated.directive.mjs +0 -78
- package/esm2022/auth/lib/guards/anonymous.guard.mjs +0 -29
- package/esm2022/auth/lib/guards/authenticated.guard.mjs +0 -32
- package/esm2022/auth/lib/helpers/jwt.helper.mjs +0 -67
- package/esm2022/auth/lib/interfaces/config.interface.mjs +0 -4
- package/esm2022/auth/lib/interfaces/provider.interface.mjs +0 -2
- package/esm2022/auth/lib/interfaces/token.interface.mjs +0 -2
- package/esm2022/auth/lib/providers/email.provider.mjs +0 -27
- package/esm2022/auth/lib/providers/verify.provider.mjs +0 -25
- package/esm2022/auth/lib/tokens/use-authorization.token.mjs +0 -3
- package/esm2022/auth/public_api.mjs +0 -15
- package/esm2022/bravobit-bb-foundation.mjs +0 -5
- package/esm2022/collections/bravobit-bb-foundation-collections.mjs +0 -5
- package/esm2022/collections/lib/classes/array.collection.mjs +0 -85
- package/esm2022/collections/lib/collection.mjs +0 -98
- package/esm2022/collections/lib/collections.module.mjs +0 -84
- package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +0 -37
- package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +0 -52
- package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +0 -114
- package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +0 -86
- package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +0 -30
- package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +0 -65
- package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +0 -37
- package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-data.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-empty.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-error.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-initial.directive.mjs +0 -23
- package/esm2022/collections/lib/directives/collections-item.directive.mjs +0 -29
- package/esm2022/collections/lib/interfaces/array-collection.interface.mjs +0 -2
- package/esm2022/collections/lib/interfaces/collection.interface.mjs +0 -2
- package/esm2022/collections/lib/providers/api-collection.provider.mjs +0 -103
- package/esm2022/collections/lib/providers/collection.provider.mjs +0 -39
- package/esm2022/collections/lib/providers/local-collection.provider.mjs +0 -25
- package/esm2022/collections/public_api.mjs +0 -22
- package/esm2022/combobox/bravobit-bb-foundation-combobox.mjs +0 -5
- package/esm2022/combobox/combobox/combobox-container.directive.mjs +0 -137
- package/esm2022/combobox/combobox/combobox.component.mjs +0 -118
- package/esm2022/combobox/combobox-label.directive.mjs +0 -14
- package/esm2022/combobox/combobox-option.directive.mjs +0 -17
- package/esm2022/combobox/combobox-panel/combobox-panel.animation.mjs +0 -11
- package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +0 -42
- package/esm2022/combobox/combobox.interface.mjs +0 -2
- package/esm2022/combobox/public_api.mjs +0 -4
- package/esm2022/dashboard/bravobit-bb-foundation-dashboard.mjs +0 -5
- package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +0 -50
- package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +0 -25
- package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +0 -28
- package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +0 -32
- package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +0 -75
- package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +0 -93
- package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +0 -60
- package/esm2022/dashboard/lib/dashboard.module.mjs +0 -50
- package/esm2022/dashboard/public_api.mjs +0 -9
- package/esm2022/dialog/bravobit-bb-foundation-dialog.mjs +0 -5
- package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +0 -12
- package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +0 -44
- package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +0 -58
- package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +0 -15
- package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +0 -11
- package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +0 -57
- package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +0 -53
- package/esm2022/dialog/lib/dialog.config.mjs +0 -8
- package/esm2022/dialog/lib/dialog.insertion.mjs +0 -18
- package/esm2022/dialog/lib/dialog.interfaces.mjs +0 -9
- package/esm2022/dialog/lib/dialog.module.mjs +0 -64
- package/esm2022/dialog/lib/dialog.ref.mjs +0 -16
- package/esm2022/dialog/lib/dialog.service.mjs +0 -75
- package/esm2022/dialog/lib/directives/confirm.directive.mjs +0 -48
- package/esm2022/dialog/public_api.mjs +0 -12
- package/esm2022/elements/bravobit-bb-foundation-elements.mjs +0 -5
- package/esm2022/elements/lib/avatar/avatar.component.mjs +0 -175
- package/esm2022/elements/lib/button/button.component.mjs +0 -68
- package/esm2022/elements/lib/checkbox/checkbox.component.mjs +0 -116
- package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +0 -34
- package/esm2022/elements/lib/date-picker/date-picker.component.mjs +0 -323
- package/esm2022/elements/lib/directives/addon.directive.mjs +0 -27
- package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +0 -41
- package/esm2022/elements/lib/directives/file-drop.directive.mjs +0 -62
- package/esm2022/elements/lib/directives/form-submit.directive.mjs +0 -54
- package/esm2022/elements/lib/directives/form-submitter.directive.mjs +0 -24
- package/esm2022/elements/lib/directives/image-upload.directive.mjs +0 -143
- package/esm2022/elements/lib/directives/input.directive.mjs +0 -49
- package/esm2022/elements/lib/elements.config.mjs +0 -54
- package/esm2022/elements/lib/elements.interfaces.mjs +0 -5
- package/esm2022/elements/lib/elements.module.mjs +0 -146
- package/esm2022/elements/lib/file-picker/file-picker.component.mjs +0 -196
- package/esm2022/elements/lib/form-control/form-control.component.mjs +0 -46
- package/esm2022/elements/lib/form-error/form-error.component.mjs +0 -106
- package/esm2022/elements/lib/form-group/form-group.component.mjs +0 -19
- package/esm2022/elements/lib/icon/icon.component.mjs +0 -122
- package/esm2022/elements/lib/image-picker/image-picker.component.mjs +0 -126
- package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +0 -149
- package/esm2022/elements/lib/pipes/date.pipe.mjs +0 -28
- package/esm2022/elements/lib/pipes/file-image.pipe.mjs +0 -48
- package/esm2022/elements/lib/pipes/file-size.pipe.mjs +0 -27
- package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +0 -99
- package/esm2022/elements/lib/radio-button/radio-button.component.mjs +0 -60
- package/esm2022/elements/lib/radio-group/radio-group.component.mjs +0 -103
- package/esm2022/elements/lib/spinner/spinner.component.mjs +0 -22
- package/esm2022/elements/public_api.mjs +0 -30
- package/esm2022/http/bravobit-bb-foundation-http.mjs +0 -5
- package/esm2022/http/lib/classes/http.config.mjs +0 -32
- package/esm2022/http/lib/classes/http.error.mjs +0 -20
- package/esm2022/http/lib/http.config.mjs +0 -18
- package/esm2022/http/lib/http.interfaces.mjs +0 -4
- package/esm2022/http/lib/http.module.mjs +0 -31
- package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +0 -60
- package/esm2022/http/lib/interceptors/error.interceptor.mjs +0 -31
- package/esm2022/http/public_api.mjs +0 -8
- package/esm2022/lib/core/functions/array.utils.mjs +0 -7
- package/esm2022/lib/core/functions/date.utils.mjs +0 -31
- package/esm2022/lib/core/functions/password.utils.mjs +0 -17
- package/esm2022/lib/core/functions/route-cache.utils.mjs +0 -23
- package/esm2022/lib/core/miscellaneous/coercion.mjs +0 -5
- package/esm2022/lib/core/miscellaneous/regex.mjs +0 -44
- package/esm2022/lib/core/miscellaneous/validator.mjs +0 -85
- package/esm2022/lib/core/services/exif.service.mjs +0 -165
- package/esm2022/lib/core/services/file-loader.service.mjs +0 -85
- package/esm2022/lib/core/services/files.service.mjs +0 -78
- package/esm2022/lib/core/services/image-converter.service.mjs +0 -126
- package/esm2022/lib/core/services/languages.service.mjs +0 -75
- package/esm2022/lib/core/services/network.service.mjs +0 -58
- package/esm2022/lib/core/services/patch.service.mjs +0 -66
- package/esm2022/lib/core/tokens/accept-language.token.mjs +0 -3
- package/esm2022/lib/core/tokens/base-url.token.mjs +0 -3
- package/esm2022/lib/core/tokens/cookie.token.mjs +0 -3
- package/esm2022/lib/core/tokens/global-focus-mode.token.mjs +0 -10
- package/esm2022/lib/core/tokens/location.token.mjs +0 -6
- package/esm2022/lib/core/tokens/navigator.token.mjs +0 -6
- package/esm2022/lib/core/tokens/window.token.mjs +0 -12
- package/esm2022/localize/bravobit-bb-foundation-localize.mjs +0 -5
- package/esm2022/localize/lib/dictionary/dictionary.class.mjs +0 -96
- package/esm2022/localize/lib/dictionary/dictionary.context.mjs +0 -24
- package/esm2022/localize/lib/dictionary/dictionary.data.mjs +0 -7
- package/esm2022/localize/lib/functions/date.function.mjs +0 -18
- package/esm2022/localize/lib/functions/lowercase.function.mjs +0 -13
- package/esm2022/localize/lib/functions/uppercase.function.mjs +0 -13
- package/esm2022/localize/lib/handlers/missing.handler.mjs +0 -13
- package/esm2022/localize/lib/interfaces/config.interfaces.mjs +0 -2
- package/esm2022/localize/lib/interfaces/functions.interfaces.mjs +0 -8
- package/esm2022/localize/lib/interfaces/handlers.interfaces.mjs +0 -2
- package/esm2022/localize/lib/interfaces/options.interfaces.mjs +0 -6
- package/esm2022/localize/lib/localizations/dutch.localization.mjs +0 -64
- package/esm2022/localize/lib/localizations/english.localization.mjs +0 -64
- package/esm2022/localize/lib/localizations/papiamento.localization.mjs +0 -64
- package/esm2022/localize/lib/localizations/spanish.localization.mjs +0 -64
- package/esm2022/localize/lib/localize.config.mjs +0 -43
- package/esm2022/localize/lib/localize.module.mjs +0 -39
- package/esm2022/localize/lib/localize.pipe.mjs +0 -48
- package/esm2022/localize/lib/localize.service.mjs +0 -172
- package/esm2022/localize/lib/localize.tokens.mjs +0 -18
- package/esm2022/localize/lib/transforms/abstract.transform.mjs +0 -30
- package/esm2022/localize/lib/transforms/interpolate.transform.mjs +0 -45
- package/esm2022/localize/lib/transforms/plural.transform.mjs +0 -49
- package/esm2022/localize/lib/transforms/reference.transform.mjs +0 -19
- package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +0 -89
- package/esm2022/localize/lib/views/localize-template.directive.mjs +0 -23
- package/esm2022/localize/public_api.mjs +0 -27
- package/esm2022/masking/bravobit-bb-foundation-masking.mjs +0 -5
- package/esm2022/masking/lib/directives/currency-mask.directive.mjs +0 -41
- package/esm2022/masking/lib/directives/date-mask.directive.mjs +0 -41
- package/esm2022/masking/lib/directives/input-mask.directive.mjs +0 -126
- package/esm2022/masking/lib/input-mask.interface.mjs +0 -2
- package/esm2022/masking/lib/masking.module.mjs +0 -30
- package/esm2022/masking/lib/masking.service.mjs +0 -104
- package/esm2022/masking/public_api.mjs +0 -7
- package/esm2022/notifications/bravobit-bb-foundation-notifications.mjs +0 -5
- package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +0 -112
- package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +0 -48
- package/esm2022/notifications/lib/notifications.animations.mjs +0 -28
- package/esm2022/notifications/lib/notifications.config.mjs +0 -8
- package/esm2022/notifications/lib/notifications.interfaces.mjs +0 -31
- package/esm2022/notifications/lib/notifications.module.mjs +0 -20
- package/esm2022/notifications/lib/notifications.service.mjs +0 -161
- package/esm2022/notifications/public_api.mjs +0 -5
- package/esm2022/permissions/bravobit-bb-foundation-permissions.mjs +0 -5
- package/esm2022/permissions/lib/directives/permission.directive.mjs +0 -95
- package/esm2022/permissions/lib/guards/permission.guard.mjs +0 -25
- package/esm2022/permissions/lib/handlers/abstract.handler.mjs +0 -3
- package/esm2022/permissions/lib/handlers/local.handler.mjs +0 -29
- package/esm2022/permissions/lib/permissions.config.mjs +0 -20
- package/esm2022/permissions/lib/permissions.interface.mjs +0 -8
- package/esm2022/permissions/lib/permissions.module.mjs +0 -25
- package/esm2022/permissions/lib/permissions.service.mjs +0 -100
- package/esm2022/permissions/public_api.mjs +0 -9
- package/esm2022/public_api.mjs +0 -25
- package/esm2022/recaptcha/bravobit-bb-foundation-recaptcha.mjs +0 -5
- package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +0 -225
- package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +0 -80
- package/esm2022/recaptcha/lib/recaptcha.config.mjs +0 -8
- package/esm2022/recaptcha/lib/recaptcha.interface.mjs +0 -3
- package/esm2022/recaptcha/lib/recaptcha.module.mjs +0 -27
- package/esm2022/recaptcha/public_api.mjs +0 -6
- package/esm2022/rxjs/bravobit-bb-foundation-rxjs.mjs +0 -5
- package/esm2022/rxjs/lib/observables/get-control-value.observable.mjs +0 -6
- package/esm2022/rxjs/lib/observables/get-route-param.observable.mjs +0 -5
- package/esm2022/rxjs/lib/operators/combine-latest-map.operator.mjs +0 -10
- package/esm2022/rxjs/lib/operators/filter-nil.operator.mjs +0 -5
- package/esm2022/rxjs/public_api.mjs +0 -5
- package/esm2022/select/bravobit-bb-foundation-select.mjs +0 -5
- package/esm2022/select/lib/select/select.component.mjs +0 -289
- package/esm2022/select/lib/select-label.directive.mjs +0 -18
- package/esm2022/select/lib/select-multi-label.directive.mjs +0 -18
- package/esm2022/select/lib/select-option-group.directive.mjs +0 -18
- package/esm2022/select/lib/select-option.directive.mjs +0 -18
- package/esm2022/select/lib/select.config.mjs +0 -8
- package/esm2022/select/lib/select.module.mjs +0 -46
- package/esm2022/select/public_api.mjs +0 -8
- package/esm2022/storage/bravobit-bb-foundation-storage.mjs +0 -5
- package/esm2022/storage/lib/interfaces/attributes.interface.mjs +0 -2
- package/esm2022/storage/lib/interfaces/memory.interface.mjs +0 -2
- package/esm2022/storage/lib/interfaces/strategy.interface.mjs +0 -2
- package/esm2022/storage/lib/storage.service.mjs +0 -113
- package/esm2022/storage/lib/strategies/cookie-storage.strategy.mjs +0 -144
- package/esm2022/storage/lib/strategies/memory-storage.strategy.mjs +0 -54
- package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +0 -100
- package/esm2022/storage/public_api.mjs +0 -8
- package/esm2022/table/bravobit-bb-foundation-table.mjs +0 -5
- package/esm2022/table/lib/components/table/table.component.mjs +0 -200
- package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +0 -11
- package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +0 -135
- package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +0 -136
- package/esm2022/table/lib/data/datasource.data.mjs +0 -30
- package/esm2022/table/lib/data/generic.data.mjs +0 -84
- package/esm2022/table/lib/interfaces/datasource.interface.mjs +0 -2
- package/esm2022/table/lib/interfaces/table.interfaces.mjs +0 -2
- package/esm2022/table/lib/table.module.mjs +0 -44
- package/esm2022/table/public_api.mjs +0 -10
- package/esm2022/tooltip/bravobit-bb-foundation-tooltip.mjs +0 -5
- package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +0 -23
- package/esm2022/tooltip/lib/tooltip.directive.mjs +0 -130
- package/esm2022/tooltip/lib/tooltip.interfaces.mjs +0 -4
- package/esm2022/tooltip/lib/tooltip.module.mjs +0 -16
- package/esm2022/tooltip/public_api.mjs +0 -5
- package/esm2022/utils/bravobit-bb-foundation-utils.mjs +0 -5
- package/esm2022/utils/lib/directives/autosize.directive.mjs +0 -76
- package/esm2022/utils/lib/directives/focus-trap.directive.mjs +0 -80
- package/esm2022/utils/lib/directives/focus.directive.mjs +0 -57
- package/esm2022/utils/lib/directives/template.directive.mjs +0 -33
- package/esm2022/utils/lib/utils.module.mjs +0 -35
- package/esm2022/utils/public_api.mjs +0 -6
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { LOCALIZE_CONFIG, LOCALIZE_FUNCTION, LOCALIZE_MISSING_HANDLER, LOCALIZE_TRANSFORM } from './localize.tokens';
|
|
2
|
-
import { APP_INITIALIZER, LOCALE_ID, makeEnvironmentProviders } from '@angular/core';
|
|
3
|
-
import { LocalizeInterpolateTransform } from './transforms/interpolate.transform';
|
|
4
|
-
import { LocalizeReferenceTransform } from './transforms/reference.transform';
|
|
5
|
-
import { LocalizeLowercaseFunction } from './functions/lowercase.function';
|
|
6
|
-
import { LocalizeUppercaseFunction } from './functions/uppercase.function';
|
|
7
|
-
import { LocalizePluralTransform } from './transforms/plural.transform';
|
|
8
|
-
import { LocalizeMissingHandler } from './handlers/missing.handler';
|
|
9
|
-
import { LocalizeDateFunction } from './functions/date.function';
|
|
10
|
-
import { Localize } from './localize.service';
|
|
11
|
-
export function provideLocalizeConfig(config) {
|
|
12
|
-
if (config?.languages?.length <= 0) {
|
|
13
|
-
throw new Error('One or more languages should be supplied.');
|
|
14
|
-
}
|
|
15
|
-
if (config?.compareDictionaries && config?.mode === 'manual') {
|
|
16
|
-
console?.warn?.('You cannot enable "compareDictionaries" when having mode set to "manual"; This setting will be ignored.');
|
|
17
|
-
}
|
|
18
|
-
const mode = config?.mode ?? 'automatic';
|
|
19
|
-
const automaticProviders = mode === 'automatic'
|
|
20
|
-
? [
|
|
21
|
-
{ provide: APP_INITIALIZER, deps: [Localize], useFactory: initializeLocale, multi: true },
|
|
22
|
-
{ provide: LOCALE_ID, deps: [Localize], useFactory: getLocale }
|
|
23
|
-
]
|
|
24
|
-
: [];
|
|
25
|
-
return makeEnvironmentProviders([
|
|
26
|
-
{ provide: LOCALIZE_CONFIG, useValue: config },
|
|
27
|
-
...automaticProviders,
|
|
28
|
-
{ provide: LOCALIZE_FUNCTION, useClass: LocalizeLowercaseFunction, multi: true },
|
|
29
|
-
{ provide: LOCALIZE_FUNCTION, useClass: LocalizeUppercaseFunction, multi: true },
|
|
30
|
-
{ provide: LOCALIZE_FUNCTION, useClass: LocalizeDateFunction, multi: true },
|
|
31
|
-
{ provide: LOCALIZE_TRANSFORM, useClass: LocalizePluralTransform, deps: [LOCALIZE_CONFIG], multi: true },
|
|
32
|
-
{ provide: LOCALIZE_TRANSFORM, useClass: LocalizeReferenceTransform, deps: [LOCALIZE_CONFIG], multi: true },
|
|
33
|
-
{ provide: LOCALIZE_TRANSFORM, useClass: LocalizeInterpolateTransform, deps: [LOCALIZE_CONFIG, LOCALIZE_FUNCTION], multi: true },
|
|
34
|
-
{ provide: LOCALIZE_MISSING_HANDLER, useClass: LocalizeMissingHandler }
|
|
35
|
-
]);
|
|
36
|
-
}
|
|
37
|
-
export function initializeLocale(localize) {
|
|
38
|
-
return localize.initialize();
|
|
39
|
-
}
|
|
40
|
-
export function getLocale(localize) {
|
|
41
|
-
return localize?.current?.locale ?? null;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9sb2NhbGl6ZS9zcmMvbGliL2xvY2FsaXplLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbkgsT0FBTyxFQUFDLGVBQWUsRUFBd0IsU0FBUyxFQUFFLHdCQUF3QixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hGLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRS9ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QyxNQUFNLFVBQVUscUJBQXFCLENBQUMsTUFBc0I7SUFDeEQsSUFBSSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELElBQUksTUFBTSxFQUFFLG1CQUFtQixJQUFJLE1BQU0sRUFBRSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLHlHQUF5RyxDQUFDLENBQUM7SUFDL0gsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksV0FBVyxDQUFDO0lBQ3pDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxLQUFLLFdBQVc7UUFDM0MsQ0FBQyxDQUFDO1lBQ0UsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO1lBQ3ZGLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFDO1NBQ2hFO1FBQ0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVULE9BQU8sd0JBQXdCLENBQUM7UUFDNUIsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUM7UUFDNUMsR0FBRyxrQkFBa0I7UUFDckIsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7UUFDOUUsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7UUFDOUUsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7UUFDekUsRUFBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7UUFDdEcsRUFBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7UUFDekcsRUFBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7UUFDOUgsRUFBQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFDO0tBQ3hFLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBa0I7SUFDL0MsT0FBTyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsUUFBa0I7SUFDeEMsT0FBTyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TE9DQUxJWkVfQ09ORklHLCBMT0NBTElaRV9GVU5DVElPTiwgTE9DQUxJWkVfTUlTU0lOR19IQU5ETEVSLCBMT0NBTElaRV9UUkFOU0ZPUk19IGZyb20gJy4vbG9jYWxpemUudG9rZW5zJztcbmltcG9ydCB7QVBQX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudFByb3ZpZGVycywgTE9DQUxFX0lELCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2NhbGl6ZUludGVycG9sYXRlVHJhbnNmb3JtfSBmcm9tICcuL3RyYW5zZm9ybXMvaW50ZXJwb2xhdGUudHJhbnNmb3JtJztcbmltcG9ydCB7TG9jYWxpemVSZWZlcmVuY2VUcmFuc2Zvcm19IGZyb20gJy4vdHJhbnNmb3Jtcy9yZWZlcmVuY2UudHJhbnNmb3JtJztcbmltcG9ydCB7TG9jYWxpemVMb3dlcmNhc2VGdW5jdGlvbn0gZnJvbSAnLi9mdW5jdGlvbnMvbG93ZXJjYXNlLmZ1bmN0aW9uJztcbmltcG9ydCB7TG9jYWxpemVVcHBlcmNhc2VGdW5jdGlvbn0gZnJvbSAnLi9mdW5jdGlvbnMvdXBwZXJjYXNlLmZ1bmN0aW9uJztcbmltcG9ydCB7TG9jYWxpemVQbHVyYWxUcmFuc2Zvcm19IGZyb20gJy4vdHJhbnNmb3Jtcy9wbHVyYWwudHJhbnNmb3JtJztcbmltcG9ydCB7TG9jYWxpemVNaXNzaW5nSGFuZGxlcn0gZnJvbSAnLi9oYW5kbGVycy9taXNzaW5nLmhhbmRsZXInO1xuaW1wb3J0IHtMb2NhbGl6ZURhdGVGdW5jdGlvbn0gZnJvbSAnLi9mdW5jdGlvbnMvZGF0ZS5mdW5jdGlvbic7XG5pbXBvcnQge0xvY2FsaXplQ29uZmlnfSBmcm9tICcuL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZXMnO1xuaW1wb3J0IHtMb2NhbGl6ZX0gZnJvbSAnLi9sb2NhbGl6ZS5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVMb2NhbGl6ZUNvbmZpZyhjb25maWc6IExvY2FsaXplQ29uZmlnKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICAgIGlmIChjb25maWc/Lmxhbmd1YWdlcz8ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmUgb3IgbW9yZSBsYW5ndWFnZXMgc2hvdWxkIGJlIHN1cHBsaWVkLicpO1xuICAgIH1cblxuICAgIGlmIChjb25maWc/LmNvbXBhcmVEaWN0aW9uYXJpZXMgJiYgY29uZmlnPy5tb2RlID09PSAnbWFudWFsJykge1xuICAgICAgICBjb25zb2xlPy53YXJuPy4oJ1lvdSBjYW5ub3QgZW5hYmxlIFwiY29tcGFyZURpY3Rpb25hcmllc1wiIHdoZW4gaGF2aW5nIG1vZGUgc2V0IHRvIFwibWFudWFsXCI7IFRoaXMgc2V0dGluZyB3aWxsIGJlIGlnbm9yZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZSA9IGNvbmZpZz8ubW9kZSA/PyAnYXV0b21hdGljJztcbiAgICBjb25zdCBhdXRvbWF0aWNQcm92aWRlcnMgPSBtb2RlID09PSAnYXV0b21hdGljJ1xuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsIGRlcHM6IFtMb2NhbGl6ZV0sIHVzZUZhY3Rvcnk6IGluaXRpYWxpemVMb2NhbGUsIG11bHRpOiB0cnVlfSxcbiAgICAgICAgICAgIHtwcm92aWRlOiBMT0NBTEVfSUQsIGRlcHM6IFtMb2NhbGl6ZV0sIHVzZUZhY3Rvcnk6IGdldExvY2FsZX1cbiAgICAgICAgXVxuICAgICAgICA6IFtdO1xuXG4gICAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgICAgIHtwcm92aWRlOiBMT0NBTElaRV9DT05GSUcsIHVzZVZhbHVlOiBjb25maWd9LFxuICAgICAgICAuLi5hdXRvbWF0aWNQcm92aWRlcnMsXG4gICAgICAgIHtwcm92aWRlOiBMT0NBTElaRV9GVU5DVElPTiwgdXNlQ2xhc3M6IExvY2FsaXplTG93ZXJjYXNlRnVuY3Rpb24sIG11bHRpOiB0cnVlfSxcbiAgICAgICAge3Byb3ZpZGU6IExPQ0FMSVpFX0ZVTkNUSU9OLCB1c2VDbGFzczogTG9jYWxpemVVcHBlcmNhc2VGdW5jdGlvbiwgbXVsdGk6IHRydWV9LFxuICAgICAgICB7cHJvdmlkZTogTE9DQUxJWkVfRlVOQ1RJT04sIHVzZUNsYXNzOiBMb2NhbGl6ZURhdGVGdW5jdGlvbiwgbXVsdGk6IHRydWV9LFxuICAgICAgICB7cHJvdmlkZTogTE9DQUxJWkVfVFJBTlNGT1JNLCB1c2VDbGFzczogTG9jYWxpemVQbHVyYWxUcmFuc2Zvcm0sIGRlcHM6IFtMT0NBTElaRV9DT05GSUddLCBtdWx0aTogdHJ1ZX0sXG4gICAgICAgIHtwcm92aWRlOiBMT0NBTElaRV9UUkFOU0ZPUk0sIHVzZUNsYXNzOiBMb2NhbGl6ZVJlZmVyZW5jZVRyYW5zZm9ybSwgZGVwczogW0xPQ0FMSVpFX0NPTkZJR10sIG11bHRpOiB0cnVlfSxcbiAgICAgICAge3Byb3ZpZGU6IExPQ0FMSVpFX1RSQU5TRk9STSwgdXNlQ2xhc3M6IExvY2FsaXplSW50ZXJwb2xhdGVUcmFuc2Zvcm0sIGRlcHM6IFtMT0NBTElaRV9DT05GSUcsIExPQ0FMSVpFX0ZVTkNUSU9OXSwgbXVsdGk6IHRydWV9LFxuICAgICAgICB7cHJvdmlkZTogTE9DQUxJWkVfTUlTU0lOR19IQU5ETEVSLCB1c2VDbGFzczogTG9jYWxpemVNaXNzaW5nSGFuZGxlcn1cbiAgICBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVMb2NhbGUobG9jYWxpemU6IExvY2FsaXplKSB7XG4gICAgcmV0dXJuIGxvY2FsaXplLmluaXRpYWxpemUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsZShsb2NhbGl6ZTogTG9jYWxpemUpIHtcbiAgICByZXR1cm4gbG9jYWxpemU/LmN1cnJlbnQ/LmxvY2FsZSA/PyBudWxsO1xufVxuIl19
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { BbLocalizeString } from './views/localize-string/localize-string.component';
|
|
2
|
-
import { BbLocalizeTemplate } from './views/localize-template.directive';
|
|
3
|
-
import { NgModule } from '@angular/core';
|
|
4
|
-
import { provideLocalizeConfig } from './localize.config';
|
|
5
|
-
import { BbLocalize } from './localize.pipe';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class LocalizeModule {
|
|
8
|
-
static forRoot(config) {
|
|
9
|
-
return {
|
|
10
|
-
ngModule: LocalizeModule,
|
|
11
|
-
providers: [
|
|
12
|
-
provideLocalizeConfig(config)
|
|
13
|
-
]
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: LocalizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: LocalizeModule, imports: [BbLocalize,
|
|
18
|
-
BbLocalizeString,
|
|
19
|
-
BbLocalizeTemplate], exports: [BbLocalize,
|
|
20
|
-
BbLocalizeString,
|
|
21
|
-
BbLocalizeTemplate] });
|
|
22
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: LocalizeModule });
|
|
23
|
-
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: LocalizeModule, decorators: [{
|
|
25
|
-
type: NgModule,
|
|
26
|
-
args: [{
|
|
27
|
-
imports: [
|
|
28
|
-
BbLocalize,
|
|
29
|
-
BbLocalizeString,
|
|
30
|
-
BbLocalizeTemplate
|
|
31
|
-
],
|
|
32
|
-
exports: [
|
|
33
|
-
BbLocalize,
|
|
34
|
-
BbLocalizeString,
|
|
35
|
-
BbLocalizeTemplate
|
|
36
|
-
]
|
|
37
|
-
}]
|
|
38
|
-
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9sb2NhbGl6ZS9zcmMvbGliL2xvY2FsaXplLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RSxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBYzNDLE1BQU0sT0FBTyxjQUFjO0lBRXZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBc0I7UUFDakMsT0FBTztZQUNILFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRTtnQkFDUCxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7YUFDaEM7U0FDSixDQUFDO0lBQ04sQ0FBQzt3R0FUUSxjQUFjO3lHQUFkLGNBQWMsWUFWbkIsVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixrQkFBa0IsYUFHbEIsVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixrQkFBa0I7eUdBR2IsY0FBYzs7NEZBQWQsY0FBYztrQkFaMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsVUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixrQkFBa0I7cUJBQ3JCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCYkxvY2FsaXplU3RyaW5nfSBmcm9tICcuL3ZpZXdzL2xvY2FsaXplLXN0cmluZy9sb2NhbGl6ZS1zdHJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7QmJMb2NhbGl6ZVRlbXBsYXRlfSBmcm9tICcuL3ZpZXdzL2xvY2FsaXplLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0xvY2FsaXplQ29uZmlnfSBmcm9tICcuL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZXMnO1xuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Byb3ZpZGVMb2NhbGl6ZUNvbmZpZ30gZnJvbSAnLi9sb2NhbGl6ZS5jb25maWcnO1xuaW1wb3J0IHtCYkxvY2FsaXplfSBmcm9tICcuL2xvY2FsaXplLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQmJMb2NhbGl6ZSxcbiAgICAgICAgQmJMb2NhbGl6ZVN0cmluZyxcbiAgICAgICAgQmJMb2NhbGl6ZVRlbXBsYXRlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIEJiTG9jYWxpemUsXG4gICAgICAgIEJiTG9jYWxpemVTdHJpbmcsXG4gICAgICAgIEJiTG9jYWxpemVUZW1wbGF0ZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxpemVNb2R1bGUge1xuXG4gICAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBMb2NhbGl6ZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TG9jYWxpemVNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBMb2NhbGl6ZU1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIHByb3ZpZGVMb2NhbGl6ZUNvbmZpZyhjb25maWcpXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { Optional, Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./localize.service";
|
|
4
|
-
export class BbLocalize {
|
|
5
|
-
_localize;
|
|
6
|
-
constructor(_localize) {
|
|
7
|
-
this._localize = _localize;
|
|
8
|
-
}
|
|
9
|
-
transform(tokenOrParams, args) {
|
|
10
|
-
// Combine the params with the options to form the localize params.
|
|
11
|
-
const params = this.combineParamsWithOptions(tokenOrParams, args);
|
|
12
|
-
// Validate that the localize service exists in the pipe.
|
|
13
|
-
if (!this._localize) {
|
|
14
|
-
return params?.token ?? null;
|
|
15
|
-
}
|
|
16
|
-
// Try to localize the value.
|
|
17
|
-
return this._localize.translate(params);
|
|
18
|
-
}
|
|
19
|
-
combineParamsWithOptions(tokenOrParams, args) {
|
|
20
|
-
// Gather the extras.
|
|
21
|
-
const extras = args ?? {};
|
|
22
|
-
// Loop through all the keys to find the set options.
|
|
23
|
-
const options = Object.keys(extras).reduce((previous, current) => {
|
|
24
|
-
if (typeof extras?.[current] === 'undefined') {
|
|
25
|
-
return previous;
|
|
26
|
-
}
|
|
27
|
-
return { ...previous, [current]: extras?.[current] };
|
|
28
|
-
}, {});
|
|
29
|
-
// Convert the string token to a params object.
|
|
30
|
-
const params = typeof tokenOrParams === 'string'
|
|
31
|
-
? { token: tokenOrParams, optional: false, data: {}, dictionary: null }
|
|
32
|
-
: tokenOrParams;
|
|
33
|
-
// Return the combined params and options.
|
|
34
|
-
return { ...params, ...options };
|
|
35
|
-
}
|
|
36
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbLocalize, deps: [{ token: i1.Localize, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
37
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: BbLocalize, isStandalone: true, name: "bbLocalize" });
|
|
38
|
-
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbLocalize, decorators: [{
|
|
40
|
-
type: Pipe,
|
|
41
|
-
args: [{
|
|
42
|
-
name: 'bbLocalize',
|
|
43
|
-
standalone: true
|
|
44
|
-
}]
|
|
45
|
-
}], ctorParameters: () => [{ type: i1.Localize, decorators: [{
|
|
46
|
-
type: Optional
|
|
47
|
-
}] }] });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vbG9jYWxpemUvc3JjL2xpYi9sb2NhbGl6ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7O0FBTzVELE1BQU0sT0FBTyxVQUFVO0lBRWE7SUFBaEMsWUFBZ0MsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUNwRCxDQUFDO0lBRUQsU0FBUyxDQUFDLGFBQXNDLEVBQUUsSUFBc0I7UUFDcEUsbUVBQW1FO1FBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbEUseURBQXlEO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEIsT0FBTyxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztRQUNqQyxDQUFDO1FBRUQsNkJBQTZCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLHdCQUF3QixDQUFDLGFBQXNDLEVBQUUsSUFBc0I7UUFDM0YscUJBQXFCO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFMUIscURBQXFEO1FBQ3JELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQzdELElBQUksT0FBTyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxRQUFRLENBQUM7WUFDcEIsQ0FBQztZQUVELE9BQU8sRUFBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUM7UUFDdkQsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVAsK0NBQStDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLE9BQU8sYUFBYSxLQUFLLFFBQVE7WUFDNUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQztZQUNyRSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBRXBCLDBDQUEwQztRQUMxQyxPQUFPLEVBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxPQUFPLEVBQUMsQ0FBQztJQUNuQyxDQUFDO3dHQXRDUSxVQUFVO3NHQUFWLFVBQVU7OzRGQUFWLFVBQVU7a0JBSnRCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBR2dCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xvY2FsaXplT3B0aW9ucywgTG9jYWxpemVQYXJhbXN9IGZyb20gJy4vaW50ZXJmYWNlcy9vcHRpb25zLmludGVyZmFjZXMnO1xuaW1wb3J0IHtPcHRpb25hbCwgUGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvY2FsaXplfSBmcm9tICcuL2xvY2FsaXplLnNlcnZpY2UnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2JiTG9jYWxpemUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQmJMb2NhbGl6ZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBfbG9jYWxpemU/OiBMb2NhbGl6ZSkge1xuICAgIH1cblxuICAgIHRyYW5zZm9ybSh0b2tlbk9yUGFyYW1zOiBzdHJpbmcgfCBMb2NhbGl6ZVBhcmFtcywgYXJncz86IExvY2FsaXplT3B0aW9ucykge1xuICAgICAgICAvLyBDb21iaW5lIHRoZSBwYXJhbXMgd2l0aCB0aGUgb3B0aW9ucyB0byBmb3JtIHRoZSBsb2NhbGl6ZSBwYXJhbXMuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuY29tYmluZVBhcmFtc1dpdGhPcHRpb25zKHRva2VuT3JQYXJhbXMsIGFyZ3MpO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIGxvY2FsaXplIHNlcnZpY2UgZXhpc3RzIGluIHRoZSBwaXBlLlxuICAgICAgICBpZiAoIXRoaXMuX2xvY2FsaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zPy50b2tlbiA/PyBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJ5IHRvIGxvY2FsaXplIHRoZSB2YWx1ZS5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsaXplLnRyYW5zbGF0ZShwYXJhbXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tYmluZVBhcmFtc1dpdGhPcHRpb25zKHRva2VuT3JQYXJhbXM6IHN0cmluZyB8IExvY2FsaXplUGFyYW1zLCBhcmdzPzogTG9jYWxpemVPcHRpb25zKSB7XG4gICAgICAgIC8vIEdhdGhlciB0aGUgZXh0cmFzLlxuICAgICAgICBjb25zdCBleHRyYXMgPSBhcmdzID8/IHt9O1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIGtleXMgdG8gZmluZCB0aGUgc2V0IG9wdGlvbnMuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3Qua2V5cyhleHRyYXMpLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmFzPy5bY3VycmVudF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gey4uLnByZXZpb3VzLCBbY3VycmVudF06IGV4dHJhcz8uW2N1cnJlbnRdfTtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdGhlIHN0cmluZyB0b2tlbiB0byBhIHBhcmFtcyBvYmplY3QuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHR5cGVvZiB0b2tlbk9yUGFyYW1zID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyB7dG9rZW46IHRva2VuT3JQYXJhbXMsIG9wdGlvbmFsOiBmYWxzZSwgZGF0YToge30sIGRpY3Rpb25hcnk6IG51bGx9XG4gICAgICAgICAgICA6IHRva2VuT3JQYXJhbXM7XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBjb21iaW5lZCBwYXJhbXMgYW5kIG9wdGlvbnMuXG4gICAgICAgIHJldHVybiB7Li4ucGFyYW1zLCAuLi5vcHRpb25zfTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { LOCALIZE_CONFIG, LOCALIZE_MISSING_HANDLER, LOCALIZE_TRANSFORM } from './localize.tokens';
|
|
2
|
-
import { LocalizeDictionary } from './dictionary/dictionary.class';
|
|
3
|
-
import { Languages, WINDOW } from '@bravobit/bb-foundation';
|
|
4
|
-
import { Storage } from '@bravobit/bb-foundation/storage';
|
|
5
|
-
import { inject, Injectable } from '@angular/core';
|
|
6
|
-
import { DOCUMENT } from '@angular/common';
|
|
7
|
-
import { BehaviorSubject } from 'rxjs';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export class Localize {
|
|
10
|
-
// Dependencies.
|
|
11
|
-
_storage = inject(Storage);
|
|
12
|
-
_languages = inject(Languages);
|
|
13
|
-
_window = inject(WINDOW, { optional: true });
|
|
14
|
-
_document = inject(DOCUMENT, { optional: true });
|
|
15
|
-
_config = inject(LOCALIZE_CONFIG, { optional: true });
|
|
16
|
-
_transforms = inject(LOCALIZE_TRANSFORM, { optional: true });
|
|
17
|
-
_missingHandler = inject(LOCALIZE_MISSING_HANDLER, { optional: true });
|
|
18
|
-
// Readonly data.
|
|
19
|
-
_storageToken = this._config?.storageToken ?? 'bb-language-dictionary-id';
|
|
20
|
-
_availableLanguages = this?._config?.languages ?? [];
|
|
21
|
-
_bestMatchingLanguage = this.retrieveBestMatchingLanguage();
|
|
22
|
-
_loadedDictionaries = new Map();
|
|
23
|
-
// Current dictionary.
|
|
24
|
-
_current$ = new BehaviorSubject(null);
|
|
25
|
-
// State changes.
|
|
26
|
-
dictionaryChanges$ = this._current$.asObservable();
|
|
27
|
-
constructor() {
|
|
28
|
-
this.renderDocumentLanguage();
|
|
29
|
-
}
|
|
30
|
-
get languages() {
|
|
31
|
-
return this._availableLanguages ?? [];
|
|
32
|
-
}
|
|
33
|
-
get current() {
|
|
34
|
-
return this._current$.getValue();
|
|
35
|
-
}
|
|
36
|
-
async load(id) {
|
|
37
|
-
if (id === null || id === undefined) {
|
|
38
|
-
throw new Error(`Cannot load language with id: "${id}".`);
|
|
39
|
-
}
|
|
40
|
-
if (this._loadedDictionaries.has(id)) {
|
|
41
|
-
return this._loadedDictionaries.get(id);
|
|
42
|
-
}
|
|
43
|
-
const language = this.languages?.find(language => language?.id === id);
|
|
44
|
-
if (!language || !language?.data) {
|
|
45
|
-
console?.warn?.(`No language was found with id: "${id}"; Defaulting to first available language.`);
|
|
46
|
-
const languageId = this.languages?.[0]?.id ?? null;
|
|
47
|
-
return this.load(languageId);
|
|
48
|
-
}
|
|
49
|
-
const dictionaryDataValues = await language?.data?.();
|
|
50
|
-
const dictionary = this.createDictionary(dictionaryDataValues, language);
|
|
51
|
-
this._loadedDictionaries.set(id, dictionary);
|
|
52
|
-
return dictionary;
|
|
53
|
-
}
|
|
54
|
-
async loadAllLanguages() {
|
|
55
|
-
for (const language of this.languages) {
|
|
56
|
-
await this.load(language?.id);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
async switch(id, options) {
|
|
60
|
-
const dictionary = await this.load(id);
|
|
61
|
-
this._current$.next(dictionary);
|
|
62
|
-
const cache = options?.cache ?? true;
|
|
63
|
-
if (cache) {
|
|
64
|
-
this._storage.cookie.set(this._storageToken, dictionary?.id, {});
|
|
65
|
-
}
|
|
66
|
-
const reload = options?.reload ?? false;
|
|
67
|
-
if (reload) {
|
|
68
|
-
this._window?.location?.reload?.();
|
|
69
|
-
}
|
|
70
|
-
return dictionary;
|
|
71
|
-
}
|
|
72
|
-
select(id) {
|
|
73
|
-
if (!this._loadedDictionaries.has(id)) {
|
|
74
|
-
throw new Error(`Dictionary with id: "${id}" not loaded; Load dictionary first before using .select(:id).`);
|
|
75
|
-
}
|
|
76
|
-
return this._loadedDictionaries.get(id);
|
|
77
|
-
}
|
|
78
|
-
initialize() {
|
|
79
|
-
return async () => {
|
|
80
|
-
await this.switch(this._bestMatchingLanguage?.id, { reload: false, cache: false });
|
|
81
|
-
return this.compareDictionaries();
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
clear() {
|
|
85
|
-
this._storage.cookie.remove(this._storageToken);
|
|
86
|
-
}
|
|
87
|
-
transform(value, data = {}) {
|
|
88
|
-
return (this._transforms ?? []).reduce((previous, current) => {
|
|
89
|
-
return current.execute(previous, data, this);
|
|
90
|
-
}, value);
|
|
91
|
-
}
|
|
92
|
-
translate(tokenOrParams) {
|
|
93
|
-
// 1. Convert to the params.
|
|
94
|
-
const params = this.convertToParams(tokenOrParams);
|
|
95
|
-
// 2. Try to find the translation in the dictionary.
|
|
96
|
-
const dictionary = this.getDictionary(params?.dictionary);
|
|
97
|
-
const searchResult = !!dictionary ? dictionary.get(params?.token) : null;
|
|
98
|
-
// 3. Verify the translation was found.
|
|
99
|
-
if (!searchResult) {
|
|
100
|
-
if (!this._missingHandler) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
return this._missingHandler.handle(params);
|
|
104
|
-
}
|
|
105
|
-
return this.transform(searchResult, params?.data);
|
|
106
|
-
}
|
|
107
|
-
retrieveBestMatchingLanguage() {
|
|
108
|
-
return this.getLanguageFromStorage()
|
|
109
|
-
?? this.getBestBrowserMatchLanguage()
|
|
110
|
-
?? this._availableLanguages?.[0];
|
|
111
|
-
}
|
|
112
|
-
getLanguageFromStorage() {
|
|
113
|
-
// Get id from the storage.
|
|
114
|
-
const id = this._storage.cookie.get(this._storageToken);
|
|
115
|
-
// Return the language based on the storage id.
|
|
116
|
-
return this._availableLanguages.find(item => item?.id === id);
|
|
117
|
-
}
|
|
118
|
-
getBestBrowserMatchLanguage() {
|
|
119
|
-
// Loop through all browser languages and return the
|
|
120
|
-
// best matching language.
|
|
121
|
-
return this._languages.all.map(({ code, region }) => {
|
|
122
|
-
const languageCode = [code, region].filter(data => !!data).join('-');
|
|
123
|
-
return this._availableLanguages.find(item => item?.supported?.includes(languageCode));
|
|
124
|
-
}).filter(item => !!item).find((_, index) => index === 0);
|
|
125
|
-
}
|
|
126
|
-
createDictionary(data, language) {
|
|
127
|
-
return new LocalizeDictionary(language?.id, language?.locale, language?.supported, data?.data, this);
|
|
128
|
-
}
|
|
129
|
-
getDictionary(id) {
|
|
130
|
-
if (id === null || id === undefined) {
|
|
131
|
-
return this.current;
|
|
132
|
-
}
|
|
133
|
-
return this.select(id);
|
|
134
|
-
}
|
|
135
|
-
renderDocumentLanguage() {
|
|
136
|
-
const element = this._document?.documentElement;
|
|
137
|
-
if (!element) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
element.lang = this._bestMatchingLanguage?.supported?.[0] ?? this._bestMatchingLanguage?.locale;
|
|
141
|
-
}
|
|
142
|
-
async compareDictionaries() {
|
|
143
|
-
const compareDictionaries = this._config.compareDictionaries ?? false;
|
|
144
|
-
if (!compareDictionaries || !this.current) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
const languageIds = (this.languages ?? [])
|
|
148
|
-
?.filter(language => language?.id !== this.current?.id)
|
|
149
|
-
?.map(language => language?.id);
|
|
150
|
-
return await this.current.compare(languageIds);
|
|
151
|
-
}
|
|
152
|
-
convertToParams = (tokenOrParams) => {
|
|
153
|
-
if (typeof tokenOrParams !== 'string') {
|
|
154
|
-
// Destruct the params from the object.
|
|
155
|
-
const { token, optional, dictionary, data } = tokenOrParams;
|
|
156
|
-
// Make sure all parameters are valid
|
|
157
|
-
// by type safe adding them.
|
|
158
|
-
return { token: token, optional: optional ?? false, dictionary: dictionary ?? null, data: data ?? {} };
|
|
159
|
-
}
|
|
160
|
-
// If the parameter is a string fill in the blanks.
|
|
161
|
-
return { token: tokenOrParams, optional: false, dictionary: null, data: {} };
|
|
162
|
-
};
|
|
163
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: Localize, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
164
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: Localize, providedIn: 'root' });
|
|
165
|
-
}
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: Localize, decorators: [{
|
|
167
|
-
type: Injectable,
|
|
168
|
-
args: [{
|
|
169
|
-
providedIn: 'root'
|
|
170
|
-
}]
|
|
171
|
-
}], ctorParameters: () => [] });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vbG9jYWxpemUvc3JjL2xpYi9sb2NhbGl6ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUtoRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUVqRSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFLckMsTUFBTSxPQUFPLFFBQVE7SUFFakIsZ0JBQWdCO0lBQ0MsUUFBUSxHQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxVQUFVLEdBQWMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sR0FBWSxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDcEQsU0FBUyxHQUFjLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUMxRCxPQUFPLEdBQW9CLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUNyRSxXQUFXLEdBQXlCLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJ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QUFFLEVBQUU7UUFDakUsSUFBSSxPQUFPLGFBQWEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNwQyx1Q0FBdUM7WUFDdkMsTUFBTSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQyxHQUFHLGFBQWEsQ0FBQztZQUUxRCxxQ0FBcUM7WUFDckMsNEJBQTRCO1lBQzVCLE9BQU8sRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxFQUFDLENBQUM7UUFDekcsQ0FBQztRQUVELG1EQUFtRDtRQUNuRCxPQUFPLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQy9FLENBQUMsQ0FBQzt3R0FqTU8sUUFBUTs0R0FBUixRQUFRLGNBRkwsTUFBTTs7NEZBRVQsUUFBUTtrQkFIcEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xPQ0FMSVpFX0NPTkZJRywgTE9DQUxJWkVfTUlTU0lOR19IQU5ETEVSLCBMT0NBTElaRV9UUkFOU0ZPUk19IGZyb20gJy4vbG9jYWxpemUudG9rZW5zJztcbmltcG9ydCB7TG9jYWxpemVDb25maWcsIExvY2FsaXplQ29uZmlnTGFuZ3VhZ2V9IGZyb20gJy4vaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0xvY2FsaXplRGljdGlvbmFyeURhdGF9IGZyb20gJy4vZGljdGlvbmFyeS9kaWN0aW9uYXJ5LmRhdGEnO1xuaW1wb3J0IHtMb2NhbGl6ZVRyYW5zZm9ybX0gZnJvbSAnLi90cmFuc2Zvcm1zL2Fic3RyYWN0LnRyYW5zZm9ybSc7XG5pbXBvcnQge0xvY2FsaXplTWlzc2luZ0hhbmRsZXJ9IGZyb20gJy4vaGFuZGxlcnMvbWlzc2luZy5oYW5kbGVyJztcbmltcG9ydCB7TG9jYWxpemVEaWN0aW9uYXJ5fSBmcm9tICcuL2RpY3Rpb25hcnkvZGljdGlvbmFyeS5jbGFzcyc7XG5pbXBvcnQge0xvY2FsaXplUGFyYW1zfSBmcm9tICcuL2ludGVyZmFjZXMvb3B0aW9ucy5pbnRlcmZhY2VzJztcbmltcG9ydCB7TGFuZ3VhZ2VzLCBXSU5ET1d9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uJztcbmltcG9ydCB7U3RvcmFnZX0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vc3RvcmFnZSc7XG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsaXplIHtcblxuICAgIC8vIERlcGVuZGVuY2llcy5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yYWdlOiBTdG9yYWdlID0gaW5qZWN0KFN0b3JhZ2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xhbmd1YWdlczogTGFuZ3VhZ2VzID0gaW5qZWN0KExhbmd1YWdlcyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfd2luZG93PzogV2luZG93ID0gaW5qZWN0KFdJTkRPVywge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ/OiBEb2N1bWVudCA9IGluamVjdChET0NVTUVOVCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnPzogTG9jYWxpemVDb25maWcgPSBpbmplY3QoTE9DQUxJWkVfQ09ORklHLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2Zvcm1zPzogTG9jYWxpemVUcmFuc2Zvcm1bXSA9IGluamVjdChMT0NBTElaRV9UUkFOU0ZPUk0sIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21pc3NpbmdIYW5kbGVyPzogTG9jYWxpemVNaXNzaW5nSGFuZGxlciA9IGluamVjdChMT0NBTElaRV9NSVNTSU5HX0hBTkRMRVIsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgLy8gUmVhZG9ubHkgZGF0YS5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yYWdlVG9rZW46IHN0cmluZyA9IHRoaXMuX2NvbmZpZz8uc3RvcmFnZVRva2VuID8/ICdiYi1sYW5ndWFnZS1kaWN0aW9uYXJ5LWlkJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hdmFpbGFibGVMYW5ndWFnZXM6IExvY2FsaXplQ29uZmlnTGFuZ3VhZ2VbXSA9IHRoaXM/Ll9jb25maWc/Lmxhbmd1YWdlcyA/PyBbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9iZXN0TWF0Y2hpbmdMYW5ndWFnZTogTG9jYWxpemVDb25maWdMYW5ndWFnZSA9IHRoaXMucmV0cmlldmVCZXN0TWF0Y2hpbmdMYW5ndWFnZSgpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGVkRGljdGlvbmFyaWVzOiBNYXA8c3RyaW5nLCBMb2NhbGl6ZURpY3Rpb25hcnk+ID0gbmV3IE1hcDxzdHJpbmcsIExvY2FsaXplRGljdGlvbmFyeT4oKTtcblxuICAgIC8vIEN1cnJlbnQgZGljdGlvbmFyeS5cbiAgICBwcml2YXRlIF9jdXJyZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TG9jYWxpemVEaWN0aW9uYXJ5IHwgbnVsbD4obnVsbCk7XG5cbiAgICAvLyBTdGF0ZSBjaGFuZ2VzLlxuICAgIGRpY3Rpb25hcnlDaGFuZ2VzJCA9IHRoaXMuX2N1cnJlbnQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucmVuZGVyRG9jdW1lbnRMYW5ndWFnZSgpO1xuICAgIH1cblxuICAgIGdldCBsYW5ndWFnZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdmFpbGFibGVMYW5ndWFnZXMgPz8gW107XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50JC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGFzeW5jIGxvYWQoaWQ6IHN0cmluZykge1xuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgbG9hZCBsYW5ndWFnZSB3aXRoIGlkOiBcIiR7aWR9XCIuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fbG9hZGVkRGljdGlvbmFyaWVzLmhhcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkZWREaWN0aW9uYXJpZXMuZ2V0KGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZXM/LmZpbmQobGFuZ3VhZ2UgPT4gbGFuZ3VhZ2U/LmlkID09PSBpZCk7XG4gICAgICAgIGlmICghbGFuZ3VhZ2UgfHwgIWxhbmd1YWdlPy5kYXRhKSB7XG4gICAgICAgICAgICBjb25zb2xlPy53YXJuPy4oYE5vIGxhbmd1YWdlIHdhcyBmb3VuZCB3aXRoIGlkOiBcIiR7aWR9XCI7IERlZmF1bHRpbmcgdG8gZmlyc3QgYXZhaWxhYmxlIGxhbmd1YWdlLmApO1xuICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2VJZCA9IHRoaXMubGFuZ3VhZ2VzPy5bMF0/LmlkID8/IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkKGxhbmd1YWdlSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGljdGlvbmFyeURhdGFWYWx1ZXMgPSBhd2FpdCBsYW5ndWFnZT8uZGF0YT8uKCk7XG4gICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSB0aGlzLmNyZWF0ZURpY3Rpb25hcnkoZGljdGlvbmFyeURhdGFWYWx1ZXMsIGxhbmd1YWdlKTtcbiAgICAgICAgdGhpcy5fbG9hZGVkRGljdGlvbmFyaWVzLnNldChpZCwgZGljdGlvbmFyeSk7XG4gICAgICAgIHJldHVybiBkaWN0aW9uYXJ5O1xuICAgIH1cblxuICAgIGFzeW5jIGxvYWRBbGxMYW5ndWFnZXMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgbGFuZ3VhZ2Ugb2YgdGhpcy5sYW5ndWFnZXMpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZChsYW5ndWFnZT8uaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgc3dpdGNoKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiB7IGNhY2hlPzogYm9vbGVhbiwgcmVsb2FkPzogYm9vbGVhbiB9KSB7XG4gICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBhd2FpdCB0aGlzLmxvYWQoaWQpO1xuICAgICAgICB0aGlzLl9jdXJyZW50JC5uZXh0KGRpY3Rpb25hcnkpO1xuXG4gICAgICAgIGNvbnN0IGNhY2hlID0gb3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZTtcbiAgICAgICAgaWYgKGNhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLmNvb2tpZS5zZXQ8c3RyaW5nPih0aGlzLl9zdG9yYWdlVG9rZW4sIGRpY3Rpb25hcnk/LmlkLCB7fSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWxvYWQgPSBvcHRpb25zPy5yZWxvYWQgPz8gZmFsc2U7XG4gICAgICAgIGlmIChyZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3dpbmRvdz8ubG9jYXRpb24/LnJlbG9hZD8uKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGljdGlvbmFyeTtcbiAgICB9XG5cbiAgICBzZWxlY3QoaWQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMuX2xvYWRlZERpY3Rpb25hcmllcy5oYXMoaWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERpY3Rpb25hcnkgd2l0aCBpZDogXCIke2lkfVwiIG5vdCBsb2FkZWQ7IExvYWQgZGljdGlvbmFyeSBmaXJzdCBiZWZvcmUgdXNpbmcgLnNlbGVjdCg6aWQpLmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkZWREaWN0aW9uYXJpZXMuZ2V0KGlkKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zd2l0Y2godGhpcy5fYmVzdE1hdGNoaW5nTGFuZ3VhZ2U/LmlkLCB7cmVsb2FkOiBmYWxzZSwgY2FjaGU6IGZhbHNlfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlRGljdGlvbmFyaWVzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuX3N0b3JhZ2UuY29va2llLnJlbW92ZSh0aGlzLl9zdG9yYWdlVG9rZW4pO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBkYXRhOiBMb2NhbGl6ZVBhcmFtc1snZGF0YSddID0ge30pIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl90cmFuc2Zvcm1zID8/IFtdKS5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudC5leGVjdXRlKHByZXZpb3VzLCBkYXRhLCB0aGlzKTtcbiAgICAgICAgfSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHRyYW5zbGF0ZSh0b2tlbk9yUGFyYW1zOiBzdHJpbmcgfCBMb2NhbGl6ZVBhcmFtcykge1xuICAgICAgICAvLyAxLiBDb252ZXJ0IHRvIHRoZSBwYXJhbXMuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuY29udmVydFRvUGFyYW1zKHRva2VuT3JQYXJhbXMpO1xuXG4gICAgICAgIC8vIDIuIFRyeSB0byBmaW5kIHRoZSB0cmFuc2xhdGlvbiBpbiB0aGUgZGljdGlvbmFyeS5cbiAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IHRoaXMuZ2V0RGljdGlvbmFyeShwYXJhbXM/LmRpY3Rpb25hcnkpO1xuICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHQgPSAhIWRpY3Rpb25hcnkgPyBkaWN0aW9uYXJ5LmdldChwYXJhbXM/LnRva2VuKSA6IG51bGw7XG5cbiAgICAgICAgLy8gMy4gVmVyaWZ5IHRoZSB0cmFuc2xhdGlvbiB3YXMgZm91bmQuXG4gICAgICAgIGlmICghc2VhcmNoUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX21pc3NpbmdIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWlzc2luZ0hhbmRsZXIuaGFuZGxlKHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm0oc2VhcmNoUmVzdWx0LCBwYXJhbXM/LmRhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmV0cmlldmVCZXN0TWF0Y2hpbmdMYW5ndWFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGFuZ3VhZ2VGcm9tU3RvcmFnZSgpXG4gICAgICAgICAgICA/PyB0aGlzLmdldEJlc3RCcm93c2VyTWF0Y2hMYW5ndWFnZSgpXG4gICAgICAgICAgICA/PyB0aGlzLl9hdmFpbGFibGVMYW5ndWFnZXM/LlswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhbmd1YWdlRnJvbVN0b3JhZ2UoKSB7XG4gICAgICAgIC8vIEdldCBpZCBmcm9tIHRoZSBzdG9yYWdlLlxuICAgICAgICBjb25zdCBpZCA9IHRoaXMuX3N0b3JhZ2UuY29va2llLmdldDxzdHJpbmc+KHRoaXMuX3N0b3JhZ2VUb2tlbik7XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgc3RvcmFnZSBpZC5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZUxhbmd1YWdlcy5maW5kKGl0ZW0gPT4gaXRlbT8uaWQgPT09IGlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJlc3RCcm93c2VyTWF0Y2hMYW5ndWFnZSgpIHtcbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCBicm93c2VyIGxhbmd1YWdlcyBhbmQgcmV0dXJuIHRoZVxuICAgICAgICAvLyBiZXN0IG1hdGNoaW5nIGxhbmd1YWdlLlxuICAgICAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2VzLmFsbC5tYXAoKHtjb2RlLCByZWdpb259KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYW5ndWFnZUNvZGUgPSBbY29kZSwgcmVnaW9uXS5maWx0ZXIoZGF0YSA9PiAhIWRhdGEpLmpvaW4oJy0nKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZUxhbmd1YWdlcy5maW5kKGl0ZW0gPT4gaXRlbT8uc3VwcG9ydGVkPy5pbmNsdWRlcyhsYW5ndWFnZUNvZGUpKTtcbiAgICAgICAgfSkuZmlsdGVyKGl0ZW0gPT4gISFpdGVtKS5maW5kKChfLCBpbmRleCkgPT4gaW5kZXggPT09IDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGljdGlvbmFyeShkYXRhOiBMb2NhbGl6ZURpY3Rpb25hcnlEYXRhLCBsYW5ndWFnZTogTG9jYWxpemVDb25maWdMYW5ndWFnZSkge1xuICAgICAgICByZXR1cm4gbmV3IExvY2FsaXplRGljdGlvbmFyeShsYW5ndWFnZT8uaWQsIGxhbmd1YWdlPy5sb2NhbGUsIGxhbmd1YWdlPy5zdXBwb3J0ZWQsIGRhdGE/LmRhdGEsIHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGljdGlvbmFyeShpZDogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3QoaWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyRG9jdW1lbnRMYW5ndWFnZSgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2RvY3VtZW50Py5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudC5sYW5nID0gdGhpcy5fYmVzdE1hdGNoaW5nTGFuZ3VhZ2U/LnN1cHBvcnRlZD8uWzBdID8/IHRoaXMuX2Jlc3RNYXRjaGluZ0xhbmd1YWdlPy5sb2NhbGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjb21wYXJlRGljdGlvbmFyaWVzKCkge1xuICAgICAgICBjb25zdCBjb21wYXJlRGljdGlvbmFyaWVzID0gdGhpcy5fY29uZmlnLmNvbXBhcmVEaWN0aW9uYXJpZXMgPz8gZmFsc2U7XG4gICAgICAgIGlmICghY29tcGFyZURpY3Rpb25hcmllcyB8fCAhdGhpcy5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYW5ndWFnZUlkcyA9ICh0aGlzLmxhbmd1YWdlcyA/PyBbXSlcbiAgICAgICAgICAgID8uZmlsdGVyKGxhbmd1YWdlID0+IGxhbmd1YWdlPy5pZCAhPT0gdGhpcy5jdXJyZW50Py5pZClcbiAgICAgICAgICAgID8ubWFwKGxhbmd1YWdlID0+IGxhbmd1YWdlPy5pZCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY3VycmVudC5jb21wYXJlKGxhbmd1YWdlSWRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRUb1BhcmFtcyA9ICh0b2tlbk9yUGFyYW1zOiBzdHJpbmcgfCBMb2NhbGl6ZVBhcmFtcykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuT3JQYXJhbXMgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBEZXN0cnVjdCB0aGUgcGFyYW1zIGZyb20gdGhlIG9iamVjdC5cbiAgICAgICAgICAgIGNvbnN0IHt0b2tlbiwgb3B0aW9uYWwsIGRpY3Rpb25hcnksIGRhdGF9ID0gdG9rZW5PclBhcmFtcztcblxuICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGFsbCBwYXJhbWV0ZXJzIGFyZSB2YWxpZFxuICAgICAgICAgICAgLy8gYnkgdHlwZSBzYWZlIGFkZGluZyB0aGVtLlxuICAgICAgICAgICAgcmV0dXJuIHt0b2tlbjogdG9rZW4sIG9wdGlvbmFsOiBvcHRpb25hbCA/PyBmYWxzZSwgZGljdGlvbmFyeTogZGljdGlvbmFyeSA/PyBudWxsLCBkYXRhOiBkYXRhID8/IHt9fTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcgZmlsbCBpbiB0aGUgYmxhbmtzLlxuICAgICAgICByZXR1cm4ge3Rva2VuOiB0b2tlbk9yUGFyYW1zLCBvcHRpb25hbDogZmFsc2UsIGRpY3Rpb25hcnk6IG51bGwsIGRhdGE6IHt9fTtcbiAgICB9O1xuXG59XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { distinctUntilChanged, map, startWith } from 'rxjs/operators';
|
|
2
|
-
import { inject, InjectionToken, LOCALE_ID } from '@angular/core';
|
|
3
|
-
import { Localize } from './localize.service';
|
|
4
|
-
import { of } from 'rxjs';
|
|
5
|
-
export const LOCALIZE_FUNCTION = new InjectionToken('localize function');
|
|
6
|
-
export const LOCALIZE_CONFIG = new InjectionToken('localize config');
|
|
7
|
-
export const LOCALIZE_TRANSFORM = new InjectionToken('localize transform');
|
|
8
|
-
export const LOCALIZE_MISSING_HANDLER = new InjectionToken('localize missing handler');
|
|
9
|
-
export const LOCALIZE_ID = new InjectionToken('An abstraction over locale changes', {
|
|
10
|
-
factory: () => {
|
|
11
|
-
const localize = inject(Localize, { optional: true });
|
|
12
|
-
if (!localize) {
|
|
13
|
-
return of(inject(LOCALE_ID));
|
|
14
|
-
}
|
|
15
|
-
return localize.dictionaryChanges$.pipe(map(dictionary => dictionary?.locale ?? null), distinctUntilChanged(), startWith(localize?.current?.locale ?? null));
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUudG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9sb2NhbGl6ZS9zcmMvbGliL2xvY2FsaXplLnRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSXBFLE9BQU8sRUFBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBdUMsSUFBSSxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUM3RyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQW1DLElBQUksY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckcsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXdDLElBQUksY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDaEgsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQTJDLElBQUksY0FBYyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFL0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUN6QyxvQ0FBb0MsRUFDcEM7SUFDSSxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ1YsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ25DLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLEVBQzdDLG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FDL0MsQ0FBQztJQUNOLENBQUM7Q0FDSixDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtMb2NhbGl6ZUZ1bmN0aW9ufSBmcm9tICcuL2ludGVyZmFjZXMvZnVuY3Rpb25zLmludGVyZmFjZXMnO1xuaW1wb3J0IHtMb2NhbGl6ZU1pc3NpbmdIYW5kbGVyfSBmcm9tICcuL2hhbmRsZXJzL21pc3NpbmcuaGFuZGxlcic7XG5pbXBvcnQge0xvY2FsaXplVHJhbnNmb3JtfSBmcm9tICcuL3RyYW5zZm9ybXMvYWJzdHJhY3QudHJhbnNmb3JtJztcbmltcG9ydCB7aW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgTE9DQUxFX0lEfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9jYWxpemVDb25maWd9IGZyb20gJy4vaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0xvY2FsaXplfSBmcm9tICcuL2xvY2FsaXplLnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBMT0NBTElaRV9GVU5DVElPTjogSW5qZWN0aW9uVG9rZW48TG9jYWxpemVGdW5jdGlvbltdPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignbG9jYWxpemUgZnVuY3Rpb24nKTtcbmV4cG9ydCBjb25zdCBMT0NBTElaRV9DT05GSUc6IEluamVjdGlvblRva2VuPExvY2FsaXplQ29uZmlnPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignbG9jYWxpemUgY29uZmlnJyk7XG5leHBvcnQgY29uc3QgTE9DQUxJWkVfVFJBTlNGT1JNOiBJbmplY3Rpb25Ub2tlbjxMb2NhbGl6ZVRyYW5zZm9ybVtdPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignbG9jYWxpemUgdHJhbnNmb3JtJyk7XG5leHBvcnQgY29uc3QgTE9DQUxJWkVfTUlTU0lOR19IQU5ETEVSOiBJbmplY3Rpb25Ub2tlbjxMb2NhbGl6ZU1pc3NpbmdIYW5kbGVyPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignbG9jYWxpemUgbWlzc2luZyBoYW5kbGVyJyk7XG5cbmV4cG9ydCBjb25zdCBMT0NBTElaRV9JRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPHN0cmluZz4+KFxuICAgICdBbiBhYnN0cmFjdGlvbiBvdmVyIGxvY2FsZSBjaGFuZ2VzJyxcbiAgICB7XG4gICAgICAgIGZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsaXplID0gaW5qZWN0KExvY2FsaXplLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICAgICAgICAgIGlmICghbG9jYWxpemUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoaW5qZWN0KExPQ0FMRV9JRCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxpemUuZGljdGlvbmFyeUNoYW5nZXMkLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKGRpY3Rpb25hcnkgPT4gZGljdGlvbmFyeT8ubG9jYWxlID8/IG51bGwpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKGxvY2FsaXplPy5jdXJyZW50Py5sb2NhbGUgPz8gbnVsbClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG4pO1xuIl19
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export class LocalizeTransform {
|
|
2
|
-
getMatches(value, substitutions) {
|
|
3
|
-
// Validate our value exists, else return zero matches.
|
|
4
|
-
if (value === undefined || value === null) {
|
|
5
|
-
return [];
|
|
6
|
-
}
|
|
7
|
-
// Get the matching substitutions.
|
|
8
|
-
const { start, end } = this.getSubstitutions(substitutions);
|
|
9
|
-
// Compose a regex that will find the matches.
|
|
10
|
-
const regex = new RegExp(`${start}([^${end}]+)${end}`, 'g');
|
|
11
|
-
// Execute the regex to find matches.
|
|
12
|
-
let match = regex.exec(value);
|
|
13
|
-
const matches = [];
|
|
14
|
-
while (match !== null) {
|
|
15
|
-
matches.push({ match: match[0], token: match[1] });
|
|
16
|
-
match = regex.exec(value);
|
|
17
|
-
}
|
|
18
|
-
// Return the processed value.
|
|
19
|
-
return matches.filter(item => !!item);
|
|
20
|
-
}
|
|
21
|
-
getSubstitutions(value) {
|
|
22
|
-
// Escape both substitutions so that they can be used.
|
|
23
|
-
const escape = /[.*+?^${}()|[\]\\]/g;
|
|
24
|
-
const start = value[0].replace(escape, '\\$&');
|
|
25
|
-
const end = value[1].replace(escape, '\\$&');
|
|
26
|
-
// Return the substitutions.
|
|
27
|
-
return { start, end };
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QudHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9sb2NhbGl6ZS9zcmMvbGliL3RyYW5zZm9ybXMvYWJzdHJhY3QudHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBZ0IsaUJBQWlCO0lBSXpCLFVBQVUsQ0FBQyxLQUFhLEVBQUUsYUFBK0I7UUFDL0QsdURBQXVEO1FBQ3ZELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDeEMsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsa0NBQWtDO1FBQ2xDLE1BQU0sRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTFELDhDQUE4QztRQUM5QyxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssTUFBTSxHQUFHLE1BQU0sR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFNUQscUNBQXFDO1FBQ3JDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQXVDLEVBQUUsQ0FBQztRQUV2RCxPQUFPLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQztZQUNqRCxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsOEJBQThCO1FBQzlCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsS0FBdUI7UUFDOUMsc0RBQXNEO1FBQ3RELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTdDLDRCQUE0QjtRQUM1QixPQUFPLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBQyxDQUFDO0lBQ3hCLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9jYWxpemVQYXJhbXN9IGZyb20gJy4uL2ludGVyZmFjZXMvb3B0aW9ucy5pbnRlcmZhY2VzJztcbmltcG9ydCB7TG9jYWxpemV9IGZyb20gJy4uL2xvY2FsaXplLnNlcnZpY2UnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9jYWxpemVUcmFuc2Zvcm0ge1xuXG4gICAgYWJzdHJhY3QgZXhlY3V0ZSh2YWx1ZTogc3RyaW5nLCBkYXRhOiBMb2NhbGl6ZVBhcmFtc1snZGF0YSddLCBsb2NhbGl6ZTogTG9jYWxpemUpOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgZ2V0TWF0Y2hlcyh2YWx1ZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBbc3RyaW5nLCBzdHJpbmddKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIG91ciB2YWx1ZSBleGlzdHMsIGVsc2UgcmV0dXJuIHplcm8gbWF0Y2hlcy5cbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCB0aGUgbWF0Y2hpbmcgc3Vic3RpdHV0aW9ucy5cbiAgICAgICAgY29uc3Qge3N0YXJ0LCBlbmR9ID0gdGhpcy5nZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIC8vIENvbXBvc2UgYSByZWdleCB0aGF0IHdpbGwgZmluZCB0aGUgbWF0Y2hlcy5cbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGAke3N0YXJ0fShbXiR7ZW5kfV0rKSR7ZW5kfWAsICdnJyk7XG5cbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgcmVnZXggdG8gZmluZCBtYXRjaGVzLlxuICAgICAgICBsZXQgbWF0Y2ggPSByZWdleC5leGVjKHZhbHVlKTtcbiAgICAgICAgY29uc3QgbWF0Y2hlczogeyBtYXRjaDogc3RyaW5nLCB0b2tlbjogc3RyaW5nIH1bXSA9IFtdO1xuXG4gICAgICAgIHdoaWxlIChtYXRjaCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKHttYXRjaDogbWF0Y2hbMF0sIHRva2VuOiBtYXRjaFsxXX0pO1xuICAgICAgICAgICAgbWF0Y2ggPSByZWdleC5leGVjKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiB0aGUgcHJvY2Vzc2VkIHZhbHVlLlxuICAgICAgICByZXR1cm4gbWF0Y2hlcy5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRTdWJzdGl0dXRpb25zKHZhbHVlOiBbc3RyaW5nLCBzdHJpbmddKSB7XG4gICAgICAgIC8vIEVzY2FwZSBib3RoIHN1YnN0aXR1dGlvbnMgc28gdGhhdCB0aGV5IGNhbiBiZSB1c2VkLlxuICAgICAgICBjb25zdCBlc2NhcGUgPSAvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2c7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdmFsdWVbMF0ucmVwbGFjZShlc2NhcGUsICdcXFxcJCYnKTtcbiAgICAgICAgY29uc3QgZW5kID0gdmFsdWVbMV0ucmVwbGFjZShlc2NhcGUsICdcXFxcJCYnKTtcblxuICAgICAgICAvLyBSZXR1cm4gdGhlIHN1YnN0aXR1dGlvbnMuXG4gICAgICAgIHJldHVybiB7c3RhcnQsIGVuZH07XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { LOCALIZE_CONFIG, LOCALIZE_FUNCTION } from '../localize.tokens';
|
|
2
|
-
import { LocalizeTransform } from './abstract.transform';
|
|
3
|
-
import { inject } from '@angular/core';
|
|
4
|
-
export class LocalizeInterpolateTransform extends LocalizeTransform {
|
|
5
|
-
// Dependencies.
|
|
6
|
-
config = inject(LOCALIZE_CONFIG, { optional: true });
|
|
7
|
-
functions = inject(LOCALIZE_FUNCTION, { optional: true });
|
|
8
|
-
substitutions = this.config?.substitutions?.references ?? ['{{', '}}'];
|
|
9
|
-
functionsMap = (this.functions ?? []).reduce((previous, current) => {
|
|
10
|
-
previous[current?.keyword()] = current;
|
|
11
|
-
return previous;
|
|
12
|
-
}, {});
|
|
13
|
-
execute(value, data, localize) {
|
|
14
|
-
const matches = this.getMatches(value, this.substitutions);
|
|
15
|
-
// Replace all matches with the translated value.
|
|
16
|
-
return matches.reduce((previous, current) => {
|
|
17
|
-
// Try to parse the token.
|
|
18
|
-
const interpolatedToken = this.parseInterpolationToken(current?.token, data, localize);
|
|
19
|
-
// Replace the match with the translated token.
|
|
20
|
-
return previous.replace(current?.match, interpolatedToken);
|
|
21
|
-
}, value);
|
|
22
|
-
}
|
|
23
|
-
parseInterpolationToken(value, data, localize) {
|
|
24
|
-
// Get the token and the methods by splitting
|
|
25
|
-
// on the pipe symbol.
|
|
26
|
-
const [token, ...methods] = (value ?? '').split('|').map(item => item.trim());
|
|
27
|
-
// Get the value for the token from
|
|
28
|
-
// the interpolation data.
|
|
29
|
-
const interpolationValue = data?.[token] ?? 'null';
|
|
30
|
-
// Loop through all the middleware methods and try to
|
|
31
|
-
// conform the string to the given parameters.
|
|
32
|
-
return methods.reduce((string, middlewareName) => {
|
|
33
|
-
// Try to retrieve the middleware from the collection.
|
|
34
|
-
const middleware = this.functionsMap?.[middlewareName];
|
|
35
|
-
// If the middleware is missing return an error
|
|
36
|
-
// so that the user knows it was not found.
|
|
37
|
-
if (!middleware) {
|
|
38
|
-
return string;
|
|
39
|
-
}
|
|
40
|
-
// Execute the middleware function with the string.
|
|
41
|
-
return middleware.transform(string, localize?.current?.locale);
|
|
42
|
-
}, `${interpolationValue}`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJwb2xhdGUudHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9sb2NhbGl6ZS9zcmMvbGliL3RyYW5zZm9ybXMvaW50ZXJwb2xhdGUudHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUd0RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxpQkFBaUI7SUFFL0QsZ0JBQWdCO0lBQ0csTUFBTSxHQUFvQixNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDcEUsU0FBUyxHQUF3QixNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUM3RSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLFlBQVksR0FBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN2RyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQ3ZDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVFLE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBNEIsRUFBRSxRQUFrQjtRQUM1RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFM0QsaURBQWlEO1FBQ2pELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN4QywwQkFBMEI7WUFDMUIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFdkYsK0NBQStDO1lBQy9DLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDL0QsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVTLHVCQUF1QixDQUFDLEtBQWEsRUFBRSxJQUE0QixFQUFFLFFBQWtCO1FBQzdGLDZDQUE2QztRQUM3QyxzQkFBc0I7UUFDdEIsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU5RSxtQ0FBbUM7UUFDbkMsMEJBQTBCO1FBQzFCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDO1FBRW5ELHFEQUFxRDtRQUNyRCw4Q0FBOEM7UUFDOUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxFQUFFO1lBQzdDLHNEQUFzRDtZQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFdkQsK0NBQStDO1lBQy9DLDJDQUEyQztZQUMzQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQztZQUVELG1EQUFtRDtZQUNuRCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxFQUFFLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9jYWxpemVGdW5jdGlvbiwgTG9jYWxpemVGdW5jdGlvbk1hcH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mdW5jdGlvbnMuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0xPQ0FMSVpFX0NPTkZJRywgTE9DQUxJWkVfRlVOQ1RJT059IGZyb20gJy4uL2xvY2FsaXplLnRva2Vucyc7XG5pbXBvcnQge0xvY2FsaXplUGFyYW1zfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wdGlvbnMuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0xvY2FsaXplQ29uZmlnfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2VzJztcbmltcG9ydCB7TG9jYWxpemVUcmFuc2Zvcm19IGZyb20gJy4vYWJzdHJhY3QudHJhbnNmb3JtJztcbmltcG9ydCB7TG9jYWxpemV9IGZyb20gJy4uL2xvY2FsaXplLnNlcnZpY2UnO1xuaW1wb3J0IHtpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgTG9jYWxpemVJbnRlcnBvbGF0ZVRyYW5zZm9ybSBleHRlbmRzIExvY2FsaXplVHJhbnNmb3JtIHtcblxuICAgIC8vIERlcGVuZGVuY2llcy5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnPzogTG9jYWxpemVDb25maWcgPSBpbmplY3QoTE9DQUxJWkVfQ09ORklHLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZnVuY3Rpb25zPzogTG9jYWxpemVGdW5jdGlvbltdID0gaW5qZWN0KExPQ0FMSVpFX0ZVTkNUSU9OLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3Vic3RpdHV0aW9ucyA9IHRoaXMuY29uZmlnPy5zdWJzdGl0dXRpb25zPy5yZWZlcmVuY2VzID8/IFsne3snLCAnfX0nXTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZnVuY3Rpb25zTWFwOiBMb2NhbGl6ZUZ1bmN0aW9uTWFwID0gKHRoaXMuZnVuY3Rpb25zID8/IFtdKS5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgICAgIHByZXZpb3VzW2N1cnJlbnQ/LmtleXdvcmQoKV0gPSBjdXJyZW50O1xuICAgICAgICByZXR1cm4gcHJldmlvdXM7XG4gICAgfSwge30pO1xuXG4gICAgb3ZlcnJpZGUgZXhlY3V0ZSh2YWx1ZTogc3RyaW5nLCBkYXRhOiBMb2NhbGl6ZVBhcmFtc1snZGF0YSddLCBsb2NhbGl6ZTogTG9jYWxpemUpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHRoaXMuZ2V0TWF0Y2hlcyh2YWx1ZSwgdGhpcy5zdWJzdGl0dXRpb25zKTtcblxuICAgICAgICAvLyBSZXBsYWNlIGFsbCBtYXRjaGVzIHdpdGggdGhlIHRyYW5zbGF0ZWQgdmFsdWUuXG4gICAgICAgIHJldHVybiBtYXRjaGVzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIC8vIFRyeSB0byBwYXJzZSB0aGUgdG9rZW4uXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0ZWRUb2tlbiA9IHRoaXMucGFyc2VJbnRlcnBvbGF0aW9uVG9rZW4oY3VycmVudD8udG9rZW4sIGRhdGEsIGxvY2FsaXplKTtcblxuICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgbWF0Y2ggd2l0aCB0aGUgdHJhbnNsYXRlZCB0b2tlbi5cbiAgICAgICAgICAgIHJldHVybiBwcmV2aW91cy5yZXBsYWNlKGN1cnJlbnQ/Lm1hdGNoLCBpbnRlcnBvbGF0ZWRUb2tlbik7XG4gICAgICAgIH0sIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcGFyc2VJbnRlcnBvbGF0aW9uVG9rZW4odmFsdWU6IHN0cmluZywgZGF0YTogTG9jYWxpemVQYXJhbXNbJ2RhdGEnXSwgbG9jYWxpemU6IExvY2FsaXplKSB7XG4gICAgICAgIC8vIEdldCB0aGUgdG9rZW4gYW5kIHRoZSBtZXRob2RzIGJ5IHNwbGl0dGluZ1xuICAgICAgICAvLyBvbiB0aGUgcGlwZSBzeW1ib2wuXG4gICAgICAgIGNvbnN0IFt0b2tlbiwgLi4ubWV0aG9kc10gPSAodmFsdWUgPz8gJycpLnNwbGl0KCd8JykubWFwKGl0ZW0gPT4gaXRlbS50cmltKCkpO1xuXG4gICAgICAgIC8vIEdldCB0aGUgdmFsdWUgZm9yIHRoZSB0b2tlbiBmcm9tXG4gICAgICAgIC8vIHRoZSBpbnRlcnBvbGF0aW9uIGRhdGEuXG4gICAgICAgIGNvbnN0IGludGVycG9sYXRpb25WYWx1ZSA9IGRhdGE/Llt0b2tlbl0gPz8gJ251bGwnO1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIG1pZGRsZXdhcmUgbWV0aG9kcyBhbmQgdHJ5IHRvXG4gICAgICAgIC8vIGNvbmZvcm0gdGhlIHN0cmluZyB0byB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cbiAgICAgICAgcmV0dXJuIG1ldGhvZHMucmVkdWNlKChzdHJpbmcsIG1pZGRsZXdhcmVOYW1lKSA9PiB7XG4gICAgICAgICAgICAvLyBUcnkgdG8gcmV0cmlldmUgdGhlIG1pZGRsZXdhcmUgZnJvbSB0aGUgY29sbGVjdGlvbi5cbiAgICAgICAgICAgIGNvbnN0IG1pZGRsZXdhcmUgPSB0aGlzLmZ1bmN0aW9uc01hcD8uW21pZGRsZXdhcmVOYW1lXTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlIG1pZGRsZXdhcmUgaXMgbWlzc2luZyByZXR1cm4gYW4gZXJyb3JcbiAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHVzZXIga25vd3MgaXQgd2FzIG5vdCBmb3VuZC5cbiAgICAgICAgICAgIGlmICghbWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEV4ZWN1dGUgdGhlIG1pZGRsZXdhcmUgZnVuY3Rpb24gd2l0aCB0aGUgc3RyaW5nLlxuICAgICAgICAgICAgcmV0dXJuIG1pZGRsZXdhcmUudHJhbnNmb3JtKHN0cmluZywgbG9jYWxpemU/LmN1cnJlbnQ/LmxvY2FsZSk7XG4gICAgICAgIH0sIGAke2ludGVycG9sYXRpb25WYWx1ZX1gKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { LocalizeTransform } from './abstract.transform';
|
|
2
|
-
import { LOCALIZE_CONFIG } from '../localize.tokens';
|
|
3
|
-
import { inject } from '@angular/core';
|
|
4
|
-
export class LocalizePluralTransform extends LocalizeTransform {
|
|
5
|
-
config = inject(LOCALIZE_CONFIG, { optional: true });
|
|
6
|
-
substitutions = this.config?.substitutions?.plural ?? ['@plural(', ')'];
|
|
7
|
-
defaultAmount = 'default';
|
|
8
|
-
multiItemRegex = new RegExp(`(?<value>=([0-9]+|${this.defaultAmount}): *[^,]+)`, 'g');
|
|
9
|
-
singleItemRegex = new RegExp(`(=(?<amount>[0-9]+|${this.defaultAmount}): *(?<sentence>.+))`);
|
|
10
|
-
execute(value, data, _) {
|
|
11
|
-
const matches = this.getMatches(value, this.substitutions);
|
|
12
|
-
return matches.reduce((previous, current) => {
|
|
13
|
-
const [variable, content] = current.token?.split('|');
|
|
14
|
-
const amount = this.extractAmount(variable, data);
|
|
15
|
-
const pluralToken = this.parsePluralToken(content, amount);
|
|
16
|
-
return previous.replace(current?.match, pluralToken ?? current?.match);
|
|
17
|
-
}, value);
|
|
18
|
-
}
|
|
19
|
-
extractAmount(variable, data) {
|
|
20
|
-
const trimmedVariable = variable?.trim();
|
|
21
|
-
const value = data?.[trimmedVariable] ?? null;
|
|
22
|
-
return typeof value === 'string' || typeof value === 'number'
|
|
23
|
-
? value
|
|
24
|
-
: null;
|
|
25
|
-
}
|
|
26
|
-
parsePluralToken(value, amount) {
|
|
27
|
-
const plural = this.getPluralObject(value);
|
|
28
|
-
return plural?.[amount] ?? plural?.[this.defaultAmount] ?? null;
|
|
29
|
-
}
|
|
30
|
-
splitMatches(value) {
|
|
31
|
-
let match = this.multiItemRegex.exec(value);
|
|
32
|
-
const matches = [];
|
|
33
|
-
while (match !== null) {
|
|
34
|
-
matches.push(match[0]);
|
|
35
|
-
match = this.multiItemRegex.exec(value);
|
|
36
|
-
}
|
|
37
|
-
return matches;
|
|
38
|
-
}
|
|
39
|
-
getPluralObject(value) {
|
|
40
|
-
const matches = this.splitMatches(value);
|
|
41
|
-
return matches.reduce((previous, current) => {
|
|
42
|
-
const result = current.match(this.singleItemRegex);
|
|
43
|
-
const amount = result.groups['amount'].trim();
|
|
44
|
-
const sentence = result.groups['sentence'].trim();
|
|
45
|
-
return { ...previous, [amount]: sentence };
|
|
46
|
-
}, {});
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1cmFsLnRyYW5zZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vbG9jYWxpemUvc3JjL2xpYi90cmFuc2Zvcm1zL3BsdXJhbC50cmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckMsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGlCQUFpQjtJQUV2QyxNQUFNLEdBQW9CLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUNwRSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hFLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDMUIsY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLHFCQUFxQixJQUFJLENBQUMsYUFBYSxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEYsZUFBZSxHQUFHLElBQUksTUFBTSxDQUFDLHNCQUFzQixJQUFJLENBQUMsYUFBYSxzQkFBc0IsQ0FBQyxDQUFDO0lBRXZHLE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBNEIsRUFBRSxDQUFXO1FBQ3JFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUzRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzNELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsSUFBSSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVPLGFBQWEsQ0FBQyxRQUFnQixFQUFFLElBQTRCO1FBQ2hFLE1BQU0sZUFBZSxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDOUMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUN6RCxDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDZixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBYSxFQUFFLE1BQXVCO1FBQzNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3BFLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBYTtRQUM5QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFFN0IsT0FBTyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBYTtRQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN4QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEQsT0FBTyxFQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFDLENBQUM7UUFDN0MsQ0FBQyxFQUEwQixFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xvY2FsaXplUGFyYW1zfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wdGlvbnMuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0xvY2FsaXplQ29uZmlnfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2VzJztcbmltcG9ydCB7TG9jYWxpemVUcmFuc2Zvcm19IGZyb20gJy4vYWJzdHJhY3QudHJhbnNmb3JtJztcbmltcG9ydCB7TE9DQUxJWkVfQ09ORklHfSBmcm9tICcuLi9sb2NhbGl6ZS50b2tlbnMnO1xuaW1wb3J0IHtMb2NhbGl6ZX0gZnJvbSAnLi4vbG9jYWxpemUuc2VydmljZSc7XG5pbXBvcnQge2luamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBMb2NhbGl6ZVBsdXJhbFRyYW5zZm9ybSBleHRlbmRzIExvY2FsaXplVHJhbnNmb3JtIHtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBjb25maWc/OiBMb2NhbGl6ZUNvbmZpZyA9IGluamVjdChMT0NBTElaRV9DT05GSUcsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdWJzdGl0dXRpb25zID0gdGhpcy5jb25maWc/LnN1YnN0aXR1dGlvbnM/LnBsdXJhbCA/PyBbJ0BwbHVyYWwoJywgJyknXTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdEFtb3VudCA9ICdkZWZhdWx0JztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbXVsdGlJdGVtUmVnZXggPSBuZXcgUmVnRXhwKGAoPzx2YWx1ZT49KFswLTldK3wke3RoaXMuZGVmYXVsdEFtb3VudH0pOiAqW14sXSspYCwgJ2cnKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2luZ2xlSXRlbVJlZ2V4ID0gbmV3IFJlZ0V4cChgKD0oPzxhbW91bnQ+WzAtOV0rfCR7dGhpcy5kZWZhdWx0QW1vdW50fSk6ICooPzxzZW50ZW5jZT4uKykpYCk7XG5cbiAgICBvdmVycmlkZSBleGVjdXRlKHZhbHVlOiBzdHJpbmcsIGRhdGE6IExvY2FsaXplUGFyYW1zWydkYXRhJ10sIF86IExvY2FsaXplKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLmdldE1hdGNoZXModmFsdWUsIHRoaXMuc3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZXMucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgW3ZhcmlhYmxlLCBjb250ZW50XSA9IGN1cnJlbnQudG9rZW4/LnNwbGl0KCd8Jyk7XG4gICAgICAgICAgICBjb25zdCBhbW91bnQgPSB0aGlzLmV4dHJhY3RBbW91bnQodmFyaWFibGUsIGRhdGEpO1xuICAgICAgICAgICAgY29uc3QgcGx1cmFsVG9rZW4gPSB0aGlzLnBhcnNlUGx1cmFsVG9rZW4oY29udGVudCwgYW1vdW50KTtcbiAgICAgICAgICAgIHJldHVybiBwcmV2aW91cy5yZXBsYWNlKGN1cnJlbnQ/Lm1hdGNoLCBwbHVyYWxUb2tlbiA/PyBjdXJyZW50Py5tYXRjaCk7XG4gICAgICAgIH0sIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RBbW91bnQodmFyaWFibGU6IHN0cmluZywgZGF0YTogTG9jYWxpemVQYXJhbXNbJ2RhdGEnXSkge1xuICAgICAgICBjb25zdCB0cmltbWVkVmFyaWFibGUgPSB2YXJpYWJsZT8udHJpbSgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGE/Llt0cmltbWVkVmFyaWFibGVdID8/IG51bGw7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlUGx1cmFsVG9rZW4odmFsdWU6IHN0cmluZywgYW1vdW50OiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcGx1cmFsID0gdGhpcy5nZXRQbHVyYWxPYmplY3QodmFsdWUpO1xuICAgICAgICByZXR1cm4gcGx1cmFsPy5bYW1vdW50XSA/PyBwbHVyYWw/Llt0aGlzLmRlZmF1bHRBbW91bnRdID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzcGxpdE1hdGNoZXModmFsdWU6IHN0cmluZykge1xuICAgICAgICBsZXQgbWF0Y2ggPSB0aGlzLm11bHRpSXRlbVJlZ2V4LmV4ZWModmFsdWUpO1xuICAgICAgICBjb25zdCBtYXRjaGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIHdoaWxlIChtYXRjaCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKG1hdGNoWzBdKTtcbiAgICAgICAgICAgIG1hdGNoID0gdGhpcy5tdWx0aUl0ZW1SZWdleC5leGVjKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtYXRjaGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGx1cmFsT2JqZWN0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHRoaXMuc3BsaXRNYXRjaGVzKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlcy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjdXJyZW50Lm1hdGNoKHRoaXMuc2luZ2xlSXRlbVJlZ2V4KTtcbiAgICAgICAgICAgIGNvbnN0IGFtb3VudCA9IHJlc3VsdC5ncm91cHNbJ2Ftb3VudCddLnRyaW0oKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbnRlbmNlID0gcmVzdWx0Lmdyb3Vwc1snc2VudGVuY2UnXS50cmltKCk7XG4gICAgICAgICAgICByZXR1cm4gey4uLnByZXZpb3VzLCBbYW1vdW50XTogc2VudGVuY2V9O1xuICAgICAgICB9LCA8UmVjb3JkPHN0cmluZywgc3RyaW5nPj57fSk7XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { LocalizeTransform } from './abstract.transform';
|
|
2
|
-
import { LOCALIZE_CONFIG } from '../localize.tokens';
|
|
3
|
-
import { inject } from '@angular/core';
|
|
4
|
-
export class LocalizeReferenceTransform extends LocalizeTransform {
|
|
5
|
-
// Dependencies.
|
|
6
|
-
config = inject(LOCALIZE_CONFIG, { optional: true });
|
|
7
|
-
substitutions = this.config?.substitutions?.references ?? ['#(', ')'];
|
|
8
|
-
execute(value, _, localize) {
|
|
9
|
-
const matches = this.getMatches(value, this.substitutions);
|
|
10
|
-
// Replace all matches with the translated value.
|
|
11
|
-
return matches.reduce((previous, current) => {
|
|
12
|
-
// Try to translate the token.
|
|
13
|
-
const translatedToken = localize.translate(current?.token);
|
|
14
|
-
// Replace the match with the translated token.
|
|
15
|
-
return previous.replace(current?.match, translatedToken);
|
|
16
|
-
}, value);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLnRyYW5zZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vbG9jYWxpemUvc3JjL2xpYi90cmFuc2Zvcm1zL3JlZmVyZW5jZS50cmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckMsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGlCQUFpQjtJQUU3RCxnQkFBZ0I7SUFDRyxNQUFNLEdBQW9CLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUNwRSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRWhGLE9BQU8sQ0FBQyxLQUFhLEVBQUUsQ0FBeUIsRUFBRSxRQUFrQjtRQUN6RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFM0QsaURBQWlEO1FBQ2pELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN4Qyw4QkFBOEI7WUFDOUIsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFM0QsK0NBQStDO1lBQy9DLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzdELENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNkLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9jYWxpemVQYXJhbXN9IGZyb20gJy4uL2ludGVyZmFjZXMvb3B0aW9ucy5pbnRlcmZhY2VzJztcbmltcG9ydCB7TG9jYWxpemVDb25maWd9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZXMnO1xuaW1wb3J0IHtMb2NhbGl6ZVRyYW5zZm9ybX0gZnJvbSAnLi9hYnN0cmFjdC50cmFuc2Zvcm0nO1xuaW1wb3J0IHtMT0NBTElaRV9DT05GSUd9IGZyb20gJy4uL2xvY2FsaXplLnRva2Vucyc7XG5pbXBvcnQge0xvY2FsaXplfSBmcm9tICcuLi9sb2NhbGl6ZS5zZXJ2aWNlJztcbmltcG9ydCB7aW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIExvY2FsaXplUmVmZXJlbmNlVHJhbnNmb3JtIGV4dGVuZHMgTG9jYWxpemVUcmFuc2Zvcm0ge1xuXG4gICAgLy8gRGVwZW5kZW5jaWVzLlxuICAgIHByb3RlY3RlZCByZWFkb25seSBjb25maWc/OiBMb2NhbGl6ZUNvbmZpZyA9IGluamVjdChMT0NBTElaRV9DT05GSUcsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdWJzdGl0dXRpb25zID0gdGhpcy5jb25maWc/LnN1YnN0aXR1dGlvbnM/LnJlZmVyZW5jZXMgPz8gWycjKCcsICcpJ107XG5cbiAgICBvdmVycmlkZSBleGVjdXRlKHZhbHVlOiBzdHJpbmcsIF86IExvY2FsaXplUGFyYW1zWydkYXRhJ10sIGxvY2FsaXplOiBMb2NhbGl6ZSkge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5nZXRNYXRjaGVzKHZhbHVlLCB0aGlzLnN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIC8vIFJlcGxhY2UgYWxsIG1hdGNoZXMgd2l0aCB0aGUgdHJhbnNsYXRlZCB2YWx1ZS5cbiAgICAgICAgcmV0dXJuIG1hdGNoZXMucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gVHJ5IHRvIHRyYW5zbGF0ZSB0aGUgdG9rZW4uXG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkVG9rZW4gPSBsb2NhbGl6ZS50cmFuc2xhdGUoY3VycmVudD8udG9rZW4pO1xuXG4gICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBtYXRjaCB3aXRoIHRoZSB0cmFuc2xhdGVkIHRva2VuLlxuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzLnJlcGxhY2UoY3VycmVudD8ubWF0Y2gsIHRyYW5zbGF0ZWRUb2tlbik7XG4gICAgICAgIH0sIHZhbHVlKTtcbiAgICB9XG5cbn1cbiJdfQ==
|