Commit 45a8eb974a088b936fbc6e627b4541da8e682c01

Authored by vben
1 parent 2dd3d854

refactor(dashboard): change to setup syntax

package.json
... ... @@ -74,10 +74,10 @@
74 74 "@types/fs-extra": "^9.0.12",
75 75 "@types/inquirer": "^7.3.3",
76 76 "@types/intro.js": "^3.0.2",
77   - "@types/jest": "^27.0.0",
  77 + "@types/jest": "^27.0.1",
78 78 "@types/lodash-es": "^4.17.4",
79 79 "@types/mockjs": "^1.0.4",
80   - "@types/node": "^16.6.0",
  80 + "@types/node": "^16.6.1",
81 81 "@types/nprogress": "^0.2.0",
82 82 "@types/qrcode": "^1.4.1",
83 83 "@types/qs": "^6.9.7",
... ... @@ -134,7 +134,7 @@
134 134 "vite-plugin-theme": "^0.8.1",
135 135 "vite-plugin-windicss": "^1.2.7",
136 136 "vue-eslint-parser": "^7.10.0",
137   - "vue-tsc": "^0.2.2"
  137 + "vue-tsc": "^0.2.3"
138 138 },
139 139 "resolutions": {
140 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 26 </template>
27 27 </div>
28 28 </template>
29   -<script lang="ts">
30   - import { defineComponent } from 'vue';
31   -
  29 +<script lang="ts" setup>
32 30 import { CountTo } from '/@/components/CountTo/index';
33 31 import { Icon } from '/@/components/Icon';
34 32 import { Tag, Card } from 'ant-design-vue';
35   -
36 33 import { growCardList } from '../data';
37   - export default defineComponent({
38   - components: { CountTo, Tag, Card, Icon },
39   - setup() {
40   - return { growCardList };
41   - },
42   - });
43 34 </script>
... ...
src/views/dashboard/analysis/components/SalesProductPie.vue
... ... @@ -3,67 +3,61 @@
3 3 <div ref="chartRef" :style="{ width, height }"></div>
4 4 </Card>
5 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 8 import { Card } from 'ant-design-vue';
10 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 63 </script>
... ...
src/views/dashboard/analysis/components/SiteAnalysis.vue
... ... @@ -13,34 +13,26 @@
13 13 </p>
14 14 </Card>
15 15 </template>
16   -<script lang="ts">
17   - import { defineComponent, ref } from 'vue';
18   -
  16 +<script lang="ts" setup>
  17 + import { ref } from 'vue';
19 18 import { Card } from 'ant-design-vue';
20   -
21 19 import VisitAnalysis from './VisitAnalysis.vue';
22 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 38 </script>
... ...
src/views/dashboard/analysis/components/VisitAnalysis.vue
1 1 <template>
2 2 <div ref="chartRef" :style="{ height, width }"></div>
3 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 6 import { useECharts } from '/@/hooks/web/useECharts';
8   -
9 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 106 </script>
... ...
src/views/dashboard/analysis/components/VisitAnalysisBar.vue
1 1 <template>
2 2 <div ref="chartRef" :style="{ height, width }"></div>
3 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 6 import { useECharts } from '/@/hooks/web/useECharts';
8   -
9 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 58 </script>
... ...
src/views/dashboard/analysis/components/VisitRadar.vue
... ... @@ -3,104 +3,98 @@
3 3 <div ref="chartRef" :style="{ width, height }"></div>
4 4 </Card>
5 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 8 import { Card } from 'ant-design-vue';
10 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 100 </script>
... ...
src/views/dashboard/analysis/components/VisitSource.vue
... ... @@ -3,86 +3,78 @@
3 3 <div ref="chartRef" :style="{ width, height }"></div>
4 4 </Card>
5 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 8 import { Card } from 'ant-design-vue';
10 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 80 </script>
... ...
src/views/dashboard/analysis/index.vue
... ... @@ -2,38 +2,24 @@
2 2 <div class="p-4">
3 3 <GrowCard :loading="loading" class="enter-y" />
4 4 <SiteAnalysis class="!my-4 enter-y" :loading="loading" />
5   -
6 5 <div class="md:flex enter-y">
7 6 <VisitRadar class="md:w-1/3 w-full" :loading="loading" />
8   -
9 7 <VisitSource class="md:w-1/3 !md:mx-4 !md:my-0 !my-4 w-full" :loading="loading" />
10 8 <SalesProductPie class="md:w-1/3 w-full" :loading="loading" />
11 9 </div>
12 10 </div>
13 11 </template>
14   -<script lang="ts">
15   - import { defineComponent, ref } from 'vue';
  12 +<script lang="ts" setup>
  13 + import { ref } from 'vue';
16 14 import GrowCard from './components/GrowCard.vue';
17 15 import SiteAnalysis from './components/SiteAnalysis.vue';
18 16 import VisitSource from './components/VisitSource.vue';
19 17 import VisitRadar from './components/VisitRadar.vue';
20 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 25 </script>
... ...
src/views/dashboard/workbench/components/DynamicInfo.vue
... ... @@ -3,7 +3,7 @@
3 3 <template #extra>
4 4 <a-button type="link" size="small">ๆ›ดๅคš</a-button>
5 5 </template>
6   - <List item-layout="horizontal" :data-source="items">
  6 + <List item-layout="horizontal" :data-source="dynamicInfoItems">
7 7 <template #renderItem="{ item }">
8 8 <ListItem>
9 9 <ListItemMeta>
... ... @@ -21,18 +21,11 @@
21 21 </List>
22 22 </Card>
23 23 </template>
24   -<script lang="ts">
25   - import { defineComponent } from 'vue';
26   -
  24 +<script lang="ts" setup>
27 25 import { Card, List } from 'ant-design-vue';
28 26 import { dynamicInfoItems } from './data';
29   - import headerImg from '/@/assets/images/header.jpg';
30 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 31 </script>
... ...
src/views/dashboard/workbench/components/ProjectCard.vue
... ... @@ -21,7 +21,6 @@
21 21 </template>
22 22 <script lang="ts">
23 23 import { defineComponent } from 'vue';
24   -
25 24 import { Card } from 'ant-design-vue';
26 25 import { Icon } from '/@/components/Icon';
27 26 import { groupItems } from './data';
... ...
src/views/dashboard/workbench/components/QuickNav.vue
1 1 <template>
2 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 4 <CardGrid>
5 5 <span class="flex flex-col items-center">
6 6 <Icon :icon="item.icon" :color="item.color" size="20" />
... ... @@ -10,17 +10,10 @@
10 10 </template>
11 11 </Card>
12 12 </template>
13   -<script lang="ts">
14   - import { defineComponent } from 'vue';
15   -
  13 +<script lang="ts" setup>
16 14 import { Card } from 'ant-design-vue';
17   - import { Icon } from '/@/components/Icon';
18 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 19 </script>
... ...
src/views/dashboard/workbench/components/SaleRadar.vue
... ... @@ -3,104 +3,98 @@
3 3 <div ref="chartRef" :style="{ width, height }"></div>
4 4 </Card>
5 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 8 import { Card } from 'ant-design-vue';
10 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 100 </script>
... ...
src/views/dashboard/workbench/components/WorkbenchHeader.vue
... ... @@ -22,19 +22,12 @@
22 22 </div>
23 23 </div>
24 24 </template>
25   -<script lang="ts">
26   - import { computed, defineComponent } from 'vue';
27   -
  25 +<script lang="ts" setup>
  26 + import { computed } from 'vue';
28 27 import { Avatar } from 'ant-design-vue';
29 28 import { useUserStore } from '/@/store/modules/user';
30   -
31 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 33 </script>
... ...
src/views/dashboard/workbench/index.vue
... ... @@ -18,9 +18,8 @@
18 18 </div>
19 19 </PageWrapper>
20 20 </template>
21   -<script lang="ts">
22   - import { defineComponent, ref } from 'vue';
23   -
  21 +<script lang="ts" setup>
  22 + import { ref } from 'vue';
24 23 import { Card } from 'ant-design-vue';
25 24 import { PageWrapper } from '/@/components/Page';
26 25 import WorkbenchHeader from './components/WorkbenchHeader.vue';
... ... @@ -29,26 +28,9 @@
29 28 import DynamicInfo from './components/DynamicInfo.vue';
30 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 36 </script>
... ...
yarn.lock
... ... @@ -1576,17 +1576,6 @@
1576 1576 source-map "^0.6.1"
1577 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 1579 "@jest/types@^27.0.2":
1591 1580 version "27.0.2"
1592 1581 resolved "https://registry.npmjs.org/@jest/types/-/types-27.0.2.tgz#e153d6c46bda0f2589f0702b071f9898c7bbd37e"
... ... @@ -1978,13 +1967,13 @@
1978 1967 dependencies:
1979 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 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 1978 "@types/json-schema@^7.0.7":
1990 1979 version "7.0.7"
... ... @@ -2040,10 +2029,10 @@
2040 2029 resolved "https://registry.npmjs.org/@types/node/-/node-14.17.3.tgz#6d327abaa4be34a74e421ed6409a0ae2f47f4c3d"
2041 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 2037 "@types/normalize-package-data@^2.4.0":
2049 2038 version "2.4.0"
... ... @@ -2138,13 +2127,6 @@
2138 2127 resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9"
2139 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 2130 "@types/yargs@^16.0.0":
2149 2131 version "16.0.3"
2150 2132 resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz#4b6d35bb8e680510a7dc2308518a80ee1ef27e01"
... ... @@ -2295,45 +2277,58 @@
2295 2277 resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.4.0.tgz#962ae01b7fd16ad4007898c64ed639136e12215b"
2296 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 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 2292 dependencies:
2311 2293 domelementtype "^2.2.0"
2312 2294 domhandler "^4.2.0"
2313 2295 htmlparser2 "^6.1.0"
2314 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 2302 dependencies:
2321 2303 upath "^2.0.1"
2322 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 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 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 2333 "@vue/babel-helper-vue-transform-on@^1.0.2":
2339 2334 version "1.0.2"
... ... @@ -2355,17 +2350,6 @@
2355 2350 html-tags "^3.1.0"
2356 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 2353 "@vue/compiler-core@3.2.2":
2370 2354 version "3.2.2"
2371 2355 resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.2.tgz#8d3e29f129579ed9b14f48af735fd8d95f248504"
... ... @@ -2377,15 +2361,7 @@
2377 2361 estree-walker "^2.0.1"
2378 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 2365 version "3.2.2"
2390 2366 resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.2.tgz#26e198498746c53047c3744d26fc95e670692ab7"
2391 2367 integrity sha512-ggcc+NV/ENIE0Uc3TxVE/sKrhYVpLepMAAmEiQ047332mbKOvUkowz4TTFZ+YkgOIuBOPP0XpCxmCMg7p874mA==
... ... @@ -2393,7 +2369,7 @@
2393 2369 "@vue/compiler-core" "3.2.2"
2394 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 2373 version "3.2.2"
2398 2374 resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.2.tgz#5b7b13b07689be8e4880d856f72d1be500785be9"
2399 2375 integrity sha512-hrtqpQ5L6IPn5v7yVRo7uvLcQxv0z1+KBjZBWMBOcrXz4t+PKUxU/SWd6Tl9T8FDmYlunzKUh6lcx+2CLo6f5A==
... ... @@ -2416,37 +2392,6 @@
2416 2392 postcss-selector-parser "^6.0.4"
2417 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 2395 "@vue/compiler-ssr@3.2.2":
2451 2396 version "3.2.2"
2452 2397 resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.2.tgz#633bb8e01f00a969c35ca12db32be7fe4c7185a9"
... ... @@ -2465,20 +2410,13 @@
2465 2410 resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.0-beta.15.tgz#ad7cb384e062f165bcf9c83732125bffbc2ad83d"
2466 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 2414 version "3.2.2"
2470 2415 resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.2.tgz#d37011a68395e038a3cf5256af52d48c591b06b6"
2471 2416 integrity sha512-IHjhtmrhK6dzacj/EnLQDWOaA3HuzzVk6w84qgV8EpS4uWGIJXiRalMRg6XvGW2ykJvIl3pLsF0aBFlTMRiLOA==
2472 2417 dependencies:
2473 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 2420 "@vue/runtime-core@3.2.2":
2483 2421 version "3.2.2"
2484 2422 resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.2.tgz#b9a7250783de19dd8dd6febf008084b0f9144586"
... ... @@ -2496,12 +2434,7 @@
2496 2434 "@vue/shared" "3.2.2"
2497 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 2438 version "3.2.2"
2506 2439 resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.2.tgz#6104185ebd57af5a14ac51c1f491b2205fc24054"
2507 2440 integrity sha512-dvYb318tk9uOzHtSaT3WII/HscQSIRzoCZ5GyxEb3JlkEXASpAUAQwKnvSe2CudnF8XHFRTB7VITWSnWNLZUtA==
... ... @@ -4380,11 +4313,6 @@ diff-match-patch@^1.0.5:
4380 4313 resolved "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37"
4381 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 4316 diff-sequences@^27.0.6:
4389 4317 version "27.0.6"
4390 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 6797 micromatch "^4.0.4"
6870 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 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 6803 integrity sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==
6886 6804 dependencies:
6887 6805 chalk "^4.0.0"
... ... @@ -6932,11 +6850,6 @@ jest-environment-node@^27.0.6:
6932 6850 jest-mock "^27.0.6"
6933 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 6853 jest-get-type@^27.0.6:
6941 6854 version "27.0.6"
6942 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 9002 resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
9090 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 9006 version "27.0.6"
9104 9007 resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz#ab770c47b2c6f893a21aefc57b75da63ef49a11f"
9105 9008 integrity sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==
... ... @@ -11373,18 +11276,6 @@ vscode-css-languageservice@^5.1.4:
11373 11276 vscode-nls "^5.0.0"
11374 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 11279 vscode-html-languageservice@^4.0.7:
11389 11280 version "4.0.7"
11390 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 11337 resolved "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840"
11447 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 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 11349 pug-lexer "^5.0.1"
11459 11350 pug-parser "^6.0.0"
11460 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 11357 dependencies:
11467   - "@volar/shared" "^0.26.6"
  11358 + "@volar/shared" "^0.27.1"
11468 11359 upath "^2.0.1"
11469 11360 vscode-languageserver "^8.0.0-next.1"
11470 11361 vscode-languageserver-textdocument "^1.0.1"
... ... @@ -11479,31 +11370,30 @@ vscode-uri@^3.0.2:
11479 11370 resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.2.tgz#ecfd1d066cb8ef4c3a208decdbab9a8c23d055d0"
11480 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 11388 request-light "^0.5.4"
11498 11389 upath "^2.0.1"
11499 11390 vscode-css-languageservice "^5.1.4"
11500   - vscode-emmet-helper "^2.6.4"
11501 11391 vscode-html-languageservice "^4.0.7"
11502 11392 vscode-json-languageservice "^4.1.5"
11503 11393 vscode-languageserver "^8.0.0-next.1"
11504 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 11398 vue-demi@*:
11509 11399 version "0.9.1"
... ... @@ -11550,12 +11440,12 @@ vue-router@^4.0.11:
11550 11440 dependencies:
11551 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 11447 dependencies:
11558   - vscode-vue-languageservice "^0.26.6"
  11448 + vscode-vue-languageservice "^0.27.0"
11559 11449  
11560 11450 vue-types@^3.0.0:
11561 11451 version "3.0.2"
... ...