@tolgee/ngx 2.1.0 → 2.8.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/README.md CHANGED
@@ -1,3 +1,4 @@
1
+ # Tolgee for Angular
1
2
  ![test workflow](https://github.com/tolgee/tolgee-js/actions/workflows/test.yml/badge.svg)
2
3
  ![@tolgee/ngx version](https://img.shields.io/npm/v/@tolgee/ngx?label=%40tolgee%2Fngx)
3
4
  ![types typescript](https://img.shields.io/badge/Types-Typescript-blue)
@@ -5,8 +6,6 @@
5
6
  [![twitter](https://img.shields.io/twitter/follow/Tolgee_i18n?style=social)](https://twitter.com/Tolgee_i18n)
6
7
  [![github stars](https://img.shields.io/github/stars/tolgee/tolgee-js?style=social)](https://github.com/tolgee/tolgee-js)
7
8
 
8
- # Tolgee for Angular
9
-
10
9
  [<img src="https://raw.githubusercontent.com/tolgee/documentation/main/tolgee_logo_text.svg" alt="Tolgee" width="200" />](https://tolgee.io)
11
10
 
12
11
  Lokalize (translate) your Angular app to multiple languages with Tolgee. For more information about using Tolgee with
@@ -0,0 +1,42 @@
1
+ import { APP_INITIALIZER, NgModule } from '@angular/core';
2
+ import { TranslatePipe } from './translate.pipe';
3
+ import { TranslationsProvider } from './translations-provider';
4
+ import { TranslateService } from './translate.service';
5
+ import { STranslatePipe } from './stranslate.pipe';
6
+ import { TolgeeConfig } from './tolgeeConfig';
7
+ import { TComponent } from './t.component';
8
+ import * as i0 from "@angular/core";
9
+ export class NgxTolgeeModule {
10
+ // @dynamic
11
+ static forRoot(options) {
12
+ options = { filesUrlPrefix: '/assets/i18n/', ...options };
13
+ return {
14
+ ngModule: NgxTolgeeModule,
15
+ providers: [
16
+ TranslateService,
17
+ TranslationsProvider,
18
+ {
19
+ provide: APP_INITIALIZER,
20
+ useFactory: (provider) => {
21
+ return async () => await provider.load(options);
22
+ },
23
+ deps: [TranslationsProvider, TranslateService],
24
+ multi: true,
25
+ },
26
+ { provide: TolgeeConfig, useValue: options },
27
+ ],
28
+ };
29
+ }
30
+ }
31
+ NgxTolgeeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgxTolgeeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
32
+ NgxTolgeeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgxTolgeeModule, declarations: [TranslatePipe, STranslatePipe, TComponent], exports: [TranslatePipe, STranslatePipe, TComponent] });
33
+ NgxTolgeeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgxTolgeeModule, providers: [] });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgxTolgeeModule, decorators: [{
35
+ type: NgModule,
36
+ args: [{
37
+ declarations: [TranslatePipe, STranslatePipe, TComponent],
38
+ exports: [TranslatePipe, STranslatePipe, TComponent],
39
+ providers: [],
40
+ }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRvbGdlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdG9sZ2VlL3NyYy9saWIvbmd4LXRvbGdlZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTzNDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFdBQVc7SUFDWCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQXFCO1FBQ2xDLE9BQU8sR0FBRyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUMxRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFO2dCQUNULGdCQUFnQjtnQkFDaEIsb0JBQW9CO2dCQUNwQjtvQkFDRSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsVUFBVSxFQUFFLENBQUMsUUFBOEIsRUFBRSxFQUFFO3dCQUM3QyxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUMsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNsRCxDQUFDO29CQUNELElBQUksRUFBRSxDQUFDLG9CQUFvQixFQUFFLGdCQUFnQixDQUFDO29CQUM5QyxLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRCxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTthQUM3QztTQUNGLENBQUM7SUFDSixDQUFDOzs0R0FwQlUsZUFBZTs2R0FBZixlQUFlLGlCQUpYLGFBQWEsRUFBRSxjQUFjLEVBQUUsVUFBVSxhQUM5QyxhQUFhLEVBQUUsY0FBYyxFQUFFLFVBQVU7NkdBR3hDLGVBQWUsYUFGZixFQUFFOzJGQUVGLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUM7b0JBQ3pELE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDO29CQUNwRCxTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uc1Byb3ZpZGVyIH0gZnJvbSAnLi90cmFuc2xhdGlvbnMtcHJvdmlkZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuL3N0cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBUb2xnZWVDb25maWcgfSBmcm9tICcuL3RvbGdlZUNvbmZpZyc7XG5pbXBvcnQgeyBUQ29tcG9uZW50IH0gZnJvbSAnLi90LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1RyYW5zbGF0ZVBpcGUsIFNUcmFuc2xhdGVQaXBlLCBUQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1RyYW5zbGF0ZVBpcGUsIFNUcmFuc2xhdGVQaXBlLCBUQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd4VG9sZ2VlTW9kdWxlIHtcbiAgLy8gQGR5bmFtaWNcbiAgc3RhdGljIGZvclJvb3Qob3B0aW9uczogVG9sZ2VlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hUb2xnZWVNb2R1bGU+IHtcbiAgICBvcHRpb25zID0geyBmaWxlc1VybFByZWZpeDogJy9hc3NldHMvaTE4bi8nLCAuLi5vcHRpb25zIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBOZ3hUb2xnZWVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgVHJhbnNsYXRpb25zUHJvdmlkZXIsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgdXNlRmFjdG9yeTogKHByb3ZpZGVyOiBUcmFuc2xhdGlvbnNQcm92aWRlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFzeW5jICgpID0+IGF3YWl0IHByb3ZpZGVyLmxvYWQob3B0aW9ucyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZXBzOiBbVHJhbnNsYXRpb25zUHJvdmlkZXIsIFRyYW5zbGF0ZVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7IHByb3ZpZGU6IFRvbGdlZUNvbmZpZywgdXNlVmFsdWU6IG9wdGlvbnMgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,22 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { TranslatePipe } from './translate.pipe';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./translate.service";
5
+ export class STranslatePipe extends TranslatePipe {
6
+ constructor(translateService) {
7
+ super(translateService);
8
+ }
9
+ get resultProvider() {
10
+ return (input, params, defaultValue) => this.translateService.getSafe(input, params, defaultValue);
11
+ }
12
+ }
13
+ STranslatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: STranslatePipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
14
+ STranslatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: STranslatePipe, name: "stranslate", pure: false });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: STranslatePipe, decorators: [{
16
+ type: Pipe,
17
+ args: [{
18
+ name: 'stranslate',
19
+ pure: false,
20
+ }]
21
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYW5zbGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRvbGdlZS9zcmMvbGliL3N0cmFuc2xhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBT2pELE1BQU0sT0FBTyxjQUFlLFNBQVEsYUFBYTtJQUMvQyxZQUFZLGdCQUFrQztRQUM1QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBYyxjQUFjO1FBSzFCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvRCxDQUFDOzsyR0FaVSxjQUFjO3lHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFKMUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsSUFBSSxFQUFFLEtBQUs7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3N0cmFuc2xhdGUnLFxuICBwdXJlOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU1RyYW5zbGF0ZVBpcGUgZXh0ZW5kcyBUcmFuc2xhdGVQaXBlIHtcbiAgY29uc3RydWN0b3IodHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCByZXN1bHRQcm92aWRlcigpOiAoXG4gICAgaW5wdXQsXG4gICAgcGFyYW1zLFxuICAgIGRlZmF1bHRWYWx1ZVxuICApID0+IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIChpbnB1dCwgcGFyYW1zLCBkZWZhdWx0VmFsdWUpID0+XG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0U2FmZShpbnB1dCwgcGFyYW1zLCBkZWZhdWx0VmFsdWUpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,43 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE } from '@tolgee/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./translate.service";
5
+ export class TComponent {
6
+ constructor(ref, translateService) {
7
+ this.ref = ref;
8
+ this.translateService = translateService;
9
+ }
10
+ ngOnInit() {
11
+ const element = this.ref.nativeElement;
12
+ element.setAttribute(TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE, this.key);
13
+ // set safe at first
14
+ element.textContent = this.translateService.instantSafe(this.key, this.params, this.default);
15
+ // then do the async translation
16
+ this.subscription = this.translateService
17
+ .getSafe(this.key, this.params, this.default)
18
+ .subscribe((translated) => {
19
+ return (element.textContent = translated);
20
+ });
21
+ }
22
+ ngOnDestroy() {
23
+ if (this.subscription) {
24
+ this.subscription.unsubscribe();
25
+ }
26
+ }
27
+ }
28
+ TComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TComponent, deps: [{ token: i0.ElementRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
29
+ TComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: TComponent, selector: "[t]", inputs: { params: "params", key: "key", default: "default" }, ngImport: i0, template: ``, isInline: true });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TComponent, decorators: [{
31
+ type: Component,
32
+ args: [{
33
+ selector: '[t]',
34
+ template: ``,
35
+ }]
36
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.TranslateService }]; }, propDecorators: { params: [{
37
+ type: Input
38
+ }], key: [{
39
+ type: Input
40
+ }], default: [{
41
+ type: Input
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdG9sZ2VlL3NyYy9saWIvdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBR2hGLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBTWxFLE1BQU0sT0FBTyxVQUFVO0lBTXJCLFlBQ1UsR0FBZSxFQUNmLGdCQUFrQztRQURsQyxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ2YscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN6QyxDQUFDO0lBRUosUUFBUTtRQUNOLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBNEIsQ0FBQztRQUN0RCxPQUFPLENBQUMsWUFBWSxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuRSxvQkFBb0I7UUFDcEIsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUNyRCxJQUFJLENBQUMsR0FBRyxFQUNSLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO1FBRUYsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjthQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDNUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDeEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzs7dUdBbENVLFVBQVU7MkZBQVYsVUFBVSx5R0FGWCxFQUFFOzJGQUVELFVBQVU7a0JBSnRCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7Z0lBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBUT0xHRUVfV1JBUFBFRF9PTkxZX0RBVEFfQVRUUklCVVRFIH0gZnJvbSAnQHRvbGdlZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RdJyxcbiAgdGVtcGxhdGU6IGBgLFxufSlcbmV4cG9ydCBjbGFzcyBUQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBASW5wdXQoKSBrZXk6IHN0cmluZztcbiAgQElucHV0KCkgZGVmYXVsdD86IHN0cmluZztcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5yZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShUT0xHRUVfV1JBUFBFRF9PTkxZX0RBVEFfQVRUUklCVVRFLCB0aGlzLmtleSk7XG5cbiAgICAvLyBzZXQgc2FmZSBhdCBmaXJzdFxuICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudFNhZmUoXG4gICAgICB0aGlzLmtleSxcbiAgICAgIHRoaXMucGFyYW1zLFxuICAgICAgdGhpcy5kZWZhdWx0XG4gICAgKTtcblxuICAgIC8vIHRoZW4gZG8gdGhlIGFzeW5jIHRyYW5zbGF0aW9uXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgIC5nZXRTYWZlKHRoaXMua2V5LCB0aGlzLnBhcmFtcywgdGhpcy5kZWZhdWx0KVxuICAgICAgLnN1YnNjcmliZSgodHJhbnNsYXRlZCkgPT4ge1xuICAgICAgICByZXR1cm4gKGVsZW1lbnQudGV4dENvbnRlbnQgPSB0cmFuc2xhdGVkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,59 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./translate.service";
4
+ export class TranslatePipe {
5
+ constructor(translateService) {
6
+ this.translateService = translateService;
7
+ this.value = '';
8
+ }
9
+ get resultProvider() {
10
+ return (key, params, defaultValue) => this.translateService.get(key, params, defaultValue);
11
+ }
12
+ ngOnDestroy() {
13
+ this.unsubscribe();
14
+ }
15
+ transform(key, paramsOrDefaultValue, params) {
16
+ if (!key || key.length === 0) {
17
+ return key;
18
+ }
19
+ const defaultValue = typeof paramsOrDefaultValue !== 'object'
20
+ ? paramsOrDefaultValue
21
+ : undefined;
22
+ if (typeof paramsOrDefaultValue === 'object') {
23
+ params = paramsOrDefaultValue;
24
+ }
25
+ if (this.key === key &&
26
+ JSON.stringify(this.params) === JSON.stringify(params) &&
27
+ this.defaultValue === defaultValue) {
28
+ return this.value;
29
+ }
30
+ this.key = key;
31
+ this.params = params;
32
+ this.defaultValue = defaultValue;
33
+ // unsubscribe first
34
+ this.unsubscribe();
35
+ // asynchronously translate and assign subscription
36
+ this.subscription = this.translate(key, params, defaultValue);
37
+ return this.value;
38
+ }
39
+ unsubscribe() {
40
+ if (this.subscription) {
41
+ this.subscription.unsubscribe();
42
+ }
43
+ }
44
+ translate(key, params, defaultValue) {
45
+ return this.resultProvider(key, params, defaultValue).subscribe((r) => {
46
+ this.value = r;
47
+ });
48
+ }
49
+ }
50
+ TranslatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TranslatePipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
51
+ TranslatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TranslatePipe, name: "translate", pure: false });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TranslatePipe, decorators: [{
53
+ type: Pipe,
54
+ args: [{
55
+ name: 'translate',
56
+ pure: false,
57
+ }]
58
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdG9sZ2VlL3NyYy9saWIvdHJhbnNsYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVEvRCxNQUFNLE9BQU8sYUFBYTtJQVF4QixZQUFzQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVB4RCxVQUFLLEdBQUcsRUFBRSxDQUFDO0lBT2dELENBQUM7SUFFNUQsSUFBYyxjQUFjO1FBSzFCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBVUQsU0FBUyxDQUNQLEdBQVEsRUFDUixvQkFBbUQsRUFDbkQsTUFBNEI7UUFFNUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM1QixPQUFPLEdBQUcsQ0FBQztTQUNaO1FBRUQsTUFBTSxZQUFZLEdBQ2hCLE9BQU8sb0JBQW9CLEtBQUssUUFBUTtZQUN0QyxDQUFDLENBQUMsb0JBQW9CO1lBQ3RCLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFaEIsSUFBSSxPQUFPLG9CQUFvQixLQUFLLFFBQVEsRUFBRTtZQUM1QyxNQUFNLEdBQUcsb0JBQW9CLENBQUM7U0FDL0I7UUFFRCxJQUNFLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRztZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN0RCxJQUFJLENBQUMsWUFBWSxLQUFLLFlBQVksRUFDbEM7WUFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7UUFFRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRWpDLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsbURBQW1EO1FBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTlELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFTyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxZQUFZO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MEdBaEZVLGFBQWE7d0dBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUp6QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3RyYW5zbGF0ZScsXG4gIHB1cmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgdmFsdWUgPSAnJztcbiAga2V5OiBzdHJpbmc7XG4gIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGU7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgcHJvdGVjdGVkIGdldCByZXN1bHRQcm92aWRlcigpOiAoXG4gICAga2V5LFxuICAgIHBhcmFtcyxcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZ1xuICApID0+IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIChrZXksIHBhcmFtcywgZGVmYXVsdFZhbHVlKSA9PlxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChrZXksIHBhcmFtcywgZGVmYXVsdFZhbHVlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHRyYW5zZm9ybShrZXk6IGFueSwgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZztcblxuICB0cmFuc2Zvcm0oXG4gICAga2V5OiBhbnksXG4gICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nLFxuICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogc3RyaW5nO1xuXG4gIHRyYW5zZm9ybShcbiAgICBrZXk6IGFueSxcbiAgICBwYXJhbXNPckRlZmF1bHRWYWx1ZT86IFJlY29yZDxzdHJpbmcsIGFueT4gfCBzdHJpbmcsXG4gICAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBzdHJpbmcge1xuICAgIGlmICgha2V5IHx8IGtleS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID1cbiAgICAgIHR5cGVvZiBwYXJhbXNPckRlZmF1bHRWYWx1ZSAhPT0gJ29iamVjdCdcbiAgICAgICAgPyBwYXJhbXNPckRlZmF1bHRWYWx1ZVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmICh0eXBlb2YgcGFyYW1zT3JEZWZhdWx0VmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXNPckRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmtleSA9PT0ga2V5ICYmXG4gICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnBhcmFtcykgPT09IEpTT04uc3RyaW5naWZ5KHBhcmFtcykgJiZcbiAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID09PSBkZWZhdWx0VmFsdWVcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMua2V5ID0ga2V5O1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuXG4gICAgLy8gdW5zdWJzY3JpYmUgZmlyc3RcbiAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAvLyBhc3luY2hyb25vdXNseSB0cmFuc2xhdGUgYW5kIGFzc2lnbiBzdWJzY3JpcHRpb25cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlKGtleSwgcGFyYW1zLCBkZWZhdWx0VmFsdWUpO1xuXG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlKCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYW5zbGF0ZShrZXksIHBhcmFtcywgZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdWx0UHJvdmlkZXIoa2V5LCBwYXJhbXMsIGRlZmF1bHRWYWx1ZSkuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlID0gcjtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,150 @@
1
+ import { EventEmitter, Injectable } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { Tolgee } from '@tolgee/core';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./tolgeeConfig";
6
+ export class TranslateService {
7
+ constructor(config) {
8
+ this.config = config;
9
+ this.onLangChange = new EventEmitter();
10
+ this.onTranslationChange = new EventEmitter();
11
+ }
12
+ get tolgee() {
13
+ return this._tolgee;
14
+ }
15
+ /**
16
+ * Starts Tolgee if not started and subscribes for languageChange and translationChange events
17
+ */
18
+ async start(config) {
19
+ if (!this.runPromise) {
20
+ this._tolgee = new Tolgee(config);
21
+ this.runPromise = this.tolgee.run();
22
+ // unsubscribe first, if it is subscribed for some reason
23
+ this.unsubscribeCoreListeners();
24
+ this.onTranslationChangeCoreSubscription =
25
+ this._tolgee.onTranslationChange.subscribe((data) => {
26
+ this.onTranslationChange.emit(data);
27
+ });
28
+ this.onLangChangeCoreSubscription = this._tolgee.onLangChange.subscribe(() => {
29
+ this.onLangChange.emit();
30
+ });
31
+ }
32
+ await this.runPromise;
33
+ }
34
+ ngOnDestroy() {
35
+ // stop it!
36
+ this.tolgee.stop();
37
+ // unsubscribe listeners
38
+ this.unsubscribeCoreListeners();
39
+ }
40
+ /**
41
+ * Changes the current language
42
+ * @param lang The new current language (e.g. en, en-US)
43
+ */
44
+ setLang(lang) {
45
+ this.tolgee.lang = lang;
46
+ }
47
+ /**
48
+ * Returns the current language
49
+ */
50
+ getCurrentLang() {
51
+ return this.tolgee.lang;
52
+ }
53
+ /**
54
+ * Returns Observable providing current translated value
55
+ * Tne observable is subscribed to translation change and language change events of Tolgee
56
+ *
57
+ * In development mode, it returns string wrapped with configured
58
+ * prefix and suffix to be handled in browser by MutationObserver.
59
+ *
60
+ * You should use unsubscribe method when you are done!
61
+ *
62
+ * in onInit: this.subscription = translateService.get('aa')
63
+ * in onDestroy: this.subscription.unsubscribe()
64
+ *
65
+ * @param key The key to translate (e.g. what-a-key)
66
+ * @param params The parameters to interpolate (e.g. {name: "John"})
67
+ * @param defaultValue Value, which will be rendered, when no translated value is provided
68
+ */
69
+ get(key, params = {}, defaultValue) {
70
+ return this.translate(key, params, false, defaultValue);
71
+ }
72
+ /**
73
+ * Returns Observable providing current translated value
74
+ * Tne observable is subscribed to translation change and language change events of Tolgee
75
+ *
76
+ * In development mode, it returns the translated string,
77
+ * so in-context localization is not going to work.
78
+ *
79
+ * You should use unsubscribe method when you are done!
80
+ *
81
+ * in onInit: this.subscription = translateService.get('aa')
82
+ * in onDestroy: this.subscription.unsubscribe()
83
+ *
84
+ * @param key The key to translate (e.g. what-a-key)
85
+ * @param params The parameters to interpolate (e.g. {name: "John"})
86
+ * @param defaultValue Value, which will be rendered, when no translated value is provided
87
+ */
88
+ getSafe(key, params = {}, defaultValue) {
89
+ return this.translate(key, params, true, defaultValue);
90
+ }
91
+ /**
92
+ * Returns the translation value synchronously
93
+ *
94
+ * In development mode, it returns string wrapped with configured
95
+ * prefix and suffix to be handled in browser by MutationObserver.
96
+ *
97
+ * @param key The key to translate (e.g. what-a-key)
98
+ * @param params The parameters to interpolate (e.g. {name: "John"})
99
+ * @param defaultValue Value, which will be rendered, when no translated value is provided
100
+ */
101
+ instant(key, params = {}, defaultValue) {
102
+ return this.tolgee.instant(key, params, undefined, undefined, defaultValue);
103
+ }
104
+ /**
105
+ * Returns the translation value synchronously
106
+ *
107
+ * In development mode, it returns the translated string,
108
+ * so in-context localization is not going to work.
109
+ *
110
+ * @param key The key to translate (e.g. what-a-key)
111
+ * @param params The parameters to interpolate (e.g. {name: "John"})
112
+ * @param defaultValue Value, which will be rendered, when no translated value is provided
113
+ */
114
+ instantSafe(input, params = {}, defaultValue) {
115
+ return this.tolgee.instant(input, params, true, undefined, defaultValue);
116
+ }
117
+ unsubscribeCoreListeners() {
118
+ this.onTranslationChangeCoreSubscription?.unsubscribe();
119
+ this.onLangChangeCoreSubscription?.unsubscribe();
120
+ }
121
+ translate(key, params = {}, noWrap = false, defaultValue) {
122
+ return new Observable((subscriber) => {
123
+ const translate = async () => {
124
+ // start if not started
125
+ await this.start(this.config);
126
+ const translated = await this.tolgee.translate(key, params, noWrap, defaultValue);
127
+ subscriber.next(translated);
128
+ };
129
+ translate();
130
+ const onTranslationChangeSubscription = this.tolgee.onTranslationChange.subscribe((data) => {
131
+ if (data.key === key) {
132
+ translate();
133
+ }
134
+ });
135
+ const onLanguageChangeSubscription = this.tolgee.onLangChange.subscribe(() => {
136
+ translate();
137
+ });
138
+ return () => {
139
+ onTranslationChangeSubscription.unsubscribe();
140
+ onLanguageChangeSubscription.unsubscribe();
141
+ };
142
+ });
143
+ }
144
+ }
145
+ TranslateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TranslateService, deps: [{ token: i1.TolgeeConfig }], target: i0.ɵɵFactoryTarget.Injectable });
146
+ TranslateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TranslateService });
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TranslateService, decorators: [{
148
+ type: Injectable
149
+ }], ctorParameters: function () { return [{ type: i1.TolgeeConfig }]; } });
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdG9sZ2VlL3NyYy9saWIvdHJhbnNsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsTUFBTSxFQUFtQixNQUFNLGNBQWMsQ0FBQzs7O0FBSXZELE1BQU0sT0FBTyxnQkFBZ0I7SUFTM0IsWUFBb0IsTUFBb0I7UUFBcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQVJ4QixpQkFBWSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzlELHdCQUFtQixHQUNqQyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQU1LLENBQUM7SUFJNUMsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBb0I7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDcEMseURBQXlEO1lBQ3pELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxtQ0FBbUM7Z0JBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2xELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLENB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QixTQUFTLEVBQUUsQ0FBQztpQkFDYjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUwsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQ3JFLEdBQUcsRUFBRTtnQkFDSCxTQUFTLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FDRixDQUFDO1lBRUYsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsK0JBQStCLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzlDLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzdDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NkdBMUxVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9sZ2VlLCBUcmFuc2xhdGlvbkRhdGEgfSBmcm9tICdAdG9sZ2VlL2NvcmUnO1xuaW1wb3J0IHsgVG9sZ2VlQ29uZmlnIH0gZnJvbSAnLi90b2xnZWVDb25maWcnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyByZWFkb25seSBvbkxhbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxuZXZlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG5ldmVyPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgb25UcmFuc2xhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFRyYW5zbGF0aW9uRGF0YT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8VHJhbnNsYXRpb25EYXRhPigpO1xuXG4gIHByaXZhdGUgcnVuUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSBvblRyYW5zbGF0aW9uQ2hhbmdlQ29yZVN1YnNjcmlwdGlvbjogYW55O1xuICBwcml2YXRlIG9uTGFuZ0NoYW5nZUNvcmVTdWJzY3JpcHRpb246IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogVG9sZ2VlQ29uZmlnKSB7fVxuXG4gIHByaXZhdGUgX3RvbGdlZTogVG9sZ2VlO1xuXG4gIHB1YmxpYyBnZXQgdG9sZ2VlKCk6IFRvbGdlZSB7XG4gICAgcmV0dXJuIHRoaXMuX3RvbGdlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgVG9sZ2VlIGlmIG5vdCBzdGFydGVkIGFuZCBzdWJzY3JpYmVzIGZvciBsYW5ndWFnZUNoYW5nZSBhbmQgdHJhbnNsYXRpb25DaGFuZ2UgZXZlbnRzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3RhcnQoY29uZmlnOiBUb2xnZWVDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMucnVuUHJvbWlzZSkge1xuICAgICAgdGhpcy5fdG9sZ2VlID0gbmV3IFRvbGdlZShjb25maWcpO1xuICAgICAgdGhpcy5ydW5Qcm9taXNlID0gdGhpcy50b2xnZWUucnVuKCk7XG4gICAgICAvLyB1bnN1YnNjcmliZSBmaXJzdCwgaWYgaXQgaXMgc3Vic2NyaWJlZCBmb3Igc29tZSByZWFzb25cbiAgICAgIHRoaXMudW5zdWJzY3JpYmVDb3JlTGlzdGVuZXJzKCk7XG4gICAgICB0aGlzLm9uVHJhbnNsYXRpb25DaGFuZ2VDb3JlU3Vic2NyaXB0aW9uID1cbiAgICAgICAgdGhpcy5fdG9sZ2VlLm9uVHJhbnNsYXRpb25DaGFuZ2Uuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy5vblRyYW5zbGF0aW9uQ2hhbmdlLmVtaXQoZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5vbkxhbmdDaGFuZ2VDb3JlU3Vic2NyaXB0aW9uID0gdGhpcy5fdG9sZ2VlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLm9uTGFuZ0NoYW5nZS5lbWl0KCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucnVuUHJvbWlzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIHN0b3AgaXQhXG4gICAgdGhpcy50b2xnZWUuc3RvcCgpO1xuICAgIC8vIHVuc3Vic2NyaWJlIGxpc3RlbmVyc1xuICAgIHRoaXMudW5zdWJzY3JpYmVDb3JlTGlzdGVuZXJzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgY3VycmVudCBsYW5ndWFnZVxuICAgKiBAcGFyYW0gbGFuZyBUaGUgbmV3IGN1cnJlbnQgbGFuZ3VhZ2UgKGUuZy4gZW4sIGVuLVVTKVxuICAgKi9cbiAgcHVibGljIHNldExhbmcobGFuZzogc3RyaW5nKSB7XG4gICAgdGhpcy50b2xnZWUubGFuZyA9IGxhbmc7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBsYW5ndWFnZVxuICAgKi9cbiAgcHVibGljIGdldEN1cnJlbnRMYW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9sZ2VlLmxhbmc7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBPYnNlcnZhYmxlIHByb3ZpZGluZyBjdXJyZW50IHRyYW5zbGF0ZWQgdmFsdWVcbiAgICogVG5lIG9ic2VydmFibGUgaXMgc3Vic2NyaWJlZCB0byB0cmFuc2xhdGlvbiBjaGFuZ2UgYW5kIGxhbmd1YWdlIGNoYW5nZSBldmVudHMgb2YgVG9sZ2VlXG4gICAqXG4gICAqIEluIGRldmVsb3BtZW50IG1vZGUsIGl0IHJldHVybnMgc3RyaW5nIHdyYXBwZWQgd2l0aCBjb25maWd1cmVkXG4gICAqIHByZWZpeCBhbmQgc3VmZml4IHRvIGJlIGhhbmRsZWQgaW4gYnJvd3NlciBieSBNdXRhdGlvbk9ic2VydmVyLlxuICAgKlxuICAgKiBZb3Ugc2hvdWxkIHVzZSB1bnN1YnNjcmliZSBtZXRob2Qgd2hlbiB5b3UgYXJlIGRvbmUhXG4gICAqXG4gICAqIGluIG9uSW5pdDogdGhpcy5zdWJzY3JpcHRpb24gPSB0cmFuc2xhdGVTZXJ2aWNlLmdldCgnYWEnKVxuICAgKiBpbiBvbkRlc3Ryb3k6IHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICpcbiAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHRyYW5zbGF0ZSAoZS5nLiB3aGF0LWEta2V5KVxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBwYXJhbWV0ZXJzIHRvIGludGVycG9sYXRlIChlLmcuIHtuYW1lOiBcIkpvaG5cIn0pXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVmFsdWUsIHdoaWNoIHdpbGwgYmUgcmVuZGVyZWQsIHdoZW4gbm8gdHJhbnNsYXRlZCB2YWx1ZSBpcyBwcm92aWRlZFxuICAgKi9cbiAgcHVibGljIGdldChcbiAgICBrZXk6IHN0cmluZyxcbiAgICBwYXJhbXMgPSB7fSxcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUoa2V5LCBwYXJhbXMsIGZhbHNlLCBkZWZhdWx0VmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgT2JzZXJ2YWJsZSBwcm92aWRpbmcgY3VycmVudCB0cmFuc2xhdGVkIHZhbHVlXG4gICAqIFRuZSBvYnNlcnZhYmxlIGlzIHN1YnNjcmliZWQgdG8gdHJhbnNsYXRpb24gY2hhbmdlIGFuZCBsYW5ndWFnZSBjaGFuZ2UgZXZlbnRzIG9mIFRvbGdlZVxuICAgKlxuICAgKiBJbiBkZXZlbG9wbWVudCBtb2RlLCBpdCByZXR1cm5zIHRoZSB0cmFuc2xhdGVkIHN0cmluZyxcbiAgICogc28gaW4tY29udGV4dCBsb2NhbGl6YXRpb24gaXMgbm90IGdvaW5nIHRvIHdvcmsuXG4gICAqXG4gICAqIFlvdSBzaG91bGQgdXNlIHVuc3Vic2NyaWJlIG1ldGhvZCB3aGVuIHlvdSBhcmUgZG9uZSFcbiAgICpcbiAgICogaW4gb25Jbml0OiB0aGlzLnN1YnNjcmlwdGlvbiA9IHRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdhYScpXG4gICAqIGluIG9uRGVzdHJveTogdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgKlxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gdHJhbnNsYXRlIChlLmcuIHdoYXQtYS1rZXkpXG4gICAqIEBwYXJhbSBwYXJhbXMgVGhlIHBhcmFtZXRlcnMgdG8gaW50ZXJwb2xhdGUgKGUuZy4ge25hbWU6IFwiSm9oblwifSlcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBWYWx1ZSwgd2hpY2ggd2lsbCBiZSByZW5kZXJlZCwgd2hlbiBubyB0cmFuc2xhdGVkIHZhbHVlIGlzIHByb3ZpZGVkXG4gICAqL1xuICBwdWJsaWMgZ2V0U2FmZShcbiAgICBrZXk6IHN0cmluZyxcbiAgICBwYXJhbXMgPSB7fSxcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUoa2V5LCBwYXJhbXMsIHRydWUsIGRlZmF1bHRWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdHJhbnNsYXRpb24gdmFsdWUgc3luY2hyb25vdXNseVxuICAgKlxuICAgKiBJbiBkZXZlbG9wbWVudCBtb2RlLCBpdCByZXR1cm5zIHN0cmluZyB3cmFwcGVkIHdpdGggY29uZmlndXJlZFxuICAgKiBwcmVmaXggYW5kIHN1ZmZpeCB0byBiZSBoYW5kbGVkIGluIGJyb3dzZXIgYnkgTXV0YXRpb25PYnNlcnZlci5cbiAgICpcbiAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHRyYW5zbGF0ZSAoZS5nLiB3aGF0LWEta2V5KVxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBwYXJhbWV0ZXJzIHRvIGludGVycG9sYXRlIChlLmcuIHtuYW1lOiBcIkpvaG5cIn0pXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVmFsdWUsIHdoaWNoIHdpbGwgYmUgcmVuZGVyZWQsIHdoZW4gbm8gdHJhbnNsYXRlZCB2YWx1ZSBpcyBwcm92aWRlZFxuICAgKi9cbiAgcHVibGljIGluc3RhbnQoa2V5OiBzdHJpbmcsIHBhcmFtcyA9IHt9LCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRvbGdlZS5pbnN0YW50KGtleSwgcGFyYW1zLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZGVmYXVsdFZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0cmFuc2xhdGlvbiB2YWx1ZSBzeW5jaHJvbm91c2x5XG4gICAqXG4gICAqIEluIGRldmVsb3BtZW50IG1vZGUsIGl0IHJldHVybnMgdGhlIHRyYW5zbGF0ZWQgc3RyaW5nLFxuICAgKiBzbyBpbi1jb250ZXh0IGxvY2FsaXphdGlvbiBpcyBub3QgZ29pbmcgdG8gd29yay5cbiAgICpcbiAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHRyYW5zbGF0ZSAoZS5nLiB3aGF0LWEta2V5KVxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBwYXJhbWV0ZXJzIHRvIGludGVycG9sYXRlIChlLmcuIHtuYW1lOiBcIkpvaG5cIn0pXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVmFsdWUsIHdoaWNoIHdpbGwgYmUgcmVuZGVyZWQsIHdoZW4gbm8gdHJhbnNsYXRlZCB2YWx1ZSBpcyBwcm92aWRlZFxuICAgKi9cbiAgcHVibGljIGluc3RhbnRTYWZlKFxuICAgIGlucHV0OiBzdHJpbmcsXG4gICAgcGFyYW1zID0ge30sXG4gICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9sZ2VlLmluc3RhbnQoaW5wdXQsIHBhcmFtcywgdHJ1ZSwgdW5kZWZpbmVkLCBkZWZhdWx0VmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZUNvcmVMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy5vblRyYW5zbGF0aW9uQ2hhbmdlQ29yZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uTGFuZ0NoYW5nZUNvcmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zbGF0ZShcbiAgICBrZXk6IHN0cmluZyxcbiAgICBwYXJhbXMgPSB7fSxcbiAgICBub1dyYXAgPSBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgY29uc3QgdHJhbnNsYXRlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBzdGFydCBpZiBub3Qgc3RhcnRlZFxuICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0KHRoaXMuY29uZmlnKTtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZCA9IGF3YWl0IHRoaXMudG9sZ2VlLnRyYW5zbGF0ZShcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgIG5vV3JhcCxcbiAgICAgICAgICBkZWZhdWx0VmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICBzdWJzY3JpYmVyLm5leHQodHJhbnNsYXRlZCk7XG4gICAgICB9O1xuXG4gICAgICB0cmFuc2xhdGUoKTtcblxuICAgICAgY29uc3Qgb25UcmFuc2xhdGlvbkNoYW5nZVN1YnNjcmlwdGlvbiA9XG4gICAgICAgIHRoaXMudG9sZ2VlLm9uVHJhbnNsYXRpb25DaGFuZ2Uuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEua2V5ID09PSBrZXkpIHtcbiAgICAgICAgICAgIHRyYW5zbGF0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG9uTGFuZ3VhZ2VDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLnRvbGdlZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHJhbnNsYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIG9uVHJhbnNsYXRpb25DaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgb25MYW5ndWFnZUNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,17 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./translate.service";
4
+ export class TranslationsProvider {
5
+ constructor(translateService) {
6
+ this.translateService = translateService;
7
+ }
8
+ async load(options) {
9
+ return await this.translateService.start(options);
10
+ }
11
+ }
12
+ TranslationsProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TranslationsProvider, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
13
+ TranslationsProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TranslationsProvider });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TranslationsProvider, decorators: [{
15
+ type: Injectable
16
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25zLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRvbGdlZS9zcmMvbGliL3RyYW5zbGF0aW9ucy1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFLekMsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN0RCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFxQjtRQUM5QixPQUFPLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDOztpSEFQVSxvQkFBb0I7cUhBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIi4vdHJhbnNsYXRlLnNlcnZpY2VcIjtcbmltcG9ydCB7VG9sZ2VlQ29uZmlnfSBmcm9tIFwiQHRvbGdlZS9jb3JlXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvbnNQcm92aWRlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gIH1cblxuICBhc3luYyBsb2FkKG9wdGlvbnM6IFRvbGdlZUNvbmZpZykge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RhcnQob3B0aW9ucyk7XG4gIH1cbn1cblxuXG4iXX0=