Преглед изворни кода

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend-mes into dengfei

695593266@qq.com пре 7 месеци
родитељ
комит
70af104d06

+ 18 - 0
src/api/ruleManagement/plan.js

@@ -114,3 +114,21 @@ export async function getWarehouseList() {
   }
   return Promise.reject(new Error(res.data.message));
 }
+
+// /mes/producetaskrulerecord/getEamInfoByMesWorkOrderIdAndPlanConfigId/{workOrderId}/{planConfigId}
+export async function getEamInfoByMesWorkOrderIdAndPlanConfigId(
+  workOrderId,
+  planConfigId
+) {
+  const res = await request.get(
+    `/mes/producetaskrulerecord/getEamInfoByMesWorkOrderIdAndPlanConfigId/` +
+      workOrderId +
+      '/' +
+      planConfigId,
+    {}
+  );
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 6 - 4
src/components/selectPlanRules/selectPlanRules.vue

@@ -62,9 +62,11 @@
         })
       },
       // 1巡点检 2保养
-      ruleType: {
-        type: Number,
-        default: 1
+      ruleTypes: {
+        type: Array,
+        default: () => {
+          return [1, 2];
+        }
       }
     },
     computed: {
@@ -241,7 +243,7 @@
           size: limit,
           ...where,
           ...this.where,
-          ruleType: this.ruleType
+          ruleTypes: this.ruleTypes
         });
       },
       /* 刷新表格 */

+ 52 - 15
src/views/batchRecord/components/editModal.vue

@@ -104,10 +104,10 @@
             </el-form-item>
           </el-col>
           <el-col v-if="form.itemType == '1'" :span="8">
-            <el-form-item label="关联计划规则" required prop="ruleName">
+            <el-form-item label="关联计划规则" required prop="planConfigName">
               <div class="mask-box" @click="selectRulesId">
                 <el-input
-                  v-model="form.ruleName"
+                  v-model="form.planConfigName"
                   placeholder="请选择设备有关计划规则,如保养规则,巡点检规则等"
                   size="small"
                   readonly
@@ -333,7 +333,11 @@
         <header-title title="关联产品" style="margin-top: 20px"></header-title>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="生产工单号" prop="workOrderCode">
+            <el-form-item
+              label="生产工单号"
+              prop="workOrderCode"
+              :required="form.itemType == 1"
+            >
               <el-input
                 v-model="form.workOrderCode"
                 placeholder="请选择生产工单"
@@ -713,6 +717,11 @@
       ref="selectPlanRulesRef"
       @chooseRules="chooseRules"
     ></selectPlanRules>
+
+    <PlanRulesDialog
+      ref="planRulesDialogRef"
+      @reload="reload"
+    ></PlanRulesDialog>
   </ele-modal>
 </template>
 
@@ -750,6 +759,8 @@
   import statistics from './statistics.vue';
   import selectWorkOrder from '@/views/checklistManagement/components/selectWorkOrder.vue';
   import selectPlanRules from '@/components/selectPlanRules/selectPlanRules.vue';
+  import { getEamInfoByMesWorkOrderIdAndPlanConfigId } from '@/api/ruleManagement/plan';
+  import PlanRulesDialog from '@/views/produce/components/prenatalExamination/PlanRulesDialog.vue';
 
   export default {
     name: 'editModal',
@@ -770,7 +781,8 @@
       material,
       statistics,
       selectWorkOrder,
-      selectPlanRules
+      selectPlanRules,
+      PlanRulesDialog
     },
     props: {
       // 1-产前准备,2-过程控制,3-产后检查 4-生产统计
@@ -866,7 +878,9 @@
         recordRulesExecuteMethodName: '',
         recordRulesExecuteMethodId: null,
         conclusion: null,
-        outputType: 1
+        outputType: 1,
+        planConfigId: null,
+        planConfigName: ''
       };
 
       return {
@@ -898,6 +912,10 @@
             { required: true, message: '请选择规则', trigger: 'blur' },
             { required: true, message: '请选择规则', trigger: 'change' }
           ],
