@multiplatform.one/i18n 7.83.1 → 7.84.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.
Files changed (50) hide show
  1. package/dist/cjs/createI18nConfig.cjs +56 -0
  2. package/dist/cjs/createI18nConfig.native.js +59 -0
  3. package/dist/cjs/createI18nConfig.native.js.map +1 -0
  4. package/dist/cjs/detectLanguage.cjs +62 -0
  5. package/dist/cjs/detectLanguage.native.js +95 -0
  6. package/dist/cjs/detectLanguage.native.js.map +1 -0
  7. package/dist/cjs/formatters.cjs +79 -0
  8. package/dist/cjs/formatters.native.js +96 -0
  9. package/dist/cjs/formatters.native.js.map +1 -0
  10. package/dist/cjs/frappeBackend.cjs +51 -0
  11. package/dist/cjs/frappeBackend.native.js +59 -0
  12. package/dist/cjs/frappeBackend.native.js.map +1 -0
  13. package/dist/cjs/index.cjs +45 -0
  14. package/dist/cjs/index.native.js +48 -0
  15. package/dist/cjs/index.native.js.map +1 -0
  16. package/dist/cjs/localePersistence.cjs +46 -0
  17. package/dist/cjs/localePersistence.native.js +52 -0
  18. package/dist/cjs/localePersistence.native.js.map +1 -0
  19. package/dist/cjs/useLanguage.cjs +59 -0
  20. package/dist/cjs/useLanguage.native.js +64 -0
  21. package/dist/cjs/useLanguage.native.js.map +1 -0
  22. package/dist/esm/createI18nConfig.mjs +31 -0
  23. package/dist/esm/createI18nConfig.mjs.map +1 -0
  24. package/dist/esm/createI18nConfig.native.js +31 -0
  25. package/dist/esm/createI18nConfig.native.js.map +1 -0
  26. package/dist/esm/detectLanguage.mjs +37 -0
  27. package/dist/esm/detectLanguage.mjs.map +1 -0
  28. package/dist/esm/detectLanguage.native.js +67 -0
  29. package/dist/esm/detectLanguage.native.js.map +1 -0
  30. package/dist/esm/formatters.mjs +49 -0
  31. package/dist/esm/formatters.mjs.map +1 -0
  32. package/dist/esm/formatters.native.js +63 -0
  33. package/dist/esm/formatters.native.js.map +1 -0
  34. package/dist/esm/frappeBackend.mjs +26 -0
  35. package/dist/esm/frappeBackend.mjs.map +1 -0
  36. package/dist/esm/frappeBackend.native.js +31 -0
  37. package/dist/esm/frappeBackend.native.js.map +1 -0
  38. package/dist/esm/index.mjs +8 -0
  39. package/dist/esm/index.mjs.map +1 -0
  40. package/dist/esm/index.native.js +8 -0
  41. package/dist/esm/index.native.js.map +1 -0
  42. package/dist/esm/localePersistence.mjs +19 -0
  43. package/dist/esm/localePersistence.mjs.map +1 -0
  44. package/dist/esm/localePersistence.native.js +22 -0
  45. package/dist/esm/localePersistence.native.js.map +1 -0
  46. package/dist/esm/useLanguage.mjs +23 -0
  47. package/dist/esm/useLanguage.mjs.map +1 -0
  48. package/dist/esm/useLanguage.native.js +25 -0
  49. package/dist/esm/useLanguage.native.js.map +1 -0
  50. package/package.json +13 -4
