Commit 45a8eb974a088b936fbc6e627b4541da8e682c01

Authored by vben
1 parent 2dd3d854

refactor(dashboard): change to setup syntax

package.json
@@ -74,10 +74,10 @@ @@ -74,10 +74,10 @@
74 "@types/fs-extra": "^9.0.12", 74 "@types/fs-extra": "^9.0.12",
75 "@types/inquirer": "^7.3.3", 75 "@types/inquirer": "^7.3.3",
76 "@types/intro.js": "^3.0.2", 76 "@types/intro.js": "^3.0.2",
77 - "@types/jest": "^27.0.0", 77 + "@types/jest": "^27.0.1",
78 "@types/lodash-es": "^4.17.4", 78 "@types/lodash-es": "^4.17.4",
79 "@types/mockjs": "^1.0.4", 79 "@types/mockjs": "^1.0.4",
80 - "@types/node": "^16.6.0", 80 + "@types/node": "^16.6.1",
81 "@types/nprogress": "^0.2.0", 81 "@types/nprogress": "^0.2.0",
82 "@types/qrcode": "^1.4.1", 82 "@types/qrcode": "^1.4.1",
83 "@types/qs": "^6.9.7", 83 "@types/qs": "^6.9.7",
@@ -134,7 +134,7 @@ @@ -134,7 +134,7 @@
134 "vite-plugin-theme": "^0.8.1", 134 "vite-plugin-theme": "^0.8.1",
135 "vite-plugin-windicss": "^1.2.7", 135 "vite-plugin-windicss": "^1.2.7",
136 "vue-eslint-parser": "^7.10.0", 136 "vue-eslint-parser": "^7.10.0",
137 - "vue-tsc": "^0.2.2" 137 + "vue-tsc": "^0.2.3"
138 }, 138 },
139 "resolutions": { 139 "resolutions": {
140 "//": "Used to install imagemin dependencies, because imagemin may not be installed in China. If it is abroad, you can delete it", 140 "//": "Used to install imagemin dependencies, because imagemin may not be installed in China. If it is abroad, you can delete it",
src/views/dashboard/analysis/components/GrowCard.vue
@@ -26,18 +26,9 @@ @@ -26,18 +26,9 @@
26 </template> 26 </template>
27 </div> 27 </div>
28 </template> 28 </template>
29 -<script lang="ts">  
30 - import { defineComponent } from 'vue';  
31 - 29 +<script lang="ts" setup>
32 import { CountTo } from '/@/components/CountTo/index'; 30 import { CountTo } from '/@/components/CountTo/index';
33 import { Icon } from '/@/components/Icon'; 31 import { Icon } from '/@/components/Icon';
34 import { Tag, Card } from 'ant-design-vue'; 32 import { Tag, Card } from 'ant-design-vue';
35 -  
36 import { growCardList } from '../data'; 33 import { growCardList } from '../data';
37 - export default defineComponent({  
38 - components: { CountTo, Tag, Card, Icon },  
39 - setup() {  
40 - return { growCardList };  
41 - },  
42 - });  
43 </script> 34 </script>
src/views/dashboard/analysis/components/SalesProductPie.vue
@@ -3,67 +3,61 @@ @@ -3,67 +3,61 @@
3 <div ref="chartRef" :style="{ width, height }"></div> 3 <div ref="chartRef" :style="{ width, height }"></div>
4 </Card> 4 </Card>
5 </template> 5 </template>
6 -<script lang="ts">  
7 - import { defineComponent, Ref, ref, watch } from 'vue';  
8 - 6 +<script lang="ts" setup>
  7 + import { Ref, ref, watch } from 'vue';
9 import { Card } from 'ant-design-vue'; 8 import { Card } from 'ant-design-vue';
10 import { useECharts } from '/@/hooks/web/useECharts'; 9 import { useECharts } from '/@/hooks/web/useECharts';
11 10
12 - export default defineComponent({  
13 - components: { Card },  
14 - props: {  
15 - loading: Boolean,  
16 - width: {  
17 - type: String as PropType<string>,  
18 - default: '100%',  
19 - },  
20 - height: {  
21 - type: String as PropType<string>,  
22 - default: '300px',  
23 - }, 11 + const props = defineProps({
  12 + loading: Boolean,
  13 + width: {
  14 + type: String as PropType<string>,
  15 + default: '100%',
24 }, 16 },
25 - setup(props) {  
26 - const chartRef = ref<HTMLDivElement | null>(null);  
27 - const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);  
28 - watch(  
29 - () => props.loading,  
30 - () => {  
31 - if (props.loading) {  
32 - return;  
33 - }  
34 - setOptions({  
35 - tooltip: {  
36 - trigger: 'item',  
37 - }, 17 + height: {
  18 + type: String as PropType<string>,
  19 + default: '300px',
  20 + },
  21 + });
38 22
39 - series: [  
40 - {  
41 - name: '่ฎฟ้—ฎๆฅๆบ',  
42 - type: 'pie',  
43 - radius: '80%',  
44 - center: ['50%', '50%'],  
45 - color: ['#5ab1ef', '#b6a2de', '#67e0e3', '#2ec7c9'],  
46 - data: [  
47 - { value: 500, name: '็”ตๅญไบงๅ“' },  
48 - { value: 310, name: 'ๆœ่ฃ…' },  
49 - { value: 274, name: 'ๅŒ–ๅฆ†ๅ“' },  
50 - { value: 400, name: 'ๅฎถๅฑ…' },  
51 - ].sort(function (a, b) {  
52 - return a.value - b.value;  
53 - }),  
54 - roseType: 'radius',  
55 - animationType: 'scale',  
56 - animationEasing: 'exponentialInOut',  
57 - animationDelay: function () {  
58 - return Math.random() * 400;  
59 - },  
60 - },  
61 - ],  
62 - }); 23 + const chartRef = ref<HTMLDivElement | null>(null);
  24 + const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
  25 + watch(
  26 + () => props.loading,
  27 + () => {
  28 + if (props.loading) {
  29 + return;
  30 + }
  31 + setOptions({
  32 + tooltip: {
  33 + trigger: 'item',
63 }, 34 },
64 - { immediate: true }  
65 - );  
66 - return { chartRef }; 35 +
  36 + series: [
  37 + {
  38 + name: '่ฎฟ้—ฎๆฅๆบ',
  39 + type: 'pie',
  40 + radius: '80%',
  41 + center: ['50%', '50%'],
  42 + color: ['#5ab1ef', '#b6a2de', '#67e0e3', '#2ec7c9'],
  43 + data: [
  44 + { value: 500, name: '็”ตๅญไบงๅ“' },
  45 + { value: 310, name: 'ๆœ่ฃ…' },
  46 + { value: 274, name: 'ๅŒ–ๅฆ†ๅ“' },
  47 + { value: 400, name: 'ๅฎถๅฑ…' },
  48 + ].sort(function (a, b) {
  49 + return a.value - b.value;
  50 + }),
  51 + roseType: 'radius',
  52 + animationType: 'scale',
  53 + animationEasing: 'exponentialInOut',
  54 + animationDelay: function () {
  55 + return Math.random() * 400;
  56 + },
  57 + },
  58 + ],
  59 + });
67 }, 60 },
68 - }); 61 + { immediate: true }
  62 + );
69 </script> 63 </script>
src/views/dashboard/analysis/components/SiteAnalysis.vue
@@ -13,34 +13,26 @@ @@ -13,34 +13,26 @@
13 </p> 13 </p>
14 </Card> 14 </Card>
15 </template> 15 </template>
16 -<script lang="ts">  
17 - import { defineComponent, ref } from 'vue';  
18 - 16 +<script lang="ts" setup>
  17 + import { ref } from 'vue';
19 import { Card } from 'ant-design-vue'; 18 import { Card } from 'ant-design-vue';
20 -  
21 import VisitAnalysis from './VisitAnalysis.vue'; 19 import VisitAnalysis from './VisitAnalysis.vue';
22 import VisitAnalysisBar from './VisitAnalysisBar.vue'; 20 import VisitAnalysisBar from './VisitAnalysisBar.vue';
23 21
24 - export default defineComponent({  
25 - components: { Card, VisitAnalysis, VisitAnalysisBar },  
26 - setup() {  
27 - const activeKey = ref('tab1');  
28 -  
29 - const tabListTitle = [  
30 - {  
31 - key: 'tab1',  
32 - tab: 'ๆต้‡่ถ‹ๅŠฟ',  
33 - },  
34 - {  
35 - key: 'tab2',  
36 - tab: '่ฎฟ้—ฎ้‡',  
37 - },  
38 - ]; 22 + const activeKey = ref('tab1');
39 23
40 - function onTabChange(key) {  
41 - activeKey.value = key;  
42 - }  
43 - return { tabListTitle, activeKey, onTabChange }; 24 + const tabListTitle = [
  25 + {
  26 + key: 'tab1',
  27 + tab: 'ๆต้‡่ถ‹ๅŠฟ',
44 }, 28 },
45 - }); 29 + {
  30 + key: 'tab2',
  31 + tab: '่ฎฟ้—ฎ้‡',
  32 + },
  33 + ];
  34 +
  35 + function onTabChange(key) {
  36 + activeKey.value = key;
  37 + }
46 </script> 38 </script>
src/views/dashboard/analysis/components/VisitAnalysis.vue
1 <template> 1 <template>
2 <div ref="chartRef" :style="{ height, width }"></div> 2 <div ref="chartRef" :style="{ height, width }"></div>
3 </template> 3 </template>
4 -<script lang="ts">  
5 - import { defineComponent, onMounted, ref, Ref } from 'vue';  
6 - 4 +<script lang="ts" setup>
  5 + import { onMounted, ref, Ref } from 'vue';
7 import { useECharts } from '/@/hooks/web/useECharts'; 6 import { useECharts } from '/@/hooks/web/useECharts';
8 -  
9 import { basicProps } from './props'; 7 import { basicProps } from './props';
10 - export default defineComponent({  
11 - props: basicProps,  
12 - setup() {  
13 - const chartRef = ref<HTMLDivElement | null>(null);  
14 - const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);  
15 8
16 - onMounted(() => {  
17 - setOptions({  
18 - tooltip: {  
19 - trigger: 'axis',  
20 - axisPointer: {  
21 - lineStyle: {  
22 - width: 1,  
23 - color: '#019680',  
24 - },  
25 - }, 9 + defineProps({
  10 + ...basicProps,
  11 + });
  12 + const chartRef = ref<HTMLDivElement | null>(null);
  13 + const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
  14 +
  15 + onMounted(() => {
  16 + setOptions({
  17 + tooltip: {
  18 + trigger: 'axis',
  19 + axisPointer: {
  20 + lineStyle: {
  21 + width: 1,
  22 + color: '#019680',
26 }, 23 },
27 - xAxis: {  
28 - type: 'category',  
29 - boundaryGap: false,  
30 - data: [  
31 - '6:00',  
32 - '7:00',  
33 - '8:00',  
34 - '9:00',  
35 - '10:00',  
36 - '11:00',  
37 - '12:00',  
38 - '13:00',  
39 - '14:00',  
40 - '15:00',  
41 - '16:00',  
42 - '17:00',  
43 - '18:00',  
44 - '19:00',  
45 - '20:00',  
46 - '21:00',  
47 - '22:00',  
48 - '23:00',  
49 - ],  
50 - splitLine: {  
51 - show: true,  
52 - lineStyle: {  
53 - width: 1,  
54 - type: 'solid',  
55 - color: 'rgba(226,226,226,0.5)',  
56 - },  
57 - },  
58 - axisTick: {  
59 - show: false,  
60 - }, 24 + },
  25 + },
  26 + xAxis: {
  27 + type: 'category',
  28 + boundaryGap: false,
  29 + data: [
  30 + '6:00',
  31 + '7:00',
  32 + '8:00',
  33 + '9:00',
  34 + '10:00',
  35 + '11:00',
  36 + '12:00',
  37 + '13:00',
  38 + '14:00',
  39 + '15:00',
  40 + '16:00',
  41 + '17:00',
  42 + '18:00',
  43 + '19:00',
  44 + '20:00',
  45 + '21:00',
  46 + '22:00',
  47 + '23:00',
  48 + ],
  49 + splitLine: {
  50 + show: true,
  51 + lineStyle: {
  52 + width: 1,
  53 + type: 'solid',
  54 + color: 'rgba(226,226,226,0.5)',
61 }, 55 },
62 - yAxis: [  
63 - {  
64 - type: 'value',  
65 - max: 80000,  
66 - splitNumber: 4,  
67 - axisTick: {  
68 - show: false,  
69 - },  
70 - splitArea: {  
71 - show: true,  
72 - areaStyle: {  
73 - color: ['rgba(255,255,255,0.2)', 'rgba(226,226,226,0.2)'],  
74 - },  
75 - }, 56 + },
  57 + axisTick: {
  58 + show: false,
  59 + },
  60 + },
  61 + yAxis: [
  62 + {
  63 + type: 'value',
  64 + max: 80000,
  65 + splitNumber: 4,
  66 + axisTick: {
  67 + show: false,
  68 + },
  69 + splitArea: {
  70 + show: true,
  71 + areaStyle: {
  72 + color: ['rgba(255,255,255,0.2)', 'rgba(226,226,226,0.2)'],
76 }, 73 },
  74 + },
  75 + },
  76 + ],
  77 + grid: { left: '1%', right: '1%', top: '2 %', bottom: 0, containLabel: true },
  78 + series: [
  79 + {
  80 + smooth: true,
  81 + data: [
  82 + 111, 222, 4000, 18000, 33333, 55555, 66666, 33333, 14000, 36000, 66666, 44444, 22222,
  83 + 11111, 4000, 2000, 500, 333, 222, 111,
77 ], 84 ],
78 - grid: { left: '1%', right: '1%', top: '2 %', bottom: 0, containLabel: true },  
79 - series: [  
80 - {  
81 - smooth: true,  
82 - data: [  
83 - 111, 222, 4000, 18000, 33333, 55555, 66666, 33333, 14000, 36000, 66666, 44444,  
84 - 22222, 11111, 4000, 2000, 500, 333, 222, 111,  
85 - ],  
86 - type: 'line',  
87 - areaStyle: {},  
88 - itemStyle: {  
89 - color: '#5ab1ef',  
90 - },  
91 - },  
92 - {  
93 - smooth: true,  
94 - data: [  
95 - 33, 66, 88, 333, 3333, 5000, 18000, 3000, 1200, 13000, 22000, 11000, 2221, 1201,  
96 - 390, 198, 60, 30, 22, 11,  
97 - ],  
98 - type: 'line',  
99 - areaStyle: {},  
100 - itemStyle: {  
101 - color: '#019680',  
102 - },  
103 - }, 85 + type: 'line',
  86 + areaStyle: {},
  87 + itemStyle: {
  88 + color: '#5ab1ef',
  89 + },
  90 + },
  91 + {
  92 + smooth: true,
  93 + data: [
  94 + 33, 66, 88, 333, 3333, 5000, 18000, 3000, 1200, 13000, 22000, 11000, 2221, 1201, 390,
  95 + 198, 60, 30, 22, 11,
104 ], 96 ],
105 - });  
106 - });  
107 - return { chartRef };  
108 - }, 97 + type: 'line',
  98 + areaStyle: {},
  99 + itemStyle: {
  100 + color: '#019680',
  101 + },
  102 + },
  103 + ],
  104 + });
109 }); 105 });
110 </script> 106 </script>
src/views/dashboard/analysis/components/VisitAnalysisBar.vue
1 <template> 1 <template>
2 <div ref="chartRef" :style="{ height, width }"></div> 2 <div ref="chartRef" :style="{ height, width }"></div>
3 </template> 3 </template>
4 -<script lang="ts">  
5 - import { defineComponent, onMounted, ref, Ref } from 'vue';  
6 - 4 +<script lang="ts" setup>
  5 + import { onMounted, ref, Ref } from 'vue';