+          planConfigName: [
+            { required: true, message: '请选择规则', trigger: 'blur' },
+            { required: true, message: '请选择规则', trigger: 'change' }
+          ],
           productCode: [
             {
               required: true,
@@ -1201,7 +1219,9 @@
           };
         });
         // 工时毫秒转小时
-        this.form.duration = (this.form.duration / (1000 * 60 * 60)).toFixed(2);
+        if (this.form.duration) {
+          this.form.duration = this.form.duration / (1000 * 60 * 60);
+        }
         this.form.executeUsersIds = this.form.executeUsers.map((i) => i.userId);
         this.form.teamId =
           this.form.executeUsers.length > 0
@@ -1333,6 +1353,8 @@
       // 选择事项规则
       chooseRules(rules) {
         console.log('rules', rules);
+        this.form.planConfigId = rules.id;
+        this.form.planConfigName = rules.name;
       },
       // 获取生产工单号
       async getWorkOrderList(code = '') {
@@ -1397,14 +1419,7 @@
 
           if (this.form.executeMethod == 1) {
             // 设备保养计划相关逻辑
-            this.dialogTitle = '新增设备保养计划';
-            this.$refs.programRulesDialogRef.init(
-              this.form,
-              this.workOrderInfo ? this.workOrderInfo : this.form,
-              {
-                name: this.form.produceTaskName
-              }
-            );
+            this.planRulesSaveOrSubmit();
           } else if (this.form.executeMethod == 2) {
             this.releaseRulesSaveOrSubmit(type);
           } else {
@@ -1437,7 +1452,7 @@
             this.$message.success('保存成功!');
             this.$emit('reload');
 
-            this.handleClose();
+            // this.handleClose();
             this.butLoading = false;
           } catch (error) {
             this.butLoading = false;
@@ -1950,6 +1965,28 @@
             this.$refs.statisticsRef.rebuildMaterialAndProcessData();
           }
         });
+      },
+      // 计划规则 去执行
+      async planRulesSaveOrSubmit() {
+        if (!this.form.planConfigId) {
+          this.$message.warning('请选择事项规则!');
+          return;
+        }
+        if (!this.form.workOrderId) {
+          this.$message.warning('请选择生产工单!');
+          return;
+        }
+        const data = await getEamInfoByMesWorkOrderIdAndPlanConfigId(
+          this.form.workOrderId,
+          this.form.planConfigId
+        );
+        if (!data || JSON.stringify(data) == '{}') {
+          this.$message.warning('未查询到对应的设备计划信息!');
+          return;
+        }
+        console.log('data', data);
+        // 计划规则 巡点检 设备保养
+        this.$refs.planRulesDialogRef.open(data);
       }
     }
   };

+ 8 - 8
src/views/batchRecord/components/tables/deviceBatchRecordTable.vue

