Browse Source

choose scenario

leon 2 năm trước cách đây
mục cha
commit
79f8aaf0cd
63 tập tin đã thay đổi với 5659 bổ sung346 xóa
  1. 1 0
      config/index.ts
  2. 16 1
      dist/app-origin.wxss
  3. 209 9
      dist/app.js
  4. 0 0
      dist/app.js.map
  5. 1 1
      dist/app.json
  6. 180 26
      dist/common.js
  7. 0 0
      dist/common.js.map
  8. 53 0
      dist/common.wxss
  9. 35 71
      dist/pages/Auth.js
  10. 0 0
      dist/pages/Auth.js.map
  11. 0 19
      dist/pages/Auth.wxss
  12. 77 0
      dist/pages/ChooseAuth.js
  13. 1 0
      dist/pages/ChooseAuth.js.map
  14. 1 0
      dist/pages/ChooseAuth.json
  15. 2 0
      dist/pages/ChooseAuth.wxml
  16. 205 0
      dist/pages/ChooseScenario.js
  17. 0 0
      dist/pages/ChooseScenario.js.map
  18. 1 0
      dist/pages/ChooseScenario.json
  19. 2 0
      dist/pages/ChooseScenario.wxml
  20. 21 20
      dist/pages/ChooseScenario.wxss
  21. 0 54
      dist/pages/Login.js
  22. 0 0
      dist/pages/Login.js.map
  23. 56 0
      dist/pages/SetGoal.js
  24. 1 0
      dist/pages/SetGoal.js.map
  25. 1 0
      dist/pages/SetGoal.json
  26. 2 0
      dist/pages/SetGoal.wxml
  27. 1 1
      dist/pages/index/index.js
  28. 0 0
      dist/pages/index/index.js.map
  29. 18 0
      dist/prebundle/remoteEntry.js
  30. 481 0
      dist/prebundle/vendors-node_modules_taro_weapp_prebundle_i18next-browser-languagedetector_js.js
  31. 2767 0
      dist/prebundle/vendors-node_modules_taro_weapp_prebundle_i18next_js.js
  32. 988 0
      dist/prebundle/vendors-node_modules_taro_weapp_prebundle_react-i18next_js.js
  33. 128 102
      dist/prebundle/vendors-node_modules_taro_weapp_prebundle_tarojs_taro_js.js
  34. 1 1
      dist/project.config.json
  35. 19 1
      dist/runtime.js
  36. 0 0
      dist/runtime.js.map
  37. 0 0
      dist/vendors.js.map
  38. 4 1
      src/app.config.ts
  39. 12 1
      src/app.scss
  40. 1 0
      src/app.ts
  41. 18 0
      src/components/Footer.scss
  42. 9 0
      src/components/Footer.tsx
  43. 71 23
      src/components/Rings.weapp.tsx
  44. 11 0
      src/components/Texts.scss
  45. 2 0
      src/components/Texts.tsx
  46. 55 0
      src/context/locales/en.js
  47. 51 0
      src/context/locales/zh.js
  48. 16 13
      src/features/auth/components/Auth.tsx
  49. 5 0
      src/features/auth/components/CreateAccount.tsx
  50. 5 0
      src/features/auth/components/CreatePassword.tsx
  51. 0 0
      src/features/trackTimeDuration/components/ChooseScenario.scss
  52. 59 0
      src/features/trackTimeDuration/components/ChooseScenario.tsx
  53. 0 0
      src/features/trackTimeDuration/components/SetGoal.scss
  54. 5 0
      src/features/trackTimeDuration/components/SetGoal.tsx
  55. 20 0
      src/pages/ChooseAuth.tsx
  56. 8 0
      src/pages/ChooseScenario.tsx
  57. 5 0
      src/pages/SetGoal.tsx
  58. 14 0
      src/pages/Space.tsx
  59. 5 0
      src/pages/Welcome.tsx
  60. 1 1
      src/pages/index/index.tsx
  61. 6 0
      src/services/http/request.ts
  62. 2 0
      src/utils/types.ts
  63. 6 1
      tsconfig.json

+ 1 - 0
config/index.ts

@@ -28,6 +28,7 @@ const config = {
     '@components': path.resolve(__dirname, '..', 'src/components'),
     '@assets': path.resolve(__dirname, '..', 'src/assets'),
     '@utils': path.resolve(__dirname, '..', 'src/utils'),
+    '@features': path.resolve(__dirname, '..', 'src/features'),
   },
   mini: {
     postcss: {

+ 16 - 1
dist/app-origin.wxss

@@ -1,12 +1,27 @@
 /*!***********************************************************************************************************************************************************************************************************************************************************************************************************!*\
   !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[4]!./src/app.scss ***!
   \***********************************************************************************************************************************************************************************************************************************************************************************************************/
+/* #ifdef weapp */
 page {
   background-color: #000;
 }
-
 @media (prefers-color-scheme: dark) {
   page {
     background-color: #000;
   }
 }
+.container {
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-flex-direction: column;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  -webkit-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+  background-color: #000;
+  height: 100vh;
+  width: 100vw;
+}
+/* #endif */

+ 209 - 9
dist/app.js

@@ -1,9 +1,12 @@
 "use strict";
 require("./prebundle/vendors-node_modules_taro_weapp_prebundle_react-dom_js.js");
 require("./prebundle/vendors-node_modules_taro_weapp_prebundle_chunk-3EXGJ5BE_js.js");
+require("./prebundle/vendors-node_modules_taro_weapp_prebundle_i18next_js.js");
 require("./prebundle/vendors-node_modules_taro_weapp_prebundle_chunk-77KB62LY_js.js");
+require("./prebundle/vendors-node_modules_taro_weapp_prebundle_react-i18next_js.js");
 require("./prebundle/vendors-node_modules_taro_weapp_prebundle_tarojs_plugin-framework-react_dist_runtime_js.js");
 require("./prebundle/vendors-node_modules_taro_weapp_prebundle_tarojs_taro_js.js");
+require("./prebundle/vendors-node_modules_taro_weapp_prebundle_i18next-browser-languagedetector_js.js");
 require("./prebundle/node_modules_taro_weapp_prebundle_tarojs_runtime_js.js");
 require("./prebundle/vendors-node_modules_taro_weapp_prebundle_tarojs_plugin-platform-weapp_dist_runtime_js.js");
 require("./prebundle/vendors-node_modules_taro_weapp_prebundle_chunk-LNJCN3VW_js.js");
@@ -24,12 +27,14 @@ require("./runtime");
   \*****************************************************************************************/
 /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
-/* harmony import */ var _Users_Work_hola2_node_modules_babel_runtime_helpers_esm_classCallCheck_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js */ "./node_modules/@babel/runtime/helpers/esm/classCallCheck.js");
-/* harmony import */ var _Users_Work_hola2_node_modules_babel_runtime_helpers_esm_createClass_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/createClass.js */ "./node_modules/@babel/runtime/helpers/esm/createClass.js");
-/* harmony import */ var _Users_Work_hola2_node_modules_babel_runtime_helpers_esm_inherits_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/inherits.js */ "./node_modules/@babel/runtime/helpers/esm/inherits.js");
-/* harmony import */ var _Users_Work_hola2_node_modules_babel_runtime_helpers_esm_createSuper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/createSuper.js */ "./node_modules/@babel/runtime/helpers/esm/createSuper.js");
+/* harmony import */ var _Users_Work_taro_node_modules_babel_runtime_helpers_esm_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js */ "./node_modules/@babel/runtime/helpers/esm/classCallCheck.js");
+/* harmony import */ var _Users_Work_taro_node_modules_babel_runtime_helpers_esm_createClass_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/createClass.js */ "./node_modules/@babel/runtime/helpers/esm/createClass.js");
+/* harmony import */ var _Users_Work_taro_node_modules_babel_runtime_helpers_esm_inherits_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/inherits.js */ "./node_modules/@babel/runtime/helpers/esm/inherits.js");
+/* harmony import */ var _Users_Work_taro_node_modules_babel_runtime_helpers_esm_createSuper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/createSuper.js */ "./node_modules/@babel/runtime/helpers/esm/createSuper.js");
 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/container/remote/react");
 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _context_locales_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./context/locales/index */ "./src/context/locales/index.ts");
+
 
 
 
@@ -37,13 +42,13 @@ require("./runtime");
 
 
 var App = /*#__PURE__*/function (_Component) {
-  (0,_Users_Work_hola2_node_modules_babel_runtime_helpers_esm_inherits_js__WEBPACK_IMPORTED_MODULE_1__["default"])(App, _Component);
-  var _super = (0,_Users_Work_hola2_node_modules_babel_runtime_helpers_esm_createSuper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(App);
+  (0,_Users_Work_taro_node_modules_babel_runtime_helpers_esm_inherits_js__WEBPACK_IMPORTED_MODULE_2__["default"])(App, _Component);
+  var _super = (0,_Users_Work_taro_node_modules_babel_runtime_helpers_esm_createSuper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(App);
   function App() {
-    (0,_Users_Work_hola2_node_modules_babel_runtime_helpers_esm_classCallCheck_js__WEBPACK_IMPORTED_MODULE_3__["default"])(this, App);
+    (0,_Users_Work_taro_node_modules_babel_runtime_helpers_esm_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4__["default"])(this, App);
     return _super.apply(this, arguments);
   }
-  (0,_Users_Work_hola2_node_modules_babel_runtime_helpers_esm_createClass_js__WEBPACK_IMPORTED_MODULE_4__["default"])(App, [{
+  (0,_Users_Work_taro_node_modules_babel_runtime_helpers_esm_createClass_js__WEBPACK_IMPORTED_MODULE_5__["default"])(App, [{
     key: "componentDidMount",
     value: function componentDidMount() {}
   }, {
@@ -96,7 +101,7 @@ var App = /*#__PURE__*/function (_Component) {
 
 
 
-var config = {"pages":["pages/index/index","pages/Second","pages/Login","pages/Auth"],"subPackages":[{"root":"moduleA","pages":["pages/third"]}],"tabBar":{"list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/Second","text":"第二页"}]},"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor":"#000000","navigationBarTitleText":"Weixin","navigationBarTextStyle":"white","backgroundColor":"#000000"},"darkmode":true};
+var config = {"pages":["pages/index/index","pages/Second","pages/Login","pages/Auth","pages/ChooseAuth","pages/ChooseScenario","pages/SetGoal"],"subPackages":[{"root":"moduleA","pages":["pages/third"]}],"tabBar":{"list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/Second","text":"第二页"}]},"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor":"#000000","navigationBarTitleText":"Weixin","navigationBarTextStyle":"white","backgroundColor":"#000000"},"darkmode":true};
 _tarojs_runtime__WEBPACK_IMPORTED_MODULE_1__.window.__taroAppConfig = config
 var inst = App((0,_tarojs_plugin_framework_react_dist_runtime__WEBPACK_IMPORTED_MODULE_2__.createReactApp)(_node_modules_babel_loader_lib_index_js_ruleSet_1_rules_5_use_0_app_ts__WEBPACK_IMPORTED_MODULE_4__["default"], react__WEBPACK_IMPORTED_MODULE_5__, (react_dom__WEBPACK_IMPORTED_MODULE_6___default()), config))
 
@@ -109,6 +114,201 @@ var inst = App((0,_tarojs_plugin_framework_react_dist_runtime__WEBPACK_IMPORTED_
 })
 
 
+/***/ }),
+
+/***/ "./src/context/locales/en.js":
+/*!***********************************!*\
+  !*** ./src/context/locales/en.js ***!
+  \***********************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__) {
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  languageList: {
+    switch_language: 'Switch Language',
+    zh: 'Chinese',
+    en: 'English'
+  },
+  page: {
+    choose_language: {
+      title: '',
+      sub_title: '',
+      btn_confirm: ''
+    },
+    choose_auth: {
+      app_name: '',
+      btn_create_account: '',
+      btn_login: '登录',
+      btn_wechat: '微信登录'
+    },
+    auth: {
+      agreement: 'I agree to the Terms of Service and Privacy Policy.'
+    },
+    choose_scenario: {
+      title: 'Choose scenario',
+      sub_title: 'A scenario clock will display on homepage',
+      btn_next: 'Next',
+      btn_more: 'Learn more',
+      fast: 'Fast',
+      sleep: 'Sleep',
+      fast_sleep: 'Fast Sleep'
+    },
+    set_goal: {
+      title: '',
+      btn_done: ''
+    }
+  },
+  feature: {
+    auth: {
+      create_account: {
+        title: 'Create Account',
+        sub_title: 'Enter username and email',
+        input_username_placeholder: 'Username',
+        input_email_placeholder: 'Email',
+        footer_desc: 'Already have an account? ',
+        footer_login: 'Log in',
+        btn_next: 'Next'
+      },
+      login: {
+        input_account_placeholder: '',
+        input_password_placeholder: '',
+        footer_desc: '',
+        footer_sign_up: ''
+      },
+      create_password: {
+        title: '',
+        sub_title: '',
+        input_password_placeholder: '',
+        input_password_confirm_placeholder: '',
+        btn_next: ''
+      }
+    }
+  }
+});
+
+/***/ }),
+
+/***/ "./src/context/locales/index.ts":
+/*!**************************************!*\
+  !*** ./src/context/locales/index.ts ***!
+  \**************************************/
+/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
+
+/* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tarojs/taro */ "webpack/container/remote/@tarojs/taro");
+/* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tarojs_taro__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! i18next-browser-languagedetector */ "webpack/container/remote/i18next-browser-languagedetector");
+/* harmony import */ var i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! i18next */ "webpack/container/remote/i18next");
+/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(i18next__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _zh__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./zh */ "./src/context/locales/zh.js");
+/* harmony import */ var _en__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./en */ "./src/context/locales/en.js");
+/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-i18next */ "webpack/container/remote/react-i18next");
+/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_5__);
+
+
+
+
+
+
+_tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getStorage({
+  key: 'language'
+}).then(function (res) {
+  // initLocale(res.data)
+  initLocale('zh');
+}).catch(function (err) {
+  initLocale('zh');
+});
+function initLocale(strLocale) {
+  i18next__WEBPACK_IMPORTED_MODULE_2___default().use((i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_1___default())) //嗅探当前浏览器语言
+  .use(react_i18next__WEBPACK_IMPORTED_MODULE_5__.initReactI18next) //init i18next
+  .init({
+    //引入资源文件
+    resources: {
+      en: {
+        translation: _en__WEBPACK_IMPORTED_MODULE_4__["default"]
+      },
+      zh: {
+        translation: _zh__WEBPACK_IMPORTED_MODULE_3__["default"]
+      }
+    },
+    //选择默认语言,选择内容为上述配置中的key,即en/zh
+    lng: strLocale,
+    //Taro.getStorageSync('language') ? Taro.getStorageSync('language') : 'en',
+    debug: false,
+    interpolation: {
+      escapeValue: false // not needed for react as it escapes by default
+    }
+  });
+}
+
+/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ((i18next__WEBPACK_IMPORTED_MODULE_2___default()));
+
+/***/ }),
+
+/***/ "./src/context/locales/zh.js":
+/*!***********************************!*\
+  !*** ./src/context/locales/zh.js ***!
+  \***********************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__) {
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  languageList: {
+    switch_language: '切换语言',
+    zh: '中文',
+    en: '英文'
+  },
+  page: {
+    choose_language: {
+      title: '',
+      sub_title: '',
+      btn_confirm: ''
+    },
+    choose_auth: {
+      app_name: '',
+      btn_create_account: '',
+      btn_login: '登录',
+      btn_wechat: '微信登录'
+    },
+    auth: {
+      agreement: '已阅读并同意《用户协议》和《隐私政策》'
+    },
+    choose_scenario: {
+      title: '选择场景',
+      sub_title: '场景时钟将在首页展示',
+      btn_next: '下一步',
+      btn_more: '了解更多',
+      fast: '断食',
+      sleep: '睡眠',
+      fast_sleep: '断食睡眠'
+    }
+  },
+  feature: {
+    auth: {
+      create_account: {
+        title: '注册账号',
+        sub_title: '创建用户名',
+        input_username_placeholder: '用户名',
+        input_email_placeholder: '邮箱',
+        footer_desc: '已有账号?',
+        footer_login: '去登录',
+        btn_next: '下一步'
+      },
+      login: {
+        input_account_placeholder: '',
+        input_password_placeholder: '',
+        footer_desc: '',
+        footer_sign_up: ''
+      },
+      create_password: {
+        title: '',
+        sub_title: '',
+        input_password_placeholder: '',
+        input_password_confirm_placeholder: '',
+        btn_next: ''
+      }
+    }
+  }
+});
+
 /***/ }),
 
 /***/ "./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js":

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/app.js.map


+ 1 - 1
dist/app.json

@@ -1 +1 @@
-{"pages":["pages/index/index","pages/Second","pages/Login","pages/Auth"],"subPackages":[{"root":"moduleA","pages":["pages/third"]}],"tabBar":{"list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/Second","text":"第二页"}]},"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor":"#000000","navigationBarTitleText":"Weixin","navigationBarTextStyle":"white","backgroundColor":"#000000"},"darkmode":true}
+{"pages":["pages/index/index","pages/Second","pages/Login","pages/Auth","pages/ChooseAuth","pages/ChooseScenario","pages/SetGoal"],"subPackages":[{"root":"moduleA","pages":["pages/third"]}],"tabBar":{"list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/Second","text":"第二页"}]},"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor":"#000000","navigationBarTitleText":"Weixin","navigationBarTextStyle":"white","backgroundColor":"#000000"},"darkmode":true}

+ 180 - 26
dist/common.js

@@ -10,7 +10,7 @@
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
 /* harmony export */   "default": function() { return /* binding */ Buttons; }
 /* harmony export */ });
-/* harmony import */ var _Users_Work_hola2_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js */ "./node_modules/@babel/runtime/helpers/esm/objectSpread2.js");
+/* harmony import */ var _Users_Work_taro_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js */ "./node_modules/@babel/runtime/helpers/esm/objectSpread2.js");
 /* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
 /* harmony import */ var _utils_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/types */ "./src/utils/types.ts");
 /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
@@ -25,7 +25,7 @@ function Buttons(props) {
     opacity: 0.4
   } : {};
   return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_2__.View, {
-    style: (0,_Users_Work_hola2_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_Users_Work_hola2_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_3__["default"])({}, myStyle), props.style),
+    style: (0,_Users_Work_taro_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_Users_Work_taro_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_3__["default"])({}, myStyle), props.style),
     children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_2__.Button, {
       className: props.type == _utils_types__WEBPACK_IMPORTED_MODULE_0__.ButtonType.outline ? 'outline_btn' : 'btn',
       onClick: props.onClick,
@@ -62,40 +62,93 @@ function Rings(props) {
   var strokeWidth = props.strokeWidth || 10;
   var color = props.color || 'orange';
   var canvasRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
-  var canvasId = 'progress-canvas';
+  var canvasId = props.canvasId ? 'canvas_' + props.canvasId : 'progress-canvas';
   var dpr = _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getSystemInfoSync().pixelRatio; // 获取设备的像素比
   var radius = r * dpr; // 圆形进度条的半径
   var lineWidth = strokeWidth * dpr; // 圆形进度条的线宽
 
+  (0,_tarojs_taro__WEBPACK_IMPORTED_MODULE_0__.useDidShow)(function () {
+    // drawCircle()
+  });
+  (0,_tarojs_taro__WEBPACK_IMPORTED_MODULE_0__.useReady)(function () {
+    setTimeout(function () {
+      drawCircle();
+    }, 500);
+  });
+  function drawCircle() {
+    var query = _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().createSelectorQuery();
+    query.select(".".concat(canvasId)).fields({
+      node: true,
+      size: true
+    });
+    query.exec(function (res) {
+      var ctx = res[0].node.getContext('2d');
+      // const ctx = Taro.createCanvasContext(canvasId);
+
+      var center = radius + lineWidth / 2; // 圆心坐标
+
+      // 设置画布尺寸
+      ctx.scale(1 / dpr, 1 / dpr);
+
+      // 绘制背景圆
+      ctx.beginPath();
+      ctx.arc(center, center, radius, 0, 2 * Math.PI);
+      ctx.lineWith = lineWidth;
+      ctx.strokeStyle = 'lightgray';
+      ctx.lineCap = 'round'; // 设置为圆角
+      ctx.stroke();
+
+      // 绘制进度圆
+      ctx.beginPath();
+      ctx.arc(center, center, radius, -Math.PI / 2 + 1, 2 * Math.PI * progress - Math.PI / 2);
+      ctx.lineWith = lineWidth;
+      ctx.strokeStyle = color;
+      ctx.lineCap = 'round'; // 设置为圆角
+      ctx.stroke();
+
+      // ctx.draw();
+    });
+  }
+
   (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {
-    var ctx = _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().createCanvasContext(canvasId);
-    var center = radius + lineWidth / 2; // 圆心坐标
-
-    // 设置画布尺寸
-    ctx.scale(1 / dpr, 1 / dpr);
-
-    // 绘制背景圆
-    ctx.beginPath();
-    ctx.arc(center, center, radius, 0, 2 * Math.PI);
-    ctx.setLineWidth(lineWidth);
-    ctx.setStrokeStyle('lightgray');
-    ctx.setLineCap('round'); // 设置为圆角
-    ctx.stroke();
-
-    // 绘制进度圆
-    ctx.beginPath();
-    ctx.arc(center, center, radius, -Math.PI / 2 + 1, 2 * Math.PI * progress - Math.PI / 2);
-    ctx.setLineWidth(lineWidth);
-    ctx.setStrokeStyle(color);
-    ctx.setLineCap('round'); // 设置为圆角
-    ctx.stroke();
-    ctx.draw();
+    // setTimeout(()=>{
+    //     drawCircle()
+    // },500)
+
+    // const ctx = Taro.createCanvasContext(canvasId);
+
+    // const center = radius + lineWidth / 2; // 圆心坐标
+
+    // // 设置画布尺寸
+    // ctx.scale(1 / dpr, 1 / dpr);
+
+    // // 绘制背景圆
+    // ctx.beginPath();
+    // ctx.arc(center, center, radius, 0, 2 * Math.PI);
+    // ctx.setLineWidth(lineWidth);
+    // ctx.setStrokeStyle('lightgray');
+    // ctx.setLineCap('round'); // 设置为圆角
+    // ctx.stroke();
+
+    // // 绘制进度圆
+    // ctx.beginPath();
+    // ctx.arc(center, center, radius, -Math.PI / 2 + 1, (2 * Math.PI * progress) - Math.PI / 2);
+    // ctx.setLineWidth(lineWidth);
+    // ctx.setStrokeStyle(color);
+    // ctx.setLineCap('round'); // 设置为圆角
+    // ctx.stroke();
+
+    // ctx.draw();
   }, [progress]);
   return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_3__.Canvas, {
     canvasId: canvasId,
+    id: canvasId,
+    className: canvasId,
+    type: "2d",
     style: {
       width: (radius * 2 + lineWidth) / dpr,
-      height: (radius * 2 + lineWidth) / dpr
+      height: (radius * 2 + lineWidth) / dpr,
+      zIndex: 0
     },
     ref: canvasRef
   });
@@ -103,6 +156,106 @@ function Rings(props) {
 
 /***/ }),
 
+/***/ "./src/components/SingleSelect.tsx":
+/*!*****************************************!*\
+  !*** ./src/components/SingleSelect.tsx ***!
+  \*****************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   "default": function() { return /* binding */ Component; }
+/* harmony export */ });
+/* harmony import */ var _Users_Work_taro_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js */ "./node_modules/@babel/runtime/helpers/esm/slicedToArray.js");
+/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
+/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/container/remote/react");
+/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _assets_svg_check_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../assets/svg/check.svg */ "./src/assets/svg/check.svg");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__);
+
+
+
+
+
+
+
+function Component(props) {
+  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(-1),
+    _useState2 = (0,_Users_Work_taro_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_useState, 2),
+    selIndex = _useState2[0],
+    setSelIndex = _useState2[1];
+  function isString(variable) {
+    return typeof variable === 'string';
+  }
+  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_4__.View, {
+    children: props.items.map(function (item, index) {
+      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_4__.View, {
+        className: selIndex == index ? 'item item_select' : 'item',
+        onClick: function onClick() {
+          return setSelIndex(index);
+        },
+        children: [isString(item) ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_4__.Text, {
+          style: {
+            color: '#fff'
+          },
+          children: item
+        }) : item, selIndex == index ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_4__.Image, {
+          style: "width:12px;height:12px;",
+          src: _assets_svg_check_svg__WEBPACK_IMPORTED_MODULE_1__
+        }) : null]
+      }, index);
+    })
+  });
+}
+
+/***/ }),
+
+/***/ "./src/components/Texts.tsx":
+/*!**********************************!*\
+  !*** ./src/components/Texts.tsx ***!
+  \**********************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   "default": function() { return /* binding */ Component; }
+/* harmony export */ });
+/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
+/* harmony import */ var _utils_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/types */ "./src/utils/types.ts");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
+
+
+
+
+function Component(props) {
+  function render() {
+    switch (props.type) {
+      case _utils_types__WEBPACK_IMPORTED_MODULE_0__.TextType.primary:
+        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_2__.Text, {
+          className: "primary",
+          children: props.text
+        });
+      case _utils_types__WEBPACK_IMPORTED_MODULE_0__.TextType.secondary:
+        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_2__.Text, {
+          className: "secondary",
+          children: props.text
+        });
+      case _utils_types__WEBPACK_IMPORTED_MODULE_0__.TextType.big:
+        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_2__.Text, {
+          className: "big",
+          children: props.text
+        });
+      default:
+        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_2__.Text, {
+          children: props.text
+        });
+    }
+  }
+  return render();
+}
+
+/***/ }),
+
 /***/ "./src/utils/types.ts":
 /*!****************************!*\
   !*** ./src/utils/types.ts ***!
@@ -122,6 +275,7 @@ var ButtonType = /*#__PURE__*/function (ButtonType) {
 var TextType = /*#__PURE__*/function (TextType) {
   TextType["primary"] = "primary";
   TextType["secondary"] = "secondary";
+  TextType["big"] = "big";
   return TextType;
 }({});
 var ComponentStatus = /*#__PURE__*/function (ComponentStatus) {

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/common.js.map


+ 53 - 0
dist/common.wxss

@@ -25,3 +25,56 @@
 .outline_btn::after {
   border: none;
 }
+/*!************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[4]!./src/components/Texts.scss ***!
+  \************************************************************************************************************************************************************************************************************************************************************************************************************************/
+.primary {
+  color: #fff;
+  margin-top: 24rpx;
+  margin: 24rpx 46rpx 40rpx 46rpx;
+  font-size: 72rpx;
+  line-height: 72rpx;
+  font-weight: 700;
+}
+
+.secondary {
+  color: rgba(255, 255, 255, 0.4);
+  margin: 0 46rpx 40rpx 46rpx;
+  font-size: 40rpx;
+  line-height: 40rpx;
+  font-weight: 400;
+}
+
+.big {
+  color: #fff;
+  font-weight: 600;
+  font-size: 104rpx;
+  line-height: 104rpx;
+}
+/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[4]!./src/components/SingleSelect.scss ***!
+  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************/
+.item {
+  margin: 0 46rpx 40rpx 46rpx;
+  background-color: #1C1C1C;
+  border: solid 4rpx #1C1C1C;
+  border-radius: 36rpx;
+  padding: 40rpx;
+  color: #fff;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-flex-direction: row;
+      -ms-flex-direction: row;
+          flex-direction: row;
+  -webkit-align-items: center;
+      -ms-flex-align: center;
+          align-items: center;
+  -webkit-justify-content: space-between;
+      -ms-flex-pack: justify;
+          justify-content: space-between;
+}
+
+.item_select {
+  border: solid 4rpx #AAFF00;
+}

+ 35 - 71
dist/pages/Auth.js

@@ -67,7 +67,7 @@ function Component(props) {
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
 /* harmony export */   "default": function() { return /* binding */ Component; }
 /* harmony export */ });
-/* harmony import */ var _Users_Work_hola2_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js */ "./node_modules/@babel/runtime/helpers/esm/slicedToArray.js");
+/* harmony import */ var _Users_Work_taro_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js */ "./node_modules/@babel/runtime/helpers/esm/slicedToArray.js");
 /* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/container/remote/react");
 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
@@ -80,7 +80,7 @@ function Component(props) {
 
 function Component(props) {
   var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
-    _useState2 = (0,_Users_Work_hola2_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_useState, 2),
+    _useState2 = (0,_Users_Work_taro_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_useState, 2),
     isFocus = _useState2[0],
     setIsFocus = _useState2[1];
   return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_3__.View, {
@@ -99,47 +99,6 @@ function Component(props) {
 
 /***/ }),
 