@@ -0,0 +1,56 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var createI18nConfig_exports = {};
24
+ __export(createI18nConfig_exports, {
25
+ createI18nConfig: () => createI18nConfig
26
+ });
27
+ module.exports = __toCommonJS(createI18nConfig_exports);
28
+ function createI18nConfig(options) {
29
+ const config = {
30
+ // JSON compatibility for React Native
31
+ compatibilityJSON: "v4",
32
+ // Namespace configuration
33
+ defaultNS: options.defaultNamespace,
34
+ ns: [...options.namespaces],
35
+ // Language configuration
36
+ supportedLngs: [...options.languages],
37
+ fallbackLng: options.defaultLanguage,
38
+ // Resources (provided by caller)
39
+ resources: options.resources,
40
+ // Interpolation settings
41
+ interpolation: {
42
+ // React handles XSS escaping, so we disable i18next escaping
43
+ escapeValue: false
44
+ },
45
+ // Missing key handling
46
+ returnNull: false,
47
+ returnEmptyString: false,
48
+ // Debug mode (can be enabled via environment)
49
+ debug: false
50
+ };
51
+ if (process.env.VITE_FRAPPE_ENABLED === "true" && options.frappeBackend) {
52
+ config.partialBundledLanguages = true;
53
+ config.backend = options.frappeBackend;
54
+ }
55
+ return config;
56
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var createI18nConfig_exports = {};
26
+ __export(createI18nConfig_exports, {
27
+ createI18nConfig: () => createI18nConfig
28
+ });
29
+ module.exports = __toCommonJS(createI18nConfig_exports);
30
+ function createI18nConfig(options) {
31
+ var config = {
32
+ // JSON compatibility for React Native
33
+ compatibilityJSON: "v4",
34
+ // Namespace configuration
35
+ defaultNS: options.defaultNamespace,
36
+ ns: [...options.namespaces],
37
+ // Language configuration
38
+ supportedLngs: [...options.languages],
39
+ fallbackLng: options.defaultLanguage,
40
+ // Resources (provided by caller)
41
+ resources: options.resources,
42
+ // Interpolation settings
43
+ interpolation: {
44
+ // React handles XSS escaping, so we disable i18next escaping
45
+ escapeValue: false
46
+ },
47
+ // Missing key handling
48
+ returnNull: false,
49
+ returnEmptyString: false,
50
+ // Debug mode (can be enabled via environment)
51
+ debug: false
52
+ };
53
+ if (process.env.VITE_FRAPPE_ENABLED === "true" && options.frappeBackend) {
54
+ config.partialBundledLanguages = true;
55
+ config.backend = options.frappeBackend;
56
+ }
57
+ return config;
58
+ }
59
+ //# sourceMappingURL=createI18nConfig.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createI18nConfig_exports","__export","createI18nConfig","module","exports","options","config","compatibilityJSON","defaultNS","defaultNamespace","ns","namespaces","supportedLngs","languages","fallbackLng","defaultLanguage","resources","interpolation","escapeValue","returnNull","returnEmptyString","debug","process","env","VITE_FRAPPE_ENABLED","frappeBackend"],"sources":["../../src/createI18nConfig.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,wBAAA;AAAAC,QAAA,CAAAD,wBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAA;AAAA;AAsCOC,MAAA,CAAAC,OAAS,GAAAT,YAAiB,CAAAK,wBAAyC;AACxE,SAAME,gBAAsBA,CAAAG,OAAA;EAAA,IAAAC,MAAA;IAE1B;IAAmBC,iBAAA;IAGnB;IACAC,SAAQ,EAAAH,OAAQ,CAAAI,gBAAU;IAAAC,EAAA,GAG1B,GAAAL,OAAA,CAAAM,UAAmB,CACnB;IAAqB;IAGrBC,aAAW,GAAQ,GAAAP,OAAA,CAAAQ,SAAA,CAGnB;IAAeC,WAAA,EAAAT,OAAA,CAAAU,eAAA;IAAA;IAGfC,SAAA,EAAAX,OAAA,CAAAW,SAAA;IAAA;IAGAC,aAAY;MACZ;MAAmBC,WAAA;IAGnB;IACF;IAIAC,UAAY,OAAI;IACdC,iBAAO;IACP;IACFC,KAAA;EAEA;EACF,IAAAC,OAAA,CAAAC,GAAA,CAAAC,mBAAA,eAAAnB,OAAA,CAAAoB,aAAA","ignoreList":[]}
@@ -0,0 +1,62 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var detectLanguage_exports = {};
24
+ __export(detectLanguage_exports, {
25
+ detectLanguage: () => detectLanguage
26
+ });
27
+ module.exports = __toCommonJS(detectLanguage_exports);
28
+ var import_localePersistence = require("./localePersistence.cjs");
29
+ function detectLanguage(request, options) {
30
+ const {
31
+ supportedLanguages,
32
+ defaultLanguage
33
+ } = options;
34
+ const cookieHeader = request.headers.get("cookie") ?? "";
35
+ const cookieLang = (0, import_localePersistence.parseCookieValue)(cookieHeader, "preferred_language");
36
+ if (cookieLang && supportedLanguages.includes(cookieLang)) return cookieLang;
37
+ const acceptLang = request.headers.get("accept-language");
38
+ if (acceptLang) {
39
+ const preferred = parseAcceptLanguage(acceptLang);
40
+ for (const lang of preferred) {
41
+ if (supportedLanguages.includes(lang)) return lang;
42
+ const base = lang.split("-")[0];
43
+ if (base !== lang && supportedLanguages.includes(base)) return base;
44
+ }
45
+ }
46
+ return defaultLanguage;
47
+ }
48
+ function parseAcceptLanguage(header) {
49
+ return header.split(",").map(part => {
50
+ const [lang, ...params] = part.trim().split(";");
51
+ const qParam = params.find(p => p.trim().startsWith("q="));
52
+ const q = qParam ? Number.parseFloat(qParam.trim().slice(2)) : 1;
53
+ return {
54
+ lang: lang.trim(),
55
+ q
56
+ };
57
+ }).filter(({
58
+ lang
59
+ }) => lang && lang !== "*").sort((a, b) => b.q - a.q).map(({
60
+ lang
61
+ }) => lang);
62
+ }
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var detectLanguage_exports = {};
26
+ __export(detectLanguage_exports, {
27
+ detectLanguage: () => detectLanguage
28
+ });
29
+ module.exports = __toCommonJS(detectLanguage_exports);
30
+ var import_localePersistence = require("./localePersistence.native.js");
31
+ function detectLanguage(request, options) {
32
+ var _request_headers_get;
33
+ var {
34
+ supportedLanguages,
35
+ defaultLanguage
36
+ } = options;
37
+ var cookieHeader = (_request_headers_get = request.headers.get("cookie")) !== null && _request_headers_get !== void 0 ? _request_headers_get : "";
38
+ var cookieLang = (0, import_localePersistence.parseCookieValue)(cookieHeader, "preferred_language");
39
+ if (cookieLang && supportedLanguages.includes(cookieLang)) return cookieLang;
40
+ var acceptLang = request.headers.get("accept-language");
41
+ if (acceptLang) {
42
+ var preferred = parseAcceptLanguage(acceptLang);
43
+ var _iteratorNormalCompletion = true,
44
+ _didIteratorError = false,
45
+ _iteratorError = void 0;
46
+ try {
47
+ for (var _iterator = preferred[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
48
+ var lang = _step.value;
49
+ if (supportedLanguages.includes(lang)) return lang;
50
+ var base = lang.split("-")[0];
51
+ if (base !== lang && supportedLanguages.includes(base)) return base;
52
+ }
53
+ } catch (err) {
54
+ _didIteratorError = true;
55
+ _iteratorError = err;
56
+ } finally {
57
+ try {
58
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
59
+ _iterator.return();
60
+ }
61
+ } finally {
62
+ if (_didIteratorError) {
63
+ throw _iteratorError;
64
+ }
65
+ }
66
+ }
67
+ }
68
+ return defaultLanguage;
69
+ }
70
+ function parseAcceptLanguage(header) {
71
+ return header.split(",").map(function (part) {
72
+ var [lang, ...params] = part.trim().split(";");
73
+ var qParam = params.find(function (p) {
74
+ return p.trim().startsWith("q=");
75
+ });
76
+ var q = qParam ? Number.parseFloat(qParam.trim().slice(2)) : 1;
77
+ return {
78
+ lang: lang.trim(),
79
+ q
80
+ };
81
+ }).filter(function (param) {
82
+ var {
83
+ lang
84
+ } = param;
85
+ return lang && lang !== "*";
86
+ }).sort(function (a, b) {
87
+ return b.q - a.q;
88
+ }).map(function (param) {
89
+ var {
90
+ lang
91
+ } = param;
92
+ return lang;
93
+ });
94
+ }
95
+ //# sourceMappingURL=detectLanguage.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","detectLanguage_exports","__export","detectLanguage","module","exports","import_localePersistence","require","request","options","_request_headers_get","supportedLanguages","defaultLanguage","cookieHeader","headers","get","cookieLang","parseCookieValue","includes","acceptLang","preferred","parseAcceptLanguage","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","lang","base","split","err","return"],"sources":["../../src/detectLanguage.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,sBAAA;AAAAC,QAAA,CAAAD,sBAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAA,CAAAK,sBAAiC;AAW1B,IAAAK,wBAAwB,GAAAC,OAAkB,gCAAwC;AACvF,SAAMJ,cAAEA,CAAAK,OAAoB,EAAAC,OAAA;EAG5B,IAAAC,oBAAqB;EACrB;IAAMC,kBAAa;IAAAC;EAAA,IAAAH,OAAA;EACnB,IAAII,YAAA,GAAc,CAAAH,oBAAmB,GAAAF,OAAS,CAAAM,OAAa,CAAAC,GAAA,SAAO,eAAAL,oBAAA,cAAAA,oBAAA;EAGlE,IAAAM,UAAM,KAAa,EAAAV,wBAAoB,CAAAW,gBAAiB,EAAAJ,YAAA;EACxD,IAAIG,UAAA,IAAYL,kBAAA,CAAAO,QAAA,CAAAF,UAAA,UAAAA,UAAA;EACd,IAAAG,UAAM,GAAAX,OAAY,CAAAM,OAAA,CAAAC,GAAA,kBAA8B;EAChD,IAAAI,UAAW;IACT,IAAAC,SAAI,GAAAC,mBAA4B,CAAAF,UAAO;IAEvC,IAAAG,yBAA2B,GAAG;MAAAC,iBAAA;MAAAC,cAAA;IAC9B;MACF,SAAAC,SAAA,GAAAL,SAAA,CAAAM,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;QACF,IAAAS,IAAA,GAAAH,KAAA,CAAA5B,KAAA;QAEA,IAAOW,kBAAA,CAAAO,QAAA,CAAAa,IAAA,UAAAA,IAAA;QACT,IAAAC,IAAA,GAAAD,IAAA,CAAAE,KAAA;QAGA,IAASD,IAAA,KAAAD,IAAA,IAAoBpB,kBAA0B,CAAAO,QAAA,CAAAc,IAAA,UAAAA,IAAA;MACrD;IAGI,SAAOE,GAAA,EAAM;MACbX,iBAAe,GAAO;MACtBC,cAAU,GAASU,GAAA;IACnB,UAAS;MAEV;QAGL,KAAAZ,yBAAA,IAAAG,SAAA,CAAAU,MAAA","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var formatters_exports = {};
24
+ __export(formatters_exports, {
25
+ createCurrencyFormatter: () => createCurrencyFormatter,
26
+ createDateFormatter: () => createDateFormatter,
27
+ createNumberFormatter: () => createNumberFormatter,
28
+ useFormatCurrency: () => useFormatCurrency,
29
+ useFormatDate: () => useFormatDate,
30
+ useFormatNumber: () => useFormatNumber
31
+ });
32
+ module.exports = __toCommonJS(formatters_exports);
33
+ var import_react = require("react");
34
+ var import_useLanguage = require("./useLanguage.cjs");
35
+ function getRelativeTime(language, date) {
36
+ const diffMs = new Date(date).getTime() - Date.now();
37
+ const abs = Math.abs(diffMs) / 1e3;
38
+ const rtf = new Intl.RelativeTimeFormat(language, {
39
+ numeric: "auto"
40
+ });
41
+ if (abs < 60) return rtf.format(Math.round(diffMs / 1e3), "second");
42
+ if (abs < 3600) return rtf.format(Math.round(diffMs / 6e4), "minute");
43
+ if (abs < 86400) return rtf.format(Math.round(diffMs / 36e5), "hour");
44
+ if (abs < 2592e3) return rtf.format(Math.round(diffMs / 864e5), "day");
45
+ if (abs < 31536e3) return rtf.format(Math.round(diffMs / 2592e6), "month");
46
+ return rtf.format(Math.round(diffMs / 31536e6), "year");
47
+ }
48
+ function createDateFormatter(language) {
49
+ return {
50
+ format: (date, options) => new Intl.DateTimeFormat(language, options).format(new Date(date)),
51
+ relative: date => getRelativeTime(language, date)
52
+ };
53
+ }
54
+ function createNumberFormatter(language) {
55
+ return {
56
+ format: (value, options) => new Intl.NumberFormat(language, options).format(value)
57
+ };
58
+ }
59
+ function createCurrencyFormatter(language) {
60
+ return {
61
+ format: (value, currency, options) => new Intl.NumberFormat(language, {
62
+ ...options,
63
+ style: "currency",
64
+ currency
65
+ }).format(value)
66
+ };
67
+ }
68
+ function useFormatDate() {
69
+ const [language] = (0, import_useLanguage.useLanguage)();
70
+ return (0, import_react.useMemo)(() => createDateFormatter(language), [language]);
71
+ }
72
+ function useFormatNumber() {
73
+ const [language] = (0, import_useLanguage.useLanguage)();
74
+ return (0, import_react.useMemo)(() => createNumberFormatter(language), [language]);
75
+ }
76
+ function useFormatCurrency() {
77
+ const [language] = (0, import_useLanguage.useLanguage)();
78
+ return (0, import_react.useMemo)(() => createCurrencyFormatter(language), [language]);
79
+ }
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var formatters_exports = {};
26
+ __export(formatters_exports, {
27
+ createCurrencyFormatter: () => createCurrencyFormatter,
28
+ createDateFormatter: () => createDateFormatter,
29
+ createNumberFormatter: () => createNumberFormatter,
30
+ useFormatCurrency: () => useFormatCurrency,
31
+ useFormatDate: () => useFormatDate,
32
+ useFormatNumber: () => useFormatNumber
33
+ });
34
+ module.exports = __toCommonJS(formatters_exports);
35
+ var import_react = require("react");
36
+ var import_useLanguage = require("./useLanguage.native.js");
37
+ function getRelativeTime(language, date) {
38
+ var diffMs = new Date(date).getTime() - Date.now();
39
+ var abs = Math.abs(diffMs) / 1e3;
40
+ var rtf = new Intl.RelativeTimeFormat(language, {
41
+ numeric: "auto"
42
+ });
43
+ if (abs < 60) return rtf.format(Math.round(diffMs / 1e3), "second");
44
+ if (abs < 3600) return rtf.format(Math.round(diffMs / 6e4), "minute");
45
+ if (abs < 86400) return rtf.format(Math.round(diffMs / 36e5), "hour");
46
+ if (abs < 2592e3) return rtf.format(Math.round(diffMs / 864e5), "day");
47
+ if (abs < 31536e3) return rtf.format(Math.round(diffMs / 2592e6), "month");
48
+ return rtf.format(Math.round(diffMs / 31536e6), "year");
49
+ }
50
+ function createDateFormatter(language) {
51
+ return {
52
+ format: function format(date, options) {
53
+ return new Intl.DateTimeFormat(language, options).format(new Date(date));
54
+ },
55
+ relative: function relative(date) {
56
+ return getRelativeTime(language, date);
57
+ }
58
+ };
59
+ }
60
+ function createNumberFormatter(language) {
61
+ return {
62
+ format: function format(value, options) {
63
+ return new Intl.NumberFormat(language, options).format(value);
64
+ }
65
+ };
66
+ }
67
+ function createCurrencyFormatter(language) {
68
+ return {
69
+ format: function format(value, currency, options) {
70
+ return new Intl.NumberFormat(language, {
71
+ ...options,
72
+ style: "currency",
73
+ currency
74
+ }).format(value);
75
+ }
76
+ };
77
+ }
78
+ function useFormatDate() {
79
+ var [language] = (0, import_useLanguage.useLanguage)();
80
+ return (0, import_react.useMemo)(function () {
81
+ return createDateFormatter(language);
82
+ }, [language]);
83
+ }
84
+ function useFormatNumber() {
85
+ var [language] = (0, import_useLanguage.useLanguage)();
86
+ return (0, import_react.useMemo)(function () {
87
+ return createNumberFormatter(language);
88
+ }, [language]);
89
+ }
90
+ function useFormatCurrency() {
91
+ var [language] = (0, import_useLanguage.useLanguage)();
92
+ return (0, import_react.useMemo)(function () {
93
+ return createCurrencyFormatter(language);
94
+ }, [language]);
95
+ }
96
+ //# sourceMappingURL=formatters.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","formatters_exports","__export","createCurrencyFormatter","createDateFormatter","createNumberFormatter","useFormatCurrency","useFormatDate","useFormatNumber","module","exports","import_react","require","import_useLanguage","getRelativeTime","language","date","diffMs","Date","getTime","now","abs","Math","rtf","Intl","RelativeTimeFormat","numeric","format","round","options","DateTimeFormat","relative","NumberFormat","currency","style"],"sources":["../../src/formatters.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,kBAAA;AAAAC,QAAA,CAAAD,kBAAA;EAAAE,uBAAA,EAAAA,CAAA,KAAAA,uBAAA;EAAAC,mBAAA,EAAAA,CAAA,KAAAA,mBAAA;EAAAC,qBAAA,EAAAA,CAAA,KAAAA,qBAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAA,iBAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAA,aAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAd,YAAwB,CAAAK,kBAAA;AACxB,IAAAU,YAAA,GAAAC,OAA4B;AAI5B,IAAAC,kBAAS,GAAgBD,OAAA,0BAA2C;AAClE,SAAME,eAAaA,CAAAC,QAAW,EAAAC,IAAA,EAAQ;EACtC,IAAAC,MAAM,GAAM,IAAKC,IAAI,CAAAF,IAAA,CAAM,CAAAG,OAAI,KAAAD,IAAA,CAAAE,GAAA;EAC/B,IAAAC,GAAM,GAAAC,IAAM,CAAAD,GAAI,CAAAJ,MAAK;EACrB,IAAIM,GAAA,GAAM,IAAIC,IAAA,CAAAC,kBAAuB,CAAAV,QAAM;IAC3CW,OAAI,EAAM;EACV;EACA,IAAIL,GAAA,GAAM,WAASE,GAAA,CAAOI,MAAI,CAAAL,IAAO,CAAAM,KAAK,CAAAX,MAAM,OAAS,UAAW;EACpE,IAAII,GAAA,GAAM,aAAUE,GAAO,CAAAI,MAAI,CAAAL,IAAO,CAAAM,KAAK,CAAAX,MAAM,MAAS,WAAa;EACvE,IAAAI,GAAO,QAAI,SAAYE,GAAA,CAAAI,MAAM,CAAAL,IAAS,CAAAM,KAAW,CAAAX,MAAG,GAAM;EAC5D,IAAAI,GAAA,kBAAAE,GAAA,CAAAI,MAAA,CAAAL,IAAA,CAAAM,KAAA,CAAAX,MAAA;EAEO,IAAAI,GAAS,mBAAAE,GAAoB,CAAAI,MAAA,CAAkBL,IAAA,CAAAM,KAAA,CAAAX,MAAA;EACpD,OAAOM,GAAA,CAAAI,MAAA,CAAAL,IAAA,CAAAM,KAAA,CAAAX,MAAA;AAAA;AAE6D,SAClEb,mBAA+BA,CAAAW,QAAA;EACjC;IACFY,MAAA,WAAAA,OAAAX,IAAA,EAAAa,OAAA;MAEO,OAAS,IAAAL,IAAA,CAAAM,cAAsB,CAAAf,QAAkB,EAAAc,OAAA,EAAAF,MAAA,KAAAT,IAAA,CAAAF,IAAA;IACtD;IACEe,QAAQ,EAAC,SAAeA,SACtBf,IAAI;MACR,OAAAF,eAAA,CAAAC,QAAA,EAAAC,IAAA;IACF;EAEO;AACL;AAAO,SACLX,qBAGEA,CAAAU,QAAA;EAEJ;IACFY,MAAA,WAAAA,OAAA3B,KAAA,EAAA6B,OAAA;MAEO,OAAS,IAAAL,IAAA,CAAAQ,YAAgB,CAAAjB,QAAA,EAAAc,OAAA,EAAAF,MAAA,CAAA3B,KAAA;IAC9B;EACA;AACF;AAEO,SAASG,uBAAkBA,CAAAY,QAAA;EAChC,OAAO;IACPY,MAAA,WAAOA,OAAA3B,KAAA,EAAQiC,QAAM,EAAAJ,OAAA;MACvB,WAAAL,IAAA,CAAAQ,YAAA,CAAAjB,QAAA;QAEO,GAASc,OAAA;QACRK,KAAC,YAAY;QACnBD;MACF,GAAAN,MAAA,CAAA3B,KAAA","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var frappeBackend_exports = {};
24
+ __export(frappeBackend_exports, {
25
+ createFrappeBackend: () => createFrappeBackend
26
+ });
27
+ module.exports = __toCommonJS(frappeBackend_exports);
28
+ async function fetchTranslations(language, options) {
29
+ const base = options.baseUrl ?? "";
30
+ const fetchFn = options.fetch ?? globalThis.fetch;
31
+ const url = `${base}/api/method/frappe.translate.get_dict?language=${encodeURIComponent(language)}`;
32
+ const res = await fetchFn(url, {
33
+ credentials: "include"
34
+ });
35
+ if (!res.ok) throw new Error(`Frappe translation fetch failed: ${res.status}`);
36
+ const data = await res.json();
37
+ return data.message ?? {};
38
+ }
39
+ function createFrappeBackend() {
40
+ if (process.env.VITE_FRAPPE_ENABLED !== "true") return null;
41
+ let opts = {};
42
+ return {
43
+ type: "backend",
44
+ init(_services, backendOptions, _i18nextOptions) {
45
+ opts = backendOptions ?? {};
46
+ },
47
+ read(language, _namespace, callback) {
48
+ fetchTranslations(language, opts).then(translations => callback(null, translations)).catch(err => callback(err, null));
49
+ }
50
+ };
51
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var frappeBackend_exports = {};
26
+ __export(frappeBackend_exports, {
27
+ createFrappeBackend: () => createFrappeBackend
28
+ });
29
+ module.exports = __toCommonJS(frappeBackend_exports);
30
+ async function fetchTranslations(language, options) {
31
+ var _options_baseUrl, _options_fetch, _data_message;
32
+ var base = (_options_baseUrl = options.baseUrl) !== null && _options_baseUrl !== void 0 ? _options_baseUrl : "";
33
+ var fetchFn = (_options_fetch = options.fetch) !== null && _options_fetch !== void 0 ? _options_fetch : globalThis.fetch;
34
+ var url = `${base}/api/method/frappe.translate.get_dict?language=${encodeURIComponent(language)}`;
35
+ var res = await fetchFn(url, {
36
+ credentials: "include"
37
+ });
38
+ if (!res.ok) throw new Error(`Frappe translation fetch failed: ${res.status}`);
39
+ var data = await res.json();
40
+ return (_data_message = data.message) !== null && _data_message !== void 0 ? _data_message : {};
41
+ }
42
+ function createFrappeBackend() {
43
+ if (process.env.VITE_FRAPPE_ENABLED !== "true") return null;
44
+ var opts = {};
45
+ return {
46
+ type: "backend",
47
+ init(_services, backendOptions, _i18nextOptions) {
48
+ opts = backendOptions !== null && backendOptions !== void 0 ? backendOptions : {};
49
+ },
50
+ read(language, _namespace, callback) {
51
+ fetchTranslations(language, opts).then(function (translations) {
52
+ return callback(null, translations);
53
+ }).catch(function (err) {
54
+ return callback(err, null);
55
+ });
56
+ }
57
+ };
58
+ }
59
+ //# sourceMappingURL=frappeBackend.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","frappeBackend_exports","__export","createFrappeBackend","module","exports","fetchTranslations","language","options","_options_baseUrl","_options_fetch","_data_message","base","baseUrl","fetchFn","fetch","globalThis","url","encodeURIComponent","res","credentials","ok","Error","status","data","json","message","process","env","VITE_FRAPPE_ENABLED","opts","type","init","_services","backendOptions","_i18nextOptions","read","_namespace","callback"],"sources":["../../src/frappeBackend.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,qBAAA;AAAAC,QAAA,CAAAD,qBAAA;EAAAE,mBAAA,EAAAA,CAAA,KAAAA;AAAA;AAcAC,MAAA,CAAAC,OAAA,GAAeT,YAAA,CAAAK,qBAEb,CACiC;AACjC,eAAaK,iBAAQA,CAAAC,QAAW,EAAAC,OAAA;EAChC,IAAAC,gBAAgB,EAAAC,cAAiB,EAAAC,aAAW;EAC5C,IAAAC,IAAM,IAAMH,gBAAO,GAAAD,OAAA,CAAAK,OAAA,cAAAJ,gBAAkD,cAAmBA,gBAAS;EACjG,IAAAK,OAAM,GAAM,CAAAJ,cAAc,GAAKF,OAAE,CAAAO,KAAA,MAAa,QAAWL,cAAA,cAAAA,cAAA,GAAAM,UAAA,CAAAD,KAAA;EACzD,IAAIE,GAAC,GAAI,GAAIL,IAAA,kDAAoDM,kBAAY,CAAAX,QAAA;EAC7E,IAAAY,GAAM,SAAkCL,OAAU,CAAAG,GAAA,EAAK;IACvDG,WAAY;EACd;EAMA,KAAAD,GAAS,CAAAE,EAAA,YAAAC,KAAA,CAAkE,oCAAAH,GAAA,CAAAI,MAAA;EACzE,IAAIC,IAAA,SAAYL,GAAA,CAAAM,IAAA;EAEhB,OAAI,CAAAd,aAA8B,GAAAa,IAAA,CAAAE,OAAA,cAAAf,aAAA,cAAAA,aAAA;AAElC;AAAO,SACLR,mBAAMA,CAAA;EAAA,IACNwB,OAAK,CAAAC,GAAA,CAAAC,mBAA2D,oBAA8B;EAC5F,IAAAC,IAAA,GAAO;EAAmB,OAC5B;IACAC,IAAA,EAAK,SAAkB;IACrBC,KAAAC,SAAA,EAAAC,cAA4B,EAAAC,eACnB;MAEXL,IAAA,GAAAI,cAAA,aAAAA,cAAA,cAAAA,cAAA;IACF;IACFE,KAAA7B,QAAA,EAAA8B,UAAA,EAAAC,QAAA","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var index_exports = {};
24
+ __export(index_exports, {
25
+ createCurrencyFormatter: () => import_formatters.createCurrencyFormatter,
26
+ createDateFormatter: () => import_formatters.createDateFormatter,
27
+ createFrappeBackend: () => import_frappeBackend.createFrappeBackend,
28
+ createI18nConfig: () => import_createI18nConfig.createI18nConfig,
29
+ createNumberFormatter: () => import_formatters.createNumberFormatter,
30
+ detectLanguage: () => import_detectLanguage.detectLanguage,
31
+ getPersistedLanguage: () => import_localePersistence.getPersistedLanguage,
32
+ parseCookieValue: () => import_localePersistence.parseCookieValue,
33
+ persistLanguage: () => import_localePersistence.persistLanguage,
34
+ useFormatCurrency: () => import_formatters.useFormatCurrency,
35
+ useFormatDate: () => import_formatters.useFormatDate,
36
+ useFormatNumber: () => import_formatters.useFormatNumber,
37
+ useLanguage: () => import_useLanguage.useLanguage
38
+ });
39
+ module.exports = __toCommonJS(index_exports);
40
+ var import_createI18nConfig = require("./createI18nConfig.cjs");
41
+ var import_frappeBackend = require("./frappeBackend.cjs");
42
+ var import_useLanguage = require("./useLanguage.cjs");
43
+ var import_localePersistence = require("./localePersistence.cjs");
44
+ var import_detectLanguage = require("./detectLanguage.cjs");
45
+ var import_formatters = require("./formatters.cjs");