7 import { useECharts } from '/@/hooks/web/useECharts'; 6 import { useECharts } from '/@/hooks/web/useECharts';
8 -  
9 import { basicProps } from './props'; 7 import { basicProps } from './props';
10 - export default defineComponent({  
11 - props: basicProps,  
12 - setup() {  
13 - const chartRef = ref<HTMLDivElement | null>(null);  
14 - const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);  
15 8
16 - onMounted(() => {  
17 - setOptions({  
18 - tooltip: {  
19 - trigger: 'axis',  
20 - axisPointer: {  
21 - lineStyle: {  
22 - width: 1,  
23 - color: '#019680',  
24 - },  
25 - },  
26 - },  
27 - grid: { left: '1%', right: '1%', top: '2 %', bottom: 0, containLabel: true },  
28 - xAxis: {  
29 - type: 'category',  
30 - data: [  
31 - '1ๆœˆ',  
32 - '2ๆœˆ',  
33 - '3ๆœˆ',  
34 - '4ๆœˆ',  
35 - '5ๆœˆ',  
36 - '6ๆœˆ',  
37 - '7ๆœˆ',  
38 - '8ๆœˆ',  
39 - '9ๆœˆ',  
40 - '10ๆœˆ',  
41 - '11ๆœˆ',  
42 - '12ๆœˆ',  
43 - ],  
44 - },  
45 - yAxis: {  
46 - type: 'value',  
47 - max: 8000,  
48 - splitNumber: 4, 9 + defineProps({
  10 + ...basicProps,
  11 + });
  12 +
  13 + const chartRef = ref<HTMLDivElement | null>(null);
  14 + const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
  15 + onMounted(() => {
  16 + setOptions({
  17 + tooltip: {
  18 + trigger: 'axis',
  19 + axisPointer: {
  20 + lineStyle: {
  21 + width: 1,
  22 + color: '#019680',
49 }, 23 },
50 - series: [  
51 - {  
52 - data: [3000, 2000, 3333, 5000, 3200, 4200, 3200, 2100, 3000, 5100, 6000, 3200, 4800],  
53 - type: 'bar',  
54 - barMaxWidth: 80,  
55 - },  
56 - ],  
57 - });  
58 - });  
59 - return { chartRef };  
60 - }, 24 + },
  25 + },
  26 + grid: { left: '1%', right: '1%', top: '2 %', bottom: 0, containLabel: true },
  27 + xAxis: {
  28 + type: 'category',
  29 + data: [
  30 + '1ๆœˆ',
  31 + '2ๆœˆ',
  32 + '3ๆœˆ',
  33 + '4ๆœˆ',
  34 + '5ๆœˆ',
  35 + '6ๆœˆ',
  36 + '7ๆœˆ',
  37 + '8ๆœˆ',
  38 + '9ๆœˆ',
  39 + '10ๆœˆ',
  40 + '11ๆœˆ',
  41 + '12ๆœˆ',
  42 + ],
  43 + },
  44 + yAxis: {
  45 + type: 'value',
  46 + max: 8000,
  47 + splitNumber: 4,
  48 + },
  49 + series: [
  50 + {
  51 + data: [3000, 2000, 3333, 5000, 3200, 4200, 3200, 2100, 3000, 5100, 6000, 3200, 4800],
  52 + type: 'bar',
  53 + barMaxWidth: 80,
  54 + },
  55 + ],
  56 + });
61 }); 57 });
62 </script> 58 </script>
src/views/dashboard/analysis/components/VisitRadar.vue
@@ -3,104 +3,98 @@ @@ -3,104 +3,98 @@
3 <div ref="chartRef" :style="{ width, height }"></div> 3 <div ref="chartRef" :style="{ width, height }"></div>
4 </Card> 4 </Card>
5 </template> 5 </template>
6 -<script lang="ts">  
7 - import { defineComponent, Ref, ref, watch } from 'vue';  
8 - 6 +<script lang="ts" setup>
  7 + import { Ref, ref, watch } from 'vue';