-/***/ "./src/components/Texts.tsx":
-/*!**********************************!*\
-  !*** ./src/components/Texts.tsx ***!
-  \**********************************/
-/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
-
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */   "default": function() { return /* binding */ Component; }
-/* harmony export */ });
-/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
-/* harmony import */ var _utils_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/types */ "./src/utils/types.ts");
-/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
-/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
-
-
-
-
-function Component(props) {
-  function render() {
-    switch (props.type) {
-      case _utils_types__WEBPACK_IMPORTED_MODULE_0__.TextType.primary:
-        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_2__.Text, {
-          className: "primary",
-          children: props.text
-        });
-      case _utils_types__WEBPACK_IMPORTED_MODULE_0__.TextType.secondary:
-        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_2__.Text, {
-          className: "secondary",
-          children: props.text
-        });
-      default:
-        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_2__.Text, {
-          children: props.text
-        });
-    }
-  }
-  return render();
-}
-
-/***/ }),
-
 /***/ "./src/features/auth/components/Auth.tsx":
 /*!***********************************************!*\
   !*** ./src/features/auth/components/Auth.tsx ***!
@@ -149,15 +108,18 @@ function Component(props) {
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
 /* harmony export */   "default": function() { return /* binding */ Auth; }
 /* harmony export */ });
-/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
+/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
 /* harmony import */ var _components_Texts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @components/Texts */ "./src/components/Texts.tsx");
-/* harmony import */ var _utils_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../utils/types */ "./src/utils/types.ts");
+/* harmony import */ var _utils_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @utils/types */ "./src/utils/types.ts");
 /* harmony import */ var _components_Box__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @components/Box */ "./src/components/Box.tsx");
 /* harmony import */ var _components_Inputs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @components/Inputs */ "./src/components/Inputs.tsx");
 /* harmony import */ var _components_Buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @components/Buttons */ "./src/components/Buttons.tsx");
 /* harmony import */ var _assets_svg_check_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @assets/svg/check.svg */ "./src/assets/svg/check.svg");
-/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
-/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
+/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-i18next */ "webpack/container/remote/react-i18next");
+/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_6__);
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
+
 
 
 
@@ -169,21 +131,23 @@ function Component(props) {
 
 
 function Auth() {
+  var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_6__.useTranslation)(),
+    t = _useTranslation.t;
   function loginComponent() {
-    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, {
-      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_components_Inputs__WEBPACK_IMPORTED_MODULE_3__["default"], {
-        placeholder: "Username"
-      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, {
+    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
+      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Inputs__WEBPACK_IMPORTED_MODULE_3__["default"], {
+        placeholder: t('feature.auth.create_account.input_username_placeholder')
+      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
         style: {
           height: 20
         }
-      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_components_Inputs__WEBPACK_IMPORTED_MODULE_3__["default"], {
-        placeholder: "Password"
+      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Inputs__WEBPACK_IMPORTED_MODULE_3__["default"], {
+        placeholder: t('feature.auth.create_account.input_email_placeholder')
       })]
     });
   }
   function register() {}
-  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, {
+  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
     style: {
       backgroundColor: '#000',
       flex: 1,
@@ -191,16 +155,16 @@ function Auth() {
       display: 'flex',
       height: '100vh'
     },
-    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_components_Texts__WEBPACK_IMPORTED_MODULE_0__["default"], {
-      text: "Create account",
+    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Texts__WEBPACK_IMPORTED_MODULE_0__["default"], {
+      text: t('feature.auth.create_account.title'),
       type: _utils_types__WEBPACK_IMPORTED_MODULE_1__.TextType.primary
-    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_components_Texts__WEBPACK_IMPORTED_MODULE_0__["default"], {
-      text: "Claim your username now!",
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Texts__WEBPACK_IMPORTED_MODULE_0__["default"], {
+      text: t('feature.auth.create_account.sub_title'),
       type: _utils_types__WEBPACK_IMPORTED_MODULE_1__.TextType.secondary
-    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_components_Box__WEBPACK_IMPORTED_MODULE_2__["default"], {
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Box__WEBPACK_IMPORTED_MODULE_2__["default"], {
       child: loginComponent()
-    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_components_Buttons__WEBPACK_IMPORTED_MODULE_4__["default"], {
-      title: "Next",
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Buttons__WEBPACK_IMPORTED_MODULE_4__["default"], {
+      title: t('feature.auth.create_account.btn_next'),
       style: {
         marginLeft: 23,
         marginRight: 23,
@@ -208,27 +172,27 @@ function Auth() {
         marginBottom: 20
       },
       status: _utils_types__WEBPACK_IMPORTED_MODULE_1__.ComponentStatus.disable
-    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, {
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
       className: "agree_view",
-      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Image, {
+      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.Image, {
         style: "width:12px;height:12px;",
         src: _assets_svg_check_svg__WEBPACK_IMPORTED_MODULE_5__
-      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, {
+      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.Text, {
         className: "agree_text",
-        children: "I agree to the Terms of Service and Privacy Policy."
+        children: t('page.auth.agreement')
       })]
-    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, {
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
       style: {
         flex: 1
       }
-    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, {
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
       className: "footer",
-      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, {
+      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.Text, {
         className: "have_account",
-        children: "Already have an account?"
-      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, {
+        children: t('feature.auth.create_account.footer_desc')
+      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.Text, {
         className: "login",
-        children: "Login"
+        children: t('feature.auth.create_account.footer_login')
       })]
     })]
   });

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/pages/Auth.js.map


+ 0 - 19
dist/pages/Auth.wxss

@@ -1,22 +1,3 @@
-/*!************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
-  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[4]!./src/components/Texts.scss ***!
-  \************************************************************************************************************************************************************************************************************************************************************************************************************************/
-.primary {
-  color: #fff;
-  margin-top: 24rpx;
-  margin: 24rpx 46rpx 40rpx 46rpx;
-  font-size: 72rpx;
-  line-height: 72rpx;
-  font-weight: 700;
-}
-
-.secondary {
-  color: rgba(255, 255, 255, 0.4);
-  margin: 0 46rpx 40rpx 46rpx;
-  font-size: 40rpx;
-  line-height: 40rpx;
-  font-weight: 400;
-}
 /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
   !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[4]!./src/components/Box.scss ***!
   \**********************************************************************************************************************************************************************************************************************************************************************************************************************/

+ 77 - 0
dist/pages/ChooseAuth.js

@@ -0,0 +1,77 @@
+"use strict";
+(wx["webpackJsonp"] = wx["webpackJsonp"] || []).push([["pages/ChooseAuth"],{
+
+/***/ "./node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./src/pages/ChooseAuth.tsx":
+/*!*******************************************************************************************************!*\
+  !*** ./node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./src/pages/ChooseAuth.tsx ***!
+  \*******************************************************************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   "default": function() { return /* binding */ Page; }
+/* harmony export */ });
+/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
+/* harmony import */ var _components_Buttons__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @components/Buttons */ "./src/components/Buttons.tsx");
+/* harmony import */ var _components_Texts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @components/Texts */ "./src/components/Texts.tsx");
+/* harmony import */ var _utils_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/types */ "./src/utils/types.ts");
+/* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tarojs/taro */ "webpack/container/remote/@tarojs/taro");
+/* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_tarojs_taro__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
+
+
+
+
+
+
+
+function Page() {
+  function login() {
+    _tarojs_taro__WEBPACK_IMPORTED_MODULE_3___default().navigateTo({
+      url: '/pages/ChooseScenario'
+    });
+  }
+  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_5__.View, {
+    className: "container",
+    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_components_Texts__WEBPACK_IMPORTED_MODULE_1__["default"], {
+      text: "App name",
+      type: _utils_types__WEBPACK_IMPORTED_MODULE_2__.TextType.big
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_components_Buttons__WEBPACK_IMPORTED_MODULE_0__["default"], {
+      title: "Login",
+      onClick: login
+    })]
+  });
+}
+
+/***/ }),
+
+/***/ "./src/pages/ChooseAuth.tsx":
+/*!**********************************!*\
+  !*** ./src/pages/ChooseAuth.tsx ***!
+  \**********************************/
+/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
+
+/* harmony import */ var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tarojs/runtime */ "webpack/container/remote/@tarojs/runtime");
+/* harmony import */ var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _node_modules_babel_loader_lib_index_js_ruleSet_1_rules_5_use_0_ChooseAuth_tsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./ChooseAuth.tsx */ "./node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./src/pages/ChooseAuth.tsx");
+
+
+var config = {};
+
+
+var inst = Page((0,_tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__.createPageConfig)(_node_modules_babel_loader_lib_index_js_ruleSet_1_rules_5_use_0_ChooseAuth_tsx__WEBPACK_IMPORTED_MODULE_1__["default"], 'pages/ChooseAuth', {root:{cn:[]}}, config || {}))
+
+
+/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_ruleSet_1_rules_5_use_0_ChooseAuth_tsx__WEBPACK_IMPORTED_MODULE_1__["default"]);
+
+
+/***/ })
+
+},
+/******/ function(__webpack_require__) { // webpackRuntimeModules
+/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
+/******/ __webpack_require__.O(0, ["taro","vendors","common"], function() { return __webpack_exec__("./src/pages/ChooseAuth.tsx"); });
+/******/ var __webpack_exports__ = __webpack_require__.O();
+/******/ }
+]);
+//# sourceMappingURL=ChooseAuth.js.map

+ 1 - 0
dist/pages/ChooseAuth.js.map

@@ -0,0 +1 @@
+{"version":3,"file":"pages/ChooseAuth.js","mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://hola/._src_pages_ChooseAuth.tsx","webpack://hola/./src/pages/ChooseAuth.tsx?7bbe"],"sourcesContent":["import { View } from \"@tarojs/components\";\nimport Buttons from '@components/Buttons'\nimport Texts from '@components/Texts'\n\nimport { ButtonType, ComponentStatus, TextType } from \"../utils/types\";\nimport Taro from \"@tarojs/taro\";\n\nexport default function Page() {\n\n    function login() {\n        Taro.navigateTo({\n            url: '/pages/ChooseScenario'\n        })\n    }\n\n    return <View className=\"container\">\n        <Texts text='App name' type={TextType.big} />\n        <Buttons title='Login' onClick={login} />\n    </View>;\n}","import { createPageConfig } from '@tarojs/runtime'\nimport component from \"../../node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./ChooseAuth.tsx\"\nvar config = {};\n\n\nvar inst = Page(createPageConfig(component, 'pages/ChooseAuth', {root:{cn:[]}}, config || {}))\n\n\nexport default component\n"],"names":[],"sourceRoot":""}

+ 1 - 0
dist/pages/ChooseAuth.json

@@ -0,0 +1 @@
+{"usingComponents":{"comp":"../comp"}}

+ 2 - 0
dist/pages/ChooseAuth.wxml

@@ -0,0 +1,2 @@
+<import src="../base.wxml"/>
+<template is="taro_tmpl" data="{{root:root}}" />

+ 205 - 0
dist/pages/ChooseScenario.js

@@ -0,0 +1,205 @@
+"use strict";
+(wx["webpackJsonp"] = wx["webpackJsonp"] || []).push([["pages/ChooseScenario"],{
+
+/***/ "./node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./src/pages/ChooseScenario.tsx":
+/*!***********************************************************************************************************!*\
+  !*** ./node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./src/pages/ChooseScenario.tsx ***!
+  \***********************************************************************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   "default": function() { return /* binding */ Page; }
+/* harmony export */ });
+/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
+/* harmony import */ var _features_trackTimeDuration_components_ChooseScenario__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @features/trackTimeDuration/components/ChooseScenario */ "./src/features/trackTimeDuration/components/ChooseScenario.tsx");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
+
+
+
+function Page() {
+  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_2__.View, {
+    className: "container",
+    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_features_trackTimeDuration_components_ChooseScenario__WEBPACK_IMPORTED_MODULE_0__["default"], {})
+  });
+}
+
+/***/ }),
+
+/***/ "./src/components/Footer.tsx":
+/*!***********************************!*\
+  !*** ./src/components/Footer.tsx ***!
+  \***********************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   "default": function() { return /* binding */ Component; }
+/* harmony export */ });
+/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
+
+
+
+function Component(props) {
+  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_1__.View, {
+    className: "footer1",
+    children: props.child
+  });
+}
+
+/***/ }),
+
+/***/ "./src/features/trackTimeDuration/components/ChooseScenario.tsx":
+/*!**********************************************************************!*\
+  !*** ./src/features/trackTimeDuration/components/ChooseScenario.tsx ***!
+  \**********************************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   "default": function() { return /* binding */ Component; }
+/* harmony export */ });
+/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
+/* harmony import */ var _components_Buttons__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @components/Buttons */ "./src/components/Buttons.tsx");
+/* harmony import */ var _components_Texts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @components/Texts */ "./src/components/Texts.tsx");
+/* harmony import */ var _components_Rings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../components/Rings */ "./src/components/Rings.weapp.tsx");
+/* harmony import */ var _components_Footer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @components/Footer */ "./src/components/Footer.tsx");
+/* harmony import */ var _components_SingleSelect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../components/SingleSelect */ "./src/components/SingleSelect.tsx");
+/* harmony import */ var _utils_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @utils/types */ "./src/utils/types.ts");
+/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-i18next */ "webpack/container/remote/react-i18next");
+/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_6__);
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
+
+
+
+
+
+
+
+
+
+
+function Component() {
+  var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_6__.useTranslation)(),
+    t = _useTranslation.t;
+  function login() {
+    // Taro.navigateTo({
+    //     url: '/pages/ChooseScenario'
+    // })
+  }
+  function footerContent() {
+    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
+      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Buttons__WEBPACK_IMPORTED_MODULE_0__["default"], {
+        title: "Login",
+        onClick: login
+      })
+    });
+  }
+  function items() {
+    var array = [];
+    array.push( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
+      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Rings__WEBPACK_IMPORTED_MODULE_2__["default"], {
+        radius: 33,
+        strokeWidth: 8,
+        color: "#AAFF00",
+        canvasId: "0"
+      })
+    }));
+    array.push( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
+      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Rings__WEBPACK_IMPORTED_MODULE_2__["default"], {
+        radius: 33,
+        strokeWidth: 8,
+        color: "#00FFFF",
+        canvasId: "1"
+      })
+    }));
+    array.push( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
+      style: {
+        position: 'relative',
+        zIndex: 1
+      },
+      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Rings__WEBPACK_IMPORTED_MODULE_2__["default"], {
+        radius: 33,
+        strokeWidth: 8,
+        color: "#AAFF00",
+        canvasId: "3"
+      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
+        style: {
+          display: 'flex',
+          position: 'absolute',
+          left: 0,
+          right: 0,
+          top: 0,
+          bottom: 0,
+          alignItems: 'center',
+          justifyContent: 'center'
+        },
+        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Rings__WEBPACK_IMPORTED_MODULE_2__["default"], {
+          radius: 23,
+          strokeWidth: 6,
+          color: "#00FFFF",
+          canvasId: "4"
+        })
+      })]
+    }));
+    return array;
+  }
+  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
+    className: "container",
+    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Texts__WEBPACK_IMPORTED_MODULE_1__["default"], {
+      text: t('page.choose_scenario.title'),
+      type: _utils_types__WEBPACK_IMPORTED_MODULE_5__.TextType.primary
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Texts__WEBPACK_IMPORTED_MODULE_1__["default"], {
+      text: t('page.choose_scenario.sub_title'),
+      type: _utils_types__WEBPACK_IMPORTED_MODULE_5__.TextType.secondary
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
+      style: {
+        height: 20
+      }
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_8__.View, {
+      style: {
+        position: 'relative',
+        zIndex: 1
+      },
+      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_SingleSelect__WEBPACK_IMPORTED_MODULE_4__["default"], {
+        items: items()
+      })
+    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_components_Footer__WEBPACK_IMPORTED_MODULE_3__["default"], {
+      child: footerContent()
+    })]
+  });
+}
+
+/***/ }),
+
+/***/ "./src/pages/ChooseScenario.tsx":
+/*!**************************************!*\
+  !*** ./src/pages/ChooseScenario.tsx ***!
+  \**************************************/
+/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
+
+/* harmony import */ var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tarojs/runtime */ "webpack/container/remote/@tarojs/runtime");
+/* harmony import */ var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _node_modules_babel_loader_lib_index_js_ruleSet_1_rules_5_use_0_ChooseScenario_tsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./ChooseScenario.tsx */ "./node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./src/pages/ChooseScenario.tsx");
+
+
+var config = {};
+
+
+var inst = Page((0,_tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__.createPageConfig)(_node_modules_babel_loader_lib_index_js_ruleSet_1_rules_5_use_0_ChooseScenario_tsx__WEBPACK_IMPORTED_MODULE_1__["default"], 'pages/ChooseScenario', {root:{cn:[]}}, config || {}))
+
+
+/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_ruleSet_1_rules_5_use_0_ChooseScenario_tsx__WEBPACK_IMPORTED_MODULE_1__["default"]);
+
+
+/***/ })
+
+},
+/******/ function(__webpack_require__) { // webpackRuntimeModules
+/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
+/******/ __webpack_require__.O(0, ["taro","vendors","common"], function() { return __webpack_exec__("./src/pages/ChooseScenario.tsx"); });
+/******/ var __webpack_exports__ = __webpack_require__.O();
+/******/ }
+]);
+//# sourceMappingURL=ChooseScenario.js.map

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/pages/ChooseScenario.js.map


+ 1 - 0
dist/pages/ChooseScenario.json

@@ -0,0 +1 @@
+{"usingComponents":{"comp":"../comp"}}

+ 2 - 0
dist/pages/ChooseScenario.wxml

@@ -0,0 +1,2 @@
+<import src="../base.wxml"/>
+<template is="taro_tmpl" data="{{root:root}}" />

+ 21 - 20
dist/pages/Login.wxss → dist/pages/ChooseScenario.wxss

@@ -1,27 +1,28 @@
-/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
-  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[4]!./src/components/SingleSelect.scss ***!
-  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************/
-.item {
-  margin: 0 46rpx 40rpx 46rpx;
-  background-color: #1C1C1C;
-  border: solid 4rpx #1C1C1C;
-  border-radius: 36rpx;
-  padding: 40rpx;
-  color: #fff;
+/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[4]!./src/components/Footer.scss ***!
+  \*************************************************************************************************************************************************************************************************************************************************************************************************************************/
+@charset "UTF-8";
+.footer1 {
+  position: fixed;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 1000;
+  -webkit-flex-direction: column;
+      -ms-flex-direction: column;
+          flex-direction: column;
   display: -webkit-flex;
   display: -ms-flexbox;
   display: flex;
-  -webkit-flex-direction: row;
-      -ms-flex-direction: row;
-          flex-direction: row;
   -webkit-align-items: center;
       -ms-flex-align: center;
           align-items: center;
-  -webkit-justify-content: space-between;
-      -ms-flex-pack: justify;
-          justify-content: space-between;
-}
-
-.item_select {
-  border: solid 4rpx #AAFF00;
+  padding-top: 46rpx;
+  padding-bottom: constant(safe-area-inset-bottom);
+  /* 兼容 iOS < 11.2 */
+  padding-bottom: env(safe-area-inset-bottom);
+  /* 兼容 iOS >= 11.2 */
+  background: -webkit-gradient(linear, left top, left bottom, from(red), to(blue));
+  background: -webkit-linear-gradient(top, red, blue);
+  background: linear-gradient(180deg, red, blue);
 }

+ 0 - 54
dist/pages/Login.js

@@ -83,60 +83,6 @@ function Login() {
 
 /***/ }),
 
-/***/ "./src/components/SingleSelect.tsx":
-/*!*****************************************!*\
-  !*** ./src/components/SingleSelect.tsx ***!
-  \*****************************************/
-/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
-
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */   "default": function() { return /* binding */ Component; }
-/* harmony export */ });
-/* harmony import */ var _Users_Work_hola2_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js */ "./node_modules/@babel/runtime/helpers/esm/slicedToArray.js");
-/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
-/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/container/remote/react");
-/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _assets_svg_check_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../assets/svg/check.svg */ "./src/assets/svg/check.svg");
-/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
-/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__);
-
-
-
-
-
-
-
-function Component(props) {
-  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(-1),
-    _useState2 = (0,_Users_Work_hola2_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_useState, 2),
-    selIndex = _useState2[0],
-    setSelIndex = _useState2[1];
-  function isString(variable) {
-    return typeof variable === 'string';
-  }
-  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_4__.View, {
-    children: props.items.map(function (item, index) {
-      return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_4__.View, {
-        className: selIndex == index ? 'item item_select' : 'item',
-        onClick: function onClick() {
-          return setSelIndex(index);
-        },
-        children: [isString(item) ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_4__.Text, {
-          style: {
-            color: '#fff'
-          },
-          children: item
-        }) : item, selIndex == index ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_4__.Image, {
-          style: "width:12px;height:12px;",
-          src: _assets_svg_check_svg__WEBPACK_IMPORTED_MODULE_1__
-        }) : null]
-      }, index);
-    })
-  });
-}
-
-/***/ }),
-
 /***/ "./src/pages/Login.tsx":
 /*!*****************************!*\
   !*** ./src/pages/Login.tsx ***!

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/pages/Login.js.map


+ 56 - 0
dist/pages/SetGoal.js

@@ -0,0 +1,56 @@
+"use strict";
+(wx["webpackJsonp"] = wx["webpackJsonp"] || []).push([["pages/SetGoal"],{
+
+/***/ "./node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./src/pages/SetGoal.tsx":
+/*!****************************************************************************************************!*\
+  !*** ./node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./src/pages/SetGoal.tsx ***!
+  \****************************************************************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   "default": function() { return /* binding */ Page; }
+/* harmony export */ });
+/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "webpack/container/remote/react/jsx-runtime");
+/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
+
+
+function Page() {
+  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_1__.View, {
+    className: "container",
+    children: "Page"
+  });
+}
+
+/***/ }),
+
+/***/ "./src/pages/SetGoal.tsx":
+/*!*******************************!*\
+  !*** ./src/pages/SetGoal.tsx ***!
+  \*******************************/
+/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
+
+/* harmony import */ var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tarojs/runtime */ "webpack/container/remote/@tarojs/runtime");
+/* harmony import */ var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _node_modules_babel_loader_lib_index_js_ruleSet_1_rules_5_use_0_SetGoal_tsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./SetGoal.tsx */ "./node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./src/pages/SetGoal.tsx");
+
+
+var config = {};
+
+
+var inst = Page((0,_tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__.createPageConfig)(_node_modules_babel_loader_lib_index_js_ruleSet_1_rules_5_use_0_SetGoal_tsx__WEBPACK_IMPORTED_MODULE_1__["default"], 'pages/SetGoal', {root:{cn:[]}}, config || {}))
+
+
+/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_ruleSet_1_rules_5_use_0_SetGoal_tsx__WEBPACK_IMPORTED_MODULE_1__["default"]);
+
+
+/***/ })
+
+},
+/******/ function(__webpack_require__) { // webpackRuntimeModules
+/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
+/******/ __webpack_require__.O(0, ["taro","common"], function() { return __webpack_exec__("./src/pages/SetGoal.tsx"); });
+/******/ var __webpack_exports__ = __webpack_require__.O();
+/******/ }
+]);
+//# sourceMappingURL=SetGoal.js.map

+ 1 - 0
dist/pages/SetGoal.js.map

@@ -0,0 +1 @@
+{"version":3,"file":"pages/SetGoal.js","mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://hola/._src_pages_SetGoal.tsx","webpack://hola/./src/pages/SetGoal.tsx?e00c"],"sourcesContent":["import { View } from \"@tarojs/components\";\n\nexport default function Page() {\n  return <View className=\"container\">Page</View>;\n}","import { createPageConfig } from '@tarojs/runtime'\nimport component from \"../../node_modules/babel-loader/lib/index.js??ruleSet[1].rules[5].use[0]!./SetGoal.tsx\"\nvar config = {};\n\n\nvar inst = Page(createPageConfig(component, 'pages/SetGoal', {root:{cn:[]}}, config || {}))\n\n\nexport default component\n"],"names":[],"sourceRoot":""}

+ 1 - 0
dist/pages/SetGoal.json

@@ -0,0 +1 @@
+{"usingComponents":{"comp":"../comp"}}

+ 2 - 0
dist/pages/SetGoal.wxml

@@ -0,0 +1,2 @@
+<import src="../base.wxml"/>
+<template is="taro_tmpl" data="{{root:root}}" />

+ 1 - 1
dist/pages/index/index.js

@@ -41,7 +41,7 @@ function IndexPage() {
   }
   function login() {
     _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().navigateTo({
-      url: '/pages/Login'
+      url: '/pages/ChooseAuth'
     });
   }
   return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_3__.View, {

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/pages/index/index.js.map


+ 18 - 0
dist/prebundle/remoteEntry.js

@@ -15,6 +15,15 @@ var moduleMap = {
 	"./@tarojs/taro": function() {
 		return Promise.all([__webpack_require__.e("vendors-node_modules_taro_weapp_prebundle_chunk-77KB62LY_js"), __webpack_require__.e("vendors-node_modules_taro_weapp_prebundle_chunk-3EXGJ5BE_js"), __webpack_require__.e("vendors-node_modules_taro_weapp_prebundle_tarojs_taro_js")]).then(function() { return function() { return (__webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/@tarojs_taro.js */ "./node_modules/.taro/weapp/prebundle/@tarojs_taro.js")); }; });
 	},
+	"./i18next-browser-languagedetector": function() {
+		return Promise.all([__webpack_require__.e("vendors-node_modules_taro_weapp_prebundle_chunk-77KB62LY_js"), __webpack_require__.e("vendors-node_modules_taro_weapp_prebundle_chunk-3EXGJ5BE_js"), __webpack_require__.e("vendors-node_modules_taro_weapp_prebundle_i18next-browser-languagedetector_js")]).then(function() { return function() { return (__webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/i18next-browser-languagedetector.js */ "./node_modules/.taro/weapp/prebundle/i18next-browser-languagedetector.js")); }; });
+	},
+	"./i18next": function() {
+		return __webpack_require__.e("vendors-node_modules_taro_weapp_prebundle_i18next_js").then(function() { return function() { return (__webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/i18next.js */ "./node_modules/.taro/weapp/prebundle/i18next.js")); }; });
+	},
+	"./react-i18next": function() {
+		return Promise.all([__webpack_require__.e("vendors-node_modules_taro_weapp_prebundle_chunk-LNJCN3VW_js"), __webpack_require__.e("vendors-node_modules_taro_weapp_prebundle_react-i18next_js")]).then(function() { return function() { return (__webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/react-i18next.js */ "./node_modules/.taro/weapp/prebundle/react-i18next.js")); }; });
+	},
 	"./react/jsx-runtime": function() {
 		return Promise.all([__webpack_require__.e("vendors-node_modules_taro_weapp_prebundle_chunk-LNJCN3VW_js"), __webpack_require__.e("node_modules_taro_weapp_prebundle_react_jsx-runtime_js")]).then(function() { return function() { return (__webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/react_jsx-runtime.js */ "./node_modules/.taro/weapp/prebundle/react_jsx-runtime.js")); }; });
 	},
@@ -65,6 +74,15 @@ var taroModuleMap = {
 	"./@tarojs/taro": function() {
 		return function() { return (__webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/@tarojs_taro.js */ "./node_modules/.taro/weapp/prebundle/@tarojs_taro.js")); };
 	},
+	"./i18next-browser-languagedetector": function() {
+		return function() { return (__webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/i18next-browser-languagedetector.js */ "./node_modules/.taro/weapp/prebundle/i18next-browser-languagedetector.js")); };
+	},
+	"./i18next": function() {
+		return function() { return (__webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/i18next.js */ "./node_modules/.taro/weapp/prebundle/i18next.js")); };
+	},
+	"./react-i18next": function() {
+		return function() { return (__webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/react-i18next.js */ "./node_modules/.taro/weapp/prebundle/react-i18next.js")); };
+	},
 	"./react/jsx-runtime": function() {
 		return function() { return (__webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/react_jsx-runtime.js */ "./node_modules/.taro/weapp/prebundle/react_jsx-runtime.js")); };
 	},

+ 481 - 0
dist/prebundle/vendors-node_modules_taro_weapp_prebundle_i18next-browser-languagedetector_js.js

