11<script setup lang="ts">
2- import { ServerLineType } from ' @/types/server' ;
32import { AnsiUp } from ' ansi_up' ;
43import { encode } from ' html-entities' ;
54import { computed , nextTick , onMounted , ref , watch } from ' vue' ;
@@ -10,13 +9,17 @@ const props = defineProps({
109 require: true ,
1110 default : () => [],
1211 },
12+ type: {
13+ type: String ,
14+ default: ' ' ,
15+ },
1316});
1417
1518const scrollToBottom = () =>
1619 (consoleRef .value .scrollTop = consoleRef .value .scrollHeight ?? 0 );
1720
18- const typed = computed (() => props .datas as { type: number ; data: string }[]);
1921const consoleRef = ref ();
22+ const typed = computed (() => props .datas as { type: string ; data: string }[]);
2023const length = computed (() => props .datas .length );
2124const ansiUp = new AnsiUp ();
2225ansiUp .use_classes = true ;
@@ -33,29 +36,39 @@ onMounted(scrollToBottom);
3336 class =" whitespace-pre-wrap break-all hover:bg-[#8881] px-3 transition-colors"
3437 >
3538 <span
36- v-if =" line.type === ServerLineType.Output "
39+ v-if =" line.type === 'output' && type === 'server' "
3740 v-html =" ansiUp.ansi_to_html(line.data)"
3841 >
3942 </span >
43+
4044 <span
41- v-else-if =" line.type === ServerLineType.Input "
45+ v-else-if =" line.type === 'input' && type === 'server' "
4246 class =" opacity-70"
4347 title =" 输入"
4448 >
4549 >> {{ line.data }}
4650 </span >
47- <span v-else-if =" line.type === ServerLineType.Info" >
51+
52+ <span v-else-if =" line.type === 'info'" >
4853 <span class =" text-sky-500"
4954 >[<span class =" hover:underline hover:font-bold" >Serein</span >]</span
5055 >
5156 {{ line.data }}
5257 </span >
53- <span v-else-if =" line.type === ServerLineType.Error" >
58+
59+ <span v-else-if =" line.type === 'sent' || line.type === 'received'" >
60+ <span v-if =" line.type === 'sent'" class =" text-sky-500" >[↑]</span >
61+ <span v-else class =" text-emerald-500" >[↓]</span >
62+ {{ line.data }}
63+ </span >
64+
65+ <span v-else-if =" line.type === 'error'" >
5466 <span class =" text-red-500"
5567 >[<span class =" hover:underline font-bold" >Error</span >]</span
5668 >
5769 {{ line.data }}
5870 </span >
71+
5972 <span v-else v-html =" encode(line.data)" ></span >
6073 </div >
6174 </div >
0 commit comments