Bladeren bron

Merge branch 'master' of http://git.ycjcjy.com/civilized_city/miniapp

fangmingyue 2 jaren geleden
bovenliggende
commit
1283f99611

+ 11
- 0
babel.config.js Bestand weergeven

@@ -6,5 +6,16 @@ module.exports = {
6 6
       framework: 'react',
7 7
       ts: false
8 8
     }]
9
+  ],
10
+  plugins: [
11
+    [
12
+      "import",
13
+      {
14
+        libraryName: "@antmjs/vantui",
15
+        libraryDirectory: "es",
16
+        style: true
17
+      },
18
+      "@antmjs/vantui"
19
+    ]
9 20
   ]
10 21
 }

+ 1
- 0
config/dev.js Bestand weergeven

@@ -3,6 +3,7 @@ module.exports = {
3 3
     NODE_ENV: '"development"'
4 4
   },
5 5
   defineConstants: {
6
+    HOST: '"http://192.168.89.147:9087"'
6 7
   },
7 8
   mini: {},
8 9
   h5: {}

+ 1
- 0
config/prod.js Bestand weergeven

@@ -3,6 +3,7 @@ module.exports = {
3 3
     NODE_ENV: '"production"'
4 4
   },
5 5
   defineConstants: {
6
+    HOST: '"http://192.168.89.147:9087"'
6 7
   },
7 8
   mini: {},
8 9
   h5: {

+ 10
- 13
package.json Bestand weergeven

@@ -40,11 +40,6 @@
40 40
     "@tarojs/components": "3.5.7",
41 41
     "@tarojs/helper": "3.5.7",
42 42
     "@tarojs/plugin-framework-react": "3.5.7",
43
-    "@tarojs/plugin-platform-alipay": "3.5.7",
44
-    "@tarojs/plugin-platform-jd": "3.5.7",
45
-    "@tarojs/plugin-platform-qq": "3.5.7",
46
-    "@tarojs/plugin-platform-swan": "3.5.7",
47
-    "@tarojs/plugin-platform-tt": "3.5.7",
48 43
     "@tarojs/plugin-platform-weapp": "3.5.7",
49 44
     "@tarojs/react": "3.5.7",
50 45
     "@tarojs/router": "3.5.7",
@@ -52,25 +47,27 @@
52 47
     "@tarojs/shared": "3.5.7",
53 48
     "@tarojs/taro": "3.5.7",
54 49
     "@tarojs/taro-h5": "3.5.7",
50
+    "@zjxpcyc/react-tiny-store": "^2.0.1",
55 51
     "react": "^18.0.0",
56 52
     "react-dom": "^18.0.0"
57 53
   },
58 54
   "devDependencies": {
59 55
     "@babel/core": "^7.8.0",
56
+    "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5",
60 57
     "@tarojs/cli": "3.5.7",
61
-    "@types/webpack-env": "^1.13.6",
62
-    "@types/react": "^18.0.0",
63 58
     "@tarojs/mini-runner": "3.5.7",
64 59
     "@tarojs/webpack-runner": "3.5.7",
65
-    "webpack": "4.46.0",
60
+    "@types/react": "^18.0.0",
61
+    "@types/webpack-env": "^1.13.6",
62
+    "babel-plugin-import": "^1.13.5",
66 63
     "babel-preset-taro": "3.5.7",
67
-    "eslint-config-taro": "3.5.7",
68 64
     "eslint": "^8.12.0",
69
-    "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5",
70
-    "react-refresh": "^0.11.0",
71
-    "eslint-plugin-react": "^7.8.2",
65
+    "eslint-config-taro": "3.5.7",
72 66
     "eslint-plugin-import": "^2.12.0",
67
+    "eslint-plugin-react": "^7.8.2",
73 68
     "eslint-plugin-react-hooks": "^4.2.0",
74
-    "stylelint": "^14.4.0"
69
+    "react-refresh": "^0.11.0",
70
+    "stylelint": "^14.4.0",
71
+    "webpack": "4.46.0"
75 72
   }
76 73
 }

+ 9
- 1
src/app.config.js Bestand weergeven

@@ -38,5 +38,13 @@ export default defineAppConfig({
38 38
     navigationBarBackgroundColor: '#1A7565',
39 39
     navigationBarTitleText: '文明创城',
40 40
     navigationBarTextStyle: 'white'
41
-  }
41
+  },
42
+  permission: {
43
+    "scope.userLocation": {
44
+      desc: "你的位置信息将用于定位点位" // 高速公路行驶持续后台定位
45
+    }
46
+  },
47
+  requiredPrivateInfos: [
48
+    'getLocation'
49
+  ]
42 50
 })

