@nimpl/i18n 0.0.0-experimental-504b302 → 0.0.0-experimental-7639e49

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.
Files changed (82) hide show
  1. package/README.md +2 -2
  2. package/{ClientTranslation.d.ts → dist/cjs/client-translation.d.ts} +1 -1
  3. package/dist/cjs/client-translation.js +15 -0
  4. package/dist/cjs/client-translation.js.map +1 -0
  5. package/dist/{initialize.js → cjs/initialize.js} +12 -13
  6. package/dist/cjs/initialize.js.map +1 -0
  7. package/dist/cjs/lib/client-context.d.ts +7 -0
  8. package/dist/cjs/lib/client-context.js +9 -0
  9. package/dist/cjs/lib/client-context.js.map +1 -0
  10. package/dist/cjs/lib/client-provider.d.ts +10 -0
  11. package/dist/cjs/lib/client-provider.js +16 -0
  12. package/dist/cjs/lib/client-provider.js.map +1 -0
  13. package/dist/cjs/lib/format-translate.d.ts +6 -0
  14. package/dist/cjs/lib/format-translate.js +18 -0
  15. package/dist/cjs/lib/format-translate.js.map +1 -0
  16. package/dist/cjs/lib/get-translation-core.d.ts +11 -0
  17. package/dist/cjs/lib/get-translation-core.js +27 -0
  18. package/dist/cjs/lib/get-translation-core.js.map +1 -0
  19. package/dist/cjs/lib/inject-query.d.ts +8 -0
  20. package/dist/{lib/injectQuery.js → cjs/lib/inject-query.js} +4 -3
  21. package/dist/cjs/lib/inject-query.js.map +1 -0
  22. package/dist/cjs/lib/parse-entities.d.ts +1 -0
  23. package/dist/cjs/lib/translation-core.d.ts +13 -0
  24. package/dist/cjs/lib/translation-core.js +14 -0
  25. package/dist/cjs/lib/translation-core.js.map +1 -0
  26. package/dist/cjs/lib/translation.d.ts +11 -0
  27. package/dist/{lib/Translation.js → cjs/lib/translation.js} +9 -10
  28. package/dist/cjs/lib/translation.js.map +1 -0
  29. package/dist/cjs/lib/transmitter-core.d.ts +10 -0
  30. package/dist/cjs/lib/transmitter-core.js +37 -0
  31. package/dist/cjs/lib/transmitter-core.js.map +1 -0
  32. package/dist/{useTranslation.js → cjs/use-translation.js} +11 -10
  33. package/dist/cjs/use-translation.js.map +1 -0
  34. package/dist/esm/client-translation.d.ts +11 -0
  35. package/dist/esm/client-translation.mjs +13 -0
  36. package/dist/esm/client-translation.mjs.map +1 -0
  37. package/dist/esm/initialize.d.ts +17 -0
  38. package/dist/esm/initialize.mjs +85 -0
  39. package/dist/esm/initialize.mjs.map +1 -0
  40. package/dist/esm/lib/client-context.d.ts +7 -0
  41. package/dist/esm/lib/client-context.mjs +7 -0
  42. package/dist/esm/lib/client-context.mjs.map +1 -0
  43. package/dist/esm/lib/client-provider.d.ts +10 -0
  44. package/dist/esm/lib/client-provider.mjs +14 -0
  45. package/dist/esm/lib/client-provider.mjs.map +1 -0
  46. package/dist/esm/lib/format-translate.d.ts +6 -0
  47. package/dist/esm/lib/format-translate.mjs +16 -0
  48. package/dist/esm/lib/format-translate.mjs.map +1 -0
  49. package/dist/esm/lib/get-translation-core.d.ts +11 -0
  50. package/dist/esm/lib/get-translation-core.mjs +25 -0
  51. package/dist/esm/lib/get-translation-core.mjs.map +1 -0
  52. package/dist/esm/lib/inject-query.d.ts +8 -0
  53. package/dist/esm/lib/inject-query.mjs +30 -0
  54. package/dist/esm/lib/inject-query.mjs.map +1 -0
  55. package/dist/esm/lib/parse-entities.d.ts +1 -0
  56. package/dist/esm/lib/translation-core.d.ts +13 -0
  57. package/dist/esm/lib/translation-core.mjs +12 -0
  58. package/dist/esm/lib/translation-core.mjs.map +1 -0
  59. package/dist/esm/lib/translation.d.ts +11 -0
  60. package/dist/esm/lib/translation.mjs +90 -0
  61. package/dist/esm/lib/translation.mjs.map +1 -0
  62. package/dist/esm/lib/transmitter-core.d.ts +10 -0
  63. package/dist/esm/lib/transmitter-core.mjs +35 -0
  64. package/dist/esm/lib/transmitter-core.mjs.map +1 -0
  65. package/dist/esm/types.d.ts +32 -0
  66. package/dist/esm/use-translation.d.ts +9 -0
  67. package/dist/esm/use-translation.mjs +35 -0
  68. package/dist/esm/use-translation.mjs.map +1 -0
  69. package/package.json +38 -16
  70. package/dist/ClientTranslation.js +0 -16
  71. package/dist/lib/ClientI18nContext.js +0 -6
  72. package/dist/lib/ClientI18nProvider.js +0 -47
  73. package/dist/lib/format-translate.js +0 -16
  74. package/dist/lib/get-translation-core.js +0 -28
  75. package/dist/lib/parseEntities.js +0 -8
  76. package/dist/lib/translation-core.js +0 -15
  77. package/dist/lib/transmitter-core.js +0 -38
  78. package/dist/types.js +0 -2
  79. package/env.d.ts +0 -1
  80. /package/{initialize.d.ts → dist/cjs/initialize.d.ts} +0 -0
  81. /package/{types.d.ts → dist/cjs/types.d.ts} +0 -0
  82. /package/{useTranslation.d.ts → dist/cjs/use-translation.d.ts} +0 -0
package/README.md CHANGED
@@ -199,7 +199,7 @@ Client-side hook. Requires `Transmitter` in a parent Server Component.
199
199
  ```tsx
200
200
  "use client";
201
201
 
202
- import { useTranslation } from "@nimpl/i18n/useTranslation";
202
+ import { useTranslation } from "@nimpl/i18n/use-translation";
203
203
 
204
204
  export default function Counter() {
205
205
  const { t } = useTranslation();
@@ -221,7 +221,7 @@ Client component for complex translations with embedded JSX.
221
221
  ```tsx
