@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,48 @@
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 index_exports = {};
26
+ __export(index_exports, {
27
+ createCurrencyFormatter: () => import_formatters.createCurrencyFormatter,
28
+ createDateFormatter: () => import_formatters.createDateFormatter,
29
+ createFrappeBackend: () => import_frappeBackend.createFrappeBackend,
30
+ createI18nConfig: () => import_createI18nConfig.createI18nConfig,
31
+ createNumberFormatter: () => import_formatters.createNumberFormatter,
32
+ detectLanguage: () => import_detectLanguage.detectLanguage,
33
+ getPersistedLanguage: () => import_localePersistence.getPersistedLanguage,
34
+ parseCookieValue: () => import_localePersistence.parseCookieValue,
35
+ persistLanguage: () => import_localePersistence.persistLanguage,
36
+ useFormatCurrency: () => import_formatters.useFormatCurrency,
37
+ useFormatDate: () => import_formatters.useFormatDate,
38
+ useFormatNumber: () => import_formatters.useFormatNumber,
39
+ useLanguage: () => import_useLanguage.useLanguage
40
+ });
41
+ module.exports = __toCommonJS(index_exports);
42
+ var import_createI18nConfig = require("./createI18nConfig.native.js");
43
+ var import_frappeBackend = require("./frappeBackend.native.js");
44
+ var import_useLanguage = require("./useLanguage.native.js");
45
+ var import_localePersistence = require("./localePersistence.native.js");
46
+ var import_detectLanguage = require("./detectLanguage.native.js");
47
+ var import_formatters = require("./formatters.native.js");
48
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","createCurrencyFormatter","import_formatters","createDateFormatter","createFrappeBackend","import_frappeBackend","createI18nConfig","import_createI18nConfig","createNumberFormatter","detectLanguage","import_detectLanguage","getPersistedLanguage","import_localePersistence","parseCookieValue","persistLanguage","useFormatCurrency","useFormatDate","useFormatNumber","useLanguage","import_useLanguage","module","exports","require"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,uBAAA,EAAAA,CAAA,KAAAC,iBAAA,CAAAD,uBAAA;EAAAE,mBAAA,EAAAA,CAAA,KAAAD,iBAAA,CAAAC,mBAAA;EAAAC,mBAAA,EAAAA,CAAA,KAAAC,oBAAA,CAAAD,mBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAC,uBAAA,CAAAD,gBAAA;EAAAE,qBAAA,EAAAA,CAAA,KAAAN,iBAAA,CAAAM,qBAAA;EAAAC,cAAA,EAAAA,CAAA,KAAAC,qBAAA,CAAAD,cAAA;EAAAE,oBAAA,EAAAA,CAAA,KAAAC,wBAAA,CAAAD,oBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAD,wBAAA,CAAAC,gBAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAF,wBAAA,CAAAE,eAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAb,iBAAA,CAAAa,iBAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAd,iBAAA,CAAAc,aAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAf,iBAAA,CAAAe,eAAA;EAAAC,WAAA,EAAAA,CAAA,KAAAC,kBAAA,CAAAD;AAAA;AAAAE,MAAA,CAAAC,OAAA,GAAA3B,YAAA,CAAiCK,aAAA;AAEjC,IAAAQ,uBAAoC,GAAAe,OAAA;AAEpC,IAAAjB,oBAAA,GAA4BiB,OAAA;AAC5B,IAAAH,kBAAA,GAAAG,OAAwE;AACxE,IAAAV,wBAA+B,GAAAU,OAAA;AAC/B,IAAAZ,qBAOO,GAAAY,OAAA","ignoreList":[]}
@@ -0,0 +1,46 @@
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 localePersistence_exports = {};
24
+ __export(localePersistence_exports, {
25
+ getPersistedLanguage: () => getPersistedLanguage,
26
+ parseCookieValue: () => parseCookieValue,
27
+ persistLanguage: () => persistLanguage
28
+ });
29
+ module.exports = __toCommonJS(localePersistence_exports);
30
+ var import_platform = require("@multiplatform.one/platform");
31
+ const cookieName = "preferred_language";
32
+ function getPersistedLanguage() {
33
+ return (0, import_platform.getCookie)(cookieName);
34
+ }
35
+ function persistLanguage(lang) {
36
+ (0, import_platform.setCookie)(cookieName, lang, {
37
+ days: 365,
38
+ sameSite: "Lax"
39
+ });
40
+ }
41
+ function parseCookieValue(cookieHeader, name) {
42
+ const match = cookieHeader.split(";").find(c => c.trim().startsWith(`${name}=`));
43
+ if (!match) return null;
44
+ const val = match.split("=")[1]?.trim();
45
+ return val ? decodeURIComponent(val) : null;
46
+ }
@@ -0,0 +1,52 @@
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 localePersistence_exports = {};
26
+ __export(localePersistence_exports, {
27
+ getPersistedLanguage: () => getPersistedLanguage,
28
+ parseCookieValue: () => parseCookieValue,
29
+ persistLanguage: () => persistLanguage
30
+ });
31
+ module.exports = __toCommonJS(localePersistence_exports);
32
+ var import_platform = require("@multiplatform.one/platform");
33
+ var cookieName = "preferred_language";
34
+ function getPersistedLanguage() {
35
+ return (0, import_platform.getCookie)(cookieName);
36
+ }
37
+ function persistLanguage(lang) {
38
+ (0, import_platform.setCookie)(cookieName, lang, {
39
+ days: 365,
40
+ sameSite: "Lax"
41
+ });
42
+ }
43
+ function parseCookieValue(cookieHeader, name) {
44
+ var _match_split_;
45
+ var match = cookieHeader.split(";").find(function (c) {
46
+ return c.trim().startsWith(`${name}=`);
47
+ });
48
+ if (!match) return null;
49
+ var val = (_match_split_ = match.split("=")[1]) === null || _match_split_ === void 0 ? void 0 : _match_split_.trim();
50
+ return val ? decodeURIComponent(val) : null;
51
+ }
52
+ //# sourceMappingURL=localePersistence.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","localePersistence_exports","__export","getPersistedLanguage","parseCookieValue","persistLanguage","module","exports","import_platform","require","cookieName","getCookie","lang","setCookie","days","sameSite","cookieHeader","name","_match_split_"],"sources":["../../src/localePersistence.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,yBAAA;AAAAC,QAAA,CAAAD,yBAAA;EAAAE,oBAAA,EAAAA,CAAA,KAAAA,oBAAA;EAAAC,gBAAA,EAAAA,CAAA,KAAAA,gBAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAX,YAAqC,CAAAK,yBAAA;AAGrC,IAAAO,eAAmB,GAAAC,OAAA;AAGZ,IAAAC,UAAS,uBAAsC;AACpD,SAAAP,oBAAOA,CAAA;EACT,WAAAK,eAAA,CAAAG,SAAA,EAAAD,UAAA;AAGO;AACL,SAAAL,gBAAAO,IAAA;EACF,IAAAJ,eAAA,CAAAK,SAAA,EAAAH,UAAA,EAAAE,IAAA;IAGOE,IAAA,EAAS;IACdC,QAAM;EACN;AACA;AACA,SAAOX,gBAAMA,CAAAY,YAAsB,EAAAC,IAAI;EACzC,IAAAC,aAAA","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: true
30
+ }) : target, mod));
31
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: true
33
+ }), mod);
34
+ var useLanguage_exports = {};
35
+ __export(useLanguage_exports, {
36
+ useLanguage: () => useLanguage
37
+ });
38
+ module.exports = __toCommonJS(useLanguage_exports);
39
+ var import_i18next = __toESM(require("i18next"));
40
+ var import_react = require("react");
41
+ var import_localePersistence = require("./localePersistence.cjs");
42
+ function useLanguage() {
43
+ const [language, setLanguage] = (0, import_react.useState)(() => {
44
+ return (0, import_localePersistence.getPersistedLanguage)() || import_i18next.default?.language || "en";
45
+ });
46
+ (0, import_react.useEffect)(() => {
47
+ const persisted = (0, import_localePersistence.getPersistedLanguage)();
48
+ if (persisted && persisted !== import_i18next.default?.language) {
49
+ import_i18next.default?.changeLanguage(persisted);
50
+ }
51
+ import_i18next.default.on("languageChanged", setLanguage);
52
+ return () => import_i18next.default.off("languageChanged", setLanguage);
53
+ }, []);
54
+ const changeLanguage = (0, import_react.useCallback)(lang => {
55
+ (0, import_localePersistence.persistLanguage)(lang);
56
+ import_i18next.default?.changeLanguage(lang);
57
+ }, []);
58
+ return [language, changeLanguage];
59
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
+ value: mod,
31
+ enumerable: true
32
+ }) : target, mod));
33
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
+ value: true
35
+ }), mod);
36
+ var useLanguage_exports = {};
37
+ __export(useLanguage_exports, {
38
+ useLanguage: () => useLanguage
39
+ });
40
+ module.exports = __toCommonJS(useLanguage_exports);
41
+ var import_i18next = __toESM(require("i18next"));
42
+ var import_react = require("react");
43
+ var import_localePersistence = require("./localePersistence.native.js");
44
+ function useLanguage() {
45
+ var [language, setLanguage] = (0, import_react.useState)(function () {
46
+ return (0, import_localePersistence.getPersistedLanguage)() || (import_i18next.default === null || import_i18next.default === void 0 ? void 0 : import_i18next.default.language) || "en";
47
+ });
48
+ (0, import_react.useEffect)(function () {
49
+ var persisted = (0, import_localePersistence.getPersistedLanguage)();
50
+ if (persisted && persisted !== (import_i18next.default === null || import_i18next.default === void 0 ? void 0 : import_i18next.default.language)) {
51
+ import_i18next.default === null || import_i18next.default === void 0 ? void 0 : import_i18next.default.changeLanguage(persisted);
52
+ }
53
+ import_i18next.default.on("languageChanged", setLanguage);
54
+ return function () {
55
+ return import_i18next.default.off("languageChanged", setLanguage);
56
+ };
57
+ }, []);
58
+ var changeLanguage = (0, import_react.useCallback)(function (lang) {
59
+ (0, import_localePersistence.persistLanguage)(lang);
60
+ import_i18next.default === null || import_i18next.default === void 0 ? void 0 : import_i18next.default.changeLanguage(lang);
61
+ }, []);
62
+ return [language, changeLanguage];
63
+ }
64
+ //# sourceMappingURL=useLanguage.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useLanguage_exports","__export","useLanguage","module","exports","import_i18next","__toESM","require","import_react","import_localePersistence","language","setLanguage","useState","getPersistedLanguage","default","useEffect","persisted","changeLanguage","on","off","useCallback","lang","persistLanguage"],"sources":["../../src/useLanguage.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,mBAAA;AAAAC,QAAA,CAAAD,mBAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAiB,CAAAK,mBAAA;AACjB,IAAAK,cAAA,GAAiDC,OAAA,CAAAC,OAAA;AACjD,IAAAC,YAAA,GAAAD,OAAA,QAAsD;AAE/C,IAAAE,wBAA2D,GAAAF,OAAA;AAChE,SAAOL,WAAUA,CAAA;EAEf,KAAAQ,QAAO,EAAAC,WAAA,QAAAH,YAAA,CAAAI,QAAA,cAA0B;IAClC,WAAAH,wBAAA,CAAAI,oBAAA,QAAAR,cAAA,CAAAS,OAAA,aAAAT,cAAA,CAAAS,OAAA,uBAAAT,cAAA,CAAAS,OAAA,CAAAJ,QAAA;EAED;EAEE,IAAAF,YAAM,CAAAO,SAAY;IAClB,IAAIC,SAAA,IAAa,GAAAP,wBAAc,CAAAI,oBAAgB;IAC7C,IAAAG,SAAA,IAAAA,SAAM,MAAAX,cAAe,CAAAS,OAAS,aAAAT,cAAA,CAAAS,OAAA,uBAAAT,cAAA,CAAAS,OAAA,CAAAJ,QAAA;MAChCL,cAAA,CAAAS,OAAA,aAAAT,cAAA,CAAAS,OAAA,uBAAAT,cAAA,CAAAS,OAAA,CAAAG,cAAA,CAAAD,SAAA;IACA;IACAX,cAAa,CAAAS,OAAA,CAAAI,EAAA,kBAAS,EAAAP,WAAA;IACxB,OAAK;MAEL,OAAMN,cAAA,CAAAS,OAAiB,CAAAK,GAAA,kBAAa,EAAAR,WAAiB;IACnD;EACA;EACF,IAAIM,cAAC,OAAAT,YAAA,CAAAY,WAAA,YAAAC,IAAA;IAEL,IAAAZ,wBAAkB,CAAAa,eAAc,EAAAD,IAAA;IAClChB,cAAA,CAAAS,OAAA,aAAAT,cAAA,CAAAS,OAAA,uBAAAT,cAAA,CAAAS,OAAA,CAAAG,cAAA,CAAAI,IAAA","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ function createI18nConfig(options) {
2
+ const config = {
3
+ // JSON compatibility for React Native
4
+ compatibilityJSON: "v4",
5
+ // Namespace configuration
6
+ defaultNS: options.defaultNamespace,
7
+ ns: [...options.namespaces],
8
+ // Language configuration
9
+ supportedLngs: [...options.languages],
10
+ fallbackLng: options.defaultLanguage,
11
+ // Resources (provided by caller)
12
+ resources: options.resources,
13
+ // Interpolation settings
14
+ interpolation: {
15
+ // React handles XSS escaping, so we disable i18next escaping
16
+ escapeValue: false
17
+ },
18
+ // Missing key handling
19
+ returnNull: false,
20
+ returnEmptyString: false,
21
+ // Debug mode (can be enabled via environment)
22
+ debug: false
23
+ };
24
+ if (process.env.VITE_FRAPPE_ENABLED === "true" && options.frappeBackend) {
25
+ config.partialBundledLanguages = true;
26
+ config.backend = options.frappeBackend;
27
+ }
28
+ return config;
29
+ }
30
+ export { createI18nConfig };
31
+ //# sourceMappingURL=createI18nConfig.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createI18nConfig","options","config","compatibilityJSON","defaultNS","defaultNamespace","ns","namespaces","supportedLngs","languages","fallbackLng","defaultLanguage","resources","interpolation","escapeValue","returnNull","returnEmptyString","debug","process","env","VITE_FRAPPE_ENABLED","frappeBackend","partialBundledLanguages","backend"],"sources":["../../src/createI18nConfig.ts"],"sourcesContent":[null],"mappings":"AAsCO,SAASA,iBAAiBC,OAAA,EAAyC;EACxE,MAAMC,MAAA,GAAsB;IAAA;IAE1BC,iBAAA,EAAmB;IAAA;IAGnBC,SAAA,EAAWH,OAAA,CAAQI,gBAAA;IACnBC,EAAA,EAAI,CAAC,GAAGL,OAAA,CAAQM,UAAU;IAAA;IAG1BC,aAAA,EAAe,CAAC,GAAGP,OAAA,CAAQQ,SAAS;IACpCC,WAAA,EAAaT,OAAA,CAAQU,eAAA;IAAA;IAGrBC,SAAA,EAAWX,OAAA,CAAQW,SAAA;IAAA;IAGnBC,aAAA,EAAe;MAAA;MAEbC,WAAA,EAAa;IACf;IAAA;IAGAC,UAAA,EAAY;IACZC,iBAAA,EAAmB;IAAA;IAGnBC,KAAA,EAAO;EACT;EAIA,IAAIC,OAAA,CAAQC,GAAA,CAAIC,mBAAA,KAAwB,UAAUnB,OAAA,CAAQoB,aAAA,EAAe;IACvEnB,MAAA,CAAOoB,uBAAA,GAA0B;IACjCpB,MAAA,CAAOqB,OAAA,GAAUtB,OAAA,CAAQoB,aAAA;EAC3B;EAEA,OAAOnB,MAAA;AACT","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ function createI18nConfig(options) {
2
+ var config = {
3
+ // JSON compatibility for React Native
4
+ compatibilityJSON: "v4",
5
+ // Namespace configuration
6
+ defaultNS: options.defaultNamespace,
7
+ ns: [...options.namespaces],
8
+ // Language configuration
9
+ supportedLngs: [...options.languages],
10
+ fallbackLng: options.defaultLanguage,
11
+ // Resources (provided by caller)
12
+ resources: options.resources,
13
+ // Interpolation settings
14
+ interpolation: {
15
+ // React handles XSS escaping, so we disable i18next escaping
16
+ escapeValue: false
17
+ },
18
+ // Missing key handling
19
+ returnNull: false,
20
+ returnEmptyString: false,
21
+ // Debug mode (can be enabled via environment)
22
+ debug: false
23
+ };
24
+ if (process.env.VITE_FRAPPE_ENABLED === "true" && options.frappeBackend) {
25
+ config.partialBundledLanguages = true;
26
+ config.backend = options.frappeBackend;
27
+ }
28
+ return config;
29
+ }
30
+ export { createI18nConfig };
31
+ //# sourceMappingURL=createI18nConfig.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createI18nConfig","options","config","compatibilityJSON","defaultNS","defaultNamespace","ns","namespaces","supportedLngs","languages","fallbackLng","defaultLanguage","resources","interpolation","escapeValue","returnNull","returnEmptyString","debug","process","env","VITE_FRAPPE_ENABLED","frappeBackend","partialBundledLanguages"],"sources":["../../src/createI18nConfig.ts"],"sourcesContent":[null],"mappings":"AAsCO,SAASA,iBAAiBC,OAAA,EAAyC;EACxE,IAAAC,MAAM;IAAsB;IAE1BC,iBAAA,EAAmB;IAAA;IAGnBC,SAAA,EAAWH,OAAA,CAAQI,gBAAA;IACnBC,EAAA,EAAI,CAAsB,GAAAL,OAAA,CAAAM,UAAA,CAG1B;IACA;IAAqBC,aAAA,GAGrB,GAAAP,OAAW,CAAAQ,SAAQ;IAGnBC,WAAA,EAAAT,OAAe,CAAAU,eAAA;IAAA;IAAAC,SAEb,EAAAX,OAAa,CAAAW,SAAA;IACf;IAAAC,aAAA;MAGA;MACAC,WAAA;IAAmB;IAGnB;IACFC,UAAA;IAIAC,iBAAgB;IACd;IACAC,KAAA,EAAO;EACT;EAEA,IAAAC,OAAO,CAAAC,GAAA,CAAAC,mBAAA,eAAAnB,OAAA,CAAAoB,aAAA;IACTnB,MAAA,CAAAoB,uBAAA","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ import { parseCookieValue } from "./localePersistence.mjs";
2
+ function detectLanguage(request, options) {
3
+ const {
4
+ supportedLanguages,
5
+ defaultLanguage
6
+ } = options;
7
+ const cookieHeader = request.headers.get("cookie") ?? "";
8
+ const cookieLang = parseCookieValue(cookieHeader, "preferred_language");
9
+ if (cookieLang && supportedLanguages.includes(cookieLang)) return cookieLang;
10
+ const acceptLang = request.headers.get("accept-language");
11
+ if (acceptLang) {
12
+ const preferred = parseAcceptLanguage(acceptLang);
13
+ for (const lang of preferred) {
14
+ if (supportedLanguages.includes(lang)) return lang;
15
+ const base = lang.split("-")[0];
16
+ if (base !== lang && supportedLanguages.includes(base)) return base;
17
+ }
18
+ }
19
+ return defaultLanguage;
20
+ }
21
+ function parseAcceptLanguage(header) {
22
+ return header.split(",").map(part => {
23
+ const [lang, ...params] = part.trim().split(";");
24
+ const qParam = params.find(p => p.trim().startsWith("q="));
25
+ const q = qParam ? Number.parseFloat(qParam.trim().slice(2)) : 1;
26
+ return {
27
+ lang: lang.trim(),
28
+ q
29
+ };
30
+ }).filter(({
31
+ lang
32
+ }) => lang && lang !== "*").sort((a, b) => b.q - a.q).map(({
33
+ lang
34
+ }) => lang);
35
+ }
36
+ export { detectLanguage };
37
+ //# sourceMappingURL=detectLanguage.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["parseCookieValue","detectLanguage","request","options","supportedLanguages","defaultLanguage","cookieHeader","headers","get","cookieLang","includes","acceptLang","preferred","parseAcceptLanguage","lang","base","split","header","map","part","params","trim","qParam","find","p","startsWith","q","Number","parseFloat","slice","filter","sort","a","b"],"sources":["../../src/detectLanguage.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,gBAAA,QAAwB;AAW1B,SAASC,eAAeC,OAAA,EAAkBC,OAAA,EAAwC;EACvF,MAAM;IAAEC,kBAAA;IAAoBC;EAAgB,IAAIF,OAAA;EAGhD,MAAMG,YAAA,GAAeJ,OAAA,CAAQK,OAAA,CAAQC,GAAA,CAAI,QAAQ,KAAK;EACtD,MAAMC,UAAA,GAAaT,gBAAA,CAAiBM,YAAA,EAAc,oBAAoB;EACtE,IAAIG,UAAA,IAAcL,kBAAA,CAAmBM,QAAA,CAASD,UAAU,GAAG,OAAOA,UAAA;EAGlE,MAAME,UAAA,GAAaT,OAAA,CAAQK,OAAA,CAAQC,GAAA,CAAI,iBAAiB;EACxD,IAAIG,UAAA,EAAY;IACd,MAAMC,SAAA,GAAYC,mBAAA,CAAoBF,UAAU;IAChD,WAAWG,IAAA,IAAQF,SAAA,EAAW;MAC5B,IAAIR,kBAAA,CAAmBM,QAAA,CAASI,IAAI,GAAG,OAAOA,IAAA;MAE9C,MAAMC,IAAA,GAAOD,IAAA,CAAKE,KAAA,CAAM,GAAG,EAAE,CAAC;MAC9B,IAAID,IAAA,KAASD,IAAA,IAAQV,kBAAA,CAAmBM,QAAA,CAASK,IAAI,GAAG,OAAOA,IAAA;IACjE;EACF;EAEA,OAAOV,eAAA;AACT;AAGA,SAASQ,oBAAoBI,MAAA,EAA0B;EACrD,OAAOA,MAAA,CACJD,KAAA,CAAM,GAAG,EACTE,GAAA,CAAKC,IAAA,IAAS;IACb,MAAM,CAACL,IAAA,EAAM,GAAGM,MAAM,IAAID,IAAA,CAAKE,IAAA,CAAK,EAAEL,KAAA,CAAM,GAAG;IAC/C,MAAMM,MAAA,GAASF,MAAA,CAAOG,IAAA,CAAMC,CAAA,IAAMA,CAAA,CAAEH,IAAA,CAAK,EAAEI,UAAA,CAAW,IAAI,CAAC;IAC3D,MAAMC,CAAA,GAAIJ,MAAA,GAASK,MAAA,CAAOC,UAAA,CAAWN,MAAA,CAAOD,IAAA,CAAK,EAAEQ,KAAA,CAAM,CAAC,CAAC,IAAI;IAC/D,OAAO;MAAEf,IAAA,EAAMA,IAAA,CAAKO,IAAA,CAAK;MAAGK;IAAE;EAChC,CAAC,EACAI,MAAA,CAAO,CAAC;IAAEhB;EAAK,MAAMA,IAAA,IAAQA,IAAA,KAAS,GAAG,EACzCiB,IAAA,CAAK,CAACC,CAAA,EAAGC,CAAA,KAAMA,CAAA,CAAEP,CAAA,GAAIM,CAAA,CAAEN,CAAC,EACxBR,GAAA,CAAI,CAAC;IAAEJ;EAAK,MAAMA,IAAI;AAC3B","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ import { parseCookieValue } from "./localePersistence.native.js";
2
+ function detectLanguage(request, options) {
3
+ var _request_headers_get;
4
+ var {
5
+ supportedLanguages,
6
+ defaultLanguage
7
+ } = options;
8
+ var cookieHeader = (_request_headers_get = request.headers.get("cookie")) !== null && _request_headers_get !== void 0 ? _request_headers_get : "";
9
+ var cookieLang = parseCookieValue(cookieHeader, "preferred_language");
10
+ if (cookieLang && supportedLanguages.includes(cookieLang)) return cookieLang;
11
+ var acceptLang = request.headers.get("accept-language");
12
+ if (acceptLang) {
13
+ var preferred = parseAcceptLanguage(acceptLang);
14
+ var _iteratorNormalCompletion = true,
15
+ _didIteratorError = false,
16
+ _iteratorError = void 0;
17
+ try {
18
+ for (var _iterator = preferred[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
19
+ var lang = _step.value;
20
+ if (supportedLanguages.includes(lang)) return lang;
21
+ var base = lang.split("-")[0];
22
+ if (base !== lang && supportedLanguages.includes(base)) return base;
23
+ }
24
+ } catch (err) {
25
+ _didIteratorError = true;
26
+ _iteratorError = err;
27
+ } finally {
28
+ try {
29
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
30
+ _iterator.return();
31
+ }
32
+ } finally {
33
+ if (_didIteratorError) {
34
+ throw _iteratorError;
35
+ }
36
+ }
37
+ }
38
+ }
39
+ return defaultLanguage;
40
+ }
41
+ function parseAcceptLanguage(header) {
42
+ return header.split(",").map(function (part) {
43
+ var [lang, ...params] = part.trim().split(";");
44
+ var qParam = params.find(function (p) {
45
+ return p.trim().startsWith("q=");
46
+ });
47
+ var q = qParam ? Number.parseFloat(qParam.trim().slice(2)) : 1;
48
+ return {
49
+ lang: lang.trim(),
50
+ q
51
+ };
52
+ }).filter(function (param) {
53
+ var {
54
+ lang
55
+ } = param;
56
+ return lang && lang !== "*";
57
+ }).sort(function (a, b) {
58
+ return b.q - a.q;
59
+ }).map(function (param) {
60
+ var {
61
+ lang
62
+ } = param;
63
+ return lang;
64
+ });
65
+ }
66
+ export { detectLanguage };
67
+ //# sourceMappingURL=detectLanguage.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["parseCookieValue","detectLanguage","request","options","_request_headers_get","supportedLanguages","defaultLanguage","cookieHeader","headers","get","cookieLang","includes","acceptLang","preferred","parseAcceptLanguage","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","lang","value","base","split","err","return"],"sources":["../../src/detectLanguage.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,gBAAA,QAAwB;AAW1B,SAASC,eAAeC,OAAA,EAAkBC,OAAA,EAAwC;EACvF,IAAAC,oBAAQ;EAGR;IAAMC,kBAAe;IAAAC;EAAoB,IAAAH,OAAQ;EACjD,IAAAI,YAAM,GAAa,CAAAH,oBAAiB,GAAAF,OAAc,CAAAM,OAAA,CAAAC,GAAA,SAAoB,eAAAL,oBAAA,cAAAA,oBAAA;EACtE,IAAIM,UAAA,GAAAV,gBAAc,CAAAO,YAA4B,sBAAoB;EAGlE,IAAAG,UAAM,IAAAL,kBAA6B,CAAAM,QAAI,CAAAD,UAAiB,UAAAA,UAAA;EACxD,IAAIE,UAAA,GAAYV,OAAA,CAAAM,OAAA,CAAAC,GAAA;EACd,IAAAG,UAAM;IACN,IAAAC,SAAW,GAAAC,mBAAmB,CAAAF,UAAA;IAC5B,IAAAG,yBAAuB,OAAS;MAAIC,iBAAU;MAAAC,cAAA;IAE9C;MACA,KAAI,IAAAC,SAAS,GAAQL,SAAA,CAAAM,MAAA,CAAAC,QAAmB,GAAS,EAAAC,KAAO,IAAAN,yBAAO,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;QACjE,IAAAS,IAAA,GAAAH,KAAA,CAAAI,KAAA;QACF,IAAApB,kBAAA,CAAAM,QAAA,CAAAa,IAAA,UAAAA,IAAA;QAEA,IAAOE,IAAA,GAAAF,IAAA,CAAAG,KAAA;QACT,IAAAD,IAAA,KAAAF,IAAA,IAAAnB,kBAAA,CAAAM,QAAA,CAAAe,IAAA,UAAAA,IAAA;MAGA;IACE,SAAOE,GACJ;MAECZ,iBAAgB,GAAM,IAAI;MAC1BC,cAAe,GAAAW,GAAO;IACtB,UAAU;MACV;QAED,IAAO,CAACb,yBAAqB,IAAAG,SAC7B,CAAAW,MAAS,QAAQ;UAEtBX,SAAA,CAAAW,MAAA","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ import { useMemo } from "react";
2
+ import { useLanguage } from "./useLanguage.mjs";
3
+ function getRelativeTime(language, date) {
4
+ const diffMs = new Date(date).getTime() - Date.now();
5
+ const abs = Math.abs(diffMs) / 1e3;
6
+ const rtf = new Intl.RelativeTimeFormat(language, {
7
+ numeric: "auto"
8
+ });
9
+ if (abs < 60) return rtf.format(Math.round(diffMs / 1e3), "second");
10
+ if (abs < 3600) return rtf.format(Math.round(diffMs / 6e4), "minute");
11
+ if (abs < 86400) return rtf.format(Math.round(diffMs / 36e5), "hour");
12
+ if (abs < 2592e3) return rtf.format(Math.round(diffMs / 864e5), "day");
13
+ if (abs < 31536e3) return rtf.format(Math.round(diffMs / 2592e6), "month");
14
+ return rtf.format(Math.round(diffMs / 31536e6), "year");
15
+ }
16
+ function createDateFormatter(language) {
17
+ return {
18
+ format: (date, options) => new Intl.DateTimeFormat(language, options).format(new Date(date)),
19
+ relative: date => getRelativeTime(language, date)
20
+ };
21
+ }
22
+ function createNumberFormatter(language) {
23
+ return {
24
+ format: (value, options) => new Intl.NumberFormat(language, options).format(value)
25
+ };
26
+ }
27
+ function createCurrencyFormatter(language) {
28
+ return {
29
+ format: (value, currency, options) => new Intl.NumberFormat(language, {
30
+ ...options,
31
+ style: "currency",
32
+ currency
33
+ }).format(value)
34
+ };
35
+ }
36
+ function useFormatDate() {
37
+ const [language] = useLanguage();
38
+ return useMemo(() => createDateFormatter(language), [language]);
39
+ }
40
+ function useFormatNumber() {
41
+ const [language] = useLanguage();
42
+ return useMemo(() => createNumberFormatter(language), [language]);
43
+ }
44
+ function useFormatCurrency() {
45
+ const [language] = useLanguage();
46
+ return useMemo(() => createCurrencyFormatter(language), [language]);
47
+ }
48
+ export { createCurrencyFormatter, createDateFormatter, createNumberFormatter, useFormatCurrency, useFormatDate, useFormatNumber };
49
+ //# sourceMappingURL=formatters.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useLanguage","getRelativeTime","language","date","diffMs","Date","getTime","now","abs","Math","rtf","Intl","RelativeTimeFormat","numeric","format","round","createDateFormatter","options","DateTimeFormat","relative","createNumberFormatter","value","NumberFormat","createCurrencyFormatter","currency","style","useFormatDate","useFormatNumber","useFormatCurrency"],"sources":["../../src/formatters.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,QAAe;AACxB,SAASC,WAAA,QAAmB;AAI5B,SAASC,gBAAgBC,QAAA,EAAkBC,IAAA,EAAyB;EAClE,MAAMC,MAAA,GAAS,IAAIC,IAAA,CAAKF,IAAI,EAAEG,OAAA,CAAQ,IAAID,IAAA,CAAKE,GAAA,CAAI;EACnD,MAAMC,GAAA,GAAMC,IAAA,CAAKD,GAAA,CAAIJ,MAAM,IAAI;EAC/B,MAAMM,GAAA,GAAM,IAAIC,IAAA,CAAKC,kBAAA,CAAmBV,QAAA,EAAU;IAAEW,OAAA,EAAS;EAAO,CAAC;EACrE,IAAIL,GAAA,GAAM,IAAI,OAAOE,GAAA,CAAII,MAAA,CAAOL,IAAA,CAAKM,KAAA,CAAMX,MAAA,GAAS,GAAI,GAAG,QAAQ;EACnE,IAAII,GAAA,GAAM,MAAM,OAAOE,GAAA,CAAII,MAAA,CAAOL,IAAA,CAAKM,KAAA,CAAMX,MAAA,GAAS,GAAK,GAAG,QAAQ;EACtE,IAAII,GAAA,GAAM,OAAO,OAAOE,GAAA,CAAII,MAAA,CAAOL,IAAA,CAAKM,KAAA,CAAMX,MAAA,GAAS,IAAO,GAAG,MAAM;EACvE,IAAII,GAAA,GAAM,QAAS,OAAOE,GAAA,CAAII,MAAA,CAAOL,IAAA,CAAKM,KAAA,CAAMX,MAAA,GAAS,KAAQ,GAAG,KAAK;EACzE,IAAII,GAAA,GAAM,SAAU,OAAOE,GAAA,CAAII,MAAA,CAAOL,IAAA,CAAKM,KAAA,CAAMX,MAAA,GAAS,MAAU,GAAG,OAAO;EAC9E,OAAOM,GAAA,CAAII,MAAA,CAAOL,IAAA,CAAKM,KAAA,CAAMX,MAAA,GAAS,OAAW,GAAG,MAAM;AAC5D;AAEO,SAASY,oBAAoBd,QAAA,EAAkB;EACpD,OAAO;IACLY,MAAA,EAAQA,CAACX,IAAA,EAAiBc,OAAA,KACxB,IAAIN,IAAA,CAAKO,cAAA,CAAehB,QAAA,EAAUe,OAAO,EAAEH,MAAA,CAAO,IAAIT,IAAA,CAAKF,IAAI,CAAC;IAClEgB,QAAA,EAAWhB,IAAA,IAAoBF,eAAA,CAAgBC,QAAA,EAAUC,IAAI;EAC/D;AACF;AAEO,SAASiB,sBAAsBlB,QAAA,EAAkB;EACtD,OAAO;IACLY,MAAA,EAAQA,CAACO,KAAA,EAAeJ,OAAA,KACtB,IAAIN,IAAA,CAAKW,YAAA,CAAapB,QAAA,EAAUe,OAAO,EAAEH,MAAA,CAAOO,KAAK;EACzD;AACF;AAEO,SAASE,wBAAwBrB,QAAA,EAAkB;EACxD,OAAO;IACLY,MAAA,EAAQA,CACNO,KAAA,EACAG,QAAA,EACAP,OAAA,KACG,IAAIN,IAAA,CAAKW,YAAA,CAAapB,QAAA,EAAU;MAAE,GAAGe,OAAA;MAASQ,KAAA,EAAO;MAAYD;IAAS,CAAC,EAAEV,MAAA,CAAOO,KAAK;EAChG;AACF;AAEO,SAASK,cAAA,EAAgB;EAC9B,MAAM,CAACxB,QAAQ,IAAIF,WAAA,CAAY;EAC/B,OAAOD,OAAA,CAAQ,MAAMiB,mBAAA,CAAoBd,QAAQ,GAAG,CAACA,QAAQ,CAAC;AAChE;AAEO,SAASyB,gBAAA,EAAkB;EAChC,MAAM,CAACzB,QAAQ,IAAIF,WAAA,CAAY;EAC/B,OAAOD,OAAA,CAAQ,MAAMqB,qBAAA,CAAsBlB,QAAQ,GAAG,CAACA,QAAQ,CAAC;AAClE;AAEO,SAAS0B,kBAAA,EAAoB;EAClC,MAAM,CAAC1B,QAAQ,IAAIF,WAAA,CAAY;EAC/B,OAAOD,OAAA,CAAQ,MAAMwB,uBAAA,CAAwBrB,QAAQ,GAAG,CAACA,QAAQ,CAAC;AACpE","ignoreList":[]}
@@ -0,0 +1,63 @@
1
+ import { useMemo } from "react";
2
+ import { useLanguage } from "./useLanguage.native.js";
3
+ function getRelativeTime(language, date) {
4
+ var diffMs = new Date(date).getTime() - Date.now();
5
+ var abs = Math.abs(diffMs) / 1e3;
6
+ var rtf = new Intl.RelativeTimeFormat(language, {
7
+ numeric: "auto"
8
+ });
9
+ if (abs < 60) return rtf.format(Math.round(diffMs / 1e3), "second");
10
+ if (abs < 3600) return rtf.format(Math.round(diffMs / 6e4), "minute");
11
+ if (abs < 86400) return rtf.format(Math.round(diffMs / 36e5), "hour");
12
+ if (abs < 2592e3) return rtf.format(Math.round(diffMs / 864e5), "day");
13
+ if (abs < 31536e3) return rtf.format(Math.round(diffMs / 2592e6), "month");
14
+ return rtf.format(Math.round(diffMs / 31536e6), "year");
15
+ }
16
+ function createDateFormatter(language) {
17
+ return {
18
+ format: function format(date, options) {
19
+ return new Intl.DateTimeFormat(language, options).format(new Date(date));
20
+ },
21
+ relative: function relative(date) {
22
+ return getRelativeTime(language, date);
23
+ }
24
+ };
25
+ }
26
+ function createNumberFormatter(language) {
27
+ return {
28
+ format: function format(value, options) {
29
+ return new Intl.NumberFormat(language, options).format(value);
30
+ }
31
+ };
32
+ }
33
+ function createCurrencyFormatter(language) {
34
+ return {
35
+ format: function format(value, currency, options) {
36
+ return new Intl.NumberFormat(language, {
37
+ ...options,
38
+ style: "currency",
39
+ currency
40
+ }).format(value);
41
+ }
42
+ };
43
+ }
44
+ function useFormatDate() {
45
+ var [language] = useLanguage();
46
+ return useMemo(function () {
47
+ return createDateFormatter(language);
48
+ }, [language]);
49
+ }
50
+ function useFormatNumber() {
51
+ var [language] = useLanguage();
52
+ return useMemo(function () {
53
+ return createNumberFormatter(language);
54
+ }, [language]);
55
+ }
56
+ function useFormatCurrency() {
57
+ var [language] = useLanguage();
58
+ return useMemo(function () {
59
+ return createCurrencyFormatter(language);
60
+ }, [language]);
61
+ }
62
+ export { createCurrencyFormatter, createDateFormatter, createNumberFormatter, useFormatCurrency, useFormatDate, useFormatNumber };
63
+ //# sourceMappingURL=formatters.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useLanguage","getRelativeTime","language","date","diffMs","Date","getTime","now","abs","Math","rtf","Intl","RelativeTimeFormat","numeric","format","round","createDateFormatter","options","DateTimeFormat","relative","createNumberFormatter","value","NumberFormat","createCurrencyFormatter","currency","style"],"sources":["../../src/formatters.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,QAAe;AACxB,SAASC,WAAA,QAAmB;AAI5B,SAASC,gBAAgBC,QAAA,EAAkBC,IAAA,EAAyB;EAClE,IAAAC,MAAM,OAASC,IAAI,CAAAF,IAAK,EAAIG,OAAE,KAAQD,IAAI,CAAAE,GAAK;EAC/C,IAAAC,GAAM,GAAAC,IAAM,CAAAD,GAAK,CAAAJ,MAAI,IAAM,GAAI;EAC/B,IAAAM,GAAM,OAAMC,IAAI,CAAAC,kBAAK,CAAAV,QAAmB;IACxCW,OAAI,EAAM;EACV;EACA,IAAIL,GAAA,GAAM,WAAOE,GAAO,CAAAI,MAAI,CAAAL,IAAO,CAAAM,KAAK,CAAAX,MAAM,MAAS,WAAU;EACjE,IAAII,GAAA,GAAM,aAASE,GAAO,CAAAI,MAAI,CAAAL,IAAO,CAAAM,KAAK,CAAAX,MAAM,MAAS,WAAW,CAAK;EACzE,IAAII,GAAA,GAAM,cAAUE,GAAO,CAAAI,MAAI,CAAAL,IAAO,CAAAM,KAAK,CAAAX,MAAM,OAAS,SAAa;EACvE,IAAAI,GAAO,SAAI,EAAO,OAAKE,GAAA,CAAMI,MAAA,CAAAL,IAAS,CAAAM,KAAW,CAAAX,MAAG,GAAM;EAC5D,IAAAI,GAAA,mBAAAE,GAAA,CAAAI,MAAA,CAAAL,IAAA,CAAAM,KAAA,CAAAX,MAAA;EAEO,OAASM,GAAA,CAAAI,MAAA,CAAAL,IAAA,CAAAM,KAAoB,CAAAX,MAAA,GAAkB;AACpD;AAAO,SACLY,mBAA0BA,CAAAd,QACpB;EAA4D,OAClE;IACFY,MAAA,WAAAA,OAAAX,IAAA,EAAAc,OAAA;MACF,WAAAN,IAAA,CAAAO,cAAA,CAAAhB,QAAA,EAAAe,OAAA,EAAAH,MAAA,KAAAT,IAAA,CAAAF,IAAA;IAEO;IACLgB,QAAO,WAAAA,SAAAhB,IAAA;MACL,OAASF,eAAe,CAAAC,QAClB,EAAAC,IAAK;IACb;EACF;AAEO;AACL,SAAOiB,sBAAAlB,QAAA;EAAA,OACL;IAKFY,MAAA,WAAAA,OAAAO,KAAA,EAAAJ,OAAA;MACF,WAAAN,IAAA,CAAAW,YAAA,CAAApB,QAAA,EAAAe,OAAA,EAAAH,MAAA,CAAAO,KAAA;IAEO;EACL;AACA;AACF,SAAAE,wBAAArB,QAAA;EAEO,OAAS;IACdY,MAAO,WAAYA,OAAAO,KAAY,EAAAG,QAAA,EAAAP,OAAA;MAC/B,OAAO,IAAQN,IAAA,CAAAW,YAAM,CAAApB,QAAA,EAAsB;QAC7C,GAAAe,OAAA;QAEOQ,KAAS;QACRD;MACN,GAAOV,MAAA,CAAAO,KAAQ;IACjB","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ async function fetchTranslations(language, options) {
2
+ const base = options.baseUrl ?? "";
3
+ const fetchFn = options.fetch ?? globalThis.fetch;
4
+ const url = `${base}/api/method/frappe.translate.get_dict?language=${encodeURIComponent(language)}`;
5
+ const res = await fetchFn(url, {
6
+ credentials: "include"
7
+ });
8
+ if (!res.ok) throw new Error(`Frappe translation fetch failed: ${res.status}`);
9
+ const data = await res.json();
10
+ return data.message ?? {};
11
+ }
12
+ function createFrappeBackend() {
13
+ if (process.env.VITE_FRAPPE_ENABLED !== "true") return null;
14
+ let opts = {};
15
+ return {
16
+ type: "backend",
17
+ init(_services, backendOptions, _i18nextOptions) {
18
+ opts = backendOptions ?? {};
19
+ },
20
+ read(language, _namespace, callback) {
21
+ fetchTranslations(language, opts).then(translations => callback(null, translations)).catch(err => callback(err, null));
22
+ }
23
+ };
24
+ }
25
+ export { createFrappeBackend };
26
+ //# sourceMappingURL=frappeBackend.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fetchTranslations","language","options","base","baseUrl","fetchFn","fetch","globalThis","url","encodeURIComponent","res","credentials","ok","Error","status","data","json","message","createFrappeBackend","process","env","VITE_FRAPPE_ENABLED","opts","type","init","_services","backendOptions","_i18nextOptions","read","_namespace","callback","then","translations","catch","err"],"sources":["../../src/frappeBackend.ts"],"sourcesContent":[null],"mappings":"AAcA,eAAeA,kBACbC,QAAA,EACAC,OAAA,EACiC;EACjC,MAAMC,IAAA,GAAOD,OAAA,CAAQE,OAAA,IAAW;EAChC,MAAMC,OAAA,GAAUH,OAAA,CAAQI,KAAA,IAASC,UAAA,CAAWD,KAAA;EAC5C,MAAME,GAAA,GAAM,GAAGL,IAAI,kDAAkDM,kBAAA,CAAmBR,QAAQ,CAAC;EACjG,MAAMS,GAAA,GAAM,MAAML,OAAA,CAAQG,GAAA,EAAK;IAAEG,WAAA,EAAa;EAAU,CAAC;EACzD,IAAI,CAACD,GAAA,CAAIE,EAAA,EAAI,MAAM,IAAIC,KAAA,CAAM,oCAAoCH,GAAA,CAAII,MAAM,EAAE;EAC7E,MAAMC,IAAA,GAAkC,MAAML,GAAA,CAAIM,IAAA,CAAK;EACvD,OAAOD,IAAA,CAAKE,OAAA,IAAW,CAAC;AAC1B;AAMA,SAASC,oBAAA,EAAkE;EACzE,IAAIC,OAAA,CAAQC,GAAA,CAAIC,mBAAA,KAAwB,QAAQ,OAAO;EAEvD,IAAIC,IAAA,GAA6B,CAAC;EAElC,OAAO;IACLC,IAAA,EAAM;IACNC,KAAKC,SAAA,EAAqBC,cAAA,EAAsCC,eAAA,EAA8B;MAC5FL,IAAA,GAAOI,cAAA,IAAkB,CAAC;IAC5B;IACAE,KAAK3B,QAAA,EAAkB4B,UAAA,EAAoBC,QAAA,EAAwB;MACjE9B,iBAAA,CAAkBC,QAAA,EAAUqB,IAAI,EAC7BS,IAAA,CAAMC,YAAA,IAAiBF,QAAA,CAAS,MAAME,YAAY,CAAC,EACnDC,KAAA,CAAOC,GAAA,IAAQJ,QAAA,CAASI,GAAA,EAAK,IAAI,CAAC;IACvC;EACF;AACF","ignoreList":[]}