@magmamath/frontend-config 1.1.2-rc.11 → 1.1.2-rc.13

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.
@@ -1,5 +1,5 @@
1
- import { InitOptions } from 'i18next';
2
1
  import { a as Locale } from '../common.constants-ClvjFWRr.mjs';
2
+ import { InitOptions } from 'i18next';
3
3
 
4
4
  type TolgeeBaseConfig = {
5
5
  isDev: boolean;
@@ -15,13 +15,17 @@ type TranslationManagerOptions = {
15
15
  i18nOptions?: InitOptions;
16
16
  localStorageKey?: string;
17
17
  };
18
+
19
+ type OnInitCallback = (locale: Locale) => void;
18
20
  declare class TranslationManager {
19
21
  private readonly tolgeeBase;
20
22
  private tolgee;
21
23
  private readonly i18nOptions;
22
24
  private readonly localStorageKey?;
25
+ private readonly onInitCallbacks;
23
26
  private initPromise;
24
27
  constructor({ tolgee, i18nOptions, localStorageKey }: TranslationManagerOptions);
28
+ readonly onInit: (callback: OnInitCallback) => void;
25
29
  readonly init: (locale: Locale, envConfig: TolgeeEnvConfig) => Promise<void>;
26
30
  readonly setLanguage: (locale: Locale) => Promise<void>;
27
31
  private readonly persistLocale;
@@ -38,7 +42,8 @@ declare enum TranslationNamespace {
38
42
  AUTH_WEB = "auth-web",
39
43
  MAGMAMATH_FEATURES = "magmamath-features",
40
44
  DRAW_BOARD = "drawboard",
41
- STUDENTS_FEATURES = "students-features"
45
+ STUDENTS_FEATURES = "students-features",
46
+ SHARED = "shared"
42
47
  }
43
48
 
44
- export { TranslationManager, TranslationNamespace };
49
+ export { type OnInitCallback, TranslationManager, TranslationNamespace };
@@ -1,5 +1,5 @@
1
- import { InitOptions } from 'i18next';
2
1
  import { a as Locale } from '../common.constants-ClvjFWRr.js';
2
+ import { InitOptions } from 'i18next';
3
3
 
4
4
  type TolgeeBaseConfig = {
5
5
  isDev: boolean;
@@ -15,13 +15,17 @@ type TranslationManagerOptions = {
15
15
  i18nOptions?: InitOptions;
16
16
  localStorageKey?: string;
17
17
  };
18
+
19
+ type OnInitCallback = (locale: Locale) => void;
18
20
  declare class TranslationManager {
19
21
  private readonly tolgeeBase;
20
22
  private tolgee;
21
23
  private readonly i18nOptions;
22
24
  private readonly localStorageKey?;
25
+ private readonly onInitCallbacks;
23
26
  private initPromise;
24
27
  constructor({ tolgee, i18nOptions, localStorageKey }: TranslationManagerOptions);
28
+ readonly onInit: (callback: OnInitCallback) => void;
25
29
  readonly init: (locale: Locale, envConfig: TolgeeEnvConfig) => Promise<void>;
26
30
  readonly setLanguage: (locale: Locale) => Promise<void>;
27
31
  private readonly persistLocale;
@@ -38,7 +42,8 @@ declare enum TranslationNamespace {
38
42
  AUTH_WEB = "auth-web",
39
43
  MAGMAMATH_FEATURES = "magmamath-features",
40
44
  DRAW_BOARD = "drawboard",
41
- STUDENTS_FEATURES = "students-features"
45
+ STUDENTS_FEATURES = "students-features",
46
+ SHARED = "shared"
42
47
  }
43
48
 
44
- export { TranslationManager, TranslationNamespace };
49
+ export { type OnInitCallback, TranslationManager, TranslationNamespace };
@@ -9,6 +9,19 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
9
  var i18n__default = /*#__PURE__*/_interopDefault(i18n);
10
10
 
11
11
  // src/translation/TranslationManager.ts
12
+
13
+ // src/translation/translation.constants.ts
14
+ var TranslationNamespace = /* @__PURE__ */ ((TranslationNamespace2) => {
15
+ TranslationNamespace2["STUDENTS_WEB"] = "students-web";
16
+ TranslationNamespace2["TEACHERS_WEB"] = "teachers-web";
17
+ TranslationNamespace2["DISTRICT_DASH"] = "district-dash";
18
+ TranslationNamespace2["AUTH_WEB"] = "auth-web";
19
+ TranslationNamespace2["MAGMAMATH_FEATURES"] = "magmamath-features";
20
+ TranslationNamespace2["DRAW_BOARD"] = "drawboard";
21
+ TranslationNamespace2["STUDENTS_FEATURES"] = "students-features";
22
+ TranslationNamespace2["SHARED"] = "shared";
23
+ return TranslationNamespace2;
24
+ })(TranslationNamespace || {});
12
25
  var TOLGEE_DEV_TIMEOUT_MS = 3e3;
13
26
  var DEFAULT_I18N_OPTIONS = {
14
27
  fallbackLng: void 0,
@@ -17,17 +30,23 @@ var DEFAULT_I18N_OPTIONS = {
17
30
  useSuspense: false
18
31
  }
19
32
  };
33
+
34
+ // src/translation/TranslationManager.ts
20
35
  var TranslationManager = class {
21
36
  tolgeeBase;
22
37
  tolgee = null;
23
38
  i18nOptions;
24
39
  localStorageKey;
40
+ onInitCallbacks = [];
25
41
  initPromise = null;
26
42
  constructor({ tolgee, i18nOptions = {}, localStorageKey }) {
27
43
  this.tolgeeBase = tolgee;
28
44
  this.i18nOptions = i18nOptions;
29
45
  this.localStorageKey = localStorageKey;
30
46
  }
47
+ onInit = (callback) => {
48
+ this.onInitCallbacks.push(callback);
49
+ };
31
50
  init = async (locale, envConfig) => {
32
51
  this.tolgee = { ...this.tolgeeBase, ...envConfig };
33
52
  if (!this.initPromise) {
@@ -39,6 +58,7 @@ var TranslationManager = class {
39
58
  await this.initPromise;
40
59
  };
41
60
  setLanguage = async (locale) => {
61
+ if (!i18n__default.default.isInitialized) return;
42
62
  this.persistLocale(locale);
43
63
  if (i18n__default.default.language !== locale) {
44
64
  await i18n__default.default.changeLanguage(locale);
@@ -56,6 +76,7 @@ var TranslationManager = class {
56
76
  ...this.i18nOptions,
57
77
  lng: locale
58
78
  });
79
+ this.onInitCallbacks.forEach((callback) => callback(locale));
59
80
  };
60
81
  createBaseTolgeeInstance = () => {
61
82
  const config = this.tolgee;
@@ -84,18 +105,6 @@ var TranslationManager = class {
84
105
  };
85
106
  };
86
107
 
87
- // src/translation/translation.constants.ts
88
- var TranslationNamespace = /* @__PURE__ */ ((TranslationNamespace2) => {
89
- TranslationNamespace2["STUDENTS_WEB"] = "students-web";
90
- TranslationNamespace2["TEACHERS_WEB"] = "teachers-web";
91
- TranslationNamespace2["DISTRICT_DASH"] = "district-dash";
92
- TranslationNamespace2["AUTH_WEB"] = "auth-web";
93
- TranslationNamespace2["MAGMAMATH_FEATURES"] = "magmamath-features";
94
- TranslationNamespace2["DRAW_BOARD"] = "drawboard";
95
- TranslationNamespace2["STUDENTS_FEATURES"] = "students-features";
96
- return TranslationNamespace2;
97
- })(TranslationNamespace || {});
98
-
99
108
  exports.TranslationManager = TranslationManager;
100
109
  exports.TranslationNamespace = TranslationNamespace;
101
110
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/translation/TranslationManager.ts","../../src/translation/translation.constants.ts"],"names":["i18n","withTolgee","initReactI18next","Tolgee","I18nextPlugin","BackendFetch","TranslationNamespace"],"mappings":"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","file":"index.js","sourcesContent":["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'\n\nconst TOLGEE_DEV_TIMEOUT_MS = 3000\n\nconst DEFAULT_I18N_OPTIONS: InitOptions = {\n fallbackLng: undefined,\n load: 'currentOnly',\n react: {\n useSuspense: false,\n },\n}\n\ntype TolgeeBaseConfig = {\n isDev: boolean\n projectId: string\n}\n\ntype TolgeeEnvConfig = {\n cdnHost: string\n apiUrl?: string\n apiKey?: string\n}\n\ntype TolgeeConfig = TolgeeBaseConfig & TolgeeEnvConfig\n\ntype TranslationManagerOptions = {\n tolgee: TolgeeBaseConfig\n i18nOptions?: InitOptions\n localStorageKey?: string\n}\n\nexport class TranslationManager {\n private readonly tolgeeBase: TolgeeBaseConfig\n private tolgee: TolgeeConfig | null = null\n private readonly i18nOptions: InitOptions\n private readonly localStorageKey?: string\n private initPromise: Promise<void> | null = null\n\n constructor({ tolgee, i18nOptions = {}, localStorageKey }: TranslationManagerOptions) {\n this.tolgeeBase = tolgee\n this.i18nOptions = i18nOptions\n this.localStorageKey = localStorageKey\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 this.persistLocale(locale)\n\n if (i18n.language !== locale) {\n await i18n.changeLanguage(locale)\n }\n }\n\n private readonly persistLocale = (locale: Locale) => {\n if (!this.localStorageKey) return\n localStorage.setItem(this.localStorageKey, 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\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 [{ InContextTools }, { DevBackend }] = await Promise.all([\n import('@tolgee/web/tools'),\n import('@tolgee/i18next'),\n ])\n\n const config = this.tolgee!\n return this.createBaseTolgeeInstance()\n .use(DevBackend())\n .use(InContextTools())\n .init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n return fetch(input, { ...init, signal: AbortSignal.timeout(TOLGEE_DEV_TIMEOUT_MS) })\n },\n })\n }\n}\n","export enum TranslationNamespace {\n STUDENTS_WEB = 'students-web',\n TEACHERS_WEB = 'teachers-web',\n DISTRICT_DASH = 'district-dash',\n AUTH_WEB = 'auth-web',\n MAGMAMATH_FEATURES = 'magmamath-features',\n DRAW_BOARD = 'drawboard',\n STUDENTS_FEATURES = 'students-features',\n}\n"]}
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 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}\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 { TolgeeBaseConfig, TolgeeConfig, TolgeeEnvConfig, TranslationManagerOptions } 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 localStorageKey?: string\n private readonly onInitCallbacks: OnInitCallback[] = []\n private initPromise: Promise<void> | null = null\n\n constructor({ tolgee, i18nOptions = {}, localStorageKey }: TranslationManagerOptions) {\n this.tolgeeBase = tolgee\n this.i18nOptions = i18nOptions\n this.localStorageKey = localStorageKey\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 if (!this.localStorageKey) return\n localStorage.setItem(this.localStorageKey, 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 [{ InContextTools }, { DevBackend }] = await Promise.all([\n import('@tolgee/web/tools'),\n import('@tolgee/i18next'),\n ])\n\n const config = this.tolgee!\n return this.createBaseTolgeeInstance()\n .use(DevBackend())\n .use(InContextTools())\n .init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n return fetch(input, { ...init, signal: AbortSignal.timeout(TOLGEE_DEV_TIMEOUT_MS) })\n },\n })\n }\n}\n"]}
@@ -3,6 +3,19 @@ import { initReactI18next } from 'react-i18next';
3
3
  import { withTolgee, Tolgee, I18nextPlugin, BackendFetch } from '@tolgee/i18next';
4
4
 
5
5
  // src/translation/TranslationManager.ts
6
+
7
+ // src/translation/translation.constants.ts
8
+ var TranslationNamespace = /* @__PURE__ */ ((TranslationNamespace2) => {
9
+ TranslationNamespace2["STUDENTS_WEB"] = "students-web";
10
+ TranslationNamespace2["TEACHERS_WEB"] = "teachers-web";
11
+ TranslationNamespace2["DISTRICT_DASH"] = "district-dash";
12
+ TranslationNamespace2["AUTH_WEB"] = "auth-web";
13
+ TranslationNamespace2["MAGMAMATH_FEATURES"] = "magmamath-features";
14
+ TranslationNamespace2["DRAW_BOARD"] = "drawboard";
15
+ TranslationNamespace2["STUDENTS_FEATURES"] = "students-features";
16
+ TranslationNamespace2["SHARED"] = "shared";
17
+ return TranslationNamespace2;
18
+ })(TranslationNamespace || {});
6
19
  var TOLGEE_DEV_TIMEOUT_MS = 3e3;
7
20
  var DEFAULT_I18N_OPTIONS = {
8
21
  fallbackLng: void 0,
@@ -11,17 +24,23 @@ var DEFAULT_I18N_OPTIONS = {
11
24
  useSuspense: false
12
25
  }
13
26
  };
27
+
28
+ // src/translation/TranslationManager.ts
14
29
  var TranslationManager = class {
15
30
  tolgeeBase;
16
31
  tolgee = null;
17
32
  i18nOptions;
18
33
  localStorageKey;
34
+ onInitCallbacks = [];
19
35
  initPromise = null;
20
36
  constructor({ tolgee, i18nOptions = {}, localStorageKey }) {
21
37
  this.tolgeeBase = tolgee;
22
38
  this.i18nOptions = i18nOptions;
23
39
  this.localStorageKey = localStorageKey;
24
40
  }
41
+ onInit = (callback) => {
42
+ this.onInitCallbacks.push(callback);
43
+ };
25
44
  init = async (locale, envConfig) => {
26
45
  this.tolgee = { ...this.tolgeeBase, ...envConfig };
27
46
  if (!this.initPromise) {
@@ -33,6 +52,7 @@ var TranslationManager = class {
33
52
  await this.initPromise;
34
53
  };
35
54
  setLanguage = async (locale) => {
55
+ if (!i18n.isInitialized) return;
36
56
  this.persistLocale(locale);
37
57
  if (i18n.language !== locale) {
38
58
  await i18n.changeLanguage(locale);
@@ -50,6 +70,7 @@ var TranslationManager = class {
50
70
  ...this.i18nOptions,
51
71
  lng: locale
52
72
  });
73
+ this.onInitCallbacks.forEach((callback) => callback(locale));
53
74
  };
54
75
  createBaseTolgeeInstance = () => {
55
76
  const config = this.tolgee;
@@ -78,18 +99,6 @@ var TranslationManager = class {
78
99
  };
79
100
  };
80
101
 
81
- // src/translation/translation.constants.ts
82
- var TranslationNamespace = /* @__PURE__ */ ((TranslationNamespace2) => {
83
- TranslationNamespace2["STUDENTS_WEB"] = "students-web";
84
- TranslationNamespace2["TEACHERS_WEB"] = "teachers-web";
85
- TranslationNamespace2["DISTRICT_DASH"] = "district-dash";
86
- TranslationNamespace2["AUTH_WEB"] = "auth-web";
87
- TranslationNamespace2["MAGMAMATH_FEATURES"] = "magmamath-features";
88
- TranslationNamespace2["DRAW_BOARD"] = "drawboard";
89
- TranslationNamespace2["STUDENTS_FEATURES"] = "students-features";
90
- return TranslationNamespace2;
91
- })(TranslationNamespace || {});
92
-
93
102
  export { TranslationManager, TranslationNamespace };
94
103
  //# sourceMappingURL=index.mjs.map
95
104
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/translation/TranslationManager.ts","../../src/translation/translation.constants.ts"],"names":["TranslationNamespace"],"mappings":"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","file":"index.mjs","sourcesContent":["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'\n\nconst TOLGEE_DEV_TIMEOUT_MS = 3000\n\nconst DEFAULT_I18N_OPTIONS: InitOptions = {\n fallbackLng: undefined,\n load: 'currentOnly',\n react: {\n useSuspense: false,\n },\n}\n\ntype TolgeeBaseConfig = {\n isDev: boolean\n projectId: string\n}\n\ntype TolgeeEnvConfig = {\n cdnHost: string\n apiUrl?: string\n apiKey?: string\n}\n\ntype TolgeeConfig = TolgeeBaseConfig & TolgeeEnvConfig\n\ntype TranslationManagerOptions = {\n tolgee: TolgeeBaseConfig\n i18nOptions?: InitOptions\n localStorageKey?: string\n}\n\nexport class TranslationManager {\n private readonly tolgeeBase: TolgeeBaseConfig\n private tolgee: TolgeeConfig | null = null\n private readonly i18nOptions: InitOptions\n private readonly localStorageKey?: string\n private initPromise: Promise<void> | null = null\n\n constructor({ tolgee, i18nOptions = {}, localStorageKey }: TranslationManagerOptions) {\n this.tolgeeBase = tolgee\n this.i18nOptions = i18nOptions\n this.localStorageKey = localStorageKey\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 this.persistLocale(locale)\n\n if (i18n.language !== locale) {\n await i18n.changeLanguage(locale)\n }\n }\n\n private readonly persistLocale = (locale: Locale) => {\n if (!this.localStorageKey) return\n localStorage.setItem(this.localStorageKey, 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\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 [{ InContextTools }, { DevBackend }] = await Promise.all([\n import('@tolgee/web/tools'),\n import('@tolgee/i18next'),\n ])\n\n const config = this.tolgee!\n return this.createBaseTolgeeInstance()\n .use(DevBackend())\n .use(InContextTools())\n .init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n return fetch(input, { ...init, signal: AbortSignal.timeout(TOLGEE_DEV_TIMEOUT_MS) })\n },\n })\n }\n}\n","export enum TranslationNamespace {\n STUDENTS_WEB = 'students-web',\n TEACHERS_WEB = 'teachers-web',\n DISTRICT_DASH = 'district-dash',\n AUTH_WEB = 'auth-web',\n MAGMAMATH_FEATURES = 'magmamath-features',\n DRAW_BOARD = 'drawboard',\n STUDENTS_FEATURES = 'students-features',\n}\n"]}
1
+ {"version":3,"sources":["../../src/translation/translation.constants.ts","../../src/translation/TranslationManager.ts"],"names":["TranslationNamespace"],"mappings":"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","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 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}\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 { TolgeeBaseConfig, TolgeeConfig, TolgeeEnvConfig, TranslationManagerOptions } 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 localStorageKey?: string\n private readonly onInitCallbacks: OnInitCallback[] = []\n private initPromise: Promise<void> | null = null\n\n constructor({ tolgee, i18nOptions = {}, localStorageKey }: TranslationManagerOptions) {\n this.tolgeeBase = tolgee\n this.i18nOptions = i18nOptions\n this.localStorageKey = localStorageKey\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 if (!this.localStorageKey) return\n localStorage.setItem(this.localStorageKey, 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 [{ InContextTools }, { DevBackend }] = await Promise.all([\n import('@tolgee/web/tools'),\n import('@tolgee/i18next'),\n ])\n\n const config = this.tolgee!\n return this.createBaseTolgeeInstance()\n .use(DevBackend())\n .use(InContextTools())\n .init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n return fetch(input, { ...init, signal: AbortSignal.timeout(TOLGEE_DEV_TIMEOUT_MS) })\n },\n })\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmamath/frontend-config",
3
- "version": "1.1.2-rc.11",
3
+ "version": "1.1.2-rc.13",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",