9 import { Card } from 'ant-design-vue'; 8 import { Card } from 'ant-design-vue';
10 import { useECharts } from '/@/hooks/web/useECharts'; 9 import { useECharts } from '/@/hooks/web/useECharts';
11 10
12 - export default defineComponent({  
13 - components: { Card },  
14 - props: {  
15 - loading: Boolean,  
16 - width: {  
17 - type: String as PropType<string>,  
18 - default: '100%',  
19 - },  
20 - height: {  
21 - type: String as PropType<string>,  
22 - default: '300px',  
23 - }, 11 + const props = defineProps({
  12 + loading: Boolean,
  13 + width: {
  14 + type: String as PropType<string>,
  15 + default: '100%',
  16 + },
  17 + height: {
  18 + type: String as PropType<string>,
  19 + default: '300px',
24 }, 20 },
25 - setup(props) {  
26 - const chartRef = ref<HTMLDivElement | null>(null);  
27 - const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);  
28 - watch(  
29 - () => props.loading,  
30 - () => {  
31 - if (props.loading) {  
32 - return;  
33 - }  
34 - setOptions({  
35 - legend: {  
36 - bottom: 0,  
37 - data: ['่ฎฟ้—ฎ', '่ดญไนฐ'], 21 + });
  22 +
  23 + const chartRef = ref<HTMLDivElement | null>(null);
  24 + const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
  25 + watch(
  26 + () => props.loading,
  27 + () => {
  28 + if (props.loading) {
  29 + return;
  30 + }
  31 + setOptions({
  32 + legend: {
  33 + bottom: 0,
  34 + data: ['่ฎฟ้—ฎ', '่ดญไนฐ'],
  35 + },
  36 + tooltip: {},
  37 + radar: {
  38 + radius: '60%',
  39 + splitNumber: 8,
  40 + indicator: [
  41 + {
  42 + text: '็”ต่„‘',
  43 + max: 100,
38 }, 44 },
39 - tooltip: {},  
40 - radar: {  
41 - radius: '60%',  
42 - splitNumber: 8,  
43 - indicator: [  
44 - {  
45 - text: '็”ต่„‘',  
46 - max: 100,  
47 - },  
48 - {  
49 - text: 'ๅ……็”ตๅ™จ',  
50 - max: 100,  
51 - },  
52 - {  
53 - text: '่€ณๆœบ',  
54 - max: 100,  
55 - },  
56 - {  
57 - text: 'ๆ‰‹ๆœบ',  
58 - max: 100,  
59 - },  
60 - {  
61 - text: 'Ipad',  
62 - max: 100,  
63 - },  
64 - {  
65 - text: '่€ณๆœบ',  
66 - max: 100,  
67 - },  
68 - ], 45 + {
  46 + text: 'ๅ……็”ตๅ™จ',
  47 + max: 100,
69 }, 48 },
70 - series: [ 49 + {
  50 + text: '่€ณๆœบ',
  51 + max: 100,
  52 + },
  53 + {
  54 + text: 'ๆ‰‹ๆœบ',
  55 + max: 100,
  56 + },
  57 + {
  58 + text: 'Ipad',
  59 + max: 100,
  60 + },
  61 + {
  62 + text: '่€ณๆœบ',
  63 + max: 100,
  64 + },
  65 + ],
  66 + },
  67 + series: [
  68 + {
  69 + type: 'radar',
  70 + symbolSize: 0,
  71 + areaStyle: {
  72 + shadowBlur: 0,
  73 + shadowColor: 'rgba(0,0,0,.2)',
  74 + shadowOffsetX: 0,
  75 + shadowOffsetY: 10,
  76 + opacity: 1,
  77 + },
  78 + data: [
71 { 79 {
72 - type: 'radar',  
73 - symbolSize: 0,  
74 - areaStyle: {  
75 - shadowBlur: 0,  
76 - shadowColor: 'rgba(0,0,0,.2)',  
77 - shadowOffsetX: 0,  
78 - shadowOffsetY: 10,  
79 - opacity: 1, 80 + value: [90, 50, 86, 40, 50, 20],
  81 + name: '่ฎฟ้—ฎ',
  82 + itemStyle: {
  83 + color: '#b6a2de',
  84 + },
  85 + },
  86 + {
  87 + value: [70, 75, 70, 76, 20, 85],
  88 + name: '่ดญไนฐ',
  89 + itemStyle: {
  90 + color: '#5ab1ef',
80 }, 91 },
81 - data: [  
82 - {  
83 - value: [90, 50, 86, 40, 50, 20],  
84 - name: '่ฎฟ้—ฎ',  
85 - itemStyle: {  
86 - color: '#b6a2de',  
87 - },  
88 - },  
89 - {  
90 - value: [70, 75, 70, 76, 20, 85],  
91 - name: '่ดญไนฐ',  
92 - itemStyle: {  
93 - color: '#5ab1ef',  
94 - },  
95 - },  
96 - ],  
97 }, 92 },
98 ], 93 ],
99 - });  
100 - },  
101 - { immediate: true }  
102 - );  
103 - return { chartRef }; 94 + },
  95 + ],
  96 + });
104 }, 97 },
105 - }); 98 + { immediate: true }
  99 + );
106 </script> 100 </script>
src/views/dashboard/analysis/components/VisitSource.vue
@@ -3,86 +3,78 @@ @@ -3,86 +3,78 @@
3 <div ref="chartRef" :style="{ width, height }"></div> 3 <div ref="chartRef" :style="{ width, height }"></div>
4 </Card> 4 </Card>
5 </template> 5 </template>
6 -<script lang="ts">  
7 - import { defineComponent, Ref, ref, watch } from 'vue';  
8 - 6 +<script lang="ts" setup>
  7 + import { Ref, ref, watch } from 'vue';
9 import { Card } from 'ant-design-vue'; 8 import { Card } from 'ant-design-vue';
10 import { useECharts } from '/@/hooks/web/useECharts'; 9 import { useECharts } from '/@/hooks/web/useECharts';
11 -  
12 - export default defineComponent({  
13 - components: { Card },  
14 - props: {  
15 - loading: Boolean,  
16 - width: {  
17 - type: String as PropType<string>,  
18 - default: '100%',  
19 - },  
20 - height: {  
21 - type: String as PropType<string>,  
22 - default: '300px',  
23 - }, 10 + const props = defineProps({
  11 + loading: Boolean,
  12 + width: {
  13 + type: String as PropType<string>,
  14 + default: '100%',
24 }, 15 },
25 - setup(props) {  
26 - const chartRef = ref<HTMLDivElement | null>(null);  
27 - const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);  
28 - watch(  
29 - () => props.loading,  
30 - () => {  
31 - if (props.loading) {  
32 - return;  
33 - }  
34 - setOptions({  
35 - tooltip: {  
36 - trigger: 'item', 16 + height: {
  17 + type: String as PropType<string>,
  18 + default: '300px',
  19 + },
  20 + });
  21 + const chartRef = ref<HTMLDivElement | null>(null);
  22 + const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
  23 + watch(
  24 + () => props.loading,
  25 + () => {
  26 + if (props.loading) {
  27 + return;
  28 + }
  29 + setOptions({
  30 + tooltip: {
  31 + trigger: 'item',
  32 + },
  33 + legend: {
  34 + bottom: '1%',
  35 + left: 'center',
  36 + },
  37 + series: [
  38 + {
  39 + color: ['#5ab1ef', '#b6a2de', '#67e0e3', '#2ec7c9'],
  40 + name: '่ฎฟ้—ฎๆฅๆบ',
  41 + type: 'pie',
  42 + radius: ['40%', '70%'],
  43 + avoidLabelOverlap: false,
  44 + itemStyle: {
  45 + borderRadius: 10,
  46 + borderColor: '#fff',
  47 + borderWidth: 2,
37 }, 48 },
38 - legend: {  
39 - bottom: '1%',  
40 - left: 'center', 49 + label: {
  50 + show: false,
  51 + position: 'center',
41 }, 52 },
42 - series: [  
43 - {  
44 - color: ['#5ab1ef', '#b6a2de', '#67e0e3', '#2ec7c9'],  
45 - name: '่ฎฟ้—ฎๆฅๆบ',  
46 - type: 'pie',  
47 - radius: ['40%', '70%'],  
48 - avoidLabelOverlap: false,  
49 - itemStyle: {  
50 - borderRadius: 10,  
51 - borderColor: '#fff',  
52 - borderWidth: 2,  
53 - },  
54 - label: {  
55 - show: false,  
56 - position: 'center',  
57 - },  
58 - emphasis: {  
59 - label: {  
60 - show: true,  
61 - fontSize: '12',  
62 - fontWeight: 'bold',  
63 - },  
64 - },  
65 - labelLine: {  
66 - show: false,  
67 - },  
68 - data: [  
69 - { value: 1048, name: 'ๆœ็ดขๅผ•ๆ“Ž' },  
70 - { value: 735, name: '็›ดๆŽฅ่ฎฟ้—ฎ' },  
71 - { value: 580, name: '้‚ฎไปถ่ฅ้”€' },  
72 - { value: 484, name: '่”็›Ÿๅนฟๅ‘Š' },  
73 - ],  
74 - animationType: 'scale',  
75 - animationEasing: 'exponentialInOut',  
76 - animationDelay: function () {  
77 - return Math.random() * 100;  
78 - }, 53 + emphasis: {
  54 + label: {
  55 + show: true,
  56 + fontSize: '12',
  57 + fontWeight: 'bold',
79 }, 58 },
  59 + },
  60 + labelLine: {
  61 + show: false,
  62 + },
  63 + data: [
  64 + { value: 1048, name: 'ๆœ็ดขๅผ•ๆ“Ž' },
  65 + { value: 735, name: '็›ดๆŽฅ่ฎฟ้—ฎ' },
  66 + { value: 580, name: '้‚ฎไปถ่ฅ้”€' },
  67 + { value: 484, name: '่”็›Ÿๅนฟๅ‘Š' },
80 ], 68 ],
81 - });  
82 - },  
83 - { immediate: true }  
84 - );  
85 - return { chartRef }; 69 + animationType: 'scale',
  70 + animationEasing: 'exponentialInOut',
  71 + animationDelay: function () {
  72 + return Math.random() * 100;
  73 + },
  74 + },
  75 + ],
  76 + });
86 }, 77 },
87 - }); 78 + { immediate: true }
  79 + );
88 </script> 80 </script>
src/views/dashboard/analysis/index.vue
@@ -2,38 +2,24 @@ @@ -2,38 +2,24 @@
2 <div class="p-4"> 2 <div class="p-4">
3 <GrowCard :loading="loading" class="enter-y" /> 3 <GrowCard :loading="loading" class="enter-y" />
4 <SiteAnalysis class="!my-4 enter-y" :loading="loading" /> 4 <SiteAnalysis class="!my-4 enter-y" :loading="loading" />
5 -  
6 <div class="md:flex enter-y"> 5 <div class="md:flex enter-y">
7 <VisitRadar class="md:w-1/3 w-full" :loading="loading" /> 6 <VisitRadar class="md:w-1/3 w-full" :loading="loading" />
8 -  
9 <VisitSource class="md:w-1/3 !md:mx-4 !md:my-0 !my-4 w-full" :loading="loading" /> 7 <VisitSource class="md:w-1/3 !md:mx-4 !md:my-0 !my-4 w-full" :loading="loading" />
10 <SalesProductPie class="md:w-1/3 w-full" :loading="loading" /> 8 <SalesProductPie class="md:w-1/3 w-full" :loading="loading" />
11 </div> 9 </div>
12 </div> 10 </div>
13 </template> 11 </template>
14 -<script lang="ts">  
15 - import { defineComponent, ref } from 'vue'; 12 +<script lang="ts" setup>
  13 + import { ref } from 'vue';
