@magic-translate/react 1.16.0 → 1.17.0

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.17.0](https://github.com/magic-translate/magic-translate-react/compare/v1.16.0...v1.17.0) (2026-09-11)
4
+
5
+
6
+ ### Features
7
+
8
+ * support React 19 and modernize build output ([b86b024](https://github.com/magic-translate/magic-translate-react/commit/b86b024036043fda9fbc9e14984dc7a32f959b43))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * use the target language in the useTranslate cache key ([ea950b4](https://github.com/magic-translate/magic-translate-react/commit/ea950b46e7a020ca91ee818b189905c7585b2c08))
14
+
3
15
  ## [1.16.0](https://github.com/magic-translate/magic-translate-react/compare/v1.15.1...v1.16.0) (2025-02-28)
4
16
 
5
17
 
@@ -1,6 +1,6 @@
1
- import React, { PropsWithChildren } from 'react';
2
- import { TranslateOptions } from '@magic-translate/core';
3
- export declare type TranslateProps = TranslateOptions;
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,oBAAY,cAAc,GAAG,gBAAgB,CAAC;AAoB9C,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAC7C,iBAAiB,CAAC,cAAc,CAAC,CA6ElC,CAAC;AAEF,eAAO,MAAM,CAAC,oEAAY,CAAC"}
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
- var assertChildIsNotAReactComponent = function (child) {
6
+ const assertChildIsNotAReactComponent = (child) => {
29
7
  if ('type' in child && typeof child.type === 'function') {
30
- var errorMsg = 'React components are not allowed inside `<T>...</T>` components.';
8
+ let errorMsg = 'React components are not allowed inside `<T>...</T>` components.';
31
9
  if ('displayName' in child.type) {
32
- errorMsg += " The component found inside the T component is ".concat(child.type.displayName, ".");
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 var Translate = function (_a) {
38
- var children = _a.children, options = __rest(_a, ["children"]);
39
- var _b = useMagicTranslate(), dataLoader = _b.dataLoader, language = _b.language, sourceLanguage = _b.sourceLanguage;
40
- var _c = useState(null), translation = _c[0], setTranslation = _c[1];
41
- var lastRequestId = useRef(0);
42
- var translate = useCallback(function (toTranslate) {
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
- var requestId = Math.random();
24
+ const requestId = Math.random();
45
25
  lastRequestId.current = requestId;
46
- dataLoader.load(__assign({ text: toTranslate }, options)).then(function (t) {
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(function () {
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' || typeof children === 'boolean') {
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("[".concat(libraryName, "]: Impossible state reached. If you see this message, please open an issue on GitHub. Offending value was a ").concat(typeof children, " with value: ").concat(children));
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, function (child) {
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
- }, [children, language]);
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 var T = Translate;
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":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,KAAK,EAAE,EAEZ,WAAW,EACX,SAAS,EACT,QAAQ,EACR,MAAM,GACP,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAoB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAIjE,IAAM,+BAA+B,GAAG,UACtC,KAGqB;IAErB,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;QACvD,IAAI,QAAQ,GACV,kEAAkE,CAAC;QACrE,IAAI,aAAa,IAAI,KAAK,CAAC,IAAI,EAAE;YAC/B,QAAQ,IAAI,yDACT,KAAK,CAAC,IAAgC,CAAC,WAAW,MAClD,CAAC;SACL;QACD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC3B;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,SAAS,GAElB,UAAC,EAAwB;IAAtB,IAAA,QAAQ,cAAA,EAAK,OAAO,cAAtB,YAAwB,CAAF;IACnB,IAAA,KAA2C,iBAAiB,EAAE,EAA5D,UAAU,gBAAA,EAAE,QAAQ,cAAA,EAAE,cAAc,oBAAwB,CAAC;IAC/D,IAAA,KAAgC,QAAQ,CAAgB,IAAI,CAAC,EAA5D,WAAW,QAAA,EAAE,cAAc,QAAiC,CAAC;IACpE,IAAM,aAAa,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;IAExC,IAAM,SAAS,GAAG,WAAW,CAC3B,UAAC,WAAmB;QAClB,2EAA2E;QAC3E,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC;QAElC,UAAU,CAAC,IAAI,YAAG,IAAI,EAAE,WAAW,IAAK,OAAO,EAAG,CAAC,IAAI,CAAC,UAAC,CAAC;YACxD,IAAI,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE;gBACvC,cAAc,CAAC,CAAC,CAAC,CAAC;aACnB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,SAAS,CAAC;QACR,eAAe;QACf,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACxC,OAAO;SACR;QAED,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;gBAChC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACpB,OAAO;aACR;YAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE;gBACjE,OAAO;aACR;YAED,+BAA+B,CAAC,QAAQ,CAAC,CAAC;YAE1C,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC3D,4BAA4B;gBAC5B,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpC,OAAO;aACR;YAED,0BAA0B;YAC1B,OAAO,CAAC,IAAI,CACV,WAAI,WAAW,yHAA+G,OAAO,QAAQ,0BAAgB,QAAQ,CAAE,CACxK,CAAC;YAEF,OAAO;SACR;QAED,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAC,KAAK;gBACrC,sEAAsE;gBACtE,IACE,CAAC,KAAK;oBACN,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,KAAK,KAAK,SAAS,EAC1B;oBACA,OAAO;iBACR;gBAED,+BAA+B,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,cAAc,CAAC,0CAAG,QAAQ,CAAI,CAAC,CAAC,CAAC;SAC5C;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzB,OAAO,0CAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAI,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,CAAC,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"Translate.js","sourceRoot":"","sources":["../../src/components/Translate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,KAAK,EAAE,EAEZ,WAAW,EACX,SAAS,EACT,QAAQ,EACR,MAAM,GACP,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAoB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAYjE,MAAM,+BAA+B,GAAG,CAAC,KAAwB,EAAE,EAAE;IACnE,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACxD,IAAI,QAAQ,GACV,kEAAkE,CAAC;QACrE,IAAI,aAAa,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAChC,QAAQ,IAAI,kDACT,KAAK,CAAC,IAAgC,CAAC,WAC1C,GAAG,CAAC;QACN,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAElB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;IACpC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACrD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;IAExC,4EAA4E;IAC5E,qEAAqE;IACrE,qEAAqE;IACrE,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,WAAmB,EAAE,EAAE;QACtB,2EAA2E;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC;QAElC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACjE,IAAI,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxC,cAAc,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAC9B,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,eAAe;QACf,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,IACE,OAAO,QAAQ,KAAK,QAAQ;gBAC5B,OAAO,QAAQ,KAAK,SAAS;gBAC7B,OAAO,QAAQ,KAAK,QAAQ,EAC5B,CAAC;gBACD,OAAO;YACT,CAAC;YAED,+BAA+B,CAAC,QAAQ,CAAC,CAAC;YAE1C,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5D,4BAA4B;gBAC5B,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpC,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,OAAO,CAAC,IAAI,CACV,IAAI,WAAW,+GAA+G,OAAO,QAAQ,gBAAgB,QAAQ,EAAE,CACxK,CAAC;YAEF,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBACzC,sEAAsE;gBACtE,IACE,CAAC,KAAK;oBACN,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,KAAK,KAAK,SAAS;oBAC1B,OAAO,KAAK,KAAK,QAAQ,EACzB,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,+BAA+B,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,cAAc,CAAC,0CAAG,QAAQ,CAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,yEAAyE;QACzE,iDAAiD;IACnD,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAEpC,OAAO,0CAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAI,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC"}
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=Translate.test.d.ts.map