rpx-xui-translation 1.0.11 → 1.1.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/esm2022/lib/rpx-translate.pipe.mjs +4 -4
- package/esm2022/lib/rpx-translation.module.mjs +8 -11
- package/esm2022/lib/rpx-translation.service.mjs +4 -4
- package/fesm2022/rpx-xui-translation.mjs +13 -16
- package/fesm2022/rpx-xui-translation.mjs.map +1 -1
- package/lib/rpx-translation.module.d.ts +1 -2
- package/package.json +3 -3
|
@@ -28,14 +28,14 @@ export class RpxTranslatePipe {
|
|
|
28
28
|
ngOnDestroy() {
|
|
29
29
|
this.asyncPipe.ngOnDestroy();
|
|
30
30
|
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
32
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslatePipe, deps: [{ token: i1.RpxTranslationService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
32
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslatePipe, name: "rpxTranslate", pure: false }); }
|
|
33
33
|
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslatePipe, decorators: [{
|
|
35
35
|
type: Pipe,
|
|
36
36
|
args: [{
|
|
37
37
|
name: 'rpxTranslate',
|
|
38
38
|
pure: false
|
|
39
39
|
}]
|
|
40
40
|
}], ctorParameters: () => [{ type: i1.RpxTranslationService }, { type: i0.Injector }] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnB4LXRyYW5zbGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcnB4LXh1aS10cmFuc2xhdGlvbi9zcmMvbGliL3JweC10cmFuc2xhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUF1QixJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFRNUYsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUNVLGtCQUF5QyxFQUN6QyxRQUFrQjtRQURsQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBQ3pDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU0sU0FBUyxDQUFhLEtBQVEsRUFBRSxZQUFrQyxFQUFFLFlBQXFCO1FBQzlGLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQXFCLENBQUM7WUFDMUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDbkYsQ0FBQztpQkFBTSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUN4QixDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztZQUM5RSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sR0FBbUIsQ0FBQztRQUM3QixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7K0dBOUJVLGdCQUFnQjs2R0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUo1QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0b3IsIE9uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVwbGFjZW1lbnRzLCBScHhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuL3JweC10cmFuc2xhdGlvbi5zZXJ2aWNlJztcblxuQFBpcGUoe1xuICBuYW1lOiAncnB4VHJhbnNsYXRlJyxcbiAgcHVyZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgUnB4VHJhbnNsYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgYXN5bmNQaXBlOiBBc3luY1BpcGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2U6IFJweFRyYW5zbGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICB0aGlzLmFzeW5jUGlwZSA9IG5ldyBBc3luY1BpcGUoaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKSk7XG4gIH1cblxuICBwdWJsaWMgdHJhbnNmb3JtPFQgPSBzdHJpbmc+KHZhbHVlOiBULCByZXBsYWNlbWVudHM/OiBSZXBsYWNlbWVudHMgfCBudWxsLCB5ZXNPck5vVmFsdWU/OiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudG9TdHJpbmcoKS50cmltKCkpIHtcbiAgICAgIGxldCBvOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgICBpZiAocmVwbGFjZW1lbnRzKSB7XG4gICAgICAgIG8gPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5nZXRUcmFuc2xhdGlvbldpdGhSZXBsYWNlbWVudHMkKHZhbHVlLCByZXBsYWNlbWVudHMpO1xuICAgICAgfSBlbHNlIGlmICh5ZXNPck5vVmFsdWUpIHtcbiAgICAgICAgbyA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmdldFRyYW5zbGF0aW9uV2l0aFllc09yTm8kKHZhbHVlLCB5ZXNPck5vVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbyA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmdldFRyYW5zbGF0aW9uJCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJldCA9IHRoaXMuYXN5bmNQaXBlLnRyYW5zZm9ybTxzdHJpbmc+KG8pO1xuICAgICAgcmV0dXJuIHJldCBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hc3luY1BpcGUubmdPbkRlc3Ryb3koKTtcbiAgfVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
3
|
import { RpxTranslatePipe } from './rpx-translate.pipe';
|
|
4
4
|
import { RpxTranslationConfig } from './rpx-translation.config';
|
|
@@ -21,16 +21,13 @@ export class RpxTranslationModule {
|
|
|
21
21
|
ngModule: RpxTranslationModule
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
25
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
26
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationModule, declarations: [RpxTranslatePipe], exports: [RpxTranslatePipe] }); }
|
|
26
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationModule, providers: [provideHttpClient(withInterceptorsFromDi())] }); }
|
|
27
27
|
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationModule, decorators: [{
|
|
29
29
|
type: NgModule,
|
|
30
|
-
args: [{
|
|
31
|
-
|
|
32
|
-
imports: [HttpClientModule],
|
|
33
|
-
exports: [RpxTranslatePipe]
|
|
34
|
-
}]
|
|
30
|
+
args: [{ declarations: [RpxTranslatePipe],
|
|
31
|
+
exports: [RpxTranslatePipe], imports: [], providers: [provideHttpClient(withInterceptorsFromDi())] }]
|
|
35
32
|
}] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnB4LXRyYW5zbGF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JweC14dWktdHJhbnNsYXRpb24vc3JjL2xpYi9ycHgtdHJhbnNsYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pGLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUlsRSxNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBNEI7UUFDaEQsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTTtpQkFDaEQ7Z0JBQ0QscUJBQXFCO2FBQ3RCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUTtRQUNwQixPQUFPO1lBQ0wsUUFBUSxFQUFFLG9CQUFvQjtTQUMvQixDQUFDO0lBQ0osQ0FBQzsrR0FqQlUsb0JBQW9CO2dIQUFwQixvQkFBb0IsaUJBRk4sZ0JBQWdCLGFBQy9CLGdCQUFnQjtnSEFDZixvQkFBb0IsYUFEc0IsQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7OzRGQUN2RixvQkFBb0I7a0JBRmhDLFFBQVE7bUJBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDMUMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvdmlkZUh0dHBDbGllbnQsIHdpdGhJbnRlcmNlcHRvcnNGcm9tRGkgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUnB4VHJhbnNsYXRlUGlwZSB9IGZyb20gJy4vcnB4LXRyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFJweFRyYW5zbGF0aW9uQ29uZmlnIH0gZnJvbSAnLi9ycHgtdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IFJweFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vcnB4LXRyYW5zbGF0aW9uLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoeyBkZWNsYXJhdGlvbnM6IFtScHhUcmFuc2xhdGVQaXBlXSxcbiAgZXhwb3J0czogW1JweFRyYW5zbGF0ZVBpcGVdLCBpbXBvcnRzOiBbXSwgcHJvdmlkZXJzOiBbcHJvdmlkZUh0dHBDbGllbnQod2l0aEludGVyY2VwdG9yc0Zyb21EaSgpKV0gfSlcbmV4cG9ydCBjbGFzcyBScHhUcmFuc2xhdGlvbk1vZHVsZSB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWc6IFJweFRyYW5zbGF0aW9uQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxScHhUcmFuc2xhdGlvbk1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogUnB4VHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFJweFRyYW5zbGF0aW9uQ29uZmlnLCB1c2VWYWx1ZTogY29uZmlnXG4gICAgICAgIH0sXG4gICAgICAgIFJweFRyYW5zbGF0aW9uU2VydmljZVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZvckNoaWxkKCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8UnB4VHJhbnNsYXRpb25Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJweFRyYW5zbGF0aW9uTW9kdWxlXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -160,10 +160,10 @@ export class RpxTranslationService {
|
|
|
160
160
|
getPersistedLanguage() {
|
|
161
161
|
return document.cookie.split(';').find((cookie) => cookie.trim().startsWith(this.languageKey + '='))?.split('=')[1].trim();
|
|
162
162
|
}
|
|
163
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
164
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationService, deps: [{ token: i1.RpxTranslationConfig }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
164
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationService }); }
|
|
165
165
|
}
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationService, decorators: [{
|
|
167
167
|
type: Injectable
|
|
168
168
|
}], ctorParameters: () => [{ type: i1.RpxTranslationConfig }, { type: i2.HttpClient }] });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnB4LXRyYW5zbGF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ycHgteHVpLXRyYW5zbGF0aW9uL3NyYy9saWIvcnB4LXRyYW5zbGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUV2RyxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFVaEUsTUFBTSxPQUFPLHFCQUFxQjtJQVdoQyxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLFFBQVEsQ0FBQyxJQUFpQjtRQUNuQyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFD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Q0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQyxDQUFDO2dCQUNILEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ3JCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQztJQUNuRSxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFpQixDQUFDO0lBQzVJLENBQUM7OEdBN0xVLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGxpdmVRdWVyeSB9IGZyb20gJ2RleGllJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBkYiwgVHJhbnNsYXRpb24gfSBmcm9tICcuL2RiJztcbmltcG9ydCB7IG1hdGNoQ2FzZSB9IGZyb20gJy4vaGVscGVycy9tYXRjaC1jYXNlL21hdGNoLWNhc2UuaGVscGVyJztcbmltcG9ydCB7IHNwbGl0UGhyYXNlSW50b0NvbXBvbmVudHMgfSBmcm9tICcuL2hlbHBlcnMvcmVwbGFjZS1wbGFjZWhvbGRlcnMvcmVwbGFjZS1wbGFjZWhvbGRlcnMuaGVscGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZWREYXRhIH0gZnJvbSAnLi9tb2RlbHMvdHJhbnNsYXRlZC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IFJweExhbmd1YWdlLCBZZXNPck5vVmFsdWUgfSBmcm9tICcuL3JweC1sYW5ndWFnZS5lbnVtJztcbmltcG9ydCB7IFJweFRyYW5zbGF0aW9uQ29uZmlnIH0gZnJvbSAnLi9ycHgtdHJhbnNsYXRpb24uY29uZmlnJztcblxuaW50ZXJmYWNlIFRyYW5zbGF0aW9uc0RUTyB7XG4gIHRyYW5zbGF0aW9uczogeyBbZnJvbTogc3RyaW5nXTogc3RyaW5nIHwgVHJhbnNsYXRlZERhdGEgfTtcbn1cblxuZXhwb3J0IHR5cGUgUmVwbGFjZW1lbnRzID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJweFRyYW5zbGF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgY3VycmVudExhbmd1YWdlOiBScHhMYW5ndWFnZSA9ICdlbic7XG4gIHByaXZhdGUgbGFuZ3VhZ2VLZXkgPSAnZXh1aS1wcmVmZXJyZWQtbGFuZ3VhZ2UnO1xuXG4gIHByaXZhdGUgcGhyYXNlczogeyBbcGhyYXNlOiBzdHJpbmddOiBCZWhhdmlvclN1YmplY3Q8VHJhbnNsYXRlZERhdGE+IH0gPSB7fTtcbiAgcHJpdmF0ZSBvYnNlcnZhYmxlczogeyBbcGhyYXNlOiBzdHJpbmddOiBPYnNlcnZhYmxlPFRyYW5zbGF0ZWREYXRhPiB9ID0ge307XG4gIHByaXZhdGUgcmVxdWVzdGluZzogeyBbbGFuZzogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICBwcml2YXRlIHJlcXVlc3RUaW1lclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcbiAgcHJpdmF0ZSBsYW5ndWFnZVNvdXJjZTogQmVoYXZpb3JTdWJqZWN0PFJweExhbmd1YWdlPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UnB4TGFuZ3VhZ2U+KHRoaXMuY3VycmVudExhbmd1YWdlKTtcbiAgcHVibGljIGxhbmd1YWdlJDogT2JzZXJ2YWJsZTxScHhMYW5ndWFnZT47XG5cbiAgcHVibGljIGdldCBsYW5ndWFnZSgpOiBScHhMYW5ndWFnZSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudExhbmd1YWdlO1xuICB9XG5cbiAgcHVibGljIHNldCBsYW5ndWFnZShsYW5nOiBScHhMYW5ndWFnZSkge1xuICAgIGlmIChsYW5nICE9PSB0aGlzLmN1cnJlbnRMYW5ndWFnZSkge1xuICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBsYW5nO1xuICAgICAgdGhpcy5wZXJzaXN0TGFuZ3VhZ2UoKTtcbiAgICAgIHRoaXMubGFuZ3VhZ2VTb3VyY2UubmV4dChsYW5nKTtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMucGhyYXNlcykuZm9yRWFjaCgocGhyYXNlKSA9PiB0aGlzLnRyYW5zbGF0ZShwaHJhc2UpKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZzogUnB4VHJhbnNsYXRpb25Db25maWcsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XG4gICkge1xuICAgIGNvbnN0IHBlcnNpc3RlZExhbmd1YWdlID0gdGhpcy5nZXRQZXJzaXN0ZWRMYW5ndWFnZSgpO1xuICAgIGlmIChwZXJzaXN0ZWRMYW5ndWFnZSkge1xuICAgICAgdGhpcy5sYW5ndWFnZSA9IHBlcnNpc3RlZExhbmd1YWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBubyBsYW5ndWFnZSBwZXJzaXN0ZWQgeWV0LCBzYXZlIGRlZmF1bHRcbiAgICAgIHRoaXMucGVyc2lzdExhbmd1YWdlKCk7XG4gICAgfVxuICAgIHRoaXMubGFuZ3VhZ2UkID0gdGhpcy5sYW5ndWFnZVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2xhdGlvbiQocGhyYXNlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWREYXRhKHBocmFzZSkucGlwZShcbiAgICAgIG1hcCgodCkgPT4gdC50cmFuc2xhdGlvbilcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zbGF0aW9uV2l0aFJlcGxhY2VtZW50cyQocGhyYXNlOiBzdHJpbmcsIHJlcGxhY2VtZW50czogUmVwbGFjZW1lbnRzKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAvLyBTcGxpdCB0aGUgcGhyYXNlIGludG8gY29tcG9uZW50cyBmaXJzdCBiYXNlZCBvbiByZXBsYWNlbWVudHNcbiAgICBjb25zdCBjb21wb25lbnRzID0gc3BsaXRQaHJhc2VJbnRvQ29tcG9uZW50cyhwaHJhc2UsIHJlcGxhY2VtZW50cyk7XG5cbiAgICAvLyBUcmFuc2xhdGUgZWFjaCBjb21wb25lbnQgaW5kaXZpZHVhbGx5IHVzaW5nIGdldFRyYW5zbGF0ZWREYXRhIGFuZCB0aGVuIGNvbWJpbmUgdGhlbVxuICAgIGNvbnN0IHRyYW5zbGF0ZWRDb21wb25lbnRzJCA9IGNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IHRoaXMuZ2V0VHJhbnNsYXRlZERhdGEoY29tcG9uZW50KS5waXBlKFxuICAgICAgbWFwKCh0cmFuc2xhdGVkRGF0YSkgPT4gdHJhbnNsYXRlZERhdGEudHJhbnNsYXRpb24pIC8vIEV4dHJhY3QgdGhlIHRyYW5zbGF0ZWQgc3RyaW5nXG4gICAgKSk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0cmFuc2xhdGVkQ29tcG9uZW50cyQpLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlczogc3RyaW5nW10pID0+IHZhbHVlcy5qb2luKCcnKSkgLy8gSm9pbiB0aGUgc3RyaW5ncyB3aXRob3V0IGFueSBzZXBhcmF0b3JcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zbGF0aW9uV2l0aFllc09yTm8kKHBocmFzZTogc3RyaW5nLCB5ZXNPck5vVmFsdWU6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3QgaXNZZXMgPSB5ZXNPck5vVmFsdWU/LnRvTG93ZXJDYXNlKCkgPT09IFllc09yTm9WYWx1ZS5ZRVMudG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWREYXRhKHBocmFzZSkucGlwZShtYXAoKHRyYW5zbGF0ZWREYXRhOiBUcmFuc2xhdGVkRGF0YSkgPT4ge1xuICAgICAgY29uc3QgeWVzT3JOb1RyYW5zbGF0ZWQgPSBpc1llcyA/ICh0cmFuc2xhdGVkRGF0YS55ZXMgfHwgeWVzT3JOb1ZhbHVlKVxuICAgICAgICA6ICh0cmFuc2xhdGVkRGF0YS5ubyB8fCB5ZXNPck5vVmFsdWUpO1xuICAgICAgcmV0dXJuIG1hdGNoQ2FzZSh5ZXNPck5vVmFsdWUhLCB5ZXNPck5vVHJhbnNsYXRlZCk7XG4gICAgfVxuICAgICkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmFuc2xhdGVkRGF0YShwaHJhc2U6IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRlZERhdGE+IHtcbiAgICBpZiAodGhpcy5vYnNlcnZhYmxlcy5oYXNPd25Qcm9wZXJ0eShwaHJhc2UpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vYnNlcnZhYmxlc1twaHJhc2VdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZShwaHJhc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGUocGhyYXNlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRyYW5zbGF0ZWREYXRhPiB7XG4gICAgY29uc3QgbGFuZyA9IHRoaXMubGFuZ3VhZ2U7XG4gICAgaWYgKCF0aGlzLnBocmFzZXMuaGFzT3duUHJvcGVydHkocGhyYXNlKSkge1xuICAgICAgdGhpcy5waHJhc2VzW3BocmFzZV0gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYW5zbGF0ZWREYXRhPih7IHRyYW5zbGF0aW9uOiBwaHJhc2UgfSk7XG4gICAgICB0aGlzLm9ic2VydmFibGVzW3BocmFzZV0gPSB0aGlzLnBocmFzZXNbcGhyYXNlXS5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBpZiAobGFuZyA9PT0gJ2VuJykge1xuICAgICAgdGhpcy5waHJhc2VzW3BocmFzZV0ubmV4dCh7IHRyYW5zbGF0aW9uOiBwaHJhc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZyb20obGl2ZVF1ZXJ5KCgpID0+IGRiLnRyYW5zbGF0aW9ucy53aGVyZSgnW3BocmFzZStsYW5nXScpLmVxdWFscyhbcGhyYXNlLCBsYW5nXSkuZmlyc3QoKSkpLnBpcGUoXG4gICAgICAgIHRhcCgodCkgPT4ge1xuICAgICAgICAgIGlmICh0ICYmICF0LmlzRXhwaXJlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnBocmFzZXNbcGhyYXNlXS5uZXh0KHQudHJhbnNsYXRpb24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodCkge1xuICAgICAgICAgICAgICAvLyBleHBpcmVkLCBjbGVhbiB1cCBEQlxuICAgICAgICAgICAgICBkYi50cmFuc2xhdGlvbnMuZGVsZXRlKHQuaWQhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGhyYXNlc1twaHJhc2VdLm5leHQoe1xuICAgICAgICAgICAgICB0cmFuc2xhdGlvbjogYCR7cGhyYXNlfSBbVHJhbnNsYXRpb24gaW4gcHJvZ3Jlc3NdYCxcbiAgICAgICAgICAgICAgeWVzOiAnWWVzIFtUcmFuc2xhdGlvbiBpbiBwcm9ncmVzc10nLFxuICAgICAgICAgICAgICBubzogJ05vIFtUcmFuc2xhdGlvbiBpbiBwcm9ncmVzc10nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubG9hZChwaHJhc2UsIGxhbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiAoe30pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vYnNlcnZhYmxlc1twaHJhc2VdO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkKHBocmFzZTogc3RyaW5nLCBsYW5nOiBScHhMYW5ndWFnZSk6IHZvaWQge1xuICAgIGlmIChsYW5nID09PSAnZW4nKSB7XG4gICAgICB0aGlzLnBocmFzZXNbcGhyYXNlXS5uZXh0KHtcbiAgICAgICAgdHJhbnNsYXRpb246IHBocmFzZSxcbiAgICAgICAgeWVzOiAnWWVzJyxcbiAgICAgICAgbm86ICdObydcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5yZXF1ZXN0aW5nLmhhc093blByb3BlcnR5KGxhbmcpKSB7XG4gICAgICB0aGlzLnJlcXVlc3RpbmdbbGFuZ10gPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXF1ZXN0aW5nW2xhbmddLmluZGV4T2YocGhyYXNlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBQcmV2ZW50IG1ha2luZyBhIEFQSSBjYWxsIHdpdGggZW1wdHkgYXJyYXkgb2YgcGhyYXNlXG4gICAgaWYgKHBocmFzZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlcXVlc3RpbmdbbGFuZ10ucHVzaChwaHJhc2UpO1xuXG4gICAgaWYgKHRoaXMucmVxdWVzdFRpbWVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnJlcXVlc3RUaW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdFRpbWVyU3Vic2NyaXB0aW9uID0gdGltZXIodGhpcy5jb25maWcuZGVib3VuY2VUaW1lTXMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmNvbmZpZy5iYXNlVXJsICsgYC8ke2xhbmd9YDtcbiAgICAgIGNvbnN0IHMgPSB0aGlzLmh0dHAucG9zdDxUcmFuc2xhdGlvbnNEVE8+KHVybCxcbiAgICAgICAge1xuICAgICAgICAgIHBocmFzZXM6IHRoaXMucmVxdWVzdGluZ1tsYW5nXVxuICAgICAgICB9XG4gICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgodCkgPT4gdC50cmFuc2xhdGlvbnMpLFxuICAgICAgICAgIG1hcCgodHJhbnNsYXRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkRGF0YTogeyBbZnJvbTogc3RyaW5nXTogVHJhbnNsYXRlZERhdGEgfSA9IHt9O1xuXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZih0cmFuc2xhdGlvbnNbcF0pID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWREYXRhW3BdID0geyB0cmFuc2xhdGlvbjogdHJhbnNsYXRpb25zW3BdIGFzIHN0cmluZyB9O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWREYXRhW3BdID0gdHJhbnNsYXRpb25zW3BdIGFzIFRyYW5zbGF0ZWREYXRhO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWREYXRhO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zOiB7IFtmcm9tOiBzdHJpbmddOiBUcmFuc2xhdGVkRGF0YSB9ID0ge307XG4gICAgICAgICAgICB0aGlzLnJlcXVlc3RpbmdbbGFuZ10uZm9yRWFjaCgocCkgPT4gKFxuICAgICAgICAgICAgICB0cmFuc2xhdGlvbnNbcF0gPSB0aGlzLmNvbmZpZy50ZXN0TW9kZSA/IHsgdHJhbnNsYXRpb246IGBbVGVzdCB0cmFuc2xhdGlvbiBmb3IgJHtwfV1gIH0gOiB7IHRyYW5zbGF0aW9uOiBwIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRyYW5zbGF0aW9ucyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKHRyYW5zbGF0aW9uczogeyBbZnJvbTogc3RyaW5nXTogVHJhbnNsYXRlZERhdGEgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRvQWRkOiBUcmFuc2xhdGlvbltdID0gW107XG4gICAgICAgICAgT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgICB0b0FkZC5wdXNoKFRyYW5zbGF0aW9uLmNyZWF0ZShwLCBsYW5nLCB0cmFuc2xhdGlvbnNbcF0sIERhdGVUaW1lLm5vdygpLnBsdXModGhpcy5jb25maWcudmFsaWRpdHkpLnRvSVNPKCkpKTtcbiAgICAgICAgICAgIHRoaXMucGhyYXNlc1twXS5uZXh0KHRyYW5zbGF0aW9uc1twXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGIudHJhbnNsYXRpb25zLmJ1bGtBZGQodG9BZGQpO1xuICAgICAgICAgIHRoaXMucmVxdWVzdGluZ1tsYW5nXSA9IFtdO1xuICAgICAgICAgIHRoaXMucmVxdWVzdFRpbWVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMucmVxdWVzdFRpbWVyU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgICBzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0TGFuZ3VhZ2UoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQuY29va2llID0gYCR7dGhpcy5sYW5ndWFnZUtleX09JHt0aGlzLmN1cnJlbnRMYW5ndWFnZX07YDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGVyc2lzdGVkTGFuZ3VhZ2UoKTogUnB4TGFuZ3VhZ2Uge1xuICAgIHJldHVybiBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKS5maW5kKChjb29raWUpID0+IGNvb2tpZS50cmltKCkuc3RhcnRzV2l0aCh0aGlzLmxhbmd1YWdlS2V5ICsgJz0nKSk/LnNwbGl0KCc9JylbMV0udHJpbSgpIGFzIFJweExhbmd1YWdlO1xuICB9XG59XG4iXX0=
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnB4LXRyYW5zbGF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ycHgteHVpLXRyYW5zbGF0aW9uL3NyYy9saWIvcnB4LXRyYW5zbGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUV2RyxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFVaEUsTUFBTSxPQUFPLHFCQUFxQjtJQVdoQyxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLFFBQVEsQ0FBQyxJQUFpQjtRQUNuQyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFDVSxNQUE0QixFQUM1QixJQUFnQjtRQURoQixXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBekJsQixvQkFBZSxHQUFnQixJQUFJLENBQUM7UUFDcEMsZ0JBQVcsR0FBRyx5QkFBeUIsQ0FBQztRQUV4QyxZQUFPLEdBQTBELEVBQUUsQ0FBQztRQUNwRSxnQkFBVyxHQUFxRCxFQUFFLENBQUM7UUFDbkUsZUFBVSxHQUFpQyxFQUFFLENBQUM7UUFFOUMsbUJBQWMsR0FBaUMsSUFBSSxlQUFlLENBQWMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBb0I1RyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3RELElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ04sMENBQTBDO1lBQzFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFTSxlQUFlLENBQUMsTUFBYztRQUNuQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVNLCtCQUErQixDQUFDLE1BQWMsRUFBRSxZQUEwQjtRQUMvRSwrREFBK0Q7UUFDL0QsTUFBTSxVQUFVLEdBQUcseUJBQXlCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRW5FLHNGQUFzRjtRQUN0RixNQUFNLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ2hHLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGdDQUFnQztTQUNyRixDQUFDLENBQUM7UUFFSCxPQUFPLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FDOUMsR0FBRyxDQUFDLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztTQUNyRixDQUFDO0lBQ0osQ0FBQztJQUVNLDBCQUEwQixDQUFDLE1BQWMsRUFBRSxZQUFvQjtRQUNwRSxNQUFNLEtBQUssR0FBRyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUU3RSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBOEIsRUFBRSxFQUFFO1lBQ2hGLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksWUFBWSxDQUFDO2dCQUNwRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sU0FBUyxDQUFDLFlBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FDQSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCLENBQUMsTUFBYztRQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxNQUFjO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakUsQ0FBQztRQUVELElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9GLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ04sdUJBQXVCO3dCQUN2QixFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQ3hCLFdBQVcsRUFBRSxHQUFHLE1BQU0sNEJBQTRCO3dCQUNsRCxHQUFHLEVBQUUsK0JBQStCO3dCQUNwQyxFQUFFLEVBQUUsOEJBQThCO3FCQUNuQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sSUFBSSxDQUFDLE1BQWMsRUFBRSxJQUFpQjtRQUM1QyxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDeEIsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLEdBQUcsRUFBRSxLQUFLO2dCQUNWLEVBQUUsRUFBRSxJQUFJO2FBQ1QsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU87UUFDVCxDQUFDO1FBRUQsdURBQXVEO1FBQ3ZELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMvRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFrQixHQUFHLEVBQzNDO2dCQUNFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQzthQUMvQixDQUNGO2lCQUNFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFDMUIsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ25CLE1BQU0sY0FBYyxHQUF1QyxFQUFFLENBQUM7Z0JBRTlELE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ3RDLElBQUksT0FBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO3dCQUN6QyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBVyxFQUFFLENBQUM7b0JBQ2pFLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBbUIsQ0FBQztvQkFDeEQsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxPQUFPLGNBQWMsQ0FBQztZQUN4QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLE1BQU0sWUFBWSxHQUF1QyxFQUFFLENBQUM7Z0JBQzVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNuQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUM5RyxDQUFDO2dCQUNGLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxDQUFDLENBQUMsWUFBZ0QsRUFBRSxFQUFFO2dCQUMvRCxNQUFNLEtBQUssR0FBa0IsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDNUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQyxDQUFDO2dCQUNILEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ3JCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQztJQUNuRSxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFpQixDQUFDO0lBQzVJLENBQUM7K0dBN0xVLHFCQUFxQjttSEFBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGxpdmVRdWVyeSB9IGZyb20gJ2RleGllJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBkYiwgVHJhbnNsYXRpb24gfSBmcm9tICcuL2RiJztcbmltcG9ydCB7IG1hdGNoQ2FzZSB9IGZyb20gJy4vaGVscGVycy9tYXRjaC1jYXNlL21hdGNoLWNhc2UuaGVscGVyJztcbmltcG9ydCB7IHNwbGl0UGhyYXNlSW50b0NvbXBvbmVudHMgfSBmcm9tICcuL2hlbHBlcnMvcmVwbGFjZS1wbGFjZWhvbGRlcnMvcmVwbGFjZS1wbGFjZWhvbGRlcnMuaGVscGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZWREYXRhIH0gZnJvbSAnLi9tb2RlbHMvdHJhbnNsYXRlZC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IFJweExhbmd1YWdlLCBZZXNPck5vVmFsdWUgfSBmcm9tICcuL3JweC1sYW5ndWFnZS5lbnVtJztcbmltcG9ydCB7IFJweFRyYW5zbGF0aW9uQ29uZmlnIH0gZnJvbSAnLi9ycHgtdHJhbnNsYXRpb24uY29uZmlnJztcblxuaW50ZXJmYWNlIFRyYW5zbGF0aW9uc0RUTyB7XG4gIHRyYW5zbGF0aW9uczogeyBbZnJvbTogc3RyaW5nXTogc3RyaW5nIHwgVHJhbnNsYXRlZERhdGEgfTtcbn1cblxuZXhwb3J0IHR5cGUgUmVwbGFjZW1lbnRzID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJweFRyYW5zbGF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgY3VycmVudExhbmd1YWdlOiBScHhMYW5ndWFnZSA9ICdlbic7XG4gIHByaXZhdGUgbGFuZ3VhZ2VLZXkgPSAnZXh1aS1wcmVmZXJyZWQtbGFuZ3VhZ2UnO1xuXG4gIHByaXZhdGUgcGhyYXNlczogeyBbcGhyYXNlOiBzdHJpbmddOiBCZWhhdmlvclN1YmplY3Q8VHJhbnNsYXRlZERhdGE+IH0gPSB7fTtcbiAgcHJpdmF0ZSBvYnNlcnZhYmxlczogeyBbcGhyYXNlOiBzdHJpbmddOiBPYnNlcnZhYmxlPFRyYW5zbGF0ZWREYXRhPiB9ID0ge307XG4gIHByaXZhdGUgcmVxdWVzdGluZzogeyBbbGFuZzogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICBwcml2YXRlIHJlcXVlc3RUaW1lclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcbiAgcHJpdmF0ZSBsYW5ndWFnZVNvdXJjZTogQmVoYXZpb3JTdWJqZWN0PFJweExhbmd1YWdlPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UnB4TGFuZ3VhZ2U+KHRoaXMuY3VycmVudExhbmd1YWdlKTtcbiAgcHVibGljIGxhbmd1YWdlJDogT2JzZXJ2YWJsZTxScHhMYW5ndWFnZT47XG5cbiAgcHVibGljIGdldCBsYW5ndWFnZSgpOiBScHhMYW5ndWFnZSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudExhbmd1YWdlO1xuICB9XG5cbiAgcHVibGljIHNldCBsYW5ndWFnZShsYW5nOiBScHhMYW5ndWFnZSkge1xuICAgIGlmIChsYW5nICE9PSB0aGlzLmN1cnJlbnRMYW5ndWFnZSkge1xuICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBsYW5nO1xuICAgICAgdGhpcy5wZXJzaXN0TGFuZ3VhZ2UoKTtcbiAgICAgIHRoaXMubGFuZ3VhZ2VTb3VyY2UubmV4dChsYW5nKTtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMucGhyYXNlcykuZm9yRWFjaCgocGhyYXNlKSA9PiB0aGlzLnRyYW5zbGF0ZShwaHJhc2UpKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZzogUnB4VHJhbnNsYXRpb25Db25maWcsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XG4gICkge1xuICAgIGNvbnN0IHBlcnNpc3RlZExhbmd1YWdlID0gdGhpcy5nZXRQZXJzaXN0ZWRMYW5ndWFnZSgpO1xuICAgIGlmIChwZXJzaXN0ZWRMYW5ndWFnZSkge1xuICAgICAgdGhpcy5sYW5ndWFnZSA9IHBlcnNpc3RlZExhbmd1YWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBubyBsYW5ndWFnZSBwZXJzaXN0ZWQgeWV0LCBzYXZlIGRlZmF1bHRcbiAgICAgIHRoaXMucGVyc2lzdExhbmd1YWdlKCk7XG4gICAgfVxuICAgIHRoaXMubGFuZ3VhZ2UkID0gdGhpcy5sYW5ndWFnZVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2xhdGlvbiQocGhyYXNlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWREYXRhKHBocmFzZSkucGlwZShcbiAgICAgIG1hcCgodCkgPT4gdC50cmFuc2xhdGlvbilcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zbGF0aW9uV2l0aFJlcGxhY2VtZW50cyQocGhyYXNlOiBzdHJpbmcsIHJlcGxhY2VtZW50czogUmVwbGFjZW1lbnRzKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAvLyBTcGxpdCB0aGUgcGhyYXNlIGludG8gY29tcG9uZW50cyBmaXJzdCBiYXNlZCBvbiByZXBsYWNlbWVudHNcbiAgICBjb25zdCBjb21wb25lbnRzID0gc3BsaXRQaHJhc2VJbnRvQ29tcG9uZW50cyhwaHJhc2UsIHJlcGxhY2VtZW50cyk7XG5cbiAgICAvLyBUcmFuc2xhdGUgZWFjaCBjb21wb25lbnQgaW5kaXZpZHVhbGx5IHVzaW5nIGdldFRyYW5zbGF0ZWREYXRhIGFuZCB0aGVuIGNvbWJpbmUgdGhlbVxuICAgIGNvbnN0IHRyYW5zbGF0ZWRDb21wb25lbnRzJCA9IGNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IHRoaXMuZ2V0VHJhbnNsYXRlZERhdGEoY29tcG9uZW50KS5waXBlKFxuICAgICAgbWFwKCh0cmFuc2xhdGVkRGF0YSkgPT4gdHJhbnNsYXRlZERhdGEudHJhbnNsYXRpb24pIC8vIEV4dHJhY3QgdGhlIHRyYW5zbGF0ZWQgc3RyaW5nXG4gICAgKSk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0cmFuc2xhdGVkQ29tcG9uZW50cyQpLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlczogc3RyaW5nW10pID0+IHZhbHVlcy5qb2luKCcnKSkgLy8gSm9pbiB0aGUgc3RyaW5ncyB3aXRob3V0IGFueSBzZXBhcmF0b3JcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zbGF0aW9uV2l0aFllc09yTm8kKHBocmFzZTogc3RyaW5nLCB5ZXNPck5vVmFsdWU6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3QgaXNZZXMgPSB5ZXNPck5vVmFsdWU/LnRvTG93ZXJDYXNlKCkgPT09IFllc09yTm9WYWx1ZS5ZRVMudG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWREYXRhKHBocmFzZSkucGlwZShtYXAoKHRyYW5zbGF0ZWREYXRhOiBUcmFuc2xhdGVkRGF0YSkgPT4ge1xuICAgICAgY29uc3QgeWVzT3JOb1RyYW5zbGF0ZWQgPSBpc1llcyA/ICh0cmFuc2xhdGVkRGF0YS55ZXMgfHwgeWVzT3JOb1ZhbHVlKVxuICAgICAgICA6ICh0cmFuc2xhdGVkRGF0YS5ubyB8fCB5ZXNPck5vVmFsdWUpO1xuICAgICAgcmV0dXJuIG1hdGNoQ2FzZSh5ZXNPck5vVmFsdWUhLCB5ZXNPck5vVHJhbnNsYXRlZCk7XG4gICAgfVxuICAgICkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmFuc2xhdGVkRGF0YShwaHJhc2U6IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRlZERhdGE+IHtcbiAgICBpZiAodGhpcy5vYnNlcnZhYmxlcy5oYXNPd25Qcm9wZXJ0eShwaHJhc2UpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vYnNlcnZhYmxlc1twaHJhc2VdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZShwaHJhc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGUocGhyYXNlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRyYW5zbGF0ZWREYXRhPiB7XG4gICAgY29uc3QgbGFuZyA9IHRoaXMubGFuZ3VhZ2U7XG4gICAgaWYgKCF0aGlzLnBocmFzZXMuaGFzT3duUHJvcGVydHkocGhyYXNlKSkge1xuICAgICAgdGhpcy5waHJhc2VzW3BocmFzZV0gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYW5zbGF0ZWREYXRhPih7IHRyYW5zbGF0aW9uOiBwaHJhc2UgfSk7XG4gICAgICB0aGlzLm9ic2VydmFibGVzW3BocmFzZV0gPSB0aGlzLnBocmFzZXNbcGhyYXNlXS5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBpZiAobGFuZyA9PT0gJ2VuJykge1xuICAgICAgdGhpcy5waHJhc2VzW3BocmFzZV0ubmV4dCh7IHRyYW5zbGF0aW9uOiBwaHJhc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZyb20obGl2ZVF1ZXJ5KCgpID0+IGRiLnRyYW5zbGF0aW9ucy53aGVyZSgnW3BocmFzZStsYW5nXScpLmVxdWFscyhbcGhyYXNlLCBsYW5nXSkuZmlyc3QoKSkpLnBpcGUoXG4gICAgICAgIHRhcCgodCkgPT4ge1xuICAgICAgICAgIGlmICh0ICYmICF0LmlzRXhwaXJlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnBocmFzZXNbcGhyYXNlXS5uZXh0KHQudHJhbnNsYXRpb24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodCkge1xuICAgICAgICAgICAgICAvLyBleHBpcmVkLCBjbGVhbiB1cCBEQlxuICAgICAgICAgICAgICBkYi50cmFuc2xhdGlvbnMuZGVsZXRlKHQuaWQhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGhyYXNlc1twaHJhc2VdLm5leHQoe1xuICAgICAgICAgICAgICB0cmFuc2xhdGlvbjogYCR7cGhyYXNlfSBbVHJhbnNsYXRpb24gaW4gcHJvZ3Jlc3NdYCxcbiAgICAgICAgICAgICAgeWVzOiAnWWVzIFtUcmFuc2xhdGlvbiBpbiBwcm9ncmVzc10nLFxuICAgICAgICAgICAgICBubzogJ05vIFtUcmFuc2xhdGlvbiBpbiBwcm9ncmVzc10nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubG9hZChwaHJhc2UsIGxhbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiAoe30pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vYnNlcnZhYmxlc1twaHJhc2VdO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkKHBocmFzZTogc3RyaW5nLCBsYW5nOiBScHhMYW5ndWFnZSk6IHZvaWQge1xuICAgIGlmIChsYW5nID09PSAnZW4nKSB7XG4gICAgICB0aGlzLnBocmFzZXNbcGhyYXNlXS5uZXh0KHtcbiAgICAgICAgdHJhbnNsYXRpb246IHBocmFzZSxcbiAgICAgICAgeWVzOiAnWWVzJyxcbiAgICAgICAgbm86ICdObydcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5yZXF1ZXN0aW5nLmhhc093blByb3BlcnR5KGxhbmcpKSB7XG4gICAgICB0aGlzLnJlcXVlc3RpbmdbbGFuZ10gPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXF1ZXN0aW5nW2xhbmddLmluZGV4T2YocGhyYXNlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBQcmV2ZW50IG1ha2luZyBhIEFQSSBjYWxsIHdpdGggZW1wdHkgYXJyYXkgb2YgcGhyYXNlXG4gICAgaWYgKHBocmFzZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlcXVlc3RpbmdbbGFuZ10ucHVzaChwaHJhc2UpO1xuXG4gICAgaWYgKHRoaXMucmVxdWVzdFRpbWVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnJlcXVlc3RUaW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdFRpbWVyU3Vic2NyaXB0aW9uID0gdGltZXIodGhpcy5jb25maWcuZGVib3VuY2VUaW1lTXMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmNvbmZpZy5iYXNlVXJsICsgYC8ke2xhbmd9YDtcbiAgICAgIGNvbnN0IHMgPSB0aGlzLmh0dHAucG9zdDxUcmFuc2xhdGlvbnNEVE8+KHVybCxcbiAgICAgICAge1xuICAgICAgICAgIHBocmFzZXM6IHRoaXMucmVxdWVzdGluZ1tsYW5nXVxuICAgICAgICB9XG4gICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgodCkgPT4gdC50cmFuc2xhdGlvbnMpLFxuICAgICAgICAgIG1hcCgodHJhbnNsYXRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkRGF0YTogeyBbZnJvbTogc3RyaW5nXTogVHJhbnNsYXRlZERhdGEgfSA9IHt9O1xuXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZih0cmFuc2xhdGlvbnNbcF0pID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWREYXRhW3BdID0geyB0cmFuc2xhdGlvbjogdHJhbnNsYXRpb25zW3BdIGFzIHN0cmluZyB9O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWREYXRhW3BdID0gdHJhbnNsYXRpb25zW3BdIGFzIFRyYW5zbGF0ZWREYXRhO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWREYXRhO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zOiB7IFtmcm9tOiBzdHJpbmddOiBUcmFuc2xhdGVkRGF0YSB9ID0ge307XG4gICAgICAgICAgICB0aGlzLnJlcXVlc3RpbmdbbGFuZ10uZm9yRWFjaCgocCkgPT4gKFxuICAgICAgICAgICAgICB0cmFuc2xhdGlvbnNbcF0gPSB0aGlzLmNvbmZpZy50ZXN0TW9kZSA/IHsgdHJhbnNsYXRpb246IGBbVGVzdCB0cmFuc2xhdGlvbiBmb3IgJHtwfV1gIH0gOiB7IHRyYW5zbGF0aW9uOiBwIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRyYW5zbGF0aW9ucyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKHRyYW5zbGF0aW9uczogeyBbZnJvbTogc3RyaW5nXTogVHJhbnNsYXRlZERhdGEgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRvQWRkOiBUcmFuc2xhdGlvbltdID0gW107XG4gICAgICAgICAgT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgICB0b0FkZC5wdXNoKFRyYW5zbGF0aW9uLmNyZWF0ZShwLCBsYW5nLCB0cmFuc2xhdGlvbnNbcF0sIERhdGVUaW1lLm5vdygpLnBsdXModGhpcy5jb25maWcudmFsaWRpdHkpLnRvSVNPKCkpKTtcbiAgICAgICAgICAgIHRoaXMucGhyYXNlc1twXS5uZXh0KHRyYW5zbGF0aW9uc1twXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGIudHJhbnNsYXRpb25zLmJ1bGtBZGQodG9BZGQpO1xuICAgICAgICAgIHRoaXMucmVxdWVzdGluZ1tsYW5nXSA9IFtdO1xuICAgICAgICAgIHRoaXMucmVxdWVzdFRpbWVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMucmVxdWVzdFRpbWVyU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgICBzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0TGFuZ3VhZ2UoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQuY29va2llID0gYCR7dGhpcy5sYW5ndWFnZUtleX09JHt0aGlzLmN1cnJlbnRMYW5ndWFnZX07YDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGVyc2lzdGVkTGFuZ3VhZ2UoKTogUnB4TGFuZ3VhZ2Uge1xuICAgIHJldHVybiBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKS5maW5kKChjb29raWUpID0+IGNvb2tpZS50cmltKCkuc3RhcnRzV2l0aCh0aGlzLmxhbmd1YWdlS2V5ICsgJz0nKSk/LnNwbGl0KCc9JylbMV0udHJpbSgpIGFzIFJweExhbmd1YWdlO1xuICB9XG59XG4iXX0=
|
|
@@ -5,7 +5,7 @@ import { DateTime } from 'luxon';
|
|
|
5
5
|
import { BehaviorSubject, combineLatest, from, timer, of } from 'rxjs';
|
|
6
6
|
import { map, tap, catchError } from 'rxjs/operators';
|
|
7
7
|
import * as i2 from '@angular/common/http';
|
|
8
|
-
import {
|
|
8
|
+
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
|
|
9
9
|
import { AsyncPipe } from '@angular/common';
|
|
10
10
|
|
|
11
11
|
var YesOrNoValue;
|
|
@@ -260,10 +260,10 @@ class RpxTranslationService {
|
|
|
260
260
|
getPersistedLanguage() {
|
|
261
261
|
return document.cookie.split(';').find((cookie) => cookie.trim().startsWith(this.languageKey + '='))?.split('=')[1].trim();
|
|
262
262
|
}
|
|
263
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
264
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
263
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationService, deps: [{ token: RpxTranslationConfig }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
264
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationService }); }
|
|
265
265
|
}
|
|
266
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
266
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationService, decorators: [{
|
|
267
267
|
type: Injectable
|
|
268
268
|
}], ctorParameters: () => [{ type: RpxTranslationConfig }, { type: i2.HttpClient }] });
|
|
269
269
|
|
|
@@ -293,10 +293,10 @@ class RpxTranslatePipe {
|
|
|
293
293
|
ngOnDestroy() {
|
|
294
294
|
this.asyncPipe.ngOnDestroy();
|
|
295
295
|
}
|
|
296
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
297
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
296
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslatePipe, deps: [{ token: RpxTranslationService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
297
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslatePipe, name: "rpxTranslate", pure: false }); }
|
|
298
298
|
}
|
|
299
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
299
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslatePipe, decorators: [{
|
|
300
300
|
type: Pipe,
|
|
301
301
|
args: [{
|
|
302
302
|
name: 'rpxTranslate',
|
|
@@ -321,17 +321,14 @@ class RpxTranslationModule {
|
|
|
321
321
|
ngModule: RpxTranslationModule
|
|
322
322
|
};
|
|
323
323
|
}
|
|
324
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
325
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
326
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
324
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
325
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationModule, declarations: [RpxTranslatePipe], exports: [RpxTranslatePipe] }); }
|
|
326
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationModule, providers: [provideHttpClient(withInterceptorsFromDi())] }); }
|
|
327
327
|
}
|
|
328
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RpxTranslationModule, decorators: [{
|
|
329
329
|
type: NgModule,
|
|
330
|
-
args: [{
|
|
331
|
-
|
|
332
|
-
imports: [HttpClientModule],
|
|
333
|
-
exports: [RpxTranslatePipe]
|
|
334
|
-
}]
|
|
330
|
+
args: [{ declarations: [RpxTranslatePipe],
|
|
331
|
+
exports: [RpxTranslatePipe], imports: [], providers: [provideHttpClient(withInterceptorsFromDi())] }]
|
|
335
332
|
}] });
|
|
336
333
|
|
|
337
334
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpx-xui-translation.mjs","sources":["../../../projects/rpx-xui-translation/src/lib/rpx-language.enum.ts","../../../projects/rpx-xui-translation/src/lib/rpx-translation.config.ts","../../../projects/rpx-xui-translation/src/lib/db.ts","../../../projects/rpx-xui-translation/src/lib/helpers/match-case/match-case.helper.ts","../../../projects/rpx-xui-translation/src/lib/helpers/replace-placeholders/replace-placeholders.helper.ts","../../../projects/rpx-xui-translation/src/lib/rpx-translation.service.ts","../../../projects/rpx-xui-translation/src/lib/rpx-translate.pipe.ts","../../../projects/rpx-xui-translation/src/lib/rpx-translation.module.ts","../../../projects/rpx-xui-translation/src/public-api.ts","../../../projects/rpx-xui-translation/src/rpx-xui-translation.ts"],"sourcesContent":["export type RpxLanguage = 'en' | 'cy';\nexport enum YesOrNoValue {\n YES = 'Yes',\n NO = 'No',\n}\n","export type ValidityDurationSpec = {\n years?: number;\n quarters?: number;\n months?: number;\n weeks?: number;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n};\n\nexport class RpxTranslationConfig {\n validity: ValidityDurationSpec;\n baseUrl: string;\n\n debounceTimeMs = 300;\n testMode = false;\n}\n","import Dexie, { Table } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { RpxLanguage } from './rpx-language.enum';\nimport { TranslatedData } from './models/translated-data.model';\n\nexport class Translation {\n id?: number;\n phrase: string;\n lang: RpxLanguage;\n translation: TranslatedData;\n validity: string;\n\n public static create(phrase: string, lang: RpxLanguage, translation: TranslatedData, validity: string): Translation {\n const t = new Translation();\n t.phrase = phrase;\n t.lang = lang;\n t.translation = translation;\n t.validity = validity;\n return t;\n }\n\n isExpired(): boolean {\n return DateTime.fromISO(this.validity) < DateTime.now();\n }\n}\n\nexport class TranslationDB extends Dexie {\n translations: Table<Translation, number>;\n\n constructor() {\n super('RpxTranslations');\n this.version(1).stores({\n translations: '++id, [phrase+lang]'\n });\n this.translations.mapToClass(Translation);\n }\n}\n\nexport const db = new TranslationDB();\n","export const matchCase = (str1: string, str2: string) => {\n if (str1.length === 0 || str2.length === 0) {\n return str2;\n }\n\n if (str1.charAt(0).toUpperCase() === str1.charAt(0)) {\n return `${str2.charAt(0).toUpperCase()}${str2.slice(1)}`;\n }\n return str2.toLowerCase();\n};\n","import { Replacements } from '../../rpx-translation.service';\n\nexport const replacePlaceholders = (input: string, replacements: Replacements) => {\n Object.keys(replacements).forEach((key) => {\n // Ideally use replaceAll here, but that isn't fully compatible with targeted browsers and packaging yet\n const search = `%${key}%`;\n while (input.indexOf(search) !== -1) {\n input = input.replace(search, replacements[key]);\n }\n });\n\n return input;\n};\n\n// Helper method to split the phrase into components, preserving placeholders and text separately\nexport const splitPhraseIntoComponents = (phrase: string, replacements: Record<string, string>): string[] => {\n const result: string[] = [];\n const placeholders = Object.keys(replacements).map((key) => `%${key}%`);\n phrase = phrase.trim();\n\n // Regular expression to match all placeholders in the phrase\n const placeholderRegex = new RegExp(placeholders.join('|'), 'g');\n\n let lastIndex = 0;\n\n // Helper function to split text into spaces and content\n const splitTextIntoComponents = (text: string): string[] => {\n const components: string[] = [];\n const trimmed = text.trim();\n\n if (text.startsWith(' ')) {\n components.push(' ');\n } // Leading space\n if (trimmed) {\n components.push(trimmed);\n } // Content (if any)\n if (text.endsWith(' ')) {\n components.push(' ');\n } // Trailing space\n\n return components;\n };\n\n // Process the phrase by matching placeholders\n phrase.replace(placeholderRegex, (placeholder, offset) => {\n if (offset > lastIndex) {\n // Add text before the placeholder\n result.push(...splitTextIntoComponents(phrase.slice(lastIndex, offset)));\n }\n\n // Add the replacement for the placeholder\n const replacementKey = placeholder.slice(1, -1);\n const replacement = replacements[replacementKey]?.trim();\n if (replacement) {\n result.push(replacement);\n }\n\n lastIndex = offset + placeholder.length; // Update lastIndex\n return ''; // Required by `replace`, but not used here\n });\n\n // Add any remaining text after the last match\n if (lastIndex < phrase.length) {\n result.push(...splitTextIntoComponents(phrase.slice(lastIndex)));\n }\n\n return result;\n};\n\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { liveQuery } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { BehaviorSubject, combineLatest, from, Observable, of, Subscription, timer } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { db, Translation } from './db';\nimport { matchCase } from './helpers/match-case/match-case.helper';\nimport { splitPhraseIntoComponents } from './helpers/replace-placeholders/replace-placeholders.helper';\nimport { TranslatedData } from './models/translated-data.model';\nimport { RpxLanguage, YesOrNoValue } from './rpx-language.enum';\nimport { RpxTranslationConfig } from './rpx-translation.config';\n\ninterface TranslationsDTO {\n translations: { [from: string]: string | TranslatedData };\n}\n\nexport type Replacements = { [key: string]: string };\n\n@Injectable()\nexport class RpxTranslationService {\n private currentLanguage: RpxLanguage = 'en';\n private languageKey = 'exui-preferred-language';\n\n private phrases: { [phrase: string]: BehaviorSubject<TranslatedData> } = {};\n private observables: { [phrase: string]: Observable<TranslatedData> } = {};\n private requesting: { [lang: string]: string[] } = {};\n private requestTimerSubscription: Subscription | null;\n private languageSource: BehaviorSubject<RpxLanguage> = new BehaviorSubject<RpxLanguage>(this.currentLanguage);\n public language$: Observable<RpxLanguage>;\n\n public get language(): RpxLanguage {\n return this.currentLanguage;\n }\n\n public set language(lang: RpxLanguage) {\n if (lang !== this.currentLanguage) {\n this.currentLanguage = lang;\n this.persistLanguage();\n this.languageSource.next(lang);\n Object.keys(this.phrases).forEach((phrase) => this.translate(phrase));\n }\n }\n\n constructor(\n private config: RpxTranslationConfig,\n private http: HttpClient\n ) {\n const persistedLanguage = this.getPersistedLanguage();\n if (persistedLanguage) {\n this.language = persistedLanguage;\n } else {\n // no language persisted yet, save default\n this.persistLanguage();\n }\n this.language$ = this.languageSource.asObservable();\n }\n\n public getTranslation$(phrase: string): Observable<string> {\n return this.getTranslatedData(phrase).pipe(\n map((t) => t.translation)\n );\n }\n\n public getTranslationWithReplacements$(phrase: string, replacements: Replacements): Observable<string> {\n // Split the phrase into components first based on replacements\n const components = splitPhraseIntoComponents(phrase, replacements);\n\n // Translate each component individually using getTranslatedData and then combine them\n const translatedComponents$ = components.map((component) => this.getTranslatedData(component).pipe(\n map((translatedData) => translatedData.translation) // Extract the translated string\n ));\n\n return combineLatest(translatedComponents$).pipe(\n map((values: string[]) => values.join('')) // Join the strings without any separator\n );\n }\n\n public getTranslationWithYesOrNo$(phrase: string, yesOrNoValue: string): Observable<string> {\n const isYes = yesOrNoValue?.toLowerCase() === YesOrNoValue.YES.toLowerCase();\n\n return this.getTranslatedData(phrase).pipe(map((translatedData: TranslatedData) => {\n const yesOrNoTranslated = isYes ? (translatedData.yes || yesOrNoValue)\n : (translatedData.no || yesOrNoValue);\n return matchCase(yesOrNoValue!, yesOrNoTranslated);\n }\n ));\n }\n\n private getTranslatedData(phrase: string): Observable<TranslatedData> {\n if (this.observables.hasOwnProperty(phrase)) {\n return this.observables[phrase];\n }\n\n return this.translate(phrase);\n }\n\n private translate(phrase: string): Observable<TranslatedData> {\n const lang = this.language;\n if (!this.phrases.hasOwnProperty(phrase)) {\n this.phrases[phrase] = new BehaviorSubject<TranslatedData>({ translation: phrase });\n this.observables[phrase] = this.phrases[phrase].asObservable();\n }\n\n if (lang === 'en') {\n this.phrases[phrase].next({ translation: phrase });\n } else {\n from(liveQuery(() => db.translations.where('[phrase+lang]').equals([phrase, lang]).first())).pipe(\n tap((t) => {\n if (t && !t.isExpired()) {\n this.phrases[phrase].next(t.translation);\n } else {\n if (t) {\n // expired, clean up DB\n db.translations.delete(t.id!);\n }\n this.phrases[phrase].next({\n translation: `${phrase} [Translation in progress]`,\n yes: 'Yes [Translation in progress]',\n no: 'No [Translation in progress]'\n });\n this.load(phrase, lang);\n }\n }),\n ).subscribe(() => ({}));\n }\n\n return this.observables[phrase];\n }\n\n private load(phrase: string, lang: RpxLanguage): void {\n if (lang === 'en') {\n this.phrases[phrase].next({\n translation: phrase,\n yes: 'Yes',\n no: 'No'\n });\n return;\n }\n\n if (!this.requesting.hasOwnProperty(lang)) {\n this.requesting[lang] = [];\n }\n\n if (this.requesting[lang].indexOf(phrase) !== -1) {\n return;\n }\n\n // Prevent making a API call with empty array of phrase\n if (phrase.length === 0) {\n return;\n }\n\n this.requesting[lang].push(phrase);\n\n if (this.requestTimerSubscription) {\n this.requestTimerSubscription.unsubscribe();\n }\n\n this.requestTimerSubscription = timer(this.config.debounceTimeMs).subscribe(() => {\n const url = this.config.baseUrl + `/${lang}`;\n const s = this.http.post<TranslationsDTO>(url,\n {\n phrases: this.requesting[lang]\n }\n )\n .pipe(\n map((t) => t.translations),\n map((translations) => {\n const translatedData: { [from: string]: TranslatedData } = {};\n\n Object.keys(translations).forEach((p) => {\n if (typeof(translations[p]) === 'string') {\n translatedData[p] = { translation: translations[p] as string };\n } else {\n translatedData[p] = translations[p] as TranslatedData;\n }\n });\n\n return translatedData;\n }),\n catchError(() => {\n const translations: { [from: string]: TranslatedData } = {};\n this.requesting[lang].forEach((p) => (\n translations[p] = this.config.testMode ? { translation: `[Test translation for ${p}]` } : { translation: p })\n );\n return of(translations);\n })\n ).subscribe((translations: { [from: string]: TranslatedData }) => {\n const toAdd: Translation[] = [];\n Object.keys(translations).forEach((p) => {\n toAdd.push(Translation.create(p, lang, translations[p], DateTime.now().plus(this.config.validity).toISO()));\n this.phrases[p].next(translations[p]);\n });\n db.translations.bulkAdd(toAdd);\n this.requesting[lang] = [];\n this.requestTimerSubscription?.unsubscribe();\n this.requestTimerSubscription = null;\n s.unsubscribe();\n });\n });\n }\n\n private persistLanguage(): void {\n document.cookie = `${this.languageKey}=${this.currentLanguage};`;\n }\n\n private getPersistedLanguage(): RpxLanguage {\n return document.cookie.split(';').find((cookie) => cookie.trim().startsWith(this.languageKey + '='))?.split('=')[1].trim() as RpxLanguage;\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, Injector, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Replacements, RpxTranslationService } from './rpx-translation.service';\n\n@Pipe({\n name: 'rpxTranslate',\n pure: false\n})\nexport class RpxTranslatePipe implements PipeTransform, OnDestroy {\n private asyncPipe: AsyncPipe;\n\n constructor(\n private translationService: RpxTranslationService,\n private injector: Injector\n ) {\n this.asyncPipe = new AsyncPipe(injector.get(ChangeDetectorRef));\n }\n\n public transform<T = string>(value: T, replacements?: Replacements | null, yesOrNoValue?: string): T | null {\n if (value && typeof value === 'string' && value.toString().trim()) {\n let o: Observable<string>;\n if (replacements) {\n o = this.translationService.getTranslationWithReplacements$(value, replacements);\n } else if (yesOrNoValue) {\n o = this.translationService.getTranslationWithYesOrNo$(value, yesOrNoValue);\n } else {\n o = this.translationService.getTranslation$(value);\n }\n\n const ret = this.asyncPipe.transform<string>(o);\n return ret as unknown as T;\n }\n\n return null;\n }\n\n public ngOnDestroy(): void {\n this.asyncPipe.ngOnDestroy();\n }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RpxTranslatePipe } from './rpx-translate.pipe';\nimport { RpxTranslationConfig } from './rpx-translation.config';\nimport { RpxTranslationService } from './rpx-translation.service';\n\n@NgModule({\n declarations: [RpxTranslatePipe],\n imports: [HttpClientModule],\n exports: [RpxTranslatePipe]\n})\nexport class RpxTranslationModule {\n public static forRoot(config: RpxTranslationConfig): ModuleWithProviders<RpxTranslationModule> {\n return {\n ngModule: RpxTranslationModule,\n providers: [\n {\n provide: RpxTranslationConfig, useValue: config\n },\n RpxTranslationService\n ]\n };\n }\n\n public static forChild(): ModuleWithProviders<RpxTranslationModule> {\n return {\n ngModule: RpxTranslationModule\n };\n }\n}\n","/*\n * Public API Surface of rpx-translation\n */\n\nexport * from './lib/rpx-language.enum';\nexport * from './lib/rpx-translation.config';\nexport * from './lib/rpx-translation.service';\nexport * from './lib/rpx-translate.pipe';\nexport * from './lib/rpx-translation.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RpxTranslationConfig","i1.RpxTranslationService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rpx-xui-translation.mjs","sources":["../../../projects/rpx-xui-translation/src/lib/rpx-language.enum.ts","../../../projects/rpx-xui-translation/src/lib/rpx-translation.config.ts","../../../projects/rpx-xui-translation/src/lib/db.ts","../../../projects/rpx-xui-translation/src/lib/helpers/match-case/match-case.helper.ts","../../../projects/rpx-xui-translation/src/lib/helpers/replace-placeholders/replace-placeholders.helper.ts","../../../projects/rpx-xui-translation/src/lib/rpx-translation.service.ts","../../../projects/rpx-xui-translation/src/lib/rpx-translate.pipe.ts","../../../projects/rpx-xui-translation/src/lib/rpx-translation.module.ts","../../../projects/rpx-xui-translation/src/public-api.ts","../../../projects/rpx-xui-translation/src/rpx-xui-translation.ts"],"sourcesContent":["export type RpxLanguage = 'en' | 'cy';\nexport enum YesOrNoValue {\n YES = 'Yes',\n NO = 'No',\n}\n","export type ValidityDurationSpec = {\n years?: number;\n quarters?: number;\n months?: number;\n weeks?: number;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n};\n\nexport class RpxTranslationConfig {\n validity: ValidityDurationSpec;\n baseUrl: string;\n\n debounceTimeMs = 300;\n testMode = false;\n}\n","import Dexie, { Table } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { RpxLanguage } from './rpx-language.enum';\nimport { TranslatedData } from './models/translated-data.model';\n\nexport class Translation {\n id?: number;\n phrase: string;\n lang: RpxLanguage;\n translation: TranslatedData;\n validity: string;\n\n public static create(phrase: string, lang: RpxLanguage, translation: TranslatedData, validity: string): Translation {\n const t = new Translation();\n t.phrase = phrase;\n t.lang = lang;\n t.translation = translation;\n t.validity = validity;\n return t;\n }\n\n isExpired(): boolean {\n return DateTime.fromISO(this.validity) < DateTime.now();\n }\n}\n\nexport class TranslationDB extends Dexie {\n translations: Table<Translation, number>;\n\n constructor() {\n super('RpxTranslations');\n this.version(1).stores({\n translations: '++id, [phrase+lang]'\n });\n this.translations.mapToClass(Translation);\n }\n}\n\nexport const db = new TranslationDB();\n","export const matchCase = (str1: string, str2: string) => {\n if (str1.length === 0 || str2.length === 0) {\n return str2;\n }\n\n if (str1.charAt(0).toUpperCase() === str1.charAt(0)) {\n return `${str2.charAt(0).toUpperCase()}${str2.slice(1)}`;\n }\n return str2.toLowerCase();\n};\n","import { Replacements } from '../../rpx-translation.service';\n\nexport const replacePlaceholders = (input: string, replacements: Replacements) => {\n Object.keys(replacements).forEach((key) => {\n // Ideally use replaceAll here, but that isn't fully compatible with targeted browsers and packaging yet\n const search = `%${key}%`;\n while (input.indexOf(search) !== -1) {\n input = input.replace(search, replacements[key]);\n }\n });\n\n return input;\n};\n\n// Helper method to split the phrase into components, preserving placeholders and text separately\nexport const splitPhraseIntoComponents = (phrase: string, replacements: Record<string, string>): string[] => {\n const result: string[] = [];\n const placeholders = Object.keys(replacements).map((key) => `%${key}%`);\n phrase = phrase.trim();\n\n // Regular expression to match all placeholders in the phrase\n const placeholderRegex = new RegExp(placeholders.join('|'), 'g');\n\n let lastIndex = 0;\n\n // Helper function to split text into spaces and content\n const splitTextIntoComponents = (text: string): string[] => {\n const components: string[] = [];\n const trimmed = text.trim();\n\n if (text.startsWith(' ')) {\n components.push(' ');\n } // Leading space\n if (trimmed) {\n components.push(trimmed);\n } // Content (if any)\n if (text.endsWith(' ')) {\n components.push(' ');\n } // Trailing space\n\n return components;\n };\n\n // Process the phrase by matching placeholders\n phrase.replace(placeholderRegex, (placeholder, offset) => {\n if (offset > lastIndex) {\n // Add text before the placeholder\n result.push(...splitTextIntoComponents(phrase.slice(lastIndex, offset)));\n }\n\n // Add the replacement for the placeholder\n const replacementKey = placeholder.slice(1, -1);\n const replacement = replacements[replacementKey]?.trim();\n if (replacement) {\n result.push(replacement);\n }\n\n lastIndex = offset + placeholder.length; // Update lastIndex\n return ''; // Required by `replace`, but not used here\n });\n\n // Add any remaining text after the last match\n if (lastIndex < phrase.length) {\n result.push(...splitTextIntoComponents(phrase.slice(lastIndex)));\n }\n\n return result;\n};\n\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { liveQuery } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { BehaviorSubject, combineLatest, from, Observable, of, Subscription, timer } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { db, Translation } from './db';\nimport { matchCase } from './helpers/match-case/match-case.helper';\nimport { splitPhraseIntoComponents } from './helpers/replace-placeholders/replace-placeholders.helper';\nimport { TranslatedData } from './models/translated-data.model';\nimport { RpxLanguage, YesOrNoValue } from './rpx-language.enum';\nimport { RpxTranslationConfig } from './rpx-translation.config';\n\ninterface TranslationsDTO {\n translations: { [from: string]: string | TranslatedData };\n}\n\nexport type Replacements = { [key: string]: string };\n\n@Injectable()\nexport class RpxTranslationService {\n private currentLanguage: RpxLanguage = 'en';\n private languageKey = 'exui-preferred-language';\n\n private phrases: { [phrase: string]: BehaviorSubject<TranslatedData> } = {};\n private observables: { [phrase: string]: Observable<TranslatedData> } = {};\n private requesting: { [lang: string]: string[] } = {};\n private requestTimerSubscription: Subscription | null;\n private languageSource: BehaviorSubject<RpxLanguage> = new BehaviorSubject<RpxLanguage>(this.currentLanguage);\n public language$: Observable<RpxLanguage>;\n\n public get language(): RpxLanguage {\n return this.currentLanguage;\n }\n\n public set language(lang: RpxLanguage) {\n if (lang !== this.currentLanguage) {\n this.currentLanguage = lang;\n this.persistLanguage();\n this.languageSource.next(lang);\n Object.keys(this.phrases).forEach((phrase) => this.translate(phrase));\n }\n }\n\n constructor(\n private config: RpxTranslationConfig,\n private http: HttpClient\n ) {\n const persistedLanguage = this.getPersistedLanguage();\n if (persistedLanguage) {\n this.language = persistedLanguage;\n } else {\n // no language persisted yet, save default\n this.persistLanguage();\n }\n this.language$ = this.languageSource.asObservable();\n }\n\n public getTranslation$(phrase: string): Observable<string> {\n return this.getTranslatedData(phrase).pipe(\n map((t) => t.translation)\n );\n }\n\n public getTranslationWithReplacements$(phrase: string, replacements: Replacements): Observable<string> {\n // Split the phrase into components first based on replacements\n const components = splitPhraseIntoComponents(phrase, replacements);\n\n // Translate each component individually using getTranslatedData and then combine them\n const translatedComponents$ = components.map((component) => this.getTranslatedData(component).pipe(\n map((translatedData) => translatedData.translation) // Extract the translated string\n ));\n\n return combineLatest(translatedComponents$).pipe(\n map((values: string[]) => values.join('')) // Join the strings without any separator\n );\n }\n\n public getTranslationWithYesOrNo$(phrase: string, yesOrNoValue: string): Observable<string> {\n const isYes = yesOrNoValue?.toLowerCase() === YesOrNoValue.YES.toLowerCase();\n\n return this.getTranslatedData(phrase).pipe(map((translatedData: TranslatedData) => {\n const yesOrNoTranslated = isYes ? (translatedData.yes || yesOrNoValue)\n : (translatedData.no || yesOrNoValue);\n return matchCase(yesOrNoValue!, yesOrNoTranslated);\n }\n ));\n }\n\n private getTranslatedData(phrase: string): Observable<TranslatedData> {\n if (this.observables.hasOwnProperty(phrase)) {\n return this.observables[phrase];\n }\n\n return this.translate(phrase);\n }\n\n private translate(phrase: string): Observable<TranslatedData> {\n const lang = this.language;\n if (!this.phrases.hasOwnProperty(phrase)) {\n this.phrases[phrase] = new BehaviorSubject<TranslatedData>({ translation: phrase });\n this.observables[phrase] = this.phrases[phrase].asObservable();\n }\n\n if (lang === 'en') {\n this.phrases[phrase].next({ translation: phrase });\n } else {\n from(liveQuery(() => db.translations.where('[phrase+lang]').equals([phrase, lang]).first())).pipe(\n tap((t) => {\n if (t && !t.isExpired()) {\n this.phrases[phrase].next(t.translation);\n } else {\n if (t) {\n // expired, clean up DB\n db.translations.delete(t.id!);\n }\n this.phrases[phrase].next({\n translation: `${phrase} [Translation in progress]`,\n yes: 'Yes [Translation in progress]',\n no: 'No [Translation in progress]'\n });\n this.load(phrase, lang);\n }\n }),\n ).subscribe(() => ({}));\n }\n\n return this.observables[phrase];\n }\n\n private load(phrase: string, lang: RpxLanguage): void {\n if (lang === 'en') {\n this.phrases[phrase].next({\n translation: phrase,\n yes: 'Yes',\n no: 'No'\n });\n return;\n }\n\n if (!this.requesting.hasOwnProperty(lang)) {\n this.requesting[lang] = [];\n }\n\n if (this.requesting[lang].indexOf(phrase) !== -1) {\n return;\n }\n\n // Prevent making a API call with empty array of phrase\n if (phrase.length === 0) {\n return;\n }\n\n this.requesting[lang].push(phrase);\n\n if (this.requestTimerSubscription) {\n this.requestTimerSubscription.unsubscribe();\n }\n\n this.requestTimerSubscription = timer(this.config.debounceTimeMs).subscribe(() => {\n const url = this.config.baseUrl + `/${lang}`;\n const s = this.http.post<TranslationsDTO>(url,\n {\n phrases: this.requesting[lang]\n }\n )\n .pipe(\n map((t) => t.translations),\n map((translations) => {\n const translatedData: { [from: string]: TranslatedData } = {};\n\n Object.keys(translations).forEach((p) => {\n if (typeof(translations[p]) === 'string') {\n translatedData[p] = { translation: translations[p] as string };\n } else {\n translatedData[p] = translations[p] as TranslatedData;\n }\n });\n\n return translatedData;\n }),\n catchError(() => {\n const translations: { [from: string]: TranslatedData } = {};\n this.requesting[lang].forEach((p) => (\n translations[p] = this.config.testMode ? { translation: `[Test translation for ${p}]` } : { translation: p })\n );\n return of(translations);\n })\n ).subscribe((translations: { [from: string]: TranslatedData }) => {\n const toAdd: Translation[] = [];\n Object.keys(translations).forEach((p) => {\n toAdd.push(Translation.create(p, lang, translations[p], DateTime.now().plus(this.config.validity).toISO()));\n this.phrases[p].next(translations[p]);\n });\n db.translations.bulkAdd(toAdd);\n this.requesting[lang] = [];\n this.requestTimerSubscription?.unsubscribe();\n this.requestTimerSubscription = null;\n s.unsubscribe();\n });\n });\n }\n\n private persistLanguage(): void {\n document.cookie = `${this.languageKey}=${this.currentLanguage};`;\n }\n\n private getPersistedLanguage(): RpxLanguage {\n return document.cookie.split(';').find((cookie) => cookie.trim().startsWith(this.languageKey + '='))?.split('=')[1].trim() as RpxLanguage;\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, Injector, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Replacements, RpxTranslationService } from './rpx-translation.service';\n\n@Pipe({\n name: 'rpxTranslate',\n pure: false\n})\nexport class RpxTranslatePipe implements PipeTransform, OnDestroy {\n private asyncPipe: AsyncPipe;\n\n constructor(\n private translationService: RpxTranslationService,\n private injector: Injector\n ) {\n this.asyncPipe = new AsyncPipe(injector.get(ChangeDetectorRef));\n }\n\n public transform<T = string>(value: T, replacements?: Replacements | null, yesOrNoValue?: string): T | null {\n if (value && typeof value === 'string' && value.toString().trim()) {\n let o: Observable<string>;\n if (replacements) {\n o = this.translationService.getTranslationWithReplacements$(value, replacements);\n } else if (yesOrNoValue) {\n o = this.translationService.getTranslationWithYesOrNo$(value, yesOrNoValue);\n } else {\n o = this.translationService.getTranslation$(value);\n }\n\n const ret = this.asyncPipe.transform<string>(o);\n return ret as unknown as T;\n }\n\n return null;\n }\n\n public ngOnDestroy(): void {\n this.asyncPipe.ngOnDestroy();\n }\n}\n","import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RpxTranslatePipe } from './rpx-translate.pipe';\nimport { RpxTranslationConfig } from './rpx-translation.config';\nimport { RpxTranslationService } from './rpx-translation.service';\n\n@NgModule({ declarations: [RpxTranslatePipe],\n exports: [RpxTranslatePipe], imports: [], providers: [provideHttpClient(withInterceptorsFromDi())] })\nexport class RpxTranslationModule {\n public static forRoot(config: RpxTranslationConfig): ModuleWithProviders<RpxTranslationModule> {\n return {\n ngModule: RpxTranslationModule,\n providers: [\n {\n provide: RpxTranslationConfig, useValue: config\n },\n RpxTranslationService\n ]\n };\n }\n\n public static forChild(): ModuleWithProviders<RpxTranslationModule> {\n return {\n ngModule: RpxTranslationModule\n };\n }\n}\n","/*\n * Public API Surface of rpx-translation\n */\n\nexport * from './lib/rpx-language.enum';\nexport * from './lib/rpx-translation.config';\nexport * from './lib/rpx-translation.service';\nexport * from './lib/rpx-translate.pipe';\nexport * from './lib/rpx-translation.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RpxTranslationConfig","i1.RpxTranslationService"],"mappings":"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"}
|
|
@@ -2,11 +2,10 @@ import { ModuleWithProviders } from '@angular/core';
|
|
|
2
2
|
import { RpxTranslationConfig } from './rpx-translation.config';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "./rpx-translate.pipe";
|
|
5
|
-
import * as i2 from "@angular/common/http";
|
|
6
5
|
export declare class RpxTranslationModule {
|
|
7
6
|
static forRoot(config: RpxTranslationConfig): ModuleWithProviders<RpxTranslationModule>;
|
|
8
7
|
static forChild(): ModuleWithProviders<RpxTranslationModule>;
|
|
9
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<RpxTranslationModule, never>;
|
|
10
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<RpxTranslationModule, [typeof i1.RpxTranslatePipe],
|
|
9
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<RpxTranslationModule, [typeof i1.RpxTranslatePipe], never, [typeof i1.RpxTranslatePipe]>;
|
|
11
10
|
static ɵinj: i0.ɵɵInjectorDeclaration<RpxTranslationModule>;
|
|
12
11
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rpx-xui-translation",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^
|
|
6
|
-
"@angular/core": "^
|
|
5
|
+
"@angular/common": "^18.2.13",
|
|
6
|
+
"@angular/core": "^18.2.13"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"dexie": "^3.2.2",
|