16 import GrowCard from './components/GrowCard.vue'; 14 import GrowCard from './components/GrowCard.vue';
17 import SiteAnalysis from './components/SiteAnalysis.vue'; 15 import SiteAnalysis from './components/SiteAnalysis.vue';
18 import VisitSource from './components/VisitSource.vue'; 16 import VisitSource from './components/VisitSource.vue';
19 import VisitRadar from './components/VisitRadar.vue'; 17 import VisitRadar from './components/VisitRadar.vue';
20 import SalesProductPie from './components/SalesProductPie.vue'; 18 import SalesProductPie from './components/SalesProductPie.vue';
21 19
22 - export default defineComponent({  
23 - components: {  
24 - GrowCard,  
25 - SiteAnalysis,  
26 - VisitRadar,  
27 - VisitSource,  
28 - SalesProductPie,  
29 - },  
30 - setup() {  
31 - const loading = ref(true); 20 + const loading = ref(true);
32 21
33 - setTimeout(() => {  
34 - loading.value = false;  
35 - }, 1500);  
36 - return { loading };  
37 - },  
38 - }); 22 + setTimeout(() => {
  23 + loading.value = false;
  24 + }, 1500);
39 </script> 25 </script>
src/views/dashboard/workbench/components/DynamicInfo.vue
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <template #extra> 3 <template #extra>
4 <a-button type="link" size="small">ๆ›ดๅคš</a-button> 4 <a-button type="link" size="small">ๆ›ดๅคš</a-button>
5 </template> 5 </template>
6 - <List item-layout="horizontal" :data-source="items"> 6 + <List item-layout="horizontal" :data-source="dynamicInfoItems">
7 <template #renderItem="{ item }"> 7 <template #renderItem="{ item }">
8 <ListItem> 8 <ListItem>
9 <ListItemMeta> 9 <ListItemMeta>
@@ -21,18 +21,11 @@ @@ -21,18 +21,11 @@
21 </List> 21 </List>
22 </Card> 22 </Card>
23 </template> 23 </template>
24 -<script lang="ts">  
25 - import { defineComponent } from 'vue';  
26 - 24 +<script lang="ts" setup>
27 import { Card, List } from 'ant-design-vue'; 25 import { Card, List } from 'ant-design-vue';
28 import { dynamicInfoItems } from './data'; 26 import { dynamicInfoItems } from './data';
29 - import headerImg from '/@/assets/images/header.jpg';  
30 import { Icon } from '/@/components/Icon'; 27 import { Icon } from '/@/components/Icon';
31 28
32 - export default defineComponent({  
33 - components: { Card, List, ListItem: List.Item, ListItemMeta: List.Item.Meta, Icon },  
34 - setup() {  
35 - return { items: dynamicInfoItems, headerImg };  
36 - },  
37 - }); 29 + const ListItem = List.Item;
  30 + const ListItemMeta = List.Item.Meta;
38 </script> 31 </script>
src/views/dashboard/workbench/components/ProjectCard.vue
@@ -21,7 +21,6 @@ @@ -21,7 +21,6 @@
21 </template> 21 </template>
22 <script lang="ts"> 22 <script lang="ts">
23 import { defineComponent } from 'vue'; 23 import { defineComponent } from 'vue';
24 -  
25 import { Card } from 'ant-design-vue'; 24 import { Card } from 'ant-design-vue';
26 import { Icon } from '/@/components/Icon'; 25 import { Icon } from '/@/components/Icon';
27 import { groupItems } from './data'; 26 import { groupItems } from './data';
src/views/dashboard/workbench/components/QuickNav.vue
1 <template> 1 <template>
2 <Card title="ๅฟซๆทๅฏผ่ˆช" v-bind="$attrs"> 2 <Card title="ๅฟซๆทๅฏผ่ˆช" v-bind="$attrs">
3 - <template v-for="item in items" :key="item"> 3 + <template v-for="item in navItems" :key="item">
4 <CardGrid> 4 <CardGrid>
5 <span class="flex flex-col items-center"> 5 <span class="flex flex-col items-center">
6 <Icon :icon="item.icon" :color="item.color" size="20" /> 6 <Icon :icon="item.icon" :color="item.color" size="20" />
@@ -10,17 +10,10 @@ @@ -10,17 +10,10 @@
10 </template> 10 </template>
11 </Card> 11 </Card>
12 </template> 12 </template>
13 -<script lang="ts">  
14 - import { defineComponent } from 'vue';  
15 - 13 +<script lang="ts" setup>
16 import { Card } from 'ant-design-vue'; 14 import { Card } from 'ant-design-vue';
17 - import { Icon } from '/@/components/Icon';  
18 import { navItems } from './data'; 15 import { navItems } from './data';
  16 + import { Icon } from '/@/components/Icon';
19 17
20 - export default defineComponent({  
21 - components: { Card, CardGrid: Card.Grid, Icon },  
22 - setup() {  
23 - return { items: navItems };  
24 - },  
25 - }); 18 + const CardGrid = Card.Grid;
26 </script> 19 </script>
src/views/dashboard/workbench/components/SaleRadar.vue
@@ -3,104 +3,98 @@ @@ -3,104 +3,98 @@
3 <div ref="chartRef" :style="{ width, height }"></div> 3 <div ref="chartRef" :style="{ width, height }"></div>
4 </Card> 4 </Card>
5 </template> 5 </template>
6 -<script lang="ts">  
7 - import { defineComponent, Ref, ref, watch } from 'vue';  
8 - 6 +<script lang="ts" setup>
  7 + import { Ref, ref, watch } from 'vue';
9 import { Card } from 'ant-design-vue'; 8 import { Card } from 'ant-design-vue';
10 import { useECharts } from '/@/hooks/web/useECharts'; 9 import { useECharts } from '/@/hooks/web/useECharts';
11 10
12 - export default defineComponent({  
13 - components: { Card },  
14 - props: {  
15 - loading: Boolean,  
16 - width: {  
17 - type: String as PropType<string>,  
18 - default: '100%',  
19 - },  
20 - height: {  
21 - type: String as PropType<string>,  
22 - default: '400px',  
23 - }, 11 + const props = defineProps({
  12 + loading: Boolean,
  13 + width: {
  14 + type: String as PropType<string>,
  15 + default: '100%',
  16 + },
  17 + height: {
  18 + type: String as PropType<string>,
  19 + default: '400px',
24 }, 20 },
25 - setup(props) {  
26 - const chartRef = ref<HTMLDivElement | null>(null);  
27 - const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);  
28 - watch(  
29 - () => props.loading,  
30 - () => {  
31 - if (props.loading) {  
32 - return;  
33 - }  
34 - setOptions({  
35 - legend: {  
36 - bottom: 0,  
37 - data: ['Visits', 'Sales'], 21 + });
  22 +
  23 + const chartRef = ref<HTMLDivElement | null>(null);
  24 + const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
  25 + watch(
  26 + () => props.loading,
  27 + () => {
  28 + if (props.loading) {
  29 + return;
  30 + }
  31 + setOptions({
  32 + legend: {
  33 + bottom: 0,
  34 + data: ['Visits', 'Sales'],
  35 + },
  36 + tooltip: {},
  37 + radar: {
  38 + radius: '60%',
  39 + splitNumber: 8,
  40 + indicator: [
  41 + {
  42 + text: '2017',
  43 + max: 100,
38 }, 44 },
39 - tooltip: {},  
40 - radar: {  
41 - radius: '60%',  
42 - splitNumber: 8,  
43 - indicator: [  
44 - {  
45 - text: '2017',  
46 - max: 100,  
47 - },  
48 - {  
49 - text: '2017',  
50 - max: 100,  
51 - },  
52 - {  
53 - text: '2018',  
54 - max: 100,  
55 - },  
56 - {  
57 - text: '2019',  
58 - max: 100,  
59 - },  
60 - {  
61 - text: '2020',  
62 - max: 100,  
63 - },  
64 - {  
65 - text: '2021',  
66 - max: 100,  
67 - },  
68 - ], 45 + {
  46 + text: '2017',
  47 + max: 100,
69 }, 48 },
70 - series: [ 49 + {
  50 + text: '2018',
  51 + max: 100,
  52 + },
  53 + {
  54 + text: '2019',
  55 + max: 100,
  56 + },
  57 + {
  58 + text: '2020',
  59 + max: 100,
  60 + },
  61 + {
  62 + text: '2021',
  63 + max: 100,
  64 + },
  65 + ],
  66 + },
  67 + series: [
  68 + {
  69 + type: 'radar',
  70 + symbolSize: 0,
  71 + areaStyle: {
  72 + shadowBlur: 0,
  73 + shadowColor: 'rgba(0,0,0,.2)',
  74 + shadowOffsetX: 0,
  75 + shadowOffsetY: 10,
  76 + opacity: 1,
  77 + },
  78 + data: [
71 { 79 {
72 - type: 'radar',  
73 - symbolSize: 0,  
74 - areaStyle: {  
75 - shadowBlur: 0,  
76 - shadowColor: 'rgba(0,0,0,.2)',  
77 - shadowOffsetX: 0,  
78 - shadowOffsetY: 10,  
79 - opacity: 1, 80 + value: [90, 50, 86, 40, 50, 20],
  81 + name: 'Visits',
  82 + itemStyle: {
  83 + color: '#b6a2de',
  84 + },
  85 + },
  86 + {
  87 + value: [70, 75, 70, 76, 20, 85],
  88 + name: 'Sales',
  89 + itemStyle: {
  90 + color: '#67e0e3',
80 }, 91 },
81 - data: [  
82 - {  
83 - value: [90, 50, 86, 40, 50, 20],  
84 - name: 'Visits',  
85 - itemStyle: {  
86 - color: '#b6a2de',  
87 - },  
88 - },  
89 - {  
90 - value: [70, 75, 70, 76, 20, 85],  
91 - name: 'Sales',  
92 - itemStyle: {  
93 - color: '#67e0e3',  
94 - },  
95 - },  
96 - ],  
97 }, 92 },
98 ], 93 ],
99 - });  
100 - },  
101 - { immediate: true }  
102 - );  
103 - return { chartRef }; 94 + },
  95 + ],
  96 + });
104 }, 97 },
105 - }); 98 + { immediate: true }
  99 + );
