@magmamath/frontend-config 1.1.2-rc.19 → 1.1.2-rc.20
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.
|
@@ -3,7 +3,6 @@ import { InitOptions } from 'i18next';
|
|
|
3
3
|
|
|
4
4
|
type TolgeeBaseConfig = {
|
|
5
5
|
isDev: boolean;
|
|
6
|
-
isMobile?: boolean;
|
|
7
6
|
projectId: string;
|
|
8
7
|
};
|
|
9
8
|
type TolgeeEnvConfig = {
|
|
@@ -11,10 +10,15 @@ type TolgeeEnvConfig = {
|
|
|
11
10
|
apiUrl?: string;
|
|
12
11
|
apiKey?: string;
|
|
13
12
|
};
|
|
13
|
+
type StorageAdapter = {
|
|
14
|
+
getItem(key: string): string | null;
|
|
15
|
+
setItem(key: string, value: string): void;
|
|
16
|
+
};
|
|
14
17
|
type TranslationManagerOptions = {
|
|
18
|
+
isMobile?: boolean;
|
|
15
19
|
tolgee: TolgeeBaseConfig;
|
|
16
20
|
i18nOptions?: InitOptions;
|
|
17
|
-
|
|
21
|
+
storage?: StorageAdapter;
|
|
18
22
|
};
|
|
19
23
|
|
|
20
24
|
type OnInitCallback = (locale: Locale) => void;
|
|
@@ -22,10 +26,11 @@ declare class TranslationManager {
|
|
|
22
26
|
private readonly tolgeeBase;
|
|
23
27
|
private tolgee;
|
|
24
28
|
private readonly i18nOptions;
|
|
25
|
-
private readonly
|
|
29
|
+
private readonly storage?;
|
|
30
|
+
private readonly isMobile;
|
|
26
31
|
private readonly onInitCallbacks;
|
|
27
32
|
private initPromise;
|
|
28
|
-
constructor({ tolgee, i18nOptions,
|
|
33
|
+
constructor({ tolgee, i18nOptions, storage, isMobile }: TranslationManagerOptions);
|
|
29
34
|
readonly onInit: (callback: OnInitCallback) => void;
|
|
30
35
|
readonly init: (locale: Locale, envConfig: TolgeeEnvConfig) => Promise<void>;
|
|
31
36
|
readonly setLanguage: (locale: Locale) => Promise<void>;
|
|
@@ -48,4 +53,4 @@ declare enum TranslationNamespace {
|
|
|
48
53
|
SHARED = "shared"
|
|
49
54
|
}
|
|
50
55
|
|
|
51
|
-
export { type OnInitCallback, TranslationManager, TranslationNamespace };
|
|
56
|
+
export { type OnInitCallback, type StorageAdapter, TranslationManager, TranslationNamespace };
|
|
@@ -3,7 +3,6 @@ import { InitOptions } from 'i18next';
|
|
|
3
3
|
|
|
4
4
|
type TolgeeBaseConfig = {
|
|
5
5
|
isDev: boolean;
|
|
6
|
-
isMobile?: boolean;
|
|
7
6
|
projectId: string;
|
|
8
7
|
};
|
|
9
8
|
type TolgeeEnvConfig = {
|
|
@@ -11,10 +10,15 @@ type TolgeeEnvConfig = {
|
|
|
11
10
|
apiUrl?: string;
|
|
12
11
|
apiKey?: string;
|
|
13
12
|
};
|
|
13
|
+
type StorageAdapter = {
|
|
14
|
+
getItem(key: string): string | null;
|
|
15
|
+
setItem(key: string, value: string): void;
|
|
16
|
+
};
|
|
14
17
|
type TranslationManagerOptions = {
|
|
18
|
+
isMobile?: boolean;
|
|
15
19
|
tolgee: TolgeeBaseConfig;
|
|
16
20
|
i18nOptions?: InitOptions;
|
|
17
|
-
|
|
21
|
+
storage?: StorageAdapter;
|
|
18
22
|
};
|
|
19
23
|
|
|
20
24
|
type OnInitCallback = (locale: Locale) => void;
|
|
@@ -22,10 +26,11 @@ declare class TranslationManager {
|
|
|
22
26
|
private readonly tolgeeBase;
|
|
23
27
|
private tolgee;
|
|
24
28
|
private readonly i18nOptions;
|
|
25
|
-
private readonly
|
|
29
|
+
private readonly storage?;
|
|
30
|
+
private readonly isMobile;
|
|
26
31
|
private readonly onInitCallbacks;
|
|
27
32
|
private initPromise;
|
|
28
|
-
constructor({ tolgee, i18nOptions,
|
|
33
|
+
constructor({ tolgee, i18nOptions, storage, isMobile }: TranslationManagerOptions);
|
|
29
34
|
readonly onInit: (callback: OnInitCallback) => void;
|
|
30
35
|
readonly init: (locale: Locale, envConfig: TolgeeEnvConfig) => Promise<void>;
|
|
31
36
|
readonly setLanguage: (locale: Locale) => Promise<void>;
|
|
@@ -48,4 +53,4 @@ declare enum TranslationNamespace {
|
|
|
48
53
|
SHARED = "shared"
|
|
49
54
|
}
|
|
50
55
|
|
|
51
|
-
export { type OnInitCallback, TranslationManager, TranslationNamespace };
|
|
56
|
+
export { type OnInitCallback, type StorageAdapter, TranslationManager, TranslationNamespace };
|
|
@@ -40,13 +40,15 @@ var TranslationManager = class {
|
|
|
40
40
|
tolgeeBase;
|
|
41
41
|
tolgee = null;
|
|
42
42
|
i18nOptions;
|
|
43
|
-
|
|
43
|
+
storage;
|
|
44
|
+
isMobile;
|
|
44
45
|
onInitCallbacks = [];
|
|
45
46
|
initPromise = null;
|
|
46
|
-
constructor({ tolgee, i18nOptions = {},
|
|
47
|
+
constructor({ tolgee, i18nOptions = {}, storage, isMobile = false }) {
|
|
47
48
|
this.tolgeeBase = tolgee;
|
|
48
49
|
this.i18nOptions = i18nOptions;
|
|
49
|
-
this.
|
|
50
|
+
this.storage = storage;
|
|
51
|
+
this.isMobile = isMobile;
|
|
50
52
|
}
|
|
51
53
|
onInit = (callback) => {
|
|
52
54
|
this.onInitCallbacks.push(callback);
|
|
@@ -69,8 +71,7 @@ var TranslationManager = class {
|
|
|
69
71
|
}
|
|
70
72
|
};
|
|
71
73
|
persistLocale = (locale) => {
|
|
72
|
-
|
|
73
|
-
localStorage.setItem(this.localStorageKey, locale);
|
|
74
|
+
this.storage?.setItem("locale", locale);
|
|
74
75
|
};
|
|
75
76
|
initI18n = async (locale) => {
|
|
76
77
|
const config = this.tolgee;
|
|
@@ -94,13 +95,10 @@ var TranslationManager = class {
|
|
|
94
95
|
return this.createBaseTolgeeInstance().init();
|
|
95
96
|
};
|
|
96
97
|
initTolgeeDevTools = async () => {
|
|
97
|
-
console.log("pre backend");
|
|
98
98
|
const { DevBackend } = await import('@tolgee/i18next');
|
|
99
|
-
console.log("post");
|
|
100
99
|
const config = this.tolgee;
|
|
101
100
|
const instance = this.createBaseTolgeeInstance().use(DevBackend());
|
|
102
|
-
if (!
|
|
103
|
-
console.log("context tools");
|
|
101
|
+
if (!this.isMobile) {
|
|
104
102
|
const { InContextTools } = await import('@tolgee/web/tools');
|
|
105
103
|
instance.use(InContextTools());
|
|
106
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/translation/translation.constants.ts","../../src/translation/TranslationManager.ts"],"names":["TranslationNamespace","i18n","withTolgee","initReactI18next","Tolgee","I18nextPlugin","BackendFetch"],"mappings":";;;;;;;;;;;;;AAEY,IAAA,oBAAA,qBAAAA,qBAAL,KAAA;AACL,EAAAA,sBAAA,cAAe,CAAA,GAAA,cAAA;AACf,EAAAA,sBAAA,cAAe,CAAA,GAAA,cAAA;AACf,EAAAA,sBAAA,eAAgB,CAAA,GAAA,eAAA;AAChB,EAAAA,sBAAA,UAAW,CAAA,GAAA,UAAA;AACX,EAAAA,sBAAA,QAAS,CAAA,GAAA,QAAA;AACT,EAAAA,sBAAA,oBAAqB,CAAA,GAAA,oBAAA;AACrB,EAAAA,sBAAA,YAAa,CAAA,GAAA,WAAA;AACb,EAAAA,sBAAA,mBAAoB,CAAA,GAAA,mBAAA;AACpB,EAAAA,sBAAA,QAAS,CAAA,GAAA,QAAA;AATC,EAAAA,OAAAA,qBAAAA;AAAA,CAAA,EAAA,oBAAA,IAAA,EAAA;AAYL,IAAM,qBAAwB,GAAA,GAAA;AAE9B,IAAM,oBAAoC,GAAA;AAAA,EAC/C,WAAa,EAAA,MAAA;AAAA,EACb,IAAM,EAAA,aAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,WAAa,EAAA;AAAA,GACf;AAAA,EACA,aAAe,EAAA;AAAA,IACb,WAAa,EAAA;AAAA;AAEjB,CAAA;;;
|
|
1
|
+
{"version":3,"sources":["../../src/translation/translation.constants.ts","../../src/translation/TranslationManager.ts"],"names":["TranslationNamespace","i18n","withTolgee","initReactI18next","Tolgee","I18nextPlugin","BackendFetch"],"mappings":"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","file":"index.js","sourcesContent":["import { InitOptions } from 'i18next'\n\nexport enum TranslationNamespace {\n STUDENTS_WEB = 'students-web',\n TEACHERS_WEB = 'teachers-web',\n DISTRICT_DASH = 'district-dash',\n AUTH_WEB = 'auth-web',\n MOBILE = 'mobile',\n MAGMAMATH_FEATURES = 'magmamath-features',\n DRAW_BOARD = 'drawboard',\n STUDENTS_FEATURES = 'students-features',\n SHARED = 'shared',\n}\n\nexport const TOLGEE_DEV_TIMEOUT_MS = 3000\n\nexport const DEFAULT_I18N_OPTIONS: InitOptions = {\n fallbackLng: undefined,\n load: 'currentOnly',\n react: {\n useSuspense: false,\n },\n interpolation: {\n escapeValue: false,\n },\n}\n","import i18n, { InitOptions } from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport type { TolgeeInstance } from '@tolgee/i18next'\nimport { BackendFetch, I18nextPlugin, Tolgee, withTolgee } from '@tolgee/i18next'\nimport { Locale } from '../shared/constants/common.constants'\nimport {\n StorageAdapter,\n TolgeeBaseConfig,\n TolgeeConfig,\n TolgeeEnvConfig,\n TranslationManagerOptions,\n} from './translation.types'\nimport { DEFAULT_I18N_OPTIONS, TOLGEE_DEV_TIMEOUT_MS } from './translation.constants'\n\nexport type OnInitCallback = (locale: Locale) => void\n\nexport class TranslationManager {\n private readonly tolgeeBase: TolgeeBaseConfig\n private tolgee: TolgeeConfig | null = null\n private readonly i18nOptions: InitOptions\n private readonly storage?: StorageAdapter\n private readonly isMobile: boolean\n private readonly onInitCallbacks: OnInitCallback[] = []\n private initPromise: Promise<void> | null = null\n\n constructor({ tolgee, i18nOptions = {}, storage, isMobile = false }: TranslationManagerOptions) {\n this.tolgeeBase = tolgee\n this.i18nOptions = i18nOptions\n this.storage = storage\n this.isMobile = isMobile\n }\n\n public readonly onInit = (callback: OnInitCallback) => {\n this.onInitCallbacks.push(callback)\n }\n\n public readonly init = async (locale: Locale, envConfig: TolgeeEnvConfig) => {\n this.tolgee = { ...this.tolgeeBase, ...envConfig }\n\n if (!this.initPromise) {\n this.initPromise = this.initI18n(locale).catch((error) => {\n this.initPromise = null\n throw error\n })\n }\n await this.initPromise\n }\n\n public readonly setLanguage = async (locale: Locale) => {\n if (!i18n.isInitialized) return\n\n this.persistLocale(locale)\n\n if (i18n.language !== locale) {\n await i18n.changeLanguage(locale)\n }\n }\n\n private readonly persistLocale = (locale: Locale) => {\n this.storage?.setItem('locale', locale)\n }\n\n private readonly initI18n = async (locale: Locale) => {\n const config = this.tolgee!\n const tolgee = config.isDev ? await this.initTolgeeDevTools() : this.initTolgeeCDN()\n\n await withTolgee(i18n, tolgee)\n .use(initReactI18next)\n .init({\n ...DEFAULT_I18N_OPTIONS,\n ...this.i18nOptions,\n lng: locale,\n })\n\n this.onInitCallbacks.forEach((callback) => callback(locale))\n }\n\n private readonly createBaseTolgeeInstance = () => {\n const config = this.tolgee!\n return Tolgee()\n .use(I18nextPlugin())\n .use(\n BackendFetch({\n prefix: `${config.cdnHost}/${config.projectId}`,\n })\n )\n }\n\n private readonly initTolgeeCDN = () => {\n return this.createBaseTolgeeInstance().init()\n }\n\n private readonly initTolgeeDevTools = async (): Promise<TolgeeInstance> => {\n const { DevBackend } = await import('@tolgee/i18next')\n\n const config = this.tolgee!\n const instance = this.createBaseTolgeeInstance().use(DevBackend())\n\n if (!this.isMobile) {\n const { InContextTools } = await import('@tolgee/web/tools')\n instance.use(InContextTools())\n }\n\n return instance.init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n // hermes appends trailing slash to the url, we need to remove it\n const url = typeof input === 'string' ? input.replace(/\\/\\?/, '?') : input\n const controller = new AbortController()\n setTimeout(() => controller.abort(), TOLGEE_DEV_TIMEOUT_MS)\n return fetch(url, { ...init, signal: controller.signal })\n },\n })\n }\n}\n"]}
|
|
@@ -34,13 +34,15 @@ var TranslationManager = class {
|
|
|
34
34
|
tolgeeBase;
|
|
35
35
|
tolgee = null;
|
|
36
36
|
i18nOptions;
|
|
37
|
-
|
|
37
|
+
storage;
|
|
38
|
+
isMobile;
|
|
38
39
|
onInitCallbacks = [];
|
|
39
40
|
initPromise = null;
|
|
40
|
-
constructor({ tolgee, i18nOptions = {},
|
|
41
|
+
constructor({ tolgee, i18nOptions = {}, storage, isMobile = false }) {
|
|
41
42
|
this.tolgeeBase = tolgee;
|
|
42
43
|
this.i18nOptions = i18nOptions;
|
|
43
|
-
this.
|
|
44
|
+
this.storage = storage;
|
|
45
|
+
this.isMobile = isMobile;
|
|
44
46
|
}
|
|
45
47
|
onInit = (callback) => {
|
|
46
48
|
this.onInitCallbacks.push(callback);
|
|
@@ -63,8 +65,7 @@ var TranslationManager = class {
|
|
|
63
65
|
}
|
|
64
66
|
};
|
|
65
67
|
persistLocale = (locale) => {
|
|
66
|
-
|
|
67
|
-
localStorage.setItem(this.localStorageKey, locale);
|
|
68
|
+
this.storage?.setItem("locale", locale);
|
|
68
69
|
};
|
|
69
70
|
initI18n = async (locale) => {
|
|
70
71
|
const config = this.tolgee;
|
|
@@ -88,13 +89,10 @@ var TranslationManager = class {
|
|
|
88
89
|
return this.createBaseTolgeeInstance().init();
|
|
89
90
|
};
|
|
90
91
|
initTolgeeDevTools = async () => {
|
|
91
|
-
console.log("pre backend");
|
|
92
92
|
const { DevBackend } = await import('@tolgee/i18next');
|
|
93
|
-
console.log("post");
|
|
94
93
|
const config = this.tolgee;
|
|
95
94
|
const instance = this.createBaseTolgeeInstance().use(DevBackend());
|
|
96
|
-
if (!
|
|
97
|
-
console.log("context tools");
|
|
95
|
+
if (!this.isMobile) {
|
|
98
96
|
const { InContextTools } = await import('@tolgee/web/tools');
|
|
99
97
|
instance.use(InContextTools());
|
|
100
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/translation/translation.constants.ts","../../src/translation/TranslationManager.ts"],"names":["TranslationNamespace"],"mappings":";;;;;;;AAEY,IAAA,oBAAA,qBAAAA,qBAAL,KAAA;AACL,EAAAA,sBAAA,cAAe,CAAA,GAAA,cAAA;AACf,EAAAA,sBAAA,cAAe,CAAA,GAAA,cAAA;AACf,EAAAA,sBAAA,eAAgB,CAAA,GAAA,eAAA;AAChB,EAAAA,sBAAA,UAAW,CAAA,GAAA,UAAA;AACX,EAAAA,sBAAA,QAAS,CAAA,GAAA,QAAA;AACT,EAAAA,sBAAA,oBAAqB,CAAA,GAAA,oBAAA;AACrB,EAAAA,sBAAA,YAAa,CAAA,GAAA,WAAA;AACb,EAAAA,sBAAA,mBAAoB,CAAA,GAAA,mBAAA;AACpB,EAAAA,sBAAA,QAAS,CAAA,GAAA,QAAA;AATC,EAAAA,OAAAA,qBAAAA;AAAA,CAAA,EAAA,oBAAA,IAAA,EAAA;AAYL,IAAM,qBAAwB,GAAA,GAAA;AAE9B,IAAM,oBAAoC,GAAA;AAAA,EAC/C,WAAa,EAAA,MAAA;AAAA,EACb,IAAM,EAAA,aAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,WAAa,EAAA;AAAA,GACf;AAAA,EACA,aAAe,EAAA;AAAA,IACb,WAAa,EAAA;AAAA;AAEjB,CAAA;;;
|
|
1
|
+
{"version":3,"sources":["../../src/translation/translation.constants.ts","../../src/translation/TranslationManager.ts"],"names":["TranslationNamespace"],"mappings":";;;;;;;AAEY,IAAA,oBAAA,qBAAAA,qBAAL,KAAA;AACL,EAAAA,sBAAA,cAAe,CAAA,GAAA,cAAA;AACf,EAAAA,sBAAA,cAAe,CAAA,GAAA,cAAA;AACf,EAAAA,sBAAA,eAAgB,CAAA,GAAA,eAAA;AAChB,EAAAA,sBAAA,UAAW,CAAA,GAAA,UAAA;AACX,EAAAA,sBAAA,QAAS,CAAA,GAAA,QAAA;AACT,EAAAA,sBAAA,oBAAqB,CAAA,GAAA,oBAAA;AACrB,EAAAA,sBAAA,YAAa,CAAA,GAAA,WAAA;AACb,EAAAA,sBAAA,mBAAoB,CAAA,GAAA,mBAAA;AACpB,EAAAA,sBAAA,QAAS,CAAA,GAAA,QAAA;AATC,EAAAA,OAAAA,qBAAAA;AAAA,CAAA,EAAA,oBAAA,IAAA,EAAA;AAYL,IAAM,qBAAwB,GAAA,GAAA;AAE9B,IAAM,oBAAoC,GAAA;AAAA,EAC/C,WAAa,EAAA,MAAA;AAAA,EACb,IAAM,EAAA,aAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,WAAa,EAAA;AAAA,GACf;AAAA,EACA,aAAe,EAAA;AAAA,IACb,WAAa,EAAA;AAAA;AAEjB,CAAA;;;ACTO,IAAM,qBAAN,MAAyB;AAAA,EACb,UAAA;AAAA,EACT,MAA8B,GAAA,IAAA;AAAA,EACrB,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,kBAAoC,EAAC;AAAA,EAC9C,WAAoC,GAAA,IAAA;AAAA,EAE5C,WAAA,CAAY,EAAE,MAAQ,EAAA,WAAA,GAAc,EAAI,EAAA,OAAA,EAAS,QAAW,GAAA,KAAA,EAAoC,EAAA;AAC9F,IAAA,IAAA,CAAK,UAAa,GAAA,MAAA;AAClB,IAAA,IAAA,CAAK,WAAc,GAAA,WAAA;AACnB,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAAA;AAClB,EAEgB,MAAA,GAAS,CAAC,QAA6B,KAAA;AACrD,IAAK,IAAA,CAAA,eAAA,CAAgB,KAAK,QAAQ,CAAA;AAAA,GACpC;AAAA,EAEgB,IAAA,GAAO,OAAO,MAAA,EAAgB,SAA+B,KAAA;AAC3E,IAAA,IAAA,CAAK,SAAS,EAAE,GAAG,IAAK,CAAA,UAAA,EAAY,GAAG,SAAU,EAAA;AAEjD,IAAI,IAAA,CAAC,KAAK,WAAa,EAAA;AACrB,MAAA,IAAA,CAAK,cAAc,IAAK,CAAA,QAAA,CAAS,MAAM,CAAE,CAAA,KAAA,CAAM,CAAC,KAAU,KAAA;AACxD,QAAA,IAAA,CAAK,WAAc,GAAA,IAAA;AACnB,QAAM,MAAA,KAAA;AAAA,OACP,CAAA;AAAA;AAEH,IAAA,MAAM,IAAK,CAAA,WAAA;AAAA,GACb;AAAA,EAEgB,WAAA,GAAc,OAAO,MAAmB,KAAA;AACtD,IAAI,IAAA,CAAC,KAAK,aAAe,EAAA;AAEzB,IAAA,IAAA,CAAK,cAAc,MAAM,CAAA;AAEzB,IAAI,IAAA,IAAA,CAAK,aAAa,MAAQ,EAAA;AAC5B,MAAM,MAAA,IAAA,CAAK,eAAe,MAAM,CAAA;AAAA;AAClC,GACF;AAAA,EAEiB,aAAA,GAAgB,CAAC,MAAmB,KAAA;AACnD,IAAK,IAAA,CAAA,OAAA,EAAS,OAAQ,CAAA,QAAA,EAAU,MAAM,CAAA;AAAA,GACxC;AAAA,EAEiB,QAAA,GAAW,OAAO,MAAmB,KAAA;AACpD,IAAA,MAAM,SAAS,IAAK,CAAA,MAAA;AACpB,IAAM,MAAA,MAAA,GAAS,OAAO,KAAQ,GAAA,MAAM,KAAK,kBAAmB,EAAA,GAAI,KAAK,aAAc,EAAA;AAEnF,IAAA,MAAM,WAAW,IAAM,EAAA,MAAM,EAC1B,GAAI,CAAA,gBAAgB,EACpB,IAAK,CAAA;AAAA,MACJ,GAAG,oBAAA;AAAA,MACH,GAAG,IAAK,CAAA,WAAA;AAAA,MACR,GAAK,EAAA;AAAA,KACN,CAAA;AAEH,IAAA,IAAA,CAAK,gBAAgB,OAAQ,CAAA,CAAC,QAAa,KAAA,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,GAC7D;AAAA,EAEiB,2BAA2B,MAAM;AAChD,IAAA,MAAM,SAAS,IAAK,CAAA,MAAA;AACpB,IAAA,OAAO,MAAO,EAAA,CACX,GAAI,CAAA,aAAA,EAAe,CACnB,CAAA,GAAA;AAAA,MACC,YAAa,CAAA;AAAA,QACX,QAAQ,CAAG,EAAA,MAAA,CAAO,OAAO,CAAA,CAAA,EAAI,OAAO,SAAS,CAAA;AAAA,OAC9C;AAAA,KACH;AAAA,GACJ;AAAA,EAEiB,gBAAgB,MAAM;AACrC,IAAO,OAAA,IAAA,CAAK,wBAAyB,EAAA,CAAE,IAAK,EAAA;AAAA,GAC9C;AAAA,EAEiB,qBAAqB,YAAqC;AACzE,IAAA,MAAM,EAAE,UAAA,EAAe,GAAA,MAAM,OAAO,iBAAiB,CAAA;AAErD,IAAA,MAAM,SAAS,IAAK,CAAA,MAAA;AACpB,IAAA,MAAM,WAAW,IAAK,CAAA,wBAAA,EAA2B,CAAA,GAAA,CAAI,YAAY,CAAA;AAEjE,IAAI,IAAA,CAAC,KAAK,QAAU,EAAA;AAClB,MAAA,MAAM,EAAE,cAAA,EAAmB,GAAA,MAAM,OAAO,mBAAmB,CAAA;AAC3D,MAAS,QAAA,CAAA,GAAA,CAAI,gBAAgB,CAAA;AAAA;AAG/B,IAAA,OAAO,SAAS,IAAK,CAAA;AAAA,MACnB,QAAQ,MAAO,CAAA,MAAA;AAAA,MACf,QAAQ,MAAO,CAAA,MAAA;AAAA,MACf,KAAA,EAAO,CAAC,KAAA,EAAO,IAAS,KAAA;AAEtB,QAAM,MAAA,GAAA,GAAM,OAAO,KAAU,KAAA,QAAA,GAAW,MAAM,OAAQ,CAAA,MAAA,EAAQ,GAAG,CAAI,GAAA,KAAA;AACrE,QAAM,MAAA,UAAA,GAAa,IAAI,eAAgB,EAAA;AACvC,QAAA,UAAA,CAAW,MAAM,UAAA,CAAW,KAAM,EAAA,EAAG,qBAAqB,CAAA;AAC1D,QAAO,OAAA,KAAA,CAAM,KAAK,EAAE,GAAG,MAAM,MAAQ,EAAA,UAAA,CAAW,QAAQ,CAAA;AAAA;AAC1D,KACD,CAAA;AAAA,GACH;AACF","file":"index.mjs","sourcesContent":["import { InitOptions } from 'i18next'\n\nexport enum TranslationNamespace {\n STUDENTS_WEB = 'students-web',\n TEACHERS_WEB = 'teachers-web',\n DISTRICT_DASH = 'district-dash',\n AUTH_WEB = 'auth-web',\n MOBILE = 'mobile',\n MAGMAMATH_FEATURES = 'magmamath-features',\n DRAW_BOARD = 'drawboard',\n STUDENTS_FEATURES = 'students-features',\n SHARED = 'shared',\n}\n\nexport const TOLGEE_DEV_TIMEOUT_MS = 3000\n\nexport const DEFAULT_I18N_OPTIONS: InitOptions = {\n fallbackLng: undefined,\n load: 'currentOnly',\n react: {\n useSuspense: false,\n },\n interpolation: {\n escapeValue: false,\n },\n}\n","import i18n, { InitOptions } from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport type { TolgeeInstance } from '@tolgee/i18next'\nimport { BackendFetch, I18nextPlugin, Tolgee, withTolgee } from '@tolgee/i18next'\nimport { Locale } from '../shared/constants/common.constants'\nimport {\n StorageAdapter,\n TolgeeBaseConfig,\n TolgeeConfig,\n TolgeeEnvConfig,\n TranslationManagerOptions,\n} from './translation.types'\nimport { DEFAULT_I18N_OPTIONS, TOLGEE_DEV_TIMEOUT_MS } from './translation.constants'\n\nexport type OnInitCallback = (locale: Locale) => void\n\nexport class TranslationManager {\n private readonly tolgeeBase: TolgeeBaseConfig\n private tolgee: TolgeeConfig | null = null\n private readonly i18nOptions: InitOptions\n private readonly storage?: StorageAdapter\n private readonly isMobile: boolean\n private readonly onInitCallbacks: OnInitCallback[] = []\n private initPromise: Promise<void> | null = null\n\n constructor({ tolgee, i18nOptions = {}, storage, isMobile = false }: TranslationManagerOptions) {\n this.tolgeeBase = tolgee\n this.i18nOptions = i18nOptions\n this.storage = storage\n this.isMobile = isMobile\n }\n\n public readonly onInit = (callback: OnInitCallback) => {\n this.onInitCallbacks.push(callback)\n }\n\n public readonly init = async (locale: Locale, envConfig: TolgeeEnvConfig) => {\n this.tolgee = { ...this.tolgeeBase, ...envConfig }\n\n if (!this.initPromise) {\n this.initPromise = this.initI18n(locale).catch((error) => {\n this.initPromise = null\n throw error\n })\n }\n await this.initPromise\n }\n\n public readonly setLanguage = async (locale: Locale) => {\n if (!i18n.isInitialized) return\n\n this.persistLocale(locale)\n\n if (i18n.language !== locale) {\n await i18n.changeLanguage(locale)\n }\n }\n\n private readonly persistLocale = (locale: Locale) => {\n this.storage?.setItem('locale', locale)\n }\n\n private readonly initI18n = async (locale: Locale) => {\n const config = this.tolgee!\n const tolgee = config.isDev ? await this.initTolgeeDevTools() : this.initTolgeeCDN()\n\n await withTolgee(i18n, tolgee)\n .use(initReactI18next)\n .init({\n ...DEFAULT_I18N_OPTIONS,\n ...this.i18nOptions,\n lng: locale,\n })\n\n this.onInitCallbacks.forEach((callback) => callback(locale))\n }\n\n private readonly createBaseTolgeeInstance = () => {\n const config = this.tolgee!\n return Tolgee()\n .use(I18nextPlugin())\n .use(\n BackendFetch({\n prefix: `${config.cdnHost}/${config.projectId}`,\n })\n )\n }\n\n private readonly initTolgeeCDN = () => {\n return this.createBaseTolgeeInstance().init()\n }\n\n private readonly initTolgeeDevTools = async (): Promise<TolgeeInstance> => {\n const { DevBackend } = await import('@tolgee/i18next')\n\n const config = this.tolgee!\n const instance = this.createBaseTolgeeInstance().use(DevBackend())\n\n if (!this.isMobile) {\n const { InContextTools } = await import('@tolgee/web/tools')\n instance.use(InContextTools())\n }\n\n return instance.init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n // hermes appends trailing slash to the url, we need to remove it\n const url = typeof input === 'string' ? input.replace(/\\/\\?/, '?') : input\n const controller = new AbortController()\n setTimeout(() => controller.abort(), TOLGEE_DEV_TIMEOUT_MS)\n return fetch(url, { ...init, signal: controller.signal })\n },\n })\n }\n}\n"]}
|