@arcblock/ux 2.9.91 → 2.10.1

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 (337) hide show
  1. package/lib/ActionButton/index.js +36 -48
  2. package/lib/ActivityIndicator/index.js +122 -75
  3. package/lib/Address/compact-text.js +48 -66
  4. package/lib/Address/did-address.js +114 -87
  5. package/lib/Address/index.js +15 -27
  6. package/lib/Address/responsive-did-address.js +48 -50
  7. package/lib/Alert/index.js +58 -52
  8. package/lib/AnimationWaiter/index.js +123 -69
  9. package/lib/Async/index.js +8 -22
  10. package/lib/Avatar/did-motif.js +38 -52
  11. package/lib/Avatar/etherscan-blockies.js +4 -10
  12. package/lib/Avatar/index.js +71 -77
  13. package/lib/Badge/index.js +49 -56
  14. package/lib/Blocklet/blocklet.js +181 -97
  15. package/lib/Blocklet/index.js +4 -24
  16. package/lib/Blocklet/utils.js +50 -13
  17. package/lib/BlockletContext/index.js +21 -31
  18. package/lib/BlockletNFT/index.js +255 -115
  19. package/lib/Button/index.js +5 -11
  20. package/lib/Button/wrap.js +45 -56
  21. package/lib/ButtonGroup/index.js +3 -9
  22. package/lib/CardSelector/index.js +67 -43
  23. package/lib/Center/index.js +19 -20
  24. package/lib/ClickToCopy/copy-button.js +37 -50
  25. package/lib/ClickToCopy/hook.js +10 -18
  26. package/lib/ClickToCopy/index.js +54 -66
  27. package/lib/CodeBlock/LightBox.js +84 -11
  28. package/lib/CodeBlock/index.js +175 -101
  29. package/lib/Colors/index.js +3 -20
  30. package/lib/Colors/themes/default.js +1 -7
  31. package/lib/Colors/themes/temp.js +1 -7
  32. package/lib/ContactForm/index.js +95 -60
  33. package/lib/CookieConsent/index.js +58 -52
  34. package/lib/CountDown/index.js +90 -59
  35. package/lib/DID/index.js +80 -96
  36. package/lib/Datatable/CustomToolbar.js +188 -137
  37. package/lib/Datatable/DatatableContext.js +14 -21
  38. package/lib/Datatable/TableSearch.js +99 -58
  39. package/lib/Datatable/index.js +312 -139
  40. package/lib/Datatable/utils.js +9 -17
  41. package/lib/Dialog/confirm.js +46 -58
  42. package/lib/Dialog/dialog.js +110 -66
  43. package/lib/Dialog/index.js +4 -27
  44. package/lib/Dialog/use-confirm.js +40 -65
  45. package/lib/DidLogo/index.js +14 -22
  46. package/lib/DriftBot/index.js +34 -19
  47. package/lib/Earth/index.js +214 -110
  48. package/lib/Earth/util.js +6 -19
  49. package/lib/Empty/index.js +33 -38
  50. package/lib/ErrorBoundary/fallback.js +45 -43
  51. package/lib/ErrorBoundary/index.js +1 -16
  52. package/lib/Footer/index.js +96 -48
  53. package/lib/Header/auto-hidden.js +28 -31
  54. package/lib/Header/header.js +151 -69
  55. package/lib/Header/index.js +2 -20
  56. package/lib/Header/responsive-header.js +67 -60
  57. package/lib/Icon/image.js +41 -45
  58. package/lib/Icon/index.js +51 -53
  59. package/lib/Img/index.js +77 -88
  60. package/lib/InfoRow/index.js +66 -48
  61. package/lib/Layout/dashboard/external-link.js +38 -53
  62. package/lib/Layout/dashboard/full-page.js +27 -41
  63. package/lib/Layout/dashboard/index.js +177 -132
  64. package/lib/Layout/dashboard/sidebar.js +164 -61
  65. package/lib/Layout/dashboard-legacy/header.js +119 -66
  66. package/lib/Layout/dashboard-legacy/index.js +90 -79
  67. package/lib/Layout/dashboard-legacy/sidebar.js +95 -62
  68. package/lib/Layout/index.js +200 -106
  69. package/lib/LoadingMask/index.js +31 -38
  70. package/lib/Locale/browser-lang.js +2 -8
  71. package/lib/Locale/context.js +46 -69
  72. package/lib/Locale/languages.js +6 -15
  73. package/lib/Locale/selector.js +116 -92
  74. package/lib/Locale/util.js +7 -16
  75. package/lib/Logo/index.js +54 -57
  76. package/lib/Metric/index.js +103 -40
  77. package/lib/NFTDisplay/aspect-ratio-container.js +33 -40
  78. package/lib/NFTDisplay/broken.js +68 -52
  79. package/lib/NFTDisplay/index.js +140 -129
  80. package/lib/NFTDisplay/loading.js +14 -13
  81. package/lib/NFTDisplay/svg-embedder/img.js +18 -33
  82. package/lib/NFTDisplay/svg-embedder/inline-svg.js +28 -32
  83. package/lib/NavMenu/index.js +2 -13
  84. package/lib/NavMenu/nav-menu.js +133 -148
  85. package/lib/NavMenu/style.js +179 -12
  86. package/lib/PageScroller/index.js +82 -93
  87. package/lib/PageScroller/story/FifthComponent.js +4 -10
  88. package/lib/PageScroller/story/FirstComponent.js +4 -10
  89. package/lib/PageScroller/story/FourthComponent.js +4 -10
  90. package/lib/PageScroller/story/FullPage.js +21 -28
  91. package/lib/PageScroller/story/PageContain.js +23 -30
  92. package/lib/PageScroller/story/SecondComponent.js +4 -10
  93. package/lib/PageScroller/story/ThirdComponent.js +4 -10
  94. package/lib/PageScroller/usePrevValue.js +4 -11
  95. package/lib/Passport/index.js +2 -9
  96. package/lib/Passport/passport.js +38 -51
  97. package/lib/PoweredByArcBlock/index.js +19 -33
  98. package/lib/PricingTable/PricingPlan.js +90 -34
  99. package/lib/PricingTable/index.js +28 -26
  100. package/lib/QRCode/index.js +38 -50
  101. package/lib/RelativeTime/index.js +44 -59
  102. package/lib/Result/common.js +85 -107
  103. package/lib/Result/index.js +22 -34
  104. package/lib/Result/result.js +35 -41
  105. package/lib/Result/translations.js +1 -7
  106. package/lib/Screenshot/BaseScreenshot/index.js +65 -43
  107. package/lib/Screenshot/BaseScreenshot/shells/Macbook.js +17 -27
  108. package/lib/Screenshot/BaseScreenshot/shells/Phone.js +14 -25
  109. package/lib/Screenshot/index.js +103 -92
  110. package/lib/SessionBlocklet/index.js +125 -143
  111. package/lib/SessionManager/index.js +2 -9
  112. package/lib/SessionPermission/index.js +13 -23
  113. package/lib/SessionUser/components/logged-in.js +139 -158
  114. package/lib/SessionUser/components/session-user-item.js +44 -58
  115. package/lib/SessionUser/components/session-user-switch.js +133 -152
  116. package/lib/SessionUser/components/un-login.js +27 -35
  117. package/lib/SessionUser/components/user-info.js +62 -74
  118. package/lib/SessionUser/index.js +26 -34
  119. package/lib/SessionUser/libs/translation.js +1 -7
  120. package/lib/SessionUser/libs/utils.js +13 -34
  121. package/lib/Sparkline/index.js +4 -10
  122. package/lib/Spinner/index.js +11 -17
  123. package/lib/SplitButton/index.js +72 -68
  124. package/lib/Success/index.js +28 -34
  125. package/lib/Switch/index.js +64 -75
  126. package/lib/Tabs/index.js +84 -103
  127. package/lib/Tag/index.js +52 -56
  128. package/lib/TextCollapse/index.js +57 -50
  129. package/lib/Theme/index.js +8 -47
  130. package/lib/Theme/theme-provider.js +19 -26
  131. package/lib/Theme/theme.js +49 -62
  132. package/lib/Toast/index.js +41 -73
  133. package/lib/Typography/index.js +44 -55
  134. package/lib/Util/constant.js +16 -22
  135. package/lib/Util/deprecate.js +14 -26
  136. package/lib/Util/federated.js +16 -38
  137. package/lib/Util/index.js +63 -113
  138. package/lib/Util/passport.js +23 -33
  139. package/lib/Util/wallet.js +5 -14
  140. package/lib/Video/index.js +34 -34
  141. package/lib/Wallet/Action.js +72 -49
  142. package/lib/Wallet/Download.js +132 -115
  143. package/lib/Wallet/Open.js +26 -25
  144. package/lib/WalletOSIcon/index.js +33 -42
  145. package/lib/WebWalletSWKeeper/index.js +42 -55
  146. package/lib/WechatPrompt/index.js +53 -33
  147. package/lib/index.js +38 -265
  148. package/lib/withTheme/index.js +53 -33
  149. package/lib/withTracker/error_boundary.js +7 -18
  150. package/lib/withTracker/index.js +25 -34
  151. package/package.json +9 -316
  152. package/src/WalletOSIcon/index.jsx +1 -1
  153. package/es/ActionButton/index.js +0 -99
  154. package/es/ActivityIndicator/index.js +0 -180
  155. package/es/Address/compact-text.js +0 -105
  156. package/es/Address/did-address.js +0 -222
  157. package/es/Address/index.js +0 -23
  158. package/es/Address/responsive-did-address.js +0 -87
  159. package/es/Alert/index.js +0 -134
  160. package/es/AnimationWaiter/default-animation.json +0 -1
  161. package/es/AnimationWaiter/index.js +0 -240
  162. package/es/Async/index.js +0 -38
  163. package/es/Avatar/did-motif.js +0 -68
  164. package/es/Avatar/etherscan-blockies.js +0 -83
  165. package/es/Avatar/index.js +0 -179
  166. package/es/Badge/index.js +0 -98
  167. package/es/Blocklet/blocklet.js +0 -298
  168. package/es/Blocklet/index.js +0 -4
  169. package/es/Blocklet/utils.js +0 -52
  170. package/es/BlockletContext/index.js +0 -65
  171. package/es/BlockletNFT/index.js +0 -412
  172. package/es/Button/index.js +0 -8
  173. package/es/Button/wrap.js +0 -140
  174. package/es/ButtonGroup/index.js +0 -6
  175. package/es/CardSelector/index.js +0 -149
  176. package/es/Center/index.js +0 -41
  177. package/es/ClickToCopy/copy-button.js +0 -72
  178. package/es/ClickToCopy/hook.js +0 -39
  179. package/es/ClickToCopy/index.js +0 -92
  180. package/es/CodeBlock/LightBox.js +0 -85
  181. package/es/CodeBlock/index.js +0 -222
  182. package/es/Colors/index.js +0 -3
  183. package/es/Colors/themes/default.js +0 -77
  184. package/es/Colors/themes/temp.js +0 -41
  185. package/es/ContactForm/index.js +0 -230
  186. package/es/CookieConsent/index.js +0 -113
  187. package/es/CountDown/index.js +0 -178
  188. package/es/DID/index.js +0 -249
  189. package/es/Datatable/CustomToolbar.js +0 -396
  190. package/es/Datatable/DatatableContext.js +0 -34
  191. package/es/Datatable/TableSearch.js +0 -166
  192. package/es/Datatable/index.js +0 -629
  193. package/es/Datatable/utils.js +0 -132
  194. package/es/Dialog/confirm.js +0 -123
  195. package/es/Dialog/dialog.js +0 -201
  196. package/es/Dialog/index.js +0 -4
  197. package/es/Dialog/types.d.ts +0 -17
  198. package/es/Dialog/use-confirm.js +0 -133
  199. package/es/DidLogo/index.js +0 -31
  200. package/es/DriftBot/index.js +0 -70
  201. package/es/Earth/countries.json +0 -8057
  202. package/es/Earth/index.js +0 -521
  203. package/es/Earth/util.js +0 -51
  204. package/es/Empty/index.js +0 -65
  205. package/es/ErrorBoundary/fallback.js +0 -73
  206. package/es/ErrorBoundary/index.js +0 -1
  207. package/es/Footer/index.js +0 -172
  208. package/es/Header/auto-hidden.js +0 -35
  209. package/es/Header/header.js +0 -223
  210. package/es/Header/index.js +0 -2
  211. package/es/Header/responsive-header.js +0 -146
  212. package/es/Icon/image.js +0 -65
  213. package/es/Icon/index.js +0 -84
  214. package/es/Img/index.js +0 -218
  215. package/es/InfoRow/index.js +0 -87
  216. package/es/Layout/dashboard/external-link.js +0 -58
  217. package/es/Layout/dashboard/full-page.js +0 -53
  218. package/es/Layout/dashboard/index.js +0 -282
  219. package/es/Layout/dashboard/sidebar.js +0 -209
  220. package/es/Layout/dashboard-legacy/header.js +0 -174
  221. package/es/Layout/dashboard-legacy/index.js +0 -148
  222. package/es/Layout/dashboard-legacy/sidebar.js +0 -129
  223. package/es/Layout/index.js +0 -335
  224. package/es/LoadingMask/index.js +0 -102
  225. package/es/Locale/browser-lang.js +0 -52
  226. package/es/Locale/context.js +0 -139
  227. package/es/Locale/languages.js +0 -60
  228. package/es/Locale/selector.js +0 -186
  229. package/es/Locale/util.js +0 -21
  230. package/es/Logo/images/logo-dark-text.svg +0 -3
  231. package/es/Logo/images/logo-dark-top.svg +0 -6
  232. package/es/Logo/images/logo-light-text.svg +0 -3
  233. package/es/Logo/images/logo-light-top.svg +0 -6
  234. package/es/Logo/index.js +0 -136
  235. package/es/Metric/index.js +0 -132
  236. package/es/NFTDisplay/NFTBroken.svg +0 -34
  237. package/es/NFTDisplay/README.md +0 -59
  238. package/es/NFTDisplay/aspect-ratio-container.js +0 -39
  239. package/es/NFTDisplay/broken.js +0 -132
  240. package/es/NFTDisplay/demo/data/asset-state-display-url.json +0 -7
  241. package/es/NFTDisplay/demo/data/asset-state-gzipped-svg-1-1.json +0 -10
  242. package/es/NFTDisplay/demo/data/asset-state-gzipped-svg-374-130.json +0 -10
  243. package/es/NFTDisplay/demo/data/asset-state-gzipped-svg-with-foreign-object.json +0 -20
  244. package/es/NFTDisplay/demo/data/asset-state-svg.json +0 -29
  245. package/es/NFTDisplay/demo/data/asset-state-url.json +0 -10
  246. package/es/NFTDisplay/index.js +0 -328
  247. package/es/NFTDisplay/loading.js +0 -18
  248. package/es/NFTDisplay/svg-embedder/img.js +0 -45
  249. package/es/NFTDisplay/svg-embedder/inline-svg.js +0 -39
  250. package/es/NavMenu/index.js +0 -2
  251. package/es/NavMenu/nav-menu.js +0 -358
  252. package/es/NavMenu/style.js +0 -181
  253. package/es/PageScroller/index.js +0 -286
  254. package/es/PageScroller/story/FifthComponent.js +0 -9
  255. package/es/PageScroller/story/FirstComponent.js +0 -9
  256. package/es/PageScroller/story/FourthComponent.js +0 -12
  257. package/es/PageScroller/story/FullPage.js +0 -47
  258. package/es/PageScroller/story/PageContain.js +0 -59
  259. package/es/PageScroller/story/SecondComponent.js +0 -9
  260. package/es/PageScroller/story/ThirdComponent.js +0 -9
  261. package/es/PageScroller/story/index.css +0 -115
  262. package/es/PageScroller/usePrevValue.js +0 -9
  263. package/es/Passport/index.js +0 -2
  264. package/es/Passport/passport.js +0 -103
  265. package/es/PoweredByArcBlock/index.js +0 -31
  266. package/es/PricingTable/PricingPlan.js +0 -124
  267. package/es/PricingTable/index.js +0 -53
  268. package/es/QRCode/index.js +0 -73
  269. package/es/RelativeTime/index.js +0 -107
  270. package/es/Result/common.js +0 -140
  271. package/es/Result/demo/fixtures/result-image-404.svg +0 -1
  272. package/es/Result/index.js +0 -33
  273. package/es/Result/result.js +0 -59
  274. package/es/Result/translations.js +0 -54
  275. package/es/Screenshot/BaseScreenshot/index.js +0 -91
  276. package/es/Screenshot/BaseScreenshot/shells/Macbook.js +0 -51
  277. package/es/Screenshot/BaseScreenshot/shells/Phone.js +0 -36
  278. package/es/Screenshot/demo/images/bg-00.jpg +0 -0
  279. package/es/Screenshot/demo/images/bg-01.jpg +0 -0
  280. package/es/Screenshot/demo/images/bg-02.jpg +0 -0
  281. package/es/Screenshot/demo/images/bg-03.jpg +0 -0
  282. package/es/Screenshot/demo/images/bg-04.jpg +0 -0
  283. package/es/Screenshot/demo/images/bg-05.jpg +0 -0
  284. package/es/Screenshot/demo/images/bg-06.jpg +0 -0
  285. package/es/Screenshot/demo/images/bg-07.jpg +0 -0
  286. package/es/Screenshot/demo/images/bg-08.jpg +0 -0
  287. package/es/Screenshot/demo/images/bg-09.jpg +0 -0
  288. package/es/Screenshot/devices.css +0 -1366
  289. package/es/Screenshot/index.js +0 -299
  290. package/es/SessionBlocklet/index.js +0 -173
  291. package/es/SessionManager/index.js +0 -2
  292. package/es/SessionPermission/index.js +0 -28
  293. package/es/SessionUser/components/logged-in.js +0 -229
  294. package/es/SessionUser/components/session-user-item.js +0 -102
  295. package/es/SessionUser/components/session-user-switch.js +0 -223
  296. package/es/SessionUser/components/un-login.js +0 -64
  297. package/es/SessionUser/components/user-info.js +0 -167
  298. package/es/SessionUser/index.js +0 -49
  299. package/es/SessionUser/libs/translation.js +0 -19
  300. package/es/SessionUser/libs/utils.js +0 -29
  301. package/es/Sparkline/index.js +0 -193
  302. package/es/Spinner/index.js +0 -28
  303. package/es/SplitButton/index.js +0 -145
  304. package/es/Success/index.js +0 -175
  305. package/es/Switch/index.js +0 -96
  306. package/es/Tabs/index.js +0 -214
  307. package/es/Tag/index.js +0 -108
  308. package/es/TextCollapse/index.js +0 -92
  309. package/es/Theme/index.js +0 -16
  310. package/es/Theme/theme-provider.js +0 -39
  311. package/es/Theme/theme.js +0 -145
  312. package/es/Toast/index.js +0 -97
  313. package/es/Typography/index.js +0 -95
  314. package/es/Util/constant.js +0 -42
  315. package/es/Util/deprecate.js +0 -28
  316. package/es/Util/federated.js +0 -91
  317. package/es/Util/index.js +0 -363
  318. package/es/Util/passport.js +0 -62
  319. package/es/Util/wallet.js +0 -32
  320. package/es/Video/index.js +0 -89
  321. package/es/Wallet/Action.js +0 -119
  322. package/es/Wallet/Download.js +0 -331
  323. package/es/Wallet/Open.js +0 -45
  324. package/es/Wallet/images/abtwallet.png +0 -0
  325. package/es/Wallet/images/android_download.svg +0 -23
  326. package/es/Wallet/images/app-store.svg +0 -20
  327. package/es/Wallet/images/google-play.svg +0 -70
  328. package/es/WalletOSIcon/index.js +0 -82
  329. package/es/WebWalletSWKeeper/index.js +0 -117
  330. package/es/WechatPrompt/images/android.png +0 -0
  331. package/es/WechatPrompt/images/ios.png +0 -0
  332. package/es/WechatPrompt/index.js +0 -88
  333. package/es/index.js +0 -38
  334. package/es/withTheme/index.js +0 -69
  335. package/es/withTracker/README.md +0 -34
  336. package/es/withTracker/error_boundary.js +0 -34
  337. package/es/withTracker/index.js +0 -55