106 </script> 100 </script>
src/views/dashboard/workbench/components/WorkbenchHeader.vue
@@ -22,19 +22,12 @@ @@ -22,19 +22,12 @@
22 </div> 22 </div>
23 </div> 23 </div>
24 </template> 24 </template>
25 -<script lang="ts">  
26 - import { computed, defineComponent } from 'vue';  
27 - 25 +<script lang="ts" setup>
  26 + import { computed } from 'vue';
28 import { Avatar } from 'ant-design-vue'; 27 import { Avatar } from 'ant-design-vue';
29 import { useUserStore } from '/@/store/modules/user'; 28 import { useUserStore } from '/@/store/modules/user';
30 -  
31 import headerImg from '/@/assets/images/header.jpg'; 29 import headerImg from '/@/assets/images/header.jpg';
32 - export default defineComponent({  
33 - components: { Avatar },  
34 - setup() {  
35 - const userStore = useUserStore();  
36 - const userinfo = computed(() => userStore.getUserInfo);  
37 - return { userinfo, headerImg };  
38 - },  
39 - }); 30 +
  31 + const userStore = useUserStore();
  32 + const userinfo = computed(() => userStore.getUserInfo);
40 </script> 33 </script>
src/views/dashboard/workbench/index.vue
@@ -18,9 +18,8 @@ @@ -18,9 +18,8 @@
18 </div> 18 </div>
19 </PageWrapper> 19 </PageWrapper>
20 </template> 20 </template>
21 -<script lang="ts">  
22 - import { defineComponent, ref } from 'vue';  
23 - 21 +<script lang="ts" setup>
  22 + import { ref } from 'vue';
24 import { Card } from 'ant-design-vue'; 23 import { Card } from 'ant-design-vue';
25 import { PageWrapper } from '/@/components/Page'; 24 import { PageWrapper } from '/@/components/Page';
26 import WorkbenchHeader from './components/WorkbenchHeader.vue'; 25 import WorkbenchHeader from './components/WorkbenchHeader.vue';
@@ -29,26 +28,9 @@ @@ -29,26 +28,9 @@
29 import DynamicInfo from './components/DynamicInfo.vue'; 28 import DynamicInfo from './components/DynamicInfo.vue';
30 import SaleRadar from './components/SaleRadar.vue'; 29 import SaleRadar from './components/SaleRadar.vue';
31 30
32 - export default defineComponent({  
33 - components: {  
34 - PageWrapper,  
35 - WorkbenchHeader,  
36 - ProjectCard,  
37 - QuickNav,  
38 - DynamicInfo,  
39 - SaleRadar,  
40 - Card,  
41 - },  
42 - setup() {  
43 - const loading = ref(true);  
44 -  
45 - setTimeout(() => {  
46 - loading.value = false;  
47 - }, 1500); 31 + const loading = ref(true);
48 32
49 - return {  
50 - loading,  
51 - };  
52 - },  
53 - }); 33 + setTimeout(() => {
  34 + loading.value = false;
  35 + }, 1500);
54 </script> 36 </script>
yarn.lock
@@ -1576,17 +1576,6 @@ @@ -1576,17 +1576,6 @@
1576 source-map "^0.6.1" 1576 source-map "^0.6.1"
1577 write-file-atomic "^3.0.0" 1577 write-file-atomic "^3.0.0"
1578 1578
1579 -"@jest/types@^26.6.2":  
1580 - version "26.6.2"  
1581 - resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e"  
1582 - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==  
1583 - dependencies:  
1584 - "@types/istanbul-lib-coverage" "^2.0.0"  
1585 - "@types/istanbul-reports" "^3.0.0"  
1586 - "@types/node" "*"  
1587 - "@types/yargs" "^15.0.0"  
1588 - chalk "^4.0.0"  
1589 -  
1590 "@jest/types@^27.0.2": 1579 "@jest/types@^27.0.2":
1591 version "27.0.2" 1580 version "27.0.2"
1592 resolved "https://registry.npmjs.org/@jest/types/-/types-27.0.2.tgz#e153d6c46bda0f2589f0702b071f9898c7bbd37e" 1581 resolved "https://registry.npmjs.org/@jest/types/-/types-27.0.2.tgz#e153d6c46bda0f2589f0702b071f9898c7bbd37e"
@@ -1978,13 +1967,13 @@ @@ -1978,13 +1967,13 @@
1978 dependencies: 1967 dependencies:
1979 "@types/istanbul-lib-report" "*" 1968 "@types/istanbul-lib-report" "*"
1980 1969
1981 -"@types/jest@^27.0.0":  
1982 - version "27.0.0"  
1983 - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.0.tgz#f1c28f741371739c7cd0e8edb5ed8e67acfa6c35"  
1984 - integrity sha512-IlpQZVpxufe+3qPaAqEoSPHVSxnJh1cf0BqqWHJeKiAUbwnHdmNzjP3ZCWSZSTbmAGXQPNk9QmM3Bif0pR54rg== 1970 +"@types/jest@^27.0.1":
  1971 + version "27.0.1"
  1972 + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.1.tgz#fafcc997da0135865311bb1215ba16dba6bdf4ca"
  1973 + integrity sha512-HTLpVXHrY69556ozYkcq47TtQJXpcWAWfkoqz+ZGz2JnmZhzlRjprCIyFnetSy8gpDWwTTGBcRVv1J1I1vBrHw==
1985 dependencies: 1974 dependencies:
1986 - jest-diff "^26.0.0"  
1987 - pretty-format "^26.0.0" 1975 + jest-diff "^27.0.0"
  1976 + pretty-format "^27.0.0"
1988 1977
1989 "@types/json-schema@^7.0.7": 1978 "@types/json-schema@^7.0.7":
1990 version "7.0.7" 1979 version "7.0.7"
@@ -2040,10 +2029,10 @@ @@ -2040,10 +2029,10 @@
2040 resolved "https://registry.npmjs.org/@types/node/-/node-14.17.3.tgz#6d327abaa4be34a74e421ed6409a0ae2f47f4c3d" 2029 resolved "https://registry.npmjs.org/@types/node/-/node-14.17.3.tgz#6d327abaa4be34a74e421ed6409a0ae2f47f4c3d"
2041 integrity sha512-e6ZowgGJmTuXa3GyaPbTGxX17tnThl2aSSizrFthQ7m9uLGZBXiGhgE55cjRZTF5kjZvYn9EOPOMljdjwbflxw== 2030 integrity sha512-e6ZowgGJmTuXa3GyaPbTGxX17tnThl2aSSizrFthQ7m9uLGZBXiGhgE55cjRZTF5kjZvYn9EOPOMljdjwbflxw==
2042 2031
2043 -"@types/node@^16.6.0":  
2044 - version "16.6.0"  
2045 - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.0.tgz#0d5685f85066f94e97f19e8a67fe003c5fadacc4"  
2046 - integrity sha512-OyiZPohMMjZEYqcVo/UJ04GyAxXOJEZO/FpzyXxcH4r/ArrVoXHf4MbUrkLp0Tz7/p1mMKpo5zJ6ZHl8XBNthQ== 2032 +"@types/node@^16.6.1":
  2033 + version "16.6.1"
  2034 + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.1.tgz#aee62c7b966f55fc66c7b6dfa1d58db2a616da61"
  2035 + integrity sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==
2047 2036
2048 "@types/normalize-package-data@^2.4.0": 2037 "@types/normalize-package-data@^2.4.0":
2049 version "2.4.0" 2038 version "2.4.0"
@@ -2138,13 +2127,6 @@ @@ -2138,13 +2127,6 @@
2138 resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" 2127 resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9"
2139 integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== 2128 integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==
2140 2129
2141 -"@types/yargs@^15.0.0":  
2142 - version "15.0.13"  
2143 - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc"  
2144 - integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==  
2145 - dependencies:  
2146 - "@types/yargs-parser" "*"  
2147 -  
2148 "@types/yargs@^16.0.0": 2130 "@types/yargs@^16.0.0":
2149 version "16.0.3" 2131 version "16.0.3"
2150 resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz#4b6d35bb8e680510a7dc2308518a80ee1ef27e01" 2132 resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz#4b6d35bb8e680510a7dc2308518a80ee1ef27e01"
@@ -2295,45 +2277,58 @@ @@ -2295,45 +2277,58 @@
2295 resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.4.0.tgz#962ae01b7fd16ad4007898c64ed639136e12215b" 2277 resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.4.0.tgz#962ae01b7fd16ad4007898c64ed639136e12215b"
2296 integrity sha512-RkqfJHz9wdLKBp5Yi+kQL8BAljdrvPoccQm2PTZc/UcL4EjD11xsv2PPCduYx2oV1a/bpSKA3sD5sxOHFhz+LA== 2278 integrity sha512-RkqfJHz9wdLKBp5Yi+kQL8BAljdrvPoccQm2PTZc/UcL4EjD11xsv2PPCduYx2oV1a/bpSKA3sD5sxOHFhz+LA==
2297 2279
2298 -"@volar/code-gen@^0.26.6":  
2299 - version "0.26.6"  
2300 - resolved "https://registry.yarnpkg.com/@volar/code-gen/-/code-gen-0.26.6.tgz#9dd048c6feb878c9a5e1909bc44dd7626d34538a"  
2301 - integrity sha512-7xSND3hcHmPGvTL5MHekQZ8ORVj4cCbBstUm6JdsNwjFNIaaQtUPxpSfAUKprZMgIE3ya2jDzH2g4iq0e3VuNg== 2280 +"@volar/code-gen@^0.27.1":
  2281 + version "0.27.1"
  2282 + resolved "https://registry.yarnpkg.com/@volar/code-gen/-/code-gen-0.27.1.tgz#5fbf3808b000a1e3966b4916689c55958efaf70d"
  2283 + integrity sha512-tN7Rxa7mAfd8GQceKxHjjDjfRo3S4OBIEtv4GpmO75IrodjMVkZEZR/v6EY3yn52ffTh3SuAvjiCSRRcHhvDqg==
2302 dependencies: 2284 dependencies:
2303 - "@volar/shared" "^0.26.6"  
2304 - "@volar/source-map" "^0.26.6" 2285 + "@volar/shared" "^0.27.1"
  2286 + "@volar/source-map" "^0.27.1"
