launcher/ui/src/components/LogComponent.vue

74 lines
1.4 KiB
Vue
Raw Normal View History

2024-09-23 16:12:34 +08:00
<script setup>
2024-09-23 19:42:56 +08:00
import { darkTheme } from 'naive-ui'
import hljs from 'highlight.js/lib/core'
2024-09-23 19:42:56 +08:00
2024-09-23 16:12:34 +08:00
const log = inject('log')
const log_ele = inject('log_ele')
const chinesePattern = {
className: 'chinese',
begin: /[\u4e00-\u9fa5]+/
}
hljs.registerLanguage('naive-log', () => ({
contains: [
{
className: 'info',
begin: /^\[信息\]/,
end: /$/,
returnBegin: true,
returnEnd: true,
contains: [chinesePattern]
},
{
className: 'error',
begin: /^\[错误\]/,
end: /$/,
returnBegin: true,
returnEnd: true,
contains: [chinesePattern]
},
{
className: 'execute_command',
begin: /^\[执行命令\]/,
end: /$/,
returnBegin: true,
returnEnd: true,
contains: [chinesePattern]
},
{
className: 'command_out',
begin: /^\[命令输出\]/,
end: /$/,
returnBegin: true,
returnEnd: true,
contains: [chinesePattern]
}
]
}))
2024-09-23 16:12:34 +08:00
</script>
<template>
<n-config-provider :theme="darkTheme" class="provider" :hljs="hljs">
2024-09-23 20:40:46 +08:00
<n-card class="full" content-style="height: 100%">
2025-01-28 16:13:53 +08:00
<n-log :lines="log" class="full selectable-log" ref="log_ele" language="naive-log" />
2024-09-23 19:42:56 +08:00
</n-card>
</n-config-provider>
2024-09-23 16:12:34 +08:00
</template>
2024-09-23 20:30:54 +08:00
<style scoped>
.provider {
flex-grow: 1;
overflow: hidden;
}
.full {
height: 100% !important;
box-sizing: border-box;
}
.selectable-log {
user-select: text;
}
2024-09-23 20:30:54 +08:00
</style>