@ckbox/i18n 0.0.2-dev.2 → 0.0.2-dev.5

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/LICENSE.md ADDED
@@ -0,0 +1,7 @@
1
+ **CKBox** (https://ckeditor.com/ckbox/)
2
+
3
+ Copyright (c) 2003-2022, [CKSource Holding sp. z o.o.](https://cksource.com/) All rights reserved.
4
+ **CKBox** is licensed under a commercial license and is protected by copyright law. For more details about available licensing options please contact us at [sales@cksource.com](mailto:sales@cksource.com).
5
+
6
+ Trademarks
7
+ **CKBox** is a trademark of [CKSource Holding sp. z o.o.](https://cksource.com/) All other brand and product names are trademarks, registered trademarks or service marks of their respective holders.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ ## @ckbox/i18n
2
+
3
+ To be filled in.
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
3
+ */
4
+ import * as React from 'react';
5
+
6
+ /**
7
+ * Defines shape of all translation resources, e.g.:
8
+ * {
9
+ * en: {
10
+ * key: "translation"
11
+ * },
12
+ * pl: {
13
+ * key: "tłumaczenie"
14
+ * }
15
+ * }
16
+ */
17
+ declare type I18nResources = Record<string, I18nTranslations>;
18
+ /**
19
+ * Defines shape of translations for a language, e.g.:
20
+ * {
21
+ * key: "translation"
22
+ * }
23
+ */
24
+ declare type I18nTranslations = Record<string, string>;
25
+ interface I18nProps {
26
+ /**
27
+ * Toggles debug mode.
28
+ */
29
+ debug?: boolean;
30
+ /**
31
+ * Endpoint from which translation files will be loaded.
32
+ */
33
+ loadURL?: (lang: string) => string;
34
+ /**
35
+ * Language code.
36
+ */
37
+ lang?: string;
38
+ /**
39
+ * Translation resources that will be set synchronously. Resources for other languages can be still loaded on demand.
40
+ */
41
+ resources?: I18nResources;
42
+ }
43
+
44
+ interface I18nContextShape {
45
+ /**
46
+ * Switch language.
47
+ */
48
+ changeLang: (lang: string) => void;
49
+ /**
50
+ * Debug mode.
51
+ */
52
+ debug: boolean;
53
+ /**
54
+ * Currently selected language.
55
+ */
56
+ lang: string;
57
+ /**
58
+ * Stored translations.
59
+ */
60
+ resources: I18nResources;
61
+ }
62
+ /**
63
+ * Defines React context for i18n and sets defaults.
64
+ */
65
+ declare const I18nContext: React.Context<I18nContextShape>;
66
+
67
+ /**
68
+ * `I18nProvider` component sets i18n context for all child components.
69
+ */
70
+ declare const I18nProvider: React.FC<Props>;
71
+ interface Props extends I18nProps {
72
+ /**
73
+ * Pass-through children.
74
+ */
75
+ children: React.ReactNode;
76
+ }
77
+
78
+ /**
79
+ * Gets resources from global scope.
80
+ *
81
+ * @param locale requested language
82
+ * @returns translations
83
+ */
84
+ declare const getTranslations: (locale: string) => I18nTranslations;
85
+
86
+ interface MsgOpts {
87
+ /**
88
+ * Indicates which plural to use.
89
+ */
90
+ plural?: number;
91
+ }
92
+
93
+ interface TOpts<T extends boolean> extends MsgOpts {
94
+ /**
95
+ * Values to interpolate message with.
96
+ */
97
+ values?: (string | number)[];
98
+ /**
99
+ * Include html tags in message.
100
+ */
101
+ processTags?: T;
102
+ }
103
+ /**
104
+ * Exposes basic translation utilities which can be used in components.
105
+ * Most notably, it exposes `t` function which outputs translated message for currently selected language.
106
+ *
107
+ * @returns translation utils
108
+ */
109
+ declare const useTranslation: () => {
110
+ t: {
111
+ (key: string, opts?: TOpts<false>): string;
112
+ (key: string, opts?: TOpts<true>): React.ReactNode[];
113
+ };
114
+ lang: string;
115
+ };
116
+
117
+ export { I18nContext, I18nContextShape, I18nProps, I18nProvider, I18nResources, I18nTranslations, getTranslations, useTranslation };
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
3
+ */
4
+ const _0x968479=_0x2e8a;(function(_0x52cab8,_0x32ebe4){const _0x3c2cd9=_0x2e8a,_0x474a7f=_0x52cab8();while(!![]){try{const _0x2591b3=-parseInt(_0x3c2cd9(0x125))/0x1*(-parseInt(_0x3c2cd9(0x10b))/0x2)+parseInt(_0x3c2cd9(0x11c))/0x3+-parseInt(_0x3c2cd9(0x119))/0x4+-parseInt(_0x3c2cd9(0x106))/0x5+-parseInt(_0x3c2cd9(0x123))/0x6*(parseInt(_0x3c2cd9(0x107))/0x7)+parseInt(_0x3c2cd9(0x116))/0x8+parseInt(_0x3c2cd9(0x121))/0x9;if(_0x2591b3===_0x32ebe4)break;else _0x474a7f['push'](_0x474a7f['shift']());}catch(_0x455bae){_0x474a7f['push'](_0x474a7f['shift']());}}}(_0x42bb,0x73680));import*as _0x3a160a from'react';import{__rest}from'tslib';import{sprintf}from'sprintf-js';function _0x2e8a(_0x46ec56,_0x354288){const _0x42bbec=_0x42bb();return _0x2e8a=function(_0x2e8a7a,_0x1d12f6){_0x2e8a7a=_0x2e8a7a-0x103;let _0x1e83d2=_0x42bbec[_0x2e8a7a];return _0x1e83d2;},_0x2e8a(_0x46ec56,_0x354288);}const I18nContext=_0x3a160a[_0x968479(0x110)]({'changeLang':()=>{},'debug':![],'lang':'en','resources':{}});function reducer(_0x202c0e,_0x25d944){const _0x4e6ab8=_0x968479;switch(_0x25d944[_0x4e6ab8(0x12b)]){case'changeLang':return Object[_0x4e6ab8(0x118)](Object[_0x4e6ab8(0x118)]({},_0x202c0e),{'lang':_0x25d944['payload']});case _0x4e6ab8(0x117):return Object[_0x4e6ab8(0x118)](Object['assign']({},_0x202c0e),{'lang':_0x25d944[_0x4e6ab8(0x105)]['lang'],'resources':Object['assign'](Object[_0x4e6ab8(0x118)]({},_0x202c0e[_0x4e6ab8(0x112)]),{[_0x25d944['payload'][_0x4e6ab8(0x115)]]:_0x25d944[_0x4e6ab8(0x105)][_0x4e6ab8(0x103)]})});}}const useI18n=({debug:debug=![],loadURL:_0x5b2291,lang:_0x2336cf='en',resources:_0x1b19da={}})=>{const _0x15893a=_0x968479,[{lang:_0x414d12,resources:_0x2c96f3},_0x1c7546]=_0x3a160a[_0x15893a(0x11a)](reducer,{'lang':_0x2336cf,'resources':_0x1b19da});_0x3a160a[_0x15893a(0x108)](()=>{const _0xfcc0aa=_0x15893a;if(_0x2c96f3[_0x414d12]||!_0x5b2291)return;fetch(_0x5b2291(_0x414d12))[_0xfcc0aa(0x122)](_0x1fdf5c=>_0x1fdf5c['json']())['then'](_0x1b7e79=>{const _0x3e17ae=_0xfcc0aa;_0x1c7546({'type':_0x3e17ae(0x117),'payload':{'lang':_0x414d12,'translations':_0x1b7e79}});});},[_0x414d12,_0x5b2291,_0x2c96f3]);const _0x1ae361=_0x142377=>{const _0x305fd6=_0x15893a;_0x1c7546({'type':_0x305fd6(0x113),'payload':_0x142377});};return{'changeLang':_0x1ae361,'debug':debug,'lang':_0x414d12,'resources':_0x2c96f3};},I18nProvider=_0x28e92c=>{const _0x3cc7fd=_0x968479;var {children:_0x4a9467}=_0x28e92c,_0x3074b2=__rest(_0x28e92c,['children']);const _0x1ac786=useI18n(_0x3074b2);return _0x3a160a[_0x3cc7fd(0x10a)](I18nContext[_0x3cc7fd(0x10c)],{'value':_0x1ac786},_0x4a9467);},getTranslations=_0x270b9a=>{const _0x466fa4=_0x968479;var _0x45da93,_0x17c3f0;const _0x364607=typeof globalThis!==_0x466fa4(0x104)?globalThis:global||self;return(_0x17c3f0=(_0x45da93=_0x364607===null||_0x364607===void 0x0?void 0x0:_0x364607[_0x466fa4(0x127)])===null||_0x45da93===void 0x0?void 0x0:_0x45da93[_0x270b9a])!==null&&_0x17c3f0!==void 0x0?_0x17c3f0:{};},defaultPlural=(_0x20a7f2,_0x5239d1=0x1)=>{const _0x428b22=_0x968479;return _0x5239d1===0x1?_0x20a7f2:_0x20a7f2+_0x428b22(0x10e);},plPlural=(_0x2cc2bb,_0x569a01=0x1)=>{if(_0x569a01===0x1)return _0x2cc2bb+'_0';else{if(_0x569a01%0xa>=0x2&&_0x569a01%0xa<=0x4&&(_0x569a01%0x64<0xc||_0x569a01%0x64>0xe))return _0x2cc2bb+'_1';else return _0x569a01!=0x1&&_0x569a01%0xa>=0x0&&_0x569a01%0xa<=0x1||_0x569a01%0xa>=0x5&&_0x569a01%0xa<=0x9||_0x569a01%0x64>=0xc&&_0x569a01%0x64<=0xe?_0x2cc2bb+'_2':_0x2cc2bb+'_3';}},plurals={'default':defaultPlural,'en':defaultPlural,'pl':plPlural},getPluralKeyFn=_0x532e6c=>{const _0x4126a5=_0x968479;return plurals[_0x532e6c]?plurals[_0x532e6c]:plurals[_0x4126a5(0x126)];},TAG_REGEX=/<[a-zA-Z0-9\-!/](?:"[^"]*"|'[^']*'|[^'">])*>/g,ALLOWED_TAGS=['em',_0x968479(0x120),_0x968479(0x11e)],getMsg=(_0x12a0cf,_0x4396d2,_0x456e04={},_0x3d1dd9)=>{const _0x9205e0=_0x968479;if(_0x456e04[_0x4396d2]&&(_0x3d1dd9===null||_0x3d1dd9===void 0x0?void 0x0:_0x3d1dd9[_0x9205e0(0x130)])===undefined)return{'found':!![],'msg':_0x456e04[_0x4396d2]};const _0x2ce8a8=Object[_0x9205e0(0x124)](_0x456e04)['filter'](_0x56b303=>_0x56b303[_0x9205e0(0x111)](_0x4396d2)===0x0);if(_0x2ce8a8[_0x9205e0(0x10f)]===0x0)return{'found':![],'msg':_0x4396d2};const _0x2958cc=getPluralKeyFn(_0x12a0cf)(_0x4396d2,_0x3d1dd9===null||_0x3d1dd9===void 0x0?void 0x0:_0x3d1dd9[_0x9205e0(0x130)]);return{'found':!![],'msg':_0x456e04[_0x2958cc]};},parseMsgTags=_0x594573=>{const _0x425bbd=_0x968479,_0x2f882c=[];let _0x32cef1=0x0,_0x25519f;while((_0x25519f=TAG_REGEX[_0x425bbd(0x11f)](_0x594573))!==null){const _0x2cce4a=_0x25519f[0x0],{index:_0x1cad38}=_0x25519f,_0x1075f0=_0x2cce4a[_0x425bbd(0x129)](0x1)==='/',_0x3ae038=_0x1075f0?_0x2cce4a[_0x425bbd(0x10d)](0x2,-0x1):_0x2cce4a[_0x425bbd(0x10d)](0x1,-0x1),_0xa18cca=ALLOWED_TAGS['includes'](_0x3ae038);if(!_0xa18cca)continue;const _0x3bd113=_0x594573[_0x425bbd(0x10d)](_0x32cef1,_0x1cad38);if(!_0x3bd113){_0x32cef1=_0x1cad38+_0x2cce4a[_0x425bbd(0x10f)];continue;}_0x1075f0?_0x2f882c[_0x425bbd(0x11b)]({'type':_0x425bbd(0x128),'name':_0x2cce4a[_0x425bbd(0x10d)](0x2,-0x1),'content':_0x3bd113}):_0x2f882c['push']({'type':'text','content':_0x3bd113}),_0x32cef1=_0x1cad38+_0x2cce4a[_0x425bbd(0x10f)];}return _0x32cef1<_0x594573['length']&&_0x2f882c['push']({'type':_0x425bbd(0x11d),'content':_0x594573[_0x425bbd(0x10d)](_0x32cef1)}),_0x2f882c;};function formatMsgWithTags(_0x1fc780){const _0xf29380=_0x968479,_0x5c2667=parseMsgTags(_0x1fc780),_0x220242=_0x5c2667[_0xf29380(0x12e)](({content:_0x29dc81,type:_0x25b17e,name:_0x221cca},_0x3e3612)=>{const _0xf18eb8=_0xf29380,_0x38d004=_0x25b17e!==_0xf18eb8(0x11d)&&_0x221cca?_0x221cca:_0x3a160a[_0xf18eb8(0x12d)];return _0x3a160a[_0xf18eb8(0x10a)](_0x38d004,{'key':''+_0x3e3612},_0x29dc81);});return _0x220242;}function formatMsg(_0x490f36,_0x3e8211,_0x58bbe2){const _0x26f864=sprintf(_0x490f36,..._0x3e8211!==null&&_0x3e8211!==void 0x0?_0x3e8211:[]);if(!_0x58bbe2)return _0x26f864;return formatMsgWithTags(_0x26f864);}const useTranslation=()=>{const {lang:_0x4f6662,debug:_0xba76b9,resources:_0xd3f842}=_0x3a160a['useContext'](I18nContext);function _0x49a6a7(_0x11b619,_0x2d7376){const _0x490d40=_0x2e8a,{found:_0x348cc7,msg:_0x3c1b17}=getMsg(_0x4f6662,_0x11b619,_0xd3f842[_0x4f6662],{'plural':_0x2d7376===null||_0x2d7376===void 0x0?void 0x0:_0x2d7376[_0x490d40(0x130)]});_0xba76b9&&!_0x348cc7&&console[_0x490d40(0x114)]('['+_0x4f6662+_0x490d40(0x12f)+_0x11b619+_0x490d40(0x12a));if(_0x2d7376===null||_0x2d7376===void 0x0?void 0x0:_0x2d7376[_0x490d40(0x109)])return formatMsg(_0x3c1b17,_0x2d7376===null||_0x2d7376===void 0x0?void 0x0:_0x2d7376[_0x490d40(0x12c)],!![]);return formatMsg(_0x3c1b17,_0x2d7376===null||_0x2d7376===void 0x0?void 0x0:_0x2d7376[_0x490d40(0x12c)],![]);}return{'t':_0x49a6a7,'lang':_0x4f6662};};function _0x42bb(){const _0x42cb79=['9676953VhsCSj','then','904650NmCwKE','keys','877VWoCeg','default','CKBOX_TRANSLATIONS','tag','charAt','\x27\x20is\x20missing.','type','values','Fragment','map',']:\x20Translation\x20for\x20key\x20\x27','plural','translations','undefined','payload','4104040otIaDC','35gYJwRN','useEffect','processTags','createElement','250JJLbkw','Provider','slice','_plural','length','createContext','indexOf','resources','changeLang','log','lang','2727048RrGOCV','loadTranslations','assign','1087252HUCZtz','useReducer','push','2380431ALSHMj','text','code','exec','strong'];_0x42bb=function(){return _0x42cb79;};return _0x42bb();}export{I18nContext,I18nProvider,getTranslations,useTranslation};
package/package.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "name": "@ckbox/i18n",
3
- "version": "0.0.2-dev.2",
3
+ "version": "0.0.2-dev.5",
4
4
  "description": "i18n functionality",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
- "license": "UNLICENSED",
7
+ "license": "SEE LICENSE IN LICENSE.md",
8
8
  "peerDependencies": {
9
9
  "react": "^18"
10
10
  },
11
11
  "dependencies": {
12
12
  "sprintf-js": "^1.1.2",
13
13
  "tslib": "^2.4.0"
14
- }
14
+ },
15
+ "readme": "## @ckbox/i18n\n\nTo be filled in.\n"
15
16
  }