@@ -140,17 +140,17 @@
       seekList() {
         return [
           {
-            label: '工单单号',
-            value: 'code',
+            label: '生产工单号',
+            value: 'mesWorkOrderCode',
+            type: 'input',
+            placeholder: '请输入'
+          },
+          {
+            label: '计划单号:',
+            value: 'planCode',
             type: 'input',
             placeholder: '请输入'
           },
-          // {
-          //   label: '计划单号:',
-          //   value: 'planCode',
-          //   type: 'input',
-          //   placeholder: '请输入'
-          // },
           {
             label: '状态:',
             value: 'orderStatus',

+ 26 - 20
src/views/produce/components/prenatalExamination/PlanRulesDialog.vue

@@ -9,32 +9,31 @@
     width="80%"
     append-to-body
   >
-    <div v-if="rulesInfo && currentPlanDevices">
-      <!-- {{ JSON.stringify(currentPlanDevices) }} -->
-      <!-- 根据当前currentPlanDevices的 planStatus状态展示不同内容 -->
+    <div v-if="rulesInfo && currentPlanOrders">
+      <!-- {{ JSON.stringify(currentPlanOrders) }} -->
+      <!-- 根据当前currentPlanOrders的 planStatus状态展示不同内容 -->
       <!-- 0 派单, 4为撤回的计划 -->
       <programRulesDialog
         v-if="
-          currentPlanDevices.planStatus == 0 ||
-          currentPlanDevices.planStatus == 4
+          currentPlanOrders.planStatus == 0 || currentPlanOrders.planStatus == 4
         "
-        :planId="currentPlanDevices.planId"
-        @done="setPlanStatus(1)"
+        :planId="currentPlanOrders.planId"
+        :info="currentPlanOrders"
+        @done="setWorkOrderIdAndStatus"
       />
       <!-- 1 报工 -->
       <signingUpWork
-        v-if="currentPlanDevices.planStatus == 1"
-        :planId="currentPlanDevices.planId"
-        :workOrderId="currentPlanDevices.eamWorkOrderId"
+        v-if="currentPlanOrders.planStatus == 1"
+        :planId="currentPlanOrders.planId"
+        :workOrderId="currentPlanOrders.eamWorkOrderId"
         @refresh="setPlanStatus(2)"
       ></signingUpWork>
       <!-- 2 执行中 3 完成展示详情-->
       <workOrderDetails
         v-if="
-          currentPlanDevices.planStatus == 3 ||
-          currentPlanDevices.planStatus == 2
+          currentPlanOrders.planStatus == 3 || currentPlanOrders.planStatus == 2
         "
-        :workOrderId="currentPlanDevices.eamWorkOrderId"
+        :workOrderId="currentPlanOrders.eamWorkOrderId"
       ></workOrderDetails>
     </div>
 
@@ -43,7 +42,7 @@
         <div class="txt-tip">
           <span class="active">
-            {{ rulesInfo ? rulesInfo.planDevices.length : 0 }}
+            {{ rulesInfo ? rulesInfo.planOrders.length : 0 }}
           </span>
           条记录,当前位于第
           <span class="active">{{ activeIndex + 1 }}</span
@@ -63,7 +62,7 @@
         <el-button
           type="primary"
           size="mini"
-          :disabled="activeIndex === rulesInfo.planDevices.length - 1"
+          :disabled="activeIndex === rulesInfo.planOrders.length - 1"
           @click="activeIndex++"
         >
           下一页
@@ -92,7 +91,7 @@
     data() {
       return {
         visible: false,
-        title: '巡点检',
+        title: '计划规则',
         // 规则信息
         rulesInfo: null,
         // 当前项
@@ -101,9 +100,9 @@
     },
     computed: {
       // 当前设备信息
-      currentPlanDevices() {
-        if (this.rulesInfo && this.rulesInfo.planDevices) {
-          return this.rulesInfo.planDevices[this.activeIndex];
+      currentPlanOrders() {
+        if (this.rulesInfo && this.rulesInfo.planOrders) {
+          return this.rulesInfo.planOrders[this.activeIndex];
         }
         return {};
       }
@@ -113,6 +112,7 @@
       open(data) {
         this.rulesInfo = data;
         console.log('this.rulesInfo', this.rulesInfo);
+        this.title = data.planConfigName;
         this.visible = true;
       },
       // 关闭时清理表单
@@ -127,7 +127,13 @@
       },
       // 报工成功后刷新当前项状态
       setPlanStatus(status) {
-        this.rulesInfo.planDevices[this.activeIndex].planStatus = status;
+        this.rulesInfo.planOrders[this.activeIndex].planStatus = status;
+      },
+      setWorkOrderIdAndStatus(workOrderId) {
+        console.log('workOrderId', workOrderId);
+        this.rulesInfo.planOrders[this.activeIndex].eamWorkOrderId =
+          workOrderId;
+        this.setPlanStatus(1);
       }
     }
   };

+ 40 - 5
src/views/produce/components/prenatalExamination/components/workOrder/programRulesDialog.vue

@@ -423,7 +423,6 @@
   import { getById } from '@/api/maintenance/patrol_maintenance';
   import { getFile } from '@/api/system/file';
   import { deepClone } from 'ele-admin/lib/utils/core';
-  import work from '@/api/technology/work';
 
   export default {
     components: {
@@ -440,6 +439,11 @@
       planId: {
         type: String,
         required: true
+      },
+      // 当前信息
+      info: {
+        type: Object,
+        required: true
       }
     },
     data() {
@@ -698,7 +702,7 @@
       },
       autoOrderChange(val) {
         if (val == 0) {
-          this.addForm.executorId = '';
+          this.addForm.executorId = [];
           this.addForm.groupId = '';
         }
       },
@@ -760,7 +764,7 @@
                 let res = await saveOrUpdate(sendMsg);
                 if (res) {
                   this.$message.success(type + '成功!');
-                  this.$emit('done');
+                  this.$emit('done', res.data[0]);
                   this.loading = false;
                   this.visible = false;
                 }
@@ -822,8 +826,10 @@
         console.log(id);
         try {
           const res = await getById(id);
-          console.log('res----------', res);
+
+          console.log('res----------', res.data);
           this.addForm = res.data;
+
           this.addForm.id = res.data.planId;
           if (this.dialogTitle === '派单') {
             this.addForm.autoOrder = 1;
@@ -859,7 +865,11 @@
           // this._getMatterRulesDetails(res.ruleId);
           this.$set(this.addForm, 'code', res.data.code);
           this.$set(this.addForm, 'urgent', JSON.stringify(res.data.urgent));
-          this.$set(this.addForm, 'executorId', res.data.executorId.split(','));
+          this.$set(
+            this.addForm,
+            'executorId',
+            res.data.executorId.split(',').filter((i) => i)
+          );
           this.$set(this.addForm, 'imageUrl', {});
           console.log(this.rootData);
           if (res.data.groupId) {
@@ -881,6 +891,25 @@
           //   this.$refs.equiListTree.setCheckedKeys(keys);
           // });
           // this.clickedTreeNode = true;
+
+          console.log('this.info', this.info);
+          if (this.info.planDevices) {
+            let userIds = this.info.planDevices
+              .map((i) => {
+                return i.deviceUserId;
+              })
+              .filter((i) => i);
+            // 去重
+            userIds = [...new Set(userIds)];
+
+            console.log('userIds', userIds);
+            // 赋值负责人
+            if (userIds.length > 0) {
+              this.addForm.executorId = userIds;
+            }
+          }
+
+          console.log('this.addForm', this.addForm);
         } catch (error) {
           console.log(error);
         }
@@ -1234,4 +1263,10 @@
     justify-content: flex-end;
     gap: 15px;
   }
+
+  :deep(.el-form) {
+    .el-form-item:last-child {
+      margin-bottom: 22px !important;
+    }
+  }
 </style>

+ 1 - 1
src/views/produce/components/prenatalExamination/index.vue

@@ -233,7 +233,7 @@
         console.log('item', item);
 
         if (item.executeMethod == 1) {
-          // 计划规则 巡点检
+          // 计划规则 巡点检 设备保养
           this.$refs.planRulesDialogRef.open(item);
         } else if (item.executeMethod == 2) {
           this.$refs.releaseRulesDialogRef.open(

+ 1 - 1
vue.config.js

@@ -37,7 +37,7 @@ module.exports = {
         // target: 'http://192.168.1.251:18086',
         // target: 'http://192.168.1.251:18086',
         // target: 'http://192.168.1.125:18086',
-        // target: 'http://192.168.1.116:18086', // 赵沙金
+        target: 'http://192.168.1.116:18086', // 赵沙金
         // target: 'http://192.168.1.251:18086', // 开发环境
         // target: 'http://192.168.1.103:18086',192.168.1.116
         // target: 'http://192.168.1.144:18086',

+ 165 - 104
yarn.lock

@@ -1175,15 +1175,7 @@
     "@types/eslint" "*"
     "@types/estree" "*"
 
-"@types/eslint@*":
-  version "9.6.1"
-  resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-9.6.1.tgz"
-  integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==
-  dependencies:
-    "@types/estree" "*"
-    "@types/json-schema" "*"
-
-"@types/eslint@^7.29.0 || ^8.4.1":
+"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1":
   version "8.56.12"
   resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.12.tgz"
   integrity sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==
@@ -1196,7 +1188,7 @@
   resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz"
   integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
 
-"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0":
+"@types/express-serve-static-core@*":
   version "5.0.6"
   resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz"
   integrity sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==
@@ -1216,16 +1208,7 @@
     "@types/range-parser" "*"
     "@types/send" "*"
 
-"@types/express@*":
-  version "5.0.3"
-  resolved "https://registry.npmmirror.com/@types/express/-/express-5.0.3.tgz"
-  integrity sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==
-  dependencies:
-    "@types/body-parser" "*"
-    "@types/express-serve-static-core" "^5.0.0"
-    "@types/serve-static" "*"
-
-"@types/express@^4.17.13":
+"@types/express@*", "@types/express@^4.17.13":
   version "4.17.23"
   resolved "https://registry.npmmirror.com/@types/express/-/express-4.17.23.tgz"
   integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==
@@ -1907,7 +1890,7 @@ acorn-walk@^8.0.0, acorn-walk@^8.0.2:
 
 "acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.0.4, acorn@^8.0.5, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.9.0:
   version "8.15.0"
-  resolved "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz"
+  resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz"
   integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
 
 address@^1.1.2:
@@ -1949,7 +1932,17 @@ ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1:
     json-schema-traverse "^0.4.1"
     uri-js "^4.2.2"
 
-ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0:
+ajv@^8.0.0:
+  version "8.17.1"
+  resolved "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz"
+  integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+  dependencies:
+    fast-deep-equal "^3.1.3"
+    fast-uri "^3.0.1"
+    json-schema-traverse "^1.0.0"
+    require-from-string "^2.0.2"
+
+ajv@^8.8.2, ajv@^8.9.0:
   version "8.17.1"
   resolved "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz"
   integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
@@ -2614,7 +2607,23 @@ chalk@^3.0.0:
     ansi-styles "^4.1.0"
     supports-color "^7.1.0"
 
-chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
+chalk@^4.0.0:
+  version "4.1.2"
+  resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
+  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+  dependencies:
+    ansi-styles "^4.1.0"
+    supports-color "^7.1.0"
+
+chalk@^4.1.0:
+  version "4.1.2"
+  resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
+  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+  dependencies:
+    ansi-styles "^4.1.0"
+    supports-color "^7.1.0"
+
+chalk@^4.1.2:
   version "4.1.2"
   resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
   integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -2845,7 +2854,12 @@ comma-separated-tokens@^2.0.0:
   resolved "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz"
   integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==
 
-commander@^2.15.1, commander@^2.20.0:
+commander@^2.15.1:
+  version "2.20.3"
+  resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
+  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@^2.20.0:
   version "2.20.3"
   resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
   integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@@ -2877,14 +2891,7 @@ component-classes@^1.2.3:
   dependencies:
     component-indexof "0.0.3"
 
-component-closest@*:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/component-closest/-/component-closest-1.0.1.tgz"
-  integrity sha512-1rpXfxA9UK1zChrPxhvBUBfpPKxMRh/YkE4k0W4VaVCyqc7+r0p59kUjA5UBH+yN/LNOrzYqN49MshTccuR+9w==
-  dependencies:
-    component-matches-selector "~0.1.6"
-
-component-closest@^0.1.4:
+component-closest@*, component-closest@^0.1.4:
   version "0.1.4"
   resolved "https://registry.npmmirror.com/component-closest/-/component-closest-0.1.4.tgz"
   integrity sha512-NF9hMj6JKGM5sb6wP/dg7GdJOttaIH9PcTsUNdWcrvu7Kw/5R5swQAFpgaYEHlARrNMyn4Wf7O1PlRej+pt76Q==
@@ -2904,12 +2911,7 @@ component-emitter@^1.2.1:
   resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.1.tgz"
   integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==
 
-component-event@*:
-  version "0.2.1"
-  resolved "https://registry.npmmirror.com/component-event/-/component-event-0.2.1.tgz"
-  integrity sha512-wGA++isMqiDq1jPYeyv2as/Bt/u+3iLW0rEa+8NQ82jAv3TgqMiCM+B2SaBdn2DfLilLjjq736YcezihRYhfxw==
-
-component-event@^0.1.4:
+component-event@*, component-event@^0.1.4:
   version "0.1.4"
   resolved "https://registry.npmmirror.com/component-event/-/component-event-0.1.4.tgz"
   integrity sha512-GMwOG8MnUHP1l8DZx1ztFO0SJTFnIzZnBDkXAj8RM2ntV2A6ALlDxgbMY1Fvxlg6WPQ+5IM/a6vg4PEYbjg/Rw==
@@ -2919,7 +2921,7 @@ component-indexof@0.0.3:
   resolved "https://registry.npmmirror.com/component-indexof/-/component-indexof-0.0.3.tgz"
   integrity sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw==
 
-component-matches-selector@^0.1.5, component-matches-selector@~0.1.5, component-matches-selector@~0.1.6:
+component-matches-selector@^0.1.5, component-matches-selector@~0.1.5:
   version "0.1.7"
   resolved "https://registry.npmmirror.com/component-matches-selector/-/component-matches-selector-0.1.7.tgz"
   integrity sha512-Yb2+pVBvrqkQVpPaDBF0DYXRreBveXJNrpJs9FnFu8PF6/5IIcz5oDZqiH9nB5hbD2/TmFVN5ZCxBzqu7yFFYQ==
@@ -3162,7 +3164,15 @@ css-select@^4.1.3:
     domutils "^2.8.0"
     nth-check "^2.0.1"
 
-css-tree@^1.1.2, css-tree@^1.1.3:
+css-tree@^1.1.2:
+  version "1.1.3"
+  resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz"
+  integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+  dependencies:
+    mdn-data "2.0.14"
+    source-map "^0.6.1"
+
+css-tree@^1.1.3:
   version "1.1.3"
   resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz"
   integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
@@ -3371,12 +3381,7 @@ deep-is@^0.1.3:
   resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz"
   integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
 
-deepmerge@^1.2.0:
-  version "1.5.2"
-  resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz"
-  integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==
-
-deepmerge@^1.5.2:
+deepmerge@^1.2.0, deepmerge@^1.5.2:
   version "1.5.2"
   resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz"
   integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==
@@ -3612,7 +3617,7 @@ domready@1.0.8:
   resolved "https://registry.npmmirror.com/domready/-/domready-1.0.8.tgz"
   integrity sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA==
 
-domutils@^1.5.1, domutils@^1.7.0:
+domutils@^1.5.1:
   version "1.7.0"
   resolved "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz"
   integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
@@ -3620,16 +3625,15 @@ domutils@^1.5.1, domutils@^1.7.0:
     dom-serializer "0"
     domelementtype "1"
 
-domutils@^2.5.2:
-  version "2.8.0"
-  resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
-  integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+domutils@^1.7.0:
+  version "1.7.0"
+  resolved "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz"
+  integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
   dependencies:
-    dom-serializer "^1.0.1"
-    domelementtype "^2.2.0"
-    domhandler "^4.2.0"
+    dom-serializer "0"
+    domelementtype "1"
 
-domutils@^2.8.0:
+domutils@^2.5.2, domutils@^2.8.0:
   version "2.8.0"
   resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
   integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
@@ -3950,7 +3954,12 @@ escape-latex@^1.2.0:
   resolved "https://registry.npmmirror.com/escape-latex/-/escape-latex-1.2.0.tgz"
   integrity sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==
 
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@1.0.5:
+escape-string-regexp@^1.0.2:
+  version "1.0.5"
+  resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+  integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+escape-string-regexp@^1.0.5:
   version "1.0.5"
   resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
   integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
@@ -3965,6 +3974,11 @@ escape-string-regexp@^5.0.0:
   resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz"
   integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
 
+escape-string-regexp@1.0.5:
+  version "1.0.5"
+  resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+  integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
 eslint-config-prettier@^8.10.0:
   version "8.10.0"
   resolved "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz"
@@ -4374,7 +4388,7 @@ file-entry-cache@^6.0.1:
 
 file-saver@^2.0.5:
   version "2.0.5"
-  resolved "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz"
+  resolved "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz"
   integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==
 
 fill-range@^4.0.0:
@@ -4416,7 +4430,15 @@ find-cache-dir@^3.3.1:
     make-dir "^3.0.2"
     pkg-dir "^4.1.0"
 
-find-up@^4.0.0, find-up@^4.1.0:
+find-up@^4.0.0:
+  version "4.1.0"
+  resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz"
+  integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+  dependencies:
+    locate-path "^5.0.0"
+    path-exists "^4.0.0"
+
+find-up@^4.1.0:
   version "4.1.0"
   resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz"
   integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
@@ -4645,26 +4667,26 @@ github-markdown-css@^5.1.0:
   resolved "https://registry.npmmirror.com/github-markdown-css/-/github-markdown-css-5.8.1.tgz"
   integrity sha512-8G+PFvqigBQSWLQjyzgpa2ThD9bo7+kDsriUIidGcRhXgmcaAWUIpCZf8DavJgc+xifjbCG+GvMyWr0XMXmc7g==
 
-glob-parent@^5.1.2, glob-parent@~5.1.2:
+glob-parent@^5.1.2:
   version "5.1.2"
   resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
   integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
   dependencies:
     is-glob "^4.0.1"
 
-glob-parent@^6.0.1:
+glob-parent@^6.0.1, glob-parent@^6.0.2:
   version "6.0.2"
   resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz"
   integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
   dependencies:
     is-glob "^4.0.3"
 
-glob-parent@^6.0.2:
-  version "6.0.2"
-  resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz"
-  integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+glob-parent@~5.1.2:
+  version "5.1.2"
+  resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
+  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
   dependencies:
-    is-glob "^4.0.3"
+    is-glob "^4.0.1"
 
 glob-to-regexp@^0.4.1:
   version "0.4.1"
@@ -4693,7 +4715,14 @@ globals@^11.1.0:
   resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz"
   integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
 
-globals@^13.19.0, globals@^13.24.0:
+globals@^13.19.0:
+  version "13.24.0"
+  resolved "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz"
+  integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
+  dependencies:
+    type-fest "^0.20.2"
+
+globals@^13.24.0:
   version "13.24.0"
   resolved "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz"
   integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
@@ -5552,12 +5581,7 @@ isarray@^2.0.5:
   resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz"
   integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
 
-isarray@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
-  integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
-
-isarray@1.0.0:
+isarray@~1.0.0, isarray@1.0.0:
   version "1.0.0"
   resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
   integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
@@ -5581,7 +5605,12 @@ isobject@^2.1.0:
   dependencies:
     isarray "1.0.0"
 
-isobject@^3.0.0, isobject@^3.0.1:
+isobject@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz"
+  integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
+
+isobject@^3.0.1:
   version "3.0.1"
   resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz"
   integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
@@ -5762,7 +5791,21 @@ keyv@^4.5.3:
   dependencies:
     json-buffer "3.0.1"
 
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+kind-of@^3.0.2:
+  version "3.2.2"
+  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+  integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+  dependencies:
+    is-buffer "^1.1.5"
+
+kind-of@^3.0.3:
+  version "3.2.2"
+  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+  integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+  dependencies:
+    is-buffer "^1.1.5"
+
+kind-of@^3.2.0:
   version "3.2.2"
   resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
   integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
@@ -5949,7 +5992,15 @@ lower-case@^2.0.2:
   dependencies:
     tslib "^2.0.3"
 
-lru-cache@^4.0.1, lru-cache@^4.1.2:
+lru-cache@^4.0.1:
+  version "4.1.5"
+  resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
+  integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+  dependencies:
+    pseudomap "^1.0.2"
+    yallist "^2.1.2"
+
+lru-cache@^4.1.2:
   version "4.1.5"
   resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
   integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
@@ -6526,12 +6577,7 @@ micromatch@3.1.0:
     snapdragon "^0.8.1"
     to-regex "^3.0.1"
 
-"mime-db@>= 1.43.0 < 2":
-  version "1.54.0"
-  resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz"
-  integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
-
-mime-db@1.52.0:
+"mime-db@>= 1.43.0 < 2", mime-db@1.52.0:
   version "1.52.0"
   resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz"
   integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
@@ -7101,7 +7147,12 @@ parse5@^5.1.1:
   resolved "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz"
   integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
 
-parse5@^6.0.0, parse5@^6.0.1:
+parse5@^6.0.0:
+  version "6.0.1"
+  resolved "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz"
+  integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+parse5@^6.0.1:
   version "6.0.1"
   resolved "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz"
   integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
@@ -7139,17 +7190,17 @@ path-is-absolute@^1.0.0:
   resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
   integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
 
-path-key@^2.0.0, path-key@^2.0.1:
+path-key@^2.0.0:
   version "2.0.1"
   resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz"
   integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
 
-path-key@^3.0.0:
-  version "3.1.1"
-  resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz"
-  integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+path-key@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz"
+  integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
 
-path-key@^3.1.0:
+path-key@^3.0.0, path-key@^3.1.0:
   version "3.1.1"
   resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz"
   integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
@@ -7479,7 +7530,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
   resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
   integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
 
-postcss@^5.2.17, "postcss@>4 <9":
+postcss@^5.2.17:
   version "5.2.18"
   resolved "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz"
   integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==
@@ -7489,7 +7540,7 @@ postcss@^5.2.17, "postcss@>4 <9":
     source-map "^0.5.6"
     supports-color "^3.2.3"
 
-"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.33, postcss@^8.5.3:
+"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.33, postcss@^8.5.3, "postcss@>4 <9":
   version "8.5.5"
   resolved "https://registry.npmmirror.com/postcss/-/postcss-8.5.5.tgz"
   integrity sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==
@@ -8066,12 +8117,7 @@ sass@^1.3.0, sass@^1.54.8:
   optionalDependencies:
     "@parcel/watcher" "^2.4.1"
 
-sax@^1.2.4:
-  version "1.4.1"
-  resolved "https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz"
-  integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==
-
-sax@~1.2.4:
+sax@^1.2.4, sax@~1.2.4:
   version "1.2.4"
   resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz"
   integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
@@ -8108,7 +8154,27 @@ schema-utils@^3.1.1:
     ajv "^6.12.5"
     ajv-keywords "^3.5.2"
 
-schema-utils@^4.0.0, schema-utils@^4.3.0, schema-utils@^4.3.2:
+schema-utils@^4.0.0:
+  version "4.3.2"
+  resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz"
+  integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==
+  dependencies:
+    "@types/json-schema" "^7.0.9"
+    ajv "^8.9.0"
+    ajv-formats "^2.1.1"
+    ajv-keywords "^5.1.0"
+
+schema-utils@^4.3.0:
+  version "4.3.2"
+  resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz"
+  integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==
+  dependencies:
+    "@types/json-schema" "^7.0.9"
+    ajv "^8.9.0"
+    ajv-formats "^2.1.1"
+    ajv-keywords "^5.1.0"
+
+schema-utils@^4.3.2:
   version "4.3.2"
   resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz"
   integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==
@@ -9029,12 +9095,7 @@ trough@^2.0.0:
   resolved "https://registry.npmmirror.com/trough/-/trough-2.2.0.tgz"
   integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==
 
-tslib@^2.0.3:
-  version "2.8.1"
-  resolved "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz"
-  integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
-
-tslib@2.3.0:
+tslib@^2.0.3, tslib@2.3.0:
   version "2.3.0"
   resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz"
   integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
@@ -9426,7 +9487,7 @@ vue-demi@^0.13.11:
 
 vue-direction-key@^1.0.5:
   version "1.0.5"
-  resolved "https://registry.npmmirror.com/vue-direction-key/-/vue-direction-key-1.0.5.tgz"
+  resolved "https://registry.npmjs.org/vue-direction-key/-/vue-direction-key-1.0.5.tgz"
   integrity sha512-5H8u0xYOyVvEXmuydIBH15zhRWzM4iyYxBXBDaeqnVqJ//40XUyN4DIT14ClE7D+C2Za/iJNQ4EfS5YLVbJjxw==
 
 vue-echarts@^6.2.3: