feat(servers): 未设路径区批量管理与主表齐平

独立勾选与全选筛选结果,共用 ServerBatchActionBar;列与批量操作对齐主列表。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Nexus Agent
2026-06-08 12:55:02 +08:00
parent 8c86b50d09
commit 1e83bb34bd
62 changed files with 1351 additions and 50 deletions
@@ -0,0 +1,26 @@
# 审计 — 未设路径服务器批量管理对齐主表
**Changelog**: `docs/changelog/2026-06-08-servers-unset-path-batch-parity.md`
## 变更文件
`ServerBatchActionBar.vue` · `ServerUnsetPathPanel.vue` · `ServersPage.vue` · `web/app/assets/ServersPage-*`
## Step 3
| 项 | 结论 |
|----|------|
| 未设路径区独立勾选 | PASS(与主表 `selectedItems` 隔离) |
| 批量操作栏对齐 | PASS(分类/健康/路径/Agent/删除) |
| 全选筛选结果 | PASS`target_path_unset=true` + 当前筛选) |
| 列与行操作对齐 | PASS |
## Closure
Gate 7/7 · build PASS · 生产部署
## DoD
- [x] 勾选 + 批量栏 + 全选
- [x] 双 scope 复用 batch 逻辑
- [x] 前端 build
@@ -0,0 +1,27 @@
# 2026-06-08 — 未设路径服务器批量管理对齐主表
## 摘要
「未设置路径服务器」区块新增与主列表齐平的批量管理能力:勾选、全选筛选结果、批量操作栏及完整列与行操作。
## 动机
未设路径区原先无批量勾选与批量操作,运维需逐台处理,与主表能力不对等。
## 涉及文件
- `frontend/src/components/servers/ServerBatchActionBar.vue` — 共用批量操作栏
- `frontend/src/components/servers/ServerUnsetPathPanel.vue` — 勾选、全选、列对齐、批量栏
- `frontend/src/pages/ServersPage.vue` — 独立 `unsetSelectedItems` + 双表 batch scope
## 迁移 / 重启
- 仅前端 build + 部署
## 验证
```bash
cd frontend && npm run build
```
浏览器:`#/servers` 未设路径区勾选多台 → 修改分类/健康检查/检测路径/Agent/批量删除;「全选筛选结果」与主表独立互不影响。
@@ -0,0 +1,33 @@
<template>
<v-card v-if="count > 0" class="mx-4 mb-2" color="primary" variant="tonal" rounded="lg">
<v-card-text class="d-flex align-center py-2 flex-wrap ga-1">
<span class="text-body-2 mr-4">已选择 {{ count }} 台服务器</span>
<v-spacer />
<v-btn size="small" variant="text" @click="$emit('batch-category')">修改分类</v-btn>
<v-btn size="small" variant="text" @click="$emit('health-check')">健康检查</v-btn>
<v-btn size="small" variant="text" @click="$emit('detect-path')">检测目标路径</v-btn>
<v-btn size="small" variant="text" @click="$emit('install-agent')">安装Agent</v-btn>
<v-btn size="small" variant="text" @click="$emit('upgrade-agent')">升级Agent</v-btn>
<v-btn size="small" variant="text" color="error" @click="$emit('uninstall-agent')">卸载Agent</v-btn>
<v-btn size="small" variant="text" color="error" @click="$emit('batch-delete')">批量删除</v-btn>
<v-btn size="small" variant="text" @click="$emit('clear')">取消选择</v-btn>
</v-card-text>
</v-card>
</template>
<script setup lang="ts">
defineProps<{
count: number
}>()
defineEmits<{
'batch-category': []
'health-check': []
'detect-path': []
'install-agent': []
'upgrade-agent': []
'uninstall-agent': []
'batch-delete': []
clear: []
}>()
</script>
@@ -1,11 +1,20 @@
<template>
<v-card elevation="0" rounded="lg" class="my-5" border>
<v-card-title class="d-flex align-center">
<v-card-title class="d-flex align-center flex-wrap ga-2">
未设置路径服务器
<v-chip v-if="total > 0" size="small" class="ml-2" color="warning" variant="tonal" label>
<v-chip v-if="total > 0" size="small" color="warning" variant="tonal" label>
{{ total }}
</v-chip>
<v-spacer />
<v-btn
size="small"
variant="tonal"
:disabled="total === 0"
:loading="selectAllLoading"
@click="$emit('select-all-filtered')"
>
全选筛选结果 ({{ total }})
</v-btn>
<v-btn
variant="text"
size="small"
@@ -17,6 +26,18 @@
</v-btn>
</v-card-title>
<ServerBatchActionBar
:count="selectedCount"
@batch-category="$emit('batch-category')"
@health-check="$emit('health-check')"
@detect-path="$emit('detect-path')"
@install-agent="$emit('install-agent')"
@upgrade-agent="$emit('upgrade-agent')"
@uninstall-agent="$emit('uninstall-agent')"
@batch-delete="$emit('batch-delete')"
@clear="$emit('clear-selection')"
/>
<v-data-table-server
class="server-unset-path-table"
:items="servers"
@@ -27,16 +48,17 @@
:items-per-page="itemsPerPage"
:items-per-page-options="itemsPerPageOptions"
hover
density="compact"
density="comfortable"
item-value="id"
show-select
show-expand
:model-value="selectedItems"
v-model:expanded="expandedModel"
@update:model-value="$emit('update:selected-items', $event)"
@update:page="$emit('update:page', $event)"
@update:items-per-page="$emit('update:items-per-page', $event)"
>
<template #item.data-table-expand="{ item, toggleExpand, isExpanded }">
<span class="d-none">{{ item.id }}{{ toggleExpand }}{{ isExpanded }}</span>
</template>
<template #item.data-table-expand />
<template #item.status="{ item }">
<v-chip :color="statusChipColor(item.status)" size="x-small" variant="tonal" label border="sm">
@@ -60,17 +82,80 @@
<span class="text-medium-emphasis">{{ item.domain }}:{{ item.port }}</span>
</template>
<template #item.category="{ item }">
<v-chip v-if="item.category" color="primary" variant="tonal" size="small" label>
{{ item.category }}
</v-chip>
<span v-else class="text-medium-emphasis"></span>
</template>
<template #item.target_path="{ item }">
<div v-if="editingPathId === item.id" class="d-flex align-center ga-1" @click.stop>
<v-text-field
:model-value="editingPathValue"
density="compact"
variant="outlined"
hide-details
placeholder="/www/wwwroot"
style="max-width: 140px"
@update:model-value="$emit('update:editing-path-value', $event)"
@keyup.enter="$emit('save-path', item.id)"
@keyup.esc="$emit('cancel-edit-path')"
/>
<v-btn
icon="mdi-check"
size="x-small"
variant="text"
color="primary"
:loading="savingPathId === item.id"
@click="$emit('save-path', item.id)"
/>
<v-btn icon="mdi-close" size="x-small" variant="text" @click="$emit('cancel-edit-path')" />
</div>
<div v-else class="d-flex align-center ga-1">
<span
class="text-caption text-medium-emphasis text-truncate d-inline-block"
style="max-width: 140px"
:title="item.target_path || '未配置'"
>
{{ item.target_path?.trim() || '—' }}
</span>
<v-btn
icon="mdi-pencil"
size="x-small"
variant="text"
density="compact"
title="编辑目标路径"
@click.stop="$emit('edit-path', item)"
/>
</div>
</template>
<template #item.agent_version="{ item }">
<span class="text-medium-emphasis">{{ item.agent_version || '—' }}</span>
</template>
<template #item.last_heartbeat="{ item }">
<span class="text-caption text-medium-emphasis">{{ formatRelativeTime(item.last_heartbeat) }}</span>
</template>
<template #item.actions="{ item }">
<div class="d-flex ga-1">
<v-btn variant="text" size="x-small" color="primary" density="compact" @click.stop="$emit('terminal', item)">
终端
</v-btn>
<v-btn variant="text" size="x-small" density="compact" @click.stop="$emit('detect-path', item)">
<v-btn variant="text" size="x-small" density="compact" @click.stop="$emit('files', item)">
文件
</v-btn>
<v-btn variant="text" size="x-small" density="compact" @click.stop="$emit('detect-path-single', item)">
检测路径
</v-btn>
<v-btn variant="text" size="x-small" density="compact" @click.stop="$emit('edit', item)">
编辑
</v-btn>
<v-btn variant="text" size="x-small" color="error" density="compact" @click.stop="$emit('delete', item)">
删除
</v-btn>
</div>
</template>
@@ -92,8 +177,10 @@
<script setup lang="ts">
import { computed } from 'vue'
import type { ServerApiItem } from '@/types/api'
import { statusChipColor, statusLabel } from '@/utils/status'
import { statusChipColor, statusLabel, formatRelativeTime } from '@/utils/status'
import { normalizeServerIds } from '@/utils/serverSelection'
import ServerInlineDetail from '@/components/servers/ServerInlineDetail.vue'
import ServerBatchActionBar from '@/components/servers/ServerBatchActionBar.vue'
const props = defineProps<{
servers: ServerApiItem[]
@@ -103,27 +190,53 @@ const props = defineProps<{
itemsPerPage: number
itemsPerPageOptions: ReadonlyArray<{ readonly value: number; readonly title: string }>
expandedIds: string[]
selectedItems: Array<ServerApiItem | number>
selectAllLoading: boolean
editingPathId: number | null
editingPathValue: string
savingPathId: number | null
}>()
const emit = defineEmits<{
refresh: []
'update:page': [page: number]
'update:items-per-page': [n: number]
'update:selected-items': [items: Array<ServerApiItem | number>]
'update:expanded-ids': [ids: string[]]
'update:editing-path-value': [value: string]
'select-all-filtered': []
'toggle-expand': [item: ServerApiItem]
terminal: [item: ServerApiItem]
'detect-path': [item: ServerApiItem]
files: [item: ServerApiItem]
'detect-path-single': [item: ServerApiItem]
edit: [item: ServerApiItem]
delete: [item: ServerApiItem]
'edit-path': [item: ServerApiItem]
'update:expanded-ids': [ids: string[]]
'save-path': [serverId: number]
'cancel-edit-path': []
'batch-category': []
'health-check': []
'detect-path': []
'install-agent': []
'upgrade-agent': []
'uninstall-agent': []
'batch-delete': []
'clear-selection': []
}>()
const headers = [
{ title: '状态', key: 'status', width: 100 },
{ title: '名称', key: 'name' },
{ title: '地址', key: 'domain' },
{ title: '操作', key: 'actions', width: 220, align: 'end' as const, sortable: false },
{ title: '分类', key: 'category', width: 100 },
{ title: '目标路径', key: 'target_path', width: 200 },
{ title: 'Agent', key: 'agent_version', width: 100 },
{ title: '心跳', key: 'last_heartbeat', width: 120 },
{ title: '操作', key: 'actions', width: 260, align: 'end' as const, sortable: false },
]
const selectedCount = computed(() => normalizeServerIds(props.selectedItems).length)
const expandedModel = computed({
get: () => props.expandedIds,
set: (ids: string[]) => emit('update:expanded-ids', ids),
+113 -38
View File
@@ -41,7 +41,7 @@
size="small"
:disabled="selectedIds.size === 0"
title="请先勾选至少一台服务器"
@click="openDetectPathConfirm"
@click="openDetectPathConfirm('main')"
>
检测路径
</v-btn>
@@ -89,20 +89,17 @@
</v-card-text>
<!-- Batch Actions -->
<v-card v-if="selectedIds.size > 0" class="mx-4 mb-2" color="primary" variant="tonal" rounded="lg">
<v-card-text class="d-flex align-center py-2">
<span class="text-body-2 mr-4">已选择 {{ selectedIds.size }} 台服务器</span>
<v-spacer />
<v-btn size="small" variant="text" @click="openBatchCategory">修改分类</v-btn>
<v-btn size="small" variant="text" @click="batchHealthCheck">健康检查</v-btn>
<v-btn size="small" variant="text" @click="openDetectPathConfirm">检测目标路径</v-btn>
<v-btn size="small" variant="text" @click="batchInstallAgent">安装Agent</v-btn>
<v-btn size="small" variant="text" @click="batchUpgradeAgent">升级Agent</v-btn>
<v-btn size="small" variant="text" color="error" @click="batchUninstallAgent">卸载Agent</v-btn>
<v-btn size="small" variant="text" color="error" @click="confirmBatchDelete">批量删除</v-btn>
<v-btn size="small" variant="text" @click="selectedItems = []">取消选择</v-btn>
</v-card-text>
</v-card>
<ServerBatchActionBar
:count="selectedIds.size"
@batch-category="openBatchCategory('main')"
@health-check="batchHealthCheck('main')"
@detect-path="openDetectPathConfirm('main')"
@install-agent="batchInstallAgent('main')"
@upgrade-agent="batchUpgradeAgent('main')"
@uninstall-agent="batchUninstallAgent('main')"
@batch-delete="confirmBatchDelete('main')"
@clear="selectedItems = []"
/>
<v-skeleton-loader
v-if="viewMode === 'table' && loading && !servers.length"
@@ -304,15 +301,34 @@
:items-per-page="unsetPathItemsPerPage"
:items-per-page-options="dataTablePageOptions"
:expanded-ids="expandedUnsetIds"
v-model:selected-items="unsetSelectedItems"
:select-all-loading="selectAllUnsetLoading"
:editing-path-id="editingPathId"
:editing-path-value="editingPathValue"
:saving-path-id="savingPathId"
@refresh="loadUnsetPathServers()"
@update:page="onUnsetPageChange"
@update:items-per-page="onUnsetItemsPerPageChange"
@update:expanded-ids="expandedUnsetIds = $event"
@update:editing-path-value="editingPathValue = $event"
@select-all-filtered="selectAllUnsetFiltered"
@toggle-expand="toggleUnsetExpand"
@terminal="openTerminal"
@detect-path="detectPathSingle"
@files="openFiles"
@detect-path-single="detectPathSingle"
@edit="editServer"
@delete="confirmDelete"
@edit-path="startEditPath"
@save-path="saveTargetPath"
@cancel-edit-path="cancelEditPath"
@batch-category="openBatchCategory('unset')"
@health-check="batchHealthCheck('unset')"
@detect-path="openDetectPathConfirm('unset')"
@install-agent="batchInstallAgent('unset')"
@upgrade-agent="batchUpgradeAgent('unset')"
@uninstall-agent="batchUninstallAgent('unset')"
@batch-delete="confirmBatchDelete('unset')"
@clear-selection="unsetSelectedItems = []"
/>
<!-- Pending / failed SSH connections -->
@@ -591,6 +607,7 @@ import { registerServerBatchJob, onScriptExecutionComplete } from '@/composables
import { showScriptSubmitToast } from '@/composables/useScriptSubmitToast'
import StatCardsRow from '@/components/StatCardsRow.vue'
import ServerFormDialog from '@/components/servers/ServerFormDialog.vue'
import ServerBatchActionBar from '@/components/servers/ServerBatchActionBar.vue'
import ServerInlineDetail from '@/components/servers/ServerInlineDetail.vue'
import ServerUnsetPathPanel from '@/components/servers/ServerUnsetPathPanel.vue'
import CredentialsDialog from '@/components/credentials/CredentialsDialog.vue'
@@ -677,6 +694,42 @@ const unsetPathPage = ref(1)
const unsetPathItemsPerPage = ref(10)
const expandedMainIds = ref<string[]>([])
const expandedUnsetIds = ref<string[]>([])
const unsetSelectedItems = ref<Array<ServerApiItem | number>>([])
const unsetSelectedIds = computed(() => new Set(normalizeServerIds(unsetSelectedItems.value)))
const selectAllUnsetLoading = ref(false)
type BatchScope = 'main' | 'unset'
const batchScope = ref<BatchScope>('main')
function batchSelection(scope: BatchScope) {
return scope === 'main'
? { items: selectedItems, ids: selectedIds }
: { items: unsetSelectedItems, ids: unsetSelectedIds }
}
async function loadAllUnsetPathServers(): Promise<ServerApiItem[]> {
const res = await fetchPagePerPage<ServerApiItem>(
'/servers/',
{ ...listQueryParams(), target_path_unset: true },
1,
-1,
)
return res.items
}
async function selectAllUnsetFiltered() {
if (unsetPathTotal.value <= 0) return
selectAllUnsetLoading.value = true
try {
const all = await loadAllUnsetPathServers()
unsetSelectedItems.value = all.map(s => s.id)
snackbar(`已选择未设路径筛选结果 ${all.length}`)
} catch {
snackbar('加载未设路径筛选结果失败', 'error')
} finally {
selectAllUnsetLoading.value = false
}
}
async function loadUnsetPathServers(silent = false) {
if (!silent) unsetPathLoading.value = true
@@ -720,12 +773,14 @@ function onMainItemsPerPageChange(n: number) {
function onUnsetPageChange(p: number) {
expandedUnsetIds.value = []
unsetSelectedItems.value = []
unsetPathPage.value = p
void loadUnsetPathServers()
}
function onUnsetItemsPerPageChange(n: number) {
expandedUnsetIds.value = []
unsetSelectedItems.value = []
unsetPathItemsPerPage.value = n
unsetPathPage.value = 1
void loadUnsetPathServers()
@@ -863,6 +918,7 @@ function toggleGroupAll(groupServers: ServerApiItem[]) {
watch(categoryFilter, () => {
selectedItems.value = []
unsetSelectedItems.value = []
expandedMainIds.value = []
expandedUnsetIds.value = []
unsetPathPage.value = 1
@@ -870,6 +926,7 @@ watch(categoryFilter, () => {
})
watch(sortBy, () => {
selectedItems.value = []
unsetSelectedItems.value = []
expandedMainIds.value = []
expandedUnsetIds.value = []
unsetPathPage.value = 1
@@ -878,6 +935,7 @@ watch(sortBy, () => {
}, { deep: true })
watch(search, () => {
selectedItems.value = []
unsetSelectedItems.value = []
expandedMainIds.value = []
expandedUnsetIds.value = []
unsetPathPage.value = 1
@@ -1116,8 +1174,10 @@ const batchCategoryOptions = computed(() => {
return names.sort((a, b) => a.localeCompare(b, 'zh'))
})
function openBatchCategory() {
if (selectedIds.value.size === 0) {
function openBatchCategory(scope: BatchScope) {
batchScope.value = scope
const { ids } = batchSelection(scope)
if (ids.value.size === 0) {
snackbar('请先勾选至少一台服务器', 'error')
return
}
@@ -1126,14 +1186,15 @@ function openBatchCategory() {
}
async function submitBatchCategory() {
const ids = [...selectedIds.value]
if (ids.length === 0) return
const { items, ids } = batchSelection(batchScope.value)
const idList = [...ids.value]
if (idList.length === 0) return
batchCategoryLoading.value = true
try {
const category = (batchCategoryValue.value || '').trim()
await submitServerBatchJob('category', ids, { category })
await submitServerBatchJob('category', idList, { category })
showBatchCategory.value = false
selectedItems.value = []
items.value = []
} catch (e: unknown) {
snackbar(formatApiError(e, '批量修改分类失败'), 'error')
} finally {
@@ -1148,8 +1209,10 @@ const editingPathId = ref<number | null>(null)
const editingPathValue = ref('')
const savingPathId = ref<number | null>(null)
function openDetectPathConfirm() {
if (!selectedIds.value.size) {
function openDetectPathConfirm(scope: BatchScope) {
batchScope.value = scope
const { ids } = batchSelection(scope)
if (!ids.value.size) {
snackbar('请先选择服务器', 'warning')
return
}
@@ -1157,7 +1220,8 @@ function openDetectPathConfirm() {
}
async function runBatchDetectPath() {
const ids = normalizeServerIds(selectedItems.value)
const { items } = batchSelection(batchScope.value)
const ids = normalizeServerIds(items.value)
if (!ids.length) return
showDetectPathConfirm.value = false
try {
@@ -1167,8 +1231,10 @@ async function runBatchDetectPath() {
}
}
async function batchHealthCheck() {
const ids = normalizeServerIds(selectedItems.value)
async function batchHealthCheck(scope: BatchScope) {
batchScope.value = scope
const { items } = batchSelection(scope)
const ids = normalizeServerIds(items.value)
if (!ids.length) {
snackbar('请先选择服务器', 'warning')
return
@@ -1180,8 +1246,10 @@ async function batchHealthCheck() {
}
}
async function batchInstallAgent() {
const ids = normalizeServerIds(selectedItems.value)
async function batchInstallAgent(scope: BatchScope) {
batchScope.value = scope
const { items } = batchSelection(scope)
const ids = normalizeServerIds(items.value)
if (!ids.length) {
snackbar('请先选择服务器', 'warning')
return
@@ -1193,8 +1261,10 @@ async function batchInstallAgent() {
}
}
async function batchUpgradeAgent() {
const ids = normalizeServerIds(selectedItems.value)
async function batchUpgradeAgent(scope: BatchScope) {
batchScope.value = scope
const { items } = batchSelection(scope)
const ids = normalizeServerIds(items.value)
if (!ids.length) {
snackbar('请先选择服务器', 'warning')
return
@@ -1207,8 +1277,10 @@ async function batchUpgradeAgent() {
}
}
async function batchUninstallAgent() {
const ids = normalizeServerIds(selectedItems.value)
async function batchUninstallAgent(scope: BatchScope) {
batchScope.value = scope
const { items } = batchSelection(scope)
const ids = normalizeServerIds(items.value)
if (!ids.length) {
snackbar('请先选择服务器', 'warning')
return
@@ -1258,14 +1330,17 @@ async function saveTargetPath(serverId: number) {
}
}
async function confirmBatchDelete() {
if (!confirm(`确定删除选中的 ${selectedIds.value.size} 台服务器?`)) return
for (const id of selectedIds.value) {
async function confirmBatchDelete(scope: BatchScope) {
batchScope.value = scope
const { items, ids } = batchSelection(scope)
if (!ids.value.size) return
if (!confirm(`确定删除选中的 ${ids.value.size} 台服务器?`)) return
for (const id of ids.value) {
try { await http.delete(`/servers/${id}`) } catch { /* skip individual errors */ }
}
selectedItems.value = []
items.value = []
snackbar('批量删除完成')
loadServers()
await Promise.all([loadServers(), loadUnsetPathServers()])
loadStats()
}
+1
View File
@@ -0,0 +1 @@
import{_ as e,t,v as n}from"./VSelect-gerzyOc7.js";import{n as r,t as i}from"./VRow-DHa4IYog.js";import{$r as a,Br as o,Jt as s,Nr as c,X as l,_ as u,_r as d,cr as f,fr as p,h as m,hr as h,jr as g,l as _,m as v,pr as y,qr as b,ri as x,vr as S,y as C,yr as w}from"./index-DqWTaECE.js";import{t as T}from"./usePageActivateRefresh-Cwhm5Duf.js";import{n as E}from"./dataTable-esDY4cOk.js";import{_ as D,y as O}from"./VTextField-BQaSQmP3.js";import{t as k}from"./VDataTableServer-DmzDm02O.js";var A={class:`font-weight-medium`},j={class:`text-body-2`},M={class:`text-caption text-medium-emphasis`},N=w({name:`AlertsPage`,__name:`AlertsPage`,setup(w){let N=e(),P=b(!1),F=b([]),I=b(0),L=b(1),R=b(null),z=b(null),B=b([{label:`今日告警`,value:`0`,color:`blue`,icon:`mdi-alert`},{label:`活跃告警`,value:`0`,color:`orange`,icon:`mdi-bell-ring`},{label:`已恢复`,value:`0`,color:`green`,icon:`mdi-check-circle`},{label:`Top 服务器`,value:``,color:`red`,icon:`mdi-server`}]),V=[{label:`CPU`,value:`cpu`},{label:`内存`,value:`memory`},{label:`磁盘`,value:`disk`},{label:`连接`,value:`connection`}],H=[{label:`活跃`,value:`active`},{label:`已恢复`,value:`recovered`}],U=E([{title:`类型`,key:`alert_type`,width:100},{title:`服务器`,key:`server_name`},{title:`详情`,key:`value`},{title:`状态`,key:`is_recovery`,width:100},{title:`时间`,key:`created_at`,width:160}]);async function W(){try{let e=await s.get(`/alert-history/stats`);B.value[0].value=String(e.today||0),B.value[1].value=String(e.active||0),B.value[2].value=String(e.recovered||0),B.value[3].value=e.top_server||``}catch{N(`加载统计失败`,`error`)}}async function G(e=!1){e||(P.value=!0);try{let e=await s.get(`/alert-history/`,{page:L.value,per_page:20,type:R.value||void 0,status:z.value||void 0});F.value=e.items||[],I.value=e.total||0}catch{F.value=[]}finally{e||(P.value=!1)}}function K(e){return e===`cpu`||e===`CPU`?`error`:e===`memory`||e===`内存`?`warning`:e===`disk`||e===`磁盘`?`info`:`primary`}function q(e){return e===`cpu`||e===`CPU`?`mdi-chip`:e===`memory`||e===`内存`?`mdi-memory`:e===`disk`||e===`磁盘`?`mdi-harddisk`:`mdi-lan-disconnect`}async function J(e=!1){await Promise.all([W(),G(e)])}return T(e=>J(e)),(e,s)=>(g(),y(n,{fluid:``,class:`pa-6`},{default:o(()=>[S(i,{class:`mb-4`},{default:o(()=>[(g(!0),h(f,null,c(B.value,e=>(g(),y(r,{cols:`12`,sm:`6`,lg:`3`,key:e.label},{default:o(()=>[S(_,{elevation:`0`,lines:`two`,rounded:`lg`,border:``},{default:o(()=>[S(v,null,{append:o(()=>[S(l,{color:e.color,size:`30`},{default:o(()=>[d(x(e.icon),1)]),_:2},1032,[`color`])]),default:o(()=>[S(m,{class:`text-body-small`},{default:o(()=>[d(x(e.label),1)]),_:2},1024),S(m,null,{default:o(()=>[d(x(e.value),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}),S(D,{elevation:`0`,border:``,rounded:`lg`},{default:o(()=>[S(O,{class:`d-flex align-center`},{default:o(()=>[s[5]||=d(` 告警历史 `,-1),S(u),S(t,{modelValue:R.value,"onUpdate:modelValue":[s[0]||=e=>R.value=e,s[1]||=e=>{L.value=1,G()}],items:V,"item-title":`label`,"item-value":`value`,label:`类型`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`140px`},clearable:``},null,8,[`modelValue`]),S(t,{modelValue:z.value,"onUpdate:modelValue":[s[2]||=e=>z.value=e,s[3]||=e=>{L.value=1,G()}],items:H,"item-title":`label`,"item-value":`value`,label:`状态`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`140px`},class:`ml-3`,clearable:``},null,8,[`modelValue`])]),_:1}),S(k,{items:F.value,headers:a(U),"items-length":I.value,loading:P.value,page:L.value,"items-per-page":20,hover:``,density:`comfortable`,"onUpdate:page":s[4]||=e=>{L.value=e,G()}},{"item.alert_type":o(({item:e})=>[S(C,{color:K(e.alert_type),size:`small`,variant:`tonal`,label:``},{prepend:o(()=>[S(l,{size:`12`},{default:o(()=>[d(x(q(e.alert_type)),1)]),_:2},1024)]),default:o(()=>[d(` `+x(e.alert_type),1)]),_:2},1032,[`color`])]),"item.server_name":o(({item:e})=>[p(`span`,A,x(e.server_name),1)]),"item.value":o(({item:e})=>[p(`span`,j,x(e.value),1)]),"item.is_recovery":o(({item:e})=>[e.is_recovery?(g(),y(C,{key:0,color:`success`,size:`small`,variant:`tonal`,label:``},{default:o(()=>[...s[6]||=[d(`已恢复`,-1)]]),_:1})):(g(),y(C,{key:1,color:`error`,size:`small`,variant:`tonal`,label:``},{default:o(()=>[...s[7]||=[d(`告警中`,-1)]]),_:1}))]),"item.created_at":o(({item:e})=>[p(`span`,M,x(e.created_at),1)]),"no-data":o(()=>[...s[8]||=[p(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`])]),_:1})]),_:1}))}});export{N as default};
+1
View File
@@ -0,0 +1 @@
import{_ as e,t,v as n}from"./VSelect-gerzyOc7.js";import{$r as r,Br as i,Jt as a,P as o,Tt as s,_ as c,_r as l,fr as u,jr as d,mr as f,pr as p,qr as m,ri as h,sr as g,vr as _,y as v,yr as y}from"./index-DqWTaECE.js";import{t as b}from"./usePageActivateRefresh-Cwhm5Duf.js";import{n as x}from"./dataTable-esDY4cOk.js";import{_ as S,t as C,y as w}from"./VTextField-BQaSQmP3.js";import{t as T}from"./VDataTableServer-DmzDm02O.js";import{a as E,n as D,r as O,t as k}from"./auditNormalize-DWYIxo0q.js";var A=new Set([`batch_install_agent`,`batch_upgrade_agent`,`batch_uninstall_agent`,`batch_detect_path`,`batch_health_check`,`batch_update_category`,`batch_server_op`]);function j(e){return A.has(e)}function M(e){let t=(e||``).trim();if(!t.startsWith(`{`))return null;try{let e=JSON.parse(t);return typeof e.job_id!=`number`||!e.summary?null:e}catch{return null}}function N(e){let t=[e.summary],n=e.failures||[];if(n.length){let e=n.slice(0,3).map(e=>e.server_name).join(``);t.push(`失败: ${e}${n.length>3?``:``}`)}return t.join(` · `)}var P={class:`font-weight-medium`},F={class:`text-body-2`},I={class:`d-flex align-center ga-2 flex-wrap`},L={class:`text-body-2 text-medium-emphasis`,style:{"max-width":`360px`}},R={class:`text-caption text-medium-emphasis`},z={class:`text-caption text-medium-emphasis`},B=y({name:`AuditPage`,__name:`AuditPage`,setup(y){let A=e(),B=m(!1),V=m([]),H=m(0),U=m(1),W=m(null),G=m(``),K=m(``),q=D,J=x([{title:`操作`,key:`action`,width:100},{title:`用户`,key:`admin_username`,width:100},{title:`目标`,key:`target`,width:140},{title:`详情`,key:`detail`},{title:`IP`,key:`ip_address`,width:120},{title:`时间`,key:`created_at`,width:160}]);async function Y(e=!1){e||(B.value=!0);try{let e=(U.value-1)*50,t=await a.get(`/audit/`,{limit:50,offset:e,action:W.value||void 0,admin_username:G.value||void 0,date_from:K.value||void 0});V.value=k(t.items||[]),H.value=t.total||0}catch{V.value=[],e||A(`加载审计日志失败`,`error`)}finally{e||(B.value=!1)}}function X(e){return e.startsWith(`create`)||e===`login`?`success`:e.startsWith(`update`)?`info`:e.startsWith(`delete`)||e===`logout`?`error`:e.includes(`execute`)||e.includes(`push`)||e.includes(`retry`)?`warning`:`primary`}function Z(e){return j(e.action)?M(e.detail):null}function Q(e){let t=Z(e);return t?N(t):(e.detail||``).trim()||``}function $(e){s(e.job_id,e.summary)}return b(e=>Y(e)),(e,a)=>(d(),p(n,{fluid:``,class:`pa-6`},{default:i(()=>[_(S,{elevation:`0`,border:``,rounded:`lg`},{default:i(()=>[_(w,{class:`d-flex align-center`},{default:i(()=>[a[7]||=l(` 审计日志 `,-1),_(c),_(t,{modelValue:W.value,"onUpdate:modelValue":[a[0]||=e=>W.value=e,a[1]||=e=>{U.value=1,Y()}],items:r(q),"item-title":`label`,"item-value":`value`,label:`操作类型`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`200px`},clearable:``},null,8,[`modelValue`,`items`]),_(C,{modelValue:G.value,"onUpdate:modelValue":[a[2]||=e=>G.value=e,a[3]||=e=>{U.value=1,Y()}],"prepend-inner-icon":`mdi-account`,label:`用户`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`140px`},class:`ml-3`,clearable:``},null,8,[`modelValue`]),_(C,{modelValue:K.value,"onUpdate:modelValue":[a[4]||=e=>K.value=e,a[5]||=e=>{U.value=1,Y()}],"prepend-inner-icon":`mdi-calendar`,label:`日期`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`160px`},class:`ml-3`,type:`date`,clearable:``},null,8,[`modelValue`])]),_:1}),_(T,{items:V.value,headers:r(J),"items-length":H.value,loading:B.value,page:U.value,"items-per-page":50,hover:``,density:`compact`,"onUpdate:page":a[6]||=e=>{U.value=e,Y()}},{"item.action":i(({item:e})=>[_(v,{color:X(e.action),size:`small`,variant:`tonal`,label:``},{default:i(()=>[l(h(r(O)(e.action)),1)]),_:2},1032,[`color`])]),"item.admin_username":i(({item:e})=>[u(`span`,P,h(e.admin_username),1)]),"item.target":i(({item:e})=>[u(`span`,F,h(r(E)(e.resource_type))+h(e.resource_id?` #${e.resource_id}`:``),1)]),"item.detail":i(({item:e})=>[u(`div`,I,[u(`span`,L,h(Q(e)),1),Z(e)?(d(),p(o,{key:0,size:`x-small`,variant:`tonal`,color:`primary`,onClick:g(t=>$(Z(e)),[`stop`])},{default:i(()=>[...a[8]||=[l(` 查看结果 `,-1)]]),_:1},8,[`onClick`])):f(``,!0)])]),"item.ip_address":i(({item:e})=>[u(`span`,R,h(e.ip_address||``),1)]),"item.created_at":i(({item:e})=>[u(`span`,z,h(e.created_at),1)]),"no-data":i(()=>[...a[9]||=[u(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`])]),_:1})]),_:1}))}});export{B as default};
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
import{Qt as e,hr as t,jr as n,kr as r,yr as i}from"./index-DqWTaECE.js";var a=i({name:`CredentialsPage`,__name:`CredentialsPage`,setup(i){let a=e();return r(()=>{a.replace({path:`/servers`,query:{credentials:`1`}})}),(e,r)=>(n(),t(`div`))}});export{a as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{_ as e,t,v as n}from"./VSelect-gerzyOc7.js";import{$r as r,Br as i,Jt as a,P as o,_ as s,_r as c,fr as l,jr as u,mr as d,pr as f,qr as p,ri as m,vr as h,y as g,yr as _}from"./index-DqWTaECE.js";import{t as v}from"./usePageActivateRefresh-Cwhm5Duf.js";import{n as y}from"./dataTable-esDY4cOk.js";import{_ as b,v as x,x as S,y as C}from"./VTextField-BQaSQmP3.js";import{t as w}from"./VDataTableServer-DmzDm02O.js";import{t as T}from"./VDialog-CbSyVoSs.js";import{t as E}from"./usePageAutoRefresh-D-Rydzn4.js";var D={class:`font-weight-medium text-truncate d-inline-block`,style:{"max-width":`240px`}},O={class:`text-medium-emphasis`},k={class:`text-medium-emphasis`},A={class:`text-caption text-medium-emphasis`},j={class:`text-caption text-medium-emphasis`},M=_({name:`RetriesPage`,__name:`RetriesPage`,setup(_){let M=e(),N=p(!1),P=p([]),F=p(0),I=p(1),L=p(null),R=p(!1),z=p(null),B=[{label:`待重试`,value:`pending`},{label:`重试中`,value:`retrying`},{label:`成功`,value:`success`},{label:`失败`,value:`failed`}],V=y([{title:`状态`,key:`status`,width:100},{title:`任务`,key:`operation`},{title:`服务器`,key:`server_name`},{title:`次数`,key:`retry_count`,width:100},{title:`下次重试`,key:`next_retry_at`,width:140},{title:`创建时间`,key:`created_at`,width:160},{title:``,key:`actions`,width:120,align:`end`}]);async function H(e=!1){e||(N.value=!0);try{let e=(await a.getList(`/retries/`,{limit:200})).items||[];L.value&&(e=e.filter(e=>e.status===L.value)),F.value=e.length;let t=(I.value-1)*20;P.value=e.slice(t,t+20)}catch(t){e||(P.value=[],F.value=0,M(t instanceof Error?t.message:`加载重试队列失败`,`error`))}finally{e||(N.value=!1)}}async function U(e){try{await a.post(`/retries/${e.id}/retry`),H(),M(`重试已触发`)}catch(e){M(e.message||`操作失败`,`error`)}}function W(e){z.value=e.id,R.value=!0}async function G(){if(z.value)try{await a.delete(`/retries/${z.value}`),R.value=!1,H(),M(`已删除`)}catch(e){M(e.message||`删除失败`,`error`)}}function K(e){return e===`success`?`success`:e===`failed`?`error`:e===`retrying`?`warning`:`info`}function q(e){return e===`pending`?`待重试`:e===`retrying`?`重试中`:e===`success`?`成功`:e===`failed`?`失败`:e}function J(e){return e.source_path&&e.target_path?`${e.source_path}${e.target_path}`:e.source_path||e.target_path||`文件推送`}return E(()=>H(!0),15e3),v(e=>H(e)),(e,a)=>(u(),f(n,{fluid:``,class:`pa-6`},{default:i(()=>[h(b,{elevation:`0`,border:``,rounded:`lg`},{default:i(()=>[h(C,{class:`d-flex align-center text-h6`},{default:i(()=>[a[5]||=c(` 重试队列 `,-1),h(s),h(t,{modelValue:L.value,"onUpdate:modelValue":[a[0]||=e=>L.value=e,a[1]||=e=>{I.value=1,H()}],items:B,"item-title":`label`,"item-value":`value`,label:`状态筛选`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`160px`},clearable:``},null,8,[`modelValue`])]),_:1}),h(w,{items:P.value,headers:r(V),"items-length":F.value,loading:N.value,page:I.value,"items-per-page":20,hover:``,density:`comfortable`,"onUpdate:page":a[2]||=e=>{I.value=e,H()}},{"item.status":i(({item:e})=>[h(g,{color:K(e.status),size:`x-small`,variant:`tonal`,label:``,border:`sm`},{default:i(()=>[c(m(q(e.status)),1)]),_:2},1032,[`color`])]),"item.operation":i(({item:e})=>[l(`span`,D,m(J(e)),1)]),"item.server_name":i(({item:e})=>[l(`span`,O,m(e.server_name||``),1)]),"item.retry_count":i(({item:e})=>[l(`span`,k,m(e.retry_count||0)+` / `+m(e.max_retries||3),1)]),"item.next_retry_at":i(({item:e})=>[l(`span`,A,m(e.next_retry_at||``),1)]),"item.created_at":i(({item:e})=>[l(`span`,j,m(e.created_at),1)]),"item.actions":i(({item:e})=>[e.status===`pending`||e.status===`failed`?(u(),f(o,{key:0,variant:`text`,size:`x-small`,color:`primary`,density:`compact`,onClick:t=>U(e)},{default:i(()=>[...a[6]||=[c(` 重试 `,-1)]]),_:1},8,[`onClick`])):d(``,!0),h(o,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>W(e)},{default:i(()=>[...a[7]||=[c(` 删除 `,-1)]]),_:1},8,[`onClick`])]),"no-data":i(()=>[...a[8]||=[l(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`])]),_:1}),h(T,{modelValue:R.value,"onUpdate:modelValue":a[4]||=e=>R.value=e,"max-width":`400`},{default:i(()=>[h(b,{border:``},{default:i(()=>[h(C,null,{default:i(()=>[...a[9]||=[c(`确认删除`,-1)]]),_:1}),h(x,null,{default:i(()=>[...a[10]||=[c(`确定要删除此重试任务吗?`,-1)]]),_:1}),h(S,null,{default:i(()=>[h(s),h(o,{variant:`text`,onClick:a[3]||=e=>R.value=!1},{default:i(()=>[...a[11]||=[c(`取消`,-1)]]),_:1}),h(o,{color:`error`,variant:`flat`,onClick:G},{default:i(()=>[...a[12]||=[c(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{M as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
import{n as e,t}from"./VRow-DHa4IYog.js";import{$r as n,Br as r,Lr as i,Nr as a,P as o,Sr as s,X as c,Y as l,_r as u,cr as d,dr as f,fr as p,hr as m,jr as h,mr as g,ni as _,pr as v,qr as y,ri as b,vr as x,y as S,yr as C}from"./index-DqWTaECE.js";import{_ as w,t as T}from"./VTextField-BQaSQmP3.js";import{t as E}from"./VCheckbox-YYnvx0xb.js";import{s as D}from"./labels-CzOhyWto.js";import{t as O}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as k}from"./useServerCategories-ChKsgtwz.js";var A={class:`server-category-picker`},j={class:`d-flex align-center flex-wrap ga-2 mb-2`},M={key:0,class:`text-center text-medium-emphasis py-4`},N={class:`d-flex align-center px-1 mb-1`},P={class:`text-caption text-medium-emphasis ml-1`},F={class:`d-flex align-center ga-2`},I={class:`text-body-2 font-weight-medium text-truncate`},L={class:`text-caption text-medium-emphasis text-truncate`},R=O(C({__name:`ServerCategoryPicker`,props:s({servers:{},loading:{type:Boolean,default:!1},maxHeight:{default:`280px`}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:[`update:modelValue`],setup(s){let C=i(s,`modelValue`),O=s,R=y(``),z=f(()=>new Set(C.value)),B=f(()=>{let e=R.value.trim().toLowerCase();return e?O.servers.filter(t=>t.name.toLowerCase().includes(e)||(t.domain||``).toLowerCase().includes(e)||(t.category||``).toLowerCase().includes(e)):O.servers}),V=f(()=>{let e={};for(let t of B.value){let n=t.category?.trim()||`uncategorized`;e[n]||(e[n]=[]),e[n].push(t)}return Object.entries(e).map(([e,t])=>({category:e,label:k(e),servers:[...t].sort((e,t)=>e.name.localeCompare(t.name,`zh`))})).sort((e,t)=>e.category===`uncategorized`?1:t.category===`uncategorized`?-1:e.label.localeCompare(t.label,`zh`))}),H=f(()=>{let e=B.value;return e.length>0&&e.every(e=>z.value.has(e.id))});function U(e){return e.servers.filter(e=>z.value.has(e.id)).length}function W(e){let t=V.value.find(t=>t.category===e);return!t||t.servers.length===0?!1:t.servers.every(e=>z.value.has(e.id))}function G(e){C.value=[...e]}function K(e){let t=new Set(C.value);t.has(e)?t.delete(e):t.add(e),G(t)}function q(e){let t=V.value.find(t=>t.category===e);if(!t)return;let n=new Set(C.value),r=t.servers.every(e=>n.has(e.id));for(let e of t.servers)r?n.delete(e.id):n.add(e.id);G(n)}function J(){let e=B.value,t=new Set(C.value),n=e.length>0&&e.every(e=>t.has(e.id));for(let r of e)n?t.delete(r.id):t.add(r.id);G(t)}return(i,f)=>(h(),m(`div`,A,[p(`div`,j,[x(E,{"model-value":H.value,label:`全选`,density:`compact`,"hide-details":``,"onUpdate:modelValue":J},null,8,[`model-value`]),x(T,{modelValue:R.value,"onUpdate:modelValue":f[0]||=e=>R.value=e,"prepend-inner-icon":`mdi-magnify`,label:`搜索服务器`,density:`compact`,"hide-details":``,variant:`outlined`,rounded:``,style:{"max-width":`220px`},clearable:``},null,8,[`modelValue`]),C.value.length>0?(h(),v(S,{key:0,size:`small`,color:`primary`,variant:`tonal`,label:``},{default:r(()=>[u(` 已选 `+b(C.value.length)+``,1)]),_:1})):g(``,!0),s.loading?(h(),v(l,{key:1,indeterminate:``,size:`18`,width:`2`})):g(``,!0)]),p(`div`,{class:`picker-scroll`,style:_({maxHeight:s.maxHeight})},[!s.loading&&V.value.length===0?(h(),m(`div`,M,` 暂无服务器 `)):g(``,!0),(h(!0),m(d,null,a(V.value,i=>(h(),m(`div`,{key:i.category,class:`mb-3`},[p(`div`,N,[x(o,{size:`x-small`,variant:`text`,color:W(i.category)?`primary`:`default`,onClick:e=>q(i.category)},{default:r(()=>[x(c,{size:`16`,class:`mr-1`},{default:r(()=>[u(b(W(i.category)?`mdi-checkbox-marked`:`mdi-checkbox-blank-outline`),1)]),_:2},1024),u(` `+b(i.label),1)]),_:2},1032,[`color`,`onClick`]),p(`span`,P,` (`+b(U(i))+`/`+b(i.servers.length)+`) `,1)]),x(t,{dense:``},{default:r(()=>[(h(!0),m(d,null,a(i.servers,t=>(h(),v(e,{key:t.id,cols:`12`,sm:`6`},{default:r(()=>[x(w,{color:z.value.has(t.id)?`primary`:void 0,variant:z.value.has(t.id)?`tonal`:`outlined`,rounded:`lg`,class:`pa-2 cursor-pointer`,onClick:e=>K(t.id)},{default:r(()=>[p(`div`,F,[x(c,{color:n(D)(t.is_online),size:`10`},{default:r(()=>[...f[1]||=[u(`mdi-circle`,-1)]]),_:1},8,[`color`]),p(`span`,I,b(t.name),1)]),p(`div`,L,b(t.domain),1)]),_:2},1032,[`color`,`variant`,`onClick`])]),_:2},1024))),128))]),_:2},1024)]))),128))],4)]))}}),[[`__scopeId`,`data-v-4d1df917`]]);export{R as t};
+1
View File
@@ -0,0 +1 @@
@layer vuetify-components{.v-combobox--chips.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating{top:0}.v-combobox .v-field .v-text-field__prefix,.v-combobox .v-field .v-text-field__suffix,.v-combobox .v-field .v-field__input,.v-combobox .v-field .v-field__input>input,.v-combobox .v-field.v-field{cursor:text}.v-combobox .v-field .v-field__input>input{flex:1}.v-combobox .v-field input{min-width:64px}.v-combobox .v-field:not(.v-field--focused) input{min-width:0}.v-combobox .v-field--dirty .v-combobox__selection{margin-inline-end:2px}.v-combobox .v-combobox__selection-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.v-combobox__content{box-shadow:0px 1px 2px 0px rgba(var(--v-shadow-color), var(--v-shadow-key-opacity,.3)), 0px 2px 6px 2px rgba(var(--v-shadow-color), var(--v-shadow-ambient-opacity,.15));--v-elevation-overlay:color-mix(in srgb, var(--v-elevation-overlay-color) 4%, transparent);overflow:hidden}.v-menu>.v-overlay__content.v-combobox__content{border-radius:4px}.v-combobox__content>.v-sheet{flex-direction:column;display:flex}.v-combobox__mask{background:rgb(var(--v-theme-surface-light))}.v-combobox__selection{height:1.5rem;letter-spacing:inherit;line-height:inherit;align-items:center;max-width:calc(100% - 4px);display:inline-flex}.v-combobox__selection:first-child{margin-inline-start:0}.v-combobox--selecting-index .v-combobox__selection{opacity:var(--v-medium-emphasis-opacity)}.v-combobox--selecting-index .v-combobox__selection--selected{opacity:1}.v-combobox--selecting-index .v-field__input>input{caret-color:#0000}.v-combobox--single:not(.v-combobox--selection-slot).v-text-field input{width:100%;padding-inline:inherit;flex:1;position:absolute;left:0;right:0}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--active input{transition:none}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--dirty:not(.v-field--focused) input,.v-combobox--single:not(.v-combobox--selection-slot) .v-field--focused .v-combobox__selection{opacity:0}.v-combobox__menu-icon{margin-inline-start:4px;transition:all .2s cubic-bezier(.4,0,.2,1)}.v-combobox--active-menu .v-combobox__menu-icon{transform:rotate(180deg)}}.server-unset-path-table[data-v-8b1eb0fe] .v-data-table__td--expand-column,.server-unset-path-table[data-v-8b1eb0fe] .v-data-table-column--expand,.server-unset-path-table[data-v-8b1eb0fe] th.v-data-table__th--expand,.server-main-table[data-v-3e2545e3] .v-data-table__td--expand-column,.server-main-table[data-v-3e2545e3] .v-data-table-column--expand,.server-main-table[data-v-3e2545e3] th.v-data-table__th--expand{width:0!important;padding:0!important;display:none!important}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{d as e,f as t}from"./VSelect-gerzyOc7.js";import{Cr as n,Fn as r,Ir as i,Yn as a,gn as o,qr as s,r as c,sn as l,un as u,vr as d,xn as f}from"./index-DqWTaECE.js";import{l as p,m,u as h}from"./VTextField-BQaSQmP3.js";var g=f({...a(h(),[`direction`]),...a(t(),[`inline`])},`VCheckbox`),_=o()({name:`VCheckbox`,inheritAttrs:!1,props:g(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(t,{attrs:a,slots:o}){let f=l(t,`modelValue`),{isFocused:h,focus:g,blur:_}=m(t),v=s(),y=i();return u(()=>{let[i,s]=r(a),c=p.filterProps(t),l=e.filterProps(t);return d(p,n({ref:v,class:[`v-checkbox`,t.class]},i,c,{modelValue:f.value,"onUpdate:modelValue":e=>f.value=e,id:t.id||`checkbox-${y}`,focused:h.value,style:t.style}),{...o,default:({id:t,messagesId:r,isDisabled:i,isReadonly:a,isValid:c})=>d(e,n(l,{id:t.value,"aria-describedby":r.value,disabled:i.value,readonly:a.value},s,{error:c.value===!1,modelValue:f.value,"onUpdate:modelValue":e=>f.value=e,onFocus:g,onBlur:_}),o)})}),c({},v)}});export{_ as t};
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
import{_ as e,a as t,b as n,c as r,d as i,f as a,g as o,h as s,i as c,l,m as u,n as d,o as f,p,r as ee,s as m,u as h,v as g,y as _}from"./VDataTable-BjoJ8L77.js";import{Cr as v,Mr as y,Xr as b,Yn as x,Zr as S,_n as C,cr as w,dr as T,fr as E,gn as D,un as te,v as ne,vr as O,xn as k}from"./index-DqWTaECE.js";var A=k({itemsLength:{type:[Number,String],required:!0},..._(),...d(),...e()},`VDataTableServer`),j=D()({name:`VDataTableServer`,props:A(),emits:{"update:modelValue":e=>!0,"update:page":e=>!0,"update:itemsPerPage":e=>!0,"update:sortBy":e=>!0,"update:options":e=>!0,"update:expanded":e=>!0,"update:groupBy":e=>!0},setup(e,{attrs:d,slots:_}){let{groupBy:D}=r(e),{initialSortOrder:k,sortBy:A,multiSort:j,mustSort:M}=a(e),{page:N,itemsPerPage:P}=g(e),{disableSort:F}=S(e),I=T(()=>parseInt(e.itemsLength,10)),{columns:L,headers:R}=s(e,{groupBy:D,showSelect:b(()=>e.showSelect),showExpand:b(()=>e.showExpand)}),{items:z}=c(e,L),{toggleSort:B}=p({initialSortOrder:k,sortBy:A,multiSort:j,mustSort:M,page:N}),{opened:V,isGroupOpen:H,toggleGroup:re,extractRows:U}=l({groupBy:D,sortBy:A,disableSort:F}),{pageCount:W,setItemsPerPage:G,prevPage:K,nextPage:q,setPage:J}=n({page:N,itemsPerPage:P,itemsLength:I}),{flatItems:Y}=h(z,D,V,()=>!!_[`group-summary`]),{isSelected:X,select:ie,selectAll:Z,toggleSelect:ae,someSelected:oe,allSelected:se}=u(e,{allItems:z,currentPage:z}),{isExpanded:ce,toggleExpand:le}=m(e),Q=T(()=>U(z.value));ee({page:N,itemsPerPage:P,sortBy:A,groupBy:D,search:b(()=>e.search)}),y(`v-data-table`,{toggleSort:B,sortBy:A}),C({VDataTableRows:{hideNoData:b(()=>e.hideNoData),noDataText:b(()=>e.noDataText),loading:b(()=>e.loading),loadingText:b(()=>e.loadingText)}});let $=T(()=>({page:N.value,itemsPerPage:P.value,sortBy:A.value,pageCount:W.value,toggleSort:B,setItemsPerPage:G,prevPage:K,nextPage:q,setPage:J,someSelected:oe.value,allSelected:se.value,isSelected:X,select:ie,selectAll:Z,toggleSelect:ae,isExpanded:ce,toggleExpand:le,isGroupOpen:H,toggleGroup:re,items:Q.value.map(e=>e.raw),internalItems:Q.value,groupedItems:Y.value,columns:L.value,headers:R.value}));te(()=>{let n=o.filterProps(e),r=i.filterProps(x(e,[`multiSort`])),a=f.filterProps(e),s=t.filterProps(e);return O(t,v({class:[`v-data-table`,{"v-data-table--loading":e.loading},e.class],style:e.style},s,{fixedHeader:e.fixedHeader||e.sticky}),{top:()=>_.top?.($.value),default:()=>_.default?_.default($.value):E(w,null,[_.colgroup?.($.value),!e.hideDefaultHeader&&E(`thead`,{key:`thead`,class:`v-data-table__thead`,role:`rowgroup`},[O(i,v(r,{multiSort:!!e.multiSort}),_)]),_.thead?.($.value),!e.hideDefaultBody&&E(`tbody`,{class:`v-data-table__tbody`,role:`rowgroup`},[_[`body.prepend`]?.($.value),_.body?_.body($.value):O(f,v(d,a,{items:Y.value}),_),_[`body.append`]?.($.value)]),_.tbody?.($.value),_.tfoot?.($.value)]),bottom:()=>_.bottom?_.bottom($.value):!e.hideDefaultFooter&&E(w,null,[O(ne,null,null),O(o,n,{prepend:_[`footer.prepend`]})])})})}});export{j as t};
+1
View File
@@ -0,0 +1 @@
import{Cr as e,M as t,Q as n,Rr as r,Yn as i,a,gn as o,i as s,o as c,qr as l,r as u,sn as d,un as f,vr as p,wr as m,xn as h}from"./index-DqWTaECE.js";var g=h({fullscreen:Boolean,scrollable:Boolean,...i(a({captureFocus:!0,origin:`center center`,scrollStrategy:`block`,transition:{component:t},zIndex:2400,retainFocus:!0}),[`disableInitialFocus`])},`VDialog`),_=o()({name:`VDialog`,props:g(),emits:{"update:modelValue":e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(t,{emit:i,slots:a}){let o=d(t,`modelValue`),{scopeId:h}=c(),g=l();function _(){i(`afterEnter`),(t.scrim||t.retainFocus)&&g.value?.contentEl&&!g.value.contentEl.contains(document.activeElement)&&g.value.contentEl.focus({preventScroll:!0})}function v(){i(`afterLeave`)}return r(o,async e=>{e||(await m(),g.value.activatorEl?.focus({preventScroll:!0}))}),f(()=>{let r=s.filterProps(t),i=e({"aria-haspopup":`dialog`},t.activatorProps),c=e({tabindex:-1},t.contentProps);return p(s,e({ref:g,class:[`v-dialog`,{"v-dialog--fullscreen":t.fullscreen,"v-dialog--scrollable":t.scrollable},t.class],style:t.style},r,{modelValue:o.value,"onUpdate:modelValue":e=>o.value=e,"aria-modal":`true`,activatorProps:i,contentProps:c,height:t.fullscreen?void 0:t.height,width:t.fullscreen?void 0:t.width,maxHeight:t.fullscreen?void 0:t.maxHeight,maxWidth:t.fullscreen?void 0:t.maxWidth,role:`dialog`,onAfterEnter:_,onAfterLeave:v},h),{activator:a.activator,default:(...e)=>p(n,{root:`VDialog`},{default:()=>[a.default?.(...e)]})})}),u({},g)}});export{_ as t};
@@ -0,0 +1 @@
import{I as e,J as t,Mr as n,O as r,Q as i,Vr as a,X as o,Xn as s,Xr as c,_n as l,ar as u,bn as d,c as f,dr as p,dt as m,en as h,et as g,fr as _,ft as v,gn as y,ln as b,lt as x,ni as S,nt as C,pt as w,q as T,rt as E,s as D,st as O,ti as k,tn as A,tt as j,un as M,ut as N,vr as P,xn as F,xr as I}from"./index-DqWTaECE.js";var L=Symbol.for(`vuetify:v-expansion-panel`),R=F({...d(),...D()},`VExpansionPanelText`),z=y()({name:`VExpansionPanelText`,props:R(),setup(e,{slots:t}){let n=I(L);if(!n)throw Error(`[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel`);let{hasContent:i,onAfterLeave:o}=f(e,n.isSelected);return M(()=>P(r,{onAfterLeave:o},{default:()=>[a(_(`div`,{class:k([`v-expansion-panel-text`,e.class]),style:S(e.style)},[t.default&&i.value&&_(`div`,{class:`v-expansion-panel-text__wrapper`},[t.default?.()])]),[[u,n.isSelected.value]])]})),{}}}),B=F({color:String,expandIcon:{type:b,default:`$expand`},collapseIcon:{type:b,default:`$collapse`},hideActions:Boolean,focusable:Boolean,static:Boolean,ripple:{type:[Boolean,Object],default:!1},readonly:Boolean,...d(),...T()},`VExpansionPanelTitle`),V=y()({name:`VExpansionPanelTitle`,directives:{vRipple:e},props:B(),setup(n,{slots:r}){let s=I(L);if(!s)throw Error(`[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel`);let{backgroundColorClasses:l,backgroundColorStyles:u}=O(()=>n.color),{dimensionStyles:d}=t(n),f=p(()=>({collapseIcon:n.collapseIcon,disabled:s.disabled.value,expanded:s.isSelected.value,expandIcon:n.expandIcon,readonly:n.readonly})),m=c(()=>s.isSelected.value?n.collapseIcon:n.expandIcon);return M(()=>a(_(`button`,{class:k([`v-expansion-panel-title`,{"v-expansion-panel-title--active":s.isSelected.value,"v-expansion-panel-title--focusable":n.focusable,"v-expansion-panel-title--static":n.static},l.value,n.class]),style:S([u.value,d.value,n.style]),type:`button`,tabindex:s.disabled.value?-1:void 0,disabled:s.disabled.value,"aria-expanded":s.isSelected.value,onClick:n.readonly?void 0:s.toggle},[_(`span`,{class:`v-expansion-panel-title__overlay`},null),r.default?.(f.value),!n.hideActions&&P(i,{defaults:{VIcon:{icon:m.value}}},{default:()=>[_(`span`,{class:`v-expansion-panel-title__icon`},[r.actions?.(f.value)??P(o,null,null)])]})]),[[e,n.ripple]])),{}}}),H=F({title:String,text:String,bgColor:String,...v(),...g(),...N(),...x(),...B(),...R()},`VExpansionPanel`),U=y()({name:`VExpansionPanel`,props:H(),emits:{"group:selected":e=>!0},setup(e,{slots:t}){let r=E(e,L),{backgroundColorClasses:a,backgroundColorStyles:o}=O(()=>e.bgColor),{elevationClasses:s}=w(e),{roundedClasses:l}=m(e),u=c(()=>r?.disabled.value||e.disabled),d=p(()=>r.group.items.value.reduce((e,t,n)=>(r.group.selected.value.includes(t.id)&&e.push(n),e),[])),f=p(()=>{let e=r.group.items.value.findIndex(e=>e.id===r.id);return!r.isSelected.value&&d.value.some(t=>t-e===1)}),h=p(()=>{let e=r.group.items.value.findIndex(e=>e.id===r.id);return!r.isSelected.value&&d.value.some(t=>t-e===-1)});return n(L,r),M(()=>{let n=!!(t.text||e.text),c=!!(t.title||e.title),d=V.filterProps(e),p=z.filterProps(e);return P(e.tag,{class:k([`v-expansion-panel`,{"v-expansion-panel--active":r.isSelected.value,"v-expansion-panel--before-active":f.value,"v-expansion-panel--after-active":h.value,"v-expansion-panel--disabled":u.value},l.value,a.value,e.class]),style:S([o.value,e.style])},{default:()=>[_(`div`,{class:k([`v-expansion-panel__shadow`,...s.value])},null),P(i,{defaults:{VExpansionPanelTitle:{...d},VExpansionPanelText:{...p}}},{default:()=>[c&&P(V,{key:`title`},{default:()=>[t.title?t.title():e.title]}),n&&P(z,{key:`text`},{default:()=>[t.text?t.text():e.text]}),t.default?.()]})]})}),{groupItem:r}}}),W=[`default`,`accordion`,`inset`,`popout`],G=F({flat:Boolean,...j(),...s(H(),[`bgColor`,`collapseIcon`,`color`,`eager`,`elevation`,`expandIcon`,`focusable`,`hideActions`,`readonly`,`ripple`,`static`]),...N(),...h(),...d(),...x(),variant:{type:String,default:`default`,validator:e=>W.includes(e)}},`VExpansionPanels`),K=y()({name:`VExpansionPanels`,props:G(),emits:{"update:modelValue":e=>!0},setup(e,{slots:t}){let{next:n,prev:r}=C(e,L),{themeClasses:i}=A(e),{roundedClasses:a}=m(e),o=c(()=>e.variant&&`v-expansion-panels--variant-${e.variant}`);return l({VExpansionPanel:{bgColor:c(()=>e.bgColor),collapseIcon:c(()=>e.collapseIcon),color:c(()=>e.color),eager:c(()=>e.eager),elevation:c(()=>e.elevation),expandIcon:c(()=>e.expandIcon),focusable:c(()=>e.focusable),hideActions:c(()=>e.hideActions),readonly:c(()=>e.readonly),ripple:c(()=>e.ripple),static:c(()=>e.static)}}),M(()=>P(e.tag,{class:k([`v-expansion-panels`,{"v-expansion-panels--flat":e.flat,"v-expansion-panels--tile":e.tile},i.value,a.value,o.value,e.class]),style:S(e.style)},{default:()=>[t.default?.({prev:r,next:n})]})),{next:n,prev:r}}});export{z as i,U as n,V as r,K as t};
+1
View File
@@ -0,0 +1 @@
import{An as e,Kn as t,bn as n,br as r,dr as i,ei as a,gn as o,lt as s,mt as c,nn as l,rr as u,xn as d}from"./index-DqWTaECE.js";var f=l.reduce((e,t)=>(e[t]={type:[Boolean,String,Number],default:!1},e),{}),p=l.reduce((e,t)=>{let n=`offset`+a(t);return e[n]={type:[String,Number],default:null},e},{}),m={col:t(f),offset:t(p),order:[`order`,`orderSm`,`orderMd`,`orderLg`,`orderXl`,`orderXxl`]};function h(e){if(typeof e==`string`&&e.includes(`/`)){let[t,n]=e.split(`/`);return{cols:Number(t),size:Number(n)}}return{cols:e}}function g(e,t,n){if(n==null||n===!1)return{};let{cols:r,size:i}=h(n),a=t.replace(e,``).toLowerCase();return e===`offset`?{className:`v-col--offset-${a}-${r}`,variables:[{[`--v-col-offset-base-${a}`]:i}]}:e===`order`?{className:`order-${a}-${r}`}:{className:r===``||r===!0?`v-col--${a}`:`v-col--cols-${a}-${r}`,variables:[{[`--v-col-size-base-${a}`]:i}]}}var _=[`auto`,`start`,`end`,`center`,`baseline`,`stretch`],v=e=>_.includes(e),y=d({cols:{type:[Boolean,String,Number],default:!1},...f,offset:{type:[String,Number],default:null},...p,order:{type:[String,Number],default:null},orderSm:{type:[String,Number],default:null},orderMd:{type:[String,Number],default:null},orderLg:{type:[String,Number],default:null},orderXl:{type:[String,Number],default:null},orderXxl:{type:[String,Number],default:null},alignSelf:{type:String,default:null,validator:v},...n(),...s()},`VCol`),b=o()({name:`VCol`,props:y(),setup(e,{slots:t}){let n=i(()=>h(e.cols).size),a=i(()=>h(e.offset).size),o=i(()=>{let t=[`v-col`],n=[],r;for(r in m)m[r].forEach(i=>{let a=e[i],{className:o,variables:s}=g(r,i,a);o&&t.push(o),s&&n.push(...s)});let{cols:i}=h(e.cols),{cols:a}=h(e.offset);return t.push({[`v-col--cols-${i}`]:i,[`v-col--offset-${a}`]:a,[`order-${e.order}`]:e.order,[`align-self-${e.alignSelf}`]:e.alignSelf}),{classes:t,variables:n}});return()=>r(e.tag,{class:[o.value.classes,e.class],style:[{"--v-col-size-base":n.value},{"--v-col-offset-base":a.value},o.value.variables,e.style]},t.default?.())}}),x=[`start`,`end`,`center`],S=[`space-between`,`space-around`,`space-evenly`],C=[...x,`baseline`,`stretch`],w=e=>C.includes(e),T=[...x,...S],E=e=>T.includes(e),D=[...x,...S,`stretch`],O=e=>D.includes(e),k={align:[`align`,`alignSm`,`alignMd`,`alignLg`,`alignXl`,`alignXxl`],justify:[`justify`,`justifySm`,`justifyMd`,`justifyLg`,`justifyXl`,`justifyXxl`],alignContent:[`alignContent`,`alignContentSm`,`alignContentMd`,`alignContentLg`,`alignContentXl`,`alignContentXxl`]},A={align:`align`,justify:`justify`,alignContent:`align-content`};function j(e,t,n){let r=A[e];if(n!=null){if(t){let n=t.replace(e,``);r+=`-${n}`}return r+=`-${n}`,r.toLowerCase()}}var M=d({dense:Boolean,align:{type:String,default:null,validator:w},alignSm:{type:String,default:null,validator:w},alignMd:{type:String,default:null,validator:w},alignLg:{type:String,default:null,validator:w},alignXl:{type:String,default:null,validator:w},alignXxl:{type:String,default:null,validator:w},justify:{type:String,default:null,validator:E},justifySm:{type:String,default:null,validator:E},justifyMd:{type:String,default:null,validator:E},justifyLg:{type:String,default:null,validator:E},justifyXl:{type:String,default:null,validator:E},justifyXxl:{type:String,default:null,validator:E},alignContent:{type:String,default:null,validator:O},alignContentSm:{type:String,default:null,validator:O},alignContentMd:{type:String,default:null,validator:O},alignContentLg:{type:String,default:null,validator:O},alignContentXl:{type:String,default:null,validator:O},alignContentXxl:{type:String,default:null,validator:O},noGutters:Boolean,gap:[Number,String,Array],size:[Number,String],...n(),...c(),...s()},`VRow`),N=o()({name:`VRow`,props:M(),setup(t,{slots:n}){t.dense&&u(`dense`,`density="comfortable"`);let a=i(()=>{let e=[],n;for(n in k)k[n].forEach(r=>{let i=t[r],a=j(n,r,i);a&&e.push(a)});return e.push({"v-row--no-gutters":t.noGutters,"v-row--density-default":t.density===`default`&&!t.noGutters&&!t.dense,"v-row--density-compact":t.density===`compact`,"v-row--density-comfortable":t.density===`comfortable`||t.dense,[`align-${t.align}`]:t.align,[`justify-${t.justify}`]:t.justify,[`align-content-${t.alignContent}`]:t.alignContent}),e}),o=i(()=>Array.isArray(t.gap)?e(t.gap[0]||0):e(t.gap)),s=i(()=>Array.isArray(t.gap)?e(t.gap[1]||0):o.value);return()=>r(t.tag,{class:[`v-row`,a.value,t.class],style:[{"--v-col-gap-x":o.value,"--v-col-gap-y":s.value,"--v-row-columns":t.size},t.style]},n.default?.())}});export{b as n,N as t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{m as e,p as t}from"./VSelect-gerzyOc7.js";import{A as n,Cr as r,Fn as i,Ir as a,Q as o,U as s,V as c,X as l,Xr as u,Y as d,cr as f,er as p,fr as m,gn as h,ni as g,qr as _,r as v,sn as y,ti as b,un as x,vr as S,xn as C}from"./index-DqWTaECE.js";import{l as w,m as T,u as E}from"./VTextField-BQaSQmP3.js";var D=C({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...E(),...e()},`VSwitch`),O=h()({name:`VSwitch`,inheritAttrs:!1,props:D(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,{attrs:h,slots:C}){let E=y(e,`indeterminate`),D=y(e,`modelValue`),{loaderClasses:O}=s(e),{isFocused:k,focus:A,blur:j}=T(e),M=_(),N=_(),P=p&&window.matchMedia(`(forced-colors: active)`).matches,F=u(()=>typeof e.loading==`string`&&e.loading!==``?e.loading:e.color),I=a(),L=u(()=>e.id||`switch-${I}`);function R(){E.value&&=!1}function z(e){e.stopPropagation(),e.preventDefault(),M.value?.input?.click()}return x(()=>{let[a,s]=i(h),u=w.filterProps(e),p=t.filterProps(e);return S(w,r({ref:N,class:[`v-switch`,{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":E.value},O.value,e.class]},a,u,{modelValue:D.value,"onUpdate:modelValue":e=>D.value=e,id:L.value,focused:k.value,style:e.style}),{...C,default:({id:i,messagesId:a,isDisabled:u,isReadonly:h,isValid:_})=>{let v={model:D,isValid:_};return S(t,r({ref:M},p,{modelValue:D.value,"onUpdate:modelValue":[e=>D.value=e,R],id:i.value,"aria-describedby":a.value,type:`checkbox`,"aria-checked":E.value?`mixed`:void 0,disabled:u.value,readonly:h.value,onFocus:A,onBlur:j},s),{...C,default:({backgroundColorClasses:e,backgroundColorStyles:t})=>m(`div`,{class:b([`v-switch__track`,P?void 0:e.value]),style:g(t.value),onClick:z},[C[`track-true`]&&m(`div`,{key:`prepend`,class:`v-switch__track-true`},[C[`track-true`](v)]),C[`track-false`]&&m(`div`,{key:`append`,class:`v-switch__track-false`},[C[`track-false`](v)])]),input:({inputNode:t,icon:r,backgroundColorClasses:i,backgroundColorStyles:a})=>m(f,null,[t,m(`div`,{class:b([`v-switch__thumb`,{"v-switch__thumb--filled":r||e.loading},e.inset||P?void 0:i.value]),style:g(e.inset?void 0:a.value)},[C.thumb?S(o,{defaults:{VIcon:{icon:r,size:`x-small`}}},{default:()=>[C.thumb({...v,icon:r})]}):S(n,null,{default:()=>[e.loading?S(c,{name:`v-switch`,active:!0,color:_.value===!1?void 0:F.value},{default:e=>C.loader?C.loader(e):S(d,{active:e.isActive,color:e.color,indeterminate:!0,size:`16`,width:`2`},null)}):r&&S(l,{key:String(r),icon:r,size:`x-small`},null)]})])])})}})}),v({},N)}});export{O as t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{Gt as e}from"./index-DqWTaECE.js";function t(t,n){let r=n;if(t instanceof e){let e=t.detail??t.message;r=typeof e==`string`?e:Array.isArray(e)?e.map(e=>{let t=e?.msg||JSON.stringify(e),n=Array.isArray(e.loc)?e.loc.filter(e=>e!==`body`).join(`.`):``;return n?`${n}: ${t}`:t}).join(`; `):e&&typeof e==`object`?JSON.stringify(e):t.message||n}else t instanceof Error&&(r=t.message||n);return r=r.trim(),r||n}export{t};
+1
View File
@@ -0,0 +1 @@
import{p as e,s as t}from"./initMonaco-C6RVWqt8.js";import{_ as n,a as r,c as i,d as a,f as o,g as s,h as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v,v as y}from"./lspLanguageFeatures-DoVa726H.js";var b=120*1e3,x=class{constructor(e){this._defaults=e,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&=(this._worker.dispose(),null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){this._worker&&Date.now()-this._lastUsedTime>b&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||=(this._worker=t({moduleId:`vs/language/css/cssWorker`,createWorker:()=>new Worker(new URL(`/app/assets/css.worker-CvXBzhp8.js`,``+import.meta.url),{type:`module`}),label:this._defaults.languageId,createData:{options:this._defaults.options,languageId:this._defaults.languageId}}),this._worker.getProxy()),this._client}getLanguageServiceWorker(...e){let t;return this._getClient().then(e=>{t=e}).then(t=>{if(this._worker)return this._worker.withSyncedResources(e)}).then(e=>t)}};function S(t){let n=[],s=[],c=new x(t);n.push(c);let g=(...e)=>c.getLanguageServiceWorker(...e);function y(){let{languageId:n,modeConfiguration:c}=t;w(s),c.completionItems&&s.push(e.registerCompletionItemProvider(n,new _(g,[`/`,`-`,`:`]))),c.hovers&&s.push(e.registerHoverProvider(n,new a(g))),c.documentHighlights&&s.push(e.registerDocumentHighlightProvider(n,new p(g))),c.definitions&&s.push(e.registerDefinitionProvider(n,new f(g))),c.references&&s.push(e.registerReferenceProvider(n,new o(g))),c.documentSymbols&&s.push(e.registerDocumentSymbolProvider(n,new u(g))),c.rename&&s.push(e.registerRenameProvider(n,new m(g))),c.colors&&s.push(e.registerColorProvider(n,new l(g))),c.foldingRanges&&s.push(e.registerFoldingRangeProvider(n,new v(g))),c.diagnostics&&s.push(new h(n,g,t.onDidChange)),c.selectionRanges&&s.push(e.registerSelectionRangeProvider(n,new d(g))),c.documentFormattingEdits&&s.push(e.registerDocumentFormattingEditProvider(n,new r(g))),c.documentRangeFormattingEdits&&s.push(e.registerDocumentRangeFormattingEditProvider(n,new i(g)))}return y(),n.push(C(s)),C(n)}function C(e){return{dispose:()=>w(e)}}function w(e){for(;e.length;)e.pop().dispose()}export{_ as CompletionAdapter,f as DefinitionAdapter,h as DiagnosticsAdapter,l as DocumentColorAdapter,r as DocumentFormattingEditProvider,p as DocumentHighlightAdapter,g as DocumentLinkAdapter,i as DocumentRangeFormattingEditProvider,u as DocumentSymbolAdapter,v as FoldingRangeAdapter,a as HoverAdapter,o as ReferenceAdapter,m as RenameAdapter,d as SelectionRangeAdapter,x as WorkerManager,c as fromPosition,s as fromRange,S as setupMode,n as toRange,y as toTextEdit};
@@ -0,0 +1,2 @@
import{At as e,Dr as t,Nt as n}from"./index-DqWTaECE.js";import{t as r}from"./usePageAutoRefresh-D-Rydzn4.js";var i=8e3,a=3e4;function o(o,s){let{runningItems:c}=n();r(async()=>{s?.enabled&&!s.enabled()||await o(!0)},()=>c.value.length>0?i:a);let l=e(()=>{s?.enabled&&!s.enabled()||o(!1)});t(()=>{l()})}function s(e){return e.replace(/\b\d{1,3}(?:\.\d{1,3}){3}\b/g,`<ip>`).replace(/:\d{2,5}\b/g,`:<port>`).replace(/\/[^\s'"]+/g,`/<path>`).replace(/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,`<uuid>`).replace(/\s+/g,` `).trim()}function c(e){let t=e.trim();return!t||t===``?`未知错误`:s(t.split(`
`)[0]?.trim()||t).slice(0,200)||`未知错误`}function l(e){let t=new Map;for(let n of e){if(!n.failed)continue;let e=c(n.summary),r=t.get(e);r?r.push(n):t.set(e,[n])}return[...t.entries()].map(([e,t])=>({errorKey:e,rows:t.sort((e,t)=>e.serverName.localeCompare(t.serverName,`zh`)),count:t.length})).sort((e,t)=>t.count-e.count||e.errorKey.localeCompare(t.errorKey,`zh`))}export{o as n,l as t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{p as e}from"./initMonaco-C6RVWqt8.js";var t=[`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`keygen`,`link`,`menuitem`,`meta`,`param`,`source`,`track`,`wbr`],n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:[`<!--`,`-->`]},brackets:[[`<!--`,`-->`],[`<`,`>`],[`{`,`}`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`"`,close:`"`},{open:`'`,close:`'`},{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`<`,close:`>`}],onEnterRules:[{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:e.IndentAction.IndentOutdent}},{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),action:{indentAction:e.IndentAction.Indent}}],folding:{markers:{start:RegExp(`^\\s*<!--\\s*#region\\b.*-->`),end:RegExp(`^\\s*<!--\\s*#endregion\\b.*-->`)}}},r={defaultToken:``,tokenPostfix:`.html`,ignoreCase:!0,tokenizer:{root:[[/<!DOCTYPE/,`metatag`,`@doctype`],[/<!--/,`comment`,`@comment`],[/(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/,[`delimiter`,`tag`,``,`delimiter`]],[/(<)(script)/,[`delimiter`,{token:`tag`,next:`@script`}]],[/(<)(style)/,[`delimiter`,{token:`tag`,next:`@style`}]],[/(<)((?:[\w\-]+:)?[\w\-]+)/,[`delimiter`,{token:`tag`,next:`@otherTag`}]],[/(<\/)((?:[\w\-]+:)?[\w\-]+)/,[`delimiter`,{token:`tag`,next:`@otherTag`}]],[/</,`delimiter`],[/[^<]+/]],doctype:[[/[^>]+/,`metatag.content`],[/>/,`metatag`,`@pop`]],comment:[[/-->/,`comment`,`@pop`],[/[^-]+/,`comment.content`],[/./,`comment.content`]],otherTag:[[/\/?>/,`delimiter`,`@pop`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/]],script:[[/type/,`attribute.name`,`@scriptAfterType`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/>/,{token:`delimiter`,next:`@scriptEmbedded`,nextEmbedded:`text/javascript`}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,[`delimiter`,`tag`,{token:`delimiter`,next:`@pop`}]]],scriptAfterType:[[/=/,`delimiter`,`@scriptAfterTypeEquals`],[/>/,{token:`delimiter`,next:`@scriptEmbedded`,nextEmbedded:`text/javascript`}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:`@rematch`,next:`@pop`}]],scriptAfterTypeEquals:[[/"module"/,{token:`attribute.value`,switchTo:`@scriptWithCustomType.text/javascript`}],[/'module'/,{token:`attribute.value`,switchTo:`@scriptWithCustomType.text/javascript`}],[/"([^"]*)"/,{token:`attribute.value`,switchTo:`@scriptWithCustomType.$1`}],[/'([^']*)'/,{token:`attribute.value`,switchTo:`@scriptWithCustomType.$1`}],[/>/,{token:`delimiter`,next:`@scriptEmbedded`,nextEmbedded:`text/javascript`}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:`@rematch`,next:`@pop`}]],scriptWithCustomType:[[/>/,{token:`delimiter`,next:`@scriptEmbedded.$S2`,nextEmbedded:`$S2`}],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:`@rematch`,next:`@pop`}]],scriptEmbedded:[[/<\/script/,{token:`@rematch`,next:`@pop`,nextEmbedded:`@pop`}],[/[^<]+/,``]],style:[[/type/,`attribute.name`,`@styleAfterType`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/>/,{token:`delimiter`,next:`@styleEmbedded`,nextEmbedded:`text/css`}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,[`delimiter`,`tag`,{token:`delimiter`,next:`@pop`}]]],styleAfterType:[[/=/,`delimiter`,`@styleAfterTypeEquals`],[/>/,{token:`delimiter`,next:`@styleEmbedded`,nextEmbedded:`text/css`}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:`@rematch`,next:`@pop`}]],styleAfterTypeEquals:[[/"([^"]*)"/,{token:`attribute.value`,switchTo:`@styleWithCustomType.$1`}],[/'([^']*)'/,{token:`attribute.value`,switchTo:`@styleWithCustomType.$1`}],[/>/,{token:`delimiter`,next:`@styleEmbedded`,nextEmbedded:`text/css`}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:`@rematch`,next:`@pop`}]],styleWithCustomType:[[/>/,{token:`delimiter`,next:`@styleEmbedded.$S2`,nextEmbedded:`$S2`}],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:`@rematch`,next:`@pop`}]],styleEmbedded:[[/<\/style/,{token:`@rematch`,next:`@pop`,nextEmbedded:`@pop`}],[/[^<]+/,``]]}};export{n as conf,r as language};
+1
View File
@@ -0,0 +1 @@
import{p as e,s as t}from"./initMonaco-C6RVWqt8.js";import{_ as n,a as r,c as i,d as a,f as o,g as s,h as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v,v as y}from"./lspLanguageFeatures-DoVa726H.js";var b=120*1e3,x=class{constructor(e){this._defaults=e,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&=(this._worker.dispose(),null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){this._worker&&Date.now()-this._lastUsedTime>b&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||=(this._worker=t({moduleId:`vs/language/html/htmlWorker`,createWorker:()=>new Worker(new URL(`/app/assets/html.worker-BO6WuOEO.js`,``+import.meta.url),{type:`module`}),createData:{languageSettings:this._defaults.options,languageId:this._defaults.languageId},label:this._defaults.languageId}),this._worker.getProxy()),this._client}getLanguageServiceWorker(...e){let t;return this._getClient().then(e=>{t=e}).then(t=>{if(this._worker)return this._worker.withSyncedResources(e)}).then(e=>t)}},S=class extends _{constructor(e){super(e,[`.`,`:`,`<`,`"`,`=`,`/`])}};function C(t){let n=new x(t),o=(...e)=>n.getLanguageServiceWorker(...e),s=t.languageId;e.registerCompletionItemProvider(s,new S(o)),e.registerHoverProvider(s,new a(o)),e.registerDocumentHighlightProvider(s,new p(o)),e.registerLinkProvider(s,new g(o)),e.registerFoldingRangeProvider(s,new v(o)),e.registerDocumentSymbolProvider(s,new u(o)),e.registerSelectionRangeProvider(s,new d(o)),e.registerRenameProvider(s,new m(o)),s===`html`&&(e.registerDocumentFormattingEditProvider(s,new r(o)),e.registerDocumentRangeFormattingEditProvider(s,new i(o)))}function w(t){let n=[],o=[],s=new x(t);n.push(s);let c=(...e)=>s.getLanguageServiceWorker(...e);function l(){let{languageId:n,modeConfiguration:s}=t;E(o),s.completionItems&&o.push(e.registerCompletionItemProvider(n,new S(c))),s.hovers&&o.push(e.registerHoverProvider(n,new a(c))),s.documentHighlights&&o.push(e.registerDocumentHighlightProvider(n,new p(c))),s.links&&o.push(e.registerLinkProvider(n,new g(c))),s.documentSymbols&&o.push(e.registerDocumentSymbolProvider(n,new u(c))),s.rename&&o.push(e.registerRenameProvider(n,new m(c))),s.foldingRanges&&o.push(e.registerFoldingRangeProvider(n,new v(c))),s.selectionRanges&&o.push(e.registerSelectionRangeProvider(n,new d(c))),s.documentFormattingEdits&&o.push(e.registerDocumentFormattingEditProvider(n,new r(c))),s.documentRangeFormattingEdits&&o.push(e.registerDocumentRangeFormattingEditProvider(n,new i(c)))}return l(),n.push(T(o)),T(n)}function T(e){return{dispose:()=>E(e)}}function E(e){for(;e.length;)e.pop().dispose()}export{_ as CompletionAdapter,f as DefinitionAdapter,h as DiagnosticsAdapter,l as DocumentColorAdapter,r as DocumentFormattingEditProvider,p as DocumentHighlightAdapter,g as DocumentLinkAdapter,i as DocumentRangeFormattingEditProvider,u as DocumentSymbolAdapter,v as FoldingRangeAdapter,a as HoverAdapter,o as ReferenceAdapter,m as RenameAdapter,d as SelectionRangeAdapter,x as WorkerManager,c as fromPosition,s as fromRange,w as setupMode,C as setupMode1,n as toRange,y as toTextEdit};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{conf as e,language as t}from"./typescript-BQUEBhuw.js";var n=e,r={defaultToken:`invalid`,tokenPostfix:`.js`,keywords:`break.case.catch.class.continue.const.constructor.debugger.default.delete.do.else.export.extends.false.finally.for.from.function.get.if.import.in.instanceof.let.new.null.return.set.static.super.switch.symbol.this.throw.true.try.typeof.undefined.var.void.while.with.yield.async.await.of`.split(`.`),typeKeywords:[],operators:t.operators,symbols:t.symbols,escapes:t.escapes,digits:t.digits,octaldigits:t.octaldigits,binarydigits:t.binarydigits,hexdigits:t.hexdigits,regexpctl:t.regexpctl,regexpesc:t.regexpesc,tokenizer:t.tokenizer};export{n as conf,r as language};
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{p as e}from"./initMonaco-C6RVWqt8.js";var t=[`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`keygen`,`link`,`menuitem`,`meta`,`param`,`source`,`track`,`wbr`],n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,brackets:[[`<!--`,`-->`],[`<`,`>`],[`{{`,`}}`],[`{%`,`%}`],[`{`,`}`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`%`,close:`%`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`<`,close:`>`},{open:`"`,close:`"`},{open:`'`,close:`'`}],onEnterRules:[{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:e.IndentAction.IndentOutdent}},{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),action:{indentAction:e.IndentAction.Indent}}]},r={defaultToken:``,tokenPostfix:``,builtinTags:`if.else.elseif.endif.render.assign.capture.endcapture.case.endcase.comment.endcomment.cycle.decrement.for.endfor.include.increment.layout.raw.endraw.render.tablerow.endtablerow.unless.endunless`.split(`.`),builtinFilters:`abs.append.at_least.at_most.capitalize.ceil.compact.date.default.divided_by.downcase.escape.escape_once.first.floor.join.json.last.lstrip.map.minus.modulo.newline_to_br.plus.prepend.remove.remove_first.replace.replace_first.reverse.round.rstrip.size.slice.sort.sort_natural.split.strip.strip_html.strip_newlines.times.truncate.truncatewords.uniq.upcase.url_decode.url_encode.where`.split(`.`),constants:[`true`,`false`],operators:[`==`,`!=`,`>`,`<`,`>=`,`<=`],symbol:/[=><!]+/,identifier:/[a-zA-Z_][\w]*/,tokenizer:{root:[[/\{\%\s*comment\s*\%\}/,`comment.start.liquid`,`@comment`],[/\{\{/,{token:`@rematch`,switchTo:`@liquidState.root`}],[/\{\%/,{token:`@rematch`,switchTo:`@liquidState.root`}],[/(<)([\w\-]+)(\/>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/(<)([:\w]+)/,[`delimiter.html`,{token:`tag.html`,next:`@otherTag`}]],[/(<\/)([\w\-]+)/,[`delimiter.html`,{token:`tag.html`,next:`@otherTag`}]],[/</,`delimiter.html`],[/\{/,`delimiter.html`],[/[^<{]+/]],comment:[[/\{\%\s*endcomment\s*\%\}/,`comment.end.liquid`,`@pop`],[/./,`comment.content.liquid`]],otherTag:[[/\{\{/,{token:`@rematch`,switchTo:`@liquidState.otherTag`}],[/\{\%/,{token:`@rematch`,switchTo:`@liquidState.otherTag`}],[/\/?>/,`delimiter.html`,`@pop`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/]],liquidState:[[/\{\{/,`delimiter.output.liquid`],[/\}\}/,{token:`delimiter.output.liquid`,switchTo:`@$S2.$S3`}],[/\{\%/,`delimiter.tag.liquid`],[/raw\s*\%\}/,`delimiter.tag.liquid`,`@liquidRaw`],[/\%\}/,{token:`delimiter.tag.liquid`,switchTo:`@$S2.$S3`}],{include:`liquidRoot`}],liquidRaw:[[/^(?!\{\%\s*endraw\s*\%\}).+/],[/\{\%/,`delimiter.tag.liquid`],[/@identifier/],[/\%\}/,{token:`delimiter.tag.liquid`,next:`@root`}]],liquidRoot:[[/\d+(\.\d+)?/,`number.liquid`],[/"[^"]*"/,`string.liquid`],[/'[^']*'/,`string.liquid`],[/\s+/],[/@symbol/,{cases:{"@operators":`operator.liquid`,"@default":``}}],[/\./],[/@identifier/,{cases:{"@constants":`keyword.liquid`,"@builtinFilters":`predefined.liquid`,"@builtinTags":`predefined.liquid`,"@default":`variable.liquid`}}],[/[^}|%]/,`variable.liquid`]]}};export{n as conf,r as language};
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{p as e}from"./initMonaco-C6RVWqt8.js";var t={comments:{blockComment:[`{/*`,`*/}`]},brackets:[[`{`,`}`]],autoClosingPairs:[{open:`"`,close:`"`},{open:`'`,close:`'`},{open:``,close:``},{open:``,close:``},{open:"`",close:"`"},{open:`{`,close:`}`},{open:`(`,close:`)`},{open:`_`,close:`_`},{open:`**`,close:`**`},{open:`<`,close:`>`}],onEnterRules:[{beforeText:/^\s*- .+/,action:{indentAction:e.IndentAction.None,appendText:`- `}},{beforeText:/^\s*\+ .+/,action:{indentAction:e.IndentAction.None,appendText:`+ `}},{beforeText:/^\s*\* .+/,action:{indentAction:e.IndentAction.None,appendText:`* `}},{beforeText:/^> /,action:{indentAction:e.IndentAction.None,appendText:`> `}},{beforeText:/<\w+/,action:{indentAction:e.IndentAction.Indent}},{beforeText:/\s+>\s*$/,action:{indentAction:e.IndentAction.Indent}},{beforeText:/<\/\w+>/,action:{indentAction:e.IndentAction.Outdent}},...Array.from({length:100},(t,n)=>({beforeText:RegExp(`^${n}\\. .+`),action:{indentAction:e.IndentAction.None,appendText:`${n+1}. `}}))]},n={defaultToken:``,tokenPostfix:`.mdx`,control:/[!#()*+.[\\\]_`{}\-]/,escapes:/\\@control/,tokenizer:{root:[[/^---$/,{token:`meta.content`,next:`@frontmatter`,nextEmbedded:`yaml`}],[/^\s*import/,{token:`keyword`,next:`@import`,nextEmbedded:`js`}],[/^\s*export/,{token:`keyword`,next:`@export`,nextEmbedded:`js`}],[/<\w+/,{token:`type.identifier`,next:`@jsx`}],[/<\/?\w+>/,`type.identifier`],[/^(\s*)(>*\s*)(#{1,6}\s)/,[{token:`white`},{token:`comment`},{token:`keyword`,next:`@header`}]],[/^(\s*)(>*\s*)([*+-])(\s+)/,[`white`,`comment`,`keyword`,`white`]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,[`white`,`comment`,`number`,`white`]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,[`white`,`comment`,`number`,`white`]],[/^(\s*)(>*\s*)(-{3,}|\*{3,}|_{3,})$/,[`white`,`comment`,`keyword`]],[/`{3,}(\s.*)?$/,{token:`string`,next:`@codeblock_backtick`}],[/~{3,}(\s.*)?$/,{token:`string`,next:`@codeblock_tilde`}],[/`{3,}(\S+).*$/,{token:`string`,next:`@codeblock_highlight_backtick`,nextEmbedded:`$1`}],[/~{3,}(\S+).*$/,{token:`string`,next:`@codeblock_highlight_tilde`,nextEmbedded:`$1`}],[/^(\s*)(-{4,})$/,[`white`,`comment`]],[/^(\s*)(>+)/,[`white`,`comment`]],{include:`content`}],content:[[/(\[)(.+)(]\()(.+)(\s+".*")(\))/,[``,`string.link`,``,`type.identifier`,`string.link`,``]],[/(\[)(.+)(]\()(.+)(\))/,[``,`type.identifier`,``,`string.link`,``]],[/(\[)(.+)(]\[)(.+)(])/,[``,`type.identifier`,``,`type.identifier`,``]],[/(\[)(.+)(]:\s+)(\S*)/,[``,`type.identifier`,``,`string.link`]],[/(\[)(.+)(])/,[``,`type.identifier`,``]],[/`.*`/,`variable.source`],[/_/,{token:`emphasis`,next:`@emphasis_underscore`}],[/\*(?!\*)/,{token:`emphasis`,next:`@emphasis_asterisk`}],[/\*\*/,{token:`strong`,next:`@strong`}],[/{/,{token:`delimiter.bracket`,next:`@expression`,nextEmbedded:`js`}]],import:[[/'\s*(;|$)/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}]],expression:[[/{/,{token:`delimiter.bracket`,next:`@expression`}],[/}/,{token:`delimiter.bracket`,next:`@pop`,nextEmbedded:`@pop`}]],export:[[/^\s*$/,{token:`delimiter.bracket`,next:`@pop`,nextEmbedded:`@pop`}]],jsx:[[/\s+/,``],[/(\w+)(=)("(?:[^"\\]|\\.)*")/,[`attribute.name`,`operator`,`string`]],[/(\w+)(=)('(?:[^'\\]|\\.)*')/,[`attribute.name`,`operator`,`string`]],[/(\w+(?=\s|>|={|$))/,[`attribute.name`]],[/={/,{token:`delimiter.bracket`,next:`@expression`,nextEmbedded:`js`}],[/>/,{token:`type.identifier`,next:`@pop`}]],header:[[/.$/,{token:`keyword`,next:`@pop`}],{include:`content`},[/./,{token:`keyword`}]],strong:[[/\*\*/,{token:`strong`,next:`@pop`}],{include:`content`},[/./,{token:`strong`}]],emphasis_underscore:[[/_/,{token:`emphasis`,next:`@pop`}],{include:`content`},[/./,{token:`emphasis`}]],emphasis_asterisk:[[/\*(?!\*)/,{token:`emphasis`,next:`@pop`}],{include:`content`},[/./,{token:`emphasis`}]],frontmatter:[[/^---$/,{token:`meta.content`,nextEmbedded:`@pop`,next:`@pop`}]],codeblock_highlight_backtick:[[/\s*`{3,}\s*$/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}],[/.*$/,`variable.source`]],codeblock_highlight_tilde:[[/\s*~{3,}\s*$/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}],[/.*$/,`variable.source`]],codeblock_backtick:[[/\s*`{3,}\s*$/,{token:`string`,next:`@pop`}],[/.*$/,`variable.source`]],codeblock_tilde:[[/\s*~{3,}\s*$/,{token:`string`,next:`@pop`}],[/.*$/,`variable.source`]]}};export{t as conf,n as language};
@@ -0,0 +1 @@
import{Jt as e}from"./index-DqWTaECE.js";var t=200;async function n(n,r,i,a){if(a!==-1){let t=await e.get(n,{...r,page:i,per_page:a});return{items:t.items||[],total:t.total??0}}let o=[],s=1,c=1,l=0;do{let i=await e.get(n,{...r,page:s,per_page:t});o.push(...i.items||[]),l=i.total??o.length,c=i.pages??1,s+=1}while(s<=c);return{items:o,total:l}}async function r(e,n,r){if(r!==-1)return e(r,(n-1)*r);let i=[],a=0,o=0;do{let n=await e(t,a);if(i.push(...n.items||[]),o=n.total??i.length,!n.items.length||i.length>=o)break;a+=t}while(!0);return{items:i,total:o}}export{n,r as t};
+1
View File
@@ -0,0 +1 @@
import{p as e}from"./initMonaco-C6RVWqt8.js";var t={comments:{lineComment:`#`,blockComment:[`'''`,`'''`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`,notIn:[`string`]},{open:`'`,close:`'`,notIn:[`string`,`comment`]}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],onEnterRules:[{beforeText:RegExp(`^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async|match|case).*?:\\s*$`),action:{indentAction:e.IndentAction.Indent}}],folding:{offSide:!0,markers:{start:RegExp(`^\\s*#region\\b`),end:RegExp(`^\\s*#endregion\\b`)}}},n={defaultToken:``,tokenPostfix:`.python`,keywords:`False.None.True._.and.as.assert.async.await.break.case.class.continue.def.del.elif.else.except.exec.finally.for.from.global.if.import.in.is.lambda.match.nonlocal.not.or.pass.print.raise.return.try.type.while.with.yield.int.float.long.complex.hex.abs.all.any.apply.basestring.bin.bool.buffer.bytearray.callable.chr.classmethod.cmp.coerce.compile.complex.delattr.dict.dir.divmod.enumerate.eval.execfile.file.filter.format.frozenset.getattr.globals.hasattr.hash.help.id.input.intern.isinstance.issubclass.iter.len.locals.list.map.max.memoryview.min.next.object.oct.open.ord.pow.print.property.reversed.range.raw_input.reduce.reload.repr.reversed.round.self.set.setattr.slice.sorted.staticmethod.str.sum.super.tuple.type.unichr.unicode.vars.xrange.zip.__dict__.__methods__.__members__.__class__.__bases__.__name__.__mro__.__subclasses__.__init__.__import__`.split(`.`),brackets:[{open:`{`,close:`}`,token:`delimiter.curly`},{open:`[`,close:`]`,token:`delimiter.bracket`},{open:`(`,close:`)`,token:`delimiter.parenthesis`}],tokenizer:{root:[{include:`@whitespace`},{include:`@numbers`},{include:`@strings`},[/[,:;]/,`delimiter`],[/[{}\[\]()]/,`@brackets`],[/@[a-zA-Z_]\w*/,`tag`],[/[a-zA-Z_]\w*/,{cases:{"@keywords":`keyword`,"@default":`identifier`}}]],whitespace:[[/\s+/,`white`],[/(^#.*$)/,`comment`],[/'''/,`string`,`@endDocString`],[/"""/,`string`,`@endDblDocString`]],endDocString:[[/[^']+/,`string`],[/\\'/,`string`],[/'''/,`string`,`@popall`],[/'/,`string`]],endDblDocString:[[/[^"]+/,`string`],[/\\"/,`string`],[/"""/,`string`,`@popall`],[/"/,`string`]],numbers:[[/-?0x([abcdef]|[ABCDEF]|\d)+[lL]?/,`number.hex`],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?[jJ]?[lL]?/,`number`]],strings:[[/'$/,`string.escape`,`@popall`],[/f'{1,3}/,`string.escape`,`@fStringBody`],[/'/,`string.escape`,`@stringBody`],[/"$/,`string.escape`,`@popall`],[/f"{1,3}/,`string.escape`,`@fDblStringBody`],[/"/,`string.escape`,`@dblStringBody`]],fStringBody:[[/[^\\'\{\}]+$/,`string`,`@popall`],[/[^\\'\{\}]+/,`string`],[/\{[^\}':!=]+/,`identifier`,`@fStringDetail`],[/\\./,`string`],[/'/,`string.escape`,`@popall`],[/\\$/,`string`]],stringBody:[[/[^\\']+$/,`string`,`@popall`],[/[^\\']+/,`string`],[/\\./,`string`],[/'/,`string.escape`,`@popall`],[/\\$/,`string`]],fDblStringBody:[[/[^\\"\{\}]+$/,`string`,`@popall`],[/[^\\"\{\}]+/,`string`],[/\{[^\}':!=]+/,`identifier`,`@fStringDetail`],[/\\./,`string`],[/"/,`string.escape`,`@popall`],[/\\$/,`string`]],dblStringBody:[[/[^\\"]+$/,`string`,`@popall`],[/[^\\"]+/,`string`],[/\\./,`string`],[/"/,`string.escape`,`@popall`],[/\\$/,`string`]],fStringDetail:[[/[:][^}]+/,`string`],[/[!][ars]/,`string`],[/=/,`string`],[/\}/,`identifier`,`@pop`]]}};export{t as conf,n as language};
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{Ht as e}from"./index-DqWTaECE.js";export{e as default};
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{p as e}from"./initMonaco-C6RVWqt8.js";var t={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],onEnterRules:[{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:e.IndentAction.IndentOutdent,appendText:` * `}},{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:e.IndentAction.None,appendText:` * `}},{beforeText:/^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:e.IndentAction.None,appendText:`* `}},{beforeText:/^(\t|(\ \ ))*\ \*\/\s*$/,action:{indentAction:e.IndentAction.None,removeText:1}}],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`,notIn:[`string`]},{open:`'`,close:`'`,notIn:[`string`,`comment`]},{open:"`",close:"`",notIn:[`string`,`comment`]},{open:`/**`,close:` */`,notIn:[`string`]}],folding:{markers:{start:RegExp(`^\\s*//\\s*#?region\\b`),end:RegExp(`^\\s*//\\s*#?endregion\\b`)}}},n={defaultToken:`invalid`,tokenPostfix:`.ts`,keywords:`abstract.any.as.asserts.bigint.boolean.break.case.catch.class.continue.const.constructor.debugger.declare.default.delete.do.else.enum.export.extends.false.finally.for.from.function.get.if.implements.import.in.infer.instanceof.interface.is.keyof.let.module.namespace.never.new.null.number.object.out.package.private.protected.public.override.readonly.require.global.return.satisfies.set.static.string.super.switch.symbol.this.throw.true.try.type.typeof.undefined.unique.unknown.var.void.while.with.yield.async.await.of`.split(`.`),operators:`<=.>=.==.!=.===.!==.=>.+.-.**.*./.%.++.--.<<.</.>>.>>>.&.|.^.!.~.&&.||.??.?.:.=.+=.-=.*=.**=./=.%=.<<=.>>=.>>>=.&=.|=.^=.@`.split(`.`),symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,`delimiter.bracket`],{include:`common`}],common:[[/#?[a-z_$][\w$]*/,{cases:{"@keywords":`keyword`,"@default":`identifier`}}],[/[A-Z][\w\$]*/,`type.identifier`],{include:`@whitespace`},[/\/(?=([^\\\/]|\\.)+\/([dgimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:`regexp`,bracket:`@open`,next:`@regexp`}],[/[()\[\]]/,`@brackets`],[/[<>](?!@symbols)/,`@brackets`],[/!(?=([^=]|$))/,`delimiter`],[/@symbols/,{cases:{"@operators":`delimiter`,"@default":``}}],[/(@digits)[eE]([\-+]?(@digits))?/,`number.float`],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,`number.float`],[/0[xX](@hexdigits)n?/,`number.hex`],[/0[oO]?(@octaldigits)n?/,`number.octal`],[/0[bB](@binarydigits)n?/,`number.binary`],[/(@digits)n?/,`number`],[/[;,.]/,`delimiter`],[/"([^"\\]|\\.)*$/,`string.invalid`],[/'([^'\\]|\\.)*$/,`string.invalid`],[/"/,`string`,`@string_double`],[/'/,`string`,`@string_single`],[/`/,`string`,`@string_backtick`]],whitespace:[[/[ \t\r\n]+/,``],[/\/\*\*(?!\/)/,`comment.doc`,`@jsdoc`],[/\/\*/,`comment`,`@comment`],[/\/\/.*$/,`comment`]],comment:[[/[^\/*]+/,`comment`],[/\*\//,`comment`,`@pop`],[/[\/*]/,`comment`]],jsdoc:[[/[^\/*]+/,`comment.doc`],[/\*\//,`comment.doc`,`@pop`],[/[\/*]/,`comment.doc`]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,[`regexp.escape.control`,`regexp.escape.control`,`regexp.escape.control`]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,[`regexp.escape.control`,{token:`regexp.escape.control`,next:`@regexrange`}]],[/(\()(\?:|\?=|\?!)/,[`regexp.escape.control`,`regexp.escape.control`]],[/[()]/,`regexp.escape.control`],[/@regexpctl/,`regexp.escape.control`],[/[^\\\/]/,`regexp`],[/@regexpesc/,`regexp.escape`],[/\\\./,`regexp.invalid`],[/(\/)([dgimsuy]*)/,[{token:`regexp`,bracket:`@close`,next:`@pop`},`keyword.other`]]],regexrange:[[/-/,`regexp.escape.control`],[/\^/,`regexp.invalid`],[/@regexpesc/,`regexp.escape`],[/[^\]]/,`regexp`],[/\]/,{token:`regexp.escape.control`,next:`@pop`,bracket:`@close`}]],string_double:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],string_single:[[/[^\\']+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/'/,`string`,`@pop`]],string_backtick:[[/\$\{/,{token:`delimiter.bracket`,next:`@bracketCounting`}],[/[^\\`$]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/`/,`string`,`@pop`]],bracketCounting:[[/\{/,`delimiter.bracket`,`@bracketCounting`],[/\}/,`delimiter.bracket`,`@pop`],{include:`common`}]}};export{t as conf,n as language};
@@ -0,0 +1 @@
import{Tr as e,kr as t,qr as n}from"./index-DqWTaECE.js";function r(r){let i=n(!1);t(async()=>{await r(!1),i.value=!0}),e(()=>{i.value&&r(!0)})}export{r as t};
@@ -0,0 +1 @@
import{Dr as e,kr as t}from"./index-DqWTaECE.js";function n(n,r,i={}){let{pauseWhenHidden:a=!0,immediate:o=!1}=i,s=null,c=!1,l=!1;function u(){let e=typeof r==`function`?r():r;return Math.max(1e3,e)}function d(){s&&=(clearTimeout(s),null)}function f(){d(),!c&&(s=setTimeout(()=>{p()},u()))}async function p(){if(!c){if(a&&document.visibilityState===`hidden`){f();return}if(l){f();return}l=!0;try{await n()}finally{l=!1,f()}}}function m(){c||!a||document.visibilityState===`visible`&&p()}return t(()=>{o?p():f(),a&&document.addEventListener(`visibilitychange`,m)}),e(()=>{c=!0,d(),a&&document.removeEventListener(`visibilitychange`,m)}),{refresh:p,stop:()=>{c=!0,d()}}}export{n as t};
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
import{Jt as e,qr as t,vt as n,yt as r}from"./index-DqWTaECE.js";function i(e){return e===`uncategorized`?`未分类`:e}function a(){let a=t([]),o=t(!1),s=t(0);async function c(t=!1){t||(o.value=!0);try{let{data:t}=await r(n.serverCategories,()=>e.get(`/servers/categories`)),o=t.categories||[];s.value=o.reduce((e,t)=>e+(t.count||0),0),a.value=o.map(e=>({name:e.name,label:i(e.name),count:e.count})).sort((e,t)=>e.name===`uncategorized`?1:t.name===`uncategorized`?-1:e.label.localeCompare(t.label,`zh`))}catch{a.value=[],s.value=0}finally{t||(o.value=!1)}}return{categories:a,loading:o,totalCount:s,loadCategories:c}}export{a as n,i as t};
+1
View File
@@ -0,0 +1 @@
import{_ as e}from"./VSelect-gerzyOc7.js";import{Jt as t,qr as n}from"./index-DqWTaECE.js";import{t as r}from"./apiError-CquSm76M.js";function i(){let i=n([]),a=n(!1),o=e();async function s(e){a.value=!0;try{let n=e?.perPage??200;if(!e?.all){i.value=(await t.getList(`/servers/`,{per_page:n})).items;return}let r=[],a=1,o=1;do{let e=await t.get(`/servers/`,{page:a,per_page:n});r.push(...e.items||[]),o=e.pages??1,a+=1}while(a<=o);i.value=r}catch(e){i.value=[],o(r(e,`加载服务器列表失败`),`error`)}finally{a.value=!1}}return{servers:i,loading:a,loadServers:s}}export{i as t};
@@ -0,0 +1,2 @@
import{Fr as e,Jt as t,dr as n,hr as r,jr as i,mr as a,pr as o,qr as s,ti as c,wr as l,yr as u}from"./index-DqWTaECE.js";import{t as d}from"./_plugin-vue_export-helper-BDNMzG2s.js";var f=new Set(`if.then.else.elif.fi.for.while.do.done.case.esac.in.function.return.break.continue.select.until.cd.ls.grep.egrep.fgrep.find.cat.chmod.chown.docker.podman.kubectl.apt.apt-get.yum.dnf.apk.pip.pip3.npm.npx.ssh.scp.rsync.curl.wget.tar.gzip.gunzip.kill.ps.top.htop.nano.vim.vi.journalctl.systemctl.service.supervisorctl.crontab.nginx.df.du.free.mount.uname.hostname.whoami.id.pwd.head.tail.wc.sort.uniq.awk.sed.cut.tr.xargs.tee.netstat.ss.ip.ping.dig.git.make.nohup.timeout.watch`.split(`.`)),p=new Set([`echo`,`printf`,`test`,`read`,`pushd`,`popd`,`exit`,`set`,`unset`,`export`,`source`,`alias`,`type`,`command`,`hash`,`help`,`history`]);function m(e){return e===`sudo`?`sudo`:f.has(e)?`keyword`:p.has(e)?`builtin`:/^[/~]/.test(e)||e.startsWith(`./`)||e.startsWith(`../`)?`path`:/^\d+(?:\.\d+)?$/.test(e)?`number`:`text`}function h(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===`#`){let r=n+1;for(;r<e.length&&e[r]!==`
`;)r++;t.push({type:`comment`,value:e.slice(n,r)}),n=r;continue}if(r===`'`||r===`"`){let i=r,a=n+1;for(;a<e.length;){if(e[a]===`\\`&&i===`"`){a+=2;continue}if(e[a]===i){a++;break}a++}t.push({type:`string`,value:e.slice(n,a)}),n=a;continue}if(r==="`"){let r=n+1;for(;r<e.length&&e[r]!=="`";)r++;r<e.length&&r++,t.push({type:`backtick`,value:e.slice(n,r)}),n=r;continue}if(r===`$`){let r=n+1;if(e[r]===`{`){for(;r<e.length&&e[r]!==`}`;)r++;r<e.length&&r++}else if(e[r]===`(`)r++;else for(;r<e.length&&/[\w]/.test(e[r]);)r++;t.push({type:`variable`,value:e.slice(n,r)}),n=r;continue}if(r===`|`||r===`&`||r===`;`){let r=n;e[r]===`|`&&e[r+1]===`|`||e[r]===`&`&&e[r+1]===`&`?r+=2:r+=1;let i=e.slice(n,r);t.push({type:i===`|`||i===`||`?`pipe`:`operator`,value:i}),n=r;continue}if(r===`>`||r===`<`){let r=n;e[r]===`>`&&e[r+1]===`>`||e[r]===`<`&&e[r+1]===`<`?r+=2:r+=1,e[r]===`&`&&r++,t.push({type:`redirect`,value:e.slice(n,r)}),n=r;continue}if(/\s/.test(r)){let r=n;for(;r<e.length&&/\s/.test(e[r]);)r++;t.push({type:`text`,value:e.slice(n,r)}),n=r;continue}if(r===`-`&&e[n+1]===`-`){let r=n+2;for(;r<e.length&&/[\w-]/.test(e[r]);)r++;t.push({type:`flag`,value:e.slice(n,r)}),n=r;continue}if(r===`-`&&/[a-zA-Z]/.test(e[n+1]||``)){let r=n+1;for(;r<e.length&&/[a-zA-Z]/.test(e[r]);)r++;t.push({type:`flag`,value:e.slice(n,r)}),n=r;continue}let i=n;for(;i<e.length&&!/[\s#"'`$|;&<>]/.test(e[i]);)i++;let a=e.slice(n,i);t.push({type:m(a),value:a}),n=i}return t}function g(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}var _={keyword:`sh-keyword`,builtin:`sh-builtin`,sudo:`sh-sudo`,pipe:`sh-pipe`,operator:`sh-operator`,redirect:`sh-redirect`,string:`sh-string`,flag:`sh-flag`,variable:`sh-variable`,backtick:`sh-backtick`,comment:`sh-comment`,number:`sh-number`,path:`sh-path`,text:`sh-text`};function v(e){return e?h(e).map(e=>`<span class="${_[e.type]}">${g(e.value)}</span>`).join(``):``}var y=[`innerHTML`],b=d(u({__name:`ShellHighlightField`,props:{modelValue:{},placeholder:{default:``},disabled:{type:Boolean,default:!1},multiline:{type:Boolean,default:!1},rows:{default:3},size:{default:`default`}},emits:[`update:modelValue`,`keydown`],setup(t,{expose:u,emit:d}){let f=s(null),p=t,m=d,h=n(()=>v(p.modelValue));function g(e){let t=e.target;m(`update:modelValue`,t.value)}function _(e){m(`keydown`,e)}function b(){return f.value}function x(){f.value?.focus()}function S(){let e=f.value;return e?e.value.substring(e.selectionStart??0,e.selectionEnd??0):``}function C(){let e=f.value;e&&(e.focus(),e.select())}async function w(e){let t=f.value;if(!t)return;let n=t.selectionStart??t.value.length,r=t.selectionEnd??n;m(`update:modelValue`,t.value.slice(0,n)+e+t.value.slice(r)),await l(),t.focus();let i=n+e.length;t.setSelectionRange(i,i)}return u({getInputEl:b,focusInput:x,getSelectionText:S,selectAllInput:C,insertAtSelection:w}),(n,s)=>(i(),r(`div`,{class:c([`sh-field position-relative`,{"sh-field--disabled":t.disabled,"sh-field--empty":!t.modelValue,"sh-field--large":t.size===`large`}])},[t.modelValue?(i(),r(`div`,{key:0,class:c([`sh-field__highlight font-mono`,t.multiline?`sh-field__highlight--multi`:`sh-field__highlight--single`]),"aria-hidden":`true`,innerHTML:h.value},null,10,y)):a(``,!0),(i(),o(e(t.multiline?`textarea`:`input`),{ref_key:`inputRef`,ref:f,value:t.modelValue,placeholder:t.placeholder,disabled:t.disabled,rows:t.multiline?t.rows:void 0,class:c([`sh-field__input font-mono`,t.multiline?`sh-field__input--multi`:`sh-field__input--single`]),spellcheck:`false`,autocomplete:`off`,onInput:g,onKeydown:_},null,40,[`value`,`placeholder`,`disabled`,`rows`,`class`]))],2))}}),[[`__scopeId`,`data-v-b73e3452`]]);function x(e){return[...e].sort((e,t)=>e.is_builtin===t.is_builtin?e.sort_order===t.sort_order?e.id-t.id:e.sort_order-t.sort_order:e.is_builtin?1:-1)}function S(){let e=s([]),n=s(!1);async function r(){n.value=!0;try{e.value=x(await t.get(`/terminal/quick-commands`)||[])}catch{throw e.value=[],Error(``)}finally{n.value=!1}}async function i(e,n){await t.post(`/terminal/quick-commands`,{name:e.trim(),cmd:n.trim()}),await r()}async function a(e,n,i){await t.put(`/terminal/quick-commands/${e}`,{name:n.trim(),cmd:i.trim()}),await r()}async function o(e){await t.delete(`/terminal/quick-commands/${e}`),await r()}async function c(n){e.value=x((await t.put(`/terminal/quick-commands/reorder`,{ids:n})).items||[])}return{commands:e,loading:n,load:r,create:i,update:a,remove:o,reorder:c,customCommands:()=>e.value.filter(e=>!e.is_builtin),builtinCommands:()=>e.value.filter(e=>e.is_builtin)}}export{S as n,b as r,x as t};
+1
View File
@@ -0,0 +1 @@
import{p as e}from"./initMonaco-C6RVWqt8.js";var t={comments:{blockComment:[`<!--`,`-->`]},brackets:[[`<`,`>`]],autoClosingPairs:[{open:`<`,close:`>`},{open:`'`,close:`'`},{open:`"`,close:`"`}],surroundingPairs:[{open:`<`,close:`>`},{open:`'`,close:`'`},{open:`"`,close:`"`}],onEnterRules:[{beforeText:RegExp(`<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:e.IndentAction.IndentOutdent}},{beforeText:RegExp(`<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),action:{indentAction:e.IndentAction.Indent}}]},n={defaultToken:``,tokenPostfix:`.xml`,ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,``],{include:`@whitespace`},[/(<)(@qualifiedName)/,[{token:`delimiter`},{token:`tag`,next:`@tag`}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:`delimiter`},{token:`tag`},``,{token:`delimiter`}]],[/(<\?)(@qualifiedName)/,[{token:`delimiter`},{token:`metatag`,next:`@tag`}]],[/(<\!)(@qualifiedName)/,[{token:`delimiter`},{token:`metatag`,next:`@tag`}]],[/<\!\[CDATA\[/,{token:`delimiter.cdata`,next:`@cdata`}],[/&\w+;/,`string.escape`]],cdata:[[/[^\]]+/,``],[/\]\]>/,{token:`delimiter.cdata`,next:`@pop`}],[/\]/,``]],tag:[[/[ \t\r\n]+/,``],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,[`attribute.name`,``,`attribute.value`]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,[`attribute.name`,``,`attribute.value`]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,[`attribute.name`,``,`attribute.value`]],[/@qualifiedName/,`attribute.name`],[/\?>/,{token:`delimiter`,next:`@pop`}],[/(\/)(>)/,[{token:`tag`},{token:`delimiter`,next:`@pop`}]],[/>/,{token:`delimiter`,next:`@pop`}]],whitespace:[[/[ \t\r\n]+/,``],[/<!--/,{token:`comment`,next:`@comment`}]],comment:[[/[^<\-]+/,`comment.content`],[/-->/,{token:`comment`,next:`@pop`}],[/<!--/,`comment.content.invalid`],[/[<\-]/,`comment.content`]]}};export{t as conf,n as language};
+1
View File
@@ -0,0 +1 @@
import{p as e}from"./initMonaco-C6RVWqt8.js";var t={comments:{lineComment:`#`},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},n={tokenPostfix:`.yaml`,brackets:[{token:`delimiter.bracket`,open:`{`,close:`}`},{token:`delimiter.square`,open:`[`,close:`]`}],keywords:[`true`,`True`,`TRUE`,`false`,`False`,`FALSE`,`null`,`Null`,`Null`,`~`],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:`@whitespace`},{include:`@comment`},[/%[^ ]+.*$/,`meta.directive`],[/---/,`operators.directivesEnd`],[/\.{3}/,`operators.documentEnd`],[/[-?:](?= )/,`operators`],{include:`@anchor`},{include:`@tagHandle`},{include:`@flowCollections`},{include:`@blockStyle`},[/@numberInteger(?![ \t]*\S+)/,`number`],[/@numberFloat(?![ \t]*\S+)/,`number.float`],[/@numberOctal(?![ \t]*\S+)/,`number.octal`],[/@numberHex(?![ \t]*\S+)/,`number.hex`],[/@numberInfinity(?![ \t]*\S+)/,`number.infinity`],[/@numberNaN(?![ \t]*\S+)/,`number.nan`],[/@numberDate(?![ \t]*\S+)/,`number.date`],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,[`type`,`white`,`operators`,`white`]],{include:`@flowScalars`},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],object:[{include:`@whitespace`},{include:`@comment`},[/\}/,`@brackets`,`@pop`],[/,/,`delimiter.comma`],[/:(?= )/,`operators`],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,`type`],{include:`@flowCollections`},{include:`@flowScalars`},{include:`@tagHandle`},{include:`@anchor`},{include:`@flowNumber`},[/[^\},]+/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],array:[{include:`@whitespace`},{include:`@comment`},[/\]/,`@brackets`,`@pop`],[/,/,`delimiter.comma`],{include:`@flowCollections`},{include:`@flowScalars`},{include:`@tagHandle`},{include:`@anchor`},{include:`@flowNumber`},[/[^\],]+/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],multiString:[[/^( +).+$/,`string`,`@multiStringContinued.$1`]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":`string`,"@default":{token:`@rematch`,next:`@popall`}}}]],whitespace:[[/[ \t\r\n]+/,`white`]],comment:[[/#.*$/,`comment`]],flowCollections:[[/\[/,`@brackets`,`@array`],[/\{/,`@brackets`,`@object`]],flowScalars:[[/"([^"\\]|\\.)*$/,`string.invalid`],[/'([^'\\]|\\.)*$/,`string.invalid`],[/'[^']*'/,`string`],[/"/,`string`,`@doubleQuotedString`]],doubleQuotedString:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],blockStyle:[[/[>|][0-9]*[+-]?$/,`operators`,`@multiString`]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,`number`],[/@numberFloat(?=[ \t]*[,\]\}])/,`number.float`],[/@numberOctal(?=[ \t]*[,\]\}])/,`number.octal`],[/@numberHex(?=[ \t]*[,\]\}])/,`number.hex`],[/@numberInfinity(?=[ \t]*[,\]\}])/,`number.infinity`],[/@numberNaN(?=[ \t]*[,\]\}])/,`number.nan`],[/@numberDate(?=[ \t]*[,\]\}])/,`number.date`]],tagHandle:[[/\![^ ]*/,`tag`]],anchor:[[/[&*][^ ]+/,`namespace`]]}};export{t as conf,n as language};
+1 -1
View File
@@ -5,7 +5,7 @@
<link rel="icon" href="/app/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Nexus</title>
<script type="module" crossorigin src="/app/assets/index-CLYaSJSV.js"></script>
<script type="module" crossorigin src="/app/assets/index-DqWTaECE.js"></script>
<link rel="stylesheet" crossorigin href="/app/assets/index-DUUkodzN.css">
</head>
<body>