@@ -1,43 +1,23 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.LocaleContext = exports.LocaleConsumer = void 0;
7
- exports.LocaleProvider = LocaleProvider;
8
- exports.setLocale = exports.getLocale = void 0;
9
- exports.useLocaleContext = useLocaleContext;
10
- var _react = require("react");
11
- var _get = _interopRequireDefault(require("lodash/get"));
12
- var _propTypes = _interopRequireDefault(require("prop-types"));
13
- var _jsCookie = _interopRequireDefault(require("js-cookie"));
14
- var _browserLang = _interopRequireDefault(require("./browser-lang"));
15
- var _util = require("./util");
16
- var _Util = require("../Util");
17
- var _jsxRuntime = require("react/jsx-runtime");
18
- const _excluded = ["children", "locale", "fallbackLocale", "translations", "onLoadingTranslation", "languages"];
19
1
  /* eslint-disable no-prototype-builtins */
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
25
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
26
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
27
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
2
+ import { createContext, useState, useEffect, useContext, useRef, useCallback } from 'react';
3
+ import get from 'lodash/get';
4
+ import PropTypes from 'prop-types';
5
+ import Cookie from 'js-cookie';
6
+ import browserLang from './browser-lang';
7
+ import { translate } from './util';
8
+ import { getCookieOptions } from '../Util';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
28
10
  const cookieName = 'nf_lang';