2305 2287
2306 -"@volar/html2pug@^0.26.6":  
2307 - version "0.26.6"  
2308 - resolved "https://registry.yarnpkg.com/@volar/html2pug/-/html2pug-0.26.6.tgz#82ab7a9ac0723f97d075c3bd34ffae7e3c49b208"  
2309 - integrity sha512-tJoXNr//ENegJK7/2QrvHqt2CHYowwdMIhqf0sXHZbyFHQq5OBv8S1TTQdejBV+w790l1NqG5Wi4kq7kFl66gA== 2288 +"@volar/html2pug@^0.27.1":
  2289 + version "0.27.1"
  2290 + resolved "https://registry.yarnpkg.com/@volar/html2pug/-/html2pug-0.27.1.tgz#9c996c189859e002a2e016b25ea04022fa321890"
  2291 + integrity sha512-4192qerpj+fuzmaduT8l9qoY7620oh4LNEK2GN8V9l7+LNAuPRr9kN0BNrow2j1WO9lklhtNqDlCSOmPCmcoPA==
2310 dependencies: 2292 dependencies:
2311 domelementtype "^2.2.0" 2293 domelementtype "^2.2.0"
2312 domhandler "^4.2.0" 2294 domhandler "^4.2.0"
2313 htmlparser2 "^6.1.0" 2295 htmlparser2 "^6.1.0"
2314 pug "^3.0.2" 2296 pug "^3.0.2"
2315 2297
2316 -"@volar/shared@^0.26.6":  
2317 - version "0.26.6"  
2318 - resolved "https://registry.yarnpkg.com/@volar/shared/-/shared-0.26.6.tgz#ea40995048b443747ace80b9247e05bc4eeb35e7"  
2319 - integrity sha512-b3dvEnhaYHnJb8qibL4NzWvu6YX3Qi7soN25EXtHnHaCtASw3/3uGcMqH4aBLGPE3YilPWVT1TI8PFKKevzSuA== 2298 +"@volar/shared@^0.27.1":
  2299 + version "0.27.1"
  2300 + resolved "https://registry.yarnpkg.com/@volar/shared/-/shared-0.27.1.tgz#004933283d1c479e46c33534f6b52b594728eaac"
  2301 + integrity sha512-PvoD6cp3ICaZXsLcuEB14FkrQuJnQVuhtAiss6BLGFfq4vOhJPMZihfoSZtQYkspkZ1/r8IgidMZqTtuAxYBzA==
2320 dependencies: 2302 dependencies:
2321 upath "^2.0.1" 2303 upath "^2.0.1"
2322 vscode-jsonrpc "^8.0.0-next.1" 2304 vscode-jsonrpc "^8.0.0-next.1"
  2305 + vscode-uri "^3.0.2"
2323 2306
2324 -"@volar/source-map@^0.26.6":  
2325 - version "0.26.6"  
2326 - resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-0.26.6.tgz#38cada2cab5f94977f7b739714b5b21a73363e96"  
2327 - integrity sha512-ArmmaOM08EYWw40VjjSGrQSg89cCktbs//yQxxNowWZYe7gsTQvS27jO2534vKWdmnulNhsLeWN1BphnNrGDeg== 2307 +"@volar/source-map@^0.27.1":
  2308 + version "0.27.1"
  2309 + resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-0.27.1.tgz#1e0fd73f4bfc46f9e70e7d3f8a1b1c03b816ce6d"
  2310 + integrity sha512-Y4cJjAIfMhoHg0jsO8uUZ4YvJAxDYSwWRD9corm+2W/4Km5AKSF7hhVwFSGy2WvODTRLZY2jjlL3eu88m1eg/g==
2328 dependencies: 2311 dependencies:
2329 - "@volar/shared" "^0.26.6" 2312 + "@volar/shared" "^0.27.1"
2330 2313
2331 -"@volar/transforms@^0.26.6":  
2332 - version "0.26.6"  
2333 - resolved "https://registry.yarnpkg.com/@volar/transforms/-/transforms-0.26.6.tgz#680f7faf8a9a3bf92509447e011f43245d4916a6"  
2334 - integrity sha512-gkz9HhzFf7szcQiOcb4sQ8970oNH6AR1veyl1fzwwF3oC2rWF7CEXIdkDgf+jRmYit4SU5Pnrij6tX4BXoKCug== 2314 +"@volar/transforms@^0.27.1":
  2315 + version "0.27.1"
  2316 + resolved "https://registry.yarnpkg.com/@volar/transforms/-/transforms-0.27.1.tgz#117a7cd5d12ca1bf0c83715201f93e630b4211bd"
  2317 + integrity sha512-jEWYXFQL+KUVS85qrYYsaQYtwdLZLs3koNFEMEQMnDMad3jEBDqd3IKgDGePI6jQ5Vq3jFneNwX1GGCFJeKvJA==
2335 dependencies: 2318 dependencies:
2336 - "@volar/shared" "^0.26.6" 2319 + "@volar/shared" "^0.27.1"
  2320 +
  2321 +"@vscode/emmet-helper@^2.7.0":
  2322 + version "2.7.0"
  2323 + resolved "https://registry.yarnpkg.com/@vscode/emmet-helper/-/emmet-helper-2.7.0.tgz#3db485f6a650196ff8bbd38ba1b9e468ec8d22f8"
  2324 + integrity sha512-LL7MoKNLUQASacQROO7hBdx5IAxsEnA0UdJFd9xXyf3sBQgz8NE3QEfo3IezE7uin8W2fkG2+EXMst3oqK6+KQ==
  2325 + dependencies:
  2326 + emmet "^2.3.0"
  2327 + jsonc-parser "^2.3.0"
  2328 + vscode-languageserver-textdocument "^1.0.1"
  2329 + vscode-languageserver-types "^3.15.1"
  2330 + vscode-nls "^5.0.0"
  2331 + vscode-uri "^2.1.2"