@@ -0,0 +1,481 @@
+"use strict";
+(wx["webpackJsonp"] = wx["webpackJsonp"] || []).push([["vendors-node_modules_taro_weapp_prebundle_i18next-browser-languagedetector_js"],{
+
+/***/ "./node_modules/.taro/weapp/prebundle/chunk-SOUSFT7N.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/.taro/weapp/prebundle/chunk-SOUSFT7N.js ***!
+  \**************************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   _classCallCheck: function() { return /* binding */ _classCallCheck; },
+/* harmony export */   _createClass: function() { return /* binding */ _createClass; },
+/* harmony export */   _toPropertyKey: function() { return /* binding */ _toPropertyKey; },
+/* harmony export */   _typeof: function() { return /* binding */ _typeof; },
+/* harmony export */   init_classCallCheck: function() { return /* binding */ init_classCallCheck; },
+/* harmony export */   init_createClass: function() { return /* binding */ init_createClass; },
+/* harmony export */   init_toPropertyKey: function() { return /* binding */ init_toPropertyKey; },
+/* harmony export */   init_typeof: function() { return /* binding */ init_typeof; }
+/* harmony export */ });
+/* harmony import */ var _chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-P7VEE7PG.js */ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js");
+
+// node_modules/@babel/runtime/helpers/esm/classCallCheck.js
+function _classCallCheck(instance, Constructor) {
+    if (!(instance instanceof Constructor)) {
+        throw new TypeError("Cannot call a class as a function");
+    }
+}
+var init_classCallCheck = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__.__esm)({
+    "node_modules/@babel/runtime/helpers/esm/classCallCheck.js" () {}
+});
+// node_modules/@babel/runtime/helpers/esm/typeof.js
+function _typeof(o) {
+    "@babel/helpers - typeof";
+    return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
+        return typeof o2;
+    } : function(o2) {
+        return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
+    }, _typeof(o);
+}
+var init_typeof = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__.__esm)({
+    "node_modules/@babel/runtime/helpers/esm/typeof.js" () {}
+});
+// node_modules/@babel/runtime/helpers/esm/toPrimitive.js
+function _toPrimitive(input, hint) {
+    if (_typeof(input) !== "object" || input === null) return input;
+    var prim = input[Symbol.toPrimitive];
+    if (prim !== void 0) {
+        var res = prim.call(input, hint || "default");
+        if (_typeof(res) !== "object") return res;
+        throw new TypeError("@@toPrimitive must return a primitive value.");
+    }
+    return (hint === "string" ? String : Number)(input);
+}
+var init_toPrimitive = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__.__esm)({
+    "node_modules/@babel/runtime/helpers/esm/toPrimitive.js" () {
+        init_typeof();
+    }
+});
+// node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
+function _toPropertyKey(arg) {
+    var key = _toPrimitive(arg, "string");
+    return _typeof(key) === "symbol" ? key : String(key);
+}
+var init_toPropertyKey = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__.__esm)({
+    "node_modules/@babel/runtime/helpers/esm/toPropertyKey.js" () {
+        init_typeof();
+        init_toPrimitive();
+    }
+});
+// node_modules/@babel/runtime/helpers/esm/createClass.js
+function _defineProperties(target, props) {
+    for(var i = 0; i < props.length; i++){
+        var descriptor = props[i];
+        descriptor.enumerable = descriptor.enumerable || false;
+        descriptor.configurable = true;
+        if ("value" in descriptor) descriptor.writable = true;
+        Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
+    }
+}
+function _createClass(Constructor, protoProps, staticProps) {
+    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+    if (staticProps) _defineProperties(Constructor, staticProps);
+    Object.defineProperty(Constructor, "prototype", {
+        writable: false
+    });
+    return Constructor;
+}
+var init_createClass = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__.__esm)({
+    "node_modules/@babel/runtime/helpers/esm/createClass.js" () {
+        init_toPropertyKey();
+    }
+});
+
+
+
+/***/ }),
+
+/***/ "./node_modules/.taro/weapp/prebundle/i18next-browser-languagedetector.js":
+/*!********************************************************************************!*\
+  !*** ./node_modules/.taro/weapp/prebundle/i18next-browser-languagedetector.js ***!
+  \********************************************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   "default": function() { return /* binding */ i18next_browser_languagedetector_default; }
+/* harmony export */ });
+/* harmony import */ var _chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-SOUSFT7N.js */ "./node_modules/.taro/weapp/prebundle/chunk-SOUSFT7N.js");
+/* harmony import */ var _chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-P7VEE7PG.js */ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js");
+/* provided dependency */ var document = __webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/chunk-3EXGJ5BE.js */ "./node_modules/.taro/weapp/prebundle/chunk-3EXGJ5BE.js")["document$1"];
+/* provided dependency */ var window = __webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/chunk-3EXGJ5BE.js */ "./node_modules/.taro/weapp/prebundle/chunk-3EXGJ5BE.js")["window$1"];
+/* provided dependency */ var navigator = __webpack_require__(/*! ./node_modules/.taro/weapp/prebundle/chunk-3EXGJ5BE.js */ "./node_modules/.taro/weapp/prebundle/chunk-3EXGJ5BE.js")["nav"];
+
+
+// node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js
+(0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__.init_classCallCheck)();
+(0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__.init_createClass)();
+var arr = [];
+var each = arr.forEach;
+var slice = arr.slice;
+function defaults(obj) {
+    each.call(slice.call(arguments, 1), function(source) {
+        if (source) {
+            for(var prop in source){
+                if (obj[prop] === void 0) obj[prop] = source[prop];
+            }
+        }
+    });
+    return obj;
+}
+var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
+var serializeCookie = function serializeCookie2(name, val, options) {
+    var opt = options || {};
+    opt.path = opt.path || "/";
+    var value = encodeURIComponent(val);
+    var str = "".concat(name, "=").concat(value);
+    if (opt.maxAge > 0) {
+        var maxAge = opt.maxAge - 0;
+        if (Number.isNaN(maxAge)) throw new Error("maxAge should be a Number");
+        str += "; Max-Age=".concat(Math.floor(maxAge));
+    }
+    if (opt.domain) {
+        if (!fieldContentRegExp.test(opt.domain)) {
+            throw new TypeError("option domain is invalid");
+        }
+        str += "; Domain=".concat(opt.domain);
+    }
+    if (opt.path) {
+        if (!fieldContentRegExp.test(opt.path)) {
+            throw new TypeError("option path is invalid");
+        }
+        str += "; Path=".concat(opt.path);
+    }
+    if (opt.expires) {
+        if (typeof opt.expires.toUTCString !== "function") {
+            throw new TypeError("option expires is invalid");
+        }
+        str += "; Expires=".concat(opt.expires.toUTCString());
+    }
+    if (opt.httpOnly) str += "; HttpOnly";
+    if (opt.secure) str += "; Secure";
+    if (opt.sameSite) {
+        var sameSite = typeof opt.sameSite === "string" ? opt.sameSite.toLowerCase() : opt.sameSite;
+        switch(sameSite){
+            case true:
+                str += "; SameSite=Strict";
+                break;
+            case "lax":
+                str += "; SameSite=Lax";
+                break;
+            case "strict":
+                str += "; SameSite=Strict";
+                break;
+            case "none":
+                str += "; SameSite=None";
+                break;
+            default:
+                throw new TypeError("option sameSite is invalid");
+        }
+    }
+    return str;
+};
+var cookie = {
+    create: function create(name, value, minutes, domain) {
+        var cookieOptions = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : {
+            path: "/",
+            sameSite: "strict"
+        };
+        if (minutes) {
+            cookieOptions.expires = new Date();
+            cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1e3);
+        }
+        if (domain) cookieOptions.domain = domain;
+        document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);
+    },
+    read: function read(name) {
+        var nameEQ = "".concat(name, "=");
+        var ca = document.cookie.split(";");
+        for(var i = 0; i < ca.length; i++){
+            var c = ca[i];
+            while(c.charAt(0) === " "){
+                c = c.substring(1, c.length);
+            }
+            if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
+        }
+        return null;
+    },
+    remove: function remove(name) {
+        this.create(name, "", -1);
+    }
+};
+var cookie$1 = {
+    name: "cookie",
+    lookup: function lookup(options) {
+        var found;
+        if (options.lookupCookie && typeof document !== "undefined") {
+            var c = cookie.read(options.lookupCookie);
+            if (c) found = c;
+        }
+        return found;
+    },
+    cacheUserLanguage: function cacheUserLanguage(lng, options) {
+        if (options.lookupCookie && typeof document !== "undefined") {
+            cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);
+        }
+    }
+};
+var querystring = {
+    name: "querystring",
+    lookup: function lookup2(options) {
+        var found;
+        if (typeof window !== "undefined") {
+            var search = window.location.search;
+            if (!window.location.search && window.location.hash && window.location.hash.indexOf("?") > -1) {
+                search = window.location.hash.substring(window.location.hash.indexOf("?"));
+            }
+            var query = search.substring(1);
+            var params = query.split("&");
+            for(var i = 0; i < params.length; i++){
+                var pos = params[i].indexOf("=");
+                if (pos > 0) {
+                    var key = params[i].substring(0, pos);
+                    if (key === options.lookupQuerystring) {
+                        found = params[i].substring(pos + 1);
+                    }
+                }
+            }
+        }
+        return found;
+    }
+};
+var hasLocalStorageSupport = null;
+var localStorageAvailable = function localStorageAvailable2() {
+    if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;
+    try {
+        hasLocalStorageSupport = window !== "undefined" && window.localStorage !== null;
+        var testKey = "i18next.translate.boo";
+        window.localStorage.setItem(testKey, "foo");
+        window.localStorage.removeItem(testKey);
+    } catch (e) {
+        hasLocalStorageSupport = false;
+    }
+    return hasLocalStorageSupport;
+};
+var localStorage = {
+    name: "localStorage",
+    lookup: function lookup3(options) {
+        var found;
+        if (options.lookupLocalStorage && localStorageAvailable()) {
+            var lng = window.localStorage.getItem(options.lookupLocalStorage);
+            if (lng) found = lng;
+        }
+        return found;
+    },
+    cacheUserLanguage: function cacheUserLanguage2(lng, options) {
+        if (options.lookupLocalStorage && localStorageAvailable()) {
+            window.localStorage.setItem(options.lookupLocalStorage, lng);
+        }
+    }
+};
+var hasSessionStorageSupport = null;
+var sessionStorageAvailable = function sessionStorageAvailable2() {
+    if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;
+    try {
+        hasSessionStorageSupport = window !== "undefined" && window.sessionStorage !== null;
+        var testKey = "i18next.translate.boo";
+        window.sessionStorage.setItem(testKey, "foo");
+        window.sessionStorage.removeItem(testKey);
+    } catch (e) {
+        hasSessionStorageSupport = false;
+    }
+    return hasSessionStorageSupport;
+};
+var sessionStorage = {
+    name: "sessionStorage",
+    lookup: function lookup4(options) {
+        var found;
+        if (options.lookupSessionStorage && sessionStorageAvailable()) {
+            var lng = window.sessionStorage.getItem(options.lookupSessionStorage);
+            if (lng) found = lng;
+        }
+        return found;
+    },
+    cacheUserLanguage: function cacheUserLanguage3(lng, options) {
+        if (options.lookupSessionStorage && sessionStorageAvailable()) {
+            window.sessionStorage.setItem(options.lookupSessionStorage, lng);
+        }
+    }
+};
+var navigator$1 = {
+    name: "navigator",
+    lookup: function lookup5(options) {
+        var found = [];
+        if (typeof navigator !== "undefined") {
+            if (navigator.languages) {
+                for(var i = 0; i < navigator.languages.length; i++){
+                    found.push(navigator.languages[i]);
+                }
+            }
+            if (navigator.userLanguage) {
+                found.push(navigator.userLanguage);
+            }
+            if (navigator.language) {
+                found.push(navigator.language);
+            }
+        }
+        return found.length > 0 ? found : void 0;
+    }
+};
+var htmlTag = {
+    name: "htmlTag",
+    lookup: function lookup6(options) {
+        var found;
+        var htmlTag2 = options.htmlTag || (typeof document !== "undefined" ? document.documentElement : null);
+        if (htmlTag2 && typeof htmlTag2.getAttribute === "function") {
+            found = htmlTag2.getAttribute("lang");
+        }
+        return found;
+    }
+};
+var path = {
+    name: "path",
+    lookup: function lookup7(options) {
+        var found;
+        if (typeof window !== "undefined") {
+            var language = window.location.pathname.match(/\/([a-zA-Z-]*)/g);
+            if (language instanceof Array) {
+                if (typeof options.lookupFromPathIndex === "number") {
+                    if (typeof language[options.lookupFromPathIndex] !== "string") {
+                        return void 0;
+                    }
+                    found = language[options.lookupFromPathIndex].replace("/", "");
+                } else {
+                    found = language[0].replace("/", "");
+                }
+            }
+        }
+        return found;
+    }
+};
+var subdomain = {
+    name: "subdomain",
+    lookup: function lookup8(options) {
+        var lookupFromSubdomainIndex = typeof options.lookupFromSubdomainIndex === "number" ? options.lookupFromSubdomainIndex + 1 : 1;
+        var language = typeof window !== "undefined" && window.location && window.location.hostname && window.location.hostname.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);
+        if (!language) return void 0;
+        return language[lookupFromSubdomainIndex];
+    }
+};
+function getDefaults() {
+    return {
+        order: [
+            "querystring",
+            "cookie",
+            "localStorage",
+            "sessionStorage",
+            "navigator",
+            "htmlTag"
+        ],
+        lookupQuerystring: "lng",
+        lookupCookie: "i18next",
+        lookupLocalStorage: "i18nextLng",
+        lookupSessionStorage: "i18nextLng",
+        caches: [
+            "localStorage"
+        ],
+        excludeCacheFor: [
+            "cimode"
+        ],
+        convertDetectedLanguage: function convertDetectedLanguage(l) {
+            return l;
+        }
+    };
+}
+var Browser = function() {
+    function Browser2(services) {
+        var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+        (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__._classCallCheck)(this, Browser2);
+        this.type = "languageDetector";
+        this.detectors = {};
+        this.init(services, options);
+    }
+    (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__._createClass)(Browser2, [
+        {
+            key: "init",
+            value: function init(services) {
+                var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+                var i18nOptions = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+                this.services = services || {
+                    languageUtils: {}
+                };
+                this.options = defaults(options, this.options || {}, getDefaults());
+                if (typeof this.options.convertDetectedLanguage === "string" && this.options.convertDetectedLanguage.indexOf("15897") > -1) {
+                    this.options.convertDetectedLanguage = function(l) {
+                        return l.replace("-", "_");
+                    };
+                }
+                if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;
+                this.i18nOptions = i18nOptions;
+                this.addDetector(cookie$1);
+                this.addDetector(querystring);
+                this.addDetector(localStorage);
+                this.addDetector(sessionStorage);
+                this.addDetector(navigator$1);
+                this.addDetector(htmlTag);
+                this.addDetector(path);
+                this.addDetector(subdomain);
+            }
+        },
+        {
+            key: "addDetector",
+            value: function addDetector(detector) {
+                this.detectors[detector.name] = detector;
+            }
+        },
+        {
+            key: "detect",
+            value: function detect(detectionOrder) {
+                var _this = this;
+                if (!detectionOrder) detectionOrder = this.options.order;
+                var detected = [];
+                detectionOrder.forEach(function(detectorName) {
+                    if (_this.detectors[detectorName]) {
+                        var lookup9 = _this.detectors[detectorName].lookup(_this.options);
+                        if (lookup9 && typeof lookup9 === "string") lookup9 = [
+                            lookup9
+                        ];
+                        if (lookup9) detected = detected.concat(lookup9);
+                    }
+                });
+                detected = detected.map(function(d) {
+                    return _this.options.convertDetectedLanguage(d);
+                });
+                if (this.services.languageUtils.getBestMatchFromCodes) return detected;
+                return detected.length > 0 ? detected[0] : null;
+            }
+        },
+        {
+            key: "cacheUserLanguage",
+            value: function cacheUserLanguage4(lng, caches) {
+                var _this2 = this;
+                if (!caches) caches = this.options.caches;
+                if (!caches) return;
+                if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;
+                caches.forEach(function(cacheName) {
+                    if (_this2.detectors[cacheName]) _this2.detectors[cacheName].cacheUserLanguage(lng, _this2.options);
+                });
+            }
+        }
+    ]);
+    return Browser2;
+}();
+Browser.type = "languageDetector";
+// entry:i18next-browser-languagedetector
+var i18next_browser_languagedetector_default = Browser;
+
+
+
+/***/ })
+
+}]);

+ 2767 - 0
dist/prebundle/vendors-node_modules_taro_weapp_prebundle_i18next_js.js

