adnbn 0.2.7 → 0.2.8
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.
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
|
|
3
|
+
interface LocaleProviderProps {
|
|
4
|
+
storage?: string | false;
|
|
5
|
+
}
|
|
6
|
+
declare const LocaleProvider: ({ children, storage }: PropsWithChildren<LocaleProviderProps>) => any;
|
|
7
|
+
|
|
8
|
+
export { type LocaleProviderProps, LocaleProvider as default };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
2
|
+
import { LocaleContext } from "./context.js";
|
|
3
|
+
import { getLocaleDir, isLocaleRtl } from "./../../../locale/utils.js";
|
|
4
|
+
import { DynamicLocale } from "./../../../locale/providers/index.js";
|
|
5
|
+
const LocaleProvider = ({ children, storage }) => {
|
|
6
|
+
const locale = useMemo(() => new DynamicLocale(storage), []);
|
|
7
|
+
const [lang, setLang] = useState(locale.lang());
|
|
8
|
+
const _ = useCallback((key, substitutions) => {
|
|
9
|
+
return locale.trans(key, substitutions);
|
|
10
|
+
}, []);
|
|
11
|
+
const choice = useCallback((key, count, substitutions) => {
|
|
12
|
+
return locale.choice(key, count, substitutions);
|
|
13
|
+
}, []);
|
|
14
|
+
const change = useCallback((lang2) => {
|
|
15
|
+
locale.change(lang2).catch((err) => console.error(`Cannot find locale file for "${lang2}" language`, err));
|
|
16
|
+
}, []);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const html = document.querySelector("html");
|
|
19
|
+
html == null ? void 0 : html.setAttribute("lang", lang);
|
|
20
|
+
html == null ? void 0 : html.setAttribute("dir", getLocaleDir(lang));
|
|
21
|
+
}, [lang]);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
locale.sync().then((lang2) => setLang(lang2));
|
|
24
|
+
}, []);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
return locale.watch((lang2) => setLang(lang2));
|
|
27
|
+
}, []);
|
|
28
|
+
return /* @__PURE__ */ React.createElement(
|
|
29
|
+
LocaleContext.Provider,
|
|
30
|
+
{
|
|
31
|
+
value: {
|
|
32
|
+
_,
|
|
33
|
+
choice,
|
|
34
|
+
change,
|
|
35
|
+
lang,
|
|
36
|
+
dir: getLocaleDir(lang),
|
|
37
|
+
isRtl: isLocaleRtl(lang)
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
children
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
var LocaleProvider_default = LocaleProvider;
|
|
44
|
+
export {
|
|
45
|
+
LocaleProvider_default as default
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=LocaleProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/locale/adapters/react/LocaleProvider.tsx"],"sourcesContent":["import React, {PropsWithChildren, useCallback, useEffect, useMemo, useState} from \"react\";\n\nimport {LocaleContext, LocaleContract} from \"./context\";\n\nimport {getLocaleDir, isLocaleRtl} from \"@locale/utils\";\n\nimport {DynamicLocale} from \"@locale/providers\";\n\nimport {Language} from \"@typing/locale\";\n\nexport interface LocaleProviderProps {\n storage?: string | false;\n}\n\nconst LocaleProvider = ({children, storage}: PropsWithChildren<LocaleProviderProps>) => {\n const locale = useMemo(() => new DynamicLocale(storage), []);\n\n const [lang, setLang] = useState<Language>(locale.lang());\n\n const _: LocaleContract[\"_\"] = useCallback((key, substitutions): string => {\n return locale.trans(key, substitutions);\n }, []);\n\n const choice: LocaleContract[\"choice\"] = useCallback((key, count, substitutions): string => {\n return locale.choice(key, count, substitutions);\n }, []);\n\n const change: LocaleContract[\"change\"] = useCallback((lang): void => {\n locale.change(lang).catch(err => console.error(`Cannot find locale file for \"${lang}\" language`, err));\n }, []);\n\n useEffect(() => {\n const html = document.querySelector(\"html\");\n\n html?.setAttribute(\"lang\", lang);\n html?.setAttribute(\"dir\", getLocaleDir(lang));\n }, [lang]);\n\n useEffect(() => {\n locale.sync().then(lang => setLang(lang));\n }, []);\n\n useEffect(() => {\n return locale.watch(lang => setLang(lang));\n }, []);\n\n return (\n <LocaleContext.Provider\n value={{\n _,\n choice,\n change,\n lang,\n dir: getLocaleDir(lang),\n isRtl: isLocaleRtl(lang),\n }}\n >\n {children}\n </LocaleContext.Provider>\n );\n};\n\nexport default LocaleProvider;\n"],"mappings":"AAAA,OAAO,SAA2B,aAAa,WAAW,SAAS,gBAAe;AAElF,SAAQ,qBAAoC;AAE5C,SAAQ,cAAc,mBAAkB;AAExC,SAAQ,qBAAoB;AAQ5B,MAAM,iBAAiB,CAAC,EAAC,UAAU,QAAO,MAA8C;AACpF,QAAM,SAAS,QAAQ,MAAM,IAAI,cAAc,OAAO,GAAG,CAAC,CAAC;AAE3D,QAAM,CAAC,MAAM,OAAO,IAAI,SAAmB,OAAO,KAAK,CAAC;AAExD,QAAM,IAAyB,YAAY,CAAC,KAAK,kBAA0B;AACvE,WAAO,OAAO,MAAM,KAAK,aAAa;AAAA,EAC1C,GAAG,CAAC,CAAC;AAEL,QAAM,SAAmC,YAAY,CAAC,KAAK,OAAO,kBAA0B;AACxF,WAAO,OAAO,OAAO,KAAK,OAAO,aAAa;AAAA,EAClD,GAAG,CAAC,CAAC;AAEL,QAAM,SAAmC,YAAY,CAACA,UAAe;AACjE,WAAO,OAAOA,KAAI,EAAE,MAAM,SAAO,QAAQ,MAAM,gCAAgCA,KAAI,cAAc,GAAG,CAAC;AAAA,EACzG,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACZ,UAAM,OAAO,SAAS,cAAc,MAAM;AAE1C,iCAAM,aAAa,QAAQ;AAC3B,iCAAM,aAAa,OAAO,aAAa,IAAI;AAAA,EAC/C,GAAG,CAAC,IAAI,CAAC;AAET,YAAU,MAAM;AACZ,WAAO,KAAK,EAAE,KAAK,CAAAA,UAAQ,QAAQA,KAAI,CAAC;AAAA,EAC5C,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACZ,WAAO,OAAO,MAAM,CAAAA,UAAQ,QAAQA,KAAI,CAAC;AAAA,EAC7C,GAAG,CAAC,CAAC;AAEL,SACI;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACG,OAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK,aAAa,IAAI;AAAA,QACtB,OAAO,YAAY,IAAI;AAAA,MAC3B;AAAA;AAAA,IAEC;AAAA,EACL;AAER;AAEA,IAAO,yBAAQ;","names":["lang"]}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
export { default as LocaleProvider, LocaleProviderProps } from './LocaleProvider.js';
|
|
2
2
|
export { LocaleContract, useLocale } from './context.js';
|
|
3
|
+
import 'react';
|
|
3
4
|
import '../../../types/locale.js';
|
|
4
5
|
import '../../providers/NativeLocale.js';
|
|
5
6
|
import '../../providers/AbstractLocale.js';
|
|
6
|
-
|
|
7
|
-
interface LocaleProviderProps {
|
|
8
|
-
storage?: string | false;
|
|
9
|
-
}
|
|
10
|
-
declare const LocaleProvider: ({ children, storage }: PropsWithChildren<LocaleProviderProps>) => any;
|
|
11
|
-
|
|
12
|
-
export { LocaleProvider, type LocaleProviderProps };
|
package/package.json
CHANGED