2337 2332
2338 "@vue/babel-helper-vue-transform-on@^1.0.2": 2333 "@vue/babel-helper-vue-transform-on@^1.0.2":
2339 version "1.0.2" 2334 version "1.0.2"
@@ -2355,17 +2350,6 @@ @@ -2355,17 +2350,6 @@
2355 html-tags "^3.1.0" 2350 html-tags "^3.1.0"
2356 svg-tags "^1.0.0" 2351 svg-tags "^1.0.0"
2357 2352
2358 -"@vue/compiler-core@3.2.0-beta.3":  
2359 - version "3.2.0-beta.3"  
2360 - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.0-beta.3.tgz#3a10628c6bb4d4b5df28bcdb6522a6c7702fc152"  
2361 - integrity sha512-Uyu7xT3z3D8+1ZWDuFtoMoRIPj665Vp7BlULi4TuthXTteKtDy8rygqCV2TAuKJS6APY96NZxRyWd3wlO2qDOw==  
2362 - dependencies:  
2363 - "@babel/parser" "^7.12.0"  
2364 - "@babel/types" "^7.12.0"  
2365 - "@vue/shared" "3.2.0-beta.3"  
2366 - estree-walker "^2.0.1"  
2367 - source-map "^0.6.1"  
2368 -  
2369 "@vue/compiler-core@3.2.2": 2353 "@vue/compiler-core@3.2.2":
2370 version "3.2.2" 2354 version "3.2.2"
2371 resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.2.tgz#8d3e29f129579ed9b14f48af735fd8d95f248504" 2355 resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.2.tgz#8d3e29f129579ed9b14f48af735fd8d95f248504"
@@ -2377,15 +2361,7 @@ @@ -2377,15 +2361,7 @@
2377 estree-walker "^2.0.1" 2361 estree-walker "^2.0.1"
2378 source-map "^0.6.1" 2362 source-map "^0.6.1"
2379 2363
2380 -"@vue/compiler-dom@3.2.0-beta.3", "@vue/compiler-dom@^3.2.0-beta.3":  
2381 - version "3.2.0-beta.3"  
2382 - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.0-beta.3.tgz#4fc64ad7ce708e2821800200d58f089aa4481b41"  
2383 - integrity sha512-scpBC68ZLGSU61W8xUJE97kZFZsrBZwaZtUy59dXFGrlIQtRd2HzyjCrXgLFgvYnlQLXPqaYpo5dJ1z1yNo2GQ==  
2384 - dependencies:  
2385 - "@vue/compiler-core" "3.2.0-beta.3"  
2386 - "@vue/shared" "3.2.0-beta.3"  
2387 -  
2388 -"@vue/compiler-dom@3.2.2": 2364 +"@vue/compiler-dom@3.2.2", "@vue/compiler-dom@^3.2.2":
2389 version "3.2.2" 2365 version "3.2.2"
2390 resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.2.tgz#26e198498746c53047c3744d26fc95e670692ab7" 2366 resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.2.tgz#26e198498746c53047c3744d26fc95e670692ab7"
2391 integrity sha512-ggcc+NV/ENIE0Uc3TxVE/sKrhYVpLepMAAmEiQ047332mbKOvUkowz4TTFZ+YkgOIuBOPP0XpCxmCMg7p874mA== 2367 integrity sha512-ggcc+NV/ENIE0Uc3TxVE/sKrhYVpLepMAAmEiQ047332mbKOvUkowz4TTFZ+YkgOIuBOPP0XpCxmCMg7p874mA==
@@ -2393,7 +2369,7 @@ @@ -2393,7 +2369,7 @@
2393 "@vue/compiler-core" "3.2.2" 2369 "@vue/compiler-core" "3.2.2"
2394 "@vue/shared" "3.2.2" 2370 "@vue/shared" "3.2.2"
2395 2371
2396 -"@vue/compiler-sfc@3.2.2": 2372 +"@vue/compiler-sfc@3.2.2", "@vue/compiler-sfc@^3.2.2":
2397 version "3.2.2" 2373 version "3.2.2"
2398 resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.2.tgz#5b7b13b07689be8e4880d856f72d1be500785be9" 2374 resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.2.tgz#5b7b13b07689be8e4880d856f72d1be500785be9"
2399 integrity sha512-hrtqpQ5L6IPn5v7yVRo7uvLcQxv0z1+KBjZBWMBOcrXz4t+PKUxU/SWd6Tl9T8FDmYlunzKUh6lcx+2CLo6f5A== 2375 integrity sha512-hrtqpQ5L6IPn5v7yVRo7uvLcQxv0z1+KBjZBWMBOcrXz4t+PKUxU/SWd6Tl9T8FDmYlunzKUh6lcx+2CLo6f5A==
@@ -2416,37 +2392,6 @@ @@ -2416,37 +2392,6 @@
2416 postcss-selector-parser "^6.0.4" 2392 postcss-selector-parser "^6.0.4"
2417 source-map "^0.6.1" 2393 source-map "^0.6.1"
2418 2394
2419 -"@vue/compiler-sfc@^3.2.0-beta.3":  
2420 - version "3.2.0-beta.3"  
2421 - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.0-beta.3.tgz#8199e8166a6721e7554d0d8446f8ff3752a45492"  
2422 - integrity sha512-M50steBwRJiAYvCvVe1kFiab9Gj+NBZTpO6rRaXSWEvptv9blIdpdFiPFzGUhKB65/xGbdj3fyUN9fzXkIjrwA==  
2423 - dependencies:  
2424 - "@babel/parser" "^7.13.9"  
2425 - "@babel/types" "^7.13.0"  
2426 - "@types/estree" "^0.0.48"  
2427 - "@vue/compiler-core" "3.2.0-beta.3"  
2428 - "@vue/compiler-dom" "3.2.0-beta.3"  
2429 - "@vue/compiler-ssr" "3.2.0-beta.3"  
2430 - "@vue/shared" "3.2.0-beta.3"  
2431 - consolidate "^0.16.0"  
2432 - estree-walker "^2.0.1"  
2433 - hash-sum "^2.0.0"  
2434 - lru-cache "^5.1.1"  
2435 - magic-string "^0.25.7"  
2436 - merge-source-map "^1.1.0"  
2437 - postcss "^8.1.10"  
2438 - postcss-modules "^4.0.0"  
2439 - postcss-selector-parser "^6.0.4"  
2440 - source-map "^0.6.1"  
2441 -  
2442 -"@vue/compiler-ssr@3.2.0-beta.3":  
2443 - version "3.2.0-beta.3"  
2444 - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.0-beta.3.tgz#88106c28f915a17131652eace2032f8d70b05734"  
2445 - integrity sha512-FVE9RfuNG6YyIo8vTO2yy4ibAkK+Ks+6qcLS2bzuoQbMHNXxWwI041ll8crHR9jlRjPF0u/Ng3Blf1PbT1+yRA==  
2446 - dependencies:  
2447 - "@vue/compiler-dom" "3.2.0-beta.3"  
2448 - "@vue/shared" "3.2.0-beta.3"  
2449 -  
2450 "@vue/compiler-ssr@3.2.2": 2395 "@vue/compiler-ssr@3.2.2":
2451 version "3.2.2" 2396 version "3.2.2"
2452 resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.2.tgz#633bb8e01f00a969c35ca12db32be7fe4c7185a9" 2397 resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.2.tgz#633bb8e01f00a969c35ca12db32be7fe4c7185a9"
@@ -2465,20 +2410,13 @@ @@ -2465,20 +2410,13 @@
2465 resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.0-beta.15.tgz#ad7cb384e062f165bcf9c83732125bffbc2ad83d" 2410 resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.0-beta.15.tgz#ad7cb384e062f165bcf9c83732125bffbc2ad83d"
2466 integrity sha512-quBx4Jjpexo6KDiNUGFr/zF/2A4srKM9S9v2uHgMXSU//hjgq1eGzqkIFql8T9gfX5ZaVOUzYBP3jIdIR3PKIA== 2411 integrity sha512-quBx4Jjpexo6KDiNUGFr/zF/2A4srKM9S9v2uHgMXSU//hjgq1eGzqkIFql8T9gfX5ZaVOUzYBP3jIdIR3PKIA==
2467 2412
2468 -"@vue/reactivity@3.2.2": 2413 +"@vue/reactivity@3.2.2", "@vue/reactivity@^3.2.2":
2469 version "3.2.2" 2414 version "3.2.2"
2470 resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.2.tgz#d37011a68395e038a3cf5256af52d48c591b06b6" 2415 resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.2.tgz#d37011a68395e038a3cf5256af52d48c591b06b6"
2471 integrity sha512-IHjhtmrhK6dzacj/EnLQDWOaA3HuzzVk6w84qgV8EpS4uWGIJXiRalMRg6XvGW2ykJvIl3pLsF0aBFlTMRiLOA== 2416 integrity sha512-IHjhtmrhK6dzacj/EnLQDWOaA3HuzzVk6w84qgV8EpS4uWGIJXiRalMRg6XvGW2ykJvIl3pLsF0aBFlTMRiLOA==
2472 dependencies: 2417 dependencies:
2473 "@vue/shared" "3.2.2" 2418 "@vue/shared" "3.2.2"
2474 2419
2475 -"@vue/reactivity@^3.2.0-beta.3":  
2476 - version "3.2.0-beta.3"  
2477 - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.0-beta.3.tgz#0255cbedbb03f269ee03edbe8af71d9f77a095e7"  
2478 - integrity sha512-Q+7cOgc5gHtY6I+0A6VXNOvOtuKQPHBLIGfGek3LwVDG5MpCY5Wt50u4mMEgiJafjKSgiGYctycWEBzmcI/Jtg==  
2479 - dependencies:  
2480 - "@vue/shared" "3.2.0-beta.3"  
2481 -  
2482 "@vue/runtime-core@3.2.2": 2420 "@vue/runtime-core@3.2.2":
2483 version "3.2.2" 2421 version "3.2.2"
2484 resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.2.tgz#b9a7250783de19dd8dd6febf008084b0f9144586" 2422 resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.2.tgz#b9a7250783de19dd8dd6febf008084b0f9144586"
@@ -2496,12 +2434,7 @@ @@ -2496,12 +2434,7 @@
2496 "@vue/shared" "3.2.2" 2434 "@vue/shared" "3.2.2"
2497 csstype "^2.6.8" 2435 csstype "^2.6.8"
2498 2436
2499 -"@vue/shared@3.2.0-beta.3", "@vue/shared@^3.2.0-beta.3":  
2500 - version "3.2.0-beta.3"  
2501 - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.0-beta.3.tgz#043c5a4d3bc9676508557e9199c625995cf14929"  
2502 - integrity sha512-IzJBLNwh2CDTbVqQt979f5rczw9Uib97RkaGckmUGuC9bAG1sw/EXskrxc87p8xxaiI70LdVHnOhriprfKjmMw==  
2503 -  
2504 -"@vue/shared@3.2.2": 2437 +"@vue/shared@3.2.2", "@vue/shared@^3.2.2":
2505 version "3.2.2" 2438 version "3.2.2"
2506 resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.2.tgz#6104185ebd57af5a14ac51c1f491b2205fc24054" 2439 resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.2.tgz#6104185ebd57af5a14ac51c1f491b2205fc24054"
2507 integrity sha512-dvYb318tk9uOzHtSaT3WII/HscQSIRzoCZ5GyxEb3JlkEXASpAUAQwKnvSe2CudnF8XHFRTB7VITWSnWNLZUtA== 2440 integrity sha512-dvYb318tk9uOzHtSaT3WII/HscQSIRzoCZ5GyxEb3JlkEXASpAUAQwKnvSe2CudnF8XHFRTB7VITWSnWNLZUtA==
@@ -4380,11 +4313,6 @@ diff-match-patch@^1.0.5: @@ -4380,11 +4313,6 @@ diff-match-patch@^1.0.5:
4380 resolved "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" 4313 resolved "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37"
4381 integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== 4314 integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==
4382 4315
4383 -diff-sequences@^26.6.2:  
4384 - version "26.6.2"  
4385 - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1"  
4386 - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==  
4387 -  
4388 diff-sequences@^27.0.6: 4316 diff-sequences@^27.0.6:
4389 version "27.0.6" 4317 version "27.0.6"
4390 resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" 4318 resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723"
@@ -6869,19 +6797,9 @@ jest-config@^27.0.6: @@ -6869,19 +6797,9 @@ jest-config@^27.0.6:
6869 micromatch "^4.0.4" 6797 micromatch "^4.0.4"
6870 pretty-format "^27.0.6" 6798 pretty-format "^27.0.6"
6871 6799
6872 -jest-diff@^26.0.0:  
6873 - version "26.6.2"  
6874 - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394"  
6875 - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==  
6876 - dependencies:  
6877 - chalk "^4.0.0"  
6878 - diff-sequences "^26.6.2"  
6879 - jest-get-type "^26.3.0"  
6880 - pretty-format "^26.6.2"  
6881 -  
6882 -jest-diff@^27.0.6: 6800 +jest-diff@^27.0.0, jest-diff@^27.0.6:
6883 version "27.0.6" 6801 version "27.0.6"
6884 - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz#4a7a19ee6f04ad70e0e3388f35829394a44c7b5e" 6802 + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.0.6.tgz#4a7a19ee6f04ad70e0e3388f35829394a44c7b5e"
6885 integrity sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg== 6803 integrity sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==
6886 dependencies: 6804 dependencies:
6887 chalk "^4.0.0" 6805 chalk "^4.0.0"
@@ -6932,11 +6850,6 @@ jest-environment-node@^27.0.6: @@ -6932,11 +6850,6 @@ jest-environment-node@^27.0.6:
6932 jest-mock "^27.0.6" 6850 jest-mock "^27.0.6"
6933 jest-util "^27.0.6" 6851 jest-util "^27.0.6"
6934 6852
6935 -jest-get-type@^26.3.0:  
6936 - version "26.3.0"  
6937 - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0"  
6938 - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==  
6939 -  
6940 jest-get-type@^27.0.6: 6853 jest-get-type@^27.0.6:
6941 version "27.0.6" 6854 version "27.0.6"
6942 resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" 6855 resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe"
@@ -9089,17 +9002,7 @@ pretty-bytes@^5.3.0, pretty-bytes@^5.6.0: @@ -9089,17 +9002,7 @@ pretty-bytes@^5.3.0, pretty-bytes@^5.6.0:
9089 resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" 9002 resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
9090 integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== 9003 integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
9091 9004
9092 -pretty-format@^26.0.0, pretty-format@^26.6.2:  
9093 - version "26.6.2"  
9094 - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"  
9095 - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==  
9096 - dependencies:  
9097 - "@jest/types" "^26.6.2"  
9098 - ansi-regex "^5.0.0"  
9099 - ansi-styles "^4.0.0"  
9100 - react-is "^17.0.1"  
9101 -  
9102 -pretty-format@^27.0.6: 9005 +pretty-format@^27.0.0, pretty-format@^27.0.6:
9103 version "27.0.6" 9006 version "27.0.6"
9104 resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz#ab770c47b2c6f893a21aefc57b75da63ef49a11f" 9007 resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz#ab770c47b2c6f893a21aefc57b75da63ef49a11f"
9105 integrity sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ== 9008 integrity sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==
@@ -11373,18 +11276,6 @@ vscode-css-languageservice@^5.1.4: @@ -11373,18 +11276,6 @@ vscode-css-languageservice@^5.1.4:
11373 vscode-nls "^5.0.0" 11276 vscode-nls "^5.0.0"
11374 vscode-uri "^3.0.2" 11277 vscode-uri "^3.0.2"
11375 11278
11376 -vscode-emmet-helper@^2.6.4:  
11377 - version "2.6.4"  
11378 - resolved "https://registry.npmjs.org/vscode-emmet-helper/-/vscode-emmet-helper-2.6.4.tgz#bea47f17649bba26b412f3d1fac18aaee43eba25"  
11379 - integrity sha512-fP0nunW1RUWEKGf4gqiYLOVNFFGXSRHjCl0pikxtwCFlty8WwimM+RBJ5o0aIiwerrYD30HqeaVyvDW027Sseg==  
11380 - dependencies:  
11381 - emmet "^2.3.0"  
11382 - jsonc-parser "^2.3.0"  
11383 - vscode-languageserver-textdocument "^1.0.1"  
11384 - vscode-languageserver-types "^3.15.1"  
11385 - vscode-nls "^5.0.0"  
11386 - vscode-uri "^2.1.2"  
11387 -  
11388 vscode-html-languageservice@^4.0.7: 11279 vscode-html-languageservice@^4.0.7:
11389 version "4.0.7" 11280 version "4.0.7"
11390 resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-4.0.7.tgz#94f2ed22c821965f828222d13b5aa541b358d992" 11281 resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-4.0.7.tgz#94f2ed22c821965f828222d13b5aa541b358d992"
@@ -11446,25 +11337,25 @@ vscode-nls@^5.0.0: @@ -11446,25 +11337,25 @@ vscode-nls@^5.0.0:
11446 resolved "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" 11337 resolved "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840"
11447 integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== 11338 integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==
11448 11339
11449 -vscode-pug-languageservice@^0.26.6:  
11450 - version "0.26.6"  
11451 - resolved "https://registry.yarnpkg.com/vscode-pug-languageservice/-/vscode-pug-languageservice-0.26.6.tgz#0cd99da7f60420b98dc1a9449c73132c7da12661"  
11452 - integrity sha512-o9wsSOewFTrG/eGA/6aQ0JAcyEE1JLIfONTECORkHeqNo9iS3PuqWnNvg7Z5iHrReAXnJZTEjdogX14muRMBRA== 11340 +vscode-pug-languageservice@^0.27.1:
  11341 + version "0.27.1"
  11342 + resolved "https://registry.yarnpkg.com/vscode-pug-languageservice/-/vscode-pug-languageservice-0.27.1.tgz#5570b935e0cf13bca80fba7aa32ac98ed9604dc2"
  11343 + integrity sha512-zUrcrcizqxxP7UIplzkdpdhU6bS458Vf9MS+fFaaR1WI/rVJOsXh5ETMrVeHTD0FHqAIstikuNoKEpuaaHkEXA==
11453 dependencies: 11344 dependencies:
11454 - "@volar/code-gen" "^0.26.6"  
11455 - "@volar/shared" "^0.26.6"  
11456 - "@volar/source-map" "^0.26.6"  
11457 - "@volar/transforms" "^0.26.6" 11345 + "@volar/code-gen" "^0.27.1"
  11346 + "@volar/shared" "^0.27.1"
  11347 + "@volar/source-map" "^0.27.1"
  11348 + "@volar/transforms" "^0.27.1"
11458 pug-lexer "^5.0.1" 11349 pug-lexer "^5.0.1"
11459 pug-parser "^6.0.0" 11350 pug-parser "^6.0.0"
11460 vscode-languageserver "^8.0.0-next.1" 11351 vscode-languageserver "^8.0.0-next.1"
11461 11352
11462 -vscode-typescript-languageservice@^0.26.6:  
11463 - version "0.26.6"  
11464 - resolved "https://registry.yarnpkg.com/vscode-typescript-languageservice/-/vscode-typescript-languageservice-0.26.6.tgz#1581c06cfe9bbdfdaf6fae4f8e484cbee37ee0c9"  
11465 - integrity sha512-b7JEg72/dyJvv9ND/Q5B5Hjy70v+MBVAlTfreKAG0E5u5JHLEm+Kh4AXrlJU/Vb1jpK1/rhDGAYO3RWYikJh+A== 11353 +vscode-typescript-languageservice@^0.27.1:
  11354 + version "0.27.1"
  11355 + resolved "https://registry.yarnpkg.com/vscode-typescript-languageservice/-/vscode-typescript-languageservice-0.27.1.tgz#373db91da714bba0983b85daa46f12362afbaa6e"
  11356 + integrity sha512-lIXLyYpcO4+9mzFrgTkRgrWYDLlV+kv+3/vmipEvF4QbiKHWcA0l5AOSJcPR/IUeZz6mu9eoawpOjPsbp9HKqw==
11466 dependencies: 11357 dependencies:
11467 - "@volar/shared" "^0.26.6" 11358 + "@volar/shared" "^0.27.1"
11468 upath "^2.0.1" 11359 upath "^2.0.1"
11469 vscode-languageserver "^8.0.0-next.1" 11360 vscode-languageserver "^8.0.0-next.1"
11470 vscode-languageserver-textdocument "^1.0.1" 11361 vscode-languageserver-textdocument "^1.0.1"
@@ -11479,31 +11370,30 @@ vscode-uri@^3.0.2: @@ -11479,31 +11370,30 @@ vscode-uri@^3.0.2:
11479 resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.2.tgz#ecfd1d066cb8ef4c3a208decdbab9a8c23d055d0" 11370 resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.2.tgz#ecfd1d066cb8ef4c3a208decdbab9a8c23d055d0"
11480 integrity sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA== 11371 integrity sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA==
11481 11372
11482 -vscode-vue-languageservice@^0.26.6:  
11483 - version "0.26.6"  
11484 - resolved "https://registry.yarnpkg.com/vscode-vue-languageservice/-/vscode-vue-languageservice-0.26.6.tgz#b533612bf33385370579b81db9f9e0cac155c3e4"  
11485 - integrity sha512-NLOwk3X4cQSDICUlNtRHUkO9kFpQQROjmoOdWbg55j3aw2Ouew3t6spnKMQfc3LCVCjGMr3+qMMCzpdBfzYxCA==  
11486 - dependencies:  
11487 - "@volar/code-gen" "^0.26.6"  
11488 - "@volar/html2pug" "^0.26.6"  
11489 - "@volar/shared" "^0.26.6"  
11490 - "@volar/source-map" "^0.26.6"  
11491 - "@volar/transforms" "^0.26.6"  
11492 - "@vue/compiler-dom" "^3.2.0-beta.3"  
11493 - "@vue/compiler-sfc" "^3.2.0-beta.3"  
11494 - "@vue/reactivity" "^3.2.0-beta.3"  
11495 - "@vue/shared" "^3.2.0-beta.3"  
11496 - jsonc-parser "^3.0.0" 11373 +vscode-vue-languageservice@^0.27.0:
  11374 + version "0.27.1"
  11375 + resolved "https://registry.yarnpkg.com/vscode-vue-languageservice/-/vscode-vue-languageservice-0.27.1.tgz#1be63445437a12cd75bfcc956b5624eee3dfc51c"
  11376 + integrity sha512-32I6OCEvgxQpRW/Txod2+5xNKpae1BS+EFXjXpxK0TMFT3NYrJYXo0xVaddlV9+IZcVmH5KdoBia7J3CO4H74Q==
  11377 + dependencies:
  11378 + "@volar/code-gen" "^0.27.1"
  11379 + "@volar/html2pug" "^0.27.1"
  11380 + "@volar/shared" "^0.27.1"
  11381 + "@volar/source-map" "^0.27.1"
  11382 + "@volar/transforms" "^0.27.1"
  11383 + "@vscode/emmet-helper" "^2.7.0"
  11384 + "@vue/compiler-dom" "^3.2.2"
  11385 + "@vue/compiler-sfc" "^3.2.2"
  11386 + "@vue/reactivity" "^3.2.2"
  11387 + "@vue/shared" "^3.2.2"
11497 request-light "^0.5.4" 11388 request-light "^0.5.4"
11498 upath "^2.0.1" 11389 upath "^2.0.1"
11499 vscode-css-languageservice "^5.1.4" 11390 vscode-css-languageservice "^5.1.4"
11500 - vscode-emmet-helper "^2.6.4"  
11501 vscode-html-languageservice "^4.0.7" 11391 vscode-html-languageservice "^4.0.7"
11502 vscode-json-languageservice "^4.1.5" 11392 vscode-json-languageservice "^4.1.5"
11503 vscode-languageserver "^8.0.0-next.1" 11393 vscode-languageserver "^8.0.0-next.1"
11504 vscode-languageserver-textdocument "^1.0.1" 11394 vscode-languageserver-textdocument "^1.0.1"
11505 - vscode-pug-languageservice "^0.26.6"  
11506 - vscode-typescript-languageservice "^0.26.6" 11395 + vscode-pug-languageservice "^0.27.1"
  11396 + vscode-typescript-languageservice "^0.27.1"
11507 11397
11508 vue-demi@*: 11398 vue-demi@*:
11509 version "0.9.1" 11399 version "0.9.1"
@@ -11550,12 +11440,12 @@ vue-router@^4.0.11: @@ -11550,12 +11440,12 @@ vue-router@^4.0.11:
11550 dependencies: 11440 dependencies:
11551 "@vue/devtools-api" "^6.0.0-beta.14" 11441 "@vue/devtools-api" "^6.0.0-beta.14"
11552 11442
11553 -vue-tsc@^0.2.2:  
11554 - version "0.2.2"  
11555 - resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-0.2.2.tgz#e7fd5e5c789beb31840ad26082cfc8bb6356e733"  
11556 - integrity sha512-91mzfGneWCuF83WTGRI9HA67IBUh5lrhujnFaHKWHQlpQFcBadkmz0BVoGAuJLQILetC5/CrY3is6FGiWFuY4w== 11443 +vue-tsc@^0.2.3:
  11444 + version "0.2.3"
  11445 + resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-0.2.3.tgz#12bf48e3c9b1e553d31aad0c641722d5d15841d8"
  11446 + integrity sha512-0ahxAnQolmv6EOnv5zxeMi4vCpM4PkhjU70i/EI44OzMWq4OErjLZhEh8EXOLtMx6FBRuuqS5fiBXcuqLpoL7Q==
11557 dependencies: 11447 dependencies:
11558 - vscode-vue-languageservice "^0.26.6" 11448 + vscode-vue-languageservice "^0.27.0"
11559 11449
11560 vue-types@^3.0.0: 11450 vue-types@^3.0.0:
11561 version "3.0.2" 11451 version "3.0.2"