+ 16
- 11
src/app.js Bestand weergeven

@@ -1,18 +1,23 @@
1
-import { Component } from 'react'
1
+import React from 'react';
2
+import Taro from '@tarojs/taro';
3
+import store, { Provider } from '@/store';
2 4
 import './app.less'
3 5
 
4
-class App extends Component {
6
+const App = (props) => {
5 7
 
6
-  componentDidMount () {}
8
+  Taro.useLaunch(() => {
9
+    Taro.login({
10
+      success: (res) => {
11
+        store.getState('user').login(res.code);
12
+      }
13
+    })
14
+  });
7 15
 
8
-  componentDidShow () {}
9
-
10
-  componentDidHide () {}
11
-
12
-  render () {
13
-    // this.props.children 是将要会渲染的页面
14
-    return this.props.children
15
-  }
16
+  return (
17
+    <Provider>
18
+      {props.children}
19
+    </Provider>
20
+  );
16 21
 }
17 22
 
18 23
 export default App

+ 7
- 0
src/app.less Bestand weergeven

@@ -1,9 +1,16 @@
1 1
 
2 2
 page {
3
+  height: 100%;
3 4
   box-sizing: border-box;
4 5
   background: #f8f8f8;
5 6
   --main-bg-color: #1A7565;
6 7
   --main-space: 4vw;
8
+
9
+  // antm-js 样式修改
10
+  // 按钮主色
11
+  --buttonPrimaryBackgroundColor: #1A7565;
12
+  // 菊花转主色
13
+  --loading-spinner-color: #1A7565;
7 14
 }
8 15
 
9 16
 view {

+ 15
- 1
src/layouts/index.jsx Bestand weergeven

@@ -1,13 +1,27 @@
1 1
 import React from 'react';
2 2
 import { View } from '@tarojs/components';
3
+import { useModel } from '@/store';
4
+import { Loading } from '@antmjs/vantui';
5
+import laySty from './layout.module.less';
3 6
 
4 7
 export default (props) => {
5 8
   const { className, style } = props;
6 9
 
7
-  const classNames = `page-wrapper ${className}`;
10
+  const { person } = useModel('user');
11
+
12
+  const classNames = `${laySty['page-wrapper']} ${className}`;
8 13
 
9 14
   return (
10 15
     <View className={classNames} style={style}>
16
+      {
17
+        !person && (
18
+          <View className={laySty.loading}>
19
+             <Loading size="32px" vertical>
20
+              加载中...
21
+            </Loading>
22
+          </View>
23
+        )
24
+      }
11 25
       {props.children}
12 26
     </View>
13 27
   )

+ 18
- 0
src/layouts/layout.module.less Bestand weergeven

@@ -0,0 +1,18 @@
1
+
2
+.page-wrapper {
3
+  position: relative;
4
+  height: 100%;
5
+
6
+  .loading {
7
+    position: fixed;
8
+    background: #f8f8f8;
9
+    z-index: 1000;
10
+    width: 100%;
11
+    height: 100%;
12
+    top: 0;
13
+    left: 0;
14
+
15
+    display: grid;
16
+    place-items: center;
17
+  }
18
+}

+ 0
- 2
src/pages/home/components/Head.jsx Bestand weergeven

@@ -3,8 +3,6 @@ import { View } from '@tarojs/components';
3 3
 import style from './head.module.less';
4 4
 
5 5
 export default (props) => {
6
-  console.log(style)
7
-
8 6
   return (
9 7
     <View className={style.head}>
10 8
       <View className={style.profile}>

+ 2
- 2
src/pages/reporting/detail/components/Map.jsx Bestand weergeven

@@ -3,8 +3,8 @@ import { View, Map } from '@tarojs/components';
3 3
 import style from './map.module.less';
4 4
 
5 5
 export default (props) => {
6
-  const { location = '118.805513,31.969974' } = props;
7
-  const loc = location.split(',')
6
+  const { location } = props;
7
+  const loc = location ? location.split(',') : [,];
8 8
   
9 9
   return (
10 10
     <View className={style['map-box']}>

+ 28
- 2
src/pages/reporting/detail/index.jsx Bestand weergeven

@@ -1,14 +1,40 @@
1 1
 import React from 'react';
2
+import Taro from '@tarojs/taro';
2 3
 import { View } from '@tarojs/components';
3 4
 import Page from '@/layouts/index';
5
+import getAuthorize from '@/utils/authorize';
6
+import { Notify } from '@antmjs/vantui';
4 7
 import Map from './components/Map';
5 8
 import Issue from './components/Issue';
6 9
 
7 10
 export default (props) => {
8
-  
11
+
12
+  const [loc, setLoc] = React.useState();
13
+
14
+  React.useMemo(() => {
15
+    getAuthorize('scope.userLocation').then(() => {
16
+      Taro.getLocation({
17
+        success(res) {
18
+          setLoc(`${res.longitude},${res.latitude}`);
19
+        },
20
+        fail() {
21
+          Notify.show({
22
+            message: '获取位置失败, 请退出重试',
23
+            type: 'warning',
24
+          })
25
+        }
26
+      });
27
+    }).catch((err) => {
28
+      Notify.show({
29
+        message: '未能获取位置, 程序部分功能将不能正常使用',
30
+        type: 'warning',
31
+      })
32
+    });
33
+  }, []);
34
+
9 35
   return (
10 36
     <Page>
11
-      <Map />
37
+      <Map location={loc} />
12 38
       <Issue />
13 39
     </Page>
14 40
   )

+ 16
- 0
src/services/wxma.js Bestand weergeven

@@ -0,0 +1,16 @@
1
+import request from '@/utils/request';
2
+
3
+/*
4
+ * 授权手机
5
+ */
6
+export const authPhone = (id, data) => request(`/api/ma/auth-phone`, { data, method: 'put' });
7
+
8
+/*
9
+ * 授权头像
10
+ */
11
+export const authUser = (id, data) => request(`/api/ma/auth-user`, { data, method: 'put' });
12
+
13
+/*
14
+ * 小程序登录
15
+ */
16
+export const login = (code) => request(`/api/ma/login?code=${code}`, { method: 'post', silent: true });

+ 19
- 0
src/store/index.js Bestand weergeven

@@ -0,0 +1,19 @@
1
+import { createStore } from '@zjxpcyc/react-tiny-store';
2
+import useUser from './user';
3
+
4
+const models = {
5
+  'user': useUser,
6
+};
7
+
8
+const store = createStore(models);
9
+
10
+export default store;
11
+export const useModel = store.useModel;
12
+export const Provider = store.Provider;
13
+
14
+// store 有如下方法构成
15
+// getState(namespace) 获取 namespace 对应的 state, 但不能引起页面重新渲染
16
+// useModel(namespace) 其实是一个 hook, 获取 namespace 对应的 state
17
+// addModel(namespace, hook) 新加入一个 moodel
18
+// removeModel(namespace) 删除一个 model
19
+// Provider store 的 Provider 组件

+ 22
- 0
src/store/user.js Bestand weergeven

@@ -0,0 +1,22 @@
1
+import React from 'react';
2
+import Taro from '@tarojs/taro';
3
+import { login } from '@/services/wxma';
4
+
5
+export default function useUser() {
6
+  const [person, setPerson] = React.useState({});
7
+  const [user, setUser] = React.useState({});
8
+
9
+  const maLogin = (code) => {
10
+    login(code).then(res => {
11
+      setPerson(res.person);
12
+      setUser(res.user);
13
+      Taro.setStorage({ key: 'sessionKey', data: res.sessionKey })
14
+    });
15
+  }
16
+
17
+  return {
18
+    user,
19
+    person,
20
+    login: maLogin,
21
+  }
22
+}

+ 26
- 0
src/utils/authorize.js Bestand weergeven

@@ -0,0 +1,26 @@
1
+import Taro from '@tarojs/taro';
2
+
3
+export default (scope) => {
4
+  return new Promise((resolve, reject) => {
5
+    Taro.getSetting({
6
+      success(res) {
7
+        if (!res.authSetting[scope]) {
8
+          Taro.authorize({
9
+            scope,
10
+            success: resolve,
11
+            fail: (err) => {
12
+              console.error(err);
13
+              reject(err);
14
+            },
15
+          })
16
+        } else {
17
+          resolve();
18
+        }
19
+      },
20
+      fail(err) {
21
+        console.error(err);
22
+        reject(err);
23
+      }
24
+    });
25
+  });
26
+}

+ 5
- 0
src/utils/log.js Bestand weergeven

@@ -0,0 +1,5 @@
1
+import Taro from '@tarojs/taro';
2
+
3
+const logger = Taro.getRealtimeLogManager()
4
+
5
+export default logger;

+ 72
- 0
src/utils/request.js Bestand weergeven

@@ -0,0 +1,72 @@
1
+import Taro from '@tarojs/taro';
2
+import { getToken, setToken } from './token';
3
+import logger from './log';
4
+
5
+const getQueryStrByParams = params => {
6
+  if (!params) return undefined;
7
+
8
+  return Object.keys(params).map(key => {
9
+    const value = params[key];
10
+    return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`
11
+  }).join('&')
12
+}
13
+
14
+export default function request(api, options = {}) {
15
+  return new Promise((resolve, reject) => {
16
+    const { method = 'GET', params, data = {}, header = {}, silent = false, ...cfgs } = options;
17
+    const queryStr = params ? getQueryStrByParams(params) : undefined;
18
+    // eslint-disable-next-line no-undef
19
+    const url = queryStr ? `${HOST}${api}?${queryStr}` : `${HOST}${api}`
20
+    
21
+    const onError = (err) => {
22
+      console.error(err);
23
+      logger.error(`接口 [${method}]: ${url}`);
24
+      logger.error('参数: ', data);
25
+      logger.error(err);
26
+
27
+      if (!silent && 'GET' !== method.toUpperCase()) {
28
+        Taro.showModal({
29
+          title: err.message || err,
30
+          showCancel: false,
31
+        })
32
+      }
33
+
34
+      reject(err);
35
+    };
36
+
37
+    Taro.request({
38
+      url,
39
+      data,
40
+      method,
41
+      header: {
42
+        'content-type': 'application/json',
43
+        'authorization': getToken(),
44
+        ...header,
45
+      },
46
+      ...cfgs,
47
+    }).then(({ statusCode, header, data = result }) => {
48
+      if (statusCode >= 300) {
49
+        logger.error(header);
50
+        return onError(`网络错误 ${statusCode}`);
51
+      }
52
+
53
+      if (data.code === 1000) {
54
+        if (data.data.token) {
55
+          setToken(data.data.token);
56
+        }
57
+
58
+        if (!silent && 'GET' !== method.toUpperCase()) {
59
+          Taro.showToast({
60
+            title: '操作成功',
61
+            icon: 'none',
62
+          })
63
+        }
64
+
65
+        resolve(data.data);
66
+      } else {
67
+        onError(data);
68
+      }
69
+    }).catch(onError);
70
+
71
+  });
72
+}

+ 9
- 0
src/utils/token.js Bestand weergeven

@@ -0,0 +1,9 @@
1
+import Taro from '@tarojs/taro';
2
+
3
+export const getToken = function () {
4
+  return Taro.getStorageSync('token');
5
+}
6
+
7
+export const setToken = function (data) {
8
+  return Taro.setStorage({ key: 'token', data })
9
+}

+ 72
- 4
yarn.lock Bestand weergeven

@@ -10,6 +10,18 @@
10 10
     "@jridgewell/gen-mapping" "^0.1.0"
11 11
     "@jridgewell/trace-mapping" "^0.3.9"
12 12
 
13
+"@antmjs/vantui@^2.3.5":
14
+  version "2.3.5"
15
+  resolved "https://registry.npmmirror.com/@antmjs/vantui/-/vantui-2.3.5.tgz#8c9f8a714899f2639e573d16a9ddc5f39d3691d2"
16
+  integrity sha512-ljkwz6FA1lZ5Ms7l7dMrKJs67t9DUz0gPINKBMhKC4SPgzssfTxqoxsRTHZvCPowC7QzQBJjOwsRpGvCEIAkcw==
17
+  dependencies:
18
+    "@vant/icons" "^1.7.1"
19
+    classnames "^2.3.1"
20
+    dayjs "^1.10.6"
21
+    raf "^3.4.1"
22
+    rc-util "^5.14.0"
23
+    use-deep-compare-effect "^1.8.1"
24
+
13 25
 "@babel/code-frame@7.0.0-beta.44":
14 26
   version "7.0.0-beta.44"
15 27
   resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9"
@@ -187,7 +199,7 @@
187 199
   dependencies:
188 200
     "@babel/types" "^7.18.9"
189 201
 
190
-"@babel/helper-module-imports@^7.18.6":
202
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.18.6":
191 203
   version "7.18.6"
192 204
   resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
193 205
   integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
@@ -1088,7 +1100,7 @@
1088 1100
     core-js-pure "^3.25.1"
1089 1101
     regenerator-runtime "^0.13.11"
1090 1102
 
1091
-"@babel/runtime@^7.14.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4":
1103
+"@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.7.6", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4":
1092 1104
   version "7.20.6"
1093 1105
   resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3"
1094 1106
   integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==
@@ -2083,6 +2095,11 @@
2083 2095
     "@typescript-eslint/types" "5.46.0"
2084 2096
     eslint-visitor-keys "^3.3.0"
2085 2097
 
2098
+"@vant/icons@^1.7.1":
2099
+  version "1.8.0"
2100
+  resolved "https://registry.npmmirror.com/@vant/icons/-/icons-1.8.0.tgz#36b13f2e628b533f6523a93a168cf02f07056674"
2101
+  integrity sha512-sKfEUo2/CkQFuERxvkuF6mGQZDKu3IQdj5rV9Fm0weJXtchDSSQ+zt8qPCNUEhh9Y8shy5PzxbvAfOOkCwlCXg==
2102
+
2086 2103
 "@webassemblyjs/ast@1.9.0":
2087 2104
   version "1.9.0"
2088 2105
   resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
@@ -2238,6 +2255,11 @@
2238 2255
   resolved "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
2239 2256
   integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
2240 2257
 
2258
+"@zjxpcyc/react-tiny-store@^2.0.1":
2259
+  version "2.0.1"
2260
+  resolved "https://registry.npmmirror.com/@zjxpcyc/react-tiny-store/-/react-tiny-store-2.0.1.tgz#a83813d3ebd90050eeb0238af16fa355c034ab40"
2261
+  integrity sha512-+MTTcQ9aU8OMl7YrmX8UVnM5qUDktdHl0wpxmI5dVIwZxvHsKRKZuQn+ExOeCvJAVC2l+ubS7afT9rzTHPuPrA==
2262
+
2241 2263
 abab@^2.0.3, abab@^2.0.5:
2242 2264
   version "2.0.6"
2243 2265
   resolved "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
@@ -2879,6 +2901,13 @@ babel-plugin-global-define@1.0.3:
2879 2901
   resolved "https://registry.npmmirror.com/babel-plugin-global-define/-/babel-plugin-global-define-1.0.3.tgz#262c528f0c26bf318f4ccc77cf21df43a0fa6308"
2880 2902
   integrity sha512-M8Sby4wRLuLr+9UB8V31knVRf/rl0xkk51A7um6hUCvVPyOvLtI0u0k1OPiMgE2d7CwmeSa33NzGpaALHPQCPg==
2881 2903
 
2904
+babel-plugin-import@^1.13.5:
2905
+  version "1.13.5"
2906
+  resolved "https://registry.npmmirror.com/babel-plugin-import/-/babel-plugin-import-1.13.5.tgz#42eed1c5afd9a35ee1b1f8fe922b07c44077d753"
2907
+  integrity sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ==
2908
+  dependencies:
2909
+    "@babel/helper-module-imports" "^7.0.0"
2910
+
2882 2911
 babel-plugin-jsx-attributes-array-to-object@0.3.0:
2883 2912
   version "0.3.0"
2884 2913
   resolved "https://registry.npmmirror.com/babel-plugin-jsx-attributes-array-to-object/-/babel-plugin-jsx-attributes-array-to-object-0.3.0.tgz#ac7b551a2407750ac899460fe5e38b1dceaebed1"
@@ -3792,7 +3821,7 @@ class-utils@^0.3.5:
3792 3821
     isobject "^3.0.0"
3793 3822
     static-extend "^0.1.1"
3794 3823
 
3795
-classnames@^2.2.5:
3824
+classnames@^2.2.5, classnames@^2.3.1:
3796 3825
   version "2.3.2"
3797 3826
   resolved "https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
3798 3827
   integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==
@@ -4504,6 +4533,11 @@ data-urls@^2.0.0:
4504 4533
     whatwg-mimetype "^2.3.0"
4505 4534
     whatwg-url "^8.0.0"
4506 4535
 
4536
+dayjs@^1.10.6:
4537
+  version "1.11.7"
4538
+  resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2"
4539
+  integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==
4540
+
4507 4541
 de-indent@^1.0.2:
4508 4542
   version "1.0.2"
4509 4543
   resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
@@ -4756,6 +4790,11 @@ deps-regex@^0.1.4:
4756 4790
   resolved "https://registry.npmmirror.com/deps-regex/-/deps-regex-0.1.4.tgz#518667b7691460a5e7e0a341be76eb7ce8090184"
4757 4791
   integrity sha512-3tzwGYogSJi8HoG93R5x9NrdefZQOXgHgGih/7eivloOq6yC6O+yoFxZnkgP661twvfILONfoKRdF9GQOGx2RA==
4758 4792
 
4793
+dequal@^2.0.2:
4794
+  version "2.0.3"
4795
+  resolved "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
4796
+  integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
4797
+
4759 4798
 des.js@^1.0.0:
4760 4799
   version "1.0.1"
4761 4800
   resolved "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
@@ -9957,6 +9996,13 @@ quick-lru@^4.0.1:
9957 9996
   resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
9958 9997
   integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
9959 9998
 
9999
+raf@^3.4.1:
10000
+  version "3.4.1"
10001
+  resolved "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
10002
+  integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
10003
+  dependencies:
10004
+    performance-now "^2.1.0"
10005
+
9960 10006
 randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
9961 10007
   version "2.1.0"
9962 10008
   resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -9987,6 +10033,15 @@ raw-body@2.5.1:
9987 10033
     iconv-lite "0.4.24"
9988 10034
     unpipe "1.0.0"
9989 10035
 
10036
+rc-util@^5.14.0:
10037
+  version "5.25.3"
10038
+  resolved "https://registry.npmmirror.com/rc-util/-/rc-util-5.25.3.tgz#7f6a5895e4edc5acdf5f73e90e1c031f3b67257d"
10039
+  integrity sha512-+M+44T6UdM4iOd4QXRQKQjitOY26vC5pgFPNSo0XsY9OWzpHvy77BI55eL9Q9oDMUHzVuRNzzUkK1RI2W3n+ZQ==
10040
+  dependencies:
10041
+    "@babel/runtime" "^7.18.3"
10042
+    react-is "^16.12.0"
10043
+    shallowequal "^1.1.0"
10044
+
9990 10045
 rc@1.2.8, rc@^1.0.1, rc@^1.1.6, rc@^1.2.8:
9991 10046
   version "1.2.8"
9992 10047
   resolved "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
@@ -10005,7 +10060,7 @@ react-dom@^18.0.0:
10005 10060
     loose-envify "^1.1.0"
10006 10061
     scheduler "^0.23.0"
10007 10062
 
10008
-react-is@^16.13.1:
10063
+react-is@^16.12.0, react-is@^16.13.1:
10009 10064
   version "16.13.1"
10010 10065
   resolved "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
10011 10066
   integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -10861,6 +10916,11 @@ shallow-clone@^3.0.0:
10861 10916
   dependencies:
10862 10917
     kind-of "^6.0.2"
10863 10918
 
10919
+shallowequal@^1.1.0:
10920
+  version "1.1.0"
10921
+  resolved "https://registry.npmmirror.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
10922
+  integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
10923
+
10864 10924
 shebang-command@^1.2.0:
10865 10925
   version "1.2.0"
10866 10926
   resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -12188,6 +12248,14 @@ url@^0.11.0:
12188 12248
     punycode "1.3.2"
12189 12249
     querystring "0.2.0"
12190 12250
 
12251
+use-deep-compare-effect@^1.8.1:
12252
+  version "1.8.1"
12253
+  resolved "https://registry.npmmirror.com/use-deep-compare-effect/-/use-deep-compare-effect-1.8.1.tgz#ef0ce3b3271edb801da1ec23bf0754ef4189d0c6"
12254
+  integrity sha512-kbeNVZ9Zkc0RFGpfMN3MNfaKNvcLNyxOAAd9O4CBZ+kCBXXscn9s/4I+8ytUER4RDpEYs5+O6Rs4PqiZ+rHr5Q==
12255
+  dependencies:
12256
+    "@babel/runtime" "^7.12.5"
12257
+    dequal "^2.0.2"
12258
+
12191 12259
 use@^3.1.0:
12192 12260
   version "3.1.1"
12193 12261
   resolved "https://registry.npmmirror.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"