@@ -0,0 +1,2767 @@
+"use strict";
+(wx["webpackJsonp"] = wx["webpackJsonp"] || []).push([["vendors-node_modules_taro_weapp_prebundle_i18next_js"],{
+
+/***/ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js ***!
+  \**************************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   __commonJS: function() { return /* binding */ __commonJS; },
+/* harmony export */   __esm: function() { return /* binding */ __esm; },
+/* harmony export */   __export: function() { return /* binding */ __export; },
+/* harmony export */   __toCommonJS: function() { return /* binding */ __toCommonJS; },
+/* harmony export */   __toESM: function() { return /* binding */ __toESM; }
+/* harmony export */ });
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __esm = (fn, res)=>function __init() {
+        return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
+    };
+var __commonJS = (cb, mod)=>function __require() {
+        return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = {
+            exports: {}
+        }).exports, mod), mod.exports;
+    };
+var __export = (target, all)=>{
+    for(var name in all)__defProp(target, name, {
+        get: all[name],
+        enumerable: true
+    });
+};
+var __copyProps = (to, from, except, desc)=>{
+    if (from && typeof from === "object" || typeof from === "function") {
+        for (let key of __getOwnPropNames(from))if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
+            get: ()=>from[key],
+            enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
+        });
+    }
+    return to;
+};
+var __toESM = (mod, isNodeMode, target)=>(target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
+        value: mod,
+        enumerable: true
+    }) : target, mod));
+var __toCommonJS = (mod)=>__copyProps(__defProp({}, "__esModule", {
+        value: true
+    }), mod);
+
+
+
+/***/ }),
+
+/***/ "./node_modules/.taro/weapp/prebundle/i18next.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/.taro/weapp/prebundle/i18next.js ***!
+  \*******************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   changeLanguage: function() { return /* binding */ changeLanguage; },
+/* harmony export */   createInstance: function() { return /* binding */ createInstance; },
+/* harmony export */   "default": function() { return /* binding */ i18next_default; },
+/* harmony export */   dir: function() { return /* binding */ dir; },
+/* harmony export */   exists: function() { return /* binding */ exists; },
+/* harmony export */   getFixedT: function() { return /* binding */ getFixedT; },
+/* harmony export */   hasLoadedNamespace: function() { return /* binding */ hasLoadedNamespace; },
+/* harmony export */   init: function() { return /* binding */ init; },
+/* harmony export */   loadLanguages: function() { return /* binding */ loadLanguages; },
+/* harmony export */   loadNamespaces: function() { return /* binding */ loadNamespaces; },
+/* harmony export */   loadResources: function() { return /* binding */ loadResources; },
+/* harmony export */   reloadResources: function() { return /* binding */ reloadResources; },
+/* harmony export */   setDefaultNamespace: function() { return /* binding */ setDefaultNamespace; },
+/* harmony export */   t: function() { return /* binding */ t; },
+/* harmony export */   use: function() { return /* binding */ use; }
+/* harmony export */ });
+/* harmony import */ var _chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-P7VEE7PG.js */ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js");
+function _defineProperty(obj, key, value) {
+    if (key in obj) {
+        Object.defineProperty(obj, key, {
+            value: value,
+            enumerable: true,
+            configurable: true,
+            writable: true
+        });
+    } else {
+        obj[key] = value;
+    }
+    return obj;
+}
+function _objectSpread(target) {
+    for(var i = 1; i < arguments.length; i++){
+        var source = arguments[i] != null ? arguments[i] : {};
+        var ownKeys = Object.keys(source);
+        if (typeof Object.getOwnPropertySymbols === 'function') {
+            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
+                return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+            }));
+        }
+        ownKeys.forEach(function(key) {
+            _defineProperty(target, key, source[key]);
+        });
+    }
+    return target;
+}
+function ownKeys(object, enumerableOnly) {
+    var keys = Object.keys(object);
+    if (Object.getOwnPropertySymbols) {
+        var symbols = Object.getOwnPropertySymbols(object);
+        if (enumerableOnly) {
+            symbols = symbols.filter(function(sym) {
+                return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+            });
+        }
+        keys.push.apply(keys, symbols);
+    }
+    return keys;
+}
+function _objectSpreadProps(target, source) {
+    source = source != null ? source : {};
+    if (Object.getOwnPropertyDescriptors) {
+        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+    } else {
+        ownKeys(Object(source)).forEach(function(key) {
+            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+        });
+    }
+    return target;
+}
+
+// node_modules/i18next/dist/esm/i18next.js
+var consoleLogger = {
+    type: "logger",
+    log (args) {
+        this.output("log", args);
+    },
+    warn (args) {
+        this.output("warn", args);
+    },
+    error (args) {
+        this.output("error", args);
+    },
+    output (type, args) {
+        if (console && console[type]) console[type].apply(console, args);
+    }
+};
+var Logger = class {
+    init(concreteLogger) {
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+        this.prefix = options.prefix || "i18next:";
+        this.logger = concreteLogger || consoleLogger;
+        this.options = options;
+        this.debug = options.debug;
+    }
+    log() {
+        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
+            args[_key] = arguments[_key];
+        }
+        return this.forward(args, "log", "", true);
+    }
+    warn() {
+        for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){
+            args[_key2] = arguments[_key2];
+        }
+        return this.forward(args, "warn", "", true);
+    }
+    error() {
+        for(var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++){
+            args[_key3] = arguments[_key3];
+        }
+        return this.forward(args, "error", "");
+    }
+    deprecate() {
+        for(var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++){
+            args[_key4] = arguments[_key4];
+        }
+        return this.forward(args, "warn", "WARNING DEPRECATED: ", true);
+    }
+    forward(args, lvl, prefix, debugOnly) {
+        if (debugOnly && !this.debug) return null;
+        if (typeof args[0] === "string") args[0] = `${prefix}${this.prefix} ${args[0]}`;
+        return this.logger[lvl](args);
+    }
+    create(moduleName) {
+        return new Logger(this.logger, _objectSpread({}, {
+            prefix: `${this.prefix}:${moduleName}:`
+        }, this.options));
+    }
+    clone(options) {
+        options = options || this.options;
+        options.prefix = options.prefix || this.prefix;
+        return new Logger(this.logger, options);
+    }
+    constructor(concreteLogger){
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+        this.init(concreteLogger, options);
+    }
+};
+var baseLogger = new Logger();
+var EventEmitter = class {
+    on(events, listener) {
+        events.split(" ").forEach((event)=>{
+            this.observers[event] = this.observers[event] || [];
+            this.observers[event].push(listener);
+        });
+        return this;
+    }
+    off(event, listener) {
+        if (!this.observers[event]) return;
+        if (!listener) {
+            delete this.observers[event];
+            return;
+        }
+        this.observers[event] = this.observers[event].filter((l)=>l !== listener);
+    }
+    emit(event) {
+        for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
+            args[_key - 1] = arguments[_key];
+        }
+        if (this.observers[event]) {
+            const cloned = [].concat(this.observers[event]);
+            cloned.forEach((observer)=>{
+                observer(...args);
+            });
+        }
+        if (this.observers["*"]) {
+            const cloned1 = [].concat(this.observers["*"]);
+            cloned1.forEach((observer)=>{
+                observer.apply(observer, [
+                    event,
+                    ...args
+                ]);
+            });
+        }
+    }
+    constructor(){
+        this.observers = {};
+    }
+};
+function defer() {
+    let res;
+    let rej;
+    const promise = new Promise((resolve, reject)=>{
+        res = resolve;
+        rej = reject;
+    });
+    promise.resolve = res;
+    promise.reject = rej;
+    return promise;
+}
+function makeString(object) {
+    if (object == null) return "";
+    return "" + object;
+}
+function copy(a, s, t2) {
+    a.forEach((m)=>{
+        if (s[m]) t2[m] = s[m];
+    });
+}
+function getLastOfPath(object, path, Empty) {
+    function cleanKey(key) {
+        return key && key.indexOf("###") > -1 ? key.replace(/###/g, ".") : key;
+    }
+    function canNotTraverseDeeper() {
+        return !object || typeof object === "string";
+    }
+    const stack = typeof path !== "string" ? [].concat(path) : path.split(".");
+    while(stack.length > 1){
+        if (canNotTraverseDeeper()) return {};
+        const key = cleanKey(stack.shift());
+        if (!object[key] && Empty) object[key] = new Empty();
+        if (Object.prototype.hasOwnProperty.call(object, key)) {
+            object = object[key];
+        } else {
+            object = {};
+        }
+    }
+    if (canNotTraverseDeeper()) return {};
+    return {
+        obj: object,
+        k: cleanKey(stack.shift())
+    };
+}
+function setPath(object, path, newValue) {
+    const { obj , k  } = getLastOfPath(object, path, Object);
+    obj[k] = newValue;
+}
+function pushPath(object, path, newValue, concat) {
+    const { obj , k  } = getLastOfPath(object, path, Object);
+    obj[k] = obj[k] || [];
+    if (concat) obj[k] = obj[k].concat(newValue);
+    if (!concat) obj[k].push(newValue);
+}
+function getPath(object, path) {
+    const { obj , k  } = getLastOfPath(object, path);
+    if (!obj) return void 0;
+    return obj[k];
+}
+function getPathWithDefaults(data, defaultData, key) {
+    const value = getPath(data, key);
+    if (value !== void 0) {
+        return value;
+    }
+    return getPath(defaultData, key);
+}
+function deepExtend(target, source, overwrite) {
+    for(const prop in source){
+        if (prop !== "__proto__" && prop !== "constructor") {
+            if (prop in target) {
+                if (typeof target[prop] === "string" || target[prop] instanceof String || typeof source[prop] === "string" || source[prop] instanceof String) {
+                    if (overwrite) target[prop] = source[prop];
+                } else {
+                    deepExtend(target[prop], source[prop], overwrite);
+                }
+            } else {
+                target[prop] = source[prop];
+            }
+        }
+    }
+    return target;
+}
+function regexEscape(str) {
+    return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
+}
+var _entityMap = {
+    "&": "&amp;",
+    "<": "&lt;",
+    ">": "&gt;",
+    '"': "&quot;",
+    "'": "&#39;",
+    "/": "&#x2F;"
+};
+function escape(data) {
+    if (typeof data === "string") {
+        return data.replace(/[&<>"'\/]/g, (s)=>_entityMap[s]);
+    }
+    return data;
+}
+var chars = [
+    " ",
+    ",",
+    "?",
+    "!",
+    ";"
+];
+function looksLikeObjectPath(key, nsSeparator, keySeparator) {
+    nsSeparator = nsSeparator || "";
+    keySeparator = keySeparator || "";
+    const possibleChars = chars.filter((c)=>nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);
+    if (possibleChars.length === 0) return true;
+    const r = new RegExp(`(${possibleChars.map((c)=>c === "?" ? "\\?" : c).join("|")})`);
+    let matched = !r.test(key);
+    if (!matched) {
+        const ki = key.indexOf(keySeparator);
+        if (ki > 0 && !r.test(key.substring(0, ki))) {
+            matched = true;
+        }
+    }
+    return matched;
+}
+function deepFind(obj, path) {
+    let keySeparator = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ".";
+    if (!obj) return void 0;
+    if (obj[path]) return obj[path];
+    const paths = path.split(keySeparator);
+    let current = obj;
+    for(let i = 0; i < paths.length; ++i){
+        if (!current) return void 0;
+        if (typeof current[paths[i]] === "string" && i + 1 < paths.length) {
+            return void 0;
+        }
+        if (current[paths[i]] === void 0) {
+            let j = 2;
+            let p = paths.slice(i, i + j).join(keySeparator);
+            let mix = current[p];
+            while(mix === void 0 && paths.length > i + j){
+                j++;
+                p = paths.slice(i, i + j).join(keySeparator);
+                mix = current[p];
+            }
+            if (mix === void 0) return void 0;
+            if (mix === null) return null;
+            if (path.endsWith(p)) {
+                if (typeof mix === "string") return mix;
+                if (p && typeof mix[p] === "string") return mix[p];
+            }
+            const joinedPath = paths.slice(i + j).join(keySeparator);
+            if (joinedPath) return deepFind(mix, joinedPath, keySeparator);
+            return void 0;
+        }
+        current = current[paths[i]];
+    }
+    return current;
+}
+function getCleanedCode(code) {
+    if (code && code.indexOf("_") > 0) return code.replace("_", "-");
+    return code;
+}
+var ResourceStore = class extends EventEmitter {
+    addNamespaces(ns) {
+        if (this.options.ns.indexOf(ns) < 0) {
+            this.options.ns.push(ns);
+        }
+    }
+    removeNamespaces(ns) {
+        const index = this.options.ns.indexOf(ns);
+        if (index > -1) {
+            this.options.ns.splice(index, 1);
+        }
+    }
+    getResource(lng, ns, key) {
+        let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
+        const keySeparator = options.keySeparator !== void 0 ? options.keySeparator : this.options.keySeparator;
+        const ignoreJSONStructure = options.ignoreJSONStructure !== void 0 ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;
+        let path = [
+            lng,
+            ns
+        ];
+        if (key && typeof key !== "string") path = path.concat(key);
+        if (key && typeof key === "string") path = path.concat(keySeparator ? key.split(keySeparator) : key);
+        if (lng.indexOf(".") > -1) {
+            path = lng.split(".");
+        }
+        const result = getPath(this.data, path);
+        if (result || !ignoreJSONStructure || typeof key !== "string") return result;
+        return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);
+    }
+    addResource(lng, ns, key, value) {
+        let options = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : {
+            silent: false
+        };
+        const keySeparator = options.keySeparator !== void 0 ? options.keySeparator : this.options.keySeparator;
+        let path = [
+            lng,
+            ns
+        ];
+        if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);
+        if (lng.indexOf(".") > -1) {
+            path = lng.split(".");
+            value = ns;
+            ns = path[1];
+        }
+        this.addNamespaces(ns);
+        setPath(this.data, path, value);
+        if (!options.silent) this.emit("added", lng, ns, key, value);
+    }
+    addResources(lng, ns, resources) {
+        let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {
+            silent: false
+        };
+        for(const m in resources){
+            if (typeof resources[m] === "string" || Object.prototype.toString.apply(resources[m]) === "[object Array]") this.addResource(lng, ns, m, resources[m], {
+                silent: true
+            });
+        }
+        if (!options.silent) this.emit("added", lng, ns, resources);
+    }
+    addResourceBundle(lng, ns, resources, deep, overwrite) {
+        let options = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : {
+            silent: false
+        };
+        let path = [
+            lng,
+            ns
+        ];
+        if (lng.indexOf(".") > -1) {
+            path = lng.split(".");
+            deep = resources;
+            resources = ns;
+            ns = path[1];
+        }
+        this.addNamespaces(ns);
+        let pack = getPath(this.data, path) || {};
+        if (deep) {
+            deepExtend(pack, resources, overwrite);
+        } else {
+            pack = _objectSpread({}, pack, resources);
+        }
+        setPath(this.data, path, pack);
+        if (!options.silent) this.emit("added", lng, ns, resources);
+    }
+    removeResourceBundle(lng, ns) {
+        if (this.hasResourceBundle(lng, ns)) {
+            delete this.data[lng][ns];
+        }
+        this.removeNamespaces(ns);
+        this.emit("removed", lng, ns);
+    }
+    hasResourceBundle(lng, ns) {
+        return this.getResource(lng, ns) !== void 0;
+    }
+    getResourceBundle(lng, ns) {
+        if (!ns) ns = this.options.defaultNS;
+        if (this.options.compatibilityAPI === "v1") return _objectSpread({}, {}, this.getResource(lng, ns));
+        return this.getResource(lng, ns);
+    }
+    getDataByLanguage(lng) {
+        return this.data[lng];
+    }
+    hasLanguageSomeTranslations(lng) {
+        const data = this.getDataByLanguage(lng);
+        const n = data && Object.keys(data) || [];
+        return !!n.find((v)=>data[v] && Object.keys(data[v]).length > 0);
+    }
+    toJSON() {
+        return this.data;
+    }
+    constructor(data){
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
+            ns: [
+                "translation"
+            ],
+            defaultNS: "translation"
+        };
+        super();
+        this.data = data || {};
+        this.options = options;
+        if (this.options.keySeparator === void 0) {
+            this.options.keySeparator = ".";
+        }
+        if (this.options.ignoreJSONStructure === void 0) {
+            this.options.ignoreJSONStructure = true;
+        }
+    }
+};
+var postProcessor = {
+    processors: {},
+    addPostProcessor (module) {
+        this.processors[module.name] = module;
+    },
+    handle (processors, value, key, options, translator) {
+        processors.forEach((processor)=>{
+            if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);
+        });
+        return value;
+    }
+};
+var checkedLoadedFor = {};
+var Translator = class extends EventEmitter {
+    changeLanguage(lng) {
+        if (lng) this.language = lng;
+    }
+    exists(key) {
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
+            interpolation: {}
+        };
+        if (key === void 0 || key === null) {
+            return false;
+        }
+        const resolved = this.resolve(key, options);
+        return resolved && resolved.res !== void 0;
+    }
+    extractFromKey(key, options) {
+        let nsSeparator = options.nsSeparator !== void 0 ? options.nsSeparator : this.options.nsSeparator;
+        if (nsSeparator === void 0) nsSeparator = ":";
+        const keySeparator = options.keySeparator !== void 0 ? options.keySeparator : this.options.keySeparator;
+        let namespaces = options.ns || this.options.defaultNS || [];
+        const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;
+        const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);
+        if (wouldCheckForNsInKey && !seemsNaturalLanguage) {
+            const m = key.match(this.interpolator.nestingRegexp);
+            if (m && m.length > 0) {
+                return {
+                    key,
+                    namespaces
+                };
+            }
+            const parts = key.split(nsSeparator);
+            if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();
+            key = parts.join(keySeparator);
+        }
+        if (typeof namespaces === "string") namespaces = [
+            namespaces
+        ];
+        return {
+            key,
+            namespaces
+        };
+    }
+    translate(keys, options, lastKey) {
+        if (typeof options !== "object" && this.options.overloadTranslationOptionHandler) {
+            options = this.options.overloadTranslationOptionHandler(arguments);
+        }
+        if (typeof options === "object") options = _objectSpread({}, options);
+        if (!options) options = {};
+        if (keys === void 0 || keys === null) return "";
+        if (!Array.isArray(keys)) keys = [
+            String(keys)
+        ];
+        const returnDetails = options.returnDetails !== void 0 ? options.returnDetails : this.options.returnDetails;
+        const keySeparator = options.keySeparator !== void 0 ? options.keySeparator : this.options.keySeparator;
+        const { key , namespaces  } = this.extractFromKey(keys[keys.length - 1], options);
+        const namespace = namespaces[namespaces.length - 1];
+        const lng = options.lng || this.language;
+        const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;
+        if (lng && lng.toLowerCase() === "cimode") {
+            if (appendNamespaceToCIMode) {
+                const nsSeparator = options.nsSeparator || this.options.nsSeparator;
+                if (returnDetails) {
+                    return {
+                        res: `${namespace}${nsSeparator}${key}`,
+                        usedKey: key,
+                        exactUsedKey: key,
+                        usedLng: lng,
+                        usedNS: namespace
+                    };
+                }
+                return `${namespace}${nsSeparator}${key}`;
+            }
+            if (returnDetails) {
+                return {
+                    res: key,
+                    usedKey: key,
+                    exactUsedKey: key,
+                    usedLng: lng,
+                    usedNS: namespace
+                };
+            }
+            return key;
+        }
+        const resolved = this.resolve(keys, options);
+        let res = resolved && resolved.res;
+        const resUsedKey = resolved && resolved.usedKey || key;
+        const resExactUsedKey = resolved && resolved.exactUsedKey || key;
+        const resType = Object.prototype.toString.apply(res);
+        const noObject = [
+            "[object Number]",
+            "[object Function]",
+            "[object RegExp]"
+        ];
+        const joinArrays = options.joinArrays !== void 0 ? options.joinArrays : this.options.joinArrays;
+        const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;
+        const handleAsObject = typeof res !== "string" && typeof res !== "boolean" && typeof res !== "number";
+        if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === "string" && resType === "[object Array]")) {
+            if (!options.returnObjects && !this.options.returnObjects) {
+                if (!this.options.returnedObjectHandler) {
+                    this.logger.warn("accessing an object - but returnObjects options is not enabled!");
+                }
+                const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpreadProps(_objectSpread({}, options), {
+                    ns: namespaces
+                })) : `key '${key} (${this.language})' returned an object instead of string.`;
+                if (returnDetails) {
+                    resolved.res = r;
+                    return resolved;
+                }
+                return r;
+            }
+            if (keySeparator) {
+                const resTypeIsArray = resType === "[object Array]";
+                const copy2 = resTypeIsArray ? [] : {};
+                const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;
+                for(const m in res){
+                    if (Object.prototype.hasOwnProperty.call(res, m)) {
+                        const deepKey = `${newKeyToUse}${keySeparator}${m}`;
+                        copy2[m] = this.translate(deepKey, _objectSpread({}, options, {
+                            joinArrays: false,
+                            ns: namespaces
+                        }));
+                        if (copy2[m] === deepKey) copy2[m] = res[m];
+                    }
+                }
+                res = copy2;
+            }
+        } else if (handleAsObjectInI18nFormat && typeof joinArrays === "string" && resType === "[object Array]") {
+            res = res.join(joinArrays);
+            if (res) res = this.extendTranslation(res, keys, options, lastKey);
+        } else {
+            let usedDefault = false;
+            let usedKey = false;
+            const needsPluralHandling = options.count !== void 0 && typeof options.count !== "string";
+            const hasDefaultValue = Translator.hasDefaultValue(options);
+            const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : "";
+            const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {
+                ordinal: false
+            }) : "";
+            const defaultValue = options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;
+            if (!this.isValidLookup(res) && hasDefaultValue) {
+                usedDefault = true;
+                res = defaultValue;
+            }
+            if (!this.isValidLookup(res)) {
+                usedKey = true;
+                res = key;
+            }
+            const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;
+            const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? void 0 : res;
+            const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;
+            if (usedKey || usedDefault || updateMissing) {
+                this.logger.log(updateMissing ? "updateKey" : "missingKey", lng, namespace, key, updateMissing ? defaultValue : res);
+                if (keySeparator) {
+                    const fk = this.resolve(key, _objectSpreadProps(_objectSpread({}, options), {
+                        keySeparator: false
+                    }));
+                    if (fk && fk.res) this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.");
+                }
+                let lngs = [];
+                const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);
+                if (this.options.saveMissingTo === "fallback" && fallbackLngs && fallbackLngs[0]) {
+                    for(let i = 0; i < fallbackLngs.length; i++){
+                        lngs.push(fallbackLngs[i]);
+                    }
+                } else if (this.options.saveMissingTo === "all") {
+                    lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);
+                } else {
+                    lngs.push(options.lng || this.language);
+                }
+                const send = (l, k, specificDefaultValue)=>{
+                    const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;
+                    if (this.options.missingKeyHandler) {
+                        this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);
+                    } else if (this.backendConnector && this.backendConnector.saveMissing) {
+                        this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);
+                    }
+                    this.emit("missingKey", l, namespace, k, res);
+                };
+                if (this.options.saveMissing) {
+                    if (this.options.saveMissingPlurals && needsPluralHandling) {
+                        lngs.forEach((language)=>{
+                            this.pluralResolver.getSuffixes(language, options).forEach((suffix)=>{
+                                send([
+                                    language
+                                ], key + suffix, options[`defaultValue${suffix}`] || defaultValue);
+                            });
+                        });
+                    } else {
+                        send(lngs, key, defaultValue);
+                    }
+                }
+            }
+            res = this.extendTranslation(res, keys, options, resolved, lastKey);
+            if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;
+            if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {
+                if (this.options.compatibilityAPI !== "v1") {
+                    res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : void 0);
+                } else {
+                    res = this.options.parseMissingKeyHandler(res);
+                }
+            }
+        }
+        if (returnDetails) {
+            resolved.res = res;
+            return resolved;
+        }
+        return res;
+    }
+    extendTranslation(res, key, options, resolved, lastKey) {
+        var _this = this;
+        if (this.i18nFormat && this.i18nFormat.parse) {
+            res = this.i18nFormat.parse(res, _objectSpread({}, this.options.interpolation.defaultVariables, options), options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {
+                resolved
+            });
+        } else if (!options.skipInterpolation) {
+            if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {
+                interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)
+            }));
+            const skipOnVariables = typeof res === "string" && (options && options.interpolation && options.interpolation.skipOnVariables !== void 0 ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);
+            let nestBef;
+            if (skipOnVariables) {
+                const nb = res.match(this.interpolator.nestingRegexp);
+                nestBef = nb && nb.length;
+            }
+            let data = options.replace && typeof options.replace !== "string" ? options.replace : options;
+            if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);
+            res = this.interpolator.interpolate(res, data, options.lng || this.language, options);
+            if (skipOnVariables) {
+                const na = res.match(this.interpolator.nestingRegexp);
+                const nestAft = na && na.length;
+                if (nestBef < nestAft) options.nest = false;
+            }
+            if (!options.lng && this.options.compatibilityAPI !== "v1" && resolved && resolved.res) options.lng = resolved.usedLng;
+            if (options.nest !== false) res = this.interpolator.nest(res, function() {
+                for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
+                    args[_key] = arguments[_key];
+                }
+                if (lastKey && lastKey[0] === args[0] && !options.context) {
+                    _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);
+                    return null;
+                }
+                return _this.translate(...args, key);
+            }, options);
+            if (options.interpolation) this.interpolator.reset();
+        }
+        const postProcess = options.postProcess || this.options.postProcess;
+        const postProcessorNames = typeof postProcess === "string" ? [
+            postProcess
+        ] : postProcess;
+        if (res !== void 0 && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {
+            res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({
+                i18nResolved: resolved
+            }, options) : options, this);
+        }
+        return res;
+    }
+    resolve(keys) {
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+        let found;
+        let usedKey;
+        let exactUsedKey;
+        let usedLng;
+        let usedNS;
+        if (typeof keys === "string") keys = [
+            keys
+        ];
+        keys.forEach((k)=>{
+            if (this.isValidLookup(found)) return;
+            const extracted = this.extractFromKey(k, options);
+            const key = extracted.key;
+            usedKey = key;
+            let namespaces = extracted.namespaces;
+            if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);
+            const needsPluralHandling = options.count !== void 0 && typeof options.count !== "string";
+            const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();
+            const needsContextHandling = options.context !== void 0 && (typeof options.context === "string" || typeof options.context === "number") && options.context !== "";
+            const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);
+            namespaces.forEach((ns)=>{
+                if (this.isValidLookup(found)) return;
+                usedNS = ns;
+                if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {
+                    checkedLoadedFor[`${codes[0]}-${ns}`] = true;
+                    this.logger.warn(`key "${usedKey}" for languages "${codes.join(", ")}" won't get resolved as namespace "${usedNS}" was not yet loaded`, "This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");
+                }
+                codes.forEach((code)=>{
+                    if (this.isValidLookup(found)) return;
+                    usedLng = code;
+                    const finalKeys = [
+                        key
+                    ];
+                    if (this.i18nFormat && this.i18nFormat.addLookupKeys) {
+                        this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);
+                    } else {
+                        let pluralSuffix;
+                        if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);
+                        const zeroSuffix = `${this.options.pluralSeparator}zero`;
+                        const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;
+                        if (needsPluralHandling) {
+                            finalKeys.push(key + pluralSuffix);
+                            if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {
+                                finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));
+                            }
+                            if (needsZeroSuffixLookup) {
+                                finalKeys.push(key + zeroSuffix);
+                            }
+                        }
+                        if (needsContextHandling) {
+                            const contextKey = `${key}${this.options.contextSeparator}${options.context}`;
+                            finalKeys.push(contextKey);
+                            if (needsPluralHandling) {
+                                finalKeys.push(contextKey + pluralSuffix);
+                                if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {
+                                    finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));
+                                }
+                                if (needsZeroSuffixLookup) {
+                                    finalKeys.push(contextKey + zeroSuffix);
+                                }
+                            }
+                        }
+                    }
+                    let possibleKey;
+                    while(possibleKey = finalKeys.pop()){
+                        if (!this.isValidLookup(found)) {
+                            exactUsedKey = possibleKey;
+                            found = this.getResource(code, ns, possibleKey, options);
+                        }
+                    }
+                });
+            });
+        });
+        return {
+            res: found,
+            usedKey,
+            exactUsedKey,
+            usedLng,
+            usedNS
+        };
+    }
+    isValidLookup(res) {
+        return res !== void 0 && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === "");
+    }
+    getResource(code, ns, key) {
+        let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
+        if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);
+        return this.resourceStore.getResource(code, ns, key, options);
+    }
+    static hasDefaultValue(options) {
+        const prefix = "defaultValue";
+        for(const option in options){
+            if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && void 0 !== options[option]) {
+                return true;
+            }
+        }
+        return false;
+    }
+    constructor(services){
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+        super();
+        copy([
+            "resourceStore",
+            "languageUtils",
+            "pluralResolver",
+            "interpolator",
+            "backendConnector",
+            "i18nFormat",
+            "utils"
+        ], services, this);
+        this.options = options;
+        if (this.options.keySeparator === void 0) {
+            this.options.keySeparator = ".";
+        }
+        this.logger = baseLogger.create("translator");
+    }
+};
+function capitalize(string) {
+    return string.charAt(0).toUpperCase() + string.slice(1);
+}
+var LanguageUtil = class {
+    getScriptPartFromCode(code) {
+        code = getCleanedCode(code);
+        if (!code || code.indexOf("-") < 0) return null;
+        const p = code.split("-");
+        if (p.length === 2) return null;
+        p.pop();
+        if (p[p.length - 1].toLowerCase() === "x") return null;
+        return this.formatLanguageCode(p.join("-"));
+    }
+    getLanguagePartFromCode(code) {
+        code = getCleanedCode(code);
+        if (!code || code.indexOf("-") < 0) return code;
+        const p = code.split("-");
+        return this.formatLanguageCode(p[0]);
+    }
+    formatLanguageCode(code) {
+        if (typeof code === "string" && code.indexOf("-") > -1) {
+            const specialCases = [
+                "hans",
+                "hant",
+                "latn",
+                "cyrl",
+                "cans",
+                "mong",
+                "arab"
+            ];
+            let p = code.split("-");
+            if (this.options.lowerCaseLng) {
+                p = p.map((part)=>part.toLowerCase());
+            } else if (p.length === 2) {
+                p[0] = p[0].toLowerCase();
+                p[1] = p[1].toUpperCase();
+                if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());
+            } else if (p.length === 3) {
+                p[0] = p[0].toLowerCase();
+                if (p[1].length === 2) p[1] = p[1].toUpperCase();
+                if (p[0] !== "sgn" && p[2].length === 2) p[2] = p[2].toUpperCase();
+                if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());
+                if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());
+            }
+            return p.join("-");
+        }
+        return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;
+    }
+    isSupportedCode(code) {
+        if (this.options.load === "languageOnly" || this.options.nonExplicitSupportedLngs) {
+            code = this.getLanguagePartFromCode(code);
+        }
+        return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;
+    }
+    getBestMatchFromCodes(codes) {
+        if (!codes) return null;
+        let found;
+        codes.forEach((code)=>{
+            if (found) return;
+            const cleanedLng = this.formatLanguageCode(code);
+            if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;
+        });
+        if (!found && this.options.supportedLngs) {
+            codes.forEach((code)=>{
+                if (found) return;
+                const lngOnly = this.getLanguagePartFromCode(code);
+                if (this.isSupportedCode(lngOnly)) return found = lngOnly;
+                found = this.options.supportedLngs.find((supportedLng)=>{
+                    if (supportedLng === lngOnly) return supportedLng;
+                    if (supportedLng.indexOf("-") < 0 && lngOnly.indexOf("-") < 0) return;
+                    if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;
+                });
+            });
+        }
+        if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];
+        return found;
+    }
+    getFallbackCodes(fallbacks, code) {
+        if (!fallbacks) return [];
+        if (typeof fallbacks === "function") fallbacks = fallbacks(code);
+        if (typeof fallbacks === "string") fallbacks = [
+            fallbacks
+        ];
+        if (Object.prototype.toString.apply(fallbacks) === "[object Array]") return fallbacks;
+        if (!code) return fallbacks.default || [];
+        let found = fallbacks[code];
+        if (!found) found = fallbacks[this.getScriptPartFromCode(code)];
+        if (!found) found = fallbacks[this.formatLanguageCode(code)];
+        if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];
+        if (!found) found = fallbacks.default;
+        return found || [];
+    }
+    toResolveHierarchy(code, fallbackCode) {
+        const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);
+        const codes = [];
+        const addCode = (c)=>{
+            if (!c) return;
+            if (this.isSupportedCode(c)) {
+                codes.push(c);
+            } else {
+                this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);
+            }
+        };
+        if (typeof code === "string" && (code.indexOf("-") > -1 || code.indexOf("_") > -1)) {
+            if (this.options.load !== "languageOnly") addCode(this.formatLanguageCode(code));
+            if (this.options.load !== "languageOnly" && this.options.load !== "currentOnly") addCode(this.getScriptPartFromCode(code));
+            if (this.options.load !== "currentOnly") addCode(this.getLanguagePartFromCode(code));
+        } else if (typeof code === "string") {
+            addCode(this.formatLanguageCode(code));
+        }
+        fallbackCodes.forEach((fc)=>{
+            if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));
+        });
+        return codes;
+    }
+    constructor(options){
+        this.options = options;
+        this.supportedLngs = this.options.supportedLngs || false;
+        this.logger = baseLogger.create("languageUtils");
+    }
+};
+var sets = [
+    {
+        lngs: [
+            "ach",
+            "ak",
+            "am",
+            "arn",
+            "br",
+            "fil",
+            "gun",
+            "ln",
+            "mfe",
+            "mg",
+            "mi",
+            "oc",
+            "pt",
+            "pt-BR",
+            "tg",
+            "tl",
+            "ti",
+            "tr",
+            "uz",
+            "wa"
+        ],
+        nr: [
+            1,
+            2
+        ],
+        fc: 1
+    },
+    {
+        lngs: [
+            "af",
+            "an",
+            "ast",
+            "az",
+            "bg",
+            "bn",
+            "ca",
+            "da",
+            "de",
+            "dev",
+            "el",
+            "en",
+            "eo",
+            "es",
+            "et",
+            "eu",
+            "fi",
+            "fo",
+            "fur",
+            "fy",
+            "gl",
+            "gu",
+            "ha",
+            "hi",
+            "hu",
+            "hy",
+            "ia",
+            "it",
+            "kk",
+            "kn",
+            "ku",
+            "lb",
+            "mai",
+            "ml",
+            "mn",
+            "mr",
+            "nah",
+            "nap",
+            "nb",
+            "ne",
+            "nl",
+            "nn",
+            "no",
+            "nso",
+            "pa",
+            "pap",
+            "pms",
+            "ps",
+            "pt-PT",
+            "rm",
+            "sco",
+            "se",
+            "si",
+            "so",
+            "son",
+            "sq",
+            "sv",
+            "sw",
+            "ta",
+            "te",
+            "tk",
+            "ur",
+            "yo"
+        ],
+        nr: [
+            1,
+            2
+        ],
+        fc: 2
+    },
+    {
+        lngs: [
+            "ay",
+            "bo",
+            "cgg",
+            "fa",
+            "ht",
+            "id",
+            "ja",
+            "jbo",
+            "ka",
+            "km",
+            "ko",
+            "ky",
+            "lo",
+            "ms",
+            "sah",
+            "su",
+            "th",
+            "tt",
+            "ug",
+            "vi",
+            "wo",
+            "zh"
+        ],
+        nr: [
+            1
+        ],
+        fc: 3
+    },
+    {
+        lngs: [
+            "be",
+            "bs",
+            "cnr",
+            "dz",
+            "hr",
+            "ru",
+            "sr",
+            "uk"
+        ],
+        nr: [
+            1,
+            2,
+            5
+        ],
+        fc: 4
+    },
+    {
+        lngs: [
+            "ar"
+        ],
+        nr: [
+            0,
+            1,
+            2,
+            3,
+            11,
+            100
+        ],
+        fc: 5
+    },
+    {
+        lngs: [
+            "cs",
+            "sk"
+        ],
+        nr: [
+            1,
+            2,
+            5
+        ],
+        fc: 6
+    },
+    {
+        lngs: [
+            "csb",
+            "pl"
+        ],
+        nr: [
+            1,
+            2,
+            5
+        ],
+        fc: 7
+    },
+    {
+        lngs: [
+            "cy"
+        ],
+        nr: [
+            1,
+            2,
+            3,
+            8
+        ],
+        fc: 8
+    },
+    {
+        lngs: [
+            "fr"
+        ],
+        nr: [
+            1,
+            2
+        ],
+        fc: 9
+    },
+    {
+        lngs: [
+            "ga"
+        ],
+        nr: [
+            1,
+            2,
+            3,
+            7,
+            11
+        ],
+        fc: 10
+    },
+    {
+        lngs: [
+            "gd"
+        ],
+        nr: [
+            1,
+            2,
+            3,
+            20
+        ],
+        fc: 11
+    },
+    {
+        lngs: [
+            "is"
+        ],
+        nr: [
+            1,
+            2
+        ],
+        fc: 12
+    },
+    {
+        lngs: [
+            "jv"
+        ],
+        nr: [
+            0,
+            1
+        ],
+        fc: 13
+    },
+    {
+        lngs: [
+            "kw"
+        ],
+        nr: [
+            1,
+            2,
+            3,
+            4
+        ],
+        fc: 14
+    },
+    {
+        lngs: [
+            "lt"
+        ],
+        nr: [
+            1,
+            2,
+            10
+        ],
+        fc: 15
+    },
+    {
+        lngs: [
+            "lv"
+        ],
+        nr: [
+            1,
+            2,
+            0
+        ],
+        fc: 16
+    },
+    {
+        lngs: [
+            "mk"
+        ],
+        nr: [
+            1,
+            2
+        ],
+        fc: 17
+    },
+    {
+        lngs: [
+            "mnk"
+        ],
+        nr: [
+            0,
+            1,
+            2
+        ],
+        fc: 18
+    },
+    {
+        lngs: [
+            "mt"
+        ],
+        nr: [
+            1,
+            2,
+            11,
+            20
+        ],
+        fc: 19
+    },
+    {
+        lngs: [
+            "or"
+        ],
+        nr: [
+            2,
+            1
+        ],
+        fc: 2
+    },
+    {
+        lngs: [
+            "ro"
+        ],
+        nr: [
+            1,
+            2,
+            20
+        ],
+        fc: 20
+    },
+    {
+        lngs: [
+            "sl"
+        ],
+        nr: [
+            5,
+            1,
+            2,
+            3
+        ],
+        fc: 21
+    },
+    {
+        lngs: [
+            "he",
+            "iw"
+        ],
+        nr: [
+            1,
+            2,
+            20,
+            21
+        ],
+        fc: 22
+    }
+];
+var _rulesPluralsTypes = {
+    1: function(n) {
+        return Number(n > 1);
+    },
+    2: function(n) {
+        return Number(n != 1);
+    },
+    3: function(n) {
+        return 0;
+    },
+    4: function(n) {
+        return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
+    },
+    5: function(n) {
+        return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);
+    },
+    6: function(n) {
+        return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);
+    },
+    7: function(n) {
+        return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
+    },
+    8: function(n) {
+        return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);
+    },
+    9: function(n) {
+        return Number(n >= 2);
+    },
+    10: function(n) {
+        return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);
+    },
+    11: function(n) {
+        return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);
+    },
+    12: function(n) {
+        return Number(n % 10 != 1 || n % 100 == 11);
+    },
+    13: function(n) {
+        return Number(n !== 0);
+    },
+    14: function(n) {
+        return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);
+    },
+    15: function(n) {
+        return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
+    },
+    16: function(n) {
+        return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);
+    },
+    17: function(n) {
+        return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);
+    },
+    18: function(n) {
+        return Number(n == 0 ? 0 : n == 1 ? 1 : 2);
+    },
+    19: function(n) {
+        return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);
+    },
+    20: function(n) {
+        return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);
+    },
+    21: function(n) {
+        return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);
+    },
+    22: function(n) {
+        return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);
+    }
+};
+var nonIntlVersions = [
+    "v1",
+    "v2",
+    "v3"
+];
+var intlVersions = [
+    "v4"
+];
+var suffixesOrder = {
+    zero: 0,
+    one: 1,
+    two: 2,
+    few: 3,
+    many: 4,
+    other: 5
+};
+function createRules() {
+    const rules = {};
+    sets.forEach((set)=>{
+        set.lngs.forEach((l)=>{
+            rules[l] = {
+                numbers: set.nr,
+                plurals: _rulesPluralsTypes[set.fc]
+            };
+        });
+    });
+    return rules;
+}
+var PluralResolver = class {
+    addRule(lng, obj) {
+        this.rules[lng] = obj;
+    }
+    getRule(code) {
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+        if (this.shouldUseIntlApi()) {
+            try {
+                return new Intl.PluralRules(getCleanedCode(code), {
+                    type: options.ordinal ? "ordinal" : "cardinal"
+                });
+            } catch (e) {
+                return;
+            }
+        }
+        return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];
+    }
+    needsPlural(code) {
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+        const rule = this.getRule(code, options);
+        if (this.shouldUseIntlApi()) {
+            return rule && rule.resolvedOptions().pluralCategories.length > 1;
+        }
+        return rule && rule.numbers.length > 1;
+    }
+    getPluralFormsOfKey(code, key) {
+        let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+        return this.getSuffixes(code, options).map((suffix)=>`${key}${suffix}`);
+    }
+    getSuffixes(code) {
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+        const rule = this.getRule(code, options);
+        if (!rule) {
+            return [];
+        }
+        if (this.shouldUseIntlApi()) {
+            return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2)=>suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map((pluralCategory)=>`${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ""}${pluralCategory}`);
+        }
+        return rule.numbers.map((number)=>this.getSuffix(code, number, options));
+    }
+    getSuffix(code, count) {
+        let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+        const rule = this.getRule(code, options);
+        if (rule) {
+            if (this.shouldUseIntlApi()) {
+                return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ""}${rule.select(count)}`;
+            }
+            return this.getSuffixRetroCompatible(rule, count);
+        }
+        this.logger.warn(`no plural rule found for: ${code}`);
+        return "";
+    }
+    getSuffixRetroCompatible(rule, count) {
+        const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));
+        let suffix = rule.numbers[idx];
+        if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {
+            if (suffix === 2) {
+                suffix = "plural";
+            } else if (suffix === 1) {
+                suffix = "";
+            }
+        }
+        const returnSuffix = ()=>this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();
+        if (this.options.compatibilityJSON === "v1") {
+            if (suffix === 1) return "";
+            if (typeof suffix === "number") return `_plural_${suffix.toString()}`;
+            return returnSuffix();
+        } else if (this.options.compatibilityJSON === "v2") {
+            return returnSuffix();
+        } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {
+            return returnSuffix();
+        }
+        return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();
+    }
+    shouldUseIntlApi() {
+        return !nonIntlVersions.includes(this.options.compatibilityJSON);
+    }
+    constructor(languageUtils){
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+        this.languageUtils = languageUtils;
+        this.options = options;
+        this.logger = baseLogger.create("pluralResolver");
+        if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === "undefined" || !Intl.PluralRules)) {
+            this.options.compatibilityJSON = "v3";
+            this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.");
+        }
+        this.rules = createRules();
+    }
+};
+function deepFindWithDefaults(data, defaultData, key) {
+    let keySeparator = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : ".";
+    let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true;
+    let path = getPathWithDefaults(data, defaultData, key);
+    if (!path && ignoreJSONStructure && typeof key === "string") {
+        path = deepFind(data, key, keySeparator);
+        if (path === void 0) path = deepFind(defaultData, key, keySeparator);
+    }
+    return path;
+}
+var Interpolator = class {
+    init() {
+        let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+        if (!options.interpolation) options.interpolation = {
+            escapeValue: true
+        };
+        const iOpts = options.interpolation;
+        this.escape = iOpts.escape !== void 0 ? iOpts.escape : escape;
+        this.escapeValue = iOpts.escapeValue !== void 0 ? iOpts.escapeValue : true;
+        this.useRawValueToEscape = iOpts.useRawValueToEscape !== void 0 ? iOpts.useRawValueToEscape : false;
+        this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || "{{";
+        this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || "}}";
+        this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ",";
+        this.unescapePrefix = iOpts.unescapeSuffix ? "" : iOpts.unescapePrefix || "-";
+        this.unescapeSuffix = this.unescapePrefix ? "" : iOpts.unescapeSuffix || "";
+        this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape("$t(");
+        this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(")");
+        this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ",";
+        this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1e3;
+        this.alwaysFormat = iOpts.alwaysFormat !== void 0 ? iOpts.alwaysFormat : false;
+        this.resetRegExp();
+    }
+    reset() {
+        if (this.options) this.init(this.options);
+    }
+    resetRegExp() {
+        const regexpStr = `${this.prefix}(.+?)${this.suffix}`;
+        this.regexp = new RegExp(regexpStr, "g");
+        const regexpUnescapeStr = `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`;
+        this.regexpUnescape = new RegExp(regexpUnescapeStr, "g");
+        const nestingRegexpStr = `${this.nestingPrefix}(.+?)${this.nestingSuffix}`;
+        this.nestingRegexp = new RegExp(nestingRegexpStr, "g");
+    }
+    interpolate(str, data, lng, options) {
+        let match;
+        let value;
+        let replaces;
+        const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};
+        function regexSafe(val) {
+            return val.replace(/\$/g, "$$$$");
+        }
+        const handleFormat = (key)=>{
+            if (key.indexOf(this.formatSeparator) < 0) {
+                const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);
+                return this.alwaysFormat ? this.format(path, void 0, lng, _objectSpreadProps(_objectSpread({}, options, data), {
+                    interpolationkey: key
+                })) : path;
+            }
+            const p = key.split(this.formatSeparator);
+            const k = p.shift().trim();
+            const f = p.join(this.formatSeparator).trim();
+            return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, _objectSpreadProps(_objectSpread({}, options, data), {
+                interpolationkey: k
+            }));
+        };
+        this.resetRegExp();
+        const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;
+        const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== void 0 ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;
+        const todos = [
+            {
+                regex: this.regexpUnescape,
+                safeValue: (val)=>regexSafe(val)
+            },
+            {
+                regex: this.regexp,
+                safeValue: (val)=>this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)
+            }
+        ];
+        todos.forEach((todo)=>{
+            replaces = 0;
+            while(match = todo.regex.exec(str)){
+                const matchedVar = match[1].trim();
+                value = handleFormat(matchedVar);
+                if (value === void 0) {
+                    if (typeof missingInterpolationHandler === "function") {
+                        const temp = missingInterpolationHandler(str, match, options);
+                        value = typeof temp === "string" ? temp : "";
+                    } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {
+                        value = "";
+                    } else if (skipOnVariables) {
+                        value = match[0];
+                        continue;
+                    } else {
+                        this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);
+                        value = "";
+                    }
+                } else if (typeof value !== "string" && !this.useRawValueToEscape) {
+                    value = makeString(value);
+                }
+                const safeValue = todo.safeValue(value);
+                str = str.replace(match[0], safeValue);
+                if (skipOnVariables) {
+                    todo.regex.lastIndex += value.length;
+                    todo.regex.lastIndex -= match[0].length;
+                } else {
+                    todo.regex.lastIndex = 0;
+                }
+                replaces++;
+                if (replaces >= this.maxReplaces) {
+                    break;
+                }
+            }
+        });
+        return str;
+    }
+    nest(str, fc) {
+        let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+        let match;
+        let value;
+        let clonedOptions;
+        function handleHasOptions(key, inheritedOptions) {
+            const sep = this.nestingOptionsSeparator;
+            if (key.indexOf(sep) < 0) return key;
+            const c = key.split(new RegExp(`${sep}[ ]*{`));
+            let optionsString = `{${c[1]}`;
+            key = c[0];
+            optionsString = this.interpolate(optionsString, clonedOptions);
+            const matchedSingleQuotes = optionsString.match(/'/g);
+            const matchedDoubleQuotes = optionsString.match(/"/g);
+            if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {
+                optionsString = optionsString.replace(/'/g, '"');
+            }
+            try {
+                clonedOptions = JSON.parse(optionsString);
+                if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);
+            } catch (e) {
+                this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);
+                return `${key}${sep}${optionsString}`;
+            }
+            delete clonedOptions.defaultValue;
+            return key;
+        }
+        while(match = this.nestingRegexp.exec(str)){
+            let formatters = [];
+            clonedOptions = _objectSpread({}, options);
+            clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== "string" ? clonedOptions.replace : clonedOptions;
+            clonedOptions.applyPostProcessor = false;
+            delete clonedOptions.defaultValue;
+            let doReduce = false;
+            if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {
+                const r = match[1].split(this.formatSeparator).map((elem)=>elem.trim());
+                match[1] = r.shift();
+                formatters = r;
+                doReduce = true;
+            }
+            value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);
+            if (value && match[0] === str && typeof value !== "string") return value;
+            if (typeof value !== "string") value = makeString(value);
+            if (!value) {
+                this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);
+                value = "";
+            }
+            if (doReduce) {
+                value = formatters.reduce((v, f)=>this.format(v, f, options.lng, _objectSpreadProps(_objectSpread({}, options), {
+                        interpolationkey: match[1].trim()
+                    })), value.trim());
+            }
+            str = str.replace(match[0], value);
+            this.regexp.lastIndex = 0;
+        }
+        return str;
+    }
+    constructor(){
+        let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+        this.logger = baseLogger.create("interpolator");
+        this.options = options;
+        this.format = options.interpolation && options.interpolation.format || ((value)=>value);
+        this.init(options);
+    }
+};
+function parseFormatStr(formatStr) {
+    let formatName = formatStr.toLowerCase().trim();
+    const formatOptions = {};
+    if (formatStr.indexOf("(") > -1) {
+        const p = formatStr.split("(");
+        formatName = p[0].toLowerCase().trim();
+        const optStr = p[1].substring(0, p[1].length - 1);
+        if (formatName === "currency" && optStr.indexOf(":") < 0) {
+            if (!formatOptions.currency) formatOptions.currency = optStr.trim();
+        } else if (formatName === "relativetime" && optStr.indexOf(":") < 0) {
+            if (!formatOptions.range) formatOptions.range = optStr.trim();
+        } else {
+            const opts = optStr.split(";");
+            opts.forEach((opt)=>{
+                if (!opt) return;
+                const [key, ...rest] = opt.split(":");
+                const val = rest.join(":").trim().replace(/^'+|'+$/g, "");
+                if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;
+                if (val === "false") formatOptions[key.trim()] = false;
+                if (val === "true") formatOptions[key.trim()] = true;
+                if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);
+            });
+        }
+    }
+    return {
+        formatName,
+        formatOptions
+    };
+}
+function createCachedFormatter(fn) {
+    const cache = {};
+    return function invokeFormatter(val, lng, options) {
+        const key = lng + JSON.stringify(options);
+        let formatter = cache[key];
+        if (!formatter) {
+            formatter = fn(getCleanedCode(lng), options);
+            cache[key] = formatter;
+        }
+        return formatter(val);
+    };
+}
+var Formatter = class {
+    init(services) {
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
+            interpolation: {}
+        };
+        const iOpts = options.interpolation;
+        this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ",";
+    }
+    add(name, fc) {
+        this.formats[name.toLowerCase().trim()] = fc;
+    }
+    addCached(name, fc) {
+        this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);
+    }
+    format(value, format, lng) {
+        let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
+        const formats = format.split(this.formatSeparator);
+        const result = formats.reduce((mem, f)=>{
+            const { formatName , formatOptions  } = parseFormatStr(f);
+            if (this.formats[formatName]) {
+                let formatted = mem;
+                try {
+                    const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};
+                    const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;
+                    formatted = this.formats[formatName](mem, l, _objectSpread({}, formatOptions, options, valOptions));
+                } catch (error) {
+                    this.logger.warn(error);
+                }
+                return formatted;
+            } else {
+                this.logger.warn(`there was no format function for ${formatName}`);
+            }
+            return mem;
+        }, value);
+        return result;
+    }
+    constructor(){
+        let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+        this.logger = baseLogger.create("formatter");
+        this.options = options;
+        this.formats = {
+            number: createCachedFormatter((lng, opt)=>{
+                const formatter = new Intl.NumberFormat(lng, _objectSpread({}, opt));
+                return (val)=>formatter.format(val);
+            }),
+            currency: createCachedFormatter((lng, opt)=>{
+                const formatter = new Intl.NumberFormat(lng, _objectSpreadProps(_objectSpread({}, opt), {
+                    style: "currency"
+                }));
+                return (val)=>formatter.format(val);
+            }),
+            datetime: createCachedFormatter((lng, opt)=>{
+                const formatter = new Intl.DateTimeFormat(lng, _objectSpread({}, opt));
+                return (val)=>formatter.format(val);
+            }),
+            relativetime: createCachedFormatter((lng, opt)=>{
+                const formatter = new Intl.RelativeTimeFormat(lng, _objectSpread({}, opt));
+                return (val)=>formatter.format(val, opt.range || "day");
+            }),
+            list: createCachedFormatter((lng, opt)=>{
+                const formatter = new Intl.ListFormat(lng, _objectSpread({}, opt));
+                return (val)=>formatter.format(val);
+            })
+        };
+        this.init(options);
+    }
+};
+function removePending(q, name) {
+    if (q.pending[name] !== void 0) {
+        delete q.pending[name];
+        q.pendingCount--;
+    }
+}
+var Connector = class extends EventEmitter {
+    queueLoad(languages, namespaces, options, callback) {
+        const toLoad = {};
+        const pending = {};
+        const toLoadLanguages = {};
+        const toLoadNamespaces = {};
+        languages.forEach((lng)=>{
+            let hasAllNamespaces = true;
+            namespaces.forEach((ns)=>{
+                const name = `${lng}|${ns}`;
+                if (!options.reload && this.store.hasResourceBundle(lng, ns)) {
+                    this.state[name] = 2;
+                } else if (this.state[name] < 0) ;
+                else if (this.state[name] === 1) {
+                    if (pending[name] === void 0) pending[name] = true;
+                } else {
+                    this.state[name] = 1;
+                    hasAllNamespaces = false;
+                    if (pending[name] === void 0) pending[name] = true;
+                    if (toLoad[name] === void 0) toLoad[name] = true;
+                    if (toLoadNamespaces[ns] === void 0) toLoadNamespaces[ns] = true;
+                }
+            });
+            if (!hasAllNamespaces) toLoadLanguages[lng] = true;
+        });
+        if (Object.keys(toLoad).length || Object.keys(pending).length) {
+            this.queue.push({
+                pending,
+                pendingCount: Object.keys(pending).length,
+                loaded: {},
+                errors: [],
+                callback
+            });
+        }
+        return {
+            toLoad: Object.keys(toLoad),
+            pending: Object.keys(pending),
+            toLoadLanguages: Object.keys(toLoadLanguages),
+            toLoadNamespaces: Object.keys(toLoadNamespaces)
+        };
+    }
+    loaded(name, err, data) {
+        const s = name.split("|");
+        const lng = s[0];
+        const ns = s[1];
+        if (err) this.emit("failedLoading", lng, ns, err);
+        if (data) {
+            this.store.addResourceBundle(lng, ns, data);
+        }
+        this.state[name] = err ? -1 : 2;
+        const loaded = {};
+        this.queue.forEach((q)=>{
+            pushPath(q.loaded, [
+                lng
+            ], ns);
+            removePending(q, name);
+            if (err) q.errors.push(err);
+            if (q.pendingCount === 0 && !q.done) {
+                Object.keys(q.loaded).forEach((l)=>{
+                    if (!loaded[l]) loaded[l] = {};
+                    const loadedKeys = q.loaded[l];
+                    if (loadedKeys.length) {
+                        loadedKeys.forEach((n)=>{
+                            if (loaded[l][n] === void 0) loaded[l][n] = true;
+                        });
+                    }
+                });
+                q.done = true;
+                if (q.errors.length) {
+                    q.callback(q.errors);
+                } else {
+                    q.callback();
+                }
+            }
+        });
+        this.emit("loaded", loaded);
+        this.queue = this.queue.filter((q)=>!q.done);
+    }
+    read(lng, ns, fcName) {
+        let tried = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0;
+        let wait = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : this.retryTimeout;
+        let callback = arguments.length > 5 ? arguments[5] : void 0;
+        if (!lng.length) return callback(null, {});
+        if (this.readingCalls >= this.maxParallelReads) {
+            this.waitingReads.push({
+                lng,
+                ns,
+                fcName,
+                tried,
+                wait,
+                callback
+            });
+            return;
+        }
+        this.readingCalls++;
+        const resolver = (err, data)=>{
+            this.readingCalls--;
+            if (this.waitingReads.length > 0) {
+                const next = this.waitingReads.shift();
+                this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);
+            }
+            if (err && data && tried < this.maxRetries) {
+                setTimeout(()=>{
+                    this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);
+                }, wait);
+                return;
+            }
+            callback(err, data);
+        };
+        const fc = this.backend[fcName].bind(this.backend);
+        if (fc.length === 2) {
+            try {
+                const r = fc(lng, ns);
+                if (r && typeof r.then === "function") {
+                    r.then((data)=>resolver(null, data)).catch(resolver);
+                } else {
+                    resolver(null, r);
+                }
+            } catch (err) {
+                resolver(err);
+            }
+            return;
+        }
+        return fc(lng, ns, resolver);
+    }
+    prepareLoading(languages, namespaces) {
+        let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+        let callback = arguments.length > 3 ? arguments[3] : void 0;
+        if (!this.backend) {
+            this.logger.warn("No backend was added via i18next.use. Will not load resources.");
+            return callback && callback();
+        }
+        if (typeof languages === "string") languages = this.languageUtils.toResolveHierarchy(languages);
+        if (typeof namespaces === "string") namespaces = [
+            namespaces
+        ];
+        const toLoad = this.queueLoad(languages, namespaces, options, callback);
+        if (!toLoad.toLoad.length) {
+            if (!toLoad.pending.length) callback();
+            return null;
+        }
+        toLoad.toLoad.forEach((name)=>{
+            this.loadOne(name);
+        });
+    }
+    load(languages, namespaces, callback) {
+        this.prepareLoading(languages, namespaces, {}, callback);
+    }
+    reload(languages, namespaces, callback) {
+        this.prepareLoading(languages, namespaces, {
+            reload: true
+        }, callback);
+    }
+    loadOne(name) {
+        let prefix = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
+        const s = name.split("|");
+        const lng = s[0];
+        const ns = s[1];
+        this.read(lng, ns, "read", void 0, void 0, (err, data)=>{
+            if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);
+            if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);
+            this.loaded(name, err, data);
+        });
+    }
+    saveMissing(languages, namespace, key, fallbackValue, isUpdate) {
+        let options = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : {};
+        let clb = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : ()=>{};
+        if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {
+            this.logger.warn(`did not save key "${key}" as the namespace "${namespace}" was not yet loaded`, "This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");
+            return;
+        }
+        if (key === void 0 || key === null || key === "") return;
+        if (this.backend && this.backend.create) {
+            const opts = _objectSpreadProps(_objectSpread({}, options), {
+                isUpdate
+            });
+            const fc = this.backend.create.bind(this.backend);
+            if (fc.length < 6) {
+                try {
+                    let r;
+                    if (fc.length === 5) {
+                        r = fc(languages, namespace, key, fallbackValue, opts);
+                    } else {
+                        r = fc(languages, namespace, key, fallbackValue);
+                    }
+                    if (r && typeof r.then === "function") {
+                        r.then((data)=>clb(null, data)).catch(clb);
+                    } else {
+                        clb(null, r);
+                    }
+                } catch (err) {
+                    clb(err);
+                }
+            } else {
+                fc(languages, namespace, key, fallbackValue, clb, opts);
+            }
+        }
+        if (!languages || !languages[0]) return;
+        this.store.addResource(languages[0], namespace, key, fallbackValue);
+    }
+    constructor(backend, store, services){
+        let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
+        super();
+        this.backend = backend;
+        this.store = store;
+        this.services = services;
+        this.languageUtils = services.languageUtils;
+        this.options = options;
+        this.logger = baseLogger.create("backendConnector");
+        this.waitingReads = [];
+        this.maxParallelReads = options.maxParallelReads || 10;
+        this.readingCalls = 0;
+        this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;
+        this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;
+        this.state = {};
+        this.queue = [];
+        if (this.backend && this.backend.init) {
+            this.backend.init(services, options.backend, options);
+        }
+    }
+};
+function get() {
+    return {
+        debug: false,
+        initImmediate: true,
+        ns: [
+            "translation"
+        ],
+        defaultNS: [
+            "translation"
+        ],
+        fallbackLng: [
+            "dev"
+        ],
+        fallbackNS: false,
+        supportedLngs: false,
+        nonExplicitSupportedLngs: false,
+        load: "all",
+        preload: false,
+        simplifyPluralSuffix: true,
+        keySeparator: ".",
+        nsSeparator: ":",
+        pluralSeparator: "_",
+        contextSeparator: "_",
+        partialBundledLanguages: false,
+        saveMissing: false,
+        updateMissing: false,
+        saveMissingTo: "fallback",
+        saveMissingPlurals: true,
+        missingKeyHandler: false,
+        missingInterpolationHandler: false,
+        postProcess: false,
+        postProcessPassResolved: false,
+        returnNull: false,
+        returnEmptyString: true,
+        returnObjects: false,
+        joinArrays: false,
+        returnedObjectHandler: false,
+        parseMissingKeyHandler: false,
+        appendNamespaceToMissingKey: false,
+        appendNamespaceToCIMode: false,
+        overloadTranslationOptionHandler: function handle(args) {
+            let ret = {};
+            if (typeof args[1] === "object") ret = args[1];
+            if (typeof args[1] === "string") ret.defaultValue = args[1];
+            if (typeof args[2] === "string") ret.tDescription = args[2];
+            if (typeof args[2] === "object" || typeof args[3] === "object") {
+                const options = args[3] || args[2];
+                Object.keys(options).forEach((key)=>{
+                    ret[key] = options[key];
+                });
+            }
+            return ret;
+        },
+        interpolation: {
+            escapeValue: true,
+            format: (value, format, lng, options)=>value,
+            prefix: "{{",
+            suffix: "}}",
+            formatSeparator: ",",
+            unescapePrefix: "-",
+            nestingPrefix: "$t(",
+            nestingSuffix: ")",
+            nestingOptionsSeparator: ",",
+            maxReplaces: 1e3,
+            skipOnVariables: true
+        }
+    };
+}
+function transformOptions(options) {
+    if (typeof options.ns === "string") options.ns = [
+        options.ns
+    ];
+    if (typeof options.fallbackLng === "string") options.fallbackLng = [
+        options.fallbackLng
+    ];
+    if (typeof options.fallbackNS === "string") options.fallbackNS = [
+        options.fallbackNS
+    ];
+    if (options.supportedLngs && options.supportedLngs.indexOf("cimode") < 0) {
+        options.supportedLngs = options.supportedLngs.concat([
+            "cimode"
+        ]);
+    }
+    return options;
+}
+function noop() {}
+function bindMemberFunctions(inst) {
+    const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));
+    mems.forEach((mem)=>{
+        if (typeof inst[mem] === "function") {
+            inst[mem] = inst[mem].bind(inst);
+        }
+    });
+}
+var I18n = class extends EventEmitter {
+    init() {
+        var _this = this;
+        let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+        let callback = arguments.length > 1 ? arguments[1] : void 0;
+        if (typeof options === "function") {
+            callback = options;
+            options = {};
+        }
+        if (!options.defaultNS && options.defaultNS !== false && options.ns) {
+            if (typeof options.ns === "string") {
+                options.defaultNS = options.ns;
+            } else if (options.ns.indexOf("translation") < 0) {
+                options.defaultNS = options.ns[0];
+            }
+        }
+        const defOpts = get();
+        this.options = _objectSpread({}, defOpts, this.options, transformOptions(options));
+        if (this.options.compatibilityAPI !== "v1") {
+            this.options.interpolation = _objectSpread({}, defOpts.interpolation, this.options.interpolation);
+        }
+        if (options.keySeparator !== void 0) {
+            this.options.userDefinedKeySeparator = options.keySeparator;
+        }
+        if (options.nsSeparator !== void 0) {
+            this.options.userDefinedNsSeparator = options.nsSeparator;
+        }
+        function createClassOnDemand(ClassOrObject) {
+            if (!ClassOrObject) return null;
+            if (typeof ClassOrObject === "function") return new ClassOrObject();
+            return ClassOrObject;
+        }
+        if (!this.options.isClone) {
+            if (this.modules.logger) {
+                baseLogger.init(createClassOnDemand(this.modules.logger), this.options);
+            } else {
+                baseLogger.init(null, this.options);
+            }
+            let formatter;
+            if (this.modules.formatter) {
+                formatter = this.modules.formatter;
+            } else if (typeof Intl !== "undefined") {
+                formatter = Formatter;
+            }
+            const lu = new LanguageUtil(this.options);
+            this.store = new ResourceStore(this.options.resources, this.options);
+            const s = this.services;
+            s.logger = baseLogger;
+            s.resourceStore = this.store;
+            s.languageUtils = lu;
+            s.pluralResolver = new PluralResolver(lu, {
+                prepend: this.options.pluralSeparator,
+                compatibilityJSON: this.options.compatibilityJSON,
+                simplifyPluralSuffix: this.options.simplifyPluralSuffix
+            });
+            if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {
+                s.formatter = createClassOnDemand(formatter);
+                s.formatter.init(s, this.options);
+                this.options.interpolation.format = s.formatter.format.bind(s.formatter);
+            }
+            s.interpolator = new Interpolator(this.options);
+            s.utils = {
+                hasLoadedNamespace: this.hasLoadedNamespace.bind(this)
+            };
+            s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);
+            s.backendConnector.on("*", function(event) {
+                for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
+                    args[_key - 1] = arguments[_key];
+                }
+                _this.emit(event, ...args);
+            });
+            if (this.modules.languageDetector) {
+                s.languageDetector = createClassOnDemand(this.modules.languageDetector);
+                if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);
+            }
+            if (this.modules.i18nFormat) {
+                s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);
+                if (s.i18nFormat.init) s.i18nFormat.init(this);
+            }
+            this.translator = new Translator(this.services, this.options);
+            this.translator.on("*", function(event) {
+                for(var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++){
+                    args[_key2 - 1] = arguments[_key2];
+                }
+                _this.emit(event, ...args);
+            });
+            this.modules.external.forEach((m)=>{
+                if (m.init) m.init(this);
+            });
+        }
+        this.format = this.options.interpolation.format;
+        if (!callback) callback = noop;
+        if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {
+            const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);
+            if (codes.length > 0 && codes[0] !== "dev") this.options.lng = codes[0];
+        }
+        if (!this.services.languageDetector && !this.options.lng) {
+            this.logger.warn("init: no languageDetector is used and no lng is defined");
+        }
+        const storeApi = [
+            "getResource",
+            "hasResourceBundle",
+            "getResourceBundle",
+            "getDataByLanguage"
+        ];
+        storeApi.forEach((fcName)=>{
+            this[fcName] = function() {
+                return _this.store[fcName](...arguments);
+            };
+        });
+        const storeApiChained = [
+            "addResource",
+            "addResources",
+            "addResourceBundle",
+            "removeResourceBundle"
+        ];
+        storeApiChained.forEach((fcName)=>{
+            this[fcName] = function() {
+                _this.store[fcName](...arguments);
+                return _this;
+            };
+        });
+        const deferred = defer();
+        const load = ()=>{
+            const finish = (err, t2)=>{
+                if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn("init: i18next is already initialized. You should call init just once!");
+                this.isInitialized = true;
+                if (!this.options.isClone) this.logger.log("initialized", this.options);
+                this.emit("initialized", this.options);
+                deferred.resolve(t2);
+                callback(err, t2);
+            };
+            if (this.languages && this.options.compatibilityAPI !== "v1" && !this.isInitialized) return finish(null, this.t.bind(this));
+            this.changeLanguage(this.options.lng, finish);
+        };
+        if (this.options.resources || !this.options.initImmediate) {
+            load();
+        } else {
+            setTimeout(load, 0);
+        }
+        return deferred;
+    }
+    loadResources(language) {
+        let callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : noop;
+        let usedCallback = callback;
+        const usedLng = typeof language === "string" ? language : this.language;
+        if (typeof language === "function") usedCallback = language;
+        if (!this.options.resources || this.options.partialBundledLanguages) {
+            if (usedLng && usedLng.toLowerCase() === "cimode" && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();
+            const toLoad = [];
+            const append = (lng)=>{
+                if (!lng) return;
+                if (lng === "cimode") return;
+                const lngs = this.services.languageUtils.toResolveHierarchy(lng);
+                lngs.forEach((l)=>{
+                    if (l === "cimode") return;
+                    if (toLoad.indexOf(l) < 0) toLoad.push(l);
+                });
+            };
+            if (!usedLng) {
+                const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);
+                fallbacks.forEach((l)=>append(l));
+            } else {
+                append(usedLng);
+            }
+            if (this.options.preload) {
+                this.options.preload.forEach((l)=>append(l));
+            }
+            this.services.backendConnector.load(toLoad, this.options.ns, (e)=>{
+                if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);
+                usedCallback(e);
+            });
+        } else {
+            usedCallback(null);
+        }
+    }
+    reloadResources(lngs, ns, callback) {
+        const deferred = defer();
+        if (!lngs) lngs = this.languages;
+        if (!ns) ns = this.options.ns;
+        if (!callback) callback = noop;
+        this.services.backendConnector.reload(lngs, ns, (err)=>{
+            deferred.resolve();
+            callback(err);
+        });
+        return deferred;
+    }
+    use(module) {
+        if (!module) throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");
+        if (!module.type) throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");
+        if (module.type === "backend") {
+            this.modules.backend = module;
+        }
+        if (module.type === "logger" || module.log && module.warn && module.error) {
+            this.modules.logger = module;
+        }
+        if (module.type === "languageDetector") {
+            this.modules.languageDetector = module;
+        }
+        if (module.type === "i18nFormat") {
+            this.modules.i18nFormat = module;
+        }
+        if (module.type === "postProcessor") {
+            postProcessor.addPostProcessor(module);
+        }
+        if (module.type === "formatter") {
+            this.modules.formatter = module;
+        }
+        if (module.type === "3rdParty") {
+            this.modules.external.push(module);
+        }
+        return this;
+    }
+    setResolvedLanguage(l) {
+        if (!l || !this.languages) return;
+        if ([
+            "cimode",
+            "dev"
+        ].indexOf(l) > -1) return;
+        for(let li = 0; li < this.languages.length; li++){
+            const lngInLngs = this.languages[li];
+            if ([
+                "cimode",
+                "dev"
+            ].indexOf(lngInLngs) > -1) continue;
+            if (this.store.hasLanguageSomeTranslations(lngInLngs)) {
+                this.resolvedLanguage = lngInLngs;
+                break;
+            }
+        }
+    }
+    changeLanguage(lng, callback) {
+        var _this2 = this;
+        this.isLanguageChangingTo = lng;
+        const deferred = defer();
+        this.emit("languageChanging", lng);
+        const setLngProps = (l)=>{
+            this.language = l;
+            this.languages = this.services.languageUtils.toResolveHierarchy(l);
+            this.resolvedLanguage = void 0;
+            this.setResolvedLanguage(l);
+        };
+        const done = (err, l)=>{
+            if (l) {
+                setLngProps(l);
+                this.translator.changeLanguage(l);
+                this.isLanguageChangingTo = void 0;
+                this.emit("languageChanged", l);
+                this.logger.log("languageChanged", l);
+            } else {
+                this.isLanguageChangingTo = void 0;
+            }
+            deferred.resolve(function() {
+                return _this2.t(...arguments);
+            });
+            if (callback) callback(err, function() {
+                return _this2.t(...arguments);
+            });
+        };
+        const setLng = (lngs)=>{
+            if (!lng && !lngs && this.services.languageDetector) lngs = [];
+            const l = typeof lngs === "string" ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);
+            if (l) {
+                if (!this.language) {
+                    setLngProps(l);
+                }
+                if (!this.translator.language) this.translator.changeLanguage(l);
+                if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);
+            }
+            this.loadResources(l, (err)=>{
+                done(err, l);
+            });
+        };
+        if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {
+            setLng(this.services.languageDetector.detect());
+        } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {
+            if (this.services.languageDetector.detect.length === 0) {
+                this.services.languageDetector.detect().then(setLng);
+            } else {
+                this.services.languageDetector.detect(setLng);
+            }
+        } else {
+            setLng(lng);
+        }
+        return deferred;
+    }
+    getFixedT(lng, ns, keyPrefix) {
+        var _this3 = this;
+        const fixedT = function(key, opts) {
+            let options;
+            if (typeof opts !== "object") {
+                for(var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++){
+                    rest[_key3 - 2] = arguments[_key3];
+                }
+                options = _this3.options.overloadTranslationOptionHandler([
+                    key,
+                    opts
+                ].concat(rest));
+            } else {
+                options = _objectSpread({}, opts);
+            }
+            options.lng = options.lng || fixedT.lng;
+            options.lngs = options.lngs || fixedT.lngs;
+            options.ns = options.ns || fixedT.ns;
+            options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;
+            const keySeparator = _this3.options.keySeparator || ".";
+            let resultKey;
+            if (options.keyPrefix && Array.isArray(key)) {
+                resultKey = key.map((k)=>`${options.keyPrefix}${keySeparator}${k}`);
+            } else {
+                resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;
+            }
+            return _this3.t(resultKey, options);
+        };
+        if (typeof lng === "string") {
+            fixedT.lng = lng;
+        } else {
+            fixedT.lngs = lng;
+        }
+        fixedT.ns = ns;
+        fixedT.keyPrefix = keyPrefix;
+        return fixedT;
+    }
+    t() {
+        return this.translator && this.translator.translate(...arguments);
+    }
+    exists() {
+        return this.translator && this.translator.exists(...arguments);
+    }
+    setDefaultNamespace(ns) {
+        this.options.defaultNS = ns;
+    }
+    hasLoadedNamespace(ns) {
+        let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+        if (!this.isInitialized) {
+            this.logger.warn("hasLoadedNamespace: i18next was not initialized", this.languages);
+            return false;
+        }
+        if (!this.languages || !this.languages.length) {
+            this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty", this.languages);
+            return false;
+        }
+        const lng = options.lng || this.resolvedLanguage || this.languages[0];
+        const fallbackLng = this.options ? this.options.fallbackLng : false;
+        const lastLng = this.languages[this.languages.length - 1];
+        if (lng.toLowerCase() === "cimode") return true;
+        const loadNotPending = (l, n)=>{
+            const loadState = this.services.backendConnector.state[`${l}|${n}`];
+            return loadState === -1 || loadState === 2;
+        };
+        if (options.precheck) {
+            const preResult = options.precheck(this, loadNotPending);
+            if (preResult !== void 0) return preResult;
+        }
+        if (this.hasResourceBundle(lng, ns)) return true;
+        if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;
+        if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;
+        return false;
+    }
+    loadNamespaces(ns, callback) {
+        const deferred = defer();
+        if (!this.options.ns) {
+            if (callback) callback();
+            return Promise.resolve();
+        }
+        if (typeof ns === "string") ns = [
+            ns
+        ];
+        ns.forEach((n)=>{
+            if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);
+        });
+        this.loadResources((err)=>{
+            deferred.resolve();
+            if (callback) callback(err);
+        });
+        return deferred;
+    }
+    loadLanguages(lngs, callback) {
+        const deferred = defer();
+        if (typeof lngs === "string") lngs = [
+            lngs
+        ];
+        const preloaded = this.options.preload || [];
+        const newLngs = lngs.filter((lng)=>preloaded.indexOf(lng) < 0);
+        if (!newLngs.length) {
+            if (callback) callback();
+            return Promise.resolve();
+        }
+        this.options.preload = preloaded.concat(newLngs);
+        this.loadResources((err)=>{
+            deferred.resolve();
+            if (callback) callback(err);
+        });
+        return deferred;
+    }
+    dir(lng) {
+        if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);
+        if (!lng) return "rtl";
+        const rtlLngs = [
+            "ar",
+            "shu",
+            "sqr",
+            "ssh",
+            "xaa",
+            "yhd",
+            "yud",
+            "aao",
+            "abh",
+            "abv",
+            "acm",
+            "acq",
+            "acw",
+            "acx",
+            "acy",
+            "adf",
+            "ads",
+            "aeb",
+            "aec",
+            "afb",
+            "ajp",
+            "apc",
+            "apd",
+            "arb",
+            "arq",
+            "ars",
+            "ary",
+            "arz",
+            "auz",
+            "avl",
+            "ayh",
+            "ayl",
+            "ayn",
+            "ayp",
+            "bbz",
+            "pga",
+            "he",
+            "iw",
+            "ps",
+            "pbt",
+            "pbu",
+            "pst",
+            "prp",
+            "prd",
+            "ug",
+            "ur",
+            "ydd",
+            "yds",
+            "yih",
+            "ji",
+            "yi",
+            "hbo",
+            "men",
+            "xmn",
+            "fa",
+            "jpr",
+            "peo",
+            "pes",
+            "prs",
+            "dv",
+            "sam",
+            "ckb"
+        ];
+        const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());
+        return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf("-arab") > 1 ? "rtl" : "ltr";
+    }
+    static createInstance() {
+        let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+        let callback = arguments.length > 1 ? arguments[1] : void 0;
+        return new I18n(options, callback);
+    }
+    cloneInstance() {
+        let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+        let callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : noop;
+        const forkResourceStore = options.forkResourceStore;
+        if (forkResourceStore) delete options.forkResourceStore;
+        const mergedOptions = _objectSpread({}, this.options, options, {
+            isClone: true
+        });
+        const clone = new I18n(mergedOptions);
+        if (options.debug !== void 0 || options.prefix !== void 0) {
+            clone.logger = clone.logger.clone(options);
+        }
+        const membersToCopy = [
+            "store",
+            "services",
+            "language"
+        ];
+        membersToCopy.forEach((m)=>{
+            clone[m] = this[m];
+        });
+        clone.services = _objectSpread({}, this.services);
+        clone.services.utils = {
+            hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
+        };
+        if (forkResourceStore) {
+            clone.store = new ResourceStore(this.store.data, mergedOptions);
+            clone.services.resourceStore = clone.store;
+        }
+        clone.translator = new Translator(clone.services, mergedOptions);
+        clone.translator.on("*", function(event) {
+            for(var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++){
+                args[_key4 - 1] = arguments[_key4];
+            }
+            clone.emit(event, ...args);
+        });
+        clone.init(mergedOptions, callback);
+        clone.translator.options = mergedOptions;
+        clone.translator.backendConnector.services.utils = {
+            hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
+        };
+        return clone;
+    }
+    toJSON() {
+        return {
+            options: this.options,
+            store: this.store,
+            language: this.language,
+            languages: this.languages,
+            resolvedLanguage: this.resolvedLanguage
+        };
+    }
+    constructor(){
+        let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+        let callback = arguments.length > 1 ? arguments[1] : void 0;
+        super();
+        this.options = transformOptions(options);
+        this.services = {};
+        this.logger = baseLogger;
+        this.modules = {
+            external: []
+        };
+        bindMemberFunctions(this);
+        if (callback && !this.isInitialized && !options.isClone) {
+            if (!this.options.initImmediate) {
+                this.init(options, callback);
+                return this;
+            }
+            setTimeout(()=>{
+                this.init(options, callback);
+            }, 0);
+        }
+    }
+};
+var instance = I18n.createInstance();
+instance.createInstance = I18n.createInstance;
+var createInstance = instance.createInstance;
+var dir = instance.dir;
+var init = instance.init;
+var loadResources = instance.loadResources;
+var reloadResources = instance.reloadResources;
+var use = instance.use;
+var changeLanguage = instance.changeLanguage;
+var getFixedT = instance.getFixedT;
+var t = instance.t;
+var exists = instance.exists;
+var setDefaultNamespace = instance.setDefaultNamespace;
+var hasLoadedNamespace = instance.hasLoadedNamespace;
+var loadNamespaces = instance.loadNamespaces;
+var loadLanguages = instance.loadLanguages;
+// entry:i18next
+var i18next_default = instance;
+
+
+
+/***/ })
+
+}]);

+ 988 - 0
dist/prebundle/vendors-node_modules_taro_weapp_prebundle_react-i18next_js.js

@@ -0,0 +1,988 @@
+"use strict";
+(wx["webpackJsonp"] = wx["webpackJsonp"] || []).push([["vendors-node_modules_taro_weapp_prebundle_react-i18next_js"],{
+
+/***/ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js ***!
+  \**************************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   __commonJS: function() { return /* binding */ __commonJS; },
+/* harmony export */   __esm: function() { return /* binding */ __esm; },
+/* harmony export */   __export: function() { return /* binding */ __export; },
+/* harmony export */   __toCommonJS: function() { return /* binding */ __toCommonJS; },
+/* harmony export */   __toESM: function() { return /* binding */ __toESM; }
+/* harmony export */ });
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __esm = (fn, res)=>function __init() {
+        return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
+    };
+var __commonJS = (cb, mod)=>function __require() {
+        return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = {
+            exports: {}
+        }).exports, mod), mod.exports;
+    };
+var __export = (target, all)=>{
+    for(var name in all)__defProp(target, name, {
+        get: all[name],
+        enumerable: true
+    });
+};
+var __copyProps = (to, from, except, desc)=>{
+    if (from && typeof from === "object" || typeof from === "function") {
+        for (let key of __getOwnPropNames(from))if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
+            get: ()=>from[key],
+            enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
+        });
+    }
+    return to;
+};
+var __toESM = (mod, isNodeMode, target)=>(target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
+        value: mod,
+        enumerable: true
+    }) : target, mod));
+var __toCommonJS = (mod)=>__copyProps(__defProp({}, "__esModule", {
+        value: true
+    }), mod);
+
+
+
+/***/ }),
+
+/***/ "./node_modules/.taro/weapp/prebundle/react-i18next.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/.taro/weapp/prebundle/react-i18next.js ***!
+  \*************************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   I18nContext: function() { return /* binding */ I18nContext; },
+/* harmony export */   I18nextProvider: function() { return /* binding */ I18nextProvider; },
+/* harmony export */   Trans: function() { return /* binding */ Trans2; },
+/* harmony export */   TransWithoutContext: function() { return /* binding */ Trans; },
+/* harmony export */   Translation: function() { return /* binding */ Translation; },
+/* harmony export */   composeInitialProps: function() { return /* binding */ composeInitialProps; },
+/* harmony export */   date: function() { return /* binding */ date; },
+/* harmony export */   getDefaults: function() { return /* binding */ getDefaults; },
+/* harmony export */   getI18n: function() { return /* binding */ getI18n; },
+/* harmony export */   getInitialProps: function() { return /* binding */ getInitialProps; },
+/* harmony export */   initReactI18next: function() { return /* binding */ initReactI18next; },
+/* harmony export */   number: function() { return /* binding */ number; },
+/* harmony export */   plural: function() { return /* binding */ plural; },
+/* harmony export */   select: function() { return /* binding */ select; },
+/* harmony export */   selectOrdinal: function() { return /* binding */ selectOrdinal; },
+/* harmony export */   setDefaults: function() { return /* binding */ setDefaults; },
+/* harmony export */   setI18n: function() { return /* binding */ setI18n; },
+/* harmony export */   time: function() { return /* binding */ time; },
+/* harmony export */   useSSR: function() { return /* binding */ useSSR; },
+/* harmony export */   useTranslation: function() { return /* binding */ useTranslation; },
+/* harmony export */   withSSR: function() { return /* binding */ withSSR; },
+/* harmony export */   withTranslation: function() { return /* binding */ withTranslation; }
+/* harmony export */ });
+/* harmony import */ var _chunk_LNJCN3VW_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-LNJCN3VW.js */ "./node_modules/.taro/weapp/prebundle/chunk-LNJCN3VW.js");
+/* harmony import */ var _chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-P7VEE7PG.js */ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js");
+function _defineProperty(obj, key, value) {
+    if (key in obj) {
+        Object.defineProperty(obj, key, {
+            value: value,
+            enumerable: true,
+            configurable: true,
+            writable: true
+        });
+    } else {
+        obj[key] = value;
+    }
+    return obj;
+}
+function _objectSpread(target) {
+    for(var i = 1; i < arguments.length; i++){
+        var source = arguments[i] != null ? arguments[i] : {};
+        var ownKeys = Object.keys(source);
+        if (typeof Object.getOwnPropertySymbols === 'function') {
+            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
+                return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+            }));
+        }
+        ownKeys.forEach(function(key) {
+            _defineProperty(target, key, source[key]);
+        });
+    }
+    return target;
+}
+function ownKeys(object, enumerableOnly) {
+    var keys = Object.keys(object);
+    if (Object.getOwnPropertySymbols) {
+        var symbols = Object.getOwnPropertySymbols(object);
+        if (enumerableOnly) {
+            symbols = symbols.filter(function(sym) {
+                return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+            });
+        }
+        keys.push.apply(keys, symbols);
+    }
+    return keys;
+}
+function _objectSpreadProps(target, source) {
+    source = source != null ? source : {};
+    if (Object.getOwnPropertyDescriptors) {
+        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+    } else {
+        ownKeys(Object(source)).forEach(function(key) {
+            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+        });
+    }
+    return target;
+}
+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;
+}
+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;
+}
+
+
+// node_modules/void-elements/index.js
+var require_void_elements = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__.__commonJS)({
+    "node_modules/void-elements/index.js" (exports, module) {
+        module.exports = {
+            "area": true,
+            "base": true,
+            "br": true,
+            "col": true,
+            "embed": true,
+            "hr": true,
+            "img": true,
+            "input": true,
+            "link": true,
+            "meta": true,
+            "param": true,
+            "source": true,
+            "track": true,
+            "wbr": true
+        };
+    }
+});
+// node_modules/react-i18next/dist/es/Trans.js
+var import_react3 = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__.__toESM)((0,_chunk_LNJCN3VW_js__WEBPACK_IMPORTED_MODULE_0__.require_react_production_min)(), 1);
+// node_modules/@babel/runtime/helpers/esm/extends.js
+function _extends() {
+    _extends = Object.assign ? Object.assign.bind() : function(target) {
+        for(var i2 = 1; i2 < arguments.length; i2++){
+            var source = arguments[i2];
+            for(var key in source){
+                if (Object.prototype.hasOwnProperty.call(source, key)) {
+                    target[key] = source[key];
+                }
+            }
+        }
+        return target;
+    };
+    return _extends.apply(this, arguments);
+}
+// node_modules/react-i18next/dist/es/TransWithoutContext.js
+var import_react = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__.__toESM)((0,_chunk_LNJCN3VW_js__WEBPACK_IMPORTED_MODULE_0__.require_react_production_min)(), 1);
+// node_modules/html-parse-stringify/dist/html-parse-stringify.module.js
+var import_void_elements = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__.__toESM)(require_void_elements());
+var t = /\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;
+function n(n2) {
+    var r2 = {
+        type: "tag",
+        name: "",
+        voidElement: false,
+        attrs: {},
+        children: []
+    }, i2 = n2.match(/<\/?([^\s]+?)[/\s>]/);
+    if (i2 && (r2.name = i2[1], (import_void_elements.default[i2[1]] || "/" === n2.charAt(n2.length - 2)) && (r2.voidElement = true), r2.name.startsWith("!--"))) {
+        var s2 = n2.indexOf("-->");
+        return {
+            type: "comment",
+            comment: -1 !== s2 ? n2.slice(4, s2) : ""
+        };
+    }
+    for(var a2 = new RegExp(t), c2 = null; null !== (c2 = a2.exec(n2));)if (c2[0].trim()) if (c2[1]) {
+        var o = c2[1].trim(), l = [
+            o,
+            ""
+        ];
+        o.indexOf("=") > -1 && (l = o.split("=")), r2.attrs[l[0]] = l[1], a2.lastIndex--;
+    } else c2[2] && (r2.attrs[c2[2]] = c2[3].trim().substring(1, c2[3].length - 1));
+    return r2;
+}
+var r = /<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g;
+var i = /^\s*$/;
+var s = /* @__PURE__ */ Object.create(null);
+function a(e2, t2) {
+    switch(t2.type){
+        case "text":
+            return e2 + t2.content;
+        case "tag":
+            return e2 += "<" + t2.name + (t2.attrs ? function(e3) {
+                var t3 = [];
+                for(var n2 in e3)t3.push(n2 + '="' + e3[n2] + '"');
+                return t3.length ? " " + t3.join(" ") : "";
+            }(t2.attrs) : "") + (t2.voidElement ? "/>" : ">"), t2.voidElement ? e2 : e2 + t2.children.reduce(a, "") + "</" + t2.name + ">";
+        case "comment":
+            return e2 + "<!--" + t2.comment + "-->";
+    }
+}
+var c = {
+    parse: function(e2, t2) {
+        t2 || (t2 = {}), t2.components || (t2.components = s);
+        var a2, c2 = [], o = [], l = -1, m = false;
+        if (0 !== e2.indexOf("<")) {
+            var u = e2.indexOf("<");
+            c2.push({
+                type: "text",
+                content: -1 === u ? e2 : e2.substring(0, u)
+            });
+        }
+        return e2.replace(r, function(r2, s2) {
+            if (m) {
+                if (r2 !== "</" + a2.name + ">") return;
+                m = false;
+            }
+            var u2, f = "/" !== r2.charAt(1), h = r2.startsWith("<!--"), p = s2 + r2.length, d = e2.charAt(p);
+            if (h) {
+                var v = n(r2);
+                return l < 0 ? (c2.push(v), c2) : ((u2 = o[l]).children.push(v), c2);
+            }
+            if (f && (l++, "tag" === (a2 = n(r2)).type && t2.components[a2.name] && (a2.type = "component", m = true), a2.voidElement || m || !d || "<" === d || a2.children.push({
+                type: "text",
+                content: e2.slice(p, e2.indexOf("<", p))
+            }), 0 === l && c2.push(a2), (u2 = o[l - 1]) && u2.children.push(a2), o[l] = a2), (!f || a2.voidElement) && (l > -1 && (a2.voidElement || a2.name === r2.slice(2, -1)) && (l--, a2 = -1 === l ? c2 : o[l]), !m && "<" !== d && d)) {
+                u2 = -1 === l ? c2 : o[l].children;
+                var x = e2.indexOf("<", p), g = e2.slice(p, -1 === x ? void 0 : x);
+                i.test(g) && (g = " "), (x > -1 && l + u2.length >= 0 || " " !== g) && u2.push({
+                    type: "text",
+                    content: g
+                });
+            }
+        }), c2;
+    },
+    stringify: function(e2) {
+        return e2.reduce(function(e3, t2) {
+            return e3 + a("", t2);
+        }, "");
+    }
+};
+var html_parse_stringify_module_default = c;
+// node_modules/react-i18next/dist/es/utils.js
+function warn() {
+    if (console && console.warn) {
+        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
+            args[_key] = arguments[_key];
+        }
+        if (typeof args[0] === "string") args[0] = `react-i18next:: ${args[0]}`;
+        console.warn(...args);
+    }
+}
+var alreadyWarned = {};
+function warnOnce() {
+    for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){
+        args[_key2] = arguments[_key2];
+    }
+    if (typeof args[0] === "string" && alreadyWarned[args[0]]) return;
+    if (typeof args[0] === "string") alreadyWarned[args[0]] = new Date();
+    warn(...args);
+}
+var loadedClb = (i18n, cb)=>()=>{
+        if (i18n.isInitialized) {
+            cb();
+        } else {
+            const initialized = ()=>{
+                setTimeout(()=>{
+                    i18n.off("initialized", initialized);
+                }, 0);
+                cb();
+            };
+            i18n.on("initialized", initialized);
+        }
+    };
+function loadNamespaces(i18n, ns, cb) {
+    i18n.loadNamespaces(ns, loadedClb(i18n, cb));
+}
+function loadLanguages(i18n, lng, ns, cb) {
+    if (typeof ns === "string") ns = [
+        ns
+    ];
+    ns.forEach((n2)=>{
+        if (i18n.options.ns.indexOf(n2) < 0) i18n.options.ns.push(n2);
+    });
+    i18n.loadLanguages(lng, loadedClb(i18n, cb));
+}
+function oldI18nextHasLoadedNamespace(ns, i18n) {
+    let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+    const lng = i18n.languages[0];
+    const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;
+    const lastLng = i18n.languages[i18n.languages.length - 1];
+    if (lng.toLowerCase() === "cimode") return true;
+    const loadNotPending = (l, n2)=>{
+        const loadState = i18n.services.backendConnector.state[`${l}|${n2}`];
+        return loadState === -1 || loadState === 2;
+    };
+    if (options.bindI18n && options.bindI18n.indexOf("languageChanging") > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;
+    if (i18n.hasResourceBundle(lng, ns)) return true;
+    if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;
+    if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;
+    return false;
+}
+function hasLoadedNamespace(ns, i18n) {
+    let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+    if (!i18n.languages || !i18n.languages.length) {
+        warnOnce("i18n.languages were undefined or empty", i18n.languages);
+        return true;
+    }
+    const isNewerI18next = i18n.options.ignoreJSONStructure !== void 0;
+    if (!isNewerI18next) {
+        return oldI18nextHasLoadedNamespace(ns, i18n, options);
+    }
+    return i18n.hasLoadedNamespace(ns, {
+        lng: options.lng,
+        precheck: (i18nInstance2, loadNotPending)=>{
+            if (options.bindI18n && options.bindI18n.indexOf("languageChanging") > -1 && i18nInstance2.services.backendConnector.backend && i18nInstance2.isLanguageChangingTo && !loadNotPending(i18nInstance2.isLanguageChangingTo, ns)) return false;
+        }
+    });
+}
+function getDisplayName(Component) {
+    return Component.displayName || Component.name || (typeof Component === "string" && Component.length > 0 ? Component : "Unknown");
+}
+// node_modules/react-i18next/dist/es/unescape.js
+var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;
+var htmlEntities = {
+    "&amp;": "&",
+    "&#38;": "&",
+    "&lt;": "<",
+    "&#60;": "<",
+    "&gt;": ">",
+    "&#62;": ">",
+    "&apos;": "'",
+    "&#39;": "'",
+    "&quot;": '"',
+    "&#34;": '"',
+    "&nbsp;": " ",
+    "&#160;": " ",
+    "&copy;": "\xA9",
+    "&#169;": "\xA9",
+    "&reg;": "\xAE",
+    "&#174;": "\xAE",
+    "&hellip;": "\u2026",
+    "&#8230;": "\u2026",
+    "&#x2F;": "/",
+    "&#47;": "/"
+};
+var unescapeHtmlEntity = (m)=>htmlEntities[m];
+var unescape = (text)=>text.replace(matchHtmlEntity, unescapeHtmlEntity);
+// node_modules/react-i18next/dist/es/defaults.js
+var defaultOptions = {
+    bindI18n: "languageChanged",
+    bindI18nStore: "",
+    transEmptyNodeValue: "",
+    transSupportBasicHtmlNodes: true,
+    transWrapTextNodes: "",
+    transKeepBasicHtmlNodesFor: [
+        "br",
+        "strong",
+        "i",
+        "p"
+    ],
+    useSuspense: true,
+    unescape
+};
+function setDefaults() {
+    let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+    defaultOptions = _objectSpread({}, defaultOptions, options);
+}
+function getDefaults() {
+    return defaultOptions;
+}
+// node_modules/react-i18next/dist/es/i18nInstance.js
+var i18nInstance;
+function setI18n(instance) {
+    i18nInstance = instance;
+}
+function getI18n() {
+    return i18nInstance;
+}
+// node_modules/react-i18next/dist/es/TransWithoutContext.js
+function hasChildren(node, checkLength) {
+    if (!node) return false;
+    const base = node.props ? node.props.children : node.children;
+    if (checkLength) return base.length > 0;
+    return !!base;
+}
+function getChildren(node) {
+    if (!node) return [];
+    const children = node.props ? node.props.children : node.children;
+    return node.props && node.props.i18nIsDynamicList ? getAsArray(children) : children;
+}
+function hasValidReactChildren(children) {
+    if (Object.prototype.toString.call(children) !== "[object Array]") return false;
+    return children.every((child)=>(0, import_react.isValidElement)(child));
+}
+function getAsArray(data) {
+    return Array.isArray(data) ? data : [
+        data
+    ];
+}
+function mergeProps(source, target) {
+    const newTarget = _objectSpread({}, target);
+    newTarget.props = Object.assign(source.props, target.props);
+    return newTarget;
+}
+function nodesToString(children, i18nOptions) {
+    if (!children) return "";
+    let stringNode = "";
+    const childrenArray = getAsArray(children);
+    const keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : [];
+    childrenArray.forEach((child, childIndex)=>{
+        if (typeof child === "string") {
+            stringNode += `${child}`;
+        } else if ((0, import_react.isValidElement)(child)) {
+            const childPropsCount = Object.keys(child.props).length;
+            const shouldKeepChild = keepArray.indexOf(child.type) > -1;
+            const childChildren = child.props.children;
+            if (!childChildren && shouldKeepChild && childPropsCount === 0) {
+                stringNode += `<${child.type}/>`;
+            } else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {
+                stringNode += `<${childIndex}></${childIndex}>`;
+            } else if (child.props.i18nIsDynamicList) {
+                stringNode += `<${childIndex}></${childIndex}>`;
+            } else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === "string") {
+                stringNode += `<${child.type}>${childChildren}</${child.type}>`;
+            } else {
+                const content = nodesToString(childChildren, i18nOptions);
+                stringNode += `<${childIndex}>${content}</${childIndex}>`;
+            }
+        } else if (child === null) {
+            warn(`Trans: the passed in value is invalid - seems you passed in a null child.`);
+        } else if (typeof child === "object") {
+            const { format  } = child, clone = _objectWithoutProperties(child, [
+                "format"
+            ]);
+            const keys = Object.keys(clone);
+            if (keys.length === 1) {
+                const value = format ? `${keys[0]}, ${format}` : keys[0];
+                stringNode += `{{${value}}}`;
+            } else {
+                warn(`react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.`, child);
+            }
+        } else {
+            warn(`Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.`, child);
+        }
+    });
+    return stringNode;
+}
+function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) {
+    if (targetString === "") return [];
+    const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];
+    const emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.map((keep)=>`<${keep}`).join("|")).test(targetString);
+    if (!children && !emptyChildrenButNeedsHandling && !shouldUnescape) return [
+        targetString
+    ];
+    const data = {};
+    function getData(childs) {
+        const childrenArray = getAsArray(childs);
+        childrenArray.forEach((child)=>{
+            if (typeof child === "string") return;
+            if (hasChildren(child)) getData(getChildren(child));
+            else if (typeof child === "object" && !(0, import_react.isValidElement)(child)) Object.assign(data, child);
+        });
+    }
+    getData(children);
+    const ast = html_parse_stringify_module_default.parse(`<0>${targetString}</0>`);
+    const opts = _objectSpread({}, data, combinedTOpts);
+    function renderInner(child, node, rootReactNode) {
+        const childs = getChildren(child);
+        const mappedChildren = mapAST(childs, node.children, rootReactNode);
+        return hasValidReactChildren(childs) && mappedChildren.length === 0 || child.props && child.props.i18nIsDynamicList ? childs : mappedChildren;
+    }
+    function pushTranslatedJSX(child, inner, mem, i2, isVoid) {
+        if (child.dummy) {
+            child.children = inner;
+            mem.push((0, import_react.cloneElement)(child, {
+                key: i2
+            }, isVoid ? void 0 : inner));
+        } else {
+            mem.push(...import_react.Children.map([
+                child
+            ], (c2)=>{
+                const props = _objectSpread({}, c2.props);
+                delete props.i18nIsDynamicList;
+                return import_react.default.createElement(c2.type, _extends({}, props, {
+                    key: i2,
+                    ref: c2.ref
+                }, isVoid ? {} : {
+                    children: inner
+                }));
+            }));
+        }
+    }
+    function mapAST(reactNode, astNode, rootReactNode) {
+        const reactNodes = getAsArray(reactNode);
+        const astNodes = getAsArray(astNode);
+        return astNodes.reduce((mem, node, i2)=>{
+            const translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);
+            if (node.type === "tag") {
+                let tmp = reactNodes[parseInt(node.name, 10)];
+                if (rootReactNode.length === 1 && !tmp) tmp = rootReactNode[0][node.name];
+                if (!tmp) tmp = {};
+                const child = Object.keys(node.attrs).length !== 0 ? mergeProps({
+                    props: node.attrs
+                }, tmp) : tmp;
+                const isElement = (0, import_react.isValidElement)(child);
+                const isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;
+                const isEmptyTransWithHTML = emptyChildrenButNeedsHandling && typeof child === "object" && child.dummy && !isElement;
+                const isKnownComponent = typeof children === "object" && children !== null && Object.hasOwnProperty.call(children, node.name);
+                if (typeof child === "string") {
+                    const value = i18n.services.interpolator.interpolate(child, opts, i18n.language);
+                    mem.push(value);
+                } else if (hasChildren(child) || isValidTranslationWithChildren) {
+                    const inner = renderInner(child, node, rootReactNode);
+                    pushTranslatedJSX(child, inner, mem, i2);
+                } else if (isEmptyTransWithHTML) {
+                    const inner1 = mapAST(reactNodes, node.children, rootReactNode);
+                    pushTranslatedJSX(child, inner1, mem, i2);
+                } else if (Number.isNaN(parseFloat(node.name))) {
+                    if (isKnownComponent) {
+                        const inner2 = renderInner(child, node, rootReactNode);
+                        pushTranslatedJSX(child, inner2, mem, i2, node.voidElement);
+                    } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {
+                        if (node.voidElement) {
+                            mem.push((0, import_react.createElement)(node.name, {
+                                key: `${node.name}-${i2}`
+                            }));
+                        } else {
+                            const inner3 = mapAST(reactNodes, node.children, rootReactNode);
+                            mem.push((0, import_react.createElement)(node.name, {
+                                key: `${node.name}-${i2}`
+                            }, inner3));
+                        }
+                    } else if (node.voidElement) {
+                        mem.push(`<${node.name} />`);
+                    } else {
+                        const inner4 = mapAST(reactNodes, node.children, rootReactNode);
+                        mem.push(`<${node.name}>${inner4}</${node.name}>`);
+                    }
+                } else if (typeof child === "object" && !isElement) {
+                    const content = node.children[0] ? translationContent : null;
+                    if (content) mem.push(content);
+                } else {
+                    pushTranslatedJSX(child, translationContent, mem, i2, node.children.length !== 1 || !translationContent);
+                }
+            } else if (node.type === "text") {
+                const wrapTextNodes = i18nOptions.transWrapTextNodes;
+                const content1 = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);
+                if (wrapTextNodes) {
+                    mem.push((0, import_react.createElement)(wrapTextNodes, {
+                        key: `${node.name}-${i2}`
+                    }, content1));
+                } else {
+                    mem.push(content1);
+                }
+            }
+            return mem;
+        }, []);
+    }
+    const result = mapAST([
+        {
+            dummy: true,
+            children: children || []
+        }
+    ], ast, getAsArray(children || []));
+    return getChildren(result[0]);
+}
+function Trans(_ref) {
+    let { children , count , parent , i18nKey , context , tOptions ={} , values , defaults , components , ns , i18n: i18nFromProps , t: tFromProps , shouldUnescape  } = _ref, additionalProps = _objectWithoutProperties(_ref, [
+        "children",
+        "count",
+        "parent",
+        "i18nKey",
+        "context",
+        "tOptions",
+        "values",
+        "defaults",
+        "components",
+        "ns",
+        "i18n",
+        "t",
+        "shouldUnescape"
+    ]);
+    const i18n = i18nFromProps || getI18n();
+    if (!i18n) {
+        warnOnce("You will need to pass in an i18next instance by using i18nextReactModule");
+        return children;
+    }
+    const t2 = tFromProps || i18n.t.bind(i18n) || ((k)=>k);
+    if (context) tOptions.context = context;
+    const reactI18nextOptions = _objectSpread({}, getDefaults(), i18n.options && i18n.options.react);
+    let namespaces = ns || t2.ns || i18n.options && i18n.options.defaultNS;
+    namespaces = typeof namespaces === "string" ? [
+        namespaces
+    ] : namespaces || [
+        "translation"
+    ];
+    const nodeAsString = nodesToString(children, reactI18nextOptions);
+    const defaultValue = defaults || nodeAsString || reactI18nextOptions.transEmptyNodeValue || i18nKey;
+    const { hashTransKey  } = reactI18nextOptions;
+    const key = i18nKey || (hashTransKey ? hashTransKey(nodeAsString || defaultValue) : nodeAsString || defaultValue);
+    const interpolationOverride = values ? tOptions.interpolation : {
+        interpolation: _objectSpreadProps(_objectSpread({}, tOptions.interpolation), {
+            prefix: "#$?",
+            suffix: "?$#"
+        })
+    };
+    const combinedTOpts = _objectSpreadProps(_objectSpread(_objectSpreadProps(_objectSpread({}, tOptions), {
+        count
+    }), values, interpolationOverride), {
+        defaultValue,
+        ns: namespaces
+    });
+    const translation = key ? t2(key, combinedTOpts) : defaultValue;
+    const content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);
+    const useAsParent = parent !== void 0 ? parent : reactI18nextOptions.defaultTransParent;
+    return useAsParent ? (0, import_react.createElement)(useAsParent, additionalProps, content) : content;
+}
+// node_modules/react-i18next/dist/es/context.js
+var import_react2 = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__.__toESM)((0,_chunk_LNJCN3VW_js__WEBPACK_IMPORTED_MODULE_0__.require_react_production_min)(), 1);
+// node_modules/react-i18next/dist/es/initReactI18next.js
+var initReactI18next = {
+    type: "3rdParty",
+    init (instance) {
+        setDefaults(instance.options.react);
+        setI18n(instance);
+    }
+};
+// node_modules/react-i18next/dist/es/context.js
+var I18nContext = (0, import_react2.createContext)();
+var ReportNamespaces = class {
+    addUsedNamespaces(namespaces) {
+        namespaces.forEach((ns)=>{
+            if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;
+        });
+    }
+    getUsedNamespaces() {
+        return Object.keys(this.usedNamespaces);
+    }
+    constructor(){
+        this.usedNamespaces = {};
+    }
+};
+function composeInitialProps(ForComponent) {
+    return (ctx)=>new Promise((resolve)=>{
+            const i18nInitialProps = getInitialProps();
+            if (ForComponent.getInitialProps) {
+                ForComponent.getInitialProps(ctx).then((componentsInitialProps)=>{
+                    resolve(_objectSpread({}, componentsInitialProps, i18nInitialProps));
+                });
+            } else {
+                resolve(i18nInitialProps);
+            }
+        });
+}
+function getInitialProps() {
+    const i18n = getI18n();
+    const namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];
+    const ret = {};
+    const initialI18nStore = {};
+    i18n.languages.forEach((l)=>{
+        initialI18nStore[l] = {};
+        namespaces.forEach((ns)=>{
+            initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};
+        });
+    });
+    ret.initialI18nStore = initialI18nStore;
+    ret.initialLanguage = i18n.language;
+    return ret;
+}
+// node_modules/react-i18next/dist/es/Trans.js
+function Trans2(_ref) {
+    let { children , count , parent , i18nKey , context , tOptions ={} , values , defaults , components , ns , i18n: i18nFromProps , t: tFromProps , shouldUnescape  } = _ref, additionalProps = _objectWithoutProperties(_ref, [
+        "children",
+        "count",
+        "parent",
+        "i18nKey",
+        "context",
+        "tOptions",
+        "values",
+        "defaults",
+        "components",
+        "ns",
+        "i18n",
+        "t",
+        "shouldUnescape"
+    ]);
+    const { i18n: i18nFromContext , defaultNS: defaultNSFromContext  } = (0, import_react3.useContext)(I18nContext) || {};
+    const i18n = i18nFromProps || i18nFromContext || getI18n();
+    const t2 = tFromProps || i18n && i18n.t.bind(i18n);
+    return Trans(_objectSpread({
+        children,
+        count,
+        parent,
+        i18nKey,
+        context,
+        tOptions,
+        values,
+        defaults,
+        components,
+        ns: ns || t2 && t2.ns || defaultNSFromContext || i18n && i18n.options && i18n.options.defaultNS,
+        i18n,
+        t: tFromProps,
+        shouldUnescape
+    }, additionalProps));
+}
+// node_modules/react-i18next/dist/es/useTranslation.js
+var import_react4 = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__.__toESM)((0,_chunk_LNJCN3VW_js__WEBPACK_IMPORTED_MODULE_0__.require_react_production_min)(), 1);
+var usePrevious = (value, ignore)=>{
+    const ref = (0, import_react4.useRef)();
+    (0, import_react4.useEffect)(()=>{
+        ref.current = ignore ? ref.current : value;
+    }, [
+        value,
+        ignore
+    ]);
+    return ref.current;
+};
+function useTranslation(ns) {
+    let props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+    const { i18n: i18nFromProps  } = props;
+    const { i18n: i18nFromContext , defaultNS: defaultNSFromContext  } = (0, import_react4.useContext)(I18nContext) || {};
+    const i18n = i18nFromProps || i18nFromContext || getI18n();
+    if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();
+    if (!i18n) {
+        warnOnce("You will need to pass in an i18next instance by using initReactI18next");
+        const notReadyT = (k, optsOrDefaultValue)=>{
+            if (typeof optsOrDefaultValue === "string") return optsOrDefaultValue;
+            if (optsOrDefaultValue && typeof optsOrDefaultValue === "object" && typeof optsOrDefaultValue.defaultValue === "string") return optsOrDefaultValue.defaultValue;
+            return Array.isArray(k) ? k[k.length - 1] : k;
+        };
+        const retNotReady = [
+            notReadyT,
+            {},
+            false
+        ];
+        retNotReady.t = notReadyT;
+        retNotReady.i18n = {};
+        retNotReady.ready = false;
+        return retNotReady;
+    }
+    if (i18n.options.react && i18n.options.react.wait !== void 0) warnOnce("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");
+    const i18nOptions = _objectSpread({}, getDefaults(), i18n.options.react, props);
+    const { useSuspense , keyPrefix  } = i18nOptions;
+    let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
+    namespaces = typeof namespaces === "string" ? [
+        namespaces
+    ] : namespaces || [
+        "translation"
+    ];
+    if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);
+    const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every((n2)=>hasLoadedNamespace(n2, i18n, i18nOptions));
+    function getT() {
+        return i18n.getFixedT(props.lng || null, i18nOptions.nsMode === "fallback" ? namespaces : namespaces[0], keyPrefix);
+    }
+    const [t2, setT] = (0, import_react4.useState)(getT);
+    let joinedNS = namespaces.join();
+    if (props.lng) joinedNS = `${props.lng}${joinedNS}`;
+    const previousJoinedNS = usePrevious(joinedNS);
+    const isMounted = (0, import_react4.useRef)(true);
+    (0, import_react4.useEffect)(()=>{
+        const { bindI18n , bindI18nStore  } = i18nOptions;
+        isMounted.current = true;
+        if (!ready && !useSuspense) {
+            if (props.lng) {
+                loadLanguages(i18n, props.lng, namespaces, ()=>{
+                    if (isMounted.current) setT(getT);
+                });
+            } else {
+                loadNamespaces(i18n, namespaces, ()=>{
+                    if (isMounted.current) setT(getT);
+                });
+            }
+        }
+        if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
+            setT(getT);
+        }
+        function boundReset() {
+            if (isMounted.current) setT(getT);
+        }
+        if (bindI18n && i18n) i18n.on(bindI18n, boundReset);
+        if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);
+        return ()=>{
+            isMounted.current = false;
+            if (bindI18n && i18n) bindI18n.split(" ").forEach((e2)=>i18n.off(e2, boundReset));
+            if (bindI18nStore && i18n) bindI18nStore.split(" ").forEach((e2)=>i18n.store.off(e2, boundReset));
+        };
+    }, [
+        i18n,
+        joinedNS
+    ]);
+    const isInitial = (0, import_react4.useRef)(true);
+    (0, import_react4.useEffect)(()=>{
+        if (isMounted.current && !isInitial.current) {
+            setT(getT);
+        }
+        isInitial.current = false;
+    }, [
+        i18n,
+        keyPrefix
+    ]);
+    const ret = [
+        t2,
+        i18n,
+        ready
+    ];
+    ret.t = t2;
+    ret.i18n = i18n;
+    ret.ready = ready;
+    if (ready) return ret;
+    if (!ready && !useSuspense) return ret;
+    throw new Promise((resolve)=>{
+        if (props.lng) {
+            loadLanguages(i18n, props.lng, namespaces, ()=>resolve());
+        } else {
+            loadNamespaces(i18n, namespaces, ()=>resolve());
+        }
+    });
+}
+// node_modules/react-i18next/dist/es/withTranslation.js
+var import_react5 = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__.__toESM)((0,_chunk_LNJCN3VW_js__WEBPACK_IMPORTED_MODULE_0__.require_react_production_min)(), 1);
+function withTranslation(ns) {
+    let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+    return function Extend(WrappedComponent) {
+        function I18nextWithTranslation(_ref) {
+            let { forwardedRef  } = _ref, rest = _objectWithoutProperties(_ref, [
+                "forwardedRef"
+            ]);
+            const [t2, i18n, ready] = useTranslation(ns, _objectSpreadProps(_objectSpread({}, rest), {
+                keyPrefix: options.keyPrefix
+            }));
+            const passDownProps = _objectSpreadProps(_objectSpread({}, rest), {
+                t: t2,
+                i18n,
+                tReady: ready
+            });
+            if (options.withRef && forwardedRef) {
+                passDownProps.ref = forwardedRef;
+            } else if (!options.withRef && forwardedRef) {
+                passDownProps.forwardedRef = forwardedRef;
+            }
+            return (0, import_react5.createElement)(WrappedComponent, passDownProps);
+        }
+        I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;
+        I18nextWithTranslation.WrappedComponent = WrappedComponent;
+        const forwardRef = (props, ref)=>(0, import_react5.createElement)(I18nextWithTranslation, Object.assign({}, props, {
+                forwardedRef: ref
+            }));
+        return options.withRef ? (0, import_react5.forwardRef)(forwardRef) : I18nextWithTranslation;
+    };
+}
+// node_modules/react-i18next/dist/es/Translation.js
+function Translation(props) {
+    const { ns , children  } = props, options = _objectWithoutProperties(props, [
+        "ns",
+        "children"
+    ]);
+    const [t2, i18n, ready] = useTranslation(ns, options);
+    return children(t2, {
+        i18n,
+        lng: i18n.language
+    }, ready);
+}
+// node_modules/react-i18next/dist/es/I18nextProvider.js
+var import_react6 = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__.__toESM)((0,_chunk_LNJCN3VW_js__WEBPACK_IMPORTED_MODULE_0__.require_react_production_min)(), 1);
+function I18nextProvider(_ref) {
+    let { i18n , defaultNS , children  } = _ref;
+    const value = (0, import_react6.useMemo)(()=>({
+            i18n,
+            defaultNS
+        }), [
+        i18n,
+        defaultNS
+    ]);
+    return (0, import_react6.createElement)(I18nContext.Provider, {
+        value
+    }, children);
+}
+// node_modules/react-i18next/dist/es/withSSR.js
+var import_react8 = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__.__toESM)((0,_chunk_LNJCN3VW_js__WEBPACK_IMPORTED_MODULE_0__.require_react_production_min)(), 1);
+// node_modules/react-i18next/dist/es/useSSR.js
+var import_react7 = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_1__.__toESM)((0,_chunk_LNJCN3VW_js__WEBPACK_IMPORTED_MODULE_0__.require_react_production_min)(), 1);
+function useSSR(initialI18nStore, initialLanguage) {
+    let props = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
+    const { i18n: i18nFromProps  } = props;
+    const { i18n: i18nFromContext  } = (0, import_react7.useContext)(I18nContext) || {};
+    const i18n = i18nFromProps || i18nFromContext || getI18n();
+    if (i18n.options && i18n.options.isClone) return;
+    if (initialI18nStore && !i18n.initializedStoreOnce) {
+        i18n.services.resourceStore.data = initialI18nStore;
+        i18n.options.ns = Object.values(initialI18nStore).reduce((mem, lngResources)=>{
+            Object.keys(lngResources).forEach((ns)=>{
+                if (mem.indexOf(ns) < 0) mem.push(ns);
+            });
+            return mem;
+        }, i18n.options.ns);
+        i18n.initializedStoreOnce = true;
+        i18n.isInitialized = true;
+    }
+    if (initialLanguage && !i18n.initializedLanguageOnce) {
+        i18n.changeLanguage(initialLanguage);
+        i18n.initializedLanguageOnce = true;
+    }
+}
+// node_modules/react-i18next/dist/es/withSSR.js
+function withSSR() {
+    return function Extend(WrappedComponent) {
+        function I18nextWithSSR(_ref) {
+            let { initialI18nStore , initialLanguage  } = _ref, rest = _objectWithoutProperties(_ref, [
+                "initialI18nStore",
+                "initialLanguage"
+            ]);
+            useSSR(initialI18nStore, initialLanguage);
+            return (0, import_react8.createElement)(WrappedComponent, _objectSpread({}, rest));
+        }
+        I18nextWithSSR.getInitialProps = composeInitialProps(WrappedComponent);
+        I18nextWithSSR.displayName = `withI18nextSSR(${getDisplayName(WrappedComponent)})`;
+        I18nextWithSSR.WrappedComponent = WrappedComponent;
+        return I18nextWithSSR;
+    };
+}
+// node_modules/react-i18next/dist/es/index.js
+var date = ()=>"";
+var time = ()=>"";
+var number = ()=>"";
+var select = ()=>"";
+var plural = ()=>"";
+var selectOrdinal = ()=>"";
+
+
+
+/***/ })
+
+}]);

+ 128 - 102
dist/prebundle/vendors-node_modules_taro_weapp_prebundle_tarojs_taro_js.js

@@ -8,54 +8,17 @@
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-3EXGJ5BE.js */ "./node_modules/.taro/weapp/prebundle/chunk-3EXGJ5BE.js");
-/* harmony import */ var _chunk_77KB62LY_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-77KB62LY.js */ "./node_modules/.taro/weapp/prebundle/chunk-77KB62LY.js");
-/* harmony import */ var _chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chunk-P7VEE7PG.js */ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js");
+/* harmony import */ var _chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-SOUSFT7N.js */ "./node_modules/.taro/weapp/prebundle/chunk-SOUSFT7N.js");
+/* harmony import */ var _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-3EXGJ5BE.js */ "./node_modules/.taro/weapp/prebundle/chunk-3EXGJ5BE.js");
+/* harmony import */ var _chunk_77KB62LY_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chunk-77KB62LY.js */ "./node_modules/.taro/weapp/prebundle/chunk-77KB62LY.js");
+/* harmony import */ var _chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./chunk-P7VEE7PG.js */ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js");
+
 
 
 
-// node_modules/@babel/runtime/helpers/esm/typeof.js
-function _typeof(o) {
-    "@babel/helpers - typeof";
-    return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
-        return typeof o2;
-    } : function(o2) {
-        return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
-    }, _typeof(o);
-}
-var init_typeof = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
-    "node_modules/@babel/runtime/helpers/esm/typeof.js" () {}
-});
-// node_modules/@babel/runtime/helpers/esm/toPrimitive.js
-function _toPrimitive(input, hint) {
-    if (_typeof(input) !== "object" || input === null) return input;
-    var prim = input[Symbol.toPrimitive];
-    if (prim !== void 0) {
-        var res = prim.call(input, hint || "default");
-        if (_typeof(res) !== "object") return res;
-        throw new TypeError("@@toPrimitive must return a primitive value.");
-    }
-    return (hint === "string" ? String : Number)(input);
-}
-var init_toPrimitive = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
-    "node_modules/@babel/runtime/helpers/esm/toPrimitive.js" () {
-        init_typeof();
-    }
-});
-// node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
-function _toPropertyKey(arg) {
-    var key = _toPrimitive(arg, "string");
-    return _typeof(key) === "symbol" ? key : String(key);
-}
-var init_toPropertyKey = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
-    "node_modules/@babel/runtime/helpers/esm/toPropertyKey.js" () {
-        init_typeof();
-        init_toPrimitive();
-    }
-});
 // node_modules/@babel/runtime/helpers/esm/defineProperty.js
 function _defineProperty(obj, key, value) {
-    key = _toPropertyKey(key);
+    key = (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__._toPropertyKey)(key);
     if (key in obj) {
         Object.defineProperty(obj, key, {
             value,
@@ -68,9 +31,9 @@ function _defineProperty(obj, key, value) {
     }
     return obj;
 }
-var init_defineProperty = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
+var init_defineProperty = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_3__.__esm)({
     "node_modules/@babel/runtime/helpers/esm/defineProperty.js" () {
-        init_toPropertyKey();
+        (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__.init_toPropertyKey)();
     }
 });
 // node_modules/@babel/runtime/helpers/esm/objectSpread2.js
@@ -95,46 +58,14 @@ function _objectSpread2(e) {
     }
     return e;
 }
-var init_objectSpread2 = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
+var init_objectSpread2 = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_3__.__esm)({
     "node_modules/@babel/runtime/helpers/esm/objectSpread2.js" () {
         init_defineProperty();
     }
 });
-// node_modules/@babel/runtime/helpers/esm/classCallCheck.js
-function _classCallCheck(instance, Constructor) {
-    if (!(instance instanceof Constructor)) {
-        throw new TypeError("Cannot call a class as a function");
-    }
-}
-var init_classCallCheck = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
-    "node_modules/@babel/runtime/helpers/esm/classCallCheck.js" () {}
-});
-// node_modules/@babel/runtime/helpers/esm/createClass.js
-function _defineProperties(target, props) {
-    for(var i = 0; i < props.length; i++){
-        var descriptor = props[i];
-        descriptor.enumerable = descriptor.enumerable || false;
-        descriptor.configurable = true;
-        if ("value" in descriptor) descriptor.writable = true;
-        Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
-    }
-}
-function _createClass(Constructor, protoProps, staticProps) {
-    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
-    if (staticProps) _defineProperties(Constructor, staticProps);
-    Object.defineProperty(Constructor, "prototype", {
-        writable: false
-    });
-    return Constructor;
-}
-var init_createClass = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
-    "node_modules/@babel/runtime/helpers/esm/createClass.js" () {
-        init_toPropertyKey();
-    }
-});
 // node_modules/@tarojs/api/dist/index.esm.js
 var index_esm_exports = {};
-(0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__export)(index_esm_exports, {
+(0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_3__.__export)(index_esm_exports, {
     default: ()=>Taro
 });
 function isFunction(x) {
@@ -144,7 +75,7 @@ function isUndefined(x) {
     return typeof x === "undefined";
 }
 function isObject(x) {
-    return x && _typeof(x) === "object";
+    return x && (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__._typeof)(x) === "object";
 }
 function throwTypeError(s) {
     throw new TypeError(s);
@@ -243,14 +174,14 @@ function getPxTransform(taro) {
     };
 }
 var isBadObj, ENV_TYPE, isWeb, Chain, Link, interceptors, defaultDesignWidth, defaultDesignRatio, defaultBaseFontSize, defaultUnitPrecision, defaultTargetUnit, Taro;
-var init_index_esm = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
+var init_index_esm = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_3__.__esm)({
     "node_modules/@tarojs/api/dist/index.esm.js" () {
-        init_typeof();
-        (0,_chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_0__.init_runtime_esm)();
-        (0,_chunk_77KB62LY_js__WEBPACK_IMPORTED_MODULE_1__.init_shared_esm)();
+        (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__.init_typeof)();
+        (0,_chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_1__.init_runtime_esm)();
+        (0,_chunk_77KB62LY_js__WEBPACK_IMPORTED_MODULE_2__.init_shared_esm)();
         init_objectSpread2();
-        init_classCallCheck();
-        init_createClass();
+        (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__.init_classCallCheck)();
+        (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__.init_createClass)();
         init_defineProperty();
         isBadObj = function isBadObj2(x) {
             return !isObject(x);
@@ -337,15 +268,15 @@ var init_index_esm = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
             HARMONY: "HARMONY",
             QUICKAPP: "QUICKAPP"
         };
-        isWeb = (0,_chunk_77KB62LY_js__WEBPACK_IMPORTED_MODULE_1__.isWebPlatform)();
+        isWeb = (0,_chunk_77KB62LY_js__WEBPACK_IMPORTED_MODULE_2__.isWebPlatform)();
         Chain = function() {
             function Chain2(requestParams, interceptors2, index) {
-                _classCallCheck(this, Chain2);
+                (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__._classCallCheck)(this, Chain2);
                 this.index = index || 0;
                 this.requestParams = requestParams;
                 this.interceptors = interceptors2 || [];
             }
-            _createClass(Chain2, [
+            (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__._createClass)(Chain2, [
                 {
                     key: "proceed",
                     value: function proceed(requestParams) {
@@ -382,11 +313,11 @@ var init_index_esm = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
         }();
         Link = function() {
             function Link2(interceptor) {
-                _classCallCheck(this, Link2);
+                (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__._classCallCheck)(this, Link2);
                 this.taroInterceptor = interceptor;
                 this.chain = new Chain();
             }
-            _createClass(Link2, [
+            (0,_chunk_SOUSFT7N_js__WEBPACK_IMPORTED_MODULE_0__._createClass)(Link2, [
                 {
                     key: "request",
                     value: function request(requestParams) {
@@ -433,25 +364,25 @@ var init_index_esm = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__esm)({
             ENV_TYPE,
             Link,
             interceptors,
-            Current: _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_0__.Current,
-            getCurrentInstance: _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_0__.getCurrentInstance,
-            options: _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_0__.options,
-            nextTick: _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_0__.nextTick,
-            eventCenter: _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_0__.eventCenter,
-            Events: _chunk_77KB62LY_js__WEBPACK_IMPORTED_MODULE_1__.Events,
+            Current: _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_1__.Current,
+            getCurrentInstance: _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_1__.getCurrentInstance,
+            options: _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_1__.options,
+            nextTick: _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_1__.nextTick,
+            eventCenter: _chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_1__.eventCenter,
+            Events: _chunk_77KB62LY_js__WEBPACK_IMPORTED_MODULE_2__.Events,
             getInitPxTransform,
             interceptorify
         };
         Taro.initPxTransform = getInitPxTransform(Taro);
-        Taro.preload = getPreload(_chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_0__.Current);
+        Taro.preload = getPreload(_chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_1__.Current);
         Taro.pxTransform = getPxTransform(Taro);
     }
 });
 // node_modules/@tarojs/taro/index.js
-var require_taro = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__commonJS)({
+var require_taro = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_3__.__commonJS)({
     "node_modules/@tarojs/taro/index.js" (exports, module) {
-        var { hooks  } = ((0,_chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_0__.init_runtime_esm)(), (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__toCommonJS)(_chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_0__.runtime_esm_exports));
-        var taro = (init_index_esm(), (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__toCommonJS)(index_esm_exports)).default;
+        var { hooks  } = ((0,_chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_1__.init_runtime_esm)(), (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_3__.__toCommonJS)(_chunk_3EXGJ5BE_js__WEBPACK_IMPORTED_MODULE_1__.runtime_esm_exports));
+        var taro = (init_index_esm(), (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_3__.__toCommonJS)(index_esm_exports)).default;
         if (hooks.isExist("initNativeApi")) {
             hooks.call("initNativeApi", taro);
         }
@@ -460,7 +391,7 @@ var require_taro = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__commonJS
     }
 });
 // entry:@tarojs_taro
-var require_tarojs_taro = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_2__.__commonJS)({
+var require_tarojs_taro = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_3__.__commonJS)({
     "entry:@tarojs_taro" (exports, module) {
         module.exports = require_taro();
     }
@@ -481,6 +412,101 @@ var m = __webpack_require__(/*! ./@tarojs_taro.core.js */ "./node_modules/.taro/
                    exports["default"] = module.exports;
                   
 
+/***/ }),
+
+/***/ "./node_modules/.taro/weapp/prebundle/chunk-SOUSFT7N.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/.taro/weapp/prebundle/chunk-SOUSFT7N.js ***!
+  \**************************************************************/
+/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   _classCallCheck: function() { return /* binding */ _classCallCheck; },
+/* harmony export */   _createClass: function() { return /* binding */ _createClass; },
+/* harmony export */   _toPropertyKey: function() { return /* binding */ _toPropertyKey; },
+/* harmony export */   _typeof: function() { return /* binding */ _typeof; },
+/* harmony export */   init_classCallCheck: function() { return /* binding */ init_classCallCheck; },
+/* harmony export */   init_createClass: function() { return /* binding */ init_createClass; },
+/* harmony export */   init_toPropertyKey: function() { return /* binding */ init_toPropertyKey; },
+/* harmony export */   init_typeof: function() { return /* binding */ init_typeof; }
+/* harmony export */ });
+/* harmony import */ var _chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-P7VEE7PG.js */ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js");
+
+// node_modules/@babel/runtime/helpers/esm/classCallCheck.js
+function _classCallCheck(instance, Constructor) {
+    if (!(instance instanceof Constructor)) {
+        throw new TypeError("Cannot call a class as a function");
+    }
+}
+var init_classCallCheck = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__.__esm)({
+    "node_modules/@babel/runtime/helpers/esm/classCallCheck.js" () {}
+});
+// node_modules/@babel/runtime/helpers/esm/typeof.js
+function _typeof(o) {
+    "@babel/helpers - typeof";
+    return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
+        return typeof o2;
+    } : function(o2) {
+        return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
+    }, _typeof(o);
+}
+var init_typeof = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__.__esm)({
+    "node_modules/@babel/runtime/helpers/esm/typeof.js" () {}
+});
+// node_modules/@babel/runtime/helpers/esm/toPrimitive.js
+function _toPrimitive(input, hint) {
+    if (_typeof(input) !== "object" || input === null) return input;
+    var prim = input[Symbol.toPrimitive];
+    if (prim !== void 0) {
+        var res = prim.call(input, hint || "default");
+        if (_typeof(res) !== "object") return res;
+        throw new TypeError("@@toPrimitive must return a primitive value.");
+    }
+    return (hint === "string" ? String : Number)(input);
+}
+var init_toPrimitive = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__.__esm)({
+    "node_modules/@babel/runtime/helpers/esm/toPrimitive.js" () {
+        init_typeof();
+    }
+});
+// node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
+function _toPropertyKey(arg) {
+    var key = _toPrimitive(arg, "string");
+    return _typeof(key) === "symbol" ? key : String(key);
+}
+var init_toPropertyKey = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__.__esm)({
+    "node_modules/@babel/runtime/helpers/esm/toPropertyKey.js" () {
+        init_typeof();
+        init_toPrimitive();
+    }
+});
+// node_modules/@babel/runtime/helpers/esm/createClass.js
+function _defineProperties(target, props) {
+    for(var i = 0; i < props.length; i++){
+        var descriptor = props[i];
+        descriptor.enumerable = descriptor.enumerable || false;
+        descriptor.configurable = true;
+        if ("value" in descriptor) descriptor.writable = true;
+        Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
+    }
+}
+function _createClass(Constructor, protoProps, staticProps) {
+    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+    if (staticProps) _defineProperties(Constructor, staticProps);
+    Object.defineProperty(Constructor, "prototype", {
+        writable: false
+    });
+    return Constructor;
+}
+var init_createClass = (0,_chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__.__esm)({
+    "node_modules/@babel/runtime/helpers/esm/createClass.js" () {
+        init_toPropertyKey();
+    }
+});
+
+
+
 /***/ })
 
 }]);

+ 1 - 1
dist/project.config.json

@@ -2,7 +2,7 @@
   "miniprogramRoot": "",
   "projectname": "hola",
   "description": "",
-  "appid": "wx6b1ab4701b77c50d",
+  "appid": "wxe1396d16d519e16b",
   "setting": {
     "urlCheck": true,
     "es6": false,

+ 19 - 1
dist/runtime.js

@@ -199,13 +199,16 @@
 /******/ 			"app": [
 /******/ 				"webpack/container/remote/@tarojs/plugin-platform-weapp/dist/runtime",
 /******/ 				"webpack/container/remote/@tarojs/plugin-framework-react/dist/runtime",
+/******/ 				"webpack/container/remote/i18next-browser-languagedetector",
+/******/ 				"webpack/container/remote/i18next",
 /******/ 				"webpack/container/remote/react-dom"
 /******/ 			],
 /******/ 			"common": [
 /******/ 				"webpack/container/remote/@tarojs/runtime",
 /******/ 				"webpack/container/remote/@tarojs/taro",
 /******/ 				"webpack/container/remote/react",
-/******/ 				"webpack/container/remote/react/jsx-runtime"
+/******/ 				"webpack/container/remote/react/jsx-runtime",
+/******/ 				"webpack/container/remote/react-i18next"
 /******/ 			]
 /******/ 		};
 /******/ 		var idToExternalAndNameMapping = {
@@ -219,6 +222,16 @@
 /******/ 				"./@tarojs/plugin-framework-react/dist/runtime",
 /******/ 				null
 /******/ 			],
+/******/ 			"webpack/container/remote/i18next-browser-languagedetector": [
+/******/ 				"default",
+/******/ 				"./i18next-browser-languagedetector",
+/******/ 				null
+/******/ 			],
+/******/ 			"webpack/container/remote/i18next": [
+/******/ 				"default",
+/******/ 				"./i18next",
+/******/ 				null
+/******/ 			],
 /******/ 			"webpack/container/remote/react-dom": [
 /******/ 				"default",
 /******/ 				"./react-dom",
@@ -243,6 +256,11 @@
 /******/ 				"default",
 /******/ 				"./react/jsx-runtime",
 /******/ 				null
+/******/ 			],
+/******/ 			"webpack/container/remote/react-i18next": [
+/******/ 				"default",
+/******/ 				"./react-i18next",
+/******/ 				null
 /******/ 			]
 /******/ 		};
 /******/ 		__webpack_require__.taro = function(get) {

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/runtime.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/vendors.js.map


+ 4 - 1
src/app.config.ts

@@ -3,7 +3,10 @@ export default defineAppConfig({
     'pages/index/index',
     'pages/Second',
     'pages/Login',
-    'pages/Auth'
+    'pages/Auth',
+    'pages/ChooseAuth',
+    'pages/ChooseScenario',
+    'pages/SetGoal'
   ],
   subPackages:[
     {

+ 12 - 1
src/app.scss

@@ -1,3 +1,4 @@
+/* #ifdef weapp */ 
 page {
     background-color: #000;
 }
@@ -6,4 +7,14 @@ page {
     page {
         background-color: #000;
     }
-}
+}
+
+.container{
+    display: flex;
+    flex-direction: column;
+    flex: 1;
+    background-color: #000;
+    height: 100vh;
+    width: 100vw;
+}
+/* #endif */ 

+ 1 - 0
src/app.ts

@@ -1,5 +1,6 @@
 import { Component, PropsWithChildren } from 'react'
 import './app.scss'
+import './context/locales/index'
 
 class App extends Component<PropsWithChildren> {
 

+ 18 - 0
src/components/Footer.scss

@@ -0,0 +1,18 @@
+.footer1 {
+    position: fixed;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 1000;
+    // height: 120px;
+    flex-direction: column;
+    display: flex;
+    align-items: center;
+    padding-top: 46px;
+    padding-bottom: constant(safe-area-inset-bottom);
+    /* 兼容 iOS < 11.2 */
+    padding-bottom: env(safe-area-inset-bottom);
+    /* 兼容 iOS >= 11.2 */
+    // background: linear-gradient(180deg, rgba(0, 0, 0, 0.00) 0%, #000000 100%);
+    background: linear-gradient(180deg, red, blue);
+}

+ 9 - 0
src/components/Footer.tsx

@@ -0,0 +1,9 @@
+
+import { View } from '@tarojs/components'
+import './Footer.scss'
+
+export default function Component(props: { child: any }) {
+    return <View className='footer1'>
+        {props.child}
+    </View>
+}

+ 71 - 23
src/components/Rings.weapp.tsx

@@ -1,46 +1,94 @@
 import { Canvas } from "@tarojs/components";
-import Taro from "@tarojs/taro";
+import Taro, { useDidShow, useReady } from "@tarojs/taro";
 import { useEffect, useRef } from "react";
 
-export default function Rings(props: { strokeWidth: number; radius: number;color:string; }) {
+export default function Rings(props: { strokeWidth: number; radius: number;color:string;canvasId?:string }) {
     const progress = 0.5
     const r = props.radius || 80
     const strokeWidth = props.strokeWidth || 10;
     const color = props.color || 'orange'
     const canvasRef = useRef(null);
-    const canvasId = 'progress-canvas';
+    const canvasId = props.canvasId?'canvas_'+props.canvasId:'progress-canvas';
     const dpr = Taro.getSystemInfoSync().pixelRatio; // 获取设备的像素比
     const radius = r * dpr; // 圆形进度条的半径
     const lineWidth = strokeWidth * dpr; // 圆形进度条的线宽
 
+    useDidShow(()=>{
+        // drawCircle()
+    })
+
+    useReady(()=>{
+        setTimeout(()=>{
+            drawCircle()
+        },500)
+    })
+
+    function drawCircle(){
+        const query = Taro.createSelectorQuery();
+        query.select(`.${canvasId}`).fields({node:true,size:true});
+        query.exec((res) => {
+            const  ctx = res[0].node.getContext('2d');
+            // const ctx = Taro.createCanvasContext(canvasId);
+
+
+
+            const center = radius + lineWidth / 2; // 圆心坐标
+    
+            // 设置画布尺寸
+            ctx.scale(1 / dpr, 1 / dpr);
+    
+            // 绘制背景圆
+            ctx.beginPath();
+            ctx.arc(center, center, radius, 0, 2 * Math.PI);
+            ctx.lineWith =  lineWidth;
+            ctx.strokeStyle =  'lightgray';
+            ctx.lineCap  = 'round'; // 设置为圆角
+            ctx.stroke();
+    
+            // 绘制进度圆
+            ctx.beginPath();
+            ctx.arc(center, center, radius, -Math.PI / 2 + 1, (2 * Math.PI * progress) - Math.PI / 2);
+            ctx.lineWith =  lineWidth;
+            ctx.strokeStyle =  color;
+            ctx.lineCap  = 'round'; // 设置为圆角
+            ctx.stroke();
+    
+            // ctx.draw();
+        });
+    }
+
     useEffect(() => {
-        const ctx = Taro.createCanvasContext(canvasId);
+        // setTimeout(()=>{
+        //     drawCircle()
+        // },500)
+
+        // const ctx = Taro.createCanvasContext(canvasId);
 
 
 
-        const center = radius + lineWidth / 2; // 圆心坐标
+        // const center = radius + lineWidth / 2; // 圆心坐标
 
-        // 设置画布尺寸
-        ctx.scale(1 / dpr, 1 / dpr);
+        // // 设置画布尺寸
+        // ctx.scale(1 / dpr, 1 / dpr);
 
-        // 绘制背景圆
-        ctx.beginPath();
-        ctx.arc(center, center, radius, 0, 2 * Math.PI);
-        ctx.setLineWidth(lineWidth);
-        ctx.setStrokeStyle('lightgray');
-        ctx.setLineCap('round'); // 设置为圆角
-        ctx.stroke();
+        // // 绘制背景圆
+        // ctx.beginPath();
+        // ctx.arc(center, center, radius, 0, 2 * Math.PI);
+        // ctx.setLineWidth(lineWidth);
+        // ctx.setStrokeStyle('lightgray');
+        // ctx.setLineCap('round'); // 设置为圆角
+        // ctx.stroke();
 
-        // 绘制进度圆
-        ctx.beginPath();
-        ctx.arc(center, center, radius, -Math.PI / 2 + 1, (2 * Math.PI * progress) - Math.PI / 2);
-        ctx.setLineWidth(lineWidth);
-        ctx.setStrokeStyle(color);
-        ctx.setLineCap('round'); // 设置为圆角
-        ctx.stroke();
+        // // 绘制进度圆
+        // ctx.beginPath();
+        // ctx.arc(center, center, radius, -Math.PI / 2 + 1, (2 * Math.PI * progress) - Math.PI / 2);
+        // ctx.setLineWidth(lineWidth);
+        // ctx.setStrokeStyle(color);
+        // ctx.setLineCap('round'); // 设置为圆角
+        // ctx.stroke();
 
-        ctx.draw();
+        // ctx.draw();
     }, [progress]);
-    return <Canvas canvasId={canvasId} style={{ width: (radius * 2 + lineWidth) / dpr, height: (radius * 2 + lineWidth) / dpr }} ref={canvasRef} />
+    return <Canvas canvasId={canvasId} id={canvasId}  className={canvasId} type="2d" style={{ width: (radius * 2 + lineWidth) / dpr, height: (radius * 2 + lineWidth) / dpr,zIndex:0 }} ref={canvasRef} />
 
 }

+ 11 - 0
src/components/Texts.scss

@@ -13,4 +13,15 @@
     font-size: 40px;
     line-height: 40px;
     font-weight: 400;
+}
+
+.big{
+    color: #fff;
+    font-weight: 600;
+    font-size: 104px;
+    line-height: 104px;
+}
+
+.en{
+    
 }

+ 2 - 0
src/components/Texts.tsx

@@ -10,6 +10,8 @@ export default function Component(props: { text: string, type?: TextType, }) {
                 return <Text className="primary">{props.text}</Text>
             case TextType.secondary:
                 return <Text className="secondary">{props.text}</Text>
+            case TextType.big:
+                return <Text className="big">{props.text}</Text>
             default:
                 return <Text>{props.text}</Text>
         }

+ 55 - 0
src/context/locales/en.js

@@ -3,5 +3,60 @@ export default {
         switch_language:'Switch Language',
         zh:'Chinese',
         en:'English'
+    },
+    page:{
+        choose_language:{
+            title:'',
+            sub_title:'',
+            btn_confirm:''
+        },
+        choose_auth:{
+            app_name:'',
+            btn_create_account:'',
+            btn_login:'登录',
+            btn_wechat:'微信登录'
+        },
+        auth:{
+            agreement:'I agree to the Terms of Service and Privacy Policy.'
+        },
+        choose_scenario:{
+            title:'Choose scenario',
+            sub_title:'A scenario clock will display on homepage',
+            btn_next:'Next',
+            btn_more:'Learn more',
+            fast:'Fast',
+            sleep:'Sleep',
+            fast_sleep:'Fast Sleep',
+        },
+        set_goal:{
+            title:'',
+            btn_done:''
+        }
+    },
+    feature:{
+        auth:{
+            create_account:{
+                title:'Create Account',
+                sub_title:'Enter username and email',
+                input_username_placeholder:'Username',
+                input_email_placeholder:'Email',
+                footer_desc:'Already have an account? ',
+                footer_login:'Log in',
+                btn_next:'Next'
+            },
+            login:{
+                input_account_placeholder:'',
+                input_password_placeholder:'',
+                footer_desc:'',
+                footer_sign_up:''
+            },
+            create_password:{
+                title:'',
+                sub_title:'',
+                input_password_placeholder:'',
+                input_password_confirm_placeholder:'',
+                btn_next:''
+            }
+        }
     }
 }

+ 51 - 0
src/context/locales/zh.js

@@ -3,5 +3,56 @@ export default {
         switch_language:'切换语言',
         zh:'中文',
         en:'英文'
+    },
+    page:{
+        choose_language:{
+            title:'',
+            sub_title:'',
+            btn_confirm:''
+        },
+        choose_auth:{
+            app_name:'',
+            btn_create_account:'',
+            btn_login:'登录',
+            btn_wechat:'微信登录'
+        },
+        auth:{
+            agreement:'已阅读并同意《用户协议》和《隐私政策》',
+        },
+        choose_scenario:{
+            title:'选择场景',
+            sub_title:'场景时钟将在首页展示',
+            btn_next:'下一步',
+            btn_more:'了解更多',
+            fast:'断食',
+            sleep:'睡眠',
+            fast_sleep:'断食睡眠',
+        },
+    },
+    feature:{
+        auth:{
+            create_account:{
+                title:'注册账号',
+                sub_title:'创建用户名',
+                input_username_placeholder:'用户名',
+                input_email_placeholder:'邮箱',
+                footer_desc:'已有账号?',
+                footer_login:'去登录',
+                btn_next:'下一步'
+            },
+            login:{
+                input_account_placeholder:'',
+                input_password_placeholder:'',
+                footer_desc:'',
+                footer_sign_up:''
+            },
+            create_password:{
+                title:'',
+                sub_title:'',
+                input_password_placeholder:'',
+                input_password_confirm_placeholder:'',
+                btn_next:''
+            }
+        }
     }
 }

+ 16 - 13
src/features/auth/components/Auth.tsx

@@ -1,19 +1,20 @@
-import { View, Text,Image } from "@tarojs/components";
+import { View, Text, Image } from "@tarojs/components";
 import Texts from "@components/Texts";
-import { ComponentStatus, TextType } from "../../../utils/types";
+import { ComponentStatus, TextType } from "@utils/types";
 import Box from "@components/Box";
 import Inputs from "@components/Inputs";
 import Buttons from '@components/Buttons'
 import check from '@assets/svg/check.svg'
+import { useTranslation } from 'react-i18next'
 import './Auth.scss'
 
 export default function Auth() {
-
+    const { t } = useTranslation()
     function loginComponent() {
         return <View>
-            <Inputs placeholder="Username"></Inputs>
+            <Inputs placeholder={t('feature.auth.create_account.input_username_placeholder')}></Inputs>
             <View style={{ height: 20 }} />
-            <Inputs placeholder="Password"></Inputs>
+            <Inputs placeholder={t('feature.auth.create_account.input_email_placeholder')}></Inputs>
         </View>
     }
 
@@ -21,19 +22,21 @@ export default function Auth() {
 
     }
 
-    return <View style={{ backgroundColor: '#000', flex: 1, flexDirection: 'column', display: 'flex',height:'100vh' }}>
-        <Texts text="Create account" type={TextType.primary}></Texts>
-        <Texts text="Claim your username now!" type={TextType.secondary}></Texts>
+    return <View style={{ backgroundColor: '#000', flex: 1, flexDirection: 'column', display: 'flex', height: '100vh' }}>
+        <Texts text={t('feature.auth.create_account.title')} type={TextType.primary}></Texts>
+        <Texts text={t('feature.auth.create_account.sub_title')} type={TextType.secondary}></Texts>
         <Box child={loginComponent()}></Box>
-        <Buttons title="Next" style={{ marginLeft: 23, marginRight: 23, marginTop: 20, marginBottom: 20 }} status={ComponentStatus.disable}></Buttons>
+        <Buttons title={t('feature.auth.create_account.btn_next')}
+            style={{ marginLeft: 23, marginRight: 23, marginTop: 20, marginBottom: 20 }}
+            status={ComponentStatus.disable}></Buttons>
         <View className="agree_view">
             <Image style='width:12px;height:12px;' src={check} />
-            <Text className='agree_text'>I agree to the Terms of Service and Privacy Policy.</Text>
+            <Text className='agree_text'>{t('page.auth.agreement')}</Text>
         </View>
-        <View style={{flex:1}}/>
+        <View style={{ flex: 1 }} />
         <View className="footer">
-            <Text className="have_account">Already have an account?</Text>
-            <Text className="login">Login</Text>
+            <Text className="have_account">{t('feature.auth.create_account.footer_desc')}</Text>
+            <Text className="login">{t('feature.auth.create_account.footer_login')}</Text>
         </View>
     </View>
 }

+ 5 - 0
src/features/auth/components/CreateAccount.tsx

@@ -0,0 +1,5 @@
+import { View } from "@tarojs/components";
+
+export default function Component() {
+  return <View >Component</View>;
+}

+ 5 - 0
src/features/auth/components/CreatePassword.tsx

@@ -0,0 +1,5 @@
+import { View } from "@tarojs/components";
+
+export default function Component() {
+  return <View >Component</View>;
+}

+ 0 - 0
src/components/placeholder → src/features/trackTimeDuration/components/ChooseScenario.scss


+ 59 - 0
src/features/trackTimeDuration/components/ChooseScenario.tsx

@@ -0,0 +1,59 @@
+import { View } from "@tarojs/components";
+import Buttons from '@components/Buttons';
+import Texts from '@components/Texts';
+import Rings from '../../../components/Rings';
+import Footer from '@components/Footer';
+import SingleSelect from '../../../components/SingleSelect';
+import { ComponentStatus, TextType } from "@utils/types";
+import { useTranslation } from 'react-i18next'
+
+
+export default function Component() {
+    const { t } = useTranslation()
+
+    function login() {
+        // Taro.navigateTo({
+        //     url: '/pages/ChooseScenario'
+        // })
+    }
+
+    function footerContent() {
+        return <View>
+            <Buttons title='Login' onClick={login} />
+        </View>
+    }
+
+    function items() {
+        const array: any[] = []
+        array.push(
+            <View>
+                <Rings radius={33} strokeWidth={8} color='#AAFF00' canvasId='0' />
+            </View>
+        );
+        array.push(
+            <View>
+                <Rings radius={33} strokeWidth={8} color='#00FFFF' canvasId='1' />
+            </View>
+        )
+        array.push(
+            <View style={{position:'relative',zIndex:1}}>
+                <Rings radius={33} strokeWidth={8} color='#AAFF00' canvasId='3' />
+                <View style={{display:'flex',position:'absolute',left:0,right:0,top:0,bottom:0,alignItems:'center',justifyContent:'center'}}>
+                    <Rings radius={23} strokeWidth={6} color='#00FFFF' canvasId='4' />
+                </View>
+            </View>
+        )
+        return array;
+    }
+
+    return <View className="container">
+        <Texts text={t('page.choose_scenario.title')} type={TextType.primary}></Texts>
+        <Texts text={t('page.choose_scenario.sub_title')} type={TextType.secondary}></Texts>
+        <View style={{ height: 20 }} />
+        <View  style={{position:'relative',zIndex:1}}>
+        <SingleSelect items={items()} />
+        </View>
+        
+        <Footer child={footerContent()} />
+    </View>;
+}

+ 0 - 0
src/features/trackTimeDuration/components/placeholder → src/features/trackTimeDuration/components/SetGoal.scss


+ 5 - 0
src/features/trackTimeDuration/components/SetGoal.tsx

@@ -0,0 +1,5 @@
+import { View } from "@tarojs/components";
+
+export default function Component() {
+  return <View >Component</View>;
+}

+ 20 - 0
src/pages/ChooseAuth.tsx

@@ -0,0 +1,20 @@
+import { View } from "@tarojs/components";
+import Buttons from '@components/Buttons'
+import Texts from '@components/Texts'
+
+import { ButtonType, ComponentStatus, TextType } from "../utils/types";
+import Taro from "@tarojs/taro";
+
+export default function Page() {
+
+    function login() {
+        Taro.navigateTo({
+            url: '/pages/ChooseScenario'
+        })
+    }
+
+    return <View className="container">
+        <Texts text='App name' type={TextType.big} />
+        <Buttons title='Login' onClick={login} />
+    </View>;
+}

+ 8 - 0
src/pages/ChooseScenario.tsx

@@ -0,0 +1,8 @@
+import { View } from "@tarojs/components";
+import ChooseScenario from '@features/trackTimeDuration/components/ChooseScenario'
+
+export default function Page() {
+  return <View className="container">
+    <ChooseScenario />
+  </View>;
+}

+ 5 - 0
src/pages/SetGoal.tsx

@@ -0,0 +1,5 @@
+import { View } from "@tarojs/components";
+
+export default function Page() {
+  return <View className="container">Page</View>;
+}

+ 14 - 0
src/pages/Space.tsx

@@ -0,0 +1,14 @@
+import { View } from "@tarojs/components";
+import Buttons from '@components/Buttons';
+import Texts from '@components/Texts';
+import { ComponentStatus, TextType } from "@utils/types";
+import { useTranslation } from 'react-i18next'
+
+
+export default function Page() {
+    const { t } = useTranslation()
+
+    return <View className="container">
+        <Texts ></Texts>
+    </View>;
+}

+ 5 - 0
src/pages/Welcome.tsx

@@ -0,0 +1,5 @@
+import { View } from "@tarojs/components";
+
+export default function Page() {
+    return <View className="container">Page</View>;
+}

+ 1 - 1
src/pages/index/index.tsx

@@ -22,7 +22,7 @@ export default function IndexPage() {
 
   function login() {
     Taro.navigateTo({
-      url: '/pages/Login'
+      url: '/pages/ChooseAuth'
     })
   }
   return (

+ 6 - 0
src/services/http/request.ts

@@ -37,6 +37,12 @@ export async function request<T>(param: RequestParam): Promise<T> {
     if (token.length>0){
         header['Authorization'] = `Bearer ${token}`
     }
+    //X-Language:语言,X-Device-Id:设备唯一码,X-Platform:小程序/android/ios,X-Location:地区,X-Device:登录设备
+    header['X-Language'] = ''
+    header['X-Device-Id'] = ''
+    header['X-Platform'] = ''
+    header['X-Location'] = ''
+    header['X-Device'] = ''
     // header['X-Time-Zone-Id'] = Intl.DateTimeFormat().resolvedOptions().timeZone
     // header['Authorization'] = 'Bearer ' + wx.getStorageSync('token');
     // header['Authorization'] = 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJhY2NvdW50Iiwic3ViIjoiMmQ5OWNlYzI0ZDFlMzE0Y2U1MjhlODM4MWMzYzk0MzgiLCJpc3MiOiJDT0RFUEFBUy5DT00iLCJuaWNrbmFtZSI6IueOi-a4nSIsInR5cCI6IkJlYXJlciIsInNlc3Npb25fc3RhdGUiOiIyN2RjNmU4ZDdjMWU1MTVmNDQwNzVjZTFlODk2ZmUzNCIsImV4cCI6MTcxNjY0Mzk5MSwiaWF0IjoxNjg1MDIxNTkxfQ.fmFj0OVNRzjLkdebSyGJyk8EScPJFpDiz0L25W35zoA'

+ 2 - 0
src/utils/types.ts

@@ -6,6 +6,8 @@ export enum ButtonType {
 export enum TextType{
     primary = 'primary',
     secondary = 'secondary',
+    big = 'big',
+    
 }
 
 export enum ComponentStatus {

+ 6 - 1
tsconfig.json

@@ -20,7 +20,12 @@
     "resolveJsonModule": true,
     "typeRoots": [
       "node_modules/@types"
-    ]
+    ],
+    "paths": {
+      "~/*":[
+        "src/*"
+      ],
+    }
   },
   "include": ["./src", "./types"],
   "compileOnSave": false

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác