@magic-translate/react 1.16.0 → 1.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/components/Translate.d.ts +5 -5
- package/dist/components/Translate.d.ts.map +1 -1
- package/dist/components/Translate.js +26 -41
- package/dist/components/Translate.js.map +1 -1
- package/dist/components/Translate.test.d.ts +1 -1
- package/dist/components/Translate.test.js +172 -446
- package/dist/components/Translate.test.js.map +1 -1
- package/dist/context/MagicTranslateContext.d.ts +31 -31
- package/dist/context/MagicTranslateContext.d.ts.map +1 -1
- package/dist/context/MagicTranslateContext.js +21 -14
- package/dist/context/MagicTranslateContext.js.map +1 -1
- package/dist/hooks/use-language-switcher.d.ts +5 -5
- package/dist/hooks/use-language-switcher.js +2 -2
- package/dist/hooks/use-language-switcher.js.map +1 -1
- package/dist/hooks/use-magic-translate.d.ts +1 -1
- package/dist/hooks/use-magic-translate.d.ts.map +1 -1
- package/dist/hooks/use-magic-translate.js +1 -1
- package/dist/hooks/use-magic-translate.js.map +1 -1
- package/dist/hooks/use-translate.d.ts +3 -3
- package/dist/hooks/use-translate.js +11 -28
- package/dist/hooks/use-translate.js.map +1 -1
- package/dist/hooks/use-translate.test.d.ts +1 -1
- package/dist/hooks/use-translate.test.js +65 -117
- package/dist/hooks/use-translate.test.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.es.js +2 -2
- package/dist/index.es.js.map +1 -1
- package/dist/index.min.js +3 -2
- package/dist/index.min.js.map +1 -1
- package/package.json +50 -53
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.17.1](https://github.com/magic-translate/magic-translate-react/compare/v1.17.0...v1.17.1) (2026-09-14)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* give yarn install the npm auth token ([fde3bd3](https://github.com/magic-translate/magic-translate-react/commit/fde3bd393c68d8b62dfc526da878d79d6c528550))
|
|
9
|
+
|
|
10
|
+
## [1.17.0](https://github.com/magic-translate/magic-translate-react/compare/v1.16.0...v1.17.0) (2026-09-11)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* support React 19 and modernize build output ([b86b024](https://github.com/magic-translate/magic-translate-react/commit/b86b024036043fda9fbc9e14984dc7a32f959b43))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* use the target language in the useTranslate cache key ([ea950b4](https://github.com/magic-translate/magic-translate-react/commit/ea950b46e7a020ca91ee818b189905c7585b2c08))
|
|
21
|
+
|
|
3
22
|
## [1.16.0](https://github.com/magic-translate/magic-translate-react/compare/v1.15.1...v1.16.0) (2025-02-28)
|
|
4
23
|
|
|
5
24
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import React, { PropsWithChildren } from 'react';
|
|
2
|
-
import { TranslateOptions } from '@magic-translate/core';
|
|
3
|
-
export
|
|
4
|
-
export declare const Translate: React.FunctionComponent<PropsWithChildren<TranslateProps>>;
|
|
5
|
-
export declare const T: React.FunctionComponent<React.PropsWithChildren<TranslateOptions>>;
|
|
1
|
+
import React, { PropsWithChildren } from 'react';
|
|
2
|
+
import { TranslateOptions } from '@magic-translate/core';
|
|
3
|
+
export type TranslateProps = TranslateOptions;
|
|
4
|
+
export declare const Translate: React.FunctionComponent<PropsWithChildren<TranslateProps>>;
|
|
5
|
+
export declare const T: React.FunctionComponent<React.PropsWithChildren<TranslateOptions>>;
|
|
6
6
|
//# sourceMappingURL=Translate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Translate.d.ts","sourceRoot":"","sources":["../../src/components/Translate.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,iBAAiB,EAKlB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,gBAAgB,EAAe,MAAM,uBAAuB,CAAC;AAGtE,
|
|
1
|
+
{"version":3,"file":"Translate.d.ts","sourceRoot":"","sources":["../../src/components/Translate.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,iBAAiB,EAKlB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,gBAAgB,EAAe,MAAM,uBAAuB,CAAC;AAGtE,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAuB9C,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAC7C,iBAAiB,CAAC,cAAc,CAAC,CAuFlC,CAAC;AAEF,eAAO,MAAM,CAAC,oEAAY,CAAC"}
|
|
@@ -1,55 +1,35 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
-
var t = {};
|
|
14
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
-
t[p] = s[p];
|
|
16
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
-
t[p[i]] = s[p[i]];
|
|
20
|
-
}
|
|
21
|
-
return t;
|
|
22
|
-
};
|
|
23
1
|
import parse from 'html-react-parser';
|
|
24
2
|
import React, { useCallback, useEffect, useState, useRef, } from 'react';
|
|
25
3
|
import { renderToString } from 'react-dom/server';
|
|
26
4
|
import { libraryName } from '@magic-translate/core';
|
|
27
5
|
import { useMagicTranslate } from '../hooks/use-magic-translate';
|
|
28
|
-
|
|
6
|
+
const assertChildIsNotAReactComponent = (child) => {
|
|
29
7
|
if ('type' in child && typeof child.type === 'function') {
|
|
30
|
-
|
|
8
|
+
let errorMsg = 'React components are not allowed inside `<T>...</T>` components.';
|
|
31
9
|
if ('displayName' in child.type) {
|
|
32
|
-
errorMsg +=
|
|
10
|
+
errorMsg += ` The component found inside the T component is ${child.type.displayName}.`;
|
|
33
11
|
}
|
|
34
12
|
throw new Error(errorMsg);
|
|
35
13
|
}
|
|
36
14
|
};
|
|
37
|
-
export
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
15
|
+
export const Translate = ({ children, lang, formality }) => {
|
|
16
|
+
const { dataLoader, language } = useMagicTranslate();
|
|
17
|
+
const [translation, setTranslation] = useState(null);
|
|
18
|
+
const lastRequestId = useRef(0);
|
|
19
|
+
// `lang` and `formality` are destructured rather than kept as a rest object
|
|
20
|
+
// so that they can be depended on by value: a rest object is a fresh
|
|
21
|
+
// reference on every render and would rebuild `translate` each time.
|
|
22
|
+
const translate = useCallback((toTranslate) => {
|
|
43
23
|
// make sure that we only ever use the response of the most resent request.
|
|
44
|
-
|
|
24
|
+
const requestId = Math.random();
|
|
45
25
|
lastRequestId.current = requestId;
|
|
46
|
-
dataLoader.load(
|
|
26
|
+
dataLoader.load({ text: toTranslate, lang, formality }).then((t) => {
|
|
47
27
|
if (lastRequestId.current === requestId) {
|
|
48
28
|
setTranslation(t);
|
|
49
29
|
}
|
|
50
30
|
});
|
|
51
|
-
}, [dataLoader]);
|
|
52
|
-
useEffect(
|
|
31
|
+
}, [dataLoader, lang, formality]);
|
|
32
|
+
useEffect(() => {
|
|
53
33
|
// single child
|
|
54
34
|
if (React.Children.count(children) === 0) {
|
|
55
35
|
return;
|
|
@@ -62,7 +42,9 @@ export var Translate = function (_a) {
|
|
|
62
42
|
translate(children);
|
|
63
43
|
return;
|
|
64
44
|
}
|
|
65
|
-
if (typeof children === 'number' ||
|
|
45
|
+
if (typeof children === 'number' ||
|
|
46
|
+
typeof children === 'boolean' ||
|
|
47
|
+
typeof children === 'bigint') {
|
|
66
48
|
return;
|
|
67
49
|
}
|
|
68
50
|
assertChildIsNotAReactComponent(children);
|
|
@@ -72,24 +54,27 @@ export var Translate = function (_a) {
|
|
|
72
54
|
return;
|
|
73
55
|
}
|
|
74
56
|
/* istanbul ignore next */
|
|
75
|
-
console.warn(
|
|
57
|
+
console.warn(`[${libraryName}]: Impossible state reached. If you see this message, please open an issue on GitHub. Offending value was a ${typeof children} with value: ${children}`);
|
|
76
58
|
return;
|
|
77
59
|
}
|
|
78
60
|
if (React.Children.count(children) > 1) {
|
|
79
|
-
React.Children.forEach(children,
|
|
61
|
+
React.Children.forEach(children, (child) => {
|
|
80
62
|
// make sure all children are either primitives or plain HTML elements
|
|
81
63
|
if (!child ||
|
|
82
64
|
typeof child === 'string' ||
|
|
83
65
|
typeof child === 'number' ||
|
|
84
|
-
typeof child === 'boolean'
|
|
66
|
+
typeof child === 'boolean' ||
|
|
67
|
+
typeof child === 'bigint') {
|
|
85
68
|
return;
|
|
86
69
|
}
|
|
87
70
|
assertChildIsNotAReactComponent(child);
|
|
88
71
|
});
|
|
89
72
|
translate(renderToString(React.createElement(React.Fragment, null, children)));
|
|
90
73
|
}
|
|
91
|
-
|
|
74
|
+
// `language` is not read here, but a language switch has to re-translate
|
|
75
|
+
// the children, so it stays an explicit trigger.
|
|
76
|
+
}, [children, language, translate]);
|
|
92
77
|
return React.createElement(React.Fragment, null, translation ? parse(translation) : children);
|
|
93
78
|
};
|
|
94
|
-
export
|
|
79
|
+
export const T = Translate;
|
|
95
80
|
//# sourceMappingURL=Translate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Translate.js","sourceRoot":"","sources":["../../src/components/Translate.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Translate.js","sourceRoot":"","sources":["../../src/components/Translate.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=Translate.test.d.ts.map
|