29
11
 
30
12
  // 跨应用传递多语言选择的方式是在 query string 中添加 locale 参数,LocaleSelector 要高优先级遵守这个参数
31
- const getLocaleFromSearchParams = function getLocaleFromSearchParams(languages) {
32
- let url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.location.href;
13
+ const getLocaleFromSearchParams = (languages, url = window.location.href) => {
33
14
  const locale = new URL(url).searchParams.get('locale');
34
15
  if (languages.find(x => x.code === locale)) {
35
16
  return locale;
36
17
  }
37
18
  return null;
38
19
  };
39
- const setLocaleParam = function setLocaleParam(locale) {
40
- let url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.location.href;
20
+ const setLocaleParam = (locale, url = window.location.href) => {
41
21
  const urlObj = new URL(url);
42
22
  const hasLocaleParam = urlObj.searchParams.has('locale');
43
23
  if (hasLocaleParam) {
@@ -45,23 +25,20 @@ const setLocaleParam = function setLocaleParam(locale) {
45
25
  window.history.replaceState({}, '', urlObj.href);
46
26
  }
47
27
  };
48
- const getLocale = exports.getLocale = function getLocale() {
49
- var _languages$;
50
- let languages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
28
+ const getLocale = (languages = []) => {
51
29
  const langParams = {
52
30
  languages: languages.map(item => item.code),
53
31
  // 取 languages 首个元素的 code 值, 如果不存在则取 'en'
54
- fallback: (languages === null || languages === void 0 ? void 0 : (_languages$ = languages[0]) === null || _languages$ === void 0 ? void 0 : _languages$.code) || 'en'
32
+ fallback: languages?.[0]?.code || 'en'
55
33
  };
56
- return getLocaleFromSearchParams(languages) || _jsCookie.default.get(cookieName) || (0, _browserLang.default)(langParams);
34
+ return getLocaleFromSearchParams(languages) || Cookie.get(cookieName) || browserLang(langParams);
57
35
  };
58
36
  const setLocale = locale => {
59
- _jsCookie.default.set(cookieName, locale, (0, _Util.getCookieOptions)());
37
+ Cookie.set(cookieName, locale, getCookieOptions());
60
38
  setLocaleParam(locale);
61
39
  };
62
- exports.setLocale = setLocale;
63
40
  const getLanguages = arg => {
64
- const env = (0, _get.default)(window, 'blocklet.languages');
41
+ const env = get(window, 'blocklet.languages');
65
42
  if (Array.isArray(env) && env.length) {
66
43
  return env;
67
44
  }
@@ -76,32 +53,30 @@ const getLanguages = arg => {
76
53
  name: '简体中文'
77
54
  }];
78
55
  };
79
- const LocaleContext = exports.LocaleContext = /*#__PURE__*/(0, _react.createContext)();
56
+ const LocaleContext = /*#__PURE__*/createContext();
80
57
  const {
81
58
  Provider,
82
59
  Consumer
83
60
  } = LocaleContext;
84
- exports.LocaleConsumer = Consumer;
85
- function LocaleProvider(_ref) {
86
- let {
87
- children,
88
- locale,
89
- fallbackLocale,
90
- translations,
91
- onLoadingTranslation,
92
- languages
93
- } = _ref,
94
- rest = _objectWithoutProperties(_ref, _excluded);
61
+ function LocaleProvider({
62
+ children,
63
+ locale,
64
+ fallbackLocale,
65
+ translations,
66
+ onLoadingTranslation,
67
+ languages,
68
+ ...rest
69
+ }) {
95
70
  const langs = getLanguages(languages);
96
71
  // eslint-disable-next-line prefer-const
97
- let [currentLocale, setCurrentLocale] = (0, _react.useState)(locale || getLocale(langs));
98
- const lastCurrentLocale = (0, _react.useRef)(fallbackLocale);
99
- const [, setForceUpdate] = (0, _react.useState)(0);
72
+ let [currentLocale, setCurrentLocale] = useState(locale || getLocale(langs));
73
+ const lastCurrentLocale = useRef(fallbackLocale);
74
+ const [, setForceUpdate] = useState(0);
100
75
  const changeLocale = newLocale => {
101
76
  setCurrentLocale(newLocale);
102
77
  setLocale(newLocale);
103
78
  };
104
- (0, _react.useEffect)(() => {
79
+ useEffect(() => {
105
80
  const tmpLocale = locale || getLocale(langs);
106
81
  if (tmpLocale !== currentLocale) {
107
82
  changeLocale(tmpLocale);
@@ -127,31 +102,32 @@ function LocaleProvider(_ref) {
127
102
  } else {
128
103
  lastCurrentLocale.current = currentLocale;
129
104
  }
130
- const t = (0, _react.useCallback)((key, data) => (0, _util.translate)(translations, key, currentLocale, fallbackLocale, data), [translations, currentLocale, fallbackLocale]);
131
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Provider, {
132
- value: _objectSpread({
105
+ const t = useCallback((key, data) => translate(translations, key, currentLocale, fallbackLocale, data), [translations, currentLocale, fallbackLocale]);
106
+ return /*#__PURE__*/_jsx(Provider, {
107
+ value: {
133
108
  locale: currentLocale,
134
109
  changeLocale,
135
110
  t,
136
- languages: langs
137
- }, rest),
111
+ languages: langs,
112
+ ...rest
113
+ },
138
114
  children: children
139
115
  });
140
116
  }
141
117
  function useLocaleContext() {
142
- const context = (0, _react.useContext)(LocaleContext);
118
+ const context = useContext(LocaleContext);
143
119
  return context;
144
120
  }
145
121
  LocaleProvider.propTypes = {
146
- children: _propTypes.default.any.isRequired,
147
- translations: _propTypes.default.object.isRequired,
148
- onLoadingTranslation: _propTypes.default.func,
149
- locale: _propTypes.default.string,
122
+ children: PropTypes.any.isRequired,
123
+ translations: PropTypes.object.isRequired,
124
+ onLoadingTranslation: PropTypes.func,
125
+ locale: PropTypes.string,
150
126
  // 会影响 translate(key) 的结果 - 当 key 无效时查找 fallbackLocale 对应的翻译结果
151
- fallbackLocale: _propTypes.default.string,
152
- languages: _propTypes.default.arrayOf(_propTypes.default.shape({
153
- code: _propTypes.default.string,
154
- name: _propTypes.default.string
127
+ fallbackLocale: PropTypes.string,
128
+ languages: PropTypes.arrayOf(PropTypes.shape({
129
+ code: PropTypes.string,
130
+ name: PropTypes.string
155
131
  }))
156
132
  };
157
133
  LocaleProvider.defaultProps = {
@@ -159,4 +135,5 @@ LocaleProvider.defaultProps = {
159
135
  fallbackLocale: '',
160
136
  languages: [],
161
137
  onLoadingTranslation: () => {}
162
- };
138
+ };
139
+ export { LocaleProvider, Consumer as LocaleConsumer, LocaleContext, useLocaleContext, setLocale, getLocale };
@@ -1,16 +1,5 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.map = exports.default = void 0;
7
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
11
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
12
1
  // from: https://github.com/meikidd/iso-639-1/blob/master/src/data.js
13
- const languages = exports.map = {
2
+ const languages = {
14
3
  ar: {
15
4
  name: 'Arabic',
16
5
  nativeName: 'اَلْعَرَبِيَّةُ'
@@ -64,6 +53,8 @@ const languages = exports.map = {
64
53
  nativeName: '繁體中文'
65
54
  }
66
55
  };
67
- var _default = exports.default = Object.keys(languages).map(code => _objectSpread({
68
- code
69
- }, languages[code]));
56
+ export default Object.keys(languages).map(code => ({
57
+ code,
58
+ ...languages[code]
59
+ }));
60
+ export { languages as map };
@@ -1,52 +1,35 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = LocaleSelector;
7
- var _react = require("react");
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var _material = require("@mui/material");
10
- var _react2 = require("@iconify/react");
11
- var _check = _interopRequireDefault(require("@iconify-icons/material-symbols/check"));
12
- var _language = _interopRequireDefault(require("iconify-icons-material-symbols-400/language"));
13
- var _noop = _interopRequireDefault(require("lodash/noop"));
14
- var _Util = require("../Util");
15
- var _Colors = require("../Colors");
16
- var _context = require("./context");
17
- var _Theme = require("../Theme");
18
- var _jsxRuntime = require("react/jsx-runtime");
19
- var _templateObject, _templateObject2;
20
- const _excluded = ["showText", "popperProps", "popperType", "icon", "size"];
21
1
  /* eslint-disable react/jsx-no-bind */
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
24
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
28
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
29
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
30
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
31
- function LocaleSelector(props) {
32
- var _theme$palette;
2
+ import { useState, useContext, useRef, useMemo } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import { Button, Typography, IconButton, Popper, MenuItem, MenuList, Box, ClickAwayListener } from '@mui/material';
5
+ import { Icon as IconifyIcon } from '@iconify/react';
6
+ import CheckIcon from '@iconify-icons/material-symbols/check';
7
+ import LanguageIcon from 'iconify-icons-material-symbols-400/language';
8
+ import noop from 'lodash/noop';
9
+ import { getColor, getBackground } from '../Util';
10
+ import { temp as colors } from '../Colors';
11
+ import { LocaleContext } from './context';
12
+ import { styled, useTheme } from '../Theme';
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ import { jsxs as _jsxs } from "react/jsx-runtime";
15
+ export default function LocaleSelector(props) {
33
16
  const {
34
- showText,
35
- popperProps,
36
- popperType,
37
- icon: Icon,
38
- size
39
- } = props,
40
- rest = _objectWithoutProperties(props, _excluded);
17
+ showText,
18
+ popperProps,
19
+ popperType,
20
+ icon: Icon,
21
+ size,
22
+ ...rest
23
+ } = props;
41
24
  const {
42
25
  locale,
43
26
  changeLocale,
44
27
  languages
45
- } = (0, _react.useContext)(_context.LocaleContext);
46
- const anchorEl = (0, _react.useRef)(null);
47
- const [open, setOpen] = (0, _react.useState)(false);
48
- const theme = (0, _Theme.useTheme)();
49
- const dark = (theme === null || theme === void 0 ? void 0 : (_theme$palette = theme.palette) === null || _theme$palette === void 0 ? void 0 : _theme$palette.mode) === 'dark';
28
+ } = useContext(LocaleContext);
29
+ const anchorEl = useRef(null);
30
+ const [open, setOpen] = useState(false);
31
+ const theme = useTheme();
32
+ const dark = theme?.palette?.mode === 'dark';
50
33
  const onSelect = newLocale => {
51
34
  changeLocale(newLocale);
52
35
  setOpen(false);
@@ -55,13 +38,12 @@ function LocaleSelector(props) {
55
38
  }
56
39
  };
57
40
  const onClose = e => {
58
- var _anchorEl$current;
59
- if ((_anchorEl$current = anchorEl.current) !== null && _anchorEl$current !== void 0 && _anchorEl$current.contains(e.target)) {
41
+ if (anchorEl.current?.contains(e.target)) {
60
42
  return;
61
43
  }
62
44
  setOpen(false);
63
45
  };
64
- const ButtonComponent = showText ? _material.Button : _material.IconButton;
46
+ const ButtonComponent = showText ? Button : IconButton;
65
47
  const handleEventProps = popperType === 'hover' ? {
66
48
  onMouseEnter: () => {
67
49
  setOpen(true);
@@ -74,89 +56,131 @@ function LocaleSelector(props) {
74
56
  setOpen(!open);
75
57
  }
76
58
  };
77
- const renderIcon = (0, _react.useMemo)(() => {
59
+ const renderIcon = useMemo(() => {
78
60
  if (Icon) {
79
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Icon, {});
61
+ return /*#__PURE__*/_jsx(Icon, {});
80
62
  }
81
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react2.Icon, {
82
- icon: _language.default,
63
+ return /*#__PURE__*/_jsx(IconifyIcon, {
64
+ icon: LanguageIcon,
83
65
  fontSize: size,
84
66
  style: {
85
67
  transform: 'scale(1.10)'
86
68
  }
87
69
  });
88
70
  }, [Icon, size]);
89
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, _objectSpread(_objectSpread(_objectSpread({
71
+ return /*#__PURE__*/_jsxs(Div, {
90
72
  component: "div",
91
73
  dark: dark,
92
- theme: theme
93
- }, rest), handleEventProps), {}, {
94
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ButtonComponent, {
74
+ theme: theme,
75
+ ...rest,
76
+ ...handleEventProps,
77
+ children: [/*#__PURE__*/_jsx(ButtonComponent, {
95
78
  ref: anchorEl,
96
79
  className: "trigger",
97
80
  role: "button",
98
81
  "aria-label": "Locale selector button",
99
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
82
+ children: /*#__PURE__*/_jsxs(Box, {
100
83
  display: "flex",
101
84
  alignItems: "center",
102
- children: [renderIcon, showText ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
85
+ children: [renderIcon, showText ? /*#__PURE__*/_jsx(Typography, {
103
86
  component: "strong",
104
87
  className: "trigger-text",
105
88
  children: languages.find(x => x.code === locale).name
106
89
  }) : '']
107
90
  })
108
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledPopper, _objectSpread(_objectSpread({
91
+ }), /*#__PURE__*/_jsx(StyledPopper, {
109
92
  open: open,
110
- anchorEl: anchorEl.current
111
- }, popperProps), {}, {
93
+ anchorEl: anchorEl.current,
94
+ ...popperProps,
112
95
  disablePortal: true,
113
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
96
+ children: /*#__PURE__*/_jsx("div", {
114
97
  className: "locales",
115
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ClickAwayListener, {
98
+ children: /*#__PURE__*/_jsx(ClickAwayListener, {
116
99
  onClickAway: onClose,
117
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuList, {
118
- children: languages.map(_ref => {
119
- let {
120
- code,
121
- name
122
- } = _ref;
123
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
124
- className: "locale-item",
125
- onClick: () => onSelect(code, name),
126
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_react2.Icon, {
127
- icon: _check.default,
128
- className: code === locale ? 'check-icon check-icon-visible' : 'check-icon'
129
- }), name]
130
- }, code);
131
- })
100
+ children: /*#__PURE__*/_jsx(MenuList, {
101
+ children: languages.map(({
102
+ code,
103
+ name
104
+ }) => /*#__PURE__*/_jsxs(MenuItem, {
105
+ className: "locale-item",
106
+ onClick: () => onSelect(code, name),
107
+ children: [/*#__PURE__*/_jsx(IconifyIcon, {
108
+ icon: CheckIcon,
109
+ className: code === locale ? 'check-icon check-icon-visible' : 'check-icon'
110
+ }), name]
111
+ }, code))
132
112
  })
133
113
  })
134
114
  })
135
- }))]
136
- }));
115
+ })]
116
+ });
137
117
  }
138
118
  LocaleSelector.propTypes = {
139
- size: _propTypes.default.number,
140
- showText: _propTypes.default.bool,
141
- popperProps: _propTypes.default.object,
142
- onChange: _propTypes.default.func,
143
- popperType: _propTypes.default.oneOf(['hover', 'click']),
144
- icon: _propTypes.default.any
119
+ size: PropTypes.number,
120
+ showText: PropTypes.bool,
121
+ popperProps: PropTypes.object,
122
+ onChange: PropTypes.func,
123
+ popperType: PropTypes.oneOf(['hover', 'click']),
124
+ icon: PropTypes.any
145
125
  };
146
126
  LocaleSelector.defaultProps = {
147
127
  showText: true,
148
128
  size: 24,
149
129
  popperProps: {},
150
- onChange: _noop.default,
130
+ onChange: noop,
151
131
  popperType: 'click',
152
132
  icon: null
153
133
  };
154
- const Div = (0, _Theme.styled)('div', {
134
+ const Div = styled('div', {
155
135
  shouldForwardProp: prop => prop !== 'dark'
156
- })(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: inline-block;\n\n .trigger {\n display: flex;\n flex-direction: column;\n justify-content: center;\n font-size: 14px;\n white-space: nowrap;\n\n .trigger-text {\n margin-left: 5px;\n font-size: 14px;\n color: ", ";\n }\n }\n\n .locales {\n background: ", ";\n box-shadow: 0px 8px 16px 0px ", ", 0px 0px 0px 1px ", ";\n border-radius: 8px;\n }\n\n .locale-item {\n font-size: 16px;\n font-style: normal;\n font-stretch: normal;\n line-height: normal;\n letter-spacing: 2px;\n text-align: center;\n color: ", ";\n cursor: pointer;\n display: flex;\n padding: 16px;\n align-items: center;\n .check-icon {\n visibility: hidden;\n margin-right: 4px;\n }\n .check-icon-visible {\n visibility: visible;\n }\n }\n"])), props => (0, _Util.getColor)(props), props => (0, _Util.getBackground)(props), _Colors.temp.gray6, _Colors.temp.gray6, props => (0, _Util.getColor)(props));
157
- const StyledPopper = (0, _Theme.styled)(_material.Popper)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n z-index: ", ";\n"])), _ref2 => {
158
- let {
159
- theme
160
- } = _ref2;
136
+ })`
137
+ display: inline-block;
138
+
139
+ .trigger {
140
+ display: flex;
141
+ flex-direction: column;
142
+ justify-content: center;
143
+ font-size: 14px;
144
+ white-space: nowrap;
145
+
146
+ .trigger-text {
147
+ margin-left: 5px;
148
+ font-size: 14px;
149
+ color: ${props => getColor(props)};
150
+ }
151
+ }
152
+
153
+ .locales {
154
+ background: ${props => getBackground(props)};
155
+ box-shadow: 0px 8px 16px 0px ${colors.gray6}, 0px 0px 0px 1px ${colors.gray6};
156
+ border-radius: 8px;
157
+ }
158
+
159
+ .locale-item {
160
+ font-size: 16px;
161
+ font-style: normal;
162
+ font-stretch: normal;
163
+ line-height: normal;
164
+ letter-spacing: 2px;
165
+ text-align: center;
166
+ color: ${props => getColor(props)};
167
+ cursor: pointer;
168
+ display: flex;
169
+ padding: 16px;
170
+ align-items: center;
171
+ .check-icon {
172
+ visibility: hidden;
173
+ margin-right: 4px;
174
+ }
175
+ .check-icon-visible {
176
+ visibility: visible;
177
+ }
178
+ }
179
+ `;
180
+ const StyledPopper = styled(Popper)`
181
+ z-index: ${({
182
+ theme
183
+ }) => {
161
184
  return theme.zIndex.tooltip + 10;
162
- });
185
+ }};
186
+ `;
@@ -1,22 +1,13 @@
1
- "use strict";
1
+ import get from 'lodash/get';
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.translate = exports.t = exports.replace = void 0;
7
- var _get = _interopRequireDefault(require("lodash/get"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
3
  /* eslint-disable no-prototype-builtins */
10
- const replace = (template, data) => template.replace(/{(\w*)}/g, (m, key) => data.hasOwnProperty(key) ? data[key] : '');
11
- exports.replace = replace;
12
- const translate = exports.translate = function translate(translations, key, locale) {
13
- let fallbackLocale = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'en';
14
- let data = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
4
+ export const replace = (template, data) => template.replace(/{(\w*)}/g, (m, key) => data.hasOwnProperty(key) ? data[key] : '');
5
+ export const translate = (translations, key, locale, fallbackLocale = 'en', data = {}) => {
15
6
  const translation = translations[locale];
16
- const translationValue = (0, _get.default)(translation, key);
17
- const fallbackValue = (0, _get.default)(translations[fallbackLocale], key);
7
+ const translationValue = get(translation, key);
8
+ const fallbackValue = get(translations[fallbackLocale], key);
18
9
  if (!translation || !translationValue) {
19
- console.warn("Warning: no ".concat(key, " translation of ").concat(locale));
10
+ console.warn(`Warning: no ${key} translation of ${locale}`);
20
11
  if (fallbackLocale && fallbackValue) {
21
12
  return replace(fallbackValue, data);
22
13
  }
@@ -27,4 +18,4 @@ const translate = exports.translate = function translate(translations, key, loca
27
18
  }
28
19
  return replace(translationValue, data);
29
20
  };
30
- const t = exports.t = translate;
21
+ export const t = translate;