@jsverse/transloco 7.6.0 → 8.0.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/CHANGELOG.md +42 -2
- package/README.md +5 -2
- package/esm2022/index.mjs +4 -5
- package/esm2022/lib/get-fallbacks-loaders.mjs +1 -1
- package/esm2022/lib/lang-resolver.mjs +3 -2
- package/esm2022/lib/resolve-loader.mjs +2 -2
- package/esm2022/lib/scope-resolver.mjs +3 -2
- package/esm2022/lib/template-handler.mjs +2 -2
- package/esm2022/lib/transloco-fallback-strategy.mjs +2 -4
- package/esm2022/lib/transloco-lang.mjs +2 -2
- package/esm2022/lib/transloco-loading-template.mjs +2 -4
- package/esm2022/lib/transloco-missing-handler.mjs +3 -5
- package/esm2022/lib/transloco-scope.mjs +2 -2
- package/esm2022/lib/transloco-testing.module.mjs +1 -1
- package/esm2022/lib/transloco.config.mjs +2 -2
- package/esm2022/lib/transloco.directive.mjs +3 -2
- package/esm2022/lib/transloco.interceptor.mjs +3 -3
- package/esm2022/lib/transloco.loader.mjs +2 -2
- package/esm2022/lib/transloco.pipe.mjs +4 -3
- package/esm2022/lib/transloco.providers.mjs +1 -1
- package/esm2022/lib/transloco.service.mjs +4 -3
- package/esm2022/lib/transloco.signal.mjs +1 -1
- package/esm2022/lib/transloco.transpiler.mjs +4 -3
- package/esm2022/lib/transloco.types.mjs +2 -0
- package/esm2022/lib/utils/browser.utils.mjs +30 -0
- package/esm2022/lib/utils/flat.utils.mjs +37 -0
- package/esm2022/lib/utils/lang.utils.mjs +15 -0
- package/esm2022/lib/utils/object.utils.mjs +28 -0
- package/esm2022/lib/utils/pipe.utils.mjs +17 -0
- package/esm2022/lib/utils/scope.utils.mjs +51 -0
- package/esm2022/lib/utils/type.utils.mjs +2 -0
- package/fesm2022/jsverse-transloco.mjs +164 -223
- package/fesm2022/jsverse-transloco.mjs.map +1 -1
- package/index.d.ts +3 -4
- package/lib/get-fallbacks-loaders.d.ts +1 -1
- package/lib/resolve-loader.d.ts +2 -2
- package/lib/scope-resolver.d.ts +2 -1
- package/lib/transloco-missing-handler.d.ts +1 -1
- package/lib/transloco-scope.d.ts +1 -1
- package/lib/transloco-testing.module.d.ts +2 -1
- package/lib/transloco.config.d.ts +1 -1
- package/lib/transloco.directive.d.ts +1 -1
- package/lib/transloco.interceptor.d.ts +1 -1
- package/lib/transloco.loader.d.ts +1 -1
- package/lib/transloco.pipe.d.ts +3 -1
- package/lib/transloco.providers.d.ts +1 -1
- package/lib/transloco.service.d.ts +2 -1
- package/lib/transloco.signal.d.ts +2 -1
- package/lib/transloco.transpiler.d.ts +2 -1
- package/lib/{types.d.ts → transloco.types.d.ts} +1 -6
- package/lib/{browser-lang.d.ts → utils/browser.utils.d.ts} +1 -0
- package/lib/utils/flat.utils.d.ts +3 -0
- package/lib/utils/lang.utils.d.ts +4 -0
- package/lib/utils/object.utils.d.ts +2 -0
- package/lib/utils/pipe.utils.d.ts +8 -0
- package/lib/utils/scope.utils.d.ts +7 -0
- package/lib/utils/type.utils.d.ts +1 -0
- package/package.json +15 -18
- package/schematics/collection.json +12 -0
- package/schematics/ng-add/generators/http-loader.gen.d.ts +5 -0
- package/schematics/{src/ng-add → ng-add}/generators/http-loader.gen.js +1 -0
- package/schematics/ng-add/generators/http-loader.gen.js.map +1 -0
- package/schematics/{src/ng-add → ng-add}/generators/root-module.gen.js +3 -3
- package/schematics/ng-add/generators/root-module.gen.js.map +1 -0
- package/schematics/{src/ng-migrate → ng-add}/index.d.ts +1 -1
- package/schematics/{src/ng-add → ng-add}/index.js +29 -19
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/ng-add.spec.d.ts +1 -0
- package/schematics/ng-add/ng-add.spec.js +45 -0
- package/schematics/ng-add/ng-add.spec.js.map +1 -0
- package/schematics/{src/ng-add → ng-add}/schema.d.ts +0 -8
- package/schematics/ng-add/schema.js +9 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/{src/ng-add → ng-add}/schema.json +1 -1
- package/schematics-core/index.d.ts +9 -0
- package/schematics-core/index.js +36 -0
- package/schematics-core/index.js.map +1 -0
- package/schematics-core/testing/create-workspace.d.ts +11 -0
- package/schematics-core/testing/create-workspace.js +34 -0
- package/schematics-core/testing/create-workspace.js.map +1 -0
- package/schematics-core/testing/index.d.ts +2 -0
- package/schematics-core/testing/index.js +19 -0
- package/schematics-core/testing/index.js.map +1 -0
- package/schematics-core/testing/mocks.d.ts +14 -0
- package/schematics-core/testing/mocks.js +10 -0
- package/schematics-core/testing/mocks.js.map +1 -0
- package/{schematics/src/utils/array.js → schematics-core/utils/collections.js} +1 -1
- package/schematics-core/utils/collections.js.map +1 -0
- package/schematics-core/utils/file.d.ts +6 -0
- package/schematics-core/utils/file.js +21 -0
- package/schematics-core/utils/file.js.map +1 -0
- package/{schematics/src → schematics-core}/utils/find-module.js +2 -0
- package/schematics-core/utils/find-module.js.map +1 -0
- package/{schematics/src → schematics-core}/utils/package.d.ts +0 -3
- package/{schematics/src → schematics-core}/utils/package.js +2 -4
- package/schematics-core/utils/package.js.map +1 -0
- package/schematics-core/utils/schematic.d.ts +6 -0
- package/{schematics/src/schematics.utils.js → schematics-core/utils/schematic.js} +6 -6
- package/schematics-core/utils/schematic.js.map +1 -0
- package/schematics-core/utils/translation.d.ts +20 -0
- package/schematics-core/utils/translation.js +83 -0
- package/schematics-core/utils/translation.js.map +1 -0
- package/schematics-core/utils/transloco.d.ts +5 -0
- package/schematics-core/utils/transloco.js +31 -0
- package/schematics-core/utils/transloco.js.map +1 -0
- package/schematics-core/utils/workspace.d.ts +6 -0
- package/{schematics/src/utils/projects.js → schematics-core/utils/workspace.js} +1 -13
- package/schematics-core/utils/workspace.js.map +1 -0
- package/esm2022/lib/browser-lang.mjs +0 -28
- package/esm2022/lib/helpers.mjs +0 -129
- package/esm2022/lib/shared.mjs +0 -73
- package/esm2022/lib/types.mjs +0 -2
- package/lib/helpers.d.ts +0 -20
- package/lib/shared.d.ts +0 -17
- package/schematics/src/assets/i18n/en.json +0 -1
- package/schematics/src/collection.json +0 -59
- package/schematics/src/component/index.d.ts +0 -2
- package/schematics/src/component/index.js +0 -21
- package/schematics/src/component/index.js.map +0 -1
- package/schematics/src/join/index.d.ts +0 -3
- package/schematics/src/join/index.js +0 -79
- package/schematics/src/join/index.js.map +0 -1
- package/schematics/src/join/schema.d.ts +0 -28
- package/schematics/src/join/schema.js +0 -3
- package/schematics/src/join/schema.js.map +0 -1
- package/schematics/src/join/schema.json +0 -43
- package/schematics/src/keys-manager/index.d.ts +0 -5
- package/schematics/src/keys-manager/index.js +0 -96
- package/schematics/src/keys-manager/index.js.map +0 -1
- package/schematics/src/keys-manager/schema.d.ts +0 -19
- package/schematics/src/keys-manager/schema.js +0 -3
- package/schematics/src/keys-manager/schema.js.map +0 -1
- package/schematics/src/keys-manager/schema.json +0 -33
- package/schematics/src/migrate/index.d.ts +0 -3
- package/schematics/src/migrate/index.js +0 -21
- package/schematics/src/migrate/index.js.map +0 -1
- package/schematics/src/migrate/ngx-translate-migration.d.ts +0 -3
- package/schematics/src/migrate/ngx-translate-migration.js +0 -175
- package/schematics/src/migrate/ngx-translate-migration.js.map +0 -1
- package/schematics/src/migrate/schema.d.ts +0 -10
- package/schematics/src/migrate/schema.js +0 -3
- package/schematics/src/migrate/schema.js.map +0 -1
- package/schematics/src/migrate/schema.json +0 -23
- package/schematics/src/ng-add/generators/http-loader.gen.d.ts +0 -4
- package/schematics/src/ng-add/generators/http-loader.gen.js.map +0 -1
- package/schematics/src/ng-add/generators/root-module.gen.js.map +0 -1
- package/schematics/src/ng-add/generators/translation-files.gen.d.ts +0 -4
- package/schematics/src/ng-add/generators/translation-files.gen.js +0 -22
- package/schematics/src/ng-add/generators/translation-files.gen.js.map +0 -1
- package/schematics/src/ng-add/index.d.ts +0 -3
- package/schematics/src/ng-add/index.js.map +0 -1
- package/schematics/src/ng-add/schema.js +0 -14
- package/schematics/src/ng-add/schema.js.map +0 -1
- package/schematics/src/ng-migrate/index.js +0 -14
- package/schematics/src/ng-migrate/index.js.map +0 -1
- package/schematics/src/ng-migrate/ng-migrate.d.ts +0 -5
- package/schematics/src/ng-migrate/ng-migrate.js +0 -105
- package/schematics/src/ng-migrate/ng-migrate.js.map +0 -1
- package/schematics/src/ng-migrate/schema.d.ts +0 -14
- package/schematics/src/ng-migrate/schema.js +0 -3
- package/schematics/src/ng-migrate/schema.js.map +0 -1
- package/schematics/src/ng-migrate/schema.json +0 -27
- package/schematics/src/schematics.utils.d.ts +0 -6
- package/schematics/src/schematics.utils.js.map +0 -1
- package/schematics/src/scope/index.d.ts +0 -3
- package/schematics/src/scope/index.js +0 -101
- package/schematics/src/scope/index.js.map +0 -1
- package/schematics/src/scope/schema.d.ts +0 -28
- package/schematics/src/scope/schema.js +0 -3
- package/schematics/src/scope/schema.js.map +0 -1
- package/schematics/src/scope/schema.json +0 -84
- package/schematics/src/split/index.d.ts +0 -3
- package/schematics/src/split/index.js +0 -66
- package/schematics/src/split/index.js.map +0 -1
- package/schematics/src/split/schema.d.ts +0 -20
- package/schematics/src/split/schema.js +0 -3
- package/schematics/src/split/schema.js.map +0 -1
- package/schematics/src/split/schema.json +0 -35
- package/schematics/src/types.d.ts +0 -5
- package/schematics/src/types.js +0 -10
- package/schematics/src/types.js.map +0 -1
- package/schematics/src/upgrade/index.d.ts +0 -3
- package/schematics/src/upgrade/index.js +0 -19
- package/schematics/src/upgrade/index.js.map +0 -1
- package/schematics/src/upgrade/schema.d.ts +0 -6
- package/schematics/src/upgrade/schema.js +0 -3
- package/schematics/src/upgrade/schema.js.map +0 -1
- package/schematics/src/upgrade/schema.json +0 -16
- package/schematics/src/upgrade/v2.d.ts +0 -1
- package/schematics/src/upgrade/v2.js +0 -88
- package/schematics/src/upgrade/v2.js.map +0 -1
- package/schematics/src/utils/array.js.map +0 -1
- package/schematics/src/utils/config.d.ts +0 -2
- package/schematics/src/utils/config.js +0 -12
- package/schematics/src/utils/config.js.map +0 -1
- package/schematics/src/utils/find-module.js.map +0 -1
- package/schematics/src/utils/package.js.map +0 -1
- package/schematics/src/utils/projects.d.ts +0 -8
- package/schematics/src/utils/projects.js.map +0 -1
- package/schematics/src/utils/translations.d.ts +0 -7
- package/schematics/src/utils/translations.js +0 -30
- package/schematics/src/utils/translations.js.map +0 -1
- package/schematics/src/utils/transloco.d.ts +0 -24
- package/schematics/src/utils/transloco.js +0 -88
- package/schematics/src/utils/transloco.js.map +0 -1
- /package/schematics/{src/ng-add → ng-add}/files/transloco-loader/transloco-loader.__ts__ +0 -0
- /package/schematics/{src/ng-add → ng-add}/files/transloco-module/transloco-root.module.__ts__ +0 -0
- /package/schematics/{src/ng-add → ng-add}/generators/root-module.gen.d.ts +0 -0
- /package/{schematics/src/utils/array.d.ts → schematics-core/utils/collections.d.ts} +0 -0
- /package/{schematics/src → schematics-core}/utils/find-module.d.ts +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function getValue(obj, path) {
|
|
2
|
+
if (!obj) {
|
|
3
|
+
return obj;
|
|
4
|
+
}
|
|
5
|
+
/* For cases where the key is like: 'general.something.thing' */
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(obj, path)) {
|
|
7
|
+
return obj[path];
|
|
8
|
+
}
|
|
9
|
+
return path.split('.').reduce((p, c) => p?.[c], obj);
|
|
10
|
+
}
|
|
11
|
+
export function setValue(obj, prop, val) {
|
|
12
|
+
obj = { ...obj };
|
|
13
|
+
const split = prop.split('.');
|
|
14
|
+
const lastIndex = split.length - 1;
|
|
15
|
+
split.reduce((acc, part, index) => {
|
|
16
|
+
if (index === lastIndex) {
|
|
17
|
+
acc[part] = val;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
acc[part] = Array.isArray(acc[part])
|
|
21
|
+
? acc[part].slice()
|
|
22
|
+
: { ...acc[part] };
|
|
23
|
+
}
|
|
24
|
+
return acc && acc[part];
|
|
25
|
+
}, obj);
|
|
26
|
+
return obj;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi91dGlscy9vYmplY3QudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBSSxHQUFNLEVBQUUsSUFBYTtJQUMvQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQVEsSUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFVLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFRLEVBQUUsSUFBWSxFQUFFLEdBQVE7SUFDdkQsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUVqQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRW5DLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2hDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUNuQixDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRVIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlPFQ+KG9iajogVCwgcGF0aDoga2V5b2YgVCkge1xuICBpZiAoIW9iaikge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKiBGb3IgY2FzZXMgd2hlcmUgdGhlIGtleSBpcyBsaWtlOiAnZ2VuZXJhbC5zb21ldGhpbmcudGhpbmcnICovXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwYXRoKSkge1xuICAgIHJldHVybiBvYmpbcGF0aF07XG4gIH1cblxuICByZXR1cm4gKHBhdGggYXMgc3RyaW5nKS5zcGxpdCgnLicpLnJlZHVjZSgocCwgYykgPT4gcD8uW2NdLCBvYmogYXMgYW55KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFZhbHVlKG9iajogYW55LCBwcm9wOiBzdHJpbmcsIHZhbDogYW55KSB7XG4gIG9iaiA9IHsgLi4ub2JqIH07XG5cbiAgY29uc3Qgc3BsaXQgPSBwcm9wLnNwbGl0KCcuJyk7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHNwbGl0Lmxlbmd0aCAtIDE7XG5cbiAgc3BsaXQucmVkdWNlKChhY2MsIHBhcnQsIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBsYXN0SW5kZXgpIHtcbiAgICAgIGFjY1twYXJ0XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjW3BhcnRdID0gQXJyYXkuaXNBcnJheShhY2NbcGFydF0pXG4gICAgICAgID8gYWNjW3BhcnRdLnNsaWNlKClcbiAgICAgICAgOiB7IC4uLmFjY1twYXJ0XSB9O1xuICAgIH1cblxuICAgIHJldHVybiBhY2MgJiYgYWNjW3BhcnRdO1xuICB9LCBvYmopO1xuXG4gIHJldHVybiBvYmo7XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { isString } from '@jsverse/utils';
|
|
2
|
+
/**
|
|
3
|
+
* @example
|
|
4
|
+
*
|
|
5
|
+
* getPipeValue('todos|scoped', 'scoped') [true, 'todos']
|
|
6
|
+
* getPipeValue('en|static', 'static') [true, 'en']
|
|
7
|
+
* getPipeValue('en', 'static') [false, 'en']
|
|
8
|
+
*/
|
|
9
|
+
export function getPipeValue(str, value, char = '|') {
|
|
10
|
+
if (isString(str)) {
|
|
11
|
+
const splitted = str.split(char);
|
|
12
|
+
const lastItem = splitted.pop();
|
|
13
|
+
return lastItem === value ? [true, splitted.toString()] : [false, lastItem];
|
|
14
|
+
}
|
|
15
|
+
return [false, ''];
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdXRpbHMvcGlwZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsR0FBdUIsRUFDdkIsS0FBYSxFQUNiLElBQUksR0FBRyxHQUFHO0lBRVYsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUcsQ0FBQztRQUVqQyxPQUFPLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdAanN2ZXJzZS91dGlscyc7XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqXG4gKiBnZXRQaXBlVmFsdWUoJ3RvZG9zfHNjb3BlZCcsICdzY29wZWQnKSBbdHJ1ZSwgJ3RvZG9zJ11cbiAqIGdldFBpcGVWYWx1ZSgnZW58c3RhdGljJywgJ3N0YXRpYycpIFt0cnVlLCAnZW4nXVxuICogZ2V0UGlwZVZhbHVlKCdlbicsICdzdGF0aWMnKSBbZmFsc2UsICdlbiddXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaXBlVmFsdWUoXG4gIHN0cjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB2YWx1ZTogc3RyaW5nLFxuICBjaGFyID0gJ3wnLFxuKTogW2Jvb2xlYW4sIHN0cmluZ10ge1xuICBpZiAoaXNTdHJpbmcoc3RyKSkge1xuICAgIGNvbnN0IHNwbGl0dGVkID0gc3RyLnNwbGl0KGNoYXIpO1xuICAgIGNvbnN0IGxhc3RJdGVtID0gc3BsaXR0ZWQucG9wKCkhO1xuXG4gICAgcmV0dXJuIGxhc3RJdGVtID09PSB2YWx1ZSA/IFt0cnVlLCBzcGxpdHRlZC50b1N0cmluZygpXSA6IFtmYWxzZSwgbGFzdEl0ZW1dO1xuICB9XG5cbiAgcmV0dXJuIFtmYWxzZSwgJyddO1xufVxuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { isObject } from '@jsverse/utils';
|
|
2
|
+
/*
|
|
3
|
+
* @example
|
|
4
|
+
*
|
|
5
|
+
* given: lazy-page/en => lazy-page
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
export function getScopeFromLang(lang) {
|
|
9
|
+
if (!lang) {
|
|
10
|
+
return '';
|
|
11
|
+
}
|
|
12
|
+
const split = lang.split('/');
|
|
13
|
+
split.pop();
|
|
14
|
+
return split.join('/');
|
|
15
|
+
}
|
|
16
|
+
/*
|
|
17
|
+
* @example
|
|
18
|
+
*
|
|
19
|
+
* given: lazy-page/en => en
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
export function getLangFromScope(lang) {
|
|
23
|
+
if (!lang) {
|
|
24
|
+
return '';
|
|
25
|
+
}
|
|
26
|
+
return lang.split('/').pop();
|
|
27
|
+
}
|
|
28
|
+
function prependScope(inlineLoader, scope) {
|
|
29
|
+
return Object.keys(inlineLoader).reduce((acc, lang) => {
|
|
30
|
+
acc[`${scope}/${lang}`] = inlineLoader[lang];
|
|
31
|
+
return acc;
|
|
32
|
+
}, {});
|
|
33
|
+
}
|
|
34
|
+
export function isScopeObject(item) {
|
|
35
|
+
return typeof item?.scope === 'string';
|
|
36
|
+
}
|
|
37
|
+
export function hasInlineLoader(item) {
|
|
38
|
+
return item?.loader && isObject(item.loader);
|
|
39
|
+
}
|
|
40
|
+
export function resolveInlineLoader(providerScope, scope) {
|
|
41
|
+
return hasInlineLoader(providerScope)
|
|
42
|
+
? prependScope(providerScope.loader, scope)
|
|
43
|
+
: undefined;
|
|
44
|
+
}
|
|
45
|
+
export function getEventPayload(lang) {
|
|
46
|
+
return {
|
|
47
|
+
scope: getScopeFromLang(lang) || null,
|
|
48
|
+
langName: getLangFromScope(lang),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RyYW5zbG9jby9zcmMvbGliL3V0aWxzL3Njb3BlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVMxQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZO0lBQzNDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRVosT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZO0lBQzNDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUcsQ0FBQztBQUNoQyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsWUFBMEIsRUFBRSxLQUFhO0lBQzdELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQ3JDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ1osR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUNELEVBQXNELENBQ3ZELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFTO0lBQ3JDLE9BQU8sT0FBTyxJQUFJLEVBQUUsS0FBSyxLQUFLLFFBQVEsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFTO0lBQ3ZDLE9BQU8sSUFBSSxFQUFFLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLGFBQW9DLEVBQ3BDLEtBQWM7SUFFZCxPQUFPLGVBQWUsQ0FBQyxhQUFhLENBQUM7UUFDbkMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTyxFQUFFLEtBQU0sQ0FBQztRQUM3QyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQVk7SUFDMUMsT0FBTztRQUNMLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJO1FBQ3JDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7S0FDakMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJ0Bqc3ZlcnNlL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgSW5saW5lTG9hZGVyLFxuICBMb2FkZWRFdmVudCxcbiAgUHJvdmlkZXJTY29wZSxcbiAgVHJhbnNsb2NvU2NvcGUsXG59IGZyb20gJy4uL3RyYW5zbG9jby50eXBlcyc7XG5cbi8qXG4gKiBAZXhhbXBsZVxuICpcbiAqIGdpdmVuOiBsYXp5LXBhZ2UvZW4gPT4gbGF6eS1wYWdlXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NvcGVGcm9tTGFuZyhsYW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWxhbmcpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBzcGxpdCA9IGxhbmcuc3BsaXQoJy8nKTtcbiAgc3BsaXQucG9wKCk7XG5cbiAgcmV0dXJuIHNwbGl0LmpvaW4oJy8nKTtcbn1cblxuLypcbiAqIEBleGFtcGxlXG4gKlxuICogZ2l2ZW46IGxhenktcGFnZS9lbiA9PiBlblxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExhbmdGcm9tU2NvcGUobGFuZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFsYW5nKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIGxhbmcuc3BsaXQoJy8nKS5wb3AoKSE7XG59XG5cbmZ1bmN0aW9uIHByZXBlbmRTY29wZShpbmxpbmVMb2FkZXI6IElubGluZUxvYWRlciwgc2NvcGU6IHN0cmluZykge1xuICByZXR1cm4gT2JqZWN0LmtleXMoaW5saW5lTG9hZGVyKS5yZWR1Y2UoXG4gICAgKGFjYywgbGFuZykgPT4ge1xuICAgICAgYWNjW2Ake3Njb3BlfS8ke2xhbmd9YF0gPSBpbmxpbmVMb2FkZXJbbGFuZ107XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBJbmxpbmVMb2FkZXJba2V5b2YgSW5saW5lTG9hZGVyXT4sXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Njb3BlT2JqZWN0KGl0ZW06IGFueSk6IGl0ZW0gaXMgUHJvdmlkZXJTY29wZSB7XG4gIHJldHVybiB0eXBlb2YgaXRlbT8uc2NvcGUgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW5saW5lTG9hZGVyKGl0ZW06IGFueSk6IGl0ZW0gaXMgUHJvdmlkZXJTY29wZSB7XG4gIHJldHVybiBpdGVtPy5sb2FkZXIgJiYgaXNPYmplY3QoaXRlbS5sb2FkZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUlubGluZUxvYWRlcihcbiAgcHJvdmlkZXJTY29wZTogVHJhbnNsb2NvU2NvcGUgfCBudWxsLFxuICBzY29wZT86IHN0cmluZyxcbik6IElubGluZUxvYWRlciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBoYXNJbmxpbmVMb2FkZXIocHJvdmlkZXJTY29wZSlcbiAgICA/IHByZXBlbmRTY29wZShwcm92aWRlclNjb3BlLmxvYWRlciEsIHNjb3BlISlcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV2ZW50UGF5bG9hZChsYW5nOiBzdHJpbmcpOiBMb2FkZWRFdmVudFsncGF5bG9hZCddIHtcbiAgcmV0dXJuIHtcbiAgICBzY29wZTogZ2V0U2NvcGVGcm9tTGFuZyhsYW5nKSB8fCBudWxsLFxuICAgIGxhbmdOYW1lOiBnZXRMYW5nRnJvbVNjb3BlKGxhbmcpLFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdXRpbHMvdHlwZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSGFzaE1hcDxUID0gYW55PiA9IFJlY29yZDxzdHJpbmcsIFQ+O1xuIl19
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, Injectable, Injector, Inject, DestroyRef, Optional, Component, Input, TemplateRef, ChangeDetectorRef, ElementRef, ViewContainerRef, Renderer2, Directive, Pipe, NgModule, makeEnvironmentProviders, APP_INITIALIZER, assertInInjectionContext, runInInjectionContext, isSignal, computed } from '@angular/core';
|
|
3
|
-
import { of,
|
|
3
|
+
import { of, from, map, Subject, BehaviorSubject, forkJoin, retry, tap, catchError, shareReplay, switchMap, combineLatest, EMPTY, take } from 'rxjs';
|
|
4
4
|
import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { isString, isDefined, isObject, isFunction, isNil, isEmpty, size, toCamelCase } from '@jsverse/utils';
|
|
5
6
|
|
|
6
7
|
class DefaultLoader {
|
|
7
8
|
translations;
|
|
@@ -12,138 +13,9 @@ class DefaultLoader {
|
|
|
12
13
|
return of(this.translations.get(lang) || {});
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
|
-
const TRANSLOCO_LOADER = new InjectionToken(
|
|
16
|
+
const TRANSLOCO_LOADER = new InjectionToken(ngDevMode ? 'TRANSLOCO_LOADER' : '');
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
if (!obj) {
|
|
19
|
-
return obj;
|
|
20
|
-
}
|
|
21
|
-
/* For cases where the key is like: 'general.something.thing' */
|
|
22
|
-
if (Object.prototype.hasOwnProperty.call(obj, path)) {
|
|
23
|
-
return obj[path];
|
|
24
|
-
}
|
|
25
|
-
return path.split('.').reduce((p, c) => p?.[c], obj);
|
|
26
|
-
}
|
|
27
|
-
function setValue(obj, prop, val) {
|
|
28
|
-
obj = { ...obj };
|
|
29
|
-
const split = prop.split('.');
|
|
30
|
-
const lastIndex = split.length - 1;
|
|
31
|
-
split.reduce((acc, part, index) => {
|
|
32
|
-
if (index === lastIndex) {
|
|
33
|
-
acc[part] = val;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
acc[part] = Array.isArray(acc[part])
|
|
37
|
-
? acc[part].slice()
|
|
38
|
-
: { ...acc[part] };
|
|
39
|
-
}
|
|
40
|
-
return acc && acc[part];
|
|
41
|
-
}, obj);
|
|
42
|
-
return obj;
|
|
43
|
-
}
|
|
44
|
-
function size(collection) {
|
|
45
|
-
if (!collection) {
|
|
46
|
-
return 0;
|
|
47
|
-
}
|
|
48
|
-
if (Array.isArray(collection)) {
|
|
49
|
-
return collection.length;
|
|
50
|
-
}
|
|
51
|
-
if (isObject(collection)) {
|
|
52
|
-
return Object.keys(collection).length;
|
|
53
|
-
}
|
|
54
|
-
return collection ? collection.length : 0;
|
|
55
|
-
}
|
|
56
|
-
function isEmpty(collection) {
|
|
57
|
-
return size(collection) === 0;
|
|
58
|
-
}
|
|
59
|
-
function isFunction(val) {
|
|
60
|
-
return typeof val === 'function';
|
|
61
|
-
}
|
|
62
|
-
function isString(val) {
|
|
63
|
-
return typeof val === 'string';
|
|
64
|
-
}
|
|
65
|
-
function isNumber(val) {
|
|
66
|
-
return typeof val === 'number';
|
|
67
|
-
}
|
|
68
|
-
function isObject(item) {
|
|
69
|
-
return !!item && typeof item === 'object' && !Array.isArray(item);
|
|
70
|
-
}
|
|
71
|
-
function coerceArray(value) {
|
|
72
|
-
return Array.isArray(value) ? value : [value];
|
|
73
|
-
}
|
|
74
|
-
/*
|
|
75
|
-
* @example
|
|
76
|
-
*
|
|
77
|
-
* given: path-to-happiness => pathToHappiness
|
|
78
|
-
* given: path_to_happiness => pathToHappiness
|
|
79
|
-
* given: path-to_happiness => pathToHappiness
|
|
80
|
-
*
|
|
81
|
-
*/
|
|
82
|
-
function toCamelCase(str) {
|
|
83
|
-
return str
|
|
84
|
-
.replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => index == 0 ? word.toLowerCase() : word.toUpperCase())
|
|
85
|
-
.replace(/\s+|_|-|\//g, '');
|
|
86
|
-
}
|
|
87
|
-
function isBrowser() {
|
|
88
|
-
return typeof window !== 'undefined';
|
|
89
|
-
}
|
|
90
|
-
function isNil(value) {
|
|
91
|
-
return value === null || value === undefined;
|
|
92
|
-
}
|
|
93
|
-
function isDefined(value) {
|
|
94
|
-
return isNil(value) === false;
|
|
95
|
-
}
|
|
96
|
-
function toNumber(value) {
|
|
97
|
-
if (isNumber(value))
|
|
98
|
-
return value;
|
|
99
|
-
if (isString(value) && !isNaN(Number(value) - parseFloat(value))) {
|
|
100
|
-
return Number(value);
|
|
101
|
-
}
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
function isScopeObject(item) {
|
|
105
|
-
return item && typeof item.scope === 'string';
|
|
106
|
-
}
|
|
107
|
-
function hasInlineLoader(item) {
|
|
108
|
-
return item && isObject(item.loader);
|
|
109
|
-
}
|
|
110
|
-
function flatten(obj) {
|
|
111
|
-
const result = {};
|
|
112
|
-
function recurse(curr, prop) {
|
|
113
|
-
if (curr === null) {
|
|
114
|
-
result[prop] = null;
|
|
115
|
-
}
|
|
116
|
-
else if (isObject(curr)) {
|
|
117
|
-
for (const [key, value] of Object.entries(curr)) {
|
|
118
|
-
recurse(value, prop ? `${prop}.${key}` : key);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
result[prop] = curr;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
recurse(obj, '');
|
|
126
|
-
return result;
|
|
127
|
-
}
|
|
128
|
-
function unflatten(obj) {
|
|
129
|
-
const result = {};
|
|
130
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
131
|
-
const keys = key.split('.');
|
|
132
|
-
let current = result;
|
|
133
|
-
keys.forEach((key, i) => {
|
|
134
|
-
if (i === keys.length - 1) {
|
|
135
|
-
current[key] = value;
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
current[key] ??= {};
|
|
139
|
-
current = current[key];
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
return result;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
const TRANSLOCO_CONFIG = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'TRANSLOCO_CONFIG' : '', {
|
|
18
|
+
const TRANSLOCO_CONFIG = new InjectionToken(ngDevMode ? 'TRANSLOCO_CONFIG' : '', {
|
|
147
19
|
providedIn: 'root',
|
|
148
20
|
factory: () => defaultConfig,
|
|
149
21
|
});
|
|
@@ -186,7 +58,35 @@ function translocoConfig(config = {}) {
|
|
|
186
58
|
};
|
|
187
59
|
}
|
|
188
60
|
|
|
189
|
-
|
|
61
|
+
function getValue(obj, path) {
|
|
62
|
+
if (!obj) {
|
|
63
|
+
return obj;
|
|
64
|
+
}
|
|
65
|
+
/* For cases where the key is like: 'general.something.thing' */
|
|
66
|
+
if (Object.prototype.hasOwnProperty.call(obj, path)) {
|
|
67
|
+
return obj[path];
|
|
68
|
+
}
|
|
69
|
+
return path.split('.').reduce((p, c) => p?.[c], obj);
|
|
70
|
+
}
|
|
71
|
+
function setValue(obj, prop, val) {
|
|
72
|
+
obj = { ...obj };
|
|
73
|
+
const split = prop.split('.');
|
|
74
|
+
const lastIndex = split.length - 1;
|
|
75
|
+
split.reduce((acc, part, index) => {
|
|
76
|
+
if (index === lastIndex) {
|
|
77
|
+
acc[part] = val;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
acc[part] = Array.isArray(acc[part])
|
|
81
|
+
? acc[part].slice()
|
|
82
|
+
: { ...acc[part] };
|
|
83
|
+
}
|
|
84
|
+
return acc && acc[part];
|
|
85
|
+
}, obj);
|
|
86
|
+
return obj;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const TRANSLOCO_TRANSPILER = new InjectionToken(ngDevMode ? 'TRANSLOCO_TRANSPILER' : '');
|
|
190
90
|
class DefaultTranspiler {
|
|
191
91
|
config = inject(TRANSLOCO_CONFIG, { optional: true }) ?? defaultConfig;
|
|
192
92
|
get interpolationMatcher() {
|
|
@@ -330,9 +230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
330
230
|
type: Injectable
|
|
331
231
|
}] });
|
|
332
232
|
|
|
333
|
-
const TRANSLOCO_MISSING_HANDLER = new InjectionToken(
|
|
334
|
-
? 'TRANSLOCO_MISSING_HANDLER'
|
|
335
|
-
: '');
|
|
233
|
+
const TRANSLOCO_MISSING_HANDLER = new InjectionToken(ngDevMode ? 'TRANSLOCO_MISSING_HANDLER' : '');
|
|
336
234
|
class DefaultMissingHandler {
|
|
337
235
|
handle(key, config) {
|
|
338
236
|
if (config.missingHandler.logMissingKey && !config.prodMode) {
|
|
@@ -348,7 +246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
348
246
|
type: Injectable
|
|
349
247
|
}] });
|
|
350
248
|
|
|
351
|
-
const TRANSLOCO_INTERCEPTOR = new InjectionToken(
|
|
249
|
+
const TRANSLOCO_INTERCEPTOR = new InjectionToken(ngDevMode ? 'TRANSLOCO_INTERCEPTOR' : '');
|
|
352
250
|
class DefaultInterceptor {
|
|
353
251
|
preSaveTranslation(translation) {
|
|
354
252
|
return translation;
|
|
@@ -363,9 +261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
363
261
|
type: Injectable
|
|
364
262
|
}] });
|
|
365
263
|
|
|
366
|
-
const TRANSLOCO_FALLBACK_STRATEGY = new InjectionToken(
|
|
367
|
-
? 'TRANSLOCO_FALLBACK_STRATEGY'
|
|
368
|
-
: '');
|
|
264
|
+
const TRANSLOCO_FALLBACK_STRATEGY = new InjectionToken(ngDevMode ? 'TRANSLOCO_FALLBACK_STRATEGY' : '');
|
|
369
265
|
class DefaultFallbackStrategy {
|
|
370
266
|
userConfig;
|
|
371
267
|
constructor(userConfig) {
|
|
@@ -388,6 +284,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
388
284
|
args: [TRANSLOCO_CONFIG]
|
|
389
285
|
}] }] });
|
|
390
286
|
|
|
287
|
+
function resolveLoader(options) {
|
|
288
|
+
const { path, inlineLoader, mainLoader, data } = options;
|
|
289
|
+
if (inlineLoader) {
|
|
290
|
+
const pathLoader = inlineLoader[path];
|
|
291
|
+
if (isFunction(pathLoader) === false) {
|
|
292
|
+
throw `You're using an inline loader but didn't provide a loader for ${path}`;
|
|
293
|
+
}
|
|
294
|
+
return inlineLoader[path]().then((res) => res.default ? res.default : res);
|
|
295
|
+
}
|
|
296
|
+
return mainLoader.getTranslation(path, data);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
function getFallbacksLoaders({ mainLoader, path, data, fallbackPath, inlineLoader, }) {
|
|
300
|
+
const paths = fallbackPath ? [path, fallbackPath] : [path];
|
|
301
|
+
return paths.map((path) => {
|
|
302
|
+
const loader = resolveLoader({ path, mainLoader, inlineLoader, data });
|
|
303
|
+
return from(loader).pipe(map((translation) => ({
|
|
304
|
+
translation,
|
|
305
|
+
lang: path,
|
|
306
|
+
})));
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
function flatten(obj) {
|
|
311
|
+
const result = {};
|
|
312
|
+
function recurse(curr, prop) {
|
|
313
|
+
if (curr === null) {
|
|
314
|
+
result[prop] = null;
|
|
315
|
+
}
|
|
316
|
+
else if (isObject(curr)) {
|
|
317
|
+
for (const [key, value] of Object.entries(curr)) {
|
|
318
|
+
recurse(value, prop ? `${prop}.${key}` : key);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
result[prop] = curr;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
recurse(obj, '');
|
|
326
|
+
return result;
|
|
327
|
+
}
|
|
328
|
+
function unflatten(obj) {
|
|
329
|
+
const result = {};
|
|
330
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
331
|
+
const keys = key.split('.');
|
|
332
|
+
let current = result;
|
|
333
|
+
keys.forEach((key, i) => {
|
|
334
|
+
if (i === keys.length - 1) {
|
|
335
|
+
current[key] = value;
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
current[key] ??= {};
|
|
339
|
+
current = current[key];
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
return result;
|
|
344
|
+
}
|
|
345
|
+
|
|
391
346
|
/*
|
|
392
347
|
* @example
|
|
393
348
|
*
|
|
@@ -414,39 +369,18 @@ function getLangFromScope(lang) {
|
|
|
414
369
|
}
|
|
415
370
|
return lang.split('/').pop();
|
|
416
371
|
}
|
|
417
|
-
/**
|
|
418
|
-
* @example
|
|
419
|
-
*
|
|
420
|
-
* getPipeValue('todos|scoped', 'scoped') [true, 'todos']
|
|
421
|
-
* getPipeValue('en|static', 'static') [true, 'en']
|
|
422
|
-
* getPipeValue('en', 'static') [false, 'en']
|
|
423
|
-
*/
|
|
424
|
-
function getPipeValue(str, value, char = '|') {
|
|
425
|
-
if (isString(str)) {
|
|
426
|
-
const splitted = str.split(char);
|
|
427
|
-
const lastItem = splitted.pop();
|
|
428
|
-
return lastItem === value ? [true, splitted.toString()] : [false, lastItem];
|
|
429
|
-
}
|
|
430
|
-
return [false, ''];
|
|
431
|
-
}
|
|
432
|
-
function shouldListenToLangChanges(service, lang) {
|
|
433
|
-
const [hasStatic] = getPipeValue(lang, 'static');
|
|
434
|
-
if (!hasStatic) {
|
|
435
|
-
// If we didn't get 'lang|static' check if it's set in the global level
|
|
436
|
-
return !!service.config.reRenderOnLangChange;
|
|
437
|
-
}
|
|
438
|
-
// We have 'lang|static' so don't listen to lang changes
|
|
439
|
-
return false;
|
|
440
|
-
}
|
|
441
|
-
function listenOrNotOperator(listenToLangChange) {
|
|
442
|
-
return listenToLangChange ? (source) => source : take(1);
|
|
443
|
-
}
|
|
444
372
|
function prependScope(inlineLoader, scope) {
|
|
445
373
|
return Object.keys(inlineLoader).reduce((acc, lang) => {
|
|
446
374
|
acc[`${scope}/${lang}`] = inlineLoader[lang];
|
|
447
375
|
return acc;
|
|
448
376
|
}, {});
|
|
449
377
|
}
|
|
378
|
+
function isScopeObject(item) {
|
|
379
|
+
return typeof item?.scope === 'string';
|
|
380
|
+
}
|
|
381
|
+
function hasInlineLoader(item) {
|
|
382
|
+
return item?.loader && isObject(item.loader);
|
|
383
|
+
}
|
|
450
384
|
function resolveInlineLoader(providerScope, scope) {
|
|
451
385
|
return hasInlineLoader(providerScope)
|
|
452
386
|
? prependScope(providerScope.loader, scope)
|
|
@@ -459,29 +393,6 @@ function getEventPayload(lang) {
|
|
|
459
393
|
};
|
|
460
394
|
}
|
|
461
395
|
|
|
462
|
-
function resolveLoader(options) {
|
|
463
|
-
const { path, inlineLoader, mainLoader, data } = options;
|
|
464
|
-
if (inlineLoader) {
|
|
465
|
-
const pathLoader = inlineLoader[path];
|
|
466
|
-
if (isFunction(pathLoader) === false) {
|
|
467
|
-
throw `You're using an inline loader but didn't provide a loader for ${path}`;
|
|
468
|
-
}
|
|
469
|
-
return inlineLoader[path]().then((res) => res.default ? res.default : res);
|
|
470
|
-
}
|
|
471
|
-
return mainLoader.getTranslation(path, data);
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
function getFallbacksLoaders({ mainLoader, path, data, fallbackPath, inlineLoader, }) {
|
|
475
|
-
const paths = fallbackPath ? [path, fallbackPath] : [path];
|
|
476
|
-
return paths.map((path) => {
|
|
477
|
-
const loader = resolveLoader({ path, mainLoader, inlineLoader, data });
|
|
478
|
-
return from(loader).pipe(map((translation) => ({
|
|
479
|
-
translation,
|
|
480
|
-
lang: path,
|
|
481
|
-
})));
|
|
482
|
-
});
|
|
483
|
-
}
|
|
484
|
-
|
|
485
396
|
let service;
|
|
486
397
|
function translate(key, params = {}, lang) {
|
|
487
398
|
return service.translate(key, params, lang);
|
|
@@ -1093,13 +1004,40 @@ class TemplateHandler {
|
|
|
1093
1004
|
}
|
|
1094
1005
|
}
|
|
1095
1006
|
|
|
1096
|
-
const TRANSLOCO_LANG = new InjectionToken(
|
|
1007
|
+
const TRANSLOCO_LANG = new InjectionToken(ngDevMode ? 'TRANSLOCO_LANG' : '');
|
|
1097
1008
|
|
|
1098
|
-
const TRANSLOCO_LOADING_TEMPLATE = new InjectionToken(
|
|
1099
|
-
? 'TRANSLOCO_LOADING_TEMPLATE'
|
|
1100
|
-
: '');
|
|
1009
|
+
const TRANSLOCO_LOADING_TEMPLATE = new InjectionToken(ngDevMode ? 'TRANSLOCO_LOADING_TEMPLATE' : '');
|
|
1101
1010
|
|
|
1102
|
-
const TRANSLOCO_SCOPE = new InjectionToken(
|
|
1011
|
+
const TRANSLOCO_SCOPE = new InjectionToken(ngDevMode ? 'TRANSLOCO_SCOPE' : '');
|
|
1012
|
+
|
|
1013
|
+
/**
|
|
1014
|
+
* @example
|
|
1015
|
+
*
|
|
1016
|
+
* getPipeValue('todos|scoped', 'scoped') [true, 'todos']
|
|
1017
|
+
* getPipeValue('en|static', 'static') [true, 'en']
|
|
1018
|
+
* getPipeValue('en', 'static') [false, 'en']
|
|
1019
|
+
*/
|
|
1020
|
+
function getPipeValue(str, value, char = '|') {
|
|
1021
|
+
if (isString(str)) {
|
|
1022
|
+
const splitted = str.split(char);
|
|
1023
|
+
const lastItem = splitted.pop();
|
|
1024
|
+
return lastItem === value ? [true, splitted.toString()] : [false, lastItem];
|
|
1025
|
+
}
|
|
1026
|
+
return [false, ''];
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
function shouldListenToLangChanges(service, lang) {
|
|
1030
|
+
const [hasStatic] = getPipeValue(lang, 'static');
|
|
1031
|
+
if (!hasStatic) {
|
|
1032
|
+
// If we didn't get 'lang|static' check if it's set in the global level
|
|
1033
|
+
return !!service.config.reRenderOnLangChange;
|
|
1034
|
+
}
|
|
1035
|
+
// We have 'lang|static' so don't listen to lang changes
|
|
1036
|
+
return false;
|
|
1037
|
+
}
|
|
1038
|
+
function listenOrNotOperator(listenToLangChange) {
|
|
1039
|
+
return listenToLangChange ? (source) => source : take(1);
|
|
1040
|
+
}
|
|
1103
1041
|
|
|
1104
1042
|
class LangResolver {
|
|
1105
1043
|
initialized = false;
|
|
@@ -1587,33 +1525,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
1587
1525
|
}]
|
|
1588
1526
|
}] });
|
|
1589
1527
|
|
|
1590
|
-
/**
|
|
1591
|
-
* Returns the language code name from the browser, e.g. "en"
|
|
1592
|
-
*/
|
|
1593
|
-
function getBrowserLang() {
|
|
1594
|
-
let browserLang = getBrowserCultureLang();
|
|
1595
|
-
if (!browserLang || !isBrowser()) {
|
|
1596
|
-
return undefined;
|
|
1597
|
-
}
|
|
1598
|
-
if (browserLang.indexOf('-') !== -1) {
|
|
1599
|
-
browserLang = browserLang.split('-')[0];
|
|
1600
|
-
}
|
|
1601
|
-
if (browserLang.indexOf('_') !== -1) {
|
|
1602
|
-
browserLang = browserLang.split('_')[0];
|
|
1603
|
-
}
|
|
1604
|
-
return browserLang;
|
|
1605
|
-
}
|
|
1606
|
-
/**
|
|
1607
|
-
* Returns the culture language code name from the browser, e.g. "en-US"
|
|
1608
|
-
*/
|
|
1609
|
-
function getBrowserCultureLang() {
|
|
1610
|
-
if (!isBrowser()) {
|
|
1611
|
-
return '';
|
|
1612
|
-
}
|
|
1613
|
-
const navigator = window.navigator;
|
|
1614
|
-
return navigator.languages?.[0] ?? navigator.language;
|
|
1615
|
-
}
|
|
1616
|
-
|
|
1617
1528
|
/**
|
|
1618
1529
|
* Gets the translated value of a key as Signal
|
|
1619
1530
|
*
|
|
@@ -1708,9 +1619,39 @@ function resolveScope(scope) {
|
|
|
1708
1619
|
return scope;
|
|
1709
1620
|
}
|
|
1710
1621
|
|
|
1622
|
+
function isBrowser() {
|
|
1623
|
+
return typeof window !== 'undefined';
|
|
1624
|
+
}
|
|
1625
|
+
/**
|
|
1626
|
+
* Returns the language code name from the browser, e.g. "en"
|
|
1627
|
+
*/
|
|
1628
|
+
function getBrowserLang() {
|
|
1629
|
+
let browserLang = getBrowserCultureLang();
|
|
1630
|
+
if (!browserLang || !isBrowser()) {
|
|
1631
|
+
return undefined;
|
|
1632
|
+
}
|
|
1633
|
+
if (browserLang.indexOf('-') !== -1) {
|
|
1634
|
+
browserLang = browserLang.split('-')[0];
|
|
1635
|
+
}
|
|
1636
|
+
if (browserLang.indexOf('_') !== -1) {
|
|
1637
|
+
browserLang = browserLang.split('_')[0];
|
|
1638
|
+
}
|
|
1639
|
+
return browserLang;
|
|
1640
|
+
}
|
|
1641
|
+
/**
|
|
1642
|
+
* Returns the culture language code name from the browser, e.g. "en-US"
|
|
1643
|
+
*/
|
|
1644
|
+
function getBrowserCultureLang() {
|
|
1645
|
+
if (!isBrowser()) {
|
|
1646
|
+
return '';
|
|
1647
|
+
}
|
|
1648
|
+
const navigator = window.navigator;
|
|
1649
|
+
return navigator.languages?.[0] ?? navigator.language;
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1711
1652
|
/**
|
|
1712
1653
|
* Generated bundle index. Do not edit.
|
|
1713
1654
|
*/
|
|
1714
1655
|
|
|
1715
|
-
export { DefaultFallbackStrategy, DefaultInterceptor, DefaultMissingHandler, DefaultTranspiler, FunctionalTranspiler, TRANSLOCO_CONFIG, TRANSLOCO_FALLBACK_STRATEGY, TRANSLOCO_INTERCEPTOR, TRANSLOCO_LANG, TRANSLOCO_LOADER, TRANSLOCO_LOADING_TEMPLATE, TRANSLOCO_MISSING_HANDLER, TRANSLOCO_SCOPE, TRANSLOCO_TRANSPILER, TestingLoader, TranslocoDirective, TranslocoModule, TranslocoPipe, TranslocoService, TranslocoTestingModule,
|
|
1656
|
+
export { DefaultFallbackStrategy, DefaultInterceptor, DefaultMissingHandler, DefaultTranspiler, FunctionalTranspiler, TRANSLOCO_CONFIG, TRANSLOCO_FALLBACK_STRATEGY, TRANSLOCO_INTERCEPTOR, TRANSLOCO_LANG, TRANSLOCO_LOADER, TRANSLOCO_LOADING_TEMPLATE, TRANSLOCO_MISSING_HANDLER, TRANSLOCO_SCOPE, TRANSLOCO_TRANSPILER, TestingLoader, TranslocoDirective, TranslocoModule, TranslocoPipe, TranslocoService, TranslocoTestingModule, defaultConfig, getBrowserCultureLang, getBrowserLang, getFunctionArgs, getValue, isBrowser, provideTransloco, provideTranslocoConfig, provideTranslocoFallbackStrategy, provideTranslocoInterceptor, provideTranslocoLang, provideTranslocoLoader, provideTranslocoLoadingTpl, provideTranslocoMissingHandler, provideTranslocoScope, provideTranslocoTranspiler, setValue, translate, translateObject, translateObjectSignal, translateSignal, translocoConfig };
|
|
1716
1657
|
//# sourceMappingURL=jsverse-transloco.mjs.map
|