@jsverse/transloco-persist-lang 7.0.2 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
# Transloco Persist Language
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Discover more about this plugin and how it can enhance your workflow in the [official Transloco documentation](https://jsverse.gitbook.io/transloco/plugins/persist-lang).
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { getBrowserCultureLang, getBrowserLang, isBrowser,
|
|
1
|
+
import { getBrowserCultureLang, getBrowserLang, isBrowser, TranslocoService, } from '@jsverse/transloco';
|
|
2
|
+
import { isFunction } from '@jsverse/utils';
|
|
2
3
|
import { skip } from 'rxjs/operators';
|
|
3
4
|
import { inject, Injectable } from '@angular/core';
|
|
4
5
|
import { TRANSLOCO_PERSIST_LANG_CONFIG, TRANSLOCO_PERSIST_LANG_STORAGE, } from './persist-lang.config';
|
|
@@ -61,11 +62,11 @@ export class TranslocoPersistLangService {
|
|
|
61
62
|
// callback within its `destination` property, preventing classes from being GC'd.
|
|
62
63
|
this.subscription = null;
|
|
63
64
|
}
|
|
64
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
65
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
65
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TranslocoPersistLangService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
66
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TranslocoPersistLangService, providedIn: 'root' });
|
|
66
67
|
}
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TranslocoPersistLangService, decorators: [{
|
|
68
69
|
type: Injectable,
|
|
69
70
|
args: [{ providedIn: 'root' }]
|
|
70
71
|
}], ctorParameters: () => [] });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdC1sYW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3RyYW5zbG9jby1wZXJzaXN0LWxhbmcvc3JjL2xpYi9wZXJzaXN0LWxhbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLDhCQUE4QixHQUMvQixNQUFNLHVCQUF1QixDQUFDOztBQUcvQixNQUFNLE9BQU8sMkJBQTJCO0lBQzlCLE9BQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuQyxPQUFPLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDakQsTUFBTSxHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBRS9DLFlBQVksR0FBd0IsSUFBSSxDQUFDO0lBQ3pDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxlQUFlLENBQUM7SUFFL0Q7UUFDRSxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEUsQ0FBQztJQUVELEtBQUs7UUFDSCxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLElBQUk7UUFDVixrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3BELElBQUksVUFBVSxHQUFHLFVBQVUsSUFBSSxXQUFXLENBQUM7UUFFM0MsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sV0FBVyxHQUFHLHFCQUFxQixFQUFFLENBQUM7WUFDNUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNqQyxXQUFXO2dCQUNYLFdBQVc7Z0JBQ1gsV0FBVztnQkFDWCxVQUFVO2FBQ1gsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLElBQUksQ0FBQyxJQUFZO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUNULGdCQUFnQixJQUFJLGFBQWEsRUFDakMsbUNBQW1DLENBQ3BDLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsb0dBQW9HO1FBQ3BHLGtGQUFrRjtRQUNsRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO3VHQXZFVSwyQkFBMkI7MkdBQTNCLDJCQUEyQixjQURkLE1BQU07OzJGQUNuQiwyQkFBMkI7a0JBRHZDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2V0QnJvd3NlckN1bHR1cmVMYW5nLFxuICBnZXRCcm93c2VyTGFuZyxcbiAgaXNCcm93c2VyLFxuICBUcmFuc2xvY29TZXJ2aWNlLFxufSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJ0Bqc3ZlcnNlL3V0aWxzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFRSQU5TTE9DT19QRVJTSVNUX0xBTkdfQ09ORklHLFxuICBUUkFOU0xPQ09fUEVSU0lTVF9MQU5HX1NUT1JBR0UsXG59IGZyb20gJy4vcGVyc2lzdC1sYW5nLmNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVHJhbnNsb2NvUGVyc2lzdExhbmdTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KFRyYW5zbG9jb1NlcnZpY2UpO1xuICBwcml2YXRlIHN0b3JhZ2UgPSBpbmplY3QoVFJBTlNMT0NPX1BFUlNJU1RfTEFOR19TVE9SQUdFKTtcbiAgcHJpdmF0ZSBjb25maWcgPSBpbmplY3QoVFJBTlNMT0NPX1BFUlNJU1RfTEFOR19DT05GSUcpO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdG9yYWdlS2V5ID0gdGhpcy5jb25maWcuc3RvcmFnZUtleSB8fCAndHJhbnNsb2NvTGFuZyc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYWNoZWRMYW5nKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiBpc0Jyb3dzZXIoKSA/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleSkgOiBudWxsO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgaXNCcm93c2VyKCkgJiYgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5zdG9yYWdlS2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RvcmFnZU9uTGFuZ0NoYW5nZSgpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2UubGFuZ0NoYW5nZXMkLnBpcGUoc2tpcCgxKSkuc3Vic2NyaWJlKChsYW5nKSA9PiB7XG4gICAgICB0aGlzLnNhdmUobGFuZyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgLy8gV2UgbmVlZCB0byBmaXJzdCBzZXQgdGhlIGNhY2hlZCBsYW5nIGFuZCB0aGVuIGxpc3RlbiB0byBjaGFuZ2VzXG4gICAgdGhpcy5zZXRBY3RpdmVMYW5nKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnVwZGF0ZVN0b3JhZ2VPbkxhbmdDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlTGFuZygpIHtcbiAgICBjb25zdCBjYWNoZWRMYW5nID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KTtcbiAgICBjb25zdCBkZWZhdWx0TGFuZyA9IHRoaXMuc2VydmljZS5jb25maWcuZGVmYXVsdExhbmc7XG4gICAgbGV0IGFjdGl2ZUxhbmcgPSBjYWNoZWRMYW5nIHx8IGRlZmF1bHRMYW5nO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24odGhpcy5jb25maWcuZ2V0TGFuZ0ZuKSkge1xuICAgICAgY29uc3QgYnJvd3NlckxhbmcgPSBnZXRCcm93c2VyTGFuZygpO1xuICAgICAgY29uc3QgY3VsdHVyZUxhbmcgPSBnZXRCcm93c2VyQ3VsdHVyZUxhbmcoKTtcbiAgICAgIGFjdGl2ZUxhbmcgPSB0aGlzLmNvbmZpZy5nZXRMYW5nRm4oe1xuICAgICAgICBicm93c2VyTGFuZyxcbiAgICAgICAgZGVmYXVsdExhbmcsXG4gICAgICAgIGN1bHR1cmVMYW5nLFxuICAgICAgICBjYWNoZWRMYW5nLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGFjdGl2ZUxhbmcpIHtcbiAgICAgIHRoaXMuc2VydmljZS5zZXRBY3RpdmVMYW5nKGFjdGl2ZUxhbmcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2F2ZShsYW5nOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZS5jb25maWcucHJvZE1vZGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgJWMg8J+NuyBTYXZpbmcgJHtsYW5nfSB0byBzdG9yYWdlYCxcbiAgICAgICAgJ2JhY2tncm91bmQ6ICNmZmY7IGNvbG9yOiAjMjE5NkYzOycsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXksIGxhbmcpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgLy8gQ2FyZXRha2VyIG5vdGU6IGl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVwIHJlZmVyZW5jZXMgdG8gc3Vic2NyaXB0aW9ucyBzaW5jZSB0aGV5IHNhdmUgdGhlIGBuZXh0YFxuICAgIC8vIGNhbGxiYWNrIHdpdGhpbiBpdHMgYGRlc3RpbmF0aW9uYCBwcm9wZXJ0eSwgcHJldmVudGluZyBjbGFzc2VzIGZyb20gYmVpbmcgR0MnZC5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { TranslocoService, isBrowser,
|
|
1
|
+
import { TranslocoService, isBrowser, getBrowserLang, getBrowserCultureLang } from '@jsverse/transloco';
|
|
2
|
+
import { isFunction } from '@jsverse/utils';
|
|
2
3
|
import { skip } from 'rxjs/operators';
|
|
3
4
|
import * as i0 from '@angular/core';
|
|
4
5
|
import { InjectionToken, inject, Injectable, makeEnvironmentProviders, APP_INITIALIZER } from '@angular/core';
|
|
@@ -64,10 +65,10 @@ class TranslocoPersistLangService {
|
|
|
64
65
|
// callback within its `destination` property, preventing classes from being GC'd.
|
|
65
66
|
this.subscription = null;
|
|
66
67
|
}
|
|
67
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
68
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
68
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TranslocoPersistLangService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TranslocoPersistLangService, providedIn: 'root' });
|
|
69
70
|
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TranslocoPersistLangService, decorators: [{
|
|
71
72
|
type: Injectable,
|
|
72
73
|
args: [{ providedIn: 'root' }]
|
|
73
74
|
}], ctorParameters: () => [] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsverse-transloco-persist-lang.mjs","sources":["../../../../libs/transloco-persist-lang/src/lib/persist-lang.config.ts","../../../../libs/transloco-persist-lang/src/lib/persist-lang.service.ts","../../../../libs/transloco-persist-lang/src/lib/cookie-storage.ts","../../../../libs/transloco-persist-lang/src/lib/persist-lang.providers.ts","../../../../libs/transloco-persist-lang/src/jsverse-transloco-persist-lang.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { PersistStorage } from './persist-lang.types';\n\nexport interface GetLangParams {\n cachedLang: string | null;\n browserLang?: string;\n cultureLang: string;\n defaultLang: string;\n}\n\nexport interface PersistLangConfig {\n storageKey?: string;\n getLangFn?(langs: GetLangParams): string;\n}\n\nexport const TRANSLOCO_PERSIST_LANG_STORAGE =\n new InjectionToken<PersistStorage>('TRANSLOCO_PERSIST_LANG_STORAGE');\n\nexport const TRANSLOCO_PERSIST_LANG_CONFIG =\n new InjectionToken<PersistLangConfig>('TRANSLOCO_PERSIST_LANG_CONFIG');\n","import {\n getBrowserCultureLang,\n getBrowserLang,\n isBrowser,\n
|
|
1
|
+
{"version":3,"file":"jsverse-transloco-persist-lang.mjs","sources":["../../../../libs/transloco-persist-lang/src/lib/persist-lang.config.ts","../../../../libs/transloco-persist-lang/src/lib/persist-lang.service.ts","../../../../libs/transloco-persist-lang/src/lib/cookie-storage.ts","../../../../libs/transloco-persist-lang/src/lib/persist-lang.providers.ts","../../../../libs/transloco-persist-lang/src/jsverse-transloco-persist-lang.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { PersistStorage } from './persist-lang.types';\n\nexport interface GetLangParams {\n cachedLang: string | null;\n browserLang?: string;\n cultureLang: string;\n defaultLang: string;\n}\n\nexport interface PersistLangConfig {\n storageKey?: string;\n getLangFn?(langs: GetLangParams): string;\n}\n\nexport const TRANSLOCO_PERSIST_LANG_STORAGE =\n new InjectionToken<PersistStorage>('TRANSLOCO_PERSIST_LANG_STORAGE');\n\nexport const TRANSLOCO_PERSIST_LANG_CONFIG =\n new InjectionToken<PersistLangConfig>('TRANSLOCO_PERSIST_LANG_CONFIG');\n","import {\n getBrowserCultureLang,\n getBrowserLang,\n isBrowser,\n TranslocoService,\n} from '@jsverse/transloco';\nimport { isFunction } from '@jsverse/utils';\nimport { Subscription } from 'rxjs';\nimport { skip } from 'rxjs/operators';\nimport { inject, Injectable, OnDestroy } from '@angular/core';\n\nimport {\n TRANSLOCO_PERSIST_LANG_CONFIG,\n TRANSLOCO_PERSIST_LANG_STORAGE,\n} from './persist-lang.config';\n\n@Injectable({ providedIn: 'root' })\nexport class TranslocoPersistLangService implements OnDestroy {\n private service = inject(TranslocoService);\n private storage = inject(TRANSLOCO_PERSIST_LANG_STORAGE);\n private config = inject(TRANSLOCO_PERSIST_LANG_CONFIG);\n\n private subscription: Subscription | null = null;\n private storageKey = this.config.storageKey || 'translocoLang';\n\n constructor() {\n if (isBrowser()) {\n this.init();\n }\n }\n\n getCachedLang(): string | null {\n return isBrowser() ? this.storage.getItem(this.storageKey) : null;\n }\n\n clear() {\n isBrowser() && this.storage.removeItem(this.storageKey);\n }\n\n private updateStorageOnLangChange(): Subscription {\n return this.service.langChanges$.pipe(skip(1)).subscribe((lang) => {\n this.save(lang);\n });\n }\n\n private init() {\n // We need to first set the cached lang and then listen to changes\n this.setActiveLang();\n this.subscription?.unsubscribe();\n this.subscription = this.updateStorageOnLangChange();\n }\n\n private setActiveLang() {\n const cachedLang = this.storage.getItem(this.storageKey);\n const defaultLang = this.service.config.defaultLang;\n let activeLang = cachedLang || defaultLang;\n\n if (isFunction(this.config.getLangFn)) {\n const browserLang = getBrowserLang();\n const cultureLang = getBrowserCultureLang();\n activeLang = this.config.getLangFn({\n browserLang,\n defaultLang,\n cultureLang,\n cachedLang,\n });\n }\n\n if (activeLang) {\n this.service.setActiveLang(activeLang);\n }\n }\n\n private save(lang: string) {\n if (!this.service.config.prodMode) {\n console.log(\n `%c 🍻 Saving ${lang} to storage`,\n 'background: #fff; color: #2196F3;',\n );\n }\n this.storage.setItem(this.storageKey, lang);\n }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n // Caretaker note: it's important to clean up references to subscriptions since they save the `next`\n // callback within its `destination` property, preventing classes from being GC'd.\n this.subscription = null;\n }\n}\n","import { PersistStorage } from './persist-lang.types';\n\nconst millisecondsInHour = 3_600_000;\nconst hoursInMonth = 720;\n\nexport function cookiesStorage(cookieExpiry = hoursInMonth): PersistStorage {\n return {\n getItem(key: string) {\n const name = encodeURIComponent(key);\n const regexp = new RegExp(\n '(?:^' + name + '|;\\\\s*' + name + ')=(.*?)(?:;|$)',\n 'g',\n );\n const result = regexp.exec(document.cookie);\n\n return result ? decodeURIComponent(result[1]) : null;\n },\n setItem(key: string, value: string) {\n const name = encodeURIComponent(key);\n const date = new Date();\n date.setTime(date.getTime() + cookieExpiry * millisecondsInHour);\n document.cookie = `${name}=${encodeURIComponent(\n value,\n )};expires=${date.toUTCString()};path=/`;\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n removeItem(): void {},\n };\n}\n","import {\n APP_INITIALIZER,\n ClassProvider,\n ExistingProvider,\n FactoryProvider,\n makeEnvironmentProviders,\n ValueProvider,\n} from '@angular/core';\n\nimport {\n PersistLangConfig,\n TRANSLOCO_PERSIST_LANG_CONFIG,\n TRANSLOCO_PERSIST_LANG_STORAGE,\n} from './persist-lang.config';\nimport { TranslocoPersistLangService } from './persist-lang.service';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\ntype providerValue =\n | Pick<ValueProvider, 'useValue'>\n | Pick<ClassProvider, 'useClass'>\n | Pick<ExistingProvider, 'useExisting'>\n | Pick<FactoryProvider, 'useFactory' | 'deps'>;\nexport function provideTranslocoPersistLang({\n storage,\n ...config\n}: PersistLangConfig & { storage: providerValue }) {\n return makeEnvironmentProviders([\n {\n provide: TRANSLOCO_PERSIST_LANG_CONFIG,\n useValue: config ?? {},\n },\n // Initialize the service\n {\n provide: APP_INITIALIZER,\n useFactory: () => noop,\n multi: true,\n deps: [TranslocoPersistLangService],\n },\n {\n provide: TRANSLOCO_PERSIST_LANG_STORAGE,\n ...storage,\n },\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsverse/transloco-persist-lang",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.1",
|
|
4
4
|
"description": "Transloco persist active language",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -8,28 +8,30 @@
|
|
|
8
8
|
"bugs": {
|
|
9
9
|
"url": "https://github.com/jsverse/transloco/issues"
|
|
10
10
|
},
|
|
11
|
-
"homepage": "https://jsverse.
|
|
11
|
+
"homepage": "https://jsverse.gitbook.io/transloco/plugins/persist-lang",
|
|
12
12
|
"repository": {
|
|
13
13
|
"type": "git",
|
|
14
14
|
"url": "https://github.com/jsverse/transloco"
|
|
15
15
|
},
|
|
16
16
|
"keywords": [
|
|
17
|
-
"
|
|
18
|
-
"angular 2",
|
|
17
|
+
"Angular",
|
|
19
18
|
"i18n",
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
19
|
+
"Translate",
|
|
20
|
+
"Angular Translate",
|
|
21
|
+
"Transloco",
|
|
22
|
+
"Persist",
|
|
23
|
+
"Storage"
|
|
24
24
|
],
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"@angular/core": ">=16.0.0",
|
|
28
|
-
"@jsverse/transloco": ">=
|
|
28
|
+
"@jsverse/transloco": ">=8.0.0",
|
|
29
|
+
"@jsverse/utils": "1.0.0-beta.5"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
32
|
"tslib": "^2.2.0"
|
|
32
33
|
},
|
|
34
|
+
"sideEffects": false,
|
|
33
35
|
"module": "fesm2022/jsverse-transloco-persist-lang.mjs",
|
|
34
36
|
"typings": "index.d.ts",
|
|
35
37
|
"exports": {
|
|
@@ -42,6 +44,5 @@
|
|
|
42
44
|
"esm": "./esm2022/jsverse-transloco-persist-lang.mjs",
|
|
43
45
|
"default": "./fesm2022/jsverse-transloco-persist-lang.mjs"
|
|
44
46
|
}
|
|
45
|
-
}
|
|
46
|
-
"sideEffects": false
|
|
47
|
+
}
|
|
47
48
|
}
|