@ui5/webcomponents-ngx 0.2.0-rc.1 → 0.2.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/i18n/i18n.module.mjs +7 -32
- package/esm2022/i18n/i18n.pipe.mjs +4 -3
- package/esm2022/i18n/i18n.providers.mjs +38 -0
- package/esm2022/i18n/index.mjs +2 -1
- package/fesm2022/ui5-webcomponents-ngx-i18n.mjs +42 -30
- package/fesm2022/ui5-webcomponents-ngx-i18n.mjs.map +1 -1
- package/i18n/i18n.module.d.ts +1 -1
- package/i18n/i18n.pipe.d.ts +1 -1
- package/i18n/i18n.providers.d.ts +3 -0
- package/i18n/index.d.ts +1 -0
- package/package.json +2 -2
- package/schematics/add-i18n/index.d.ts +8 -0
- package/schematics/add-i18n/index.js +165 -0
- package/schematics/add-i18n/schema.json +26 -0
- package/schematics/add-theming/index.js +3 -11
- package/schematics/collection.json +5 -0
- package/schematics/get-i18n-config.d.ts +4 -0
- package/schematics/get-i18n-config.js +32 -0
- package/schematics/ng-add/index.d.ts +3 -3
- package/schematics/ng-add/index.js +5 -2
- package/schematics/ng-add/schema.d.ts +5 -0
- package/schematics/ng-add/schema.js +2 -0
- package/schematics/utils/get-project-definition.d.ts +2 -0
- package/schematics/utils/get-project-definition.js +12 -0
- package/schematics/utils/get-project-target.d.ts +2 -0
- package/schematics/utils/get-project-target.js +12 -0
- package/ui5-webcomponents-ngx-v0.2.0.tgz +0 -0
- package/ui5-webcomponents-ngx-v0.2.0-rc.1.tgz +0 -0
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { Inject, NgModule } from "@angular/core";
|
|
2
|
-
import { setFetchDefaultLanguage, setLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
|
|
3
2
|
import { I18nPipe } from "./i18n.pipe";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { resolveTranslationsProvider } from "./i18n.utils";
|
|
3
|
+
import { I18N_ROOT_CONFIG } from "./i18n.tokens";
|
|
4
|
+
import { i18nChildProviders, i18nRootProviders } from "./i18n.providers";
|
|
7
5
|
import * as i0 from "@angular/core";
|
|
8
|
-
let childIds = 0;
|
|
9
6
|
class Ui5I18nModule {
|
|
10
7
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
11
8
|
constructor(config) {
|
|
@@ -15,24 +12,7 @@ class Ui5I18nModule {
|
|
|
15
12
|
return {
|
|
16
13
|
ngModule: Ui5I18nModule,
|
|
17
14
|
providers: [
|
|
18
|
-
|
|
19
|
-
provide: I18N_ROOT_CONFIG,
|
|
20
|
-
useFactory: () => {
|
|
21
|
-
if (config.language) {
|
|
22
|
-
setLanguage(config.language);
|
|
23
|
-
}
|
|
24
|
-
if (config.fetchDefaultLanguage) {
|
|
25
|
-
setFetchDefaultLanguage(config.fetchDefaultLanguage);
|
|
26
|
-
}
|
|
27
|
-
return config;
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
provide: I18N_NAMESPACE,
|
|
32
|
-
useValue: config.bundle?.name || 'root_i18n'
|
|
33
|
-
},
|
|
34
|
-
resolveTranslationsProvider(config.bundle?.translations),
|
|
35
|
-
I18nService
|
|
15
|
+
i18nRootProviders(config)
|
|
36
16
|
]
|
|
37
17
|
};
|
|
38
18
|
}
|
|
@@ -40,28 +20,23 @@ class Ui5I18nModule {
|
|
|
40
20
|
return {
|
|
41
21
|
ngModule: Ui5I18nModule,
|
|
42
22
|
providers: [
|
|
43
|
-
|
|
44
|
-
provide: I18N_NAMESPACE,
|
|
45
|
-
useValue: config?.name || ++childIds + '_i18n'
|
|
46
|
-
},
|
|
47
|
-
resolveTranslationsProvider(config?.translations),
|
|
48
|
-
I18nService
|
|
23
|
+
i18nChildProviders(config)
|
|
49
24
|
]
|
|
50
25
|
};
|
|
51
26
|
}
|
|
52
27
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ui5I18nModule, deps: [{ token: I18N_ROOT_CONFIG }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
53
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: Ui5I18nModule,
|
|
28
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: Ui5I18nModule, imports: [I18nPipe], exports: [I18nPipe] }); }
|
|
54
29
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ui5I18nModule }); }
|
|
55
30
|
}
|
|
56
31
|
export { Ui5I18nModule };
|
|
57
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ui5I18nModule, decorators: [{
|
|
58
33
|
type: NgModule,
|
|
59
34
|
args: [{
|
|
60
|
-
|
|
35
|
+
imports: [I18nPipe],
|
|
61
36
|
exports: [I18nPipe]
|
|
62
37
|
}]
|
|
63
38
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
64
39
|
type: Inject,
|
|
65
40
|
args: [I18N_ROOT_CONFIG]
|
|
66
41
|
}] }]; } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpNS1hbmd1bGFyL2kxOG4vaTE4bi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUd6RSxNQUlhLGFBQWE7SUFDeEIsZ0VBQWdFO0lBQ2hFLFlBQThDLE1BQWtCO1FBQWxCLFdBQU0sR0FBTixNQUFNLENBQVk7SUFDaEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBcUIsRUFBRTtRQUVwQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGFBQWE7WUFDdkIsU0FBUyxFQUFFO2dCQUNULGlCQUFpQixDQUFDLE1BQU0sQ0FBQzthQUMxQjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUErQixFQUFFO1FBQy9DLE9BQU87WUFDTCxRQUFRLEVBQUUsYUFBYTtZQUN2QixTQUFTLEVBQUU7Z0JBQ1Qsa0JBQWtCLENBQUMsTUFBTSxDQUFDO2FBQzNCO1NBQ0YsQ0FBQTtJQUNILENBQUM7OEdBdEJVLGFBQWEsa0JBRUosZ0JBQWdCOytHQUZ6QixhQUFhLFlBSGQsUUFBUSxhQUNSLFFBQVE7K0dBRVAsYUFBYTs7U0FBYixhQUFhOzJGQUFiLGFBQWE7a0JBSnpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7aUJBQ3BCOzswQkFHYyxNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSTE4blBpcGUgfSBmcm9tIFwiLi9pMThuLnBpcGVcIjtcbmltcG9ydCB7IEkxOG5Db25maWcgfSBmcm9tIFwiLi9pMThuLnR5cGVzXCI7XG5pbXBvcnQgeyBJMThOX1JPT1RfQ09ORklHIH0gZnJvbSBcIi4vaTE4bi50b2tlbnNcIjtcbmltcG9ydCB7IGkxOG5DaGlsZFByb3ZpZGVycywgaTE4blJvb3RQcm92aWRlcnMgfSBmcm9tIFwiLi9pMThuLnByb3ZpZGVyc1wiO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtJMThuUGlwZV0sXG4gIGV4cG9ydHM6IFtJMThuUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgVWk1STE4bk1vZHVsZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgY29uc3RydWN0b3IoQEluamVjdChJMThOX1JPT1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogSTE4bkNvbmZpZykge1xuICB9XG5cbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBJMThuQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFVpNUkxOG5Nb2R1bGU+IHtcblxuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogVWk1STE4bk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBpMThuUm9vdFByb3ZpZGVycyhjb25maWcpXG4gICAgICBdXG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZvckNoaWxkKGNvbmZpZzogSTE4bkNvbmZpZ1snYnVuZGxlJ10gPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8VWk1STE4bk1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogVWk1STE4bk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBpMThuQ2hpbGRQcm92aWRlcnMoY29uZmlnKVxuICAgICAgXVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -33,14 +33,15 @@ class I18nPipe {
|
|
|
33
33
|
this._destroyed$.complete();
|
|
34
34
|
}
|
|
35
35
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: I18nPipe, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.I18nService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
36
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: I18nPipe, name: "ui5I18n", pure: false }); }
|
|
36
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: I18nPipe, isStandalone: true, name: "ui5I18n", pure: false }); }
|
|
37
37
|
}
|
|
38
38
|
export { I18nPipe };
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: I18nPipe, decorators: [{
|
|
40
40
|
type: Pipe,
|
|
41
41
|
args: [{
|
|
42
42
|
name: 'ui5I18n',
|
|
43
|
-
pure: false
|
|
43
|
+
pure: false,
|
|
44
|
+
standalone: true
|
|
44
45
|
}]
|
|
45
46
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.I18nService }]; } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aTUtYW5ndWxhci9pMThuL2kxOG4ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQWEsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLG9CQUFvQixFQUFFLE9BQU8sRUFBZ0IsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFFNUUsTUFLYSxRQUFRO0lBT25CLFlBQW9CLGlCQUFvQyxFQUNwQyxXQUF3QjtRQUR4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBUHBDLDBCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUUzQixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFNMUMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsR0FBRyxNQUFhO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hILElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDL0MsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUM7YUFDNUQsSUFBSSxDQUNILG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQzVCLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixDQUFDOzhHQXBDVSxRQUFROzRHQUFSLFFBQVE7O1NBQVIsUUFBUTsyRkFBUixRQUFRO2tCQUxwQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxTQUFTO29CQUNmLElBQUksRUFBRSxLQUFLO29CQUNYLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIE9uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7STE4blNlcnZpY2V9IGZyb20gXCIuL2kxOG4uc2VydmljZVwiO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWx9IGZyb20gXCJyeGpzXCI7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3VpNUkxOG4nLFxuICBwdXJlOiBmYWxzZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJMThuUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2xhc3RUcmFuc2xhdGlvblZhbHVlID0gJyc7XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2xhc3RWYWx1ZSE6IHN0cmluZztcbiAgcHJpdmF0ZSBfbGFzdFZhbHVlUGFyYW1zITogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlKSB7XG4gIH1cblxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgLi4ucGFyYW1zOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyYW1zQ2hhbmdlZCA9ICF0aGlzLl9sYXN0VmFsdWUgfHwgcGFyYW1zLnNvbWUoKHBhcmFtLCBpbmRleCkgPT4gcGFyYW0gIT09IHRoaXMuX2xhc3RWYWx1ZVBhcmFtc1tpbmRleF0pO1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbGFzdFZhbHVlICYmICFwYXJhbXNDaGFuZ2VkKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbGFzdFRyYW5zbGF0aW9uVmFsdWU7XG4gICAgfVxuICAgIHRoaXMuX2xhc3RWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX2xhc3RWYWx1ZVBhcmFtcyA9IHBhcmFtcztcbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5pMThuU2VydmljZS5nZXRUZXh0KHZhbHVlLCAuLi5wYXJhbXMpXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpXG4gICAgICApLnN1YnNjcmliZSgodGV4dCkgPT4ge1xuICAgICAgICB0aGlzLl9sYXN0VHJhbnNsYXRpb25WYWx1ZSA9IHRleHQ7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fbGFzdFRyYW5zbGF0aW9uVmFsdWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { setFetchDefaultLanguage, setLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
|
|
2
|
+
import { I18N_NAMESPACE, I18N_ROOT_CONFIG } from "./i18n.tokens";
|
|
3
|
+
import { resolveTranslationsProvider } from "./i18n.utils";
|
|
4
|
+
import { I18nService } from "./i18n.service";
|
|
5
|
+
let childIds = 0;
|
|
6
|
+
export function i18nRootProviders(config) {
|
|
7
|
+
return [
|
|
8
|
+
{
|
|
9
|
+
provide: I18N_ROOT_CONFIG,
|
|
10
|
+
useFactory: () => {
|
|
11
|
+
if (config.language) {
|
|
12
|
+
setLanguage(config.language);
|
|
13
|
+
}
|
|
14
|
+
if (config.fetchDefaultLanguage) {
|
|
15
|
+
setFetchDefaultLanguage(config.fetchDefaultLanguage);
|
|
16
|
+
}
|
|
17
|
+
return config;
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
provide: I18N_NAMESPACE,
|
|
22
|
+
useValue: config.bundle?.name || 'root_i18n'
|
|
23
|
+
},
|
|
24
|
+
resolveTranslationsProvider(config.bundle?.translations),
|
|
25
|
+
I18nService
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
export function i18nChildProviders(config) {
|
|
29
|
+
return [
|
|
30
|
+
{
|
|
31
|
+
provide: I18N_NAMESPACE,
|
|
32
|
+
useValue: config?.name || ++childIds + '_i18n'
|
|
33
|
+
},
|
|
34
|
+
resolveTranslationsProvider(config?.translations),
|
|
35
|
+
I18nService
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpNS1hbmd1bGFyL2kxOG4vaTE4bi5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDakIsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE1BQWtCO0lBQ2xELE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQkFDZixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCO2dCQUNELElBQUksTUFBTSxDQUFDLG9CQUFvQixFQUFFO29CQUMvQix1QkFBdUIsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztpQkFDdEQ7Z0JBQ0QsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztTQUNGO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsY0FBYztZQUN2QixRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksV0FBVztTQUM3QztRQUNELDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDO1FBQ3hELFdBQVc7S0FDWixDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUE0QjtJQUM3RCxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsY0FBYztZQUN2QixRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLFFBQVEsR0FBRyxPQUFPO1NBQy9DO1FBQ0QsMkJBQTJCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQztRQUNqRCxXQUFXO0tBQ1osQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZXRGZXRjaERlZmF1bHRMYW5ndWFnZSwgc2V0TGFuZ3VhZ2UgfSBmcm9tIFwiQHVpNS93ZWJjb21wb25lbnRzLWJhc2UvZGlzdC9jb25maWcvTGFuZ3VhZ2UuanNcIjtcbmltcG9ydCB7IEkxOG5Db25maWcgfSBmcm9tIFwiLi9pMThuLnR5cGVzXCI7XG5pbXBvcnQgeyBJMThOX05BTUVTUEFDRSwgSTE4Tl9ST09UX0NPTkZJRyB9IGZyb20gXCIuL2kxOG4udG9rZW5zXCI7XG5pbXBvcnQgeyByZXNvbHZlVHJhbnNsYXRpb25zUHJvdmlkZXIgfSBmcm9tIFwiLi9pMThuLnV0aWxzXCI7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gXCIuL2kxOG4uc2VydmljZVwiO1xuXG5sZXQgY2hpbGRJZHMgPSAwO1xuZXhwb3J0IGZ1bmN0aW9uIGkxOG5Sb290UHJvdmlkZXJzKGNvbmZpZzogSTE4bkNvbmZpZykge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEkxOE5fUk9PVF9DT05GSUcsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIGlmIChjb25maWcubGFuZ3VhZ2UpIHtcbiAgICAgICAgICBzZXRMYW5ndWFnZShjb25maWcubGFuZ3VhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcuZmV0Y2hEZWZhdWx0TGFuZ3VhZ2UpIHtcbiAgICAgICAgICBzZXRGZXRjaERlZmF1bHRMYW5ndWFnZShjb25maWcuZmV0Y2hEZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBJMThOX05BTUVTUEFDRSxcbiAgICAgIHVzZVZhbHVlOiBjb25maWcuYnVuZGxlPy5uYW1lIHx8ICdyb290X2kxOG4nXG4gICAgfSxcbiAgICByZXNvbHZlVHJhbnNsYXRpb25zUHJvdmlkZXIoY29uZmlnLmJ1bmRsZT8udHJhbnNsYXRpb25zKSxcbiAgICBJMThuU2VydmljZVxuICBdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpMThuQ2hpbGRQcm92aWRlcnMoY29uZmlnOiBJMThuQ29uZmlnWydidW5kbGUnXSkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEkxOE5fTkFNRVNQQUNFLFxuICAgICAgdXNlVmFsdWU6IGNvbmZpZz8ubmFtZSB8fCArK2NoaWxkSWRzICsgJ19pMThuJ1xuICAgIH0sXG4gICAgcmVzb2x2ZVRyYW5zbGF0aW9uc1Byb3ZpZGVyKGNvbmZpZz8udHJhbnNsYXRpb25zKSxcbiAgICBJMThuU2VydmljZVxuICBdXG59XG4iXX0=
|
package/esm2022/i18n/index.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './i18n.module';
|
|
2
2
|
export * from './i18n.service';
|
|
3
3
|
export * from './i18n.pipe';
|
|
4
|
-
|
|
4
|
+
export * from './i18n.providers';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpNS1hbmd1bGFyL2kxOG4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pMThuLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2kxOG4uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2kxOG4ucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2kxOG4ucHJvdmlkZXJzJztcbiJdfQ==
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, Injectable, Inject, Pipe, NgModule } from '@angular/core';
|
|
3
|
-
import { getLanguage, setLanguage, setFetchDefaultLanguage } from '@ui5/webcomponents-base/dist/config/Language.js';
|
|
4
3
|
import { registerI18nLoader, getI18nBundle } from '@ui5/webcomponents-base/dist/i18nBundle.js';
|
|
5
4
|
import parseProperties from '@ui5/webcomponents-base/dist/PropertiesFileFormat.js';
|
|
5
|
+
import { getLanguage, setLanguage, setFetchDefaultLanguage } from '@ui5/webcomponents-base/dist/config/Language.js';
|
|
6
6
|
import { BehaviorSubject, isObservable, firstValueFrom, from, filter, first, tap, switchMap, map, of, Subject, distinctUntilChanged, takeUntil } from 'rxjs';
|
|
7
7
|
|
|
8
8
|
const I18N_ROOT_CONFIG = new InjectionToken('rootI18nConfig');
|
|
@@ -107,13 +107,14 @@ class I18nPipe {
|
|
|
107
107
|
this._destroyed$.complete();
|
|
108
108
|
}
|
|
109
109
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: I18nPipe, deps: [{ token: i0.ChangeDetectorRef }, { token: I18nService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
110
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: I18nPipe, name: "ui5I18n", pure: false }); }
|
|
110
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: I18nPipe, isStandalone: true, name: "ui5I18n", pure: false }); }
|
|
111
111
|
}
|
|
112
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: I18nPipe, decorators: [{
|
|
113
113
|
type: Pipe,
|
|
114
114
|
args: [{
|
|
115
115
|
name: 'ui5I18n',
|
|
116
|
-
pure: false
|
|
116
|
+
pure: false,
|
|
117
|
+
standalone: true
|
|
117
118
|
}]
|
|
118
119
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: I18nService }]; } });
|
|
119
120
|
|
|
@@ -138,6 +139,39 @@ function resolveTranslationsProvider(translations) {
|
|
|
138
139
|
}
|
|
139
140
|
|
|
140
141
|
let childIds = 0;
|
|
142
|
+
function i18nRootProviders(config) {
|
|
143
|
+
return [
|
|
144
|
+
{
|
|
145
|
+
provide: I18N_ROOT_CONFIG,
|
|
146
|
+
useFactory: () => {
|
|
147
|
+
if (config.language) {
|
|
148
|
+
setLanguage(config.language);
|
|
149
|
+
}
|
|
150
|
+
if (config.fetchDefaultLanguage) {
|
|
151
|
+
setFetchDefaultLanguage(config.fetchDefaultLanguage);
|
|
152
|
+
}
|
|
153
|
+
return config;
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
provide: I18N_NAMESPACE,
|
|
158
|
+
useValue: config.bundle?.name || 'root_i18n'
|
|
159
|
+
},
|
|
160
|
+
resolveTranslationsProvider(config.bundle?.translations),
|
|
161
|
+
I18nService
|
|
162
|
+
];
|
|
163
|
+
}
|
|
164
|
+
function i18nChildProviders(config) {
|
|
165
|
+
return [
|
|
166
|
+
{
|
|
167
|
+
provide: I18N_NAMESPACE,
|
|
168
|
+
useValue: config?.name || ++childIds + '_i18n'
|
|
169
|
+
},
|
|
170
|
+
resolveTranslationsProvider(config?.translations),
|
|
171
|
+
I18nService
|
|
172
|
+
];
|
|
173
|
+
}
|
|
174
|
+
|
|
141
175
|
class Ui5I18nModule {
|
|
142
176
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
143
177
|
constructor(config) {
|
|
@@ -147,24 +181,7 @@ class Ui5I18nModule {
|
|
|
147
181
|
return {
|
|
148
182
|
ngModule: Ui5I18nModule,
|
|
149
183
|
providers: [
|
|
150
|
-
|
|
151
|
-
provide: I18N_ROOT_CONFIG,
|
|
152
|
-
useFactory: () => {
|
|
153
|
-
if (config.language) {
|
|
154
|
-
setLanguage(config.language);
|
|
155
|
-
}
|
|
156
|
-
if (config.fetchDefaultLanguage) {
|
|
157
|
-
setFetchDefaultLanguage(config.fetchDefaultLanguage);
|
|
158
|
-
}
|
|
159
|
-
return config;
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
provide: I18N_NAMESPACE,
|
|
164
|
-
useValue: config.bundle?.name || 'root_i18n'
|
|
165
|
-
},
|
|
166
|
-
resolveTranslationsProvider(config.bundle?.translations),
|
|
167
|
-
I18nService
|
|
184
|
+
i18nRootProviders(config)
|
|
168
185
|
]
|
|
169
186
|
};
|
|
170
187
|
}
|
|
@@ -172,23 +189,18 @@ class Ui5I18nModule {
|
|
|
172
189
|
return {
|
|
173
190
|
ngModule: Ui5I18nModule,
|
|
174
191
|
providers: [
|
|
175
|
-
|
|
176
|
-
provide: I18N_NAMESPACE,
|
|
177
|
-
useValue: config?.name || ++childIds + '_i18n'
|
|
178
|
-
},
|
|
179
|
-
resolveTranslationsProvider(config?.translations),
|
|
180
|
-
I18nService
|
|
192
|
+
i18nChildProviders(config)
|
|
181
193
|
]
|
|
182
194
|
};
|
|
183
195
|
}
|
|
184
196
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ui5I18nModule, deps: [{ token: I18N_ROOT_CONFIG }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
185
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: Ui5I18nModule,
|
|
197
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: Ui5I18nModule, imports: [I18nPipe], exports: [I18nPipe] }); }
|
|
186
198
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ui5I18nModule }); }
|
|
187
199
|
}
|
|
188
200
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ui5I18nModule, decorators: [{
|
|
189
201
|
type: NgModule,
|
|
190
202
|
args: [{
|
|
191
|
-
|
|
203
|
+
imports: [I18nPipe],
|
|
192
204
|
exports: [I18nPipe]
|
|
193
205
|
}]
|
|
194
206
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
@@ -200,5 +212,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
200
212
|
* Generated bundle index. Do not edit.
|
|
201
213
|
*/
|
|
202
214
|
|
|
203
|
-
export { I18nPipe, I18nService, Ui5I18nModule };
|
|
215
|
+
export { I18nPipe, I18nService, Ui5I18nModule, i18nChildProviders, i18nRootProviders };
|
|
204
216
|
//# sourceMappingURL=ui5-webcomponents-ngx-i18n.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui5-webcomponents-ngx-i18n.mjs","sources":["../../../../libs/ui5-angular/i18n/i18n.tokens.ts","../../../../libs/ui5-angular/i18n/i18n.service.ts","../../../../libs/ui5-angular/i18n/i18n.pipe.ts","../../../../libs/ui5-angular/i18n/i18n.utils.ts","../../../../libs/ui5-angular/i18n/i18n.module.ts","../../../../libs/ui5-angular/i18n/ui5-webcomponents-ngx-i18n.ts"],"sourcesContent":["import {InjectionToken} from \"@angular/core\";\nimport {I18nConfig, Translations} from \"./i18n.types\";\n\nexport const I18N_ROOT_CONFIG = new InjectionToken<I18nConfig>('rootI18nConfig');\nexport const I18N_NAMESPACE = new InjectionToken<string>('i18nNamespace');\nexport const I18N_TRANSLATIONS = new InjectionToken<Translations>('i18nTranslations');\n","import {Inject, inject, Injectable} from \"@angular/core\";\nimport I18nBundle, {getI18nBundle, registerI18nLoader} from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport parseProperties from \"@ui5/webcomponents-base/dist/PropertiesFileFormat.js\";\n\nimport {getLanguage, setLanguage} from \"@ui5/webcomponents-base/dist/config/Language.js\";\nimport {\n BehaviorSubject,\n filter,\n first,\n firstValueFrom,\n from,\n isObservable,\n map,\n Observable,\n of,\n switchMap,\n tap\n} from \"rxjs\";\nimport {I18N_NAMESPACE, I18N_ROOT_CONFIG, I18N_TRANSLATIONS} from \"./i18n.tokens\";\nimport {I18nConfig, Translations} from \"./i18n.types\";\n\n@Injectable()\nexport class I18nService {\n private parent: I18nService | null = inject(I18nService, {skipSelf: true, optional: true});\n private currentLanguage$ = new BehaviorSubject<string>(getLanguage() || this.config.language as string);\n private readonly i18nBundle$: Observable<I18nBundle>;\n private loadedLanguages$ = new BehaviorSubject<string[]>([]);\n\n constructor(\n @Inject(I18N_ROOT_CONFIG) private config: I18nConfig,\n @Inject(I18N_NAMESPACE) private namespace: string,\n @Inject(I18N_TRANSLATIONS) private bundles: Translations = {}\n ) {\n Object.keys(bundles).forEach((lang) => {\n registerI18nLoader(this.namespace, lang, async (localeId: string) => {\n const val = this.bundles[localeId];\n const result = isObservable(val) ? await firstValueFrom(val) : await val;\n setTimeout(() => {\n this.loadedLanguages$.next([\n ...new Set([...this.loadedLanguages$.value, localeId]).values()\n ]);\n });\n if (typeof result === 'string') {\n return parseProperties(result);\n }\n return result;\n });\n });\n this.i18nBundle$ = from(getI18nBundle(this.namespace));\n }\n\n currentLanguage(): string | undefined {\n if (this.parent) {\n return this.parent.currentLanguage();\n }\n return this.currentLanguage$.value;\n }\n\n currentLanguageEvent(): Observable<string> {\n if (this.parent) {\n return this.parent.currentLanguageEvent();\n }\n return this.currentLanguage$;\n }\n\n setLanguage(language: string): void {\n if (this.parent) {\n return this.parent.setLanguage(language);\n }\n setLanguage(language);\n this.loadedLanguages$.pipe(\n filter(langs => langs.includes(language)),\n first(),\n tap(() => this.currentLanguage$.next(language))\n ).subscribe();\n }\n\n getText(key: string, ...placeholders: any[]): Observable<string> {\n return this.currentLanguageEvent().pipe(\n switchMap(() => this.i18nBundle$),\n map((bundle) => bundle.getText({key, defaultText: key}, ...placeholders)),\n switchMap((text) => {\n if (text === key && this.parent) {\n return this.parent.getText(key, ...placeholders);\n }\n return of(text);\n })\n );\n }\n}\n","import {ChangeDetectorRef, OnDestroy, Pipe, PipeTransform} from \"@angular/core\";\nimport {I18nService} from \"./i18n.service\";\nimport {distinctUntilChanged, Subject, Subscription, takeUntil} from \"rxjs\";\n\n@Pipe({\n name: 'ui5I18n',\n pure: false\n})\nexport class I18nPipe implements PipeTransform, OnDestroy {\n private _lastTranslationValue = '';\n private _subscription?: Subscription;\n private _destroyed$ = new Subject<void>();\n private _lastValue!: string;\n private _lastValueParams!: string[];\n\n constructor(private changeDetectorRef: ChangeDetectorRef,\n private i18nService: I18nService) {\n }\n\n transform(value: string, ...params: any[]): string {\n const paramsChanged = !this._lastValue || params.some((param, index) => param !== this._lastValueParams[index]);\n if (value === this._lastValue && !paramsChanged) {\n return this._lastTranslationValue;\n }\n this._lastValue = value;\n this._lastValueParams = params;\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = undefined;\n }\n this._subscription = this.i18nService.getText(value, ...params)\n .pipe(\n distinctUntilChanged(),\n takeUntil(this._destroyed$)\n ).subscribe((text) => {\n this._lastTranslationValue = text;\n this.changeDetectorRef.markForCheck();\n });\n return this._lastTranslationValue;\n }\n\n ngOnDestroy(): void {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n}\n","import {FactorySansProvider, Provider} from \"@angular/core\";\nimport {Translations} from \"./i18n.types\";\nimport {I18N_TRANSLATIONS} from \"./i18n.tokens\";\n\nexport function resolveTranslationsProvider(translations?: Translations | FactorySansProvider): Provider {\n if (!translations) {\n return {\n provide: I18N_TRANSLATIONS,\n useValue: {}\n };\n }\n if (typeof translations.useFactory === 'function') {\n return {\n provide: I18N_TRANSLATIONS,\n useFactory: (translations as FactorySansProvider).useFactory,\n deps: (translations as FactorySansProvider).deps || [],\n }\n }\n return {\n provide: I18N_TRANSLATIONS,\n useValue: translations\n };\n}\n","import {Inject, ModuleWithProviders, NgModule} from \"@angular/core\";\nimport {setFetchDefaultLanguage, setLanguage} from \"@ui5/webcomponents-base/dist/config/Language.js\";\nimport {I18nPipe} from \"./i18n.pipe\";\nimport {I18nService} from \"./i18n.service\";\nimport {I18nConfig} from \"./i18n.types\";\nimport {I18N_NAMESPACE, I18N_ROOT_CONFIG} from \"./i18n.tokens\";\nimport {resolveTranslationsProvider} from \"./i18n.utils\";\n\n\nlet childIds = 0;\n\n@NgModule({\n declarations: [I18nPipe],\n exports: [I18nPipe]\n})\nexport class Ui5I18nModule {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n constructor(@Inject(I18N_ROOT_CONFIG) private config: I18nConfig) {\n }\n\n static forRoot(config: I18nConfig = {}): ModuleWithProviders<Ui5I18nModule> {\n\n return {\n ngModule: Ui5I18nModule,\n providers: [\n {\n provide: I18N_ROOT_CONFIG,\n useFactory: () => {\n if (config.language) {\n setLanguage(config.language);\n }\n if (config.fetchDefaultLanguage) {\n setFetchDefaultLanguage(config.fetchDefaultLanguage);\n }\n return config;\n }\n },\n {\n provide: I18N_NAMESPACE,\n useValue: config.bundle?.name || 'root_i18n'\n },\n resolveTranslationsProvider(config.bundle?.translations),\n I18nService\n ]\n }\n }\n\n static forChild(config: I18nConfig['bundle'] = {}): ModuleWithProviders<Ui5I18nModule> {\n return {\n ngModule: Ui5I18nModule,\n providers: [\n {\n provide: I18N_NAMESPACE,\n useValue: config?.name || ++childIds + '_i18n'\n },\n resolveTranslationsProvider(config?.translations),\n I18nService\n ]\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.I18nService"],"mappings":";;;;;;;AAGO,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAa,gBAAgB,CAAC,CAAC;AAC1E,MAAM,cAAc,GAAG,IAAI,cAAc,CAAS,eAAe,CAAC,CAAC;AACnE,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAe,kBAAkB,CAAC;;ACgBrF,MACa,WAAW,CAAA;AAMtB,IAAA,WAAA,CACoC,MAAkB,EACpB,SAAiB,EACd,UAAwB,EAAE,EAAA;QAF3B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QACpB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QACd,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;AARvD,QAAA,IAAA,CAAA,MAAM,GAAuB,MAAM,CAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AACnF,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAS,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAkB,CAAC,CAAC;AAEhG,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC,CAAC;QAO3D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACpC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,QAAgB,KAAI;gBAClE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACnC,gBAAA,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC;gBACzE,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACzB,wBAAA,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE;AAChE,qBAAA,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,oBAAA,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AAChC,iBAAA;AACD,gBAAA,OAAO,MAAM,CAAC;AAChB,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KACxD;IAED,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;AACtC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;KACpC;IAED,oBAAoB,GAAA;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;AAC3C,SAAA;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;AAED,IAAA,WAAW,CAAC,QAAgB,EAAA;QAC1B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC1C,SAAA;QACD,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EACzC,KAAK,EAAE,EACP,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAChD,CAAC,SAAS,EAAE,CAAC;KACf;AAED,IAAA,OAAO,CAAC,GAAW,EAAE,GAAG,YAAmB,EAAA;QACzC,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,IAAI,CACrC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,EACjC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAC,EAAE,GAAG,YAAY,CAAC,CAAC,EACzE,SAAS,CAAC,CAAC,IAAI,KAAI;AACjB,YAAA,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC;AAClD,aAAA;AACD,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACjB,CAAC,CACH,CAAC;KACH;AAlEU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAOZ,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,KAAA,EAAA,cAAc,aACd,iBAAiB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAThB,WAAW,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;0BAQN,MAAM;2BAAC,gBAAgB,CAAA;;0BACvB,MAAM;2BAAC,cAAc,CAAA;;0BACrB,MAAM;2BAAC,iBAAiB,CAAA;;;AC3B7B,MAIa,QAAQ,CAAA;IAOnB,WAAoB,CAAA,iBAAoC,EACpC,WAAwB,EAAA;QADxB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAPpC,IAAqB,CAAA,qBAAA,GAAG,EAAE,CAAC;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAQ,CAAC;KAMzC;AAED,IAAA,SAAS,CAAC,KAAa,EAAE,GAAG,MAAa,EAAA;QACvC,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAChH,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE;YAC/C,OAAO,IAAI,CAAC,qBAAqB,CAAC;AACnC,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAChC,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC;AAC5D,aAAA,IAAI,CACH,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAC5B,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACnB,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACxC,SAAC,CAAC,CAAC;QACL,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACnC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC7B;8GApCU,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAR,QAAQ,EAAA,IAAA,EAAA,SAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA,EAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA,CAAA;;;ACHK,SAAU,2BAA2B,CAAC,YAAiD,EAAA;IAC3F,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO;AACL,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;AACH,KAAA;AACD,IAAA,IAAI,OAAO,YAAY,CAAC,UAAU,KAAK,UAAU,EAAE;QACjD,OAAO;AACL,YAAA,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAG,YAAoC,CAAC,UAAU;AAC5D,YAAA,IAAI,EAAG,YAAoC,CAAC,IAAI,IAAI,EAAE;SACvD,CAAA;AACF,KAAA;IACD,OAAO;AACL,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,QAAQ,EAAE,YAAY;KACvB,CAAC;AACJ;;ACbA,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB,MAIa,aAAa,CAAA;;AAExB,IAAA,WAAA,CAA8C,MAAkB,EAAA;QAAlB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;KAC/D;AAED,IAAA,OAAO,OAAO,CAAC,MAAA,GAAqB,EAAE,EAAA;QAEpC,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,gBAAgB;oBACzB,UAAU,EAAE,MAAK;wBACf,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,4BAAA,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9B,yBAAA;wBACD,IAAI,MAAM,CAAC,oBAAoB,EAAE;AAC/B,4BAAA,uBAAuB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACtD,yBAAA;AACD,wBAAA,OAAO,MAAM,CAAC;qBACf;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,cAAc;AACvB,oBAAA,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,WAAW;AAC7C,iBAAA;AACD,gBAAA,2BAA2B,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;gBACxD,WAAW;AACZ,aAAA;SACF,CAAA;KACF;AAED,IAAA,OAAO,QAAQ,CAAC,MAAA,GAA+B,EAAE,EAAA;QAC/C,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,QAAQ,GAAG,OAAO;AAC/C,iBAAA;AACD,gBAAA,2BAA2B,CAAC,MAAM,EAAE,YAAY,CAAC;gBACjD,WAAW;AACZ,aAAA;SACF,CAAA;KACF;AA5CU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBAEJ,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAFzB,aAAa,EAAA,YAAA,EAAA,CAHT,QAAQ,CAAA,EAAA,OAAA,EAAA,CACb,QAAQ,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEP,aAAa,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,QAAQ,CAAC;oBACxB,OAAO,EAAE,CAAC,QAAQ,CAAC;AACpB,iBAAA,CAAA;;0BAGc,MAAM;2BAAC,gBAAgB,CAAA;;;ACjBtC;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ui5-webcomponents-ngx-i18n.mjs","sources":["../../../../libs/ui5-angular/i18n/i18n.tokens.ts","../../../../libs/ui5-angular/i18n/i18n.service.ts","../../../../libs/ui5-angular/i18n/i18n.pipe.ts","../../../../libs/ui5-angular/i18n/i18n.utils.ts","../../../../libs/ui5-angular/i18n/i18n.providers.ts","../../../../libs/ui5-angular/i18n/i18n.module.ts","../../../../libs/ui5-angular/i18n/ui5-webcomponents-ngx-i18n.ts"],"sourcesContent":["import {InjectionToken} from \"@angular/core\";\nimport {I18nConfig, Translations} from \"./i18n.types\";\n\nexport const I18N_ROOT_CONFIG = new InjectionToken<I18nConfig>('rootI18nConfig');\nexport const I18N_NAMESPACE = new InjectionToken<string>('i18nNamespace');\nexport const I18N_TRANSLATIONS = new InjectionToken<Translations>('i18nTranslations');\n","import {Inject, inject, Injectable} from \"@angular/core\";\nimport I18nBundle, {getI18nBundle, registerI18nLoader} from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport parseProperties from \"@ui5/webcomponents-base/dist/PropertiesFileFormat.js\";\n\nimport {getLanguage, setLanguage} from \"@ui5/webcomponents-base/dist/config/Language.js\";\nimport {\n BehaviorSubject,\n filter,\n first,\n firstValueFrom,\n from,\n isObservable,\n map,\n Observable,\n of,\n switchMap,\n tap\n} from \"rxjs\";\nimport {I18N_NAMESPACE, I18N_ROOT_CONFIG, I18N_TRANSLATIONS} from \"./i18n.tokens\";\nimport {I18nConfig, Translations} from \"./i18n.types\";\n\n@Injectable()\nexport class I18nService {\n private parent: I18nService | null = inject(I18nService, {skipSelf: true, optional: true});\n private currentLanguage$ = new BehaviorSubject<string>(getLanguage() || this.config.language as string);\n private readonly i18nBundle$: Observable<I18nBundle>;\n private loadedLanguages$ = new BehaviorSubject<string[]>([]);\n\n constructor(\n @Inject(I18N_ROOT_CONFIG) private config: I18nConfig,\n @Inject(I18N_NAMESPACE) private namespace: string,\n @Inject(I18N_TRANSLATIONS) private bundles: Translations = {}\n ) {\n Object.keys(bundles).forEach((lang) => {\n registerI18nLoader(this.namespace, lang, async (localeId: string) => {\n const val = this.bundles[localeId];\n const result = isObservable(val) ? await firstValueFrom(val) : await val;\n setTimeout(() => {\n this.loadedLanguages$.next([\n ...new Set([...this.loadedLanguages$.value, localeId]).values()\n ]);\n });\n if (typeof result === 'string') {\n return parseProperties(result);\n }\n return result;\n });\n });\n this.i18nBundle$ = from(getI18nBundle(this.namespace));\n }\n\n currentLanguage(): string | undefined {\n if (this.parent) {\n return this.parent.currentLanguage();\n }\n return this.currentLanguage$.value;\n }\n\n currentLanguageEvent(): Observable<string> {\n if (this.parent) {\n return this.parent.currentLanguageEvent();\n }\n return this.currentLanguage$;\n }\n\n setLanguage(language: string): void {\n if (this.parent) {\n return this.parent.setLanguage(language);\n }\n setLanguage(language);\n this.loadedLanguages$.pipe(\n filter(langs => langs.includes(language)),\n first(),\n tap(() => this.currentLanguage$.next(language))\n ).subscribe();\n }\n\n getText(key: string, ...placeholders: any[]): Observable<string> {\n return this.currentLanguageEvent().pipe(\n switchMap(() => this.i18nBundle$),\n map((bundle) => bundle.getText({key, defaultText: key}, ...placeholders)),\n switchMap((text) => {\n if (text === key && this.parent) {\n return this.parent.getText(key, ...placeholders);\n }\n return of(text);\n })\n );\n }\n}\n","import {ChangeDetectorRef, OnDestroy, Pipe, PipeTransform} from \"@angular/core\";\nimport {I18nService} from \"./i18n.service\";\nimport {distinctUntilChanged, Subject, Subscription, takeUntil} from \"rxjs\";\n\n@Pipe({\n name: 'ui5I18n',\n pure: false,\n standalone: true\n})\nexport class I18nPipe implements PipeTransform, OnDestroy {\n private _lastTranslationValue = '';\n private _subscription?: Subscription;\n private _destroyed$ = new Subject<void>();\n private _lastValue!: string;\n private _lastValueParams!: string[];\n\n constructor(private changeDetectorRef: ChangeDetectorRef,\n private i18nService: I18nService) {\n }\n\n transform(value: string, ...params: any[]): string {\n const paramsChanged = !this._lastValue || params.some((param, index) => param !== this._lastValueParams[index]);\n if (value === this._lastValue && !paramsChanged) {\n return this._lastTranslationValue;\n }\n this._lastValue = value;\n this._lastValueParams = params;\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = undefined;\n }\n this._subscription = this.i18nService.getText(value, ...params)\n .pipe(\n distinctUntilChanged(),\n takeUntil(this._destroyed$)\n ).subscribe((text) => {\n this._lastTranslationValue = text;\n this.changeDetectorRef.markForCheck();\n });\n return this._lastTranslationValue;\n }\n\n ngOnDestroy(): void {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n}\n","import {FactorySansProvider, Provider} from \"@angular/core\";\nimport {Translations} from \"./i18n.types\";\nimport {I18N_TRANSLATIONS} from \"./i18n.tokens\";\n\nexport function resolveTranslationsProvider(translations?: Translations | FactorySansProvider): Provider {\n if (!translations) {\n return {\n provide: I18N_TRANSLATIONS,\n useValue: {}\n };\n }\n if (typeof translations.useFactory === 'function') {\n return {\n provide: I18N_TRANSLATIONS,\n useFactory: (translations as FactorySansProvider).useFactory,\n deps: (translations as FactorySansProvider).deps || [],\n }\n }\n return {\n provide: I18N_TRANSLATIONS,\n useValue: translations\n };\n}\n","import { setFetchDefaultLanguage, setLanguage } from \"@ui5/webcomponents-base/dist/config/Language.js\";\nimport { I18nConfig } from \"./i18n.types\";\nimport { I18N_NAMESPACE, I18N_ROOT_CONFIG } from \"./i18n.tokens\";\nimport { resolveTranslationsProvider } from \"./i18n.utils\";\nimport { I18nService } from \"./i18n.service\";\n\nlet childIds = 0;\nexport function i18nRootProviders(config: I18nConfig) {\n return [\n {\n provide: I18N_ROOT_CONFIG,\n useFactory: () => {\n if (config.language) {\n setLanguage(config.language);\n }\n if (config.fetchDefaultLanguage) {\n setFetchDefaultLanguage(config.fetchDefaultLanguage);\n }\n return config;\n }\n },\n {\n provide: I18N_NAMESPACE,\n useValue: config.bundle?.name || 'root_i18n'\n },\n resolveTranslationsProvider(config.bundle?.translations),\n I18nService\n ]\n}\n\nexport function i18nChildProviders(config: I18nConfig['bundle']) {\n return [\n {\n provide: I18N_NAMESPACE,\n useValue: config?.name || ++childIds + '_i18n'\n },\n resolveTranslationsProvider(config?.translations),\n I18nService\n ]\n}\n","import { Inject, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { I18nPipe } from \"./i18n.pipe\";\nimport { I18nConfig } from \"./i18n.types\";\nimport { I18N_ROOT_CONFIG } from \"./i18n.tokens\";\nimport { i18nChildProviders, i18nRootProviders } from \"./i18n.providers\";\n\n\n@NgModule({\n imports: [I18nPipe],\n exports: [I18nPipe]\n})\nexport class Ui5I18nModule {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n constructor(@Inject(I18N_ROOT_CONFIG) private config: I18nConfig) {\n }\n\n static forRoot(config: I18nConfig = {}): ModuleWithProviders<Ui5I18nModule> {\n\n return {\n ngModule: Ui5I18nModule,\n providers: [\n i18nRootProviders(config)\n ]\n }\n }\n\n static forChild(config: I18nConfig['bundle'] = {}): ModuleWithProviders<Ui5I18nModule> {\n return {\n ngModule: Ui5I18nModule,\n providers: [\n i18nChildProviders(config)\n ]\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.I18nService"],"mappings":"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"}
|
package/i18n/i18n.module.d.ts
CHANGED
|
@@ -8,6 +8,6 @@ export declare class Ui5I18nModule {
|
|
|
8
8
|
static forRoot(config?: I18nConfig): ModuleWithProviders<Ui5I18nModule>;
|
|
9
9
|
static forChild(config?: I18nConfig['bundle']): ModuleWithProviders<Ui5I18nModule>;
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<Ui5I18nModule, never>;
|
|
11
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<Ui5I18nModule, [typeof i1.I18nPipe],
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<Ui5I18nModule, never, [typeof i1.I18nPipe], [typeof i1.I18nPipe]>;
|
|
12
12
|
static ɵinj: i0.ɵɵInjectorDeclaration<Ui5I18nModule>;
|
|
13
13
|
}
|
package/i18n/i18n.pipe.d.ts
CHANGED
|
@@ -13,5 +13,5 @@ export declare class I18nPipe implements PipeTransform, OnDestroy {
|
|
|
13
13
|
transform(value: string, ...params: any[]): string;
|
|
14
14
|
ngOnDestroy(): void;
|
|
15
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<I18nPipe, never>;
|
|
16
|
-
static ɵpipe: i0.ɵɵPipeDeclaration<I18nPipe, "ui5I18n",
|
|
16
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<I18nPipe, "ui5I18n", true>;
|
|
17
17
|
}
|
package/i18n/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ui5/webcomponents-ngx",
|
|
3
|
-
"version": "0.2.0
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "SAP SE (https://www.sap.com)",
|
|
6
6
|
"keywords": [
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"rxjs": "^6.5.3 || ^7.4.0",
|
|
31
31
|
"lodash": "4.17.21",
|
|
32
32
|
"inquirer": "8.2.4",
|
|
33
|
-
"@ui5/theming-ngx": "0.2.0
|
|
33
|
+
"@ui5/theming-ngx": "0.2.0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"tslib": "^2.4.1"
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.addI18n = void 0;
|
|
36
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const workspace_1 = require("@schematics/angular/utility/workspace");
|
|
39
|
+
const change_1 = require("@schematics/angular/utility/change");
|
|
40
|
+
const ng_ast_utils_1 = require("@schematics/angular/utility/ng-ast-utils");
|
|
41
|
+
const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
|
|
42
|
+
const standalone_1 = require("@schematics/angular/private/standalone");
|
|
43
|
+
const get_project_definition_1 = require("../utils/get-project-definition");
|
|
44
|
+
const project_main_file_1 = require("../utils/project-main-file");
|
|
45
|
+
const getModuleDeclaration_1 = require("../utils/getModuleDeclaration");
|
|
46
|
+
const getSourceFile_1 = require("../utils/getSourceFile");
|
|
47
|
+
const find_providers_literal_1 = require("../utils/find-providers-literal");
|
|
48
|
+
function addI18n(options) {
|
|
49
|
+
return (tree, context) => __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
return (0, workspace_1.updateWorkspace)((workspace) => __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
if (!options.useI18n) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const projectDefinition = (0, get_project_definition_1.getProjectDefinition)(workspace, options.project);
|
|
55
|
+
const update = addI18nModule(tree, projectDefinition, context, options);
|
|
56
|
+
const exportRecorder = tree.beginUpdate(update.file);
|
|
57
|
+
for (const change of update.changes) {
|
|
58
|
+
if (change instanceof change_1.InsertChange) {
|
|
59
|
+
exportRecorder.insertLeft(change.pos, change.toAdd);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
tree.commitUpdate(exportRecorder);
|
|
63
|
+
}));
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
exports.addI18n = addI18n;
|
|
67
|
+
function addI18nModule(tree, projectDefinition, context, options) {
|
|
68
|
+
var _a;
|
|
69
|
+
try {
|
|
70
|
+
return addModuleToNonStandaloneApp(tree, projectDefinition, context, options);
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
if ((_a = e.message) === null || _a === void 0 ? void 0 : _a.includes('Bootstrap call not found')) {
|
|
74
|
+
return addModuleToStandaloneApp(tree, projectDefinition, context, options);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
throw e;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function rootProviderConfig(options) {
|
|
82
|
+
return `{
|
|
83
|
+
language: ${JSON.stringify(options.defaultLanguage)},
|
|
84
|
+
fetchDefaultLanguage: true,
|
|
85
|
+
bundle: {
|
|
86
|
+
name: 'app-root-i18n-bundle',
|
|
87
|
+
translations: {
|
|
88
|
+
// You can add your translations here. For more information please refer to the documentation.
|
|
89
|
+
[${JSON.stringify(options.defaultLanguage)}]: {
|
|
90
|
+
'app-root-title': 'Hello World!'
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}`;
|
|
95
|
+
}
|
|
96
|
+
function addModuleToNonStandaloneApp(tree, projectDefinition, context, options) {
|
|
97
|
+
const appModulePath = (0, ng_ast_utils_1.getAppModulePath)(tree, (0, project_main_file_1.getProjectMainFile)(projectDefinition));
|
|
98
|
+
if (!appModulePath) {
|
|
99
|
+
throw new schematics_1.SchematicsException('Could not find root module for defined project.');
|
|
100
|
+
}
|
|
101
|
+
const appModuleSource = (0, getSourceFile_1.getSourceFile)(tree, appModulePath);
|
|
102
|
+
const i18nModule = (0, getModuleDeclaration_1.getModuleDeclaration)(appModuleSource, 'Ui5I18nModule');
|
|
103
|
+
const moduleConfig = `\nUi5I18nModule.forRoot(${rootProviderConfig(options)})`;
|
|
104
|
+
if (i18nModule) {
|
|
105
|
+
i18nModule.getChildren(appModuleSource);
|
|
106
|
+
const i18nModuleDecl = i18nModule.getFullText();
|
|
107
|
+
const appModuleContent = tree.readText(appModulePath).split(i18nModuleDecl).join(moduleConfig);
|
|
108
|
+
tree.overwrite(appModulePath, appModuleContent);
|
|
109
|
+
context.logger.info('Found previous Ui5I18nModule. Replaced with new one.');
|
|
110
|
+
return { changes: [], file: appModulePath };
|
|
111
|
+
}
|
|
112
|
+
const changes = [
|
|
113
|
+
...(0, ast_utils_1.addImportToModule)(appModuleSource, appModulePath, moduleConfig, null),
|
|
114
|
+
(0, ast_utils_1.insertImport)(appModuleSource, appModulePath, 'Ui5I18nModule', '@ui5/webcomponents-ngx/i18n')
|
|
115
|
+
];
|
|
116
|
+
return { changes, file: appModulePath };
|
|
117
|
+
}
|
|
118
|
+
function addModuleToStandaloneApp(tree, projectDefinition, context, options) {
|
|
119
|
+
const mainFile = (0, project_main_file_1.getProjectMainFile)(projectDefinition);
|
|
120
|
+
const mainFileSource = (0, getSourceFile_1.getSourceFile)(tree, mainFile);
|
|
121
|
+
const bootstrapCall = (0, standalone_1.findBootstrapApplicationCall)(mainFileSource);
|
|
122
|
+
if (!bootstrapCall) {
|
|
123
|
+
throw new schematics_1.SchematicsException('Could not find bootstrap call in main.ts');
|
|
124
|
+
}
|
|
125
|
+
const providersLiteral = (0, find_providers_literal_1.findProvidersLiteral)(bootstrapCall);
|
|
126
|
+
const recorder = tree.beginUpdate(mainFile.toString());
|
|
127
|
+
const printer = ts.createPrinter();
|
|
128
|
+
const newProviderCall = ts.factory.createCallExpression(ts.factory.createIdentifier('i18nRootProviders'), undefined, [ts.factory.createObjectLiteralExpression([
|
|
129
|
+
ts.factory.createPropertyAssignment('language', ts.factory.createStringLiteral(options.defaultLanguage)),
|
|
130
|
+
ts.factory.createPropertyAssignment('fetchDefaultLanguage', ts.factory.createTrue()),
|
|
131
|
+
ts.factory.createPropertyAssignment('bundle', ts.factory.createObjectLiteralExpression([
|
|
132
|
+
ts.factory.createPropertyAssignment('name', ts.factory.createStringLiteral('app-root-i18n-bundle')),
|
|
133
|
+
ts.factory.createPropertyAssignment('translations', ts.factory.createObjectLiteralExpression([
|
|
134
|
+
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral(options.defaultLanguage), ts.factory.createObjectLiteralExpression([
|
|
135
|
+
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral('app-root-title'), ts.factory.createStringLiteral('Hello World!')),
|
|
136
|
+
])),
|
|
137
|
+
])),
|
|
138
|
+
])),
|
|
139
|
+
], true)]);
|
|
140
|
+
if (!providersLiteral) {
|
|
141
|
+
const bootstrapCallParams = [...bootstrapCall.arguments];
|
|
142
|
+
bootstrapCallParams[1] = ts.factory.createObjectLiteralExpression([createProvidersAssignment([newProviderCall])], true);
|
|
143
|
+
const newCall = ts.factory.updateCallExpression(bootstrapCall, bootstrapCall.expression, bootstrapCall.typeArguments, bootstrapCallParams);
|
|
144
|
+
recorder.remove(bootstrapCall.getStart(), bootstrapCall.getWidth());
|
|
145
|
+
recorder.insertRight(bootstrapCall.getStart(), printer.printNode(ts.EmitHint.Unspecified, newCall, mainFileSource));
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
const existingUsageIndex = providersLiteral.elements.findIndex(el => ts.isCallExpression(el) && ts.isIdentifier(el.expression) && el.expression.escapedText === 'i18nRootProviders');
|
|
149
|
+
const newProvidersLiteral = ts.factory.createArrayLiteralExpression(providersLiteral.elements.filter((_el, i) => i !== existingUsageIndex).concat(newProviderCall));
|
|
150
|
+
if (existingUsageIndex !== -1) {
|
|
151
|
+
context.logger.info('Found previous i18nRootProviders call. Replaced with new one.');
|
|
152
|
+
}
|
|
153
|
+
recorder.remove(providersLiteral.getStart(), providersLiteral.getWidth());
|
|
154
|
+
recorder.insertRight(providersLiteral.getStart(), printer.printNode(ts.EmitHint.Unspecified, newProvidersLiteral, mainFileSource));
|
|
155
|
+
}
|
|
156
|
+
const importChange = (0, ast_utils_1.insertImport)(mainFileSource, mainFile, 'i18nRootProviders', '@ui5/webcomponents-ngx/i18n');
|
|
157
|
+
if (importChange instanceof change_1.InsertChange) {
|
|
158
|
+
recorder.insertLeft(importChange.pos, importChange.toAdd);
|
|
159
|
+
}
|
|
160
|
+
tree.commitUpdate(recorder);
|
|
161
|
+
return { changes: [], file: mainFile };
|
|
162
|
+
}
|
|
163
|
+
function createProvidersAssignment(elements = []) {
|
|
164
|
+
return ts.factory.createPropertyAssignment('providers', ts.factory.createArrayLiteralExpression(elements));
|
|
165
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "I18nAdd",
|
|
4
|
+
"title": "",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"project": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "The name of the project.",
|
|
10
|
+
"$default": {
|
|
11
|
+
"$source": "projectName"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"useI18n": {
|
|
15
|
+
"type": "boolean",
|
|
16
|
+
"description": "Whether to use internationalization.",
|
|
17
|
+
"default": true
|
|
18
|
+
},
|
|
19
|
+
"defaultLanguage": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "The default language to use.",
|
|
22
|
+
"default": "en"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"required": []
|
|
26
|
+
}
|
|
@@ -12,23 +12,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.addTheming = void 0;
|
|
13
13
|
const workspace_1 = require("@schematics/angular/utility/workspace");
|
|
14
14
|
const change_1 = require("@schematics/angular/utility/change");
|
|
15
|
-
const schematics_1 = require("@angular-devkit/schematics");
|
|
16
15
|
const add_theming_module_1 = require("./add-theming-module");
|
|
16
|
+
const get_project_definition_1 = require("../utils/get-project-definition");
|
|
17
17
|
function addTheming(options) {
|
|
18
18
|
return (tree, context) => (0, workspace_1.updateWorkspace)((workspace) => __awaiter(this, void 0, void 0, function* () {
|
|
19
|
-
var _a;
|
|
20
19
|
if (!options.theming) {
|
|
21
20
|
return;
|
|
22
21
|
}
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
throw new schematics_1.SchematicsException('Project with such name not found.');
|
|
26
|
-
}
|
|
27
|
-
const buildTargetOptions = (_a = currentWorkspace.targets.get('build')) === null || _a === void 0 ? void 0 : _a.options;
|
|
28
|
-
if (!buildTargetOptions) {
|
|
29
|
-
throw new schematics_1.SchematicsException('Could not find build target options for defined project.');
|
|
30
|
-
}
|
|
31
|
-
const update = (0, add_theming_module_1.addThemingModule)(tree, currentWorkspace, context, options);
|
|
22
|
+
const projectDefinition = (0, get_project_definition_1.getProjectDefinition)(workspace, options.project);
|
|
23
|
+
const update = (0, add_theming_module_1.addThemingModule)(tree, projectDefinition, context, options);
|
|
32
24
|
const exportRecorder = tree.beginUpdate(update.file);
|
|
33
25
|
for (const change of update.changes) {
|
|
34
26
|
if (change instanceof change_1.InsertChange) {
|
|
@@ -29,6 +29,11 @@
|
|
|
29
29
|
"factory": "./add-theming/index#addTheming",
|
|
30
30
|
"schema": "./add-theming/schema.json",
|
|
31
31
|
"private": true
|
|
32
|
+
},
|
|
33
|
+
"add-i18n": {
|
|
34
|
+
"description": "Adds i18n capabilities to the angular application.",
|
|
35
|
+
"factory": "./add-i18n/index#addI18n",
|
|
36
|
+
"schema": "./add-i18n/schema.json"
|
|
32
37
|
}
|
|
33
38
|
}
|
|
34
39
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getI18nConfig = void 0;
|
|
13
|
+
const promt_1 = require("./utils/promt");
|
|
14
|
+
function getI18nConfig() {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
const useI18n = yield (0, promt_1.askQuestion)({
|
|
17
|
+
type: 'confirm',
|
|
18
|
+
message: 'Would you like to add i18n capabilities into your application?',
|
|
19
|
+
default: false,
|
|
20
|
+
});
|
|
21
|
+
const defaultLanguage = (useI18n ? yield (0, promt_1.askQuestion)({
|
|
22
|
+
type: 'input',
|
|
23
|
+
message: 'What is the default language of your application?',
|
|
24
|
+
default: 'en',
|
|
25
|
+
}) : undefined);
|
|
26
|
+
return {
|
|
27
|
+
useI18n,
|
|
28
|
+
defaultLanguage
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
exports.getI18nConfig = getI18nConfig;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Rule } from '@angular-devkit/schematics';
|
|
2
|
-
import {
|
|
3
|
-
export declare function ngAdd(options:
|
|
4
|
-
export declare function proceedWithSchematics(options:
|
|
2
|
+
import { NgAddSchema } from './schema';
|
|
3
|
+
export declare function ngAdd(options: NgAddSchema): Rule;
|
|
4
|
+
export declare function proceedWithSchematics(options: NgAddSchema): Rule;
|
|
@@ -13,10 +13,12 @@ exports.proceedWithSchematics = exports.ngAdd = void 0;
|
|
|
13
13
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
14
14
|
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
|
15
15
|
const get_config_1 = require("../get-config");
|
|
16
|
+
const get_i18n_config_1 = require("../get-i18n-config");
|
|
16
17
|
function ngAdd(options) {
|
|
17
18
|
return (_, context) => __awaiter(this, void 0, void 0, function* () {
|
|
18
19
|
const userConfig = yield (0, get_config_1.collectConfig)();
|
|
19
|
-
|
|
20
|
+
const i18nConfig = yield (0, get_i18n_config_1.getI18nConfig)();
|
|
21
|
+
options = Object.assign(Object.assign(Object.assign({}, options), userConfig), i18nConfig);
|
|
20
22
|
// First, queue dependency installation task.
|
|
21
23
|
const dependenciesTaskId = context.addTask(new tasks_1.RunSchematicTask('add-dependencies', options));
|
|
22
24
|
// Wait for dependencies to be installed and proceed with main schematics.
|
|
@@ -28,7 +30,8 @@ exports.ngAdd = ngAdd;
|
|
|
28
30
|
function proceedWithSchematics(options) {
|
|
29
31
|
return (0, schematics_1.chain)([
|
|
30
32
|
(0, schematics_1.schematic)('add-styles', options),
|
|
31
|
-
(0, schematics_1.schematic)('add-theming', options)
|
|
33
|
+
(0, schematics_1.schematic)('add-theming', options),
|
|
34
|
+
(0, schematics_1.schematic)('add-i18n', options),
|
|
32
35
|
]);
|
|
33
36
|
}
|
|
34
37
|
exports.proceedWithSchematics = proceedWithSchematics;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProjectDefinition = void 0;
|
|
4
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
|
+
function getProjectDefinition(workspace, projectName) {
|
|
6
|
+
const projectDefinition = workspace.projects.get(projectName);
|
|
7
|
+
if (!projectDefinition) {
|
|
8
|
+
throw new schematics_1.SchematicsException('Project with such name not found.');
|
|
9
|
+
}
|
|
10
|
+
return projectDefinition;
|
|
11
|
+
}
|
|
12
|
+
exports.getProjectDefinition = getProjectDefinition;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProjectTarget = void 0;
|
|
4
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
|
+
function getProjectTarget(projectDefinition, targetName, projectName) {
|
|
6
|
+
const target = projectDefinition.targets.get(targetName);
|
|
7
|
+
if (!target) {
|
|
8
|
+
throw new schematics_1.SchematicsException(`Target ${targetName} not found in project ${projectName || ''}`);
|
|
9
|
+
}
|
|
10
|
+
return target;
|
|
11
|
+
}
|
|
12
|
+
exports.getProjectTarget = getProjectTarget;
|
|
Binary file
|
|
Binary file
|