222
222
  "use client";
223
223
 
224
- import { ClientTranslation } from "@nimpl/i18n/ClientTranslation";
224
+ import { ClientTranslation } from "@nimpl/i18n/client-translation";
225
225
 
226
226
  // Translation: "Read our <link>documentation</link>"
227
227
  export default function Info() {
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { type I18nOptions } from "./types";
3
- import { type TranslationProps } from "./lib/Translation";
3
+ import { type TranslationProps } from "./lib/translation";
4
4
  type ClientTranslationProps = {
5
5
  term: string;
6
6
  components?: TranslationProps["components"];
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+ var translation = require('./lib/translation.js');
6
+ var useTranslation = require('./use-translation.js');
7
+
8
+ const ClientTranslation = ({ term, components, query, removeUnusedQueries, }) => {
9
+ const { t } = useTranslation.useTranslation();
10
+ const text = t(term, { query, removeUnusedQueries });
11
+ return React.createElement(translation.Translation, { term: term, text: text, components: components });
12
+ };
13
+
14
+ exports.ClientTranslation = ClientTranslation;
15
+ //# sourceMappingURL=client-translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-translation.js","sources":["../../../src/client-translation.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\n\nimport { type I18nOptions } from \"./types\";\nimport { Translation, type TranslationProps } from \"./lib/translation\";\nimport { useTranslation } from \"./use-translation\";\n\ntype ClientTranslationProps = {\n term: string;\n components?: TranslationProps[\"components\"];\n query?: I18nOptions[\"query\"];\n removeUnusedQueries?: I18nOptions[\"removeUnusedQueries\"];\n};\n\nexport const ClientTranslation: React.FC<ClientTranslationProps> = ({\n term,\n components,\n query,\n removeUnusedQueries,\n}) => {\n const { t } = useTranslation();\n const text = t(term, { query, removeUnusedQueries });\n\n return <Translation term={term} text={text} components={components} />;\n};\n"],"names":["useTranslation","Translation"],"mappings":";;;;;;;AAeO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAA,CAAA,CAAqC,CAAC,CAAA,CAChE,CAAA,CAAA,CAAA,CAAI,CAAA,CACJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACV,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAA,CAAA,CACtB,CAAA,CAAA,CAAA,CAAA,CAAI;AACD,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAE,CAAC,CAAA,CAAE,CAAA,CAAA,CAAGA,6BAAc,CAAA,CAAE;AAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAA,CAAE,CAAC;AAEpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAACC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAAA,CAAA,EAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,EAAE,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,UAAU,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,GAAI;AAC1E,CAAA;;"}
@@ -1,13 +1,10 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.initialize = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const get_translation_core_1 = require("./lib/get-translation-core");
9
- const translation_core_1 = require("./lib/translation-core");
10
- const transmitter_core_1 = require("./lib/transmitter-core");
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var getTranslationCore = require('./lib/get-translation-core.js');
5
+ var translationCore = require('./lib/translation-core.js');
6
+ var transmitterCore = require('./lib/transmitter-core.js');
7
+
11
8
  const initialize = (config) => {
12
9
  const cache = new Map();
13
10
  const loadTranslates = async (language, revalidate) => {
@@ -34,7 +31,7 @@ const initialize = (config) => {
34
31
  if (!language) {
35
32
  throw new Error("Unable to get the language in getTranslation. Please check the getLanguage method in the configuration file or pass the language as an argument.");
36
33
  }
37
- return (0, get_translation_core_1.getTranslationCore)({ ...rest, language: targetLanguage, dictionary });
34
+ return getTranslationCore.getTranslationCore({ ...rest, language: targetLanguage, dictionary });
38
35
  };
39
36
  const ServerTranslation = async (options) => {
40
37
  const { language, ...rest } = options || {};
@@ -49,7 +46,7 @@ const initialize = (config) => {
49
46
  if (!language) {
50
47
  throw new Error("Unable to get the language in ServerTranslation. Please check the getLanguage method in the configuration file or pass the language as an argument.");
51
48
  }
52
- return react_1.default.createElement(translation_core_1.TranslationCore, { ...rest, language: targetLanguage, dictionary: dictionary });
49
+ return React.createElement(translationCore.TranslationCore, { ...rest, language: targetLanguage, dictionary: dictionary });
53
50
  };
54
51
  const Transmitter = async (options) => {
55
52
  const { language, ...rest } = options || {};
@@ -64,7 +61,7 @@ const initialize = (config) => {
64
61
  if (!language) {
65
62
  throw new Error("Unable to get the language in Transmitter. Please check the getLanguage method in the configuration file or pass the language as an argument.");
66
63
  }
67
- return react_1.default.createElement(transmitter_core_1.TransmitterCore, { ...rest, language: targetLanguage, dictionary: dictionary });
64
+ return React.createElement(transmitterCore.TransmitterCore, { ...rest, language: targetLanguage, dictionary: dictionary });
68
65
  };
69
66
  const revalidate = async (language, background = false) => {
70
67
  const item = cache.get(language);
@@ -85,4 +82,6 @@ const initialize = (config) => {
85
82
  revalidate,
86
83
  };
87
84
  };
85
+
88
86
  exports.initialize = initialize;
87
+ //# sourceMappingURL=initialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.js","sources":["../../../src/initialize.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { type Config, type Translates } from \"./types\";\nimport { getTranslationCore, type GetTranslationCoreOptions } from \"./lib/get-translation-core\";\nimport { TranslationCore, type TranslationCoreProps } from \"./lib/translation-core\";\nimport { TransmitterCore, type TransmitterCoreProps } from \"./lib/transmitter-core\";\n\nexport const initialize = (config: Config) => {\n const cache = new Map<string, Translates | Promise<Translates>>();\n\n const loadTranslates = async (language: string, revalidate?: boolean) => {\n const item = cache.get(language);\n\n if (!revalidate && item) return item;\n\n if (item && \"then\" in item) {\n return item;\n }\n\n const newData = await config.load(language);\n cache.set(language, newData);\n return newData;\n };\n\n const getTranslation = async (\n options: Omit<GetTranslationCoreOptions, \"dictionary\" | \"language\"> & { language?: string },\n ) => {\n const { language, ...rest } = options || {};\n const targetLanguage = language || (await config.getLanguage());\n let dictionary: Translates;\n if (config.cache) {\n dictionary = await loadTranslates(targetLanguage);\n } else {\n dictionary = await revalidate(targetLanguage);\n }\n\n if (!language) {\n throw new Error(\n \"Unable to get the language in getTranslation. Please check the getLanguage method in the configuration file or pass the language as an argument.\",\n );\n }\n\n return getTranslationCore({ ...rest, language: targetLanguage, dictionary });\n };\n\n const ServerTranslation = async (\n options: Omit<TranslationCoreProps, \"dictionary\" | \"language\"> & { language?: string },\n ) => {\n const { language, ...rest } = options || {};\n const targetLanguage = language || (await config.getLanguage());\n let dictionary: Translates;\n if (config.cache) {\n dictionary = await loadTranslates(targetLanguage);\n } else {\n dictionary = await revalidate(targetLanguage);\n }\n\n if (!language) {\n throw new Error(\n \"Unable to get the language in ServerTranslation. Please check the getLanguage method in the configuration file or pass the language as an argument.\",\n );\n }\n\n return <TranslationCore {...rest} language={targetLanguage} dictionary={dictionary} />;\n };\n\n const Transmitter = async (\n options: Omit<TransmitterCoreProps, \"dictionary\" | \"language\"> & { language?: string },\n ) => {\n const { language, ...rest } = options || {};\n const targetLanguage = language || (await config.getLanguage());\n let dictionary: Translates;\n if (config.cache) {\n dictionary = await loadTranslates(targetLanguage);\n } else {\n dictionary = await revalidate(targetLanguage);\n }\n\n if (!language) {\n throw new Error(\n \"Unable to get the language in Transmitter. Please check the getLanguage method in the configuration file or pass the language as an argument.\",\n );\n }\n\n return <TransmitterCore {...rest} language={targetLanguage} dictionary={dictionary} />;\n };\n\n const revalidate = async (language: string, background: boolean = false) => {\n const item = cache.get(language);\n if (item && \"then\" in item) return item;\n\n if (background) {\n const newData = await loadTranslates(language, true);\n return newData;\n }\n\n const newDataPromise = loadTranslates(language, true);\n cache.set(language, newDataPromise);\n return newDataPromise;\n };\n\n return {\n Transmitter,\n ServerTranslation,\n getTranslation,\n revalidate,\n };\n};\n"],"names":["getTranslationCore","TranslationCore","TransmitterCore"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type ClientContextType = {
2
+ language: string;
3
+ translates: {
4
+ [key: string]: string;
5
+ };
6
+ } | null;
7
+ export declare const ClientContext: import("react").Context<ClientContextType>;
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+
6
+ const ClientContext = React.createContext(null);
7
+
8
+ exports.ClientContext = ClientContext;
9
+ //# sourceMappingURL=client-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-context.js","sources":["../../../../src/lib/client-context.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext } from \"react\";\n\nexport type ClientContextType = { language: string; translates: { [key: string]: string } } | null;\n\nexport const ClientContext = createContext<ClientContextType>(null);\n"],"names":["createContext"],"mappings":";;;;;MAMa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAGA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAoB,CAAA,CAAA,CAAA,CAAI,CAAA;;"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ export type ClientProviderProps = {
3
+ translates: {
4
+ [key: string]: string;
5
+ };
6
+ language: string;
7
+ children: React.ReactNode;
8
+ cleanThread?: boolean;
9
+ };
10
+ export declare const ClientProvider: React.FC<ClientProviderProps>;
@@ -0,0 +1,16 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+ var clientContext = require('./client-context.js');
6
+
7
+ const ClientProvider = ({ translates, children, language, cleanThread }) => {
8
+ const prevTranslates = React.useContext(clientContext.ClientContext);
9
+ if (cleanThread) {
10
+ Object.assign(translates, prevTranslates === null || prevTranslates === void 0 ? void 0 : prevTranslates.translates);
11
+ }
12
+ return React.createElement(clientContext.ClientContext.Provider, { value: { language, translates } }, children);
13
+ };
14
+
15
+ exports.ClientProvider = ClientProvider;
16
+ //# sourceMappingURL=client-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-provider.js","sources":["../../../../src/lib/client-provider.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useContext } from \"react\";\n\nimport { ClientContext } from \"./client-context\";\n\nexport type ClientProviderProps = {\n translates: { [key: string]: string };\n language: string;\n children: React.ReactNode;\n cleanThread?: boolean;\n};\n\nexport const ClientProvider: React.FC<ClientProviderProps> = ({ translates, children, language, cleanThread }) => {\n const prevTranslates = useContext(ClientContext);\n\n if (cleanThread) {\n Object.assign(translates, prevTranslates?.translates);\n }\n\n return <ClientContext.Provider value={{ language, translates }}>{children}</ClientContext.Provider>;\n};\n"],"names":["useContext","ClientContext"],"mappings":";;;;;;AAaO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CAAA,CAAkC,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAI;AAC7G,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CAAA,CAAGA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,CAACC,2BAAa,CAAC;IAEhD,CAAA,CAAA,CAAA,CAAI,WAAW,CAAA,CAAE;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAE,cAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAE,UAAU,CAAC;IACzD;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAACA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAC,QAAQ,CAAA,GAAC,KAAK,CAAA,CAAE,CAAA,CAAE,QAAQ,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,EAAE,CAAA,CAAA,CAAA,CAAG,QAAQ,CAA0B;AACvG,CAAA;;"}
@@ -0,0 +1,6 @@
1
+ import { type InjectQueryArg } from "./inject-query";
2
+ export interface FormatTranslateOptions extends Omit<InjectQueryArg, "query"> {
3
+ parseEntities?: boolean;
4
+ query?: InjectQueryArg["query"];
5
+ }
6
+ export declare const formatTranslate: ({ term, text, removeUnusedQueries, query, parseEntities }: FormatTranslateOptions) => string;
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var htmlEntities = require('html-entities');
4
+ var injectQuery = require('./inject-query.js');
5
+
6
+ const formatTranslate = ({ term, text, removeUnusedQueries, query, parseEntities }) => {
7
+ let newTranslate = text;
8
+ if (query) {
9
+ newTranslate = injectQuery.injectQuery({ text: newTranslate, query, removeUnusedQueries });
10
+ }
11
+ if (parseEntities === undefined || parseEntities === true) {
12
+ newTranslate = htmlEntities.decode(newTranslate, { scope: "strict" });
13
+ }
14
+ return newTranslate;
15
+ };
16
+
17
+ exports.formatTranslate = formatTranslate;
18
+ //# sourceMappingURL=format-translate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-translate.js","sources":["../../../../src/lib/format-translate.ts"],"sourcesContent":["import { decode } from \"html-entities\";\n\nimport { injectQuery, type InjectQueryArg } from \"./inject-query\";\n\nexport interface FormatTranslateOptions extends Omit<InjectQueryArg, \"query\"> {\n parseEntities?: boolean;\n query?: InjectQueryArg[\"query\"];\n}\n\nexport const formatTranslate = ({ term, text, removeUnusedQueries, query, parseEntities }: FormatTranslateOptions) => {\n let newTranslate = text;\n if (query) {\n newTranslate = injectQuery({ term, text: newTranslate, query, removeUnusedQueries });\n }\n if (parseEntities === undefined || parseEntities === true) {\n newTranslate = decode(newTranslate, { scope: \"strict\" });\n }\n return newTranslate;\n};\n"],"names":["injectQuery","decode"],"mappings":";;;;;AASO,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,aAAa,EAA0B,KAAI;IACjH,IAAI,YAAY,GAAG,IAAI;IACvB,IAAI,KAAK,EAAE;AACP,QAAA,YAAY,GAAGA,uBAAW,CAAC,EAAQ,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACxF;IACA,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE;QACvD,YAAY,GAAGC,mBAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC5D;AACA,IAAA,OAAO,YAAY;AACvB;;;;"}
@@ -0,0 +1,11 @@
1
+ import { type Translates, type I18nOptions } from "../types";
2
+ export type GetTranslationCoreOptions = {
3
+ language: string;
4
+ namespace?: string;
5
+ dictionary: Translates;
6
+ };
7
+ export type GetTranslationCoreReturnType = {
8
+ t: (term: string, opts?: I18nOptions) => string;
9
+ language: string;
10
+ };
11
+ export declare const getTranslationCore: (options: GetTranslationCoreOptions) => GetTranslationCoreReturnType;
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var op = require('object-path');
4
+ var formatTranslate = require('./format-translate.js');
5
+
6
+ const getTranslationCore = (options) => {
7
+ const { language, namespace, dictionary } = options || {};
8
+ const namespaceDictionary = namespace ? op.get(dictionary, namespace) : dictionary;
9
+ const t = (term, opts) => {
10
+ let termDictionary = namespaceDictionary;
11
+ let termNamespace = namespace;
12
+ let termKey = term;
13
+ if (term.includes(":")) {
14
+ [termNamespace, termKey] = term.split(":");
15
+ termDictionary = op.get(dictionary, termNamespace);
16
+ }
17
+ const translation = op.get(termDictionary, termKey);
18
+ const fullTerm = `${termNamespace ? `${termNamespace}.` : ""}${termKey}`;
19
+ if (typeof translation !== "string" || !translation)
20
+ return fullTerm;
21
+ return formatTranslate.formatTranslate({ term: fullTerm, text: translation, parseEntities: true, ...opts });
22
+ };
23
+ return { t, language };
24
+ };
25
+
26
+ exports.getTranslationCore = getTranslationCore;
27
+ //# sourceMappingURL=get-translation-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-translation-core.js","sources":["../../../../src/lib/get-translation-core.ts"],"sourcesContent":["import op from \"object-path\";\n\nimport { type Translates, type I18nOptions } from \"../types\";\nimport { formatTranslate } from \"./format-translate\";\n\nexport type GetTranslationCoreOptions = {\n language: string;\n namespace?: string;\n dictionary: Translates;\n};\nexport type GetTranslationCoreReturnType = { t: (term: string, opts?: I18nOptions) => string; language: string };\n\nexport const getTranslationCore = (options: GetTranslationCoreOptions): GetTranslationCoreReturnType => {\n const { language, namespace, dictionary } = options || {};\n\n const namespaceDictionary = namespace ? op.get(dictionary, namespace) : dictionary;\n\n const t: GetTranslationCoreReturnType[\"t\"] = (term, opts) => {\n let termDictionary = namespaceDictionary;\n let termNamespace = namespace;\n let termKey: string = term;\n\n if (term.includes(\":\")) {\n [termNamespace, termKey] = term.split(\":\");\n termDictionary = op.get(dictionary, termNamespace);\n }\n\n const translation = op.get(termDictionary, termKey);\n const fullTerm = `${termNamespace ? `${termNamespace}.` : \"\"}${termKey}`;\n\n if (typeof translation !== \"string\" || !translation) return fullTerm;\n\n return formatTranslate({ term: fullTerm, text: translation, parseEntities: true, ...opts });\n };\n\n return { t, language };\n};\n"],"names":["formatTranslate"],"mappings":";;;;;AAYO,MAAM,kBAAkB,GAAG,CAAC,OAAkC,KAAkC;IACnG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE;AAEzD,IAAA,MAAM,mBAAmB,GAAG,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,UAAU;AAElF,IAAA,MAAM,CAAC,GAAsC,CAAC,IAAI,EAAE,IAAI,KAAI;QACxD,IAAI,cAAc,GAAG,mBAAmB;QACxC,IAAI,aAAa,GAAG,SAAS;QAC7B,IAAI,OAAO,GAAW,IAAI;AAE1B,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACpB,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAC1C,cAAc,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC;QACtD;QAEA,MAAM,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC;AACnD,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,aAAa,GAAG,CAAA,EAAG,aAAa,CAAA,CAAA,CAAG,GAAG,EAAE,CAAA,EAAG,OAAO,EAAE;AAExE,QAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,QAAQ;AAEpE,QAAA,OAAOA,+BAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AAC/F,IAAA,CAAC;AAED,IAAA,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE;AAC1B;;;;"}
@@ -0,0 +1,8 @@
1
+ import { type Query } from "../types";
2
+ export type InjectQueryArg = {
3
+ term: string;
4
+ text: string;
5
+ query: Query;
6
+ removeUnusedQueries?: boolean;
7
+ };
8
+ export declare const injectQuery: ({ text, query, removeUnusedQueries }: InjectQueryArg) => string;
@@ -1,6 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.injectQuery = void 0;
1
+ 'use strict';
2
+
4
3
  const injectQuery = ({ text, query, removeUnusedQueries }) => {
5
4
  let result = "";
6
5
  let i = 0;
@@ -28,4 +27,6 @@ const injectQuery = ({ text, query, removeUnusedQueries }) => {
28
27
  }
29
28
  return result;
30
29
  };
30
+
31
31
  exports.injectQuery = injectQuery;
32
+ //# sourceMappingURL=inject-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-query.js","sources":["../../../../src/lib/inject-query.ts"],"sourcesContent":["import { type Query } from \"../types\";\n\nexport type InjectQueryArg = {\n term: string;\n text: string;\n query: Query;\n removeUnusedQueries?: boolean;\n};\n\nexport const injectQuery = ({ text, query, removeUnusedQueries }: InjectQueryArg): string => {\n let result = \"\";\n let i = 0;\n\n while (i < text.length) {\n if (text[i] === \"{\" && text[i + 1] === \"{\") {\n const closeIndex = text.indexOf(\"}}\", i + 2);\n if (closeIndex !== -1) {\n const key = text.slice(i + 2, closeIndex);\n const value = query[key];\n if (value !== undefined) {\n result += value.toString();\n } else {\n console.warn(`Query key \"${key}\" not found in options for \"${text}\"`);\n if (!removeUnusedQueries) {\n result += text.slice(i, closeIndex + 2);\n }\n }\n i = closeIndex + 2;\n continue;\n }\n }\n result += text[i];\n i++;\n }\n\n return result;\n};\n"],"names":[],"mappings":";;AASO,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAkB,KAAY;IACxF,IAAI,MAAM,GAAG,EAAE;IACf,IAAI,CAAC,GAAG,CAAC;AAET,IAAA,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACpB,QAAA,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AACxC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AAC5C,YAAA,IAAI,UAAU,KAAK,EAAE,EAAE;AACnB,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;AACzC,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;AACxB,gBAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,oBAAA,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAC9B;qBAAO;oBACH,OAAO,CAAC,IAAI,CAAC,CAAA,WAAA,EAAc,GAAG,CAAA,4BAAA,EAA+B,IAAI,CAAA,CAAA,CAAG,CAAC;oBACrE,IAAI,CAAC,mBAAmB,EAAE;wBACtB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;oBAC3C;gBACJ;AACA,gBAAA,CAAC,GAAG,UAAU,GAAG,CAAC;gBAClB;YACJ;QACJ;AACA,QAAA,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,EAAE;IACP;AAEA,IAAA,OAAO,MAAM;AACjB;;;;"}
@@ -0,0 +1 @@
1
+ export declare const parseEntities: (translate: string) => string;
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { type Translates, type I18nOptions } from "../types";
3
+ import { type TranslationProps } from "./translation";
4
+ export type TranslationCoreProps = {
5
+ term: string;
6
+ language: string;
7
+ dictionary: Translates;
8
+ namespace?: string;
9
+ components?: TranslationProps["components"];
10
+ query?: I18nOptions["query"];
11
+ removeUnusedQueries?: I18nOptions["removeUnusedQueries"];
12
+ };
13
+ export declare const TranslationCore: React.FC<TranslationCoreProps>;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var translation = require('./translation.js');
5
+ var getTranslationCore = require('./get-translation-core.js');
6
+
7
+ const TranslationCore = ({ dictionary, namespace, term, components, query, removeUnusedQueries, language, }) => {
8
+ const { t } = getTranslationCore.getTranslationCore({ language, namespace, dictionary });
9
+ const text = t(term, { query, removeUnusedQueries });
10
+ return React.createElement(translation.Translation, { term: term, text: text, components: components });
11
+ };
12
+
13
+ exports.TranslationCore = TranslationCore;
14
+ //# sourceMappingURL=translation-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation-core.js","sources":["../../../../src/lib/translation-core.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { type Translates, type I18nOptions } from \"../types\";\nimport { Translation, type TranslationProps } from \"./translation\";\nimport { getTranslationCore } from \"./get-translation-core\";\n\nexport type TranslationCoreProps = {\n term: string;\n language: string;\n dictionary: Translates;\n namespace?: string;\n components?: TranslationProps[\"components\"];\n query?: I18nOptions[\"query\"];\n removeUnusedQueries?: I18nOptions[\"removeUnusedQueries\"];\n};\n\nexport const TranslationCore: React.FC<TranslationCoreProps> = ({\n dictionary,\n namespace,\n term,\n components,\n query,\n removeUnusedQueries,\n language,\n}) => {\n const { t } = getTranslationCore({ language, namespace, dictionary });\n const text = t(term, { query, removeUnusedQueries });\n\n return <Translation term={term} text={text} components={components} />;\n};\n"],"names":["getTranslationCore","Translation"],"mappings":";;;;;;MAgBa,eAAe,GAAmC,CAAC,EAC5D,UAAU,EACV,SAAS,EACT,IAAI,EACJ,UAAU,EACV,KAAK,EACL,mBAAmB,EACnB,QAAQ,GACX,KAAI;AACD,IAAA,MAAM,EAAE,CAAC,EAAE,GAAGA,qCAAkB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACrE,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;AAEpD,IAAA,OAAO,KAAA,CAAA,aAAA,CAACC,uBAAW,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,GAAI;AAC1E;;;;"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ export type TranslationProps = {
3
+ term: string;
4
+ text: string;
5
+ components?: {
6
+ [key: string]: React.ComponentType<{
7
+ children?: React.ReactNode;
8
+ }>;
9
+ };
10
+ };
11
+ export declare const Translation: ({ term, text, components }: TranslationProps) => React.ReactNode[];
@@ -1,11 +1,8 @@
1
- "use strict";
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
2
5
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.Translation = void 0;
8
- const react_1 = __importDefault(require("react"));
9
6
  const parseTag = (tag) => {
10
7
  const isSelfClosing = tag.endsWith("/>");
11
8
  const isClosing = tag[1] === "/";
@@ -44,7 +41,7 @@ const splitByTags = (text) => {
44
41
  };
45
42
  const Translation = ({ term, text, components }) => {
46
43
  const { parts: textParts, tags } = splitByTags(text);
47
- const parts = textParts.map((el, i) => react_1.default.createElement(react_1.default.Fragment, { key: `p-${i}` }, el));
44
+ const parts = textParts.map((el, i) => React.createElement(React.Fragment, { key: `p-${i}` }, el));
48
45
  if (components) {
49
46
  const openedTags = [];
50
47
  tags.forEach((tag, tagIndex) => {
@@ -52,7 +49,7 @@ const Translation = ({ term, text, components }) => {
52
49
  if (tagType === "self") {
53
50
  const Component = components[tagName];
54
51
  if (Component) {
55
- parts.splice(tagIndex + 1, 1, react_1.default.createElement(Component, { key: `c-${tagIndex}` }));
52
+ parts.splice(tagIndex + 1, 1, React.createElement(Component, { key: `c-${tagIndex}` }));
56
53
  }
57
54
  else {
58
55
  console.warn(`Unknown component for term "${term}" - ${tagName}`);
@@ -74,7 +71,7 @@ const Translation = ({ term, text, components }) => {
74
71
  typeof child === "object" &&
75
72
  "props" in child &&
76
73
  child.props.children));
77
- parts.splice(targetTag.position + 1, tagIndex - targetTag.position, react_1.default.createElement(Component, { key: `${tagIndex}-${targetIndex}` }, children));
74
+ parts.splice(targetTag.position + 1, tagIndex - targetTag.position, React.createElement(Component, { key: `${tagIndex}-${targetIndex}` }, children));
78
75
  }
79
76
  else {
80
77
  console.warn(`Unknown component for term "${term}" - ${targetTag}`);
@@ -90,4 +87,6 @@ const Translation = ({ term, text, components }) => {
90
87
  }
91
88
  return parts;
92
89
  };
90
+
93
91
  exports.Translation = Translation;
92
+ //# sourceMappingURL=translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation.js","sources":["../../../../src/lib/translation.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport React from \"react\";\n\nexport type TranslationProps = {\n term: string;\n text: string;\n components?: { [key: string]: React.ComponentType<{ children?: React.ReactNode }> };\n};\n\ntype ParsedTag = {\n name: string;\n type: \"open\" | \"close\" | \"self\";\n};\n\nconst parseTag = (tag: string): ParsedTag => {\n const isSelfClosing = tag.endsWith(\"/>\");\n const isClosing = tag[1] === \"/\";\n const start = isClosing ? 2 : 1;\n const end = isSelfClosing\n ? tag.indexOf(\" \") !== -1 && tag.indexOf(\" \") < tag.length - 2\n ? tag.indexOf(\" \")\n : tag.length - 2\n : tag.length - 1;\n return {\n name: tag.slice(start, end),\n type: isSelfClosing ? \"self\" : isClosing ? \"close\" : \"open\",\n };\n};\n\nconst splitByTags = (text: string): { parts: string[]; tags: string[] } => {\n const parts: string[] = [];\n const tags: string[] = [];\n let current = \"\";\n let i = 0;\n\n while (i < text.length) {\n if (text[i] === \"<\") {\n const closeIndex = text.indexOf(\">\", i);\n if (closeIndex !== -1) {\n parts.push(current);\n current = \"\";\n tags.push(text.slice(i, closeIndex + 1));\n i = closeIndex + 1;\n continue;\n }\n }\n current += text[i];\n i++;\n }\n parts.push(current);\n\n return { parts, tags };\n};\n\nexport const Translation = ({ term, text, components }: TranslationProps): React.ReactNode[] => {\n const { parts: textParts, tags } = splitByTags(text);\n const parts = textParts.map((el, i) => <React.Fragment key={`p-${i}`}>{el}</React.Fragment>);\n\n if (components) {\n const openedTags: { tag: string; position: number }[] = [];\n tags.forEach((tag, tagIndex) => {\n const { name: tagName, type: tagType } = parseTag(tag);\n if (tagType === \"self\") {\n const Component = components[tagName as keyof typeof components];\n if (Component) {\n parts.splice(tagIndex + 1, 1, <Component key={`c-${tagIndex}`} />);\n } else {\n console.warn(`Unknown component for term \"${term}\" - ${tagName}`);\n }\n } else if (tagType === \"close\") {\n const openedTagIndex = openedTags.findIndex((i) => i.tag === tagName);\n if (openedTagIndex !== -1) {\n const lastOpenedIndex = openedTags.length - 1 - openedTagIndex;\n const openedTagsLength = openedTags.length;\n for (let i = openedTagsLength; i > lastOpenedIndex; i--) {\n const targetIndex = i - 1;\n const targetTag = openedTags[targetIndex];\n const Component = components[targetTag.tag as keyof typeof components];\n if (Component) {\n const children = parts\n .slice(targetTag.position + 1, tagIndex + 1)\n .filter((child) =>\n Boolean(\n child &&\n typeof child === \"object\" &&\n \"props\" in child &&\n (child.props as any).children,\n ),\n );\n parts.splice(\n targetTag.position + 1,\n tagIndex - targetTag.position,\n <Component key={`${tagIndex}-${targetIndex}`}>{children}</Component>,\n );\n } else {\n console.warn(`Unknown component for term \"${term}\" - ${targetTag}`);\n }\n openedTags.splice(targetIndex, 1);\n }\n }\n } else {\n openedTags.push({ tag: tagName, position: tagIndex });\n }\n });\n }\n\n return parts;\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { type I18nOptions, type Translates } from "../types";
3
+ export type TransmitterCoreProps = {
4
+ dictionary: Translates;
5
+ language: string;
6
+ terms: (string | [string, I18nOptions])[];
7
+ children: React.ReactNode;
8
+ cleanThread?: boolean;
9
+ };
10
+ export declare const TransmitterCore: React.FC<TransmitterCoreProps>;
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var op = require('object-path');
5
+ var clientProvider = require('./client-provider.js');
6
+ var formatTranslate = require('./format-translate.js');
7
+
8
+ const formatTranslates = (result, targetKey, translates, opts = {}) => {
9
+ if (!translates)
10
+ return;
11
+ if (typeof translates === "string") {
12
+ result[targetKey] = formatTranslate.formatTranslate({ term: targetKey, text: translates, parseEntities: true, ...opts });
13
+ }
14
+ else {
15
+ Object.entries(translates).forEach(([subKey, translate]) => {
16
+ formatTranslates(result, `${targetKey}.${subKey}`, translate, opts);
17
+ });
18
+ }
19
+ };
20
+ const TransmitterCore = async ({ dictionary, language, terms, children, cleanThread, }) => {
21
+ const result = {};
22
+ terms.forEach((term) => {
23
+ if (Array.isArray(term)) {
24
+ const [termKey, opts] = term;
25
+ const translates = op.get(dictionary, termKey);
26
+ formatTranslates(result, termKey, translates, opts);
27
+ }
28
+ else {
29
+ const translates = op.get(dictionary, term);
30
+ formatTranslates(result, term, translates);
31
+ }
32
+ });
33
+ return (React.createElement(clientProvider.ClientProvider, { language: language, translates: result, cleanThread: cleanThread }, children));
34
+ };
35
+
36
+ exports.TransmitterCore = TransmitterCore;
37
+ //# sourceMappingURL=transmitter-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transmitter-core.js","sources":["../../../../src/lib/transmitter-core.tsx"],"sourcesContent":["import React from \"react\";\nimport op from \"object-path\";\n\nimport { type I18nOptions, type Translates } from \"../types\";\nimport { ClientProvider } from \"./client-provider\";\nimport { formatTranslate } from \"./format-translate\";\n\nexport type TransmitterCoreProps = {\n dictionary: Translates;\n language: string;\n terms: (string | [string, I18nOptions])[];\n children: React.ReactNode;\n cleanThread?: boolean;\n};\n\ntype ClientTranslates = { [key: string]: string };\n\nconst formatTranslates = (\n result: ClientTranslates,\n targetKey: string,\n translates: string | Translates,\n opts: I18nOptions = {},\n) => {\n if (!translates) return;\n\n if (typeof translates === \"string\") {\n result[targetKey] = formatTranslate({ term: targetKey, text: translates, parseEntities: true, ...opts });\n } else {\n Object.entries(translates).forEach(([subKey, translate]) => {\n formatTranslates(result, `${targetKey}.${subKey}`, translate, opts);\n });\n }\n};\n\nexport const TransmitterCore: React.FC<TransmitterCoreProps> = async ({\n dictionary,\n language,\n terms,\n children,\n cleanThread,\n}) => {\n const result: { [key: string]: string } = {};\n terms.forEach((term) => {\n if (Array.isArray(term)) {\n const [termKey, opts] = term;\n const translates = op.get(dictionary, termKey) as Translates;\n formatTranslates(result, termKey, translates, opts);\n } else {\n const translates = op.get(dictionary, term) as Translates;\n formatTranslates(result, term, translates);\n }\n });\n\n return (\n <ClientProvider language={language} translates={result} cleanThread={cleanThread}>\n {children}\n </ClientProvider>\n );\n};\n"],"names":["formatTranslate","ClientProvider"],"mappings":";;;;;;;AAiBA,MAAM,gBAAgB,GAAG,CACrB,MAAwB,EACxB,SAAiB,EACjB,UAA+B,EAC/B,IAAA,GAAoB,EAAE,KACtB;AACA,IAAA,IAAI,CAAC,UAAU;QAAE;AAEjB,IAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAChC,MAAM,CAAC,SAAS,CAAC,GAAGA,+BAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;IAC5G;SAAO;AACH,QAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,KAAI;AACvD,YAAA,gBAAgB,CAAC,MAAM,EAAE,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,EAAE,SAAS,EAAE,IAAI,CAAC;AACvE,QAAA,CAAC,CAAC;IACN;AACJ,CAAC;AAEM,MAAM,eAAe,GAAmC,OAAO,EAClE,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,WAAW,GACd,KAAI;IACD,MAAM,MAAM,GAA8B,EAAE;AAC5C,IAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI;YAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAe;YAC5D,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC;QACvD;aAAO;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAe;AACzD,YAAA,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;QAC9C;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,QACI,KAAA,CAAA,aAAA,CAACC,6BAAc,IAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,IAC3E,QAAQ,CACI;AAEzB;;;;"}
@@ -1,11 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useTranslation = void 0;
4
- const react_1 = require("react");
5
- const ClientI18nContext_1 = require("./lib/ClientI18nContext");
6
- const injectQuery_1 = require("./lib/injectQuery");
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var clientContext = require('./lib/client-context.js');
5
+ var injectQuery = require('./lib/inject-query.js');
6
+
7
7
  const useTranslation = ({ namespace } = {}) => {
8
- const context = (0, react_1.useContext)(ClientI18nContext_1.ClientI18nContext);
8
+ const context = React.useContext(clientContext.ClientContext);
9
9
  if (!context) {
10
10
  throw new Error("Please, Init I18nTransmitter for client components - https://nimpl.dev/docs/i18n/usage#client-components");
11
11
  }
@@ -21,9 +21,8 @@ const useTranslation = ({ namespace } = {}) => {
21
21
  const translation = translates[termKey];
22
22
  if (!translation)
23
23
  return termKey;
24
- if (opts?.query) {
25
- return (0, injectQuery_1.injectQuery)({
26
- term,
24
+ if (opts === null || opts === void 0 ? void 0 : opts.query) {
25
+ return injectQuery.injectQuery({
27
26
  text: translation,
28
27
  query: opts.query,
29
28
  removeUnusedQueries: opts.removeUnusedQueries,
@@ -33,4 +32,6 @@ const useTranslation = ({ namespace } = {}) => {
33
32
  };
34
33
  return { t, language };
35
34
  };
35
+
36
36
  exports.useTranslation = useTranslation;
37
+ //# sourceMappingURL=use-translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-translation.js","sources":["../../../src/use-translation.ts"],"sourcesContent":["import { useContext } from \"react\";\n\nimport { type I18nOptions } from \"./types\";\nimport { ClientContext } from \"./lib/client-context\";\nimport { injectQuery } from \"./lib/inject-query\";\n\ntype GetTranslationReturnType = { t: (term: string, opts?: I18nOptions) => string; language: string };\n\nexport const useTranslation = ({ namespace }: { namespace?: string } = {}): GetTranslationReturnType => {\n const context = useContext(ClientContext);\n\n if (!context) {\n throw new Error(\n \"Please, Init I18nTransmitter for client components - https://nimpl.dev/docs/i18n/usage#client-components\",\n );\n }\n\n const { language, translates } = context;\n\n const t: GetTranslationReturnType[\"t\"] = (term, opts) => {\n let termKey: string;\n if (term.includes(\":\")) {\n termKey = term.replace(\":\", \".\");\n } else {\n termKey = `${namespace ? `${namespace}.` : \"\"}${term}`;\n }\n const translation = translates[termKey];\n\n if (!translation) return termKey;\n\n if (opts?.query) {\n return injectQuery({\n term,\n text: translation,\n query: opts.query,\n removeUnusedQueries: opts.removeUnusedQueries,\n });\n }\n\n return translation;\n };\n\n return { t, language };\n};\n"],"names":["useContext","ClientContext","injectQuery"],"mappings":";;;;;;AAQO,MAAM,cAAc,GAAG,CAAC,EAAE,SAAS,EAAA,GAA6B,EAAE,KAA8B;AACnG,IAAA,MAAM,OAAO,GAAGA,gBAAU,CAACC,2BAAa,CAAC;IAEzC,IAAI,CAAC,OAAO,EAAE;AACV,QAAA,MAAM,IAAI,KAAK,CACX,0GAA0G,CAC7G;IACL;AAEA,IAAA,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO;AAExC,IAAA,MAAM,CAAC,GAAkC,CAAC,IAAI,EAAE,IAAI,KAAI;AACpD,QAAA,IAAI,OAAe;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACpB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;QACpC;aAAO;AACH,YAAA,OAAO,GAAG,CAAA,EAAG,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,CAAG,GAAG,EAAE,CAAA,EAAG,IAAI,EAAE;QAC1D;AACA,QAAA,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;AAEvC,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,OAAO;QAEhC,IAAI,IAAI,aAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,KAAK,EAAE;AACb,YAAA,OAAOC,uBAAW,CAAC;gBAEf,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAChD,aAAA,CAAC;QACN;AAEA,QAAA,OAAO,WAAW;AACtB,IAAA,CAAC;AAED,IAAA,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE;AAC1B;;;;"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import { type I18nOptions } from "./types";
3
+ import { type TranslationProps } from "./lib/translation";
4
+ type ClientTranslationProps = {
5
+ term: string;
6
+ components?: TranslationProps["components"];
7
+ query?: I18nOptions["query"];
8
+ removeUnusedQueries?: I18nOptions["removeUnusedQueries"];
9
+ };
10
+ export declare const ClientTranslation: React.FC<ClientTranslationProps>;
11
+ export {};
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import React from 'react';
3
+ import { Translation } from './lib/translation.mjs';
4
+ import { useTranslation } from './use-translation.mjs';
5
+
6
+ const ClientTranslation = ({ term, components, query, removeUnusedQueries, }) => {
7
+ const { t } = useTranslation();
8
+ const text = t(term, { query, removeUnusedQueries });
9
+ return React.createElement(Translation, { term: term, text: text, components: components });
10
+ };
11
+
12
+ export { ClientTranslation };
13
+ //# sourceMappingURL=client-translation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-translation.mjs","sources":["../../../src/client-translation.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\n\nimport { type I18nOptions } from \"./types\";\nimport { Translation, type TranslationProps } from \"./lib/translation\";\nimport { useTranslation } from \"./use-translation\";\n\ntype ClientTranslationProps = {\n term: string;\n components?: TranslationProps[\"components\"];\n query?: I18nOptions[\"query\"];\n removeUnusedQueries?: I18nOptions[\"removeUnusedQueries\"];\n};\n\nexport const ClientTranslation: React.FC<ClientTranslationProps> = ({\n term,\n components,\n query,\n removeUnusedQueries,\n}) => {\n const { t } = useTranslation();\n const text = t(term, { query, removeUnusedQueries });\n\n return <Translation term={term} text={text} components={components} />;\n};\n"],"names":[],"mappings":";;;;;AAeO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAA,CAAA,CAAqC,CAAC,CAAA,CAChE,CAAA,CAAA,CAAA,CAAI,CAAA,CACJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACV,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAA,CAAA,CACtB,CAAA,CAAA,CAAA,CAAA,CAAI;AACD,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAE,CAAC,CAAA,CAAE,CAAA,CAAA,CAAG,cAAc,CAAA,CAAE;AAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAA,CAAE,CAAC;AAEpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,EAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,EAAE,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,UAAU,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,GAAI;AAC1E,CAAA;;"}
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import { type Config, type Translates } from "./types";
3
+ import { type GetTranslationCoreOptions } from "./lib/get-translation-core";
4
+ import { type TranslationCoreProps } from "./lib/translation-core";
5
+ import { type TransmitterCoreProps } from "./lib/transmitter-core";
6
+ export declare const initialize: (config: Config) => {
7
+ Transmitter: (options: Omit<TransmitterCoreProps, "dictionary" | "language"> & {
8
+ language?: string;
9
+ }) => Promise<React.JSX.Element>;
10
+ ServerTranslation: (options: Omit<TranslationCoreProps, "dictionary" | "language"> & {
11
+ language?: string;
12
+ }) => Promise<React.JSX.Element>;
13
+ getTranslation: (options: Omit<GetTranslationCoreOptions, "dictionary" | "language"> & {
14
+ language?: string;
15
+ }) => Promise<import("./lib/get-translation-core").GetTranslationCoreReturnType>;
16
+ revalidate: (language: string, background?: boolean) => Promise<Translates>;
17
+ };