feat(rdp): 3389 页独立管理 RDP 主机

rdp_hosts 表与专用 API,在 3389远程页添加/连接,不再依赖子机列表。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Nexus Agent
2026-06-10 20:58:46 +08:00
parent dabfc128b3
commit f127f07ab2
93 changed files with 1021 additions and 310 deletions
+20
View File
@@ -1547,3 +1547,23 @@
{"ts":"2026-06-10T01:30:56+08:00","date":"2026-06-10","gate":"shell_eol","result":"PASS","detail":"all tracked sh LF"}
{"ts":"2026-06-10T01:30:56+08:00","date":"2026-06-10","gate":"text_eol","result":"PASS","detail":"git index LF"}
{"ts":"2026-06-10T01:30:56+08:00","date":"2026-06-10","gate":"summary","result":"PASS","detail":"7/7"}
{"ts":"2026-06-10T01:38:03+08:00","date":"2026-06-10","gate":"changelog","result":"PASS","detail":"2026-06-10-push-success-sound.md 26lines"}
{"ts":"2026-06-10T01:38:03+08:00","date":"2026-06-10","gate":"audit","result":"PASS","detail":"2026-06-10-rdp-browser-guacd.md"}
{"ts":"2026-06-10T01:38:03+08:00","date":"2026-06-10","gate":"test","result":"PASS","detail":"all passed"}
{"ts":"2026-06-10T01:38:03+08:00","date":"2026-06-10","gate":"lint","result":"PASS","detail":"0 violations"}
{"ts":"2026-06-10T01:38:03+08:00","date":"2026-06-10","gate":"import","result":"PASS","detail":"ok"}
{"ts":"2026-06-10T01:38:03+08:00","date":"2026-06-10","gate":"security","result":"PASS","detail":"0 HIGH"}
{"ts":"2026-06-10T01:38:03+08:00","date":"2026-06-10","gate":"review","result":"BLOCK","detail":"audit missing changed files"}
{"ts":"2026-06-10T01:38:03+08:00","date":"2026-06-10","gate":"shell_eol","result":"PASS","detail":"all tracked sh LF"}
{"ts":"2026-06-10T01:38:03+08:00","date":"2026-06-10","gate":"text_eol","result":"PASS","detail":"git index LF"}
{"ts":"2026-06-10T01:38:03+08:00","date":"2026-06-10","gate":"summary","result":"BLOCK","detail":"6/7"}
{"ts":"2026-06-10T20:57:52+08:00","date":"2026-06-10","gate":"changelog","result":"PASS","detail":"2026-06-10-rdp-hosts-standalone.md 32lines"}
{"ts":"2026-06-10T20:57:52+08:00","date":"2026-06-10","gate":"audit","result":"PASS","detail":"2026-06-10-rdp-browser-guacd.md"}
{"ts":"2026-06-10T20:57:52+08:00","date":"2026-06-10","gate":"test","result":"PASS","detail":"all passed"}
{"ts":"2026-06-10T20:57:52+08:00","date":"2026-06-10","gate":"lint","result":"PASS","detail":"0 violations"}
{"ts":"2026-06-10T20:57:52+08:00","date":"2026-06-10","gate":"import","result":"PASS","detail":"ok"}
{"ts":"2026-06-10T20:57:52+08:00","date":"2026-06-10","gate":"security","result":"PASS","detail":"0 HIGH"}
{"ts":"2026-06-10T20:57:52+08:00","date":"2026-06-10","gate":"review","result":"BLOCK","detail":"audit missing changed files"}
{"ts":"2026-06-10T20:57:52+08:00","date":"2026-06-10","gate":"shell_eol","result":"PASS","detail":"all tracked sh LF"}
{"ts":"2026-06-10T20:57:52+08:00","date":"2026-06-10","gate":"text_eol","result":"PASS","detail":"git index LF"}
{"ts":"2026-06-10T20:57:52+08:00","date":"2026-06-10","gate":"summary","result":"BLOCK","detail":"6/7"}
@@ -0,0 +1,61 @@
# 审计 — 3389 独立 RDP 主机(rdp_hosts
**Changelog**: `docs/changelog/2026-06-10-rdp-hosts-standalone.md`
## 变更文件
| 文件 | 说明 |
|------|------|
| `server/domain/models/__init__.py` | `RdpHost` 模型 |
| `server/infrastructure/database/migrations.py` | `rdp_hosts` 表 |
| `server/infrastructure/database/rdp_host_repo.py` | 仓储 |
| `server/api/rdp_hosts.py` | CRUD + connect REST |
| `server/api/rdp.py` | WS `/ws/rdp/hosts/{host_id}` |
| `server/main.py` | 注册 `rdp_hosts_router` |
| `frontend/src/pages/RdpPage.vue` | 列表/添加/连接 |
| `frontend/src/components/rdp/RdpHostFormDialog.vue` | 添加/编辑对话框 |
| `frontend/src/composables/rdp/useRdpHostList.ts` | 列表与 CUD |
| `frontend/src/composables/rdp/useRdpSession.ts` | 改连 `rdp_hosts` |
| `frontend/src/components/servers/ServerFormDialog.vue` | 移除 RDP 区块 |
| `frontend/src/composables/servers/useServerFormDialog.ts` | 移除 rdp 字段 |
| `frontend/src/pages/ServersPage.vue` | 移除 RDP 跳转 |
| `tests/test_rdp_hosts.py` | 模型/端口单测 |
## 入口表
| 方法 | 路径 | 鉴权 | 说明 |
|------|------|------|------|
| GET | `/api/rdp/hosts/` | admin JWT | 列表(无密码) |
| POST | `/api/rdp/hosts/` | admin JWT + 审计 | 创建,密码 Fernet |
| PUT | `/api/rdp/hosts/{id}` | admin JWT + 审计 | 更新 |
| DELETE | `/api/rdp/hosts/{id}` | admin JWT + 审计 | 删除 |
| GET | `/api/rdp/hosts/{id}/connect` | admin JWT | 返回明文密码供 Guacamole |
| WS | `/ws/rdp/hosts/{id}?token=` | access JWT | guacd 透明桥 |
## Step 3(规则扫描)
| 规则 | 结论 | 说明 |
|------|------|------|
| 鉴权 | PASS | 全部 REST/WS 需管理员 JWT |
| IDOR | PASS(平台模型) | 与终端一致:管理员可连任意 RDP 主机 |
| 密钥落库 | PASS | `password` 列 Fernet;列表仅 `password_set` |
| 明文 connect | RISK 接受 | Guacamole 客户端必需;HTTPS |
| CUD 审计 | PASS | create/update/delete_rdp_host |
| guacd | PASS | 仍仅内网侧车 |
| 静默吞错 | PASS | API HTTPExceptionWS close code |
## Closure(走读)
| 文件 | 结论 |
|------|------|
| `rdp_hosts.py` | SAFE — 名称唯一 IntegrityError→409connect 校验 guacd |
| `rdp_host_repo.py` | SAFE — 标准 CRUD |
| `rdp.py` | SAFE — host 存在性校验后桥接 |
| `RdpPage.vue` | SAFE — 无 v-html;添加后 `host_id` 连接 |
| `useRdpHostList.ts` | SAFE — formatApiError |
## DoD
- [x] changelog + 本审计
- [x] `local_verify` + type-check
- [ ] 生产部署与浏览器验收
@@ -0,0 +1,32 @@
# 2026-06-10 — 3389 独立 RDP 主机管理
## 摘要
RDP 远程桌面改为在「3389远程」页单独添加/管理,不再依赖子机列表或服务器编辑表单。
## 动机
3389 目标数量少、与 SSH 子机资产无关;用户希望在 RDP 页直接录入地址与凭据后点击连接。
## 涉及文件
- `server/domain/models/__init__.py``rdp_hosts`
- `server/infrastructure/database/migrations.py`
- `server/infrastructure/database/rdp_host_repo.py`
- `server/api/rdp_hosts.py` — CRUD + connect
- `server/api/rdp.py` — WS `/ws/rdp/hosts/{id}`
- `frontend/src/pages/RdpPage.vue` — 列表、添加、连接
- `frontend/src/components/rdp/RdpHostFormDialog.vue`
- `frontend/src/composables/rdp/useRdpHostList.ts`
- 移除服务器表单与子机页 RDP 入口
## 行为
- `GET/POST/PUT/DELETE /api/rdp/hosts/` 管理独立 RDP 主机
- 添加成功后自动跳转连接;列表项可「连接 / 编辑 / 删除」
- 密码 Fernet 加密存储;connect 接口仅管理员 JWT
## 验证
- `pytest tests/test_rdp_hosts.py`
- 3389远程 → 添加 → 连接 Windows RDP
@@ -0,0 +1,115 @@
<template>
<v-dialog :model-value="modelValue" max-width="520" persistent @update:model-value="emit('update:modelValue', $event)">
<v-card border>
<v-card-title>{{ editingId ? '编辑 RDP 主机' : '添加 RDP 主机' }}</v-card-title>
<v-divider />
<v-card-text class="pt-4">
<v-text-field
v-model="localForm.name"
label="名称"
variant="outlined"
density="compact"
:rules="[required('名称')]"
class="mb-2"
/>
<v-text-field
v-model="localForm.host"
label="IP / 域名"
variant="outlined"
density="compact"
placeholder="例:192.168.1.100"
:rules="[required('IP 或域名')]"
class="mb-2"
/>
<v-row dense>
<v-col cols="5">
<v-text-field
v-model.number="localForm.port"
label="端口"
type="number"
variant="outlined"
density="compact"
/>
</v-col>
<v-col cols="7">
<v-text-field
v-model="localForm.username"
label="用户名"
variant="outlined"
density="compact"
:rules="[required('用户名')]"
/>
</v-col>
</v-row>
<v-text-field
v-model="localForm.password"
label="密码"
type="password"
variant="outlined"
density="compact"
:placeholder="editingId && passwordSet ? '留空则不修改' : ''"
:hint="editingId && passwordSet ? '已设置密码;留空保持不变' : '连接远程桌面必需'"
persistent-hint
class="mb-2"
/>
<v-textarea
v-model="localForm.description"
label="备注(可选)"
variant="outlined"
density="compact"
rows="2"
auto-grow
/>
</v-card-text>
<v-divider />
<v-card-actions class="pa-4">
<v-spacer />
<v-btn variant="text" :disabled="saving" @click="emit('update:modelValue', false)">取消</v-btn>
<v-btn color="primary" variant="flat" :loading="saving" @click="onSave">保存</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script setup lang="ts">
import { ref, watch } from 'vue'
import { required } from '@/utils/validation'
import type { RdpHostFormModel } from '@/composables/rdp/useRdpHostList'
const props = defineProps<{
modelValue: boolean
form: RdpHostFormModel
editingId: number | null
passwordSet: boolean
saving: boolean
}>()
const emit = defineEmits<{
'update:modelValue': [value: boolean]
save: [form: RdpHostFormModel]
}>()
const localForm = ref<RdpHostFormModel>({ ...props.form })
watch(
() => props.modelValue,
(open) => {
if (open) localForm.value = { ...props.form }
},
)
watch(
() => props.form,
(f) => {
if (props.modelValue) localForm.value = { ...f }
},
{ deep: true },
)
function onSave() {
const f = localForm.value
if (!f.name.trim() || !f.host.trim() || !f.username.trim()) return
if (!props.editingId && !f.password.trim()) return
emit('save', { ...f })
}
</script>
@@ -183,44 +183,6 @@
persistent-hint
class="mb-4"
/>
<v-divider class="mb-4" />
<div class="text-subtitle-2 mb-2">远程桌面 (RDP)</div>
<v-switch
v-model="form.rdp_enabled"
label="启用浏览器远程桌面 (RDP)"
color="primary"
density="compact"
hide-details
class="mb-2"
/>
<v-text-field
v-model.number="form.rdp_port"
label="RDP 端口"
type="number"
variant="outlined"
density="compact"
:disabled="!form.rdp_enabled"
class="mb-2"
/>
<v-text-field
v-model="form.rdp_username"
label="RDP 用户名"
variant="outlined"
density="compact"
:disabled="!form.rdp_enabled"
class="mb-2"
/>
<v-text-field
v-model="form.rdp_password"
label="RDP 密码"
type="password"
variant="outlined"
density="compact"
:disabled="!form.rdp_enabled"
:placeholder="isEditing && editHints.rdp_password_set ? '留空则不修改' : ''"
:hint="isEditing && editHints.rdp_password_set ? '已设置密码;留空保持不变' : '浏览器 RDP 必需'"
persistent-hint
/>
</v-expansion-panel-text>
</v-expansion-panel>
</v-expansion-panels>
@@ -253,7 +215,7 @@ const props = defineProps<{
categoryOptions: string[]
platforms: { id: number; name: string }[]
nodes: { id: number; name: string }[]
editHints: { password_set: boolean; ssh_key_private_set: boolean; rdp_password_set: boolean }
editHints: { password_set: boolean; ssh_key_private_set: boolean }
filesElevationItems: { title: string; value: FilesElevationMode }[]
}>()
@@ -0,0 +1,143 @@
import { ref, computed } from 'vue'
import { http } from '@/api'
import { useSnackbar } from '@/composables/useSnackbar'
import { formatApiError } from '@/utils/apiError'
export interface RdpHostItem {
id: number
name: string
host: string
port: number
username: string
password_set: boolean
description: string
}
export interface RdpHostFormModel {
name: string
host: string
port: number
username: string
password: string
description: string
}
export function emptyRdpHostForm(): RdpHostFormModel {
return {
name: '',
host: '',
port: 3389,
username: 'Administrator',
password: '',
description: '',
}
}
export function useRdpHostList() {
const snackbar = useSnackbar()
const hosts = ref<RdpHostItem[]>([])
const search = ref('')
const loading = ref(false)
const saving = ref(false)
const filteredHosts = computed(() => {
const q = search.value.trim().toLowerCase()
if (!q) return hosts.value
return hosts.value.filter(
(h) =>
h.name.toLowerCase().includes(q)
|| h.host.toLowerCase().includes(q)
|| h.username.toLowerCase().includes(q),
)
})
async function loadHosts() {
loading.value = true
try {
const res = await http.get<{ items: RdpHostItem[] }>('/rdp/hosts/')
hosts.value = res.items || []
} catch (e) {
hosts.value = []
snackbar(formatApiError(e, '加载 RDP 主机列表失败'), 'warning')
} finally {
loading.value = false
}
}
async function createHost(form: RdpHostFormModel): Promise<RdpHostItem | null> {
saving.value = true
try {
const created = await http.post<RdpHostItem>('/rdp/hosts/', {
name: form.name.trim(),
host: form.host.trim(),
port: Number(form.port) || 3389,
username: form.username.trim(),
password: form.password,
description: form.description.trim() || undefined,
})
await loadHosts()
snackbar('已添加 RDP 主机', 'success')
return created
} catch (e) {
snackbar(formatApiError(e, '添加失败'), 'error')
return null
} finally {
saving.value = false
}
}
async function updateHost(id: number, form: RdpHostFormModel, passwordSet: boolean): Promise<boolean> {
saving.value = true
try {
const body: Record<string, unknown> = {
name: form.name.trim(),
host: form.host.trim(),
port: Number(form.port) || 3389,
username: form.username.trim(),
description: form.description.trim() || '',
}
if (form.password.trim()) {
body.password = form.password.trim()
} else if (!passwordSet) {
snackbar('请填写 RDP 密码', 'error')
return false
}
await http.put(`/rdp/hosts/${id}`, body)
await loadHosts()
snackbar('已保存', 'success')
return true
} catch (e) {
snackbar(formatApiError(e, '保存失败'), 'error')
return false
} finally {
saving.value = false
}
}
async function deleteHost(id: number, name: string): Promise<boolean> {
saving.value = true
try {
await http.delete(`/rdp/hosts/${id}`)
await loadHosts()
snackbar(`已删除「${name}`, 'success')
return true
} catch (e) {
snackbar(formatApiError(e, '删除失败'), 'error')
return false
} finally {
saving.value = false
}
}
return {
hosts,
search,
filteredHosts,
loading,
saving,
loadHosts,
createHost,
updateHost,
deleteHost,
}
}
@@ -1,50 +0,0 @@
import { ref, computed } from 'vue'
import { useSnackbar } from '@/composables/useSnackbar'
import { fetchPagePerPage } from '@/utils/paginatedFetch'
import type { TerminalServerItem } from '@/composables/terminal/types'
import type { ServerApiItem } from '@/types/api'
function toPickerItem(row: ServerApiItem): TerminalServerItem {
return {
id: row.id,
name: row.name,
domain: row.domain || '',
is_online: Boolean(row.is_online),
}
}
export function useRdpServerList() {
const snackbar = useSnackbar()
const servers = ref<TerminalServerItem[]>([])
const search = ref('')
const loading = ref(false)
const filteredServers = computed(() => {
const q = search.value.trim().toLowerCase()
if (!q) return servers.value
return servers.value.filter(
(s) => s.name.toLowerCase().includes(q) || s.domain.toLowerCase().includes(q),
)
})
async function loadServers() {
loading.value = true
try {
const { items } = await fetchPagePerPage<ServerApiItem>('/servers/', {}, 1, -1)
servers.value = items.filter((row) => row.rdp_enabled).map(toPickerItem)
} catch {
servers.value = []
snackbar('加载 RDP 服务器列表失败', 'warning')
} finally {
loading.value = false
}
}
return {
servers,
search,
filteredServers,
loading,
loadServers,
}
}
@@ -8,8 +8,8 @@ import { formatApiError } from '@/utils/apiError'
export type RdpSessionStatus = 'idle' | 'loading' | 'connecting' | 'connected' | 'error' | 'disconnected'
export interface RdpConnectInfo {
server_id: number
server_name: string
host_id: number
name: string
hostname: string
port: number
username: string
@@ -72,7 +72,7 @@ export function useRdpSession() {
client.sendSize(w, h)
}
async function connect(serverId: number, container: HTMLElement) {
async function connect(hostId: number, container: HTMLElement) {
disconnect()
mountTarget = container
status.value = 'loading'
@@ -87,17 +87,17 @@ export function useRdpSession() {
let info: RdpConnectInfo
try {
info = await http.get<RdpConnectInfo>(`/servers/${serverId}/rdp-connect`)
info = await http.get<RdpConnectInfo>(`/rdp/hosts/${hostId}/connect`)
} catch (e) {
status.value = 'error'
errorMessage.value = formatApiError(e, '加载 RDP 连接参数失败')
return
}
serverName.value = info.server_name
serverName.value = info.name
status.value = 'connecting'
const wsUrl = buildWebSocketUrl(`/ws/rdp/${serverId}`, { token: auth.token })
const wsUrl = buildWebSocketUrl(`/ws/rdp/hosts/${hostId}`, { token: auth.token })
tunnel = new Guacamole.WebSocketTunnel(wsUrl)
const rdpClient = new Guacamole.Client(tunnel)
client = rdpClient
@@ -22,10 +22,6 @@ export interface ServerFormModel {
platform_id: number | null
node_id: number | null
files_elevation: FilesElevationMode
rdp_enabled: boolean
rdp_port: number
rdp_username: string
rdp_password: string
}
export interface PresetOption {
@@ -52,10 +48,6 @@ function emptyForm(): ServerFormModel {
platform_id: null,
node_id: null,
files_elevation: 'auto_sudo',
rdp_enabled: false,
rdp_port: 3389,
rdp_username: '',
rdp_password: '',
}
}
@@ -81,10 +73,6 @@ function fromServer(item: ServerApiItem): ServerFormModel {
platform_id: item.platform_id,
node_id: item.node_id,
files_elevation: item.files_elevation || 'auto_sudo',
rdp_enabled: Boolean(item.rdp_enabled),
rdp_port: item.rdp_port ?? 3389,
rdp_username: item.rdp_username || '',
rdp_password: '',
}
}
@@ -95,7 +83,7 @@ export function useServerFormDialog(onSaved: () => void) {
const editingId = ref<number | null>(null)
const saving = ref(false)
const form = ref<ServerFormModel>(emptyForm())
const editHints = ref({ password_set: false, ssh_key_private_set: false, rdp_password_set: false })
const editHints = ref({ password_set: false, ssh_key_private_set: false })
const passwordPresets = ref<PresetOption[]>([])
const sshKeyPresets = ref<PresetOption[]>([])
@@ -150,7 +138,7 @@ export function useServerFormDialog(onSaved: () => void) {
async function openAdd() {
editingId.value = null
form.value = emptyForm()
editHints.value = { password_set: false, ssh_key_private_set: false, rdp_password_set: false }
editHints.value = { password_set: false, ssh_key_private_set: false }
visible.value = true
await loadLookups()
}
@@ -161,7 +149,6 @@ export function useServerFormDialog(onSaved: () => void) {
editHints.value = {
password_set: Boolean(item.password_set),
ssh_key_private_set: Boolean(item.ssh_key_private_set || item.ssh_key_configured),
rdp_password_set: Boolean(item.rdp_password_set),
}
visible.value = true
await loadLookups()
@@ -171,7 +158,7 @@ export function useServerFormDialog(onSaved: () => void) {
visible.value = false
editingId.value = null
form.value = emptyForm()
editHints.value = { password_set: false, ssh_key_private_set: false, rdp_password_set: false }
editHints.value = { password_set: false, ssh_key_private_set: false }
}
function validate(): string | null {
@@ -210,14 +197,8 @@ export function useServerFormDialog(onSaved: () => void) {
platform_id: f.platform_id ?? undefined,
node_id: f.node_id ?? undefined,
files_elevation: f.files_elevation,
rdp_enabled: f.rdp_enabled,
rdp_port: Number(f.rdp_port) || 3389,
rdp_username: f.rdp_username.trim() || undefined,
agent_port: 8601,
}
if (f.rdp_password.trim()) {
base.rdp_password = f.rdp_password.trim()
}
if (f.auth_method === 'password') {
if (f.preset_id != null) base.preset_id = f.preset_id
+162 -37
View File
@@ -17,13 +17,13 @@
{{ statusLabel }}
</v-chip>
<v-btn
v-if="serverId"
v-if="hostId"
variant="text"
size="small"
class="mr-1"
@click="backToPicker"
@click="backToList"
>
换一台
返回列表
</v-btn>
<v-btn
variant="tonal"
@@ -37,20 +37,53 @@
</v-toolbar>
<div ref="displayHost" class="rdp-display-host flex-grow-1">
<div v-if="showPicker" class="rdp-placeholder">
<p class="text-subtitle-2 mb-3">选择已启用 RDP 的服务器</p>
<TerminalServerPicker
:servers="filteredServers"
:search="serverSearch"
:loading="serversLoading"
mode="inline"
@update:search="serverSearch = $event"
@select="onSelectServer"
<div v-if="showList" class="rdp-list-panel">
<div class="d-flex align-center ga-2 mb-3" style="max-width: 640px; width: 100%">
<v-text-field
v-model="search"
prepend-inner-icon="mdi-magnify"
placeholder="搜索名称、地址…"
variant="outlined"
density="compact"
hide-details
class="flex-grow-1"
/>
<p class="text-caption text-medium-emphasis mt-4">
未出现在列表请在服务器 编辑 高级选项启用浏览器远程桌面并填写 RDP 密码
</p>
<v-btn color="primary" variant="flat" prepend-icon="mdi-plus" @click="openAdd">
添加
</v-btn>
</div>
<v-skeleton-loader v-if="loading" type="list-item@4" max-width="640" width="100%" />
<v-card v-else border rounded="lg" max-width="640" width="100%">
<v-list density="comfortable" nav>
<v-list-item
v-for="h in filteredHosts"
:key="h.id"
:title="h.name"
:subtitle="`${h.host}:${h.port} · ${h.username}`"
rounded="lg"
>
<template #append>
<v-btn
color="primary"
variant="tonal"
size="small"
class="mr-1"
@click="onConnect(h.id)"
>
连接
</v-btn>
<v-btn icon="mdi-pencil" variant="text" size="small" @click="openEdit(h)" />
<v-btn icon="mdi-delete" variant="text" size="small" color="error" @click="confirmDelete(h)" />
</template>
</v-list-item>
<v-list-item v-if="filteredHosts.length === 0" class="text-medium-emphasis">
暂无 RDP 主机点击添加录入 Windows 远程地址
</v-list-item>
</v-list>
</v-card>
</div>
<div v-else-if="status === 'loading' || status === 'connecting'" class="rdp-placeholder">
<v-progress-circular indeterminate color="primary" size="40" />
<p class="text-medium-emphasis mt-3">{{ status === 'loading' ? '加载连接参数…' : '正在连接远程桌面…' }}</p>
@@ -59,18 +92,44 @@
<v-alert type="error" variant="tonal" max-width="480">
{{ errorMessage }}
</v-alert>
<v-btn variant="flat" color="primary" class="mt-3" @click="backToPicker">返回选择</v-btn>
<v-btn variant="flat" color="primary" class="mt-3" @click="backToList">返回列表</v-btn>
</div>
</div>
<RdpHostFormDialog
v-model="formVisible"
:form="formModel"
:editing-id="editingId"
:password-set="editingPasswordSet"
:saving="saving"
@save="onSaveHost"
/>
<v-dialog v-model="deleteVisible" max-width="400">
<v-card>
<v-card-title>删除 RDP 主机</v-card-title>
<v-card-text>确定删除{{ deleteTarget?.name }}</v-card-text>
<v-card-actions>
<v-spacer />
<v-btn variant="text" @click="deleteVisible = false">取消</v-btn>
<v-btn color="error" variant="flat" :loading="saving" @click="doDelete">删除</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</v-container>
</template>
<script setup lang="ts">
import { computed, ref, watch, onMounted } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import TerminalServerPicker from '@/components/terminal/TerminalServerPicker.vue'
import RdpHostFormDialog from '@/components/rdp/RdpHostFormDialog.vue'
import { useRdpSession } from '@/composables/rdp/useRdpSession'
import { useRdpServerList } from '@/composables/rdp/useRdpServerList'
import {
useRdpHostList,
emptyRdpHostForm,
type RdpHostItem,
type RdpHostFormModel,
} from '@/composables/rdp/useRdpHostList'
defineOptions({ name: 'RdpPage' })
@@ -80,20 +139,31 @@ const displayHost = ref<HTMLElement | null>(null)
const { status, errorMessage, serverName, connect, disconnect } = useRdpSession()
const {
search: serverSearch,
filteredServers,
loading: serversLoading,
loadServers,
} = useRdpServerList()
search,
filteredHosts,
loading,
saving,
loadHosts,
createHost,
updateHost,
deleteHost,
} = useRdpHostList()
const serverId = computed(() => {
const raw = route.query.server_id
const formVisible = ref(false)
const formModel = ref(emptyRdpHostForm())
const editingId = ref<number | null>(null)
const editingPasswordSet = ref(false)
const deleteVisible = ref(false)
const deleteTarget = ref<RdpHostItem | null>(null)
const hostId = computed(() => {
const raw = route.query.host_id
const n = Number(Array.isArray(raw) ? raw[0] : raw)
return Number.isFinite(n) && n > 0 ? n : null
})
const showPicker = computed(
() => !serverId.value && (status.value === 'idle' || status.value === 'disconnected'),
const showList = computed(
() => !hostId.value && (status.value === 'idle' || status.value === 'disconnected'),
)
const statusLabel = computed(() => {
@@ -117,30 +187,79 @@ const statusColor = computed(() => {
}
})
function onSelectServer(id: number) {
router.push({ path: '/rdp', query: { server_id: String(id) } })
function onConnect(id: number) {
router.push({ path: '/rdp', query: { host_id: String(id) } })
}
function backToPicker() {
function backToList() {
disconnect()
router.replace({ path: '/rdp' })
}
function disconnectSession() {
disconnect()
if (serverId.value) {
if (hostId.value) {
router.replace({ path: '/rdp' })
}
}
function openAdd() {
editingId.value = null
editingPasswordSet.value = false
formModel.value = emptyRdpHostForm()
formVisible.value = true
}
function openEdit(h: RdpHostItem) {
editingId.value = h.id
editingPasswordSet.value = h.password_set
formModel.value = {
name: h.name,
host: h.host,
port: h.port,
username: h.username,
password: '',
description: h.description || '',
}
formVisible.value = true
}
async function onSaveHost(form: RdpHostFormModel) {
if (editingId.value != null) {
const ok = await updateHost(editingId.value, form, editingPasswordSet.value)
if (ok) formVisible.value = false
return
}
const created = await createHost(form)
if (created) {
formVisible.value = false
onConnect(created.id)
}
}
function confirmDelete(h: RdpHostItem) {
deleteTarget.value = h
deleteVisible.value = true
}
async function doDelete() {
const t = deleteTarget.value
if (!t) return
const ok = await deleteHost(t.id, t.name)
if (ok) {
deleteVisible.value = false
deleteTarget.value = null
}
}
async function startIfReady() {
const id = serverId.value
const id = hostId.value
const host = displayHost.value
if (!id || !host) return
await connect(id, host)
}
watch(serverId, (id, prev) => {
watch(hostId, (id, prev) => {
if (id === prev) return
if (!id) {
disconnect()
@@ -150,8 +269,8 @@ watch(serverId, (id, prev) => {
})
onMounted(async () => {
await loadServers()
if (serverId.value) void startIfReady()
await loadHosts()
if (hostId.value) void startIfReady()
})
</script>
@@ -173,13 +292,19 @@ onMounted(async () => {
margin: 0 auto;
}
.rdp-list-panel,
.rdp-placeholder {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
justify-content: flex-start;
height: 100%;
min-height: 320px;
padding: 16px;
padding: 24px 16px;
overflow-y: auto;
}
.rdp-placeholder {
justify-content: center;
}
</style>
-18
View File
@@ -241,16 +241,6 @@
<div class="d-flex ga-1">
<v-btn variant="text" size="x-small" color="primary" density="compact" @click.stop="openTerminal(item)">终端</v-btn>
<v-btn variant="text" size="x-small" density="compact" @click.stop="openFiles(item)">文件</v-btn>
<v-btn
v-if="item.rdp_enabled"
variant="text"
size="x-small"
color="secondary"
density="compact"
@click.stop="openRdp(item)"
>
RDP
</v-btn>
<v-btn variant="text" size="x-small" density="compact" :loading="agentDiagnoseLoadingId === item.id" @click.stop="openAgentDiagnose(item)">诊断</v-btn>
<v-btn variant="text" size="x-small" density="compact" @click.stop="editServer(item)">编辑</v-btn>
<v-btn variant="text" size="x-small" color="error" density="compact" @click.stop="confirmDelete(item)">删除</v-btn>
@@ -1375,14 +1365,6 @@ function openFiles(item: ServerApiItem) {
router.push({ path: '/files', query: { server_id: String(item.id) } })
}
function openRdp(item: ServerApiItem) {
if (!item.rdp_enabled) {
snackbar('此服务器未启用 RDP', 'error')
return
}
router.push({ path: '/rdp', query: { server_id: String(item.id) } })
}
const showAgentDiagnose = ref(false)
const agentDiagnoseLoading = ref(false)
const agentDiagnoseLoadingId = ref<number | null>(null)
+10 -15
View File
@@ -11,9 +11,8 @@ from server.config import settings
from server.domain.models import Admin
from server.infrastructure.database.session import AsyncSessionLocal
from server.infrastructure.database.admin_repo import AdminRepositoryImpl
from server.infrastructure.database.server_repo import ServerRepositoryImpl
from server.infrastructure.database.rdp_host_repo import RdpHostRepositoryImpl
from server.infrastructure.guacamole.tunnel import bridge_websocket_to_guacd
from server.utils.rdp_config import get_rdp_config
logger = logging.getLogger("nexus.rdp")
@@ -56,13 +55,13 @@ async def _verify_rdp_access_token(token: str) -> Optional[Admin]:
return admin
@router.websocket("/ws/rdp/{server_id}")
@router.websocket("/ws/rdp/hosts/{host_id}")
async def rdp_guacamole_ws(
websocket: WebSocket,
server_id: int = Path(...),
host_id: int = Path(...),
token: Optional[str] = Query(None),
):
"""Transparent Guacamole tunnel to guacd after JWT + server RDP checks."""
"""Transparent Guacamole tunnel to guacd after JWT + RDP host lookup."""
if not token:
await websocket.close(code=4001, reason="Missing JWT token")
return
@@ -77,14 +76,10 @@ async def rdp_guacamole_ws(
return
async with AsyncSessionLocal() as session:
server_repo = ServerRepositoryImpl(session)
server = await server_repo.get_by_id(server_id)
if not server:
await websocket.close(code=4404, reason="Server not found")
return
cfg = get_rdp_config(server)
if not cfg.enabled:
await websocket.close(code=4400, reason="RDP not enabled")
repo = RdpHostRepositoryImpl(session)
row = await repo.get_by_id(host_id)
if not row:
await websocket.close(code=4404, reason="RDP host not found")
return
await websocket.accept(subprotocol="guacamole")
@@ -97,13 +92,13 @@ async def rdp_guacamole_ws(
except WebSocketDisconnect:
pass
except OSError as exc:
logger.warning("RDP guacd bridge failed server_id=%s: %s", server_id, exc)
logger.warning("RDP guacd bridge failed host_id=%s: %s", host_id, exc)
try:
await websocket.close(code=1011, reason="guacd unreachable")
except Exception:
pass
except Exception:
logger.exception("RDP tunnel error server_id=%s", server_id)
logger.exception("RDP tunnel error host_id=%s", host_id)
try:
await websocket.close(code=1011, reason="RDP tunnel error")
except Exception:
+242
View File
@@ -0,0 +1,242 @@
"""Standalone RDP host CRUD + connect params (3389 page, not Server assets)."""
from __future__ import annotations
from typing import Optional
from fastapi import APIRouter, Depends, HTTPException, Request
from pydantic import BaseModel, Field
from sqlalchemy.exc import IntegrityError
from sqlalchemy.ext.asyncio import AsyncSession
from server.api.auth_jwt import get_current_admin
from server.api.dependencies import get_db
from server.config import settings
from server.domain.models import Admin, AuditLog, RdpHost
from server.infrastructure.database.audit_log_repo import AuditLogRepositoryImpl
from server.infrastructure.database.crypto import decrypt_value, encrypt_value
from server.infrastructure.database.rdp_host_repo import RdpHostRepositoryImpl
from server.utils.rdp_config import DEFAULT_RDP_PORT, normalize_rdp_port
router = APIRouter(prefix="/api/rdp/hosts", tags=["rdp"])
class RdpHostCreate(BaseModel):
name: str = Field(..., min_length=1, max_length=100)
host: str = Field(..., min_length=1, max_length=255)
port: int = Field(DEFAULT_RDP_PORT, ge=1, le=65535)
username: str = Field(..., min_length=1, max_length=100)
password: str = Field(..., min_length=1)
description: Optional[str] = Field(None, max_length=2000)
class RdpHostUpdate(BaseModel):
name: Optional[str] = Field(None, min_length=1, max_length=100)
host: Optional[str] = Field(None, min_length=1, max_length=255)
port: Optional[int] = Field(None, ge=1, le=65535)
username: Optional[str] = Field(None, min_length=1, max_length=100)
password: Optional[str] = None
description: Optional[str] = Field(None, max_length=2000)
def _password_set(enc: str | None) -> bool:
return bool(str(enc or "").strip())
def _host_to_dict(row: RdpHost) -> dict:
return {
"id": row.id,
"name": row.name,
"host": row.host,
"port": row.port,
"username": row.username,
"password_set": _password_set(row.password),
"description": row.description or "",
"created_at": row.created_at.isoformat() if row.created_at else None,
"updated_at": row.updated_at.isoformat() if row.updated_at else None,
}
def _decrypt_password(row: RdpHost) -> str:
enc = str(row.password or "").strip()
if not enc:
return ""
try:
return decrypt_value(enc)
except Exception:
return ""
async def _audit(
db: AsyncSession,
*,
admin: Admin,
action: str,
host_id: int,
detail: str,
request: Request,
) -> None:
audit_repo = AuditLogRepositoryImpl(db)
await audit_repo.create(
AuditLog(
admin_username=admin.username,
action=action,
target_type="rdp_host",
target_id=host_id,
detail=detail,
ip_address=request.client.host if request.client else "",
)
)
@router.get("/", response_model=dict)
async def list_rdp_hosts(
admin: Admin = Depends(get_current_admin),
db: AsyncSession = Depends(get_db),
):
repo = RdpHostRepositoryImpl(db)
rows = await repo.list_all()
return {"items": [_host_to_dict(r) for r in rows], "total": len(rows)}
@router.post("/", response_model=dict, status_code=201)
async def create_rdp_host(
payload: RdpHostCreate,
request: Request,
admin: Admin = Depends(get_current_admin),
db: AsyncSession = Depends(get_db),
):
repo = RdpHostRepositoryImpl(db)
name = payload.name.strip()
host = payload.host.strip()
username = payload.username.strip()
password = payload.password.strip()
if not password:
raise HTTPException(status_code=400, detail="请填写 RDP 密码")
row = RdpHost(
name=name,
host=host,
port=normalize_rdp_port(payload.port),
username=username,
password=encrypt_value(password),
description=(payload.description or "").strip() or None,
)
try:
created = await repo.create(row)
except IntegrityError:
await db.rollback()
raise HTTPException(status_code=409, detail=f"名称「{name}」已存在")
await _audit(
db,
admin=admin,
action="create_rdp_host",
host_id=created.id,
detail=f"名称={name} 地址={host}:{row.port}",
request=request,
)
return _host_to_dict(created)
@router.put("/{host_id}", response_model=dict)
async def update_rdp_host(
host_id: int,
payload: RdpHostUpdate,
request: Request,
admin: Admin = Depends(get_current_admin),
db: AsyncSession = Depends(get_db),
):
repo = RdpHostRepositoryImpl(db)
row = await repo.get_by_id(host_id)
if not row:
raise HTTPException(status_code=404, detail="RDP 主机不存在")
data = payload.model_dump(exclude_unset=True)
if "name" in data and data["name"] is not None:
row.name = data["name"].strip()
if "host" in data and data["host"] is not None:
row.host = data["host"].strip()
if "port" in data and data["port"] is not None:
row.port = normalize_rdp_port(data["port"])
if "username" in data and data["username"] is not None:
row.username = data["username"].strip()
if "description" in data:
row.description = (data["description"] or "").strip() or None
if "password" in data and data["password"] is not None:
plain = str(data["password"]).strip()
if plain:
row.password = encrypt_value(plain)
try:
updated = await repo.update(row)
except IntegrityError:
await db.rollback()
raise HTTPException(status_code=409, detail=f"名称「{row.name}」已存在")
await _audit(
db,
admin=admin,
action="update_rdp_host",
host_id=host_id,
detail=f"名称={updated.name} 地址={updated.host}:{updated.port}",
request=request,
)
return _host_to_dict(updated)
@router.delete("/{host_id}", status_code=204)
async def delete_rdp_host(
host_id: int,
request: Request,
admin: Admin = Depends(get_current_admin),
db: AsyncSession = Depends(get_db),
):
repo = RdpHostRepositoryImpl(db)
row = await repo.get_by_id(host_id)
if not row:
raise HTTPException(status_code=404, detail="RDP 主机不存在")
name = row.name
if not await repo.delete(host_id):
raise HTTPException(status_code=404, detail="RDP 主机不存在")
await _audit(
db,
admin=admin,
action="delete_rdp_host",
host_id=host_id,
detail=f"名称={name}",
request=request,
)
@router.get("/{host_id}/connect", response_model=dict)
async def get_rdp_host_connect_params(
host_id: int,
admin: Admin = Depends(get_current_admin),
db: AsyncSession = Depends(get_db),
):
if not settings.GUACD_HOST:
raise HTTPException(status_code=503, detail="服务端未配置 guacd,无法使用浏览器 RDP")
repo = RdpHostRepositoryImpl(db)
row = await repo.get_by_id(host_id)
if not row:
raise HTTPException(status_code=404, detail="RDP 主机不存在")
host = (row.host or "").strip()
if not host:
raise HTTPException(status_code=400, detail="缺少地址(IP/域名)")
password = _decrypt_password(row)
if not password:
raise HTTPException(status_code=400, detail="RDP 密码无效或未设置")
return {
"host_id": row.id,
"name": row.name,
"hostname": host,
"port": row.port,
"username": row.username,
"password": password,
}
+19
View File
@@ -530,3 +530,22 @@ class QuickCommand(Base):
created_by = Column(String(100), nullable=True, comment="创建人")
created_at = Column(DateTime, default=_utcnow)
updated_at = Column(DateTime, default=_utcnow, onupdate=_utcnow)
# ──────────────────────────────────────────────
# RDP Hosts (3389 独立远程桌面,不关联子机表)
# ──────────────────────────────────────────────
class RdpHost(Base):
"""Standalone Windows RDP endpoint for browser Guacamole (not tied to Server assets)."""
__tablename__ = "rdp_hosts"
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(100), unique=True, nullable=False, comment="显示名称")
host = Column(String(255), nullable=False, comment="IP 或域名")
port = Column(Integer, default=3389, nullable=False, comment="RDP 端口")
username = Column(String(100), nullable=False, comment="RDP 用户名")
password = Column(Text, nullable=False, comment="RDP 密码(Fernet 加密)")
description = Column(Text, nullable=True, comment="备注")
created_at = Column(DateTime, default=_utcnow)
updated_at = Column(DateTime, default=_utcnow, onupdate=_utcnow)
@@ -209,6 +209,18 @@ async def run_schema_migrations():
UNIQUE KEY `uq_admin_refresh_token_hash` (`token_hash`),
INDEX `idx_admin_refresh_admin_expires` (`admin_id`, `expires_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4""",
"""CREATE TABLE IF NOT EXISTS `rdp_hosts` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(100) NOT NULL COMMENT '显示名称',
`host` VARCHAR(255) NOT NULL COMMENT 'IP 或域名',
`port` INT NOT NULL DEFAULT 3389 COMMENT 'RDP 端口',
`username` VARCHAR(100) NOT NULL COMMENT 'RDP 用户名',
`password` TEXT NOT NULL COMMENT 'RDP 密码(Fernet 加密)',
`description` TEXT NULL COMMENT '备注',
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY `uq_rdp_hosts_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4""",
]
async with AsyncSessionLocal() as session:
for sql in migrations:
@@ -0,0 +1,46 @@
"""RDP host repository (standalone 3389 endpoints)."""
from __future__ import annotations
from typing import List, Optional
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from server.domain.models import RdpHost
class RdpHostRepositoryImpl:
def __init__(self, session: AsyncSession):
self.session = session
async def get_by_id(self, host_id: int) -> Optional[RdpHost]:
result = await self.session.execute(select(RdpHost).where(RdpHost.id == host_id))
return result.scalar_one_or_none()
async def get_by_name(self, name: str) -> Optional[RdpHost]:
result = await self.session.execute(select(RdpHost).where(RdpHost.name == name))
return result.scalar_one_or_none()
async def list_all(self) -> List[RdpHost]:
result = await self.session.execute(select(RdpHost).order_by(RdpHost.name))
return list(result.scalars().all())
async def create(self, row: RdpHost) -> RdpHost:
self.session.add(row)
await self.session.commit()
await self.session.refresh(row)
return row
async def update(self, row: RdpHost) -> RdpHost:
await self.session.commit()
await self.session.refresh(row)
return row
async def delete(self, host_id: int) -> bool:
row = await self.get_by_id(host_id)
if not row:
return False
await self.session.delete(row)
await self.session.commit()
return True
+3 -1
View File
@@ -68,6 +68,7 @@ from server.api.health import router as health_router
from server.api.assets import router as assets_router
from server.api.webssh import router as webssh_router
from server.api.rdp import router as rdp_router
from server.api.rdp_hosts import router as rdp_hosts_router
from server.api.sync_v2 import router as sync_v2_router
from server.api.files import router as files_router
from server.api.search import router as search_router
@@ -676,8 +677,9 @@ app.include_router(assets_router)
# Web SSH Terminal
app.include_router(webssh_router)
# Browser RDP (guacd tunnel)
# Browser RDP (guacd tunnel + standalone hosts)
app.include_router(rdp_router)
app.include_router(rdp_hosts_router)
# Sync Engine v2 (Step 4)
app.include_router(sync_v2_router)
+24
View File
@@ -0,0 +1,24 @@
"""Standalone RDP host model helpers."""
from server.domain.models import RdpHost
from server.infrastructure.database.crypto import decrypt_value, encrypt_value
from server.utils.rdp_config import normalize_rdp_port
def test_rdp_host_model_fields():
row = RdpHost(
name="win-bj",
host="10.0.0.5",
port=3389,
username="Administrator",
password=encrypt_value("Secret"),
)
assert row.name == "win-bj"
assert row.port == 3389
assert decrypt_value(row.password) == "Secret"
def test_normalize_rdp_port():
assert normalize_rdp_port(None) == 3389
assert normalize_rdp_port(3390) == 3390
assert normalize_rdp_port(99999) == 3389
@@ -1 +1 @@
import{n as e,t}from"./useSnackbar-CnnJE332.js";import{n,t as r}from"./VRow-w_jxb14C.js";import{Cr as i,Er as a,Or as o,Q as s,Tr as c,Ur as l,Vr as u,Zr as d,_ as f,br as p,di as m,en as h,gr as g,h as _,hi as v,ii as y,l as b,m as x,qt as S,xr as C,y as w}from"./index--ZLWJhtp.js";import{t as T}from"./usePageActivateRefresh-CJkUcCiK.js";import{n as E,t as D}from"./dataTable-esDY4cOk.js";import{n as O}from"./paginatedFetch-h6pNjMJI.js";import{_ as k,b as A}from"./VTextField-BHVsCc73.js";import{t as j}from"./VSelect-fmsU8QCW.js";import{t as M}from"./VDataTableServer-CajuWgd2.js";var N={class:`font-weight-medium`},P={class:`text-body-2`},F={class:`text-caption text-medium-emphasis`},I=o({name:`AlertsPage`,__name:`AlertsPage`,setup(o){let I=t(),L=y(!1),R=y([]),z=y(0),B=y(1),V=y(20),H=D,U=y(null),W=y(null),G=y([{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`}]),K=[{label:`CPU`,value:`cpu`},{label:`内存`,value:`memory`},{label:`磁盘`,value:`disk`},{label:`连接`,value:`connection`}],q=[{label:`活跃`,value:`active`},{label:`已恢复`,value:`recovered`}],J=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 Y(){try{let e=await h.get(`/alert-history/stats`);G.value[0].value=String(e.today||0),G.value[1].value=String(e.active||0),G.value[2].value=String(e.recovered||0),G.value[3].value=e.top_server||``}catch{I(`加载统计失败`,`error`)}}function X(e){B.value=e,Q()}function Z(e){V.value=e,B.value=1,Q()}async function Q(e=!1){e||(L.value=!0);try{let e=await O(`/alert-history/`,{type:U.value||void 0,status:W.value||void 0},B.value,V.value);R.value=e.items,z.value=e.total,V.value===-1&&(B.value=1)}catch{R.value=[],z.value=0,I(`加载告警列表失败`,`error`)}finally{e||(L.value=!1)}}function $(e){return e===`cpu`||e===`CPU`?`error`:e===`memory`||e===`内存`?`warning`:e===`disk`||e===`磁盘`?`info`:`primary`}function ee(e){return e===`cpu`||e===`CPU`?`mdi-chip`:e===`memory`||e===`内存`?`mdi-memory`:e===`disk`||e===`磁盘`?`mdi-harddisk`:`mdi-lan-disconnect`}async function te(e=!1){await Promise.all([Y(),Q(e)])}return T(e=>te(e)),(t,o)=>(u(),C(e,{fluid:``,class:`pa-6`},{default:d(()=>[a(r,{class:`mb-4`},{default:d(()=>[(u(!0),i(g,null,l(G.value,e=>(u(),C(n,{cols:`12`,sm:`6`,lg:`3`,key:e.label},{default:d(()=>[a(b,{elevation:`0`,lines:`two`,rounded:`lg`,border:``},{default:d(()=>[a(x,null,{append:d(()=>[a(s,{color:e.color,size:`30`},{default:d(()=>[c(v(e.icon),1)]),_:2},1032,[`color`])]),default:d(()=>[a(_,{class:`text-body-small`},{default:d(()=>[c(v(e.label),1)]),_:2},1024),a(_,null,{default:d(()=>[c(v(e.value),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}),a(k,{elevation:`0`,border:``,rounded:`lg`},{default:d(()=>[a(A,{class:`d-flex align-center`},{default:d(()=>[o[4]||=c(` 告警历史 `,-1),a(f),a(j,{modelValue:U.value,"onUpdate:modelValue":[o[0]||=e=>U.value=e,o[1]||=e=>{B.value=1,Q()}],items:K,"item-title":`label`,"item-value":`value`,label:`类型`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`140px`},clearable:``},null,8,[`modelValue`]),a(j,{modelValue:W.value,"onUpdate:modelValue":[o[2]||=e=>W.value=e,o[3]||=e=>{B.value=1,Q()}],items:q,"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}),a(M,{items:R.value,headers:m(J),"items-length":z.value,loading:L.value,page:B.value,"items-per-page":V.value,"items-per-page-options":m(H),hover:``,density:`comfortable`,"onUpdate:page":X,"onUpdate:itemsPerPage":Z},{"item.alert_type":d(({item:e})=>[a(w,{color:$(e.alert_type),size:`small`,variant:`tonal`,label:``},{prepend:d(()=>[a(s,{size:`12`},{default:d(()=>[c(v(ee(e.alert_type)),1)]),_:2},1024)]),default:d(()=>[c(` `+v(e.alert_type),1)]),_:2},1032,[`color`])]),"item.server_name":d(({item:e})=>[p(`span`,N,v(e.server_name),1)]),"item.value":d(({item:e})=>[p(`span`,P,v(e.value),1)]),"item.is_recovery":d(({item:e})=>[e.is_recovery?(u(),C(w,{key:0,color:`success`,size:`small`,variant:`tonal`,label:``},{default:d(()=>[...o[5]||=[c(`已恢复`,-1)]]),_:1})):(u(),C(w,{key:1,color:`error`,size:`small`,variant:`tonal`,label:``},{default:d(()=>[...o[6]||=[c(`告警中`,-1)]]),_:1}))]),"item.created_at":d(({item:e})=>[p(`span`,F,v(m(S)(e.created_at)),1)]),"no-data":d(()=>[...o[7]||=[p(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`,`items-per-page`,`items-per-page-options`])]),_:1})]),_:1}))}});export{I as default};
import{n as e,t}from"./useSnackbar-yP7apGY8.js";import{n,t as r}from"./VRow-DQSkwKSy.js";import{Cr as i,Er as a,Or as o,Q as s,Tr as c,Ur as l,Vr as u,Zr as d,_ as f,br as p,di as m,en as h,gr as g,h as _,hi as v,ii as y,l as b,m as x,qt as S,xr as C,y as w}from"./index-_6O5JL4W.js";import{t as T}from"./usePageActivateRefresh-CzjzBWP4.js";import{n as E,t as D}from"./dataTable-esDY4cOk.js";import{n as O}from"./paginatedFetch-BvAUiQXI.js";import{_ as k,b as A}from"./VTextField-CD7WwKb1.js";import{t as j}from"./VSelect-CDx3fXFa.js";import{t as M}from"./VDataTableServer-lHUUBg35.js";var N={class:`font-weight-medium`},P={class:`text-body-2`},F={class:`text-caption text-medium-emphasis`},I=o({name:`AlertsPage`,__name:`AlertsPage`,setup(o){let I=t(),L=y(!1),R=y([]),z=y(0),B=y(1),V=y(20),H=D,U=y(null),W=y(null),G=y([{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`}]),K=[{label:`CPU`,value:`cpu`},{label:`内存`,value:`memory`},{label:`磁盘`,value:`disk`},{label:`连接`,value:`connection`}],q=[{label:`活跃`,value:`active`},{label:`已恢复`,value:`recovered`}],J=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 Y(){try{let e=await h.get(`/alert-history/stats`);G.value[0].value=String(e.today||0),G.value[1].value=String(e.active||0),G.value[2].value=String(e.recovered||0),G.value[3].value=e.top_server||``}catch{I(`加载统计失败`,`error`)}}function X(e){B.value=e,Q()}function Z(e){V.value=e,B.value=1,Q()}async function Q(e=!1){e||(L.value=!0);try{let e=await O(`/alert-history/`,{type:U.value||void 0,status:W.value||void 0},B.value,V.value);R.value=e.items,z.value=e.total,V.value===-1&&(B.value=1)}catch{R.value=[],z.value=0,I(`加载告警列表失败`,`error`)}finally{e||(L.value=!1)}}function $(e){return e===`cpu`||e===`CPU`?`error`:e===`memory`||e===`内存`?`warning`:e===`disk`||e===`磁盘`?`info`:`primary`}function ee(e){return e===`cpu`||e===`CPU`?`mdi-chip`:e===`memory`||e===`内存`?`mdi-memory`:e===`disk`||e===`磁盘`?`mdi-harddisk`:`mdi-lan-disconnect`}async function te(e=!1){await Promise.all([Y(),Q(e)])}return T(e=>te(e)),(t,o)=>(u(),C(e,{fluid:``,class:`pa-6`},{default:d(()=>[a(r,{class:`mb-4`},{default:d(()=>[(u(!0),i(g,null,l(G.value,e=>(u(),C(n,{cols:`12`,sm:`6`,lg:`3`,key:e.label},{default:d(()=>[a(b,{elevation:`0`,lines:`two`,rounded:`lg`,border:``},{default:d(()=>[a(x,null,{append:d(()=>[a(s,{color:e.color,size:`30`},{default:d(()=>[c(v(e.icon),1)]),_:2},1032,[`color`])]),default:d(()=>[a(_,{class:`text-body-small`},{default:d(()=>[c(v(e.label),1)]),_:2},1024),a(_,null,{default:d(()=>[c(v(e.value),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}),a(k,{elevation:`0`,border:``,rounded:`lg`},{default:d(()=>[a(A,{class:`d-flex align-center`},{default:d(()=>[o[4]||=c(` 告警历史 `,-1),a(f),a(j,{modelValue:U.value,"onUpdate:modelValue":[o[0]||=e=>U.value=e,o[1]||=e=>{B.value=1,Q()}],items:K,"item-title":`label`,"item-value":`value`,label:`类型`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`140px`},clearable:``},null,8,[`modelValue`]),a(j,{modelValue:W.value,"onUpdate:modelValue":[o[2]||=e=>W.value=e,o[3]||=e=>{B.value=1,Q()}],items:q,"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}),a(M,{items:R.value,headers:m(J),"items-length":z.value,loading:L.value,page:B.value,"items-per-page":V.value,"items-per-page-options":m(H),hover:``,density:`comfortable`,"onUpdate:page":X,"onUpdate:itemsPerPage":Z},{"item.alert_type":d(({item:e})=>[a(w,{color:$(e.alert_type),size:`small`,variant:`tonal`,label:``},{prepend:d(()=>[a(s,{size:`12`},{default:d(()=>[c(v(ee(e.alert_type)),1)]),_:2},1024)]),default:d(()=>[c(` `+v(e.alert_type),1)]),_:2},1032,[`color`])]),"item.server_name":d(({item:e})=>[p(`span`,N,v(e.server_name),1)]),"item.value":d(({item:e})=>[p(`span`,P,v(e.value),1)]),"item.is_recovery":d(({item:e})=>[e.is_recovery?(u(),C(w,{key:0,color:`success`,size:`small`,variant:`tonal`,label:``},{default:d(()=>[...o[5]||=[c(`已恢复`,-1)]]),_:1})):(u(),C(w,{key:1,color:`error`,size:`small`,variant:`tonal`,label:``},{default:d(()=>[...o[6]||=[c(`告警中`,-1)]]),_:1}))]),"item.created_at":d(({item:e})=>[p(`span`,F,v(m(S)(e.created_at)),1)]),"no-data":d(()=>[...o[7]||=[p(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`,`items-per-page`,`items-per-page-options`])]),_:1})]),_:1}))}});export{I as default};
@@ -1 +1 @@
import{n as e,t}from"./useSnackbar-CnnJE332.js";import{Er as n,I as r,Or as i,Sr as a,Tr as o,Vr as s,Zr as c,_ as l,br as u,di as d,en as f,hi as p,hr as m,ii as h,kt as g,qt as _,xr as v,y}from"./index--ZLWJhtp.js";import{t as b}from"./usePageActivateRefresh-CJkUcCiK.js";import{n as x}from"./dataTable-esDY4cOk.js";import{_ as S,b as C,t as w}from"./VTextField-BHVsCc73.js";import{t as T}from"./VSelect-fmsU8QCW.js";import{t as E}from"./VDataTableServer-CajuWgd2.js";import{a as D,n as O,r as k,t as A}from"./auditNormalize-C-_Ftbtx.js";var j=new Set([`batch_install_agent`,`batch_upgrade_agent`,`batch_uninstall_agent`,`batch_detect_path`,`batch_health_check`,`batch_update_category`,`batch_server_op`]);function M(e){return j.has(e)}function N(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 P(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 F={class:`font-weight-medium`},I={class:`text-body-2`},L={class:`d-flex align-center ga-2 flex-wrap`},R={class:`text-body-2 text-medium-emphasis`,style:{"max-width":`360px`}},z={class:`text-caption text-medium-emphasis`},B={class:`text-caption text-medium-emphasis`},V=i({name:`AuditPage`,__name:`AuditPage`,setup(i){let j=t(),V=h(!1),H=h([]),U=h(0),W=h(1),G=h(null),K=h(``),q=h(``),J=O,Y=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 X(e=!1){e||(V.value=!0);try{let e=(W.value-1)*50,t=await f.get(`/audit/`,{limit:50,offset:e,action:G.value||void 0,admin_username:K.value||void 0,date_from:q.value||void 0});H.value=A(t.items||[]),U.value=t.total||0}catch{H.value=[],e||j(`加载审计日志失败`,`error`)}finally{e||(V.value=!1)}}function Z(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 Q(e){return M(e.action)?N(e.detail):null}function $(e){let t=Q(e);return t?P(t):(e.detail||``).trim()||``}function ee(e){g(e.job_id,e.summary)}return b(e=>X(e)),(t,i)=>(s(),v(e,{fluid:``,class:`pa-6`},{default:c(()=>[n(S,{elevation:`0`,border:``,rounded:`lg`},{default:c(()=>[n(C,{class:`d-flex align-center`},{default:c(()=>[i[7]||=o(` 审计日志 `,-1),n(l),n(T,{modelValue:G.value,"onUpdate:modelValue":[i[0]||=e=>G.value=e,i[1]||=e=>{W.value=1,X()}],items:d(J),"item-title":`label`,"item-value":`value`,label:`操作类型`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`200px`},clearable:``},null,8,[`modelValue`,`items`]),n(w,{modelValue:K.value,"onUpdate:modelValue":[i[2]||=e=>K.value=e,i[3]||=e=>{W.value=1,X()}],"prepend-inner-icon":`mdi-account`,label:`用户`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`140px`},class:`ml-3`,clearable:``},null,8,[`modelValue`]),n(w,{modelValue:q.value,"onUpdate:modelValue":[i[4]||=e=>q.value=e,i[5]||=e=>{W.value=1,X()}],"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}),n(E,{items:H.value,headers:d(Y),"items-length":U.value,loading:V.value,page:W.value,"items-per-page":50,hover:``,density:`compact`,"onUpdate:page":i[6]||=e=>{W.value=e,X()}},{"item.action":c(({item:e})=>[n(y,{color:Z(e.action),size:`small`,variant:`tonal`,label:``},{default:c(()=>[o(p(d(k)(e.action)),1)]),_:2},1032,[`color`])]),"item.admin_username":c(({item:e})=>[u(`span`,F,p(e.admin_username),1)]),"item.target":c(({item:e})=>[u(`span`,I,p(d(D)(e.resource_type))+p(e.resource_id?` #${e.resource_id}`:``),1)]),"item.detail":c(({item:e})=>[u(`div`,L,[u(`span`,R,p($(e)),1),Q(e)?(s(),v(r,{key:0,size:`x-small`,variant:`tonal`,color:`primary`,onClick:m(t=>ee(Q(e)),[`stop`])},{default:c(()=>[...i[8]||=[o(` 查看结果 `,-1)]]),_:1},8,[`onClick`])):a(``,!0)])]),"item.ip_address":c(({item:e})=>[u(`span`,z,p(e.ip_address||``),1)]),"item.created_at":c(({item:e})=>[u(`span`,B,p(d(_)(e.created_at)),1)]),"no-data":c(()=>[...i[9]||=[u(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`])]),_:1})]),_:1}))}});export{V as default};
import{n as e,t}from"./useSnackbar-yP7apGY8.js";import{Er as n,I as r,Or as i,Sr as a,Tr as o,Vr as s,Zr as c,_ as l,br as u,di as d,en as f,hi as p,hr as m,ii as h,kt as g,qt as _,xr as v,y}from"./index-_6O5JL4W.js";import{t as b}from"./usePageActivateRefresh-CzjzBWP4.js";import{n as x}from"./dataTable-esDY4cOk.js";import{_ as S,b as C,t as w}from"./VTextField-CD7WwKb1.js";import{t as T}from"./VSelect-CDx3fXFa.js";import{t as E}from"./VDataTableServer-lHUUBg35.js";import{a as D,n as O,r as k,t as A}from"./auditNormalize-C-_Ftbtx.js";var j=new Set([`batch_install_agent`,`batch_upgrade_agent`,`batch_uninstall_agent`,`batch_detect_path`,`batch_health_check`,`batch_update_category`,`batch_server_op`]);function M(e){return j.has(e)}function N(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 P(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 F={class:`font-weight-medium`},I={class:`text-body-2`},L={class:`d-flex align-center ga-2 flex-wrap`},R={class:`text-body-2 text-medium-emphasis`,style:{"max-width":`360px`}},z={class:`text-caption text-medium-emphasis`},B={class:`text-caption text-medium-emphasis`},V=i({name:`AuditPage`,__name:`AuditPage`,setup(i){let j=t(),V=h(!1),H=h([]),U=h(0),W=h(1),G=h(null),K=h(``),q=h(``),J=O,Y=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 X(e=!1){e||(V.value=!0);try{let e=(W.value-1)*50,t=await f.get(`/audit/`,{limit:50,offset:e,action:G.value||void 0,admin_username:K.value||void 0,date_from:q.value||void 0});H.value=A(t.items||[]),U.value=t.total||0}catch{H.value=[],e||j(`加载审计日志失败`,`error`)}finally{e||(V.value=!1)}}function Z(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 Q(e){return M(e.action)?N(e.detail):null}function $(e){let t=Q(e);return t?P(t):(e.detail||``).trim()||``}function ee(e){g(e.job_id,e.summary)}return b(e=>X(e)),(t,i)=>(s(),v(e,{fluid:``,class:`pa-6`},{default:c(()=>[n(S,{elevation:`0`,border:``,rounded:`lg`},{default:c(()=>[n(C,{class:`d-flex align-center`},{default:c(()=>[i[7]||=o(` 审计日志 `,-1),n(l),n(T,{modelValue:G.value,"onUpdate:modelValue":[i[0]||=e=>G.value=e,i[1]||=e=>{W.value=1,X()}],items:d(J),"item-title":`label`,"item-value":`value`,label:`操作类型`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`200px`},clearable:``},null,8,[`modelValue`,`items`]),n(w,{modelValue:K.value,"onUpdate:modelValue":[i[2]||=e=>K.value=e,i[3]||=e=>{W.value=1,X()}],"prepend-inner-icon":`mdi-account`,label:`用户`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`140px`},class:`ml-3`,clearable:``},null,8,[`modelValue`]),n(w,{modelValue:q.value,"onUpdate:modelValue":[i[4]||=e=>q.value=e,i[5]||=e=>{W.value=1,X()}],"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}),n(E,{items:H.value,headers:d(Y),"items-length":U.value,loading:V.value,page:W.value,"items-per-page":50,hover:``,density:`compact`,"onUpdate:page":i[6]||=e=>{W.value=e,X()}},{"item.action":c(({item:e})=>[n(y,{color:Z(e.action),size:`small`,variant:`tonal`,label:``},{default:c(()=>[o(p(d(k)(e.action)),1)]),_:2},1032,[`color`])]),"item.admin_username":c(({item:e})=>[u(`span`,F,p(e.admin_username),1)]),"item.target":c(({item:e})=>[u(`span`,I,p(d(D)(e.resource_type))+p(e.resource_id?` #${e.resource_id}`:``),1)]),"item.detail":c(({item:e})=>[u(`div`,L,[u(`span`,R,p($(e)),1),Q(e)?(s(),v(r,{key:0,size:`x-small`,variant:`tonal`,color:`primary`,onClick:m(t=>ee(Q(e)),[`stop`])},{default:c(()=>[...i[8]||=[o(` 查看结果 `,-1)]]),_:1},8,[`onClick`])):a(``,!0)])]),"item.ip_address":c(({item:e})=>[u(`span`,z,p(e.ip_address||``),1)]),"item.created_at":c(({item:e})=>[u(`span`,B,p(d(_)(e.created_at)),1)]),"no-data":c(()=>[...i[9]||=[u(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`])]),_:1})]),_:1}))}});export{V as default};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{Cr as e,Or as t,Rr as n,Vr as r,an as i}from"./index--ZLWJhtp.js";var a=t({name:`CredentialsPage`,__name:`CredentialsPage`,setup(t){let a=i();return n(()=>{a.replace({path:`/servers`,query:{credentials:`1`}})}),(t,n)=>(r(),e(`div`))}});export{a as default};
import{Cr as e,Or as t,Rr as n,Vr as r,an as i}from"./index-_6O5JL4W.js";var a=t({name:`CredentialsPage`,__name:`CredentialsPage`,setup(t){let a=i();return n(()=>{a.replace({path:`/servers`,query:{credentials:`1`}})}),(t,n)=>(r(),e(`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
@@ -1,2 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardPage-BqXaWi-B.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/index--ZLWJhtp.js","assets/chunk-DK3Fl9T5.js","assets/index-DUUkodzN.css","assets/VTextField-BHVsCc73.js","assets/VTextField-9wSyupY2.css","assets/VDataTable-19TycHjq.js","assets/VSelect-fmsU8QCW.js","assets/VSelect-Dq2BX-8H.css","assets/VDataTable-DlpDfCoY.css","assets/VDialog-BCdcmy4p.js","assets/VDialog-DP-kc9Gx.css","assets/VRow-w_jxb14C.js","assets/VRow-DIr3-SqU.css","assets/useSnackbar-CnnJE332.js","assets/useSnackbar-ku9EbwM-.css","assets/VSkeletonLoader-DFaRbI5C.js","assets/VSkeletonLoader-CkAIsbz1.css","assets/StatCardsRow-Cbw0JYhY.js","assets/StatCardsRow-snFLCRnD.css","assets/usePageActivateRefresh-CJkUcCiK.js","assets/auditNormalize-C-_Ftbtx.js","assets/DashboardPage-C6EeEBsS.css"])))=>i.map(i=>d[i]);
import{Cr as e,Er as t,F as n,I as r,Or as i,Qt as a,Rr as o,Sr as s,Tr as c,Vr as l,Xt as u,Yr as d,Yt as f,Zr as p,Zt as m,an as h,br as g,en as _,hi as v,hr as y,ii as b,in as x,mi as S,xr as C,y as w,yr as T,zr as E}from"./index--ZLWJhtp.js";import{t as D}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{_ as O,t as k}from"./VTextField-BHVsCc73.js";import{t as A}from"./VForm-C7ctDLNB.js";var j={class:`login-page`},ee={key:0,class:`login-center`},te={key:2,class:`text-center mt-4`},M=D(i({name:`LoginPage`,__name:`LoginPage`,setup(i){let D=x(),M=h(),N=u(),P=b(`checking`),F=b(``),I=b(``),L=b(``),R=b(!1),z=b(!1),B=b(``),V=b(!1),H=b(0),U=b(null),W=b([]),G=b(0),K=null,q=T(()=>P.value===`checking`?{backgroundColor:`#0a0a12`}:W.value.length===0?{backgroundImage:`linear-gradient(135deg, #1a237e 0%, #0d47a1 40%, #1565c0 100%)`}:{backgroundImage:`url(${W.value[G.value]})`});async function J(){try{let e=await _.get(`/settings/bing-wallpapers`);e?.urls?.length&&(W.value=e.urls,G.value=Math.floor(Math.random()*e.urls.length))}catch{}}function Y(){K&&clearInterval(K),!(W.value.length<=1)&&(K=setInterval(()=>{G.value=(G.value+1)%W.value.length},36e5))}async function X(){P.value=`checking`;try{return await _.get(`/auth/login-access`),P.value=`form`,!0}catch{return P.value=`blocked`,!1}}function Z(){P.value===`form`&&f(()=>import(`./DashboardPage-BqXaWi-B.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]))}d(P,e=>{e===`form`&&Z()}),o(async()=>{await X(),await J(),Y()}),E(()=>{K&&clearInterval(K),$&&clearInterval($)});let Q=b(Date.now()),$=null,ne=T(()=>{if(!U.value)return 0;let e=new Date(U.value).getTime()-Q.value;return Math.max(0,Math.ceil(e/6e4))});d(U,e=>{$&&=(clearInterval($),null),e&&($=setInterval(()=>{Q.value=Date.now()},3e4))});async function re(){if(!F.value||!I.value){B.value=`请输入用户名和密码`;return}z.value=!0,B.value=``;try{await N.login(F.value,I.value,V.value?L.value:void 0);let e=D.query.redirect||`/`,t=e.startsWith(`/`)&&!e.startsWith(`//`)?e:`/`;await M.replace(t)}catch(e){if(e instanceof a)V.value=!0,B.value=e.message;else if(e instanceof m){if(e.status===403){P.value=`blocked`;return}e.status===429?(U.value=new Date(Date.now()+900*1e3).toISOString(),B.value=`登录尝试过多,账户已锁定 15 分钟`):(H.value++,B.value=e.message)}else B.value=`网络错误,请重试`}finally{z.value=!1}}return(i,a)=>(l(),e(`div`,j,[g(`div`,{class:`wallpaper-bg`,style:S(q.value)},null,4),a[6]||=g(`div`,{class:`wallpaper-overlay`},null,-1),P.value===`form`?(l(),e(`div`,ee,[t(O,{elevation:`0`,rounded:`xl`,class:`login-card pa-10`,border:``},{default:p(()=>[B.value?(l(),C(n,{key:0,type:`error`,density:`compact`,class:`mb-4`,closable:``,"onClick:close":a[0]||=e=>B.value=``,rounded:`lg`,variant:`tonal`},{default:p(()=>[c(v(B.value),1)]),_:1})):s(``,!0),U.value?(l(),C(n,{key:1,type:`warning`,density:`compact`,class:`mb-4`,rounded:`lg`,variant:`tonal`},{default:p(()=>[c(` 账户已锁定,请 `+v(ne.value)+` 分钟后重试 `,1)]),_:1})):s(``,!0),t(A,{onSubmit:y(re,[`prevent`])},{default:p(()=>[t(k,{modelValue:F.value,"onUpdate:modelValue":a[1]||=e=>F.value=e,label:`用户名`,variant:`outlined`,density:`comfortable`,"prepend-inner-icon":`mdi-account-outline`,disabled:z.value,class:`mb-4`,autocomplete:`username`,rounded:`lg`,"hide-details":`auto`},null,8,[`modelValue`,`disabled`]),t(k,{modelValue:I.value,"onUpdate:modelValue":a[2]||=e=>I.value=e,label:`密码`,variant:`outlined`,density:`comfortable`,"prepend-inner-icon":`mdi-lock-outline`,"append-inner-icon":R.value?`mdi-eye`:`mdi-eye-off`,type:R.value?`text`:`password`,"onClick:appendInner":a[3]||=e=>R.value=!R.value,disabled:z.value,class:`mb-4`,autocomplete:`current-password`,rounded:`lg`,"hide-details":`auto`},null,8,[`modelValue`,`append-inner-icon`,`type`,`disabled`]),V.value?(l(),C(k,{key:0,modelValue:L.value,"onUpdate:modelValue":a[4]||=e=>L.value=e,label:`TOTP 验证码`,variant:`outlined`,density:`comfortable`,"prepend-inner-icon":`mdi-shield-key-outline`,disabled:z.value,class:`mb-4`,autocomplete:`one-time-code`,rounded:`lg`,"hide-details":`auto`},null,8,[`modelValue`,`disabled`])):s(``,!0),t(r,{type:`submit`,color:`primary`,variant:`flat`,block:``,size:`large`,loading:z.value,disabled:!!U.value,rounded:`lg`,class:`mt-2`,height:`48`},{default:p(()=>[...a[5]||=[c(` 登录 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1}),H.value>0&&!U.value?(l(),e(`div`,te,[t(w,{size:`small`,variant:`tonal`,color:`warning`,label:``},{default:p(()=>[c(` 已失败 `+v(H.value)+``,1)]),_:1})])):s(``,!0)]),_:1})])):s(``,!0)]))}}),[[`__scopeId`,`data-v-5c1d22f2`]]);export{M as default};
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardPage-Dn8FmNcZ.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/index-_6O5JL4W.js","assets/chunk-DK3Fl9T5.js","assets/index-DUUkodzN.css","assets/VTextField-CD7WwKb1.js","assets/VTextField-9wSyupY2.css","assets/VDataTable-xIamJ7nl.js","assets/VSelect-CDx3fXFa.js","assets/VSelect-Dq2BX-8H.css","assets/VDataTable-DlpDfCoY.css","assets/VDialog-DEJqI2_G.js","assets/VDialog-DP-kc9Gx.css","assets/VRow-DQSkwKSy.js","assets/VRow-DIr3-SqU.css","assets/useSnackbar-yP7apGY8.js","assets/useSnackbar-ku9EbwM-.css","assets/VSkeletonLoader-dGuFYK7d.js","assets/VSkeletonLoader-CkAIsbz1.css","assets/StatCardsRow-BGQi59My.js","assets/StatCardsRow-snFLCRnD.css","assets/usePageActivateRefresh-CzjzBWP4.js","assets/auditNormalize-C-_Ftbtx.js","assets/DashboardPage-C6EeEBsS.css"])))=>i.map(i=>d[i]);
import{Cr as e,Er as t,F as n,I as r,Or as i,Qt as a,Rr as o,Sr as s,Tr as c,Vr as l,Xt as u,Yr as d,Yt as f,Zr as p,Zt as m,an as h,br as g,en as _,hi as v,hr as y,ii as b,in as x,mi as S,xr as C,y as w,yr as T,zr as E}from"./index-_6O5JL4W.js";import{t as D}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{_ as O,t as k}from"./VTextField-CD7WwKb1.js";import{t as A}from"./VForm-DrWsdmGu.js";var j={class:`login-page`},ee={key:0,class:`login-center`},te={key:2,class:`text-center mt-4`},M=D(i({name:`LoginPage`,__name:`LoginPage`,setup(i){let D=x(),M=h(),N=u(),P=b(`checking`),F=b(``),I=b(``),L=b(``),R=b(!1),z=b(!1),B=b(``),V=b(!1),H=b(0),U=b(null),W=b([]),G=b(0),K=null,q=T(()=>P.value===`checking`?{backgroundColor:`#0a0a12`}:W.value.length===0?{backgroundImage:`linear-gradient(135deg, #1a237e 0%, #0d47a1 40%, #1565c0 100%)`}:{backgroundImage:`url(${W.value[G.value]})`});async function J(){try{let e=await _.get(`/settings/bing-wallpapers`);e?.urls?.length&&(W.value=e.urls,G.value=Math.floor(Math.random()*e.urls.length))}catch{}}function Y(){K&&clearInterval(K),!(W.value.length<=1)&&(K=setInterval(()=>{G.value=(G.value+1)%W.value.length},36e5))}async function X(){P.value=`checking`;try{return await _.get(`/auth/login-access`),P.value=`form`,!0}catch{return P.value=`blocked`,!1}}function Z(){P.value===`form`&&f(()=>import(`./DashboardPage-Dn8FmNcZ.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]))}d(P,e=>{e===`form`&&Z()}),o(async()=>{await X(),await J(),Y()}),E(()=>{K&&clearInterval(K),$&&clearInterval($)});let Q=b(Date.now()),$=null,ne=T(()=>{if(!U.value)return 0;let e=new Date(U.value).getTime()-Q.value;return Math.max(0,Math.ceil(e/6e4))});d(U,e=>{$&&=(clearInterval($),null),e&&($=setInterval(()=>{Q.value=Date.now()},3e4))});async function re(){if(!F.value||!I.value){B.value=`请输入用户名和密码`;return}z.value=!0,B.value=``;try{await N.login(F.value,I.value,V.value?L.value:void 0);let e=D.query.redirect||`/`,t=e.startsWith(`/`)&&!e.startsWith(`//`)?e:`/`;await M.replace(t)}catch(e){if(e instanceof a)V.value=!0,B.value=e.message;else if(e instanceof m){if(e.status===403){P.value=`blocked`;return}e.status===429?(U.value=new Date(Date.now()+900*1e3).toISOString(),B.value=`登录尝试过多,账户已锁定 15 分钟`):(H.value++,B.value=e.message)}else B.value=`网络错误,请重试`}finally{z.value=!1}}return(i,a)=>(l(),e(`div`,j,[g(`div`,{class:`wallpaper-bg`,style:S(q.value)},null,4),a[6]||=g(`div`,{class:`wallpaper-overlay`},null,-1),P.value===`form`?(l(),e(`div`,ee,[t(O,{elevation:`0`,rounded:`xl`,class:`login-card pa-10`,border:``},{default:p(()=>[B.value?(l(),C(n,{key:0,type:`error`,density:`compact`,class:`mb-4`,closable:``,"onClick:close":a[0]||=e=>B.value=``,rounded:`lg`,variant:`tonal`},{default:p(()=>[c(v(B.value),1)]),_:1})):s(``,!0),U.value?(l(),C(n,{key:1,type:`warning`,density:`compact`,class:`mb-4`,rounded:`lg`,variant:`tonal`},{default:p(()=>[c(` 账户已锁定,请 `+v(ne.value)+` 分钟后重试 `,1)]),_:1})):s(``,!0),t(A,{onSubmit:y(re,[`prevent`])},{default:p(()=>[t(k,{modelValue:F.value,"onUpdate:modelValue":a[1]||=e=>F.value=e,label:`用户名`,variant:`outlined`,density:`comfortable`,"prepend-inner-icon":`mdi-account-outline`,disabled:z.value,class:`mb-4`,autocomplete:`username`,rounded:`lg`,"hide-details":`auto`},null,8,[`modelValue`,`disabled`]),t(k,{modelValue:I.value,"onUpdate:modelValue":a[2]||=e=>I.value=e,label:`密码`,variant:`outlined`,density:`comfortable`,"prepend-inner-icon":`mdi-lock-outline`,"append-inner-icon":R.value?`mdi-eye`:`mdi-eye-off`,type:R.value?`text`:`password`,"onClick:appendInner":a[3]||=e=>R.value=!R.value,disabled:z.value,class:`mb-4`,autocomplete:`current-password`,rounded:`lg`,"hide-details":`auto`},null,8,[`modelValue`,`append-inner-icon`,`type`,`disabled`]),V.value?(l(),C(k,{key:0,modelValue:L.value,"onUpdate:modelValue":a[4]||=e=>L.value=e,label:`TOTP 验证码`,variant:`outlined`,density:`comfortable`,"prepend-inner-icon":`mdi-shield-key-outline`,disabled:z.value,class:`mb-4`,autocomplete:`one-time-code`,rounded:`lg`,"hide-details":`auto`},null,8,[`modelValue`,`disabled`])):s(``,!0),t(r,{type:`submit`,color:`primary`,variant:`flat`,block:``,size:`large`,loading:z.value,disabled:!!U.value,rounded:`lg`,class:`mt-2`,height:`48`},{default:p(()=>[...a[5]||=[c(` 登录 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1}),H.value>0&&!U.value?(l(),e(`div`,te,[t(w,{size:`small`,variant:`tonal`,color:`warning`,label:``},{default:p(()=>[c(` 已失败 `+v(H.value)+``,1)]),_:1})])):s(``,!0)]),_:1})])):s(``,!0)]))}}),[[`__scopeId`,`data-v-5c1d22f2`]]);export{M as default};
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
.rdp-root[data-v-51d7227f]{min-height:calc(100dvh - var(--v-layout-top,64px));height:calc(100dvh - var(--v-layout-top,64px))}.rdp-display-host[data-v-51d7227f]{background:#1a1a1a;min-height:0;position:relative;overflow:hidden}.rdp-display-host[data-v-51d7227f] canvas{margin:0 auto;display:block}.rdp-placeholder[data-v-51d7227f]{flex-direction:column;justify-content:center;align-items:center;height:100%;min-height:320px;padding:16px;display:flex}
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 @@
.rdp-root[data-v-8bf2089d]{min-height:calc(100dvh - var(--v-layout-top,64px));height:calc(100dvh - var(--v-layout-top,64px))}.rdp-display-host[data-v-8bf2089d]{background:#1a1a1a;min-height:0;position:relative;overflow:hidden}.rdp-display-host[data-v-8bf2089d] canvas{margin:0 auto;display:block}.rdp-list-panel[data-v-8bf2089d],.rdp-placeholder[data-v-8bf2089d]{flex-direction:column;justify-content:flex-start;align-items:center;height:100%;min-height:320px;padding:24px 16px;display:flex;overflow-y:auto}.rdp-placeholder[data-v-8bf2089d]{justify-content:center}
@@ -1 +1 @@
import{n as e,t}from"./useSnackbar-CnnJE332.js";import{Er as n,I as r,Or as i,Sr as a,Tr as o,Vr as s,Zr as c,_ as l,br as u,di as d,en as f,hi as p,ii as m,qt as h,xr as g,y as _}from"./index--ZLWJhtp.js";import{t as v}from"./usePageActivateRefresh-CJkUcCiK.js";import{n as y}from"./dataTable-esDY4cOk.js";import{S as b,_ as x,b as S,v as C}from"./VTextField-BHVsCc73.js";import{t as w}from"./VSelect-fmsU8QCW.js";import{t as T}from"./VDataTableServer-CajuWgd2.js";import{t as E}from"./VDialog-BCdcmy4p.js";import{t as D}from"./usePageAutoRefresh-BCna76qI.js";var O={class:`font-weight-medium text-truncate d-inline-block`,style:{"max-width":`240px`}},k={class:`text-medium-emphasis`},A={class:`text-medium-emphasis`},j={class:`text-caption text-medium-emphasis`},M={class:`text-caption text-medium-emphasis`},N=i({name:`RetriesPage`,__name:`RetriesPage`,setup(i){let N=t(),P=m(!1),F=m([]),I=m(0),L=m(1),R=m(null),z=m(!1),B=m(null),V=[{label:`待重试`,value:`pending`},{label:`重试中`,value:`retrying`},{label:`成功`,value:`success`},{label:`失败`,value:`failed`}],H=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 U(e=!1){e||(P.value=!0);try{let e=(await f.getList(`/retries/`,{limit:200})).items||[];R.value&&(e=e.filter(e=>e.status===R.value)),I.value=e.length;let t=(L.value-1)*20;F.value=e.slice(t,t+20)}catch(t){e||(F.value=[],I.value=0,N(t instanceof Error?t.message:`加载重试队列失败`,`error`))}finally{e||(P.value=!1)}}async function W(e){try{await f.post(`/retries/${e.id}/retry`),U(),N(`重试已触发`)}catch(e){N(e.message||`操作失败`,`error`)}}function G(e){B.value=e.id,z.value=!0}async function K(){if(B.value)try{await f.delete(`/retries/${B.value}`),z.value=!1,U(),N(`已删除`)}catch(e){N(e.message||`删除失败`,`error`)}}function q(e){return e===`success`?`success`:e===`failed`?`error`:e===`retrying`?`warning`:`info`}function J(e){return e===`pending`?`待重试`:e===`retrying`?`重试中`:e===`success`?`成功`:e===`failed`?`失败`:e}function Y(e){return e.source_path&&e.target_path?`${e.source_path}${e.target_path}`:e.source_path||e.target_path||`文件推送`}return D(()=>U(!0),15e3),v(e=>U(e)),(t,i)=>(s(),g(e,{fluid:``,class:`pa-6`},{default:c(()=>[n(x,{elevation:`0`,border:``,rounded:`lg`},{default:c(()=>[n(S,{class:`d-flex align-center text-h6`},{default:c(()=>[i[5]||=o(` 重试队列 `,-1),n(l),n(w,{modelValue:R.value,"onUpdate:modelValue":[i[0]||=e=>R.value=e,i[1]||=e=>{L.value=1,U()}],items:V,"item-title":`label`,"item-value":`value`,label:`状态筛选`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`160px`},clearable:``},null,8,[`modelValue`])]),_:1}),n(T,{items:F.value,headers:d(H),"items-length":I.value,loading:P.value,page:L.value,"items-per-page":20,hover:``,density:`comfortable`,"onUpdate:page":i[2]||=e=>{L.value=e,U()}},{"item.status":c(({item:e})=>[n(_,{color:q(e.status),size:`x-small`,variant:`tonal`,label:``,border:`sm`},{default:c(()=>[o(p(J(e.status)),1)]),_:2},1032,[`color`])]),"item.operation":c(({item:e})=>[u(`span`,O,p(Y(e)),1)]),"item.server_name":c(({item:e})=>[u(`span`,k,p(e.server_name||``),1)]),"item.retry_count":c(({item:e})=>[u(`span`,A,p(e.retry_count||0)+` / `+p(e.max_retries||3),1)]),"item.next_retry_at":c(({item:e})=>[u(`span`,j,p(d(h)(e.next_retry_at)),1)]),"item.created_at":c(({item:e})=>[u(`span`,M,p(d(h)(e.created_at)),1)]),"item.actions":c(({item:e})=>[e.status===`pending`||e.status===`failed`?(s(),g(r,{key:0,variant:`text`,size:`x-small`,color:`primary`,density:`compact`,onClick:t=>W(e)},{default:c(()=>[...i[6]||=[o(` 重试 `,-1)]]),_:1},8,[`onClick`])):a(``,!0),n(r,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>G(e)},{default:c(()=>[...i[7]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]),"no-data":c(()=>[...i[8]||=[u(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`])]),_:1}),n(E,{modelValue:z.value,"onUpdate:modelValue":i[4]||=e=>z.value=e,"max-width":`400`},{default:c(()=>[n(x,{border:``},{default:c(()=>[n(S,null,{default:c(()=>[...i[9]||=[o(`确认删除`,-1)]]),_:1}),n(C,null,{default:c(()=>[...i[10]||=[o(`确定要删除此重试任务吗?`,-1)]]),_:1}),n(b,null,{default:c(()=>[n(l),n(r,{variant:`text`,onClick:i[3]||=e=>z.value=!1},{default:c(()=>[...i[11]||=[o(`取消`,-1)]]),_:1}),n(r,{color:`error`,variant:`flat`,onClick:K},{default:c(()=>[...i[12]||=[o(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{N as default};
import{n as e,t}from"./useSnackbar-yP7apGY8.js";import{Er as n,I as r,Or as i,Sr as a,Tr as o,Vr as s,Zr as c,_ as l,br as u,di as d,en as f,hi as p,ii as m,qt as h,xr as g,y as _}from"./index-_6O5JL4W.js";import{t as v}from"./usePageActivateRefresh-CzjzBWP4.js";import{n as y}from"./dataTable-esDY4cOk.js";import{S as b,_ as x,b as S,v as C}from"./VTextField-CD7WwKb1.js";import{t as w}from"./VSelect-CDx3fXFa.js";import{t as T}from"./VDataTableServer-lHUUBg35.js";import{t as E}from"./VDialog-DEJqI2_G.js";import{t as D}from"./usePageAutoRefresh-DLhUSsyH.js";var O={class:`font-weight-medium text-truncate d-inline-block`,style:{"max-width":`240px`}},k={class:`text-medium-emphasis`},A={class:`text-medium-emphasis`},j={class:`text-caption text-medium-emphasis`},M={class:`text-caption text-medium-emphasis`},N=i({name:`RetriesPage`,__name:`RetriesPage`,setup(i){let N=t(),P=m(!1),F=m([]),I=m(0),L=m(1),R=m(null),z=m(!1),B=m(null),V=[{label:`待重试`,value:`pending`},{label:`重试中`,value:`retrying`},{label:`成功`,value:`success`},{label:`失败`,value:`failed`}],H=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 U(e=!1){e||(P.value=!0);try{let e=(await f.getList(`/retries/`,{limit:200})).items||[];R.value&&(e=e.filter(e=>e.status===R.value)),I.value=e.length;let t=(L.value-1)*20;F.value=e.slice(t,t+20)}catch(t){e||(F.value=[],I.value=0,N(t instanceof Error?t.message:`加载重试队列失败`,`error`))}finally{e||(P.value=!1)}}async function W(e){try{await f.post(`/retries/${e.id}/retry`),U(),N(`重试已触发`)}catch(e){N(e.message||`操作失败`,`error`)}}function G(e){B.value=e.id,z.value=!0}async function K(){if(B.value)try{await f.delete(`/retries/${B.value}`),z.value=!1,U(),N(`已删除`)}catch(e){N(e.message||`删除失败`,`error`)}}function q(e){return e===`success`?`success`:e===`failed`?`error`:e===`retrying`?`warning`:`info`}function J(e){return e===`pending`?`待重试`:e===`retrying`?`重试中`:e===`success`?`成功`:e===`failed`?`失败`:e}function Y(e){return e.source_path&&e.target_path?`${e.source_path}${e.target_path}`:e.source_path||e.target_path||`文件推送`}return D(()=>U(!0),15e3),v(e=>U(e)),(t,i)=>(s(),g(e,{fluid:``,class:`pa-6`},{default:c(()=>[n(x,{elevation:`0`,border:``,rounded:`lg`},{default:c(()=>[n(S,{class:`d-flex align-center text-h6`},{default:c(()=>[i[5]||=o(` 重试队列 `,-1),n(l),n(w,{modelValue:R.value,"onUpdate:modelValue":[i[0]||=e=>R.value=e,i[1]||=e=>{L.value=1,U()}],items:V,"item-title":`label`,"item-value":`value`,label:`状态筛选`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`160px`},clearable:``},null,8,[`modelValue`])]),_:1}),n(T,{items:F.value,headers:d(H),"items-length":I.value,loading:P.value,page:L.value,"items-per-page":20,hover:``,density:`comfortable`,"onUpdate:page":i[2]||=e=>{L.value=e,U()}},{"item.status":c(({item:e})=>[n(_,{color:q(e.status),size:`x-small`,variant:`tonal`,label:``,border:`sm`},{default:c(()=>[o(p(J(e.status)),1)]),_:2},1032,[`color`])]),"item.operation":c(({item:e})=>[u(`span`,O,p(Y(e)),1)]),"item.server_name":c(({item:e})=>[u(`span`,k,p(e.server_name||``),1)]),"item.retry_count":c(({item:e})=>[u(`span`,A,p(e.retry_count||0)+` / `+p(e.max_retries||3),1)]),"item.next_retry_at":c(({item:e})=>[u(`span`,j,p(d(h)(e.next_retry_at)),1)]),"item.created_at":c(({item:e})=>[u(`span`,M,p(d(h)(e.created_at)),1)]),"item.actions":c(({item:e})=>[e.status===`pending`||e.status===`failed`?(s(),g(r,{key:0,variant:`text`,size:`x-small`,color:`primary`,density:`compact`,onClick:t=>W(e)},{default:c(()=>[...i[6]||=[o(` 重试 `,-1)]]),_:1},8,[`onClick`])):a(``,!0),n(r,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>G(e)},{default:c(()=>[...i[7]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]),"no-data":c(()=>[...i[8]||=[u(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`])]),_:1}),n(E,{modelValue:z.value,"onUpdate:modelValue":i[4]||=e=>z.value=e,"max-width":`400`},{default:c(()=>[n(x,{border:``},{default:c(()=>[n(S,null,{default:c(()=>[...i[9]||=[o(`确认删除`,-1)]]),_:1}),n(C,null,{default:c(()=>[...i[10]||=[o(`确定要删除此重试任务吗?`,-1)]]),_:1}),n(b,null,{default:c(()=>[n(l),n(r,{variant:`text`,onClick:i[3]||=e=>z.value=!1},{default:c(()=>[...i[11]||=[o(`取消`,-1)]]),_:1}),n(r,{color:`error`,variant:`flat`,onClick:K},{default:c(()=>[...i[12]||=[o(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{N 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 +1 @@
import{n as e,t}from"./VRow-w_jxb14C.js";import{Cr as n,Er as r,I as i,Or as a,Q as o,Sr as s,Tr as c,Ur as l,Vr as u,Z as d,Zr as f,br as p,di as m,gr as h,hi as g,ii as _,jr as v,mi as y,qr as b,xr as x,y as S,yr as C}from"./index--ZLWJhtp.js";import{t as w}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{_ as T,t as E}from"./VTextField-BHVsCc73.js";import{t as D}from"./VCheckbox-BgJP7F8j.js";import{o as O}from"./labels-C-A2d08W.js";import{t as k}from"./useServerCategories-DyEC_AbL.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=w(a({__name:`ServerCategoryPicker`,props:v({servers:{},loading:{type:Boolean,default:!1},maxHeight:{default:`280px`}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:[`update:modelValue`],setup(a){let v=b(a,`modelValue`),w=a,R=_(``),z=C(()=>new Set(v.value)),B=C(()=>{let e=R.value.trim().toLowerCase();return e?w.servers.filter(t=>t.name.toLowerCase().includes(e)||(t.domain||``).toLowerCase().includes(e)||(t.category||``).toLowerCase().includes(e)):w.servers}),V=C(()=>{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=C(()=>{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){v.value=[...e]}function K(e){let t=new Set(v.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(v.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(v.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(_,b)=>(u(),n(`div`,A,[p(`div`,j,[r(D,{"model-value":H.value,label:`全选`,density:`compact`,"hide-details":``,"onUpdate:modelValue":J},null,8,[`model-value`]),r(E,{modelValue:R.value,"onUpdate:modelValue":b[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`]),v.value.length>0?(u(),x(S,{key:0,size:`small`,color:`primary`,variant:`tonal`,label:``},{default:f(()=>[c(` 已选 `+g(v.value.length)+``,1)]),_:1})):s(``,!0),a.loading?(u(),x(d,{key:1,indeterminate:``,size:`18`,width:`2`})):s(``,!0)]),p(`div`,{class:`picker-scroll`,style:y({maxHeight:a.maxHeight})},[!a.loading&&V.value.length===0?(u(),n(`div`,M,` 暂无服务器 `)):s(``,!0),(u(!0),n(h,null,l(V.value,a=>(u(),n(`div`,{key:a.category,class:`mb-3`},[p(`div`,N,[r(i,{size:`x-small`,variant:`text`,color:W(a.category)?`primary`:`default`,onClick:e=>q(a.category)},{default:f(()=>[r(o,{size:`16`,class:`mr-1`},{default:f(()=>[c(g(W(a.category)?`mdi-checkbox-marked`:`mdi-checkbox-blank-outline`),1)]),_:2},1024),c(` `+g(a.label),1)]),_:2},1032,[`color`,`onClick`]),p(`span`,P,` (`+g(U(a))+`/`+g(a.servers.length)+`) `,1)]),r(t,{dense:``},{default:f(()=>[(u(!0),n(h,null,l(a.servers,t=>(u(),x(e,{key:t.id,cols:`12`,sm:`6`},{default:f(()=>[r(T,{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:f(()=>[p(`div`,F,[r(o,{color:m(O)(t.is_online),size:`10`},{default:f(()=>[...b[1]||=[c(`mdi-circle`,-1)]]),_:1},8,[`color`]),p(`span`,I,g(t.name),1)]),p(`div`,L,g(t.domain),1)]),_:2},1032,[`color`,`variant`,`onClick`])]),_:2},1024))),128))]),_:2},1024)]))),128))],4)]))}}),[[`__scopeId`,`data-v-4d1df917`]]);export{R as t};
import{n as e,t}from"./VRow-DQSkwKSy.js";import{Cr as n,Er as r,I as i,Or as a,Q as o,Sr as s,Tr as c,Ur as l,Vr as u,Z as d,Zr as f,br as p,di as m,gr as h,hi as g,ii as _,jr as v,mi as y,qr as b,xr as x,y as S,yr as C}from"./index-_6O5JL4W.js";import{t as w}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{_ as T,t as E}from"./VTextField-CD7WwKb1.js";import{t as D}from"./VCheckbox-CjcHGgQY.js";import{o as O}from"./labels-C-A2d08W.js";import{t as k}from"./useServerCategories-PByuvSRp.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=w(a({__name:`ServerCategoryPicker`,props:v({servers:{},loading:{type:Boolean,default:!1},maxHeight:{default:`280px`}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:[`update:modelValue`],setup(a){let v=b(a,`modelValue`),w=a,R=_(``),z=C(()=>new Set(v.value)),B=C(()=>{let e=R.value.trim().toLowerCase();return e?w.servers.filter(t=>t.name.toLowerCase().includes(e)||(t.domain||``).toLowerCase().includes(e)||(t.category||``).toLowerCase().includes(e)):w.servers}),V=C(()=>{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=C(()=>{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){v.value=[...e]}function K(e){let t=new Set(v.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(v.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(v.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(_,b)=>(u(),n(`div`,A,[p(`div`,j,[r(D,{"model-value":H.value,label:`全选`,density:`compact`,"hide-details":``,"onUpdate:modelValue":J},null,8,[`model-value`]),r(E,{modelValue:R.value,"onUpdate:modelValue":b[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`]),v.value.length>0?(u(),x(S,{key:0,size:`small`,color:`primary`,variant:`tonal`,label:``},{default:f(()=>[c(` 已选 `+g(v.value.length)+``,1)]),_:1})):s(``,!0),a.loading?(u(),x(d,{key:1,indeterminate:``,size:`18`,width:`2`})):s(``,!0)]),p(`div`,{class:`picker-scroll`,style:y({maxHeight:a.maxHeight})},[!a.loading&&V.value.length===0?(u(),n(`div`,M,` 暂无服务器 `)):s(``,!0),(u(!0),n(h,null,l(V.value,a=>(u(),n(`div`,{key:a.category,class:`mb-3`},[p(`div`,N,[r(i,{size:`x-small`,variant:`text`,color:W(a.category)?`primary`:`default`,onClick:e=>q(a.category)},{default:f(()=>[r(o,{size:`16`,class:`mr-1`},{default:f(()=>[c(g(W(a.category)?`mdi-checkbox-marked`:`mdi-checkbox-blank-outline`),1)]),_:2},1024),c(` `+g(a.label),1)]),_:2},1032,[`color`,`onClick`]),p(`span`,P,` (`+g(U(a))+`/`+g(a.servers.length)+`) `,1)]),r(t,{dense:``},{default:f(()=>[(u(!0),n(h,null,l(a.servers,t=>(u(),x(e,{key:t.id,cols:`12`,sm:`6`},{default:f(()=>[r(T,{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:f(()=>[p(`div`,F,[r(o,{color:m(O)(t.is_online),size:`10`},{default:f(()=>[...b[1]||=[c(`mdi-circle`,-1)]]),_:1},8,[`color`]),p(`span`,I,g(t.name),1)]),p(`div`,L,g(t.domain),1)]),_:2},1032,[`color`,`variant`,`onClick`])]),_:2},1024))),128))]),_:2},1024)]))),128))],4)]))}}),[[`__scopeId`,`data-v-4d1df917`]]);export{R as t};
@@ -1 +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-inline-detail[data-v-c2b9afab]{background:color-mix(in srgb, rgb(var(--v-theme-surface)) 95%, rgb(var(--v-theme-on-surface)));color:rgb(var(--v-theme-on-surface))}.server-inline-detail[data-v-c2b9afab] .v-list-item-title{color:rgb(var(--v-theme-on-surface))}.server-inline-detail[data-v-c2b9afab] .v-list-item-subtitle{color:rgba(var(--v-theme-on-surface), .72)}.server-unset-path-table[data-v-b445ac4d] .v-data-table__td--expand-column,.server-unset-path-table[data-v-b445ac4d] .v-data-table-column--expand,.server-unset-path-table[data-v-b445ac4d] th.v-data-table__th--expand{width:0!important;padding:0!important;display:none!important}.server-unset-path-table[data-v-b445ac4d] tr.v-data-table__expanded__row>td{border-bottom:none;background:0 0!important}.unset-path-panel--highlight[data-v-b445ac4d]{scroll-margin-top:80px;border-color:rgb(var(--v-theme-warning))!important;box-shadow:0 0 0 2px rgba(var(--v-theme-warning), .35)!important}.agent-diag-log[data-v-a369f18c]{white-space:pre-wrap;word-break:break-word;max-height:240px;overflow:auto}.server-main-table[data-v-a74769a6] .v-data-table__td--expand-column,.server-main-table[data-v-a74769a6] .v-data-table-column--expand,.server-main-table[data-v-a74769a6] th.v-data-table__th--expand{width:0!important;padding:0!important;display:none!important}.server-main-table[data-v-a74769a6] tr.v-data-table__expanded__row>td{border-bottom:none;background:0 0!important}.servers-category-panels[data-v-a74769a6] .v-expansion-panel-text__wrapper{background:color-mix(in srgb, rgb(var(--v-theme-surface)) 95%, rgb(var(--v-theme-on-surface)));color:rgb(var(--v-theme-on-surface))}.servers-category-panels[data-v-a74769a6] .v-table{color:rgb(var(--v-theme-on-surface));background:0 0}
@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-inline-detail[data-v-c2b9afab]{background:color-mix(in srgb, rgb(var(--v-theme-surface)) 95%, rgb(var(--v-theme-on-surface)));color:rgb(var(--v-theme-on-surface))}.server-inline-detail[data-v-c2b9afab] .v-list-item-title{color:rgb(var(--v-theme-on-surface))}.server-inline-detail[data-v-c2b9afab] .v-list-item-subtitle{color:rgba(var(--v-theme-on-surface), .72)}.server-unset-path-table[data-v-b445ac4d] .v-data-table__td--expand-column,.server-unset-path-table[data-v-b445ac4d] .v-data-table-column--expand,.server-unset-path-table[data-v-b445ac4d] th.v-data-table__th--expand{width:0!important;padding:0!important;display:none!important}.server-unset-path-table[data-v-b445ac4d] tr.v-data-table__expanded__row>td{border-bottom:none;background:0 0!important}.unset-path-panel--highlight[data-v-b445ac4d]{scroll-margin-top:80px;border-color:rgb(var(--v-theme-warning))!important;box-shadow:0 0 0 2px rgba(var(--v-theme-warning), .35)!important}.agent-diag-log[data-v-a369f18c]{white-space:pre-wrap;word-break:break-word;max-height:240px;overflow:auto}.server-main-table[data-v-b090730d] .v-data-table__td--expand-column,.server-main-table[data-v-b090730d] .v-data-table-column--expand,.server-main-table[data-v-b090730d] th.v-data-table__th--expand{width:0!important;padding:0!important;display:none!important}.server-main-table[data-v-b090730d] tr.v-data-table__expanded__row>td{border-bottom:none;background:0 0!important}.servers-category-panels[data-v-b090730d] .v-expansion-panel-text__wrapper{background:color-mix(in srgb, rgb(var(--v-theme-surface)) 95%, rgb(var(--v-theme-on-surface)));color:rgb(var(--v-theme-on-surface))}.servers-category-panels[data-v-b090730d] .v-table{color:rgb(var(--v-theme-on-surface));background:0 0}
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
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 +0,0 @@
import{Cr as e,Er as t,Or as n,Q as r,Sr as i,Tr as a,Ur as o,Vr as s,Zr as c,gr as l,l as u,m as d,xr as f}from"./index--ZLWJhtp.js";import{t as p}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{_ as m,t as h,v as g}from"./VTextField-BHVsCc73.js";import{t as _}from"./VSkeletonLoader-DFaRbI5C.js";var v=p(n({__name:`TerminalServerPicker`,props:{servers:{},search:{},loading:{type:Boolean,default:!1},mode:{default:`inline`}},emits:[`update:search`,`select`],setup(n){return(p,v)=>n.mode===`inline`?(s(),f(m,{key:0,border:``,rounded:`lg`,class:`empty-server-picker`,"max-width":`520`,width:`100%`},{default:c(()=>[t(g,{class:`pa-3`},{default:c(()=>[t(h,{"model-value":n.search,"prepend-inner-icon":`mdi-magnify`,placeholder:`搜索服务器…`,variant:`outlined`,density:`compact`,"hide-details":``,class:`mb-2`,"onUpdate:modelValue":v[0]||=e=>p.$emit(`update:search`,e)},null,8,[`model-value`]),n.loading?(s(),f(_,{key:0,type:`list-item@6`,class:`mb-2`})):(s(),f(u,{key:1,density:`compact`,class:`empty-server-picker__list`,nav:``},{default:c(()=>[(s(!0),e(l,null,o(n.servers,e=>(s(),f(d,{key:e.id,title:e.name,subtitle:e.domain,rounded:`lg`,onClick:t=>p.$emit(`select`,e.id)},{prepend:c(()=>[t(r,{color:e.is_online?`success`:`grey`,size:`8`},{default:c(()=>[...v[2]||=[a(`mdi-circle`,-1)]]),_:1},8,[`color`])]),_:2},1032,[`title`,`subtitle`,`onClick`]))),128)),n.servers.length===0?(s(),f(d,{key:0,class:`text-medium-emphasis`},{default:c(()=>[...v[3]||=[a(` 暂无匹配的服务器 `,-1)]]),_:1})):i(``,!0)]),_:1}))]),_:1})]),_:1})):(s(),e(l,{key:1},[t(h,{"model-value":n.search,"prepend-inner-icon":`mdi-magnify`,placeholder:`搜索…`,variant:`outlined`,density:`compact`,class:`mb-3`,"onUpdate:modelValue":v[1]||=e=>p.$emit(`update:search`,e)},null,8,[`model-value`]),n.loading?(s(),f(_,{key:0,type:`list-item@6`,class:`mb-2`})):(s(),f(u,{key:1,density:`compact`,"max-height":`300`,style:{"overflow-y":`auto`}},{default:c(()=>[(s(!0),e(l,null,o(n.servers,e=>(s(),f(d,{key:e.id,title:e.name,subtitle:e.domain,onClick:t=>p.$emit(`select`,e.id)},{prepend:c(()=>[t(r,{color:e.is_online?`success`:`grey`,size:`8`},{default:c(()=>[...v[4]||=[a(`mdi-circle`,-1)]]),_:1},8,[`color`])]),_:2},1032,[`title`,`subtitle`,`onClick`]))),128)),n.servers.length===0?(s(),f(d,{key:0,class:`text-medium-emphasis`},{default:c(()=>[...v[5]||=[a(` 暂无匹配的服务器 `,-1)]]),_:1})):i(``,!0)]),_:1}))],64))}}),[[`__scopeId`,`data-v-4033a0ea`]]);export{v as t};
@@ -1 +0,0 @@
.empty-server-picker__list[data-v-4033a0ea]{max-height:min(42vh,320px);overflow-y:auto}
@@ -1 +1 @@
import{Er as e,Kr as t,Mr as n,Un as r,hn as i,ii as a,kn as o,r as s,rr as c,vn as l,wn as u}from"./index--ZLWJhtp.js";import{l as d,m as f,u as p}from"./VTextField-BHVsCc73.js";import{d as m,f as h}from"./VSelect-fmsU8QCW.js";var g=o({...c(p(),[`direction`]),...c(h(),[`inline`])},`VCheckbox`),_=u()({name:`VCheckbox`,inheritAttrs:!1,props:g(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(o,{attrs:c,slots:u}){let p=i(o,`modelValue`),{isFocused:h,focus:g,blur:_}=f(o),v=a(),y=t();return l(()=>{let[t,i]=r(c),a=d.filterProps(o),s=m.filterProps(o);return e(d,n({ref:v,class:[`v-checkbox`,o.class]},t,a,{modelValue:p.value,"onUpdate:modelValue":e=>p.value=e,id:o.id||`checkbox-${y}`,focused:h.value,style:o.style}),{...u,default:({id:t,messagesId:r,isDisabled:a,isReadonly:o,isValid:c})=>e(m,n(s,{id:t.value,"aria-describedby":r.value,disabled:a.value,readonly:o.value},i,{error:c.value===!1,modelValue:p.value,"onUpdate:modelValue":e=>p.value=e,onFocus:g,onBlur:_}),u)})}),s({},v)}});export{_ as t};
import{Er as e,Kr as t,Mr as n,Un as r,hn as i,ii as a,kn as o,r as s,rr as c,vn as l,wn as u}from"./index-_6O5JL4W.js";import{l as d,m as f,u as p}from"./VTextField-CD7WwKb1.js";import{d as m,f as h}from"./VSelect-CDx3fXFa.js";var g=o({...c(p(),[`direction`]),...c(h(),[`inline`])},`VCheckbox`),_=u()({name:`VCheckbox`,inheritAttrs:!1,props:g(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(o,{attrs:c,slots:u}){let p=i(o,`modelValue`),{isFocused:h,focus:g,blur:_}=f(o),v=a(),y=t();return l(()=>{let[t,i]=r(c),a=d.filterProps(o),s=m.filterProps(o);return e(d,n({ref:v,class:[`v-checkbox`,o.class]},t,a,{modelValue:p.value,"onUpdate:modelValue":e=>p.value=e,id:o.id||`checkbox-${y}`,focused:h.value,style:o.style}),{...u,default:({id:t,messagesId:r,isDisabled:a,isReadonly:o,isValid:c})=>e(m,n(s,{id:t.value,"aria-describedby":r.value,disabled:a.value,readonly:o.value},i,{error:c.value===!1,modelValue:p.value,"onUpdate:modelValue":e=>p.value=e,onFocus:g,onBlur:_}),u)})}),s({},v)}});export{_ as t};
File diff suppressed because one or more lines are too long
@@ -1 +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-19TycHjq.js";import{Er as v,Hr as y,Mr as b,Tn as x,br as S,ci as C,gr as w,kn as T,li as E,rr as D,v as te,vn as ne,wn as O,yr as k}from"./index--ZLWJhtp.js";var A=T({itemsLength:{type:[Number,String],required:!0},..._(),...d(),...e()},`VDataTableServer`),j=O()({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:T}=r(e),{initialSortOrder:O,sortBy:A,multiSort:j,mustSort:M}=a(e),{page:N,itemsPerPage:P}=g(e),{disableSort:F}=E(e),I=k(()=>parseInt(e.itemsLength,10)),{columns:L,headers:R}=s(e,{groupBy:T,showSelect:C(()=>e.showSelect),showExpand:C(()=>e.showExpand)}),{items:z}=c(e,L),{toggleSort:B}=p({initialSortOrder:O,sortBy:A,multiSort:j,mustSort:M,page:N}),{opened:V,isGroupOpen:H,toggleGroup:re,extractRows:U}=l({groupBy:T,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,T,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=k(()=>U(z.value));ee({page:N,itemsPerPage:P,sortBy:A,groupBy:T,search:C(()=>e.search)}),y(`v-data-table`,{toggleSort:B,sortBy:A}),x({VDataTableRows:{hideNoData:C(()=>e.hideNoData),noDataText:C(()=>e.noDataText),loading:C(()=>e.loading),loadingText:C(()=>e.loadingText)}});let $=k(()=>({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}));ne(()=>{let n=o.filterProps(e),r=i.filterProps(D(e,[`multiSort`])),a=f.filterProps(e),s=t.filterProps(e);return v(t,b({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):S(w,null,[_.colgroup?.($.value),!e.hideDefaultHeader&&S(`thead`,{key:`thead`,class:`v-data-table__thead`,role:`rowgroup`},[v(i,b(r,{multiSort:!!e.multiSort}),_)]),_.thead?.($.value),!e.hideDefaultBody&&S(`tbody`,{class:`v-data-table__tbody`,role:`rowgroup`},[_[`body.prepend`]?.($.value),_.body?_.body($.value):v(f,b(d,a,{items:Y.value}),_),_[`body.append`]?.($.value)]),_.tbody?.($.value),_.tfoot?.($.value)]),bottom:()=>_.bottom?_.bottom($.value):!e.hideDefaultFooter&&S(w,null,[v(te,null,null),v(o,n,{prepend:_[`footer.prepend`]})])})})}});export{j as t};
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-xIamJ7nl.js";import{Er as v,Hr as y,Mr as b,Tn as x,br as S,ci as C,gr as w,kn as T,li as E,rr as D,v as te,vn as ne,wn as O,yr as k}from"./index-_6O5JL4W.js";var A=T({itemsLength:{type:[Number,String],required:!0},..._(),...d(),...e()},`VDataTableServer`),j=O()({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:T}=r(e),{initialSortOrder:O,sortBy:A,multiSort:j,mustSort:M}=a(e),{page:N,itemsPerPage:P}=g(e),{disableSort:F}=E(e),I=k(()=>parseInt(e.itemsLength,10)),{columns:L,headers:R}=s(e,{groupBy:T,showSelect:C(()=>e.showSelect),showExpand:C(()=>e.showExpand)}),{items:z}=c(e,L),{toggleSort:B}=p({initialSortOrder:O,sortBy:A,multiSort:j,mustSort:M,page:N}),{opened:V,isGroupOpen:H,toggleGroup:re,extractRows:U}=l({groupBy:T,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,T,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=k(()=>U(z.value));ee({page:N,itemsPerPage:P,sortBy:A,groupBy:T,search:C(()=>e.search)}),y(`v-data-table`,{toggleSort:B,sortBy:A}),x({VDataTableRows:{hideNoData:C(()=>e.hideNoData),noDataText:C(()=>e.noDataText),loading:C(()=>e.loading),loadingText:C(()=>e.loadingText)}});let $=k(()=>({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}));ne(()=>{let n=o.filterProps(e),r=i.filterProps(D(e,[`multiSort`])),a=f.filterProps(e),s=t.filterProps(e);return v(t,b({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):S(w,null,[_.colgroup?.($.value),!e.hideDefaultHeader&&S(`thead`,{key:`thead`,class:`v-data-table__thead`,role:`rowgroup`},[v(i,b(r,{multiSort:!!e.multiSort}),_)]),_.thead?.($.value),!e.hideDefaultBody&&S(`tbody`,{class:`v-data-table__tbody`,role:`rowgroup`},[_[`body.prepend`]?.($.value),_.body?_.body($.value):v(f,b(d,a,{items:Y.value}),_),_[`body.append`]?.($.value)]),_.tbody?.($.value),_.tfoot?.($.value)]),bottom:()=>_.bottom?_.bottom($.value):!e.hideDefaultFooter&&S(w,null,[v(te,null,null),v(o,n,{prepend:_[`footer.prepend`]})])})})}});export{j as t};
@@ -1 +1 @@
import{Er as e,Mr as t,N as n,Nr as r,Yr as i,a,et as o,hn as s,i as c,ii as l,kn as u,o as d,r as f,rr as p,vn as m,wn as h}from"./index--ZLWJhtp.js";var g=u({fullscreen:Boolean,scrollable:Boolean,...p(a({captureFocus:!0,origin:`center center`,scrollStrategy:`block`,transition:{component:n},zIndex:2400,retainFocus:!0}),[`disableInitialFocus`])},`VDialog`),_=h()({name:`VDialog`,props:g(),emits:{"update:modelValue":e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(n,{emit:a,slots:u}){let p=s(n,`modelValue`),{scopeId:h}=d(),g=l();function _(){a(`afterEnter`),(n.scrim||n.retainFocus)&&g.value?.contentEl&&!g.value.contentEl.contains(document.activeElement)&&g.value.contentEl.focus({preventScroll:!0})}function v(){a(`afterLeave`)}return i(p,async e=>{e||(await r(),g.value.activatorEl?.focus({preventScroll:!0}))}),m(()=>{let r=c.filterProps(n),i=t({"aria-haspopup":`dialog`},n.activatorProps),a=t({tabindex:-1},n.contentProps);return e(c,t({ref:g,class:[`v-dialog`,{"v-dialog--fullscreen":n.fullscreen,"v-dialog--scrollable":n.scrollable},n.class],style:n.style},r,{modelValue:p.value,"onUpdate:modelValue":e=>p.value=e,"aria-modal":`true`,activatorProps:i,contentProps:a,height:n.fullscreen?void 0:n.height,width:n.fullscreen?void 0:n.width,maxHeight:n.fullscreen?void 0:n.maxHeight,maxWidth:n.fullscreen?void 0:n.maxWidth,role:`dialog`,onAfterEnter:_,onAfterLeave:v},h),{activator:u.activator,default:(...t)=>e(o,{root:`VDialog`},{default:()=>[u.default?.(...t)]})})}),f({},g)}});export{_ as t};
import{Er as e,Mr as t,N as n,Nr as r,Yr as i,a,et as o,hn as s,i as c,ii as l,kn as u,o as d,r as f,rr as p,vn as m,wn as h}from"./index-_6O5JL4W.js";var g=u({fullscreen:Boolean,scrollable:Boolean,...p(a({captureFocus:!0,origin:`center center`,scrollStrategy:`block`,transition:{component:n},zIndex:2400,retainFocus:!0}),[`disableInitialFocus`])},`VDialog`),_=h()({name:`VDialog`,props:g(),emits:{"update:modelValue":e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(n,{emit:a,slots:u}){let p=s(n,`modelValue`),{scopeId:h}=d(),g=l();function _(){a(`afterEnter`),(n.scrim||n.retainFocus)&&g.value?.contentEl&&!g.value.contentEl.contains(document.activeElement)&&g.value.contentEl.focus({preventScroll:!0})}function v(){a(`afterLeave`)}return i(p,async e=>{e||(await r(),g.value.activatorEl?.focus({preventScroll:!0}))}),m(()=>{let r=c.filterProps(n),i=t({"aria-haspopup":`dialog`},n.activatorProps),a=t({tabindex:-1},n.contentProps);return e(c,t({ref:g,class:[`v-dialog`,{"v-dialog--fullscreen":n.fullscreen,"v-dialog--scrollable":n.scrollable},n.class],style:n.style},r,{modelValue:p.value,"onUpdate:modelValue":e=>p.value=e,"aria-modal":`true`,activatorProps:i,contentProps:a,height:n.fullscreen?void 0:n.height,width:n.fullscreen?void 0:n.width,maxHeight:n.fullscreen?void 0:n.maxHeight,maxWidth:n.fullscreen?void 0:n.maxWidth,role:`dialog`,onAfterEnter:_,onAfterLeave:v},h),{activator:u.activator,default:(...t)=>e(o,{root:`VDialog`},{default:()=>[u.default?.(...t)]})})}),f({},g)}});export{_ as t};
@@ -1 +1 @@
import{Ar as e,Er as t,Hr as n,On as r,Q as i,Qr as a,R as o,Tn as s,X as c,Y as l,_n as u,at as d,br as f,c as p,ci as m,cn as h,dt as g,et as _,ft as v,ht as y,ir as b,it as x,k as S,kn as C,lt as w,mi as T,mt as E,nt as D,pi as O,pr as k,pt as A,rt as j,s as M,sn as N,vn as P,wn as F,yr as I}from"./index--ZLWJhtp.js";var L=Symbol.for(`vuetify:v-expansion-panel`),R=C({...r(),...M()},`VExpansionPanelText`),z=F()({name:`VExpansionPanelText`,props:R(),setup(n,{slots:r}){let i=e(L);if(!i)throw Error(`[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel`);let{hasContent:o,onAfterLeave:s}=p(n,i.isSelected);return P(()=>t(S,{onAfterLeave:s},{default:()=>[a(f(`div`,{class:O([`v-expansion-panel-text`,n.class]),style:T(n.style)},[r.default&&o.value&&f(`div`,{class:`v-expansion-panel-text__wrapper`},[r.default?.()])]),[[k,i.isSelected.value]])]})),{}}}),B=C({color:String,expandIcon:{type:u,default:`$expand`},collapseIcon:{type:u,default:`$collapse`},hideActions:Boolean,focusable:Boolean,static:Boolean,ripple:{type:[Boolean,Object],default:!1},readonly:Boolean,...r(),...l()},`VExpansionPanelTitle`),V=F()({name:`VExpansionPanelTitle`,directives:{vRipple:o},props:B(),setup(n,{slots:r}){let s=e(L);if(!s)throw Error(`[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel`);let{backgroundColorClasses:l,backgroundColorStyles:u}=w(()=>n.color),{dimensionStyles:d}=c(n),p=I(()=>({collapseIcon:n.collapseIcon,disabled:s.disabled.value,expanded:s.isSelected.value,expandIcon:n.expandIcon,readonly:n.readonly})),h=m(()=>s.isSelected.value?n.collapseIcon:n.expandIcon);return P(()=>a(f(`button`,{class:O([`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:T([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},[f(`span`,{class:`v-expansion-panel-title__overlay`},null),r.default?.(p.value),!n.hideActions&&t(_,{defaults:{VIcon:{icon:h.value}}},{default:()=>[f(`span`,{class:`v-expansion-panel-title__icon`},[r.actions?.(p.value)??t(i,null,null)])]})]),[[o,n.ripple]])),{}}}),H=C({title:String,text:String,bgColor:String,...E(),...D(),...v(),...g(),...B(),...R()},`VExpansionPanel`),U=F()({name:`VExpansionPanel`,props:H(),emits:{"group:selected":e=>!0},setup(e,{slots:r}){let i=d(e,L),{backgroundColorClasses:a,backgroundColorStyles:o}=w(()=>e.bgColor),{elevationClasses:s}=y(e),{roundedClasses:c}=A(e),l=m(()=>i?.disabled.value||e.disabled),u=I(()=>i.group.items.value.reduce((e,t,n)=>(i.group.selected.value.includes(t.id)&&e.push(n),e),[])),p=I(()=>{let e=i.group.items.value.findIndex(e=>e.id===i.id);return!i.isSelected.value&&u.value.some(t=>t-e===1)}),h=I(()=>{let e=i.group.items.value.findIndex(e=>e.id===i.id);return!i.isSelected.value&&u.value.some(t=>t-e===-1)});return n(L,i),P(()=>{let n=!!(r.text||e.text),u=!!(r.title||e.title),d=V.filterProps(e),m=z.filterProps(e);return t(e.tag,{class:O([`v-expansion-panel`,{"v-expansion-panel--active":i.isSelected.value,"v-expansion-panel--before-active":p.value,"v-expansion-panel--after-active":h.value,"v-expansion-panel--disabled":l.value},c.value,a.value,e.class]),style:T([o.value,e.style])},{default:()=>[f(`div`,{class:O([`v-expansion-panel__shadow`,...s.value])},null),t(_,{defaults:{VExpansionPanelTitle:{...d},VExpansionPanelText:{...m}}},{default:()=>[u&&t(V,{key:`title`},{default:()=>[r.title?r.title():e.title]}),n&&t(z,{key:`text`},{default:()=>[r.text?r.text():e.text]}),r.default?.()]})]})}),{groupItem:i}}}),W=[`default`,`accordion`,`inset`,`popout`],G=C({flat:Boolean,...j(),...b(H(),[`bgColor`,`collapseIcon`,`color`,`eager`,`elevation`,`expandIcon`,`focusable`,`hideActions`,`readonly`,`ripple`,`static`]),...v(),...N(),...r(),...g(),variant:{type:String,default:`default`,validator:e=>W.includes(e)}},`VExpansionPanels`),K=F()({name:`VExpansionPanels`,props:G(),emits:{"update:modelValue":e=>!0},setup(e,{slots:n}){let{next:r,prev:i}=x(e,L),{themeClasses:a}=h(e),{roundedClasses:o}=A(e),c=m(()=>e.variant&&`v-expansion-panels--variant-${e.variant}`);return s({VExpansionPanel:{bgColor:m(()=>e.bgColor),collapseIcon:m(()=>e.collapseIcon),color:m(()=>e.color),eager:m(()=>e.eager),elevation:m(()=>e.elevation),expandIcon:m(()=>e.expandIcon),focusable:m(()=>e.focusable),hideActions:m(()=>e.hideActions),readonly:m(()=>e.readonly),ripple:m(()=>e.ripple),static:m(()=>e.static)}}),P(()=>t(e.tag,{class:O([`v-expansion-panels`,{"v-expansion-panels--flat":e.flat,"v-expansion-panels--tile":e.tile},a.value,o.value,c.value,e.class]),style:T(e.style)},{default:()=>[n.default?.({prev:i,next:r})]})),{next:r,prev:i}}});export{z as i,U as n,V as r,K as t};
import{Ar as e,Er as t,Hr as n,On as r,Q as i,Qr as a,R as o,Tn as s,X as c,Y as l,_n as u,at as d,br as f,c as p,ci as m,cn as h,dt as g,et as _,ft as v,ht as y,ir as b,it as x,k as S,kn as C,lt as w,mi as T,mt as E,nt as D,pi as O,pr as k,pt as A,rt as j,s as M,sn as N,vn as P,wn as F,yr as I}from"./index-_6O5JL4W.js";var L=Symbol.for(`vuetify:v-expansion-panel`),R=C({...r(),...M()},`VExpansionPanelText`),z=F()({name:`VExpansionPanelText`,props:R(),setup(n,{slots:r}){let i=e(L);if(!i)throw Error(`[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel`);let{hasContent:o,onAfterLeave:s}=p(n,i.isSelected);return P(()=>t(S,{onAfterLeave:s},{default:()=>[a(f(`div`,{class:O([`v-expansion-panel-text`,n.class]),style:T(n.style)},[r.default&&o.value&&f(`div`,{class:`v-expansion-panel-text__wrapper`},[r.default?.()])]),[[k,i.isSelected.value]])]})),{}}}),B=C({color:String,expandIcon:{type:u,default:`$expand`},collapseIcon:{type:u,default:`$collapse`},hideActions:Boolean,focusable:Boolean,static:Boolean,ripple:{type:[Boolean,Object],default:!1},readonly:Boolean,...r(),...l()},`VExpansionPanelTitle`),V=F()({name:`VExpansionPanelTitle`,directives:{vRipple:o},props:B(),setup(n,{slots:r}){let s=e(L);if(!s)throw Error(`[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel`);let{backgroundColorClasses:l,backgroundColorStyles:u}=w(()=>n.color),{dimensionStyles:d}=c(n),p=I(()=>({collapseIcon:n.collapseIcon,disabled:s.disabled.value,expanded:s.isSelected.value,expandIcon:n.expandIcon,readonly:n.readonly})),h=m(()=>s.isSelected.value?n.collapseIcon:n.expandIcon);return P(()=>a(f(`button`,{class:O([`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:T([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},[f(`span`,{class:`v-expansion-panel-title__overlay`},null),r.default?.(p.value),!n.hideActions&&t(_,{defaults:{VIcon:{icon:h.value}}},{default:()=>[f(`span`,{class:`v-expansion-panel-title__icon`},[r.actions?.(p.value)??t(i,null,null)])]})]),[[o,n.ripple]])),{}}}),H=C({title:String,text:String,bgColor:String,...E(),...D(),...v(),...g(),...B(),...R()},`VExpansionPanel`),U=F()({name:`VExpansionPanel`,props:H(),emits:{"group:selected":e=>!0},setup(e,{slots:r}){let i=d(e,L),{backgroundColorClasses:a,backgroundColorStyles:o}=w(()=>e.bgColor),{elevationClasses:s}=y(e),{roundedClasses:c}=A(e),l=m(()=>i?.disabled.value||e.disabled),u=I(()=>i.group.items.value.reduce((e,t,n)=>(i.group.selected.value.includes(t.id)&&e.push(n),e),[])),p=I(()=>{let e=i.group.items.value.findIndex(e=>e.id===i.id);return!i.isSelected.value&&u.value.some(t=>t-e===1)}),h=I(()=>{let e=i.group.items.value.findIndex(e=>e.id===i.id);return!i.isSelected.value&&u.value.some(t=>t-e===-1)});return n(L,i),P(()=>{let n=!!(r.text||e.text),u=!!(r.title||e.title),d=V.filterProps(e),m=z.filterProps(e);return t(e.tag,{class:O([`v-expansion-panel`,{"v-expansion-panel--active":i.isSelected.value,"v-expansion-panel--before-active":p.value,"v-expansion-panel--after-active":h.value,"v-expansion-panel--disabled":l.value},c.value,a.value,e.class]),style:T([o.value,e.style])},{default:()=>[f(`div`,{class:O([`v-expansion-panel__shadow`,...s.value])},null),t(_,{defaults:{VExpansionPanelTitle:{...d},VExpansionPanelText:{...m}}},{default:()=>[u&&t(V,{key:`title`},{default:()=>[r.title?r.title():e.title]}),n&&t(z,{key:`text`},{default:()=>[r.text?r.text():e.text]}),r.default?.()]})]})}),{groupItem:i}}}),W=[`default`,`accordion`,`inset`,`popout`],G=C({flat:Boolean,...j(),...b(H(),[`bgColor`,`collapseIcon`,`color`,`eager`,`elevation`,`expandIcon`,`focusable`,`hideActions`,`readonly`,`ripple`,`static`]),...v(),...N(),...r(),...g(),variant:{type:String,default:`default`,validator:e=>W.includes(e)}},`VExpansionPanels`),K=F()({name:`VExpansionPanels`,props:G(),emits:{"update:modelValue":e=>!0},setup(e,{slots:n}){let{next:r,prev:i}=x(e,L),{themeClasses:a}=h(e),{roundedClasses:o}=A(e),c=m(()=>e.variant&&`v-expansion-panels--variant-${e.variant}`);return s({VExpansionPanel:{bgColor:m(()=>e.bgColor),collapseIcon:m(()=>e.collapseIcon),color:m(()=>e.color),eager:m(()=>e.eager),elevation:m(()=>e.elevation),expandIcon:m(()=>e.expandIcon),focusable:m(()=>e.focusable),hideActions:m(()=>e.hideActions),readonly:m(()=>e.readonly),ripple:m(()=>e.ripple),static:m(()=>e.static)}}),P(()=>t(e.tag,{class:O([`v-expansion-panels`,{"v-expansion-panels--flat":e.flat,"v-expansion-panels--tile":e.tile},a.value,o.value,c.value,e.class]),style:T(e.style)},{default:()=>[n.default?.({prev:i,next:r})]})),{next:r,prev:i}}});export{z as i,U as n,V as r,K as t};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{On as e,br as t,ii as n,kn as r,mi as i,pi as a,r as o,vn as s,wn as c}from"./index--ZLWJhtp.js";import{d as l,f as u}from"./VTextField-BHVsCc73.js";var d=r({...e(),...u()},`VForm`),f=c()({name:`VForm`,props:d(),emits:{"update:modelValue":e=>!0,submit:e=>!0},setup(e,{slots:r,emit:c}){let u=l(e),d=n();function f(e){e.preventDefault(),u.reset()}function p(e){let t=e,n=u.validate();t.then=n.then.bind(n),t.catch=n.catch.bind(n),t.finally=n.finally.bind(n),c(`submit`,t),t.defaultPrevented||n.then(({valid:e})=>{e&&d.value?.submit()}),t.preventDefault()}return s(()=>t(`form`,{ref:d,class:a([`v-form`,e.class]),style:i(e.style),novalidate:!0,onReset:f,onSubmit:p},[r.default?.({get errors(){return u.errors.value},get isDisabled(){return u.isDisabled.value},get isReadonly(){return u.isReadonly.value},get isValidating(){return u.isValidating.value},get isValid(){return u.isValid.value},get items(){return u.items.value},validate:u.validate,reset:u.reset,resetValidation:u.resetValidation})])),o(u,d)}});export{f as t};
import{On as e,br as t,ii as n,kn as r,mi as i,pi as a,r as o,vn as s,wn as c}from"./index-_6O5JL4W.js";import{d as l,f as u}from"./VTextField-CD7WwKb1.js";var d=r({...e(),...u()},`VForm`),f=c()({name:`VForm`,props:d(),emits:{"update:modelValue":e=>!0,submit:e=>!0},setup(e,{slots:r,emit:c}){let u=l(e),d=n();function f(e){e.preventDefault(),u.reset()}function p(e){let t=e,n=u.validate();t.then=n.then.bind(n),t.catch=n.catch.bind(n),t.finally=n.finally.bind(n),c(`submit`,t),t.defaultPrevented||n.then(({valid:e})=>{e&&d.value?.submit()}),t.preventDefault()}return s(()=>t(`form`,{ref:d,class:a([`v-form`,e.class]),style:i(e.style),novalidate:!0,onReset:f,onSubmit:p},[r.default?.({get errors(){return u.errors.value},get isDisabled(){return u.isDisabled.value},get isReadonly(){return u.isReadonly.value},get isValidating(){return u.isValidating.value},get isValid(){return u.isValid.value},get items(){return u.items.value},validate:u.validate,reset:u.reset,resetValidation:u.resetValidation})])),o(u,d)}});export{f as t};
@@ -1 +1 @@
import{On as e,Rn as t,dr as n,dt as r,er as i,fi as a,gt as o,kn as s,kr as c,un as l,wn as u,yr as d}from"./index--ZLWJhtp.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:i(f),offset:i(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=s({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},...e(),...r()},`VCol`),b=u()({name:`VCol`,props:y(),setup(e,{slots:t}){let n=d(()=>h(e.cols).size),r=d(()=>h(e.offset).size),i=d(()=>{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()=>c(e.tag,{class:[i.value.classes,e.class],style:[{"--v-col-size-base":n.value},{"--v-col-offset-base":r.value},i.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=s({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],...e(),...o(),...r()},`VRow`),N=u()({name:`VRow`,props:M(),setup(e,{slots:r}){e.dense&&n(`dense`,`density="comfortable"`);let i=d(()=>{let t=[],n;for(n in k)k[n].forEach(r=>{let i=e[r],a=j(n,r,i);a&&t.push(a)});return t.push({"v-row--no-gutters":e.noGutters,"v-row--density-default":e.density===`default`&&!e.noGutters&&!e.dense,"v-row--density-compact":e.density===`compact`,"v-row--density-comfortable":e.density===`comfortable`||e.dense,[`align-${e.align}`]:e.align,[`justify-${e.justify}`]:e.justify,[`align-content-${e.alignContent}`]:e.alignContent}),t}),a=d(()=>Array.isArray(e.gap)?t(e.gap[0]||0):t(e.gap)),o=d(()=>Array.isArray(e.gap)?t(e.gap[1]||0):a.value);return()=>c(e.tag,{class:[`v-row`,i.value,e.class],style:[{"--v-col-gap-x":a.value,"--v-col-gap-y":o.value,"--v-row-columns":e.size},e.style]},r.default?.())}});export{b as n,N as t};
import{On as e,Rn as t,dr as n,dt as r,er as i,fi as a,gt as o,kn as s,kr as c,un as l,wn as u,yr as d}from"./index-_6O5JL4W.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:i(f),offset:i(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=s({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},...e(),...r()},`VCol`),b=u()({name:`VCol`,props:y(),setup(e,{slots:t}){let n=d(()=>h(e.cols).size),r=d(()=>h(e.offset).size),i=d(()=>{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()=>c(e.tag,{class:[i.value.classes,e.class],style:[{"--v-col-size-base":n.value},{"--v-col-offset-base":r.value},i.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=s({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],...e(),...o(),...r()},`VRow`),N=u()({name:`VRow`,props:M(),setup(e,{slots:r}){e.dense&&n(`dense`,`density="comfortable"`);let i=d(()=>{let t=[],n;for(n in k)k[n].forEach(r=>{let i=e[r],a=j(n,r,i);a&&t.push(a)});return t.push({"v-row--no-gutters":e.noGutters,"v-row--density-default":e.density===`default`&&!e.noGutters&&!e.dense,"v-row--density-compact":e.density===`compact`,"v-row--density-comfortable":e.density===`comfortable`||e.dense,[`align-${e.align}`]:e.align,[`justify-${e.justify}`]:e.justify,[`align-content-${e.alignContent}`]:e.alignContent}),t}),a=d(()=>Array.isArray(e.gap)?t(e.gap[0]||0):t(e.gap)),o=d(()=>Array.isArray(e.gap)?t(e.gap[1]||0):a.value);return()=>c(e.tag,{class:[`v-row`,i.value,e.class],style:[{"--v-col-gap-x":a.value,"--v-col-gap-y":o.value,"--v-row-columns":e.size},e.style]},r.default?.())}});export{b as n,N as t};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{Mr as e,X as t,Y as n,ar as r,br as i,cn as a,gr as o,ht as s,kn as c,lt as l,mt as u,pi as d,pn as f,sn as p,vn as m,wn as h,yr as g}from"./index--ZLWJhtp.js";var _={actions:`button@2`,article:`heading, paragraph`,avatar:`avatar`,button:`button`,card:`image, heading`,"card-avatar":`image, list-item-avatar`,chip:`chip`,"date-picker":`list-item, heading, divider, date-picker-options, date-picker-days, actions`,"date-picker-options":`text, avatar@2`,"date-picker-days":`avatar@28`,divider:`divider`,heading:`heading`,image:`image`,"list-item":`text`,"list-item-avatar":`avatar, text`,"list-item-two-line":`sentences`,"list-item-avatar-two-line":`avatar, sentences`,"list-item-three-line":`paragraph`,"list-item-avatar-three-line":`avatar, paragraph`,ossein:`ossein`,paragraph:`text@3`,sentences:`text@2`,subtitle:`text`,table:`table-heading, table-thead, table-tbody, table-tfoot`,"table-heading":`chip, text`,"table-thead":`heading@6`,"table-tbody":`table-row-divider@6`,"table-row-divider":`table-row, divider`,"table-row":`text@6`,"table-tfoot":`text@2, avatar@2`,text:`text`};function v(e,t=[]){return i(`div`,{class:d([`v-skeleton-loader__bone`,`v-skeleton-loader__${e}`])},[t])}function y(e){let[t,n]=e.split(`@`);return Array.from({length:n}).map(()=>b(t))}function b(e){let t=[];if(!e)return t;let n=_[e];if(e!==n){if(e.includes(`,`))return x(e);if(e.includes(`@`))return y(e);n.includes(`,`)?t=x(n):n.includes(`@`)?t=y(n):n&&t.push(b(n))}return[v(e,t)]}function x(e){return e.replace(/\s/g,``).split(`,`).map(b)}var S=c({boilerplate:Boolean,color:String,loading:Boolean,loadingText:{type:String,default:`$vuetify.loading`},type:{type:[String,Array],default:`ossein`},...n(),...u(),...p()},`VSkeletonLoader`),C=h()({name:`VSkeletonLoader`,inheritAttrs:!1,props:S(),setup(n,{attrs:c,slots:u}){let{backgroundColorClasses:d,backgroundColorStyles:p}=l(()=>n.color),{dimensionStyles:h}=t(n),{elevationClasses:_}=s(n),{themeClasses:v}=a(n),{t:y}=f(),x=g(()=>b(r(n.type).join(`,`)));return m(()=>{let t=!u.default||n.loading,r=n.boilerplate||!t?{}:{ariaLive:`polite`,ariaLabel:y(n.loadingText),role:`alert`};return t?i(`div`,e({class:[`v-skeleton-loader`,{"v-skeleton-loader--boilerplate":n.boilerplate},v.value,d.value,_.value],style:[p.value,h.value]},r,c),[x.value]):i(o,null,[u.default?.()])}),{}}});export{C as t};
import{Mr as e,X as t,Y as n,ar as r,br as i,cn as a,gr as o,ht as s,kn as c,lt as l,mt as u,pi as d,pn as f,sn as p,vn as m,wn as h,yr as g}from"./index-_6O5JL4W.js";var _={actions:`button@2`,article:`heading, paragraph`,avatar:`avatar`,button:`button`,card:`image, heading`,"card-avatar":`image, list-item-avatar`,chip:`chip`,"date-picker":`list-item, heading, divider, date-picker-options, date-picker-days, actions`,"date-picker-options":`text, avatar@2`,"date-picker-days":`avatar@28`,divider:`divider`,heading:`heading`,image:`image`,"list-item":`text`,"list-item-avatar":`avatar, text`,"list-item-two-line":`sentences`,"list-item-avatar-two-line":`avatar, sentences`,"list-item-three-line":`paragraph`,"list-item-avatar-three-line":`avatar, paragraph`,ossein:`ossein`,paragraph:`text@3`,sentences:`text@2`,subtitle:`text`,table:`table-heading, table-thead, table-tbody, table-tfoot`,"table-heading":`chip, text`,"table-thead":`heading@6`,"table-tbody":`table-row-divider@6`,"table-row-divider":`table-row, divider`,"table-row":`text@6`,"table-tfoot":`text@2, avatar@2`,text:`text`};function v(e,t=[]){return i(`div`,{class:d([`v-skeleton-loader__bone`,`v-skeleton-loader__${e}`])},[t])}function y(e){let[t,n]=e.split(`@`);return Array.from({length:n}).map(()=>b(t))}function b(e){let t=[];if(!e)return t;let n=_[e];if(e!==n){if(e.includes(`,`))return x(e);if(e.includes(`@`))return y(e);n.includes(`,`)?t=x(n):n.includes(`@`)?t=y(n):n&&t.push(b(n))}return[v(e,t)]}function x(e){return e.replace(/\s/g,``).split(`,`).map(b)}var S=c({boilerplate:Boolean,color:String,loading:Boolean,loadingText:{type:String,default:`$vuetify.loading`},type:{type:[String,Array],default:`ossein`},...n(),...u(),...p()},`VSkeletonLoader`),C=h()({name:`VSkeletonLoader`,inheritAttrs:!1,props:S(),setup(n,{attrs:c,slots:u}){let{backgroundColorClasses:d,backgroundColorStyles:p}=l(()=>n.color),{dimensionStyles:h}=t(n),{elevationClasses:_}=s(n),{themeClasses:v}=a(n),{t:y}=f(),x=g(()=>b(r(n.type).join(`,`)));return m(()=>{let t=!u.default||n.loading,r=n.boilerplate||!t?{}:{ariaLive:`polite`,ariaLabel:y(n.loadingText),role:`alert`};return t?i(`div`,e({class:[`v-skeleton-loader`,{"v-skeleton-loader--boilerplate":n.boilerplate},v.value,d.value,_.value],style:[p.value,h.value]},r,c),[x.value]):i(o,null,[u.default?.()])}),{}}});export{C as t};
+1
View File
@@ -0,0 +1 @@
import{Er as e,G as t,Kr as n,Mr as r,Q as i,U as a,Un as o,Z as s,br as c,ci as l,cr as u,et as d,gr as f,hn as p,ii as m,j as h,kn as g,mi as _,pi as v,r as y,vn as b,wn as x}from"./index-_6O5JL4W.js";import{l as S,m as C,u as w}from"./VTextField-CD7WwKb1.js";import{m as T,p as E}from"./VSelect-CDx3fXFa.js";var D=g({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...w(),...T()},`VSwitch`),O=x()({name:`VSwitch`,inheritAttrs:!1,props:D(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(g,{attrs:x,slots:w}){let T=p(g,`indeterminate`),D=p(g,`modelValue`),{loaderClasses:O}=t(g),{isFocused:k,focus:A,blur:j}=C(g),M=m(),N=m(),P=u&&window.matchMedia(`(forced-colors: active)`).matches,F=l(()=>typeof g.loading==`string`&&g.loading!==``?g.loading:g.color),I=n(),L=l(()=>g.id||`switch-${I}`);function R(){T.value&&=!1}function z(e){e.stopPropagation(),e.preventDefault(),M.value?.input?.click()}return b(()=>{let[t,n]=o(x),l=S.filterProps(g),u=E.filterProps(g);return e(S,r({ref:N,class:[`v-switch`,{"v-switch--flat":g.flat},{"v-switch--inset":g.inset},{"v-switch--indeterminate":T.value},O.value,g.class]},t,l,{modelValue:D.value,"onUpdate:modelValue":e=>D.value=e,id:L.value,focused:k.value,style:g.style}),{...w,default:({id:t,messagesId:o,isDisabled:l,isReadonly:p,isValid:m})=>{let y={model:D,isValid:m};return e(E,r({ref:M},u,{modelValue:D.value,"onUpdate:modelValue":[e=>D.value=e,R],id:t.value,"aria-describedby":o.value,type:`checkbox`,"aria-checked":T.value?`mixed`:void 0,disabled:l.value,readonly:p.value,onFocus:A,onBlur:j},n),{...w,default:({backgroundColorClasses:e,backgroundColorStyles:t})=>c(`div`,{class:v([`v-switch__track`,P?void 0:e.value]),style:_(t.value),onClick:z},[w[`track-true`]&&c(`div`,{key:`prepend`,class:`v-switch__track-true`},[w[`track-true`](y)]),w[`track-false`]&&c(`div`,{key:`append`,class:`v-switch__track-false`},[w[`track-false`](y)])]),input:({inputNode:t,icon:n,backgroundColorClasses:r,backgroundColorStyles:o})=>c(f,null,[t,c(`div`,{class:v([`v-switch__thumb`,{"v-switch__thumb--filled":n||g.loading},g.inset||P?void 0:r.value]),style:_(g.inset?void 0:o.value)},[w.thumb?e(d,{defaults:{VIcon:{icon:n,size:`x-small`}}},{default:()=>[w.thumb({...y,icon:n})]}):e(h,null,{default:()=>[g.loading?e(a,{name:`v-switch`,active:!0,color:m.value===!1?void 0:F.value},{default:t=>w.loader?w.loader(t):e(s,{active:t.isActive,color:t.color,indeterminate:!0,size:`16`,width:`2`},null)}):n&&e(i,{key:String(n),icon:n,size:`x-small`},null)]})])])})}})}),y({},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
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 @@
@layer vuetify-components{.v-textarea{--v-textarea-max-height:initial}.v-textarea .v-field{--v-textarea-control-height:var(--v-input-control-height)}.v-textarea .v-field:not(.v-field--no-label,.v-field--active) textarea::placeholder{opacity:0}.v-textarea .v-field__field{--v-input-control-height:var(--v-textarea-control-height)}.v-textarea .v-field__input{max-height:var(--v-textarea-max-height);-webkit-mask-image:linear-gradient(to bottom, transparent, transparent calc(var(--v-field-padding-top,0) + var(--v-input-padding-top,0) - 6px), black calc(var(--v-field-padding-top,0) + var(--v-input-padding-top,0) + 4px)), linear-gradient(to right, transparent, transparent calc(100% - var(--v-textarea-scroll-bar-width,16px)), black calc(100% - var(--v-textarea-scroll-bar-width,16px)));-webkit-mask-image:linear-gradient(to bottom, transparent, transparent calc(var(--v-field-padding-top,0) + var(--v-input-padding-top,0) - 6px), black calc(var(--v-field-padding-top,0) + var(--v-input-padding-top,0) + 4px)), linear-gradient(to right, transparent, transparent calc(100% - var(--v-textarea-scroll-bar-width,16px)), black calc(100% - var(--v-textarea-scroll-bar-width,16px)));mask-image:linear-gradient(to bottom, transparent, transparent calc(var(--v-field-padding-top,0) + var(--v-input-padding-top,0) - 6px), black calc(var(--v-field-padding-top,0) + var(--v-input-padding-top,0) + 4px)), linear-gradient(to right, transparent, transparent calc(100% - var(--v-textarea-scroll-bar-width,16px)), black calc(100% - var(--v-textarea-scroll-bar-width,16px)));outline:none;flex:auto}.v-textarea .v-field__input.v-textarea__sizer{visibility:hidden;pointer-events:none;position:absolute;top:0;left:0}.v-textarea--no-resize .v-field__input{resize:none}.v-textarea textarea{flex:1;min-width:0;height:100%;transition:opacity .15s cubic-bezier(.4,0,.2,1)}.v-textarea textarea:focus,.v-textarea textarea:active{outline:none}.v-textarea textarea:invalid{box-shadow:none}}@layer vuetify-overrides{.v-textarea .v-field__input.v-textarea__sizer{height:0;min-height:0}}
@@ -1 +1 @@
import{Zt as e,tn as t}from"./index--ZLWJhtp.js";function n(n,r){return n instanceof e?t(n.detail??n.message,n.message||r):n instanceof Error&&n.message.trim()||r}export{n as t};
import{Zt as e,tn as t}from"./index-_6O5JL4W.js";function n(n,r){return n instanceof e?t(n.detail??n.message,n.message||r):n instanceof Error&&n.message.trim()||r}export{n as t};
@@ -1 +1 @@
import{p as e,s as t}from"./initMonaco-CEDuy8q1.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-C2FRV1ca.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};
import{p as e,s as t}from"./initMonaco-D1bUcg_U.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-D7qLUlaT.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};
@@ -1,2 +1,2 @@
import{Ir as e,Lt as t,Pt as n}from"./index--ZLWJhtp.js";import{t as r}from"./usePageAutoRefresh-BCna76qI.js";var i=8e3,a=3e4;function o(o,s){let{runningItems:c}=t();r(async()=>{s?.enabled&&!s.enabled()||await o(!0)},()=>c.value.length>0?i:a);let l=n(()=>{s?.enabled&&!s.enabled()||o(!1)});e(()=>{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(`
import{Ir as e,Lt as t,Pt as n}from"./index-_6O5JL4W.js";import{t as r}from"./usePageAutoRefresh-DLhUSsyH.js";var i=8e3,a=3e4;function o(o,s){let{runningItems:c}=t();r(async()=>{s?.enabled&&!s.enabled()||await o(!0)},()=>c.value.length>0?i:a);let l=n(()=>{s?.enabled&&!s.enabled()||o(!1)});e(()=>{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 +1 @@
import{p as e}from"./initMonaco-CEDuy8q1.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};
import{p as e}from"./initMonaco-D1bUcg_U.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 +1 @@
import{p as e,s as t}from"./initMonaco-CEDuy8q1.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-C2FRV1ca.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};
import{p as e,s as t}from"./initMonaco-D1bUcg_U.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-D7qLUlaT.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 +1 @@
import{conf as e,language as t}from"./typescript-DNj0kqS4.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};
import{conf as e,language as t}from"./typescript-CLYtC9bm.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};
@@ -1,4 +1,4 @@
import{f as e,p as t,s as n}from"./initMonaco-CEDuy8q1.js";import{_ as r,a as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b}from"./lspLanguageFeatures-C2FRV1ca.js";var x=120*1e3,S=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>x&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||=(this._worker=n({moduleId:`vs/language/json/jsonWorker`,createWorker:()=>new Worker(new URL(`/app/assets/json.worker-BkJRGcCJ.js`,``+import.meta.url),{type:`module`}),label:this._defaults.languageId,createData:{languageSettings:this._defaults.diagnosticsOptions,languageId:this._defaults.languageId,enableSchemaRequest:this._defaults.diagnosticsOptions.enableSchemaRequest}}),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 C(e,t=!1){let n=e.length,r=0,i=``,a=0,o=16,s=0,c=0,l=0,u=0,d=0;function f(t,n){let i=0,a=0;for(;i<t;){let t=e.charCodeAt(r);if(t>=48&&t<=57)a=a*16+t-48;else if(t>=65&&t<=70)a=a*16+t-65+10;else if(t>=97&&t<=102)a=a*16+t-97+10;else break;r++,i++}return i<t&&(a=-1),a}function p(e){r=e,i=``,a=0,o=16,d=0}function m(){let t=r;if(e.charCodeAt(r)===48)r++;else for(r++;r<e.length&&E(e.charCodeAt(r));)r++;if(r<e.length&&e.charCodeAt(r)===46)if(r++,r<e.length&&E(e.charCodeAt(r)))for(r++;r<e.length&&E(e.charCodeAt(r));)r++;else return d=3,e.substring(t,r);let n=r;if(r<e.length&&(e.charCodeAt(r)===69||e.charCodeAt(r)===101))if(r++,(r<e.length&&e.charCodeAt(r)===43||e.charCodeAt(r)===45)&&r++,r<e.length&&E(e.charCodeAt(r))){for(r++;r<e.length&&E(e.charCodeAt(r));)r++;n=r}else d=3;return e.substring(t,n)}function h(){let t=``,i=r;for(;;){if(r>=n){t+=e.substring(i,r),d=2;break}let a=e.charCodeAt(r);if(a===34){t+=e.substring(i,r),r++;break}if(a===92){if(t+=e.substring(i,r),r++,r>=n){d=2;break}switch(e.charCodeAt(r++)){case 34:t+=`"`;break;case 92:t+=`\\`;break;case 47:t+=`/`;break;case 98:t+=`\b`;break;case 102:t+=`\f`;break;case 110:t+=`
import{f as e,p as t,s as n}from"./initMonaco-D1bUcg_U.js";import{_ as r,a as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b}from"./lspLanguageFeatures-D7qLUlaT.js";var x=120*1e3,S=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>x&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||=(this._worker=n({moduleId:`vs/language/json/jsonWorker`,createWorker:()=>new Worker(new URL(`/app/assets/json.worker-BkJRGcCJ.js`,``+import.meta.url),{type:`module`}),label:this._defaults.languageId,createData:{languageSettings:this._defaults.diagnosticsOptions,languageId:this._defaults.languageId,enableSchemaRequest:this._defaults.diagnosticsOptions.enableSchemaRequest}}),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 C(e,t=!1){let n=e.length,r=0,i=``,a=0,o=16,s=0,c=0,l=0,u=0,d=0;function f(t,n){let i=0,a=0;for(;i<t;){let t=e.charCodeAt(r);if(t>=48&&t<=57)a=a*16+t-48;else if(t>=65&&t<=70)a=a*16+t-65+10;else if(t>=97&&t<=102)a=a*16+t-97+10;else break;r++,i++}return i<t&&(a=-1),a}function p(e){r=e,i=``,a=0,o=16,d=0}function m(){let t=r;if(e.charCodeAt(r)===48)r++;else for(r++;r<e.length&&E(e.charCodeAt(r));)r++;if(r<e.length&&e.charCodeAt(r)===46)if(r++,r<e.length&&E(e.charCodeAt(r)))for(r++;r<e.length&&E(e.charCodeAt(r));)r++;else return d=3,e.substring(t,r);let n=r;if(r<e.length&&(e.charCodeAt(r)===69||e.charCodeAt(r)===101))if(r++,(r<e.length&&e.charCodeAt(r)===43||e.charCodeAt(r)===45)&&r++,r<e.length&&E(e.charCodeAt(r))){for(r++;r<e.length&&E(e.charCodeAt(r));)r++;n=r}else d=3;return e.substring(t,n)}function h(){let t=``,i=r;for(;;){if(r>=n){t+=e.substring(i,r),d=2;break}let a=e.charCodeAt(r);if(a===34){t+=e.substring(i,r),r++;break}if(a===92){if(t+=e.substring(i,r),r++,r>=n){d=2;break}switch(e.charCodeAt(r++)){case 34:t+=`"`;break;case 92:t+=`\\`;break;case 47:t+=`/`;break;case 98:t+=`\b`;break;case 102:t+=`\f`;break;case 110:t+=`
`;break;case 114:t+=`\r`;break;case 116:t+=` `;break;case 117:let e=f(4);e>=0?t+=String.fromCharCode(e):d=4;break;default:d=5}i=r;continue}if(a>=0&&a<=31)if(T(a)){t+=e.substring(i,r),d=2;break}else d=6;r++}return t}function g(){if(i=``,d=0,a=r,c=s,u=l,r>=n)return a=n,o=17;let t=e.charCodeAt(r);if(w(t)){do r++,i+=String.fromCharCode(t),t=e.charCodeAt(r);while(w(t));return o=15}if(T(t))return r++,i+=String.fromCharCode(t),t===13&&e.charCodeAt(r)===10&&(r++,i+=`
`),s++,l=r,o=14;switch(t){case 123:return r++,o=1;case 125:return r++,o=2;case 91:return r++,o=3;case 93:return r++,o=4;case 58:return r++,o=6;case 44:return r++,o=5;case 34:return r++,i=h(),o=10;case 47:let c=r-1;if(e.charCodeAt(r+1)===47){for(r+=2;r<n&&!T(e.charCodeAt(r));)r++;return i=e.substring(c,r),o=12}if(e.charCodeAt(r+1)===42){r+=2;let t=n-1,a=!1;for(;r<t;){let t=e.charCodeAt(r);if(t===42&&e.charCodeAt(r+1)===47){r+=2,a=!0;break}r++,T(t)&&(t===13&&e.charCodeAt(r)===10&&r++,s++,l=r)}return a||(r++,d=1),i=e.substring(c,r),o=13}return i+=String.fromCharCode(t),r++,o=16;case 45:if(i+=String.fromCharCode(t),r++,r===n||!E(e.charCodeAt(r)))return o=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return i+=m(),o=11;default:for(;r<n&&_(t);)r++,t=e.charCodeAt(r);if(a!==r){switch(i=e.substring(a,r),i){case`true`:return o=8;case`false`:return o=9;case`null`:return o=7}return o=16}return i+=String.fromCharCode(t),r++,o=16}}function _(e){if(w(e)||T(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function v(){let e;do e=g();while(e>=12&&e<=15);return e}return{setPosition:p,getPosition:()=>r,scan:t?v:g,getToken:()=>o,getTokenValue:()=>i,getTokenOffset:()=>a,getTokenLength:()=>r-a,getTokenStartLine:()=>c,getTokenStartCharacter:()=>a-u,getTokenError:()=>d}}function w(e){return e===32||e===9}function T(e){return e===10||e===13}function E(e){return e>=48&&e<=57}var D;(function(e){e[e.lineFeed=10]=`lineFeed`,e[e.carriageReturn=13]=`carriageReturn`,e[e.space=32]=`space`,e[e._0=48]=`_0`,e[e._1=49]=`_1`,e[e._2=50]=`_2`,e[e._3=51]=`_3`,e[e._4=52]=`_4`,e[e._5=53]=`_5`,e[e._6=54]=`_6`,e[e._7=55]=`_7`,e[e._8=56]=`_8`,e[e._9=57]=`_9`,e[e.a=97]=`a`,e[e.b=98]=`b`,e[e.c=99]=`c`,e[e.d=100]=`d`,e[e.e=101]=`e`,e[e.f=102]=`f`,e[e.g=103]=`g`,e[e.h=104]=`h`,e[e.i=105]=`i`,e[e.j=106]=`j`,e[e.k=107]=`k`,e[e.l=108]=`l`,e[e.m=109]=`m`,e[e.n=110]=`n`,e[e.o=111]=`o`,e[e.p=112]=`p`,e[e.q=113]=`q`,e[e.r=114]=`r`,e[e.s=115]=`s`,e[e.t=116]=`t`,e[e.u=117]=`u`,e[e.v=118]=`v`,e[e.w=119]=`w`,e[e.x=120]=`x`,e[e.y=121]=`y`,e[e.z=122]=`z`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.asterisk=42]=`asterisk`,e[e.backslash=92]=`backslash`,e[e.closeBrace=125]=`closeBrace`,e[e.closeBracket=93]=`closeBracket`,e[e.colon=58]=`colon`,e[e.comma=44]=`comma`,e[e.dot=46]=`dot`,e[e.doubleQuote=34]=`doubleQuote`,e[e.minus=45]=`minus`,e[e.openBrace=123]=`openBrace`,e[e.openBracket=91]=`openBracket`,e[e.plus=43]=`plus`,e[e.slash=47]=`slash`,e[e.formFeed=12]=`formFeed`,e[e.tab=9]=`tab`})(D||={}),Array(20).fill(0).map((e,t)=>` `.repeat(t));var O=200;Array(O).fill(0).map((e,t)=>`
`+` `.repeat(t)),Array(O).fill(0).map((e,t)=>`\r`+` `.repeat(t)),Array(O).fill(0).map((e,t)=>`\r
@@ -1 +1 @@
import{p as e}from"./initMonaco-CEDuy8q1.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};
import{p as e}from"./initMonaco-D1bUcg_U.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 +1 @@
import{p as e}from"./initMonaco-CEDuy8q1.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};
import{p as e}from"./initMonaco-D1bUcg_U.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};
@@ -1 +1 @@
import{en as e}from"./index--ZLWJhtp.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};
import{en as e}from"./index-_6O5JL4W.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 +1 @@
import{p as e}from"./initMonaco-CEDuy8q1.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};
import{p as e}from"./initMonaco-D1bUcg_U.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
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{p as e}from"./initMonaco-CEDuy8q1.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};
import{p as e}from"./initMonaco-D1bUcg_U.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};
@@ -1 +1 @@
import{Pr as e,Rr as t,ii as n}from"./index--ZLWJhtp.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};
import{Pr as e,Rr as t,ii as n}from"./index-_6O5JL4W.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};
@@ -1 +1 @@
import{Ir as e,Rr as t}from"./index--ZLWJhtp.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};
import{Ir as e,Rr as t}from"./index-_6O5JL4W.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
@@ -1 +1 @@
import{bt as e,en as t,ii as n,xt as r}from"./index--ZLWJhtp.js";function i(e){return e===`uncategorized`?`未分类`:e}function a(){let a=n([]),o=n(!1),s=n(0);async function c(n=!1){n||(o.value=!0);try{let{data:n}=await r(e.serverCategories,()=>t.get(`/servers/categories`)),o=n.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{n||(o.value=!1)}}return{categories:a,loading:o,totalCount:s,loadCategories:c}}export{a as n,i as t};
import{bt as e,en as t,ii as n,xt as r}from"./index-_6O5JL4W.js";function i(e){return e===`uncategorized`?`未分类`:e}function a(){let a=n([]),o=n(!1),s=n(0);async function c(n=!1){n||(o.value=!0);try{let{data:n}=await r(e.serverCategories,()=>t.get(`/servers/categories`)),o=n.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{n||(o.value=!1)}}return{categories:a,loading:o,totalCount:s,loadCategories:c}}export{a as n,i as t};
@@ -1 +1 @@
import{t as e}from"./useSnackbar-CnnJE332.js";import{en as t,ii as n}from"./index--ZLWJhtp.js";import{t as r}from"./apiError-Bd0nPSTw.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};
import{t as e}from"./useSnackbar-yP7apGY8.js";import{en as t,ii as n}from"./index-_6O5JL4W.js";import{t as r}from"./apiError-cM_GzSSg.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};
@@ -1 +1 @@
import{Er as e,On as t,X as n,Y as r,dt as i,kn as a,mi as o,mn as s,pi as c,vn as l,wn as u}from"./index--ZLWJhtp.js";var d=a({fluid:{type:Boolean,default:!1},...t(),...r(),...i()},`VContainer`),f=u()({name:`VContainer`,props:d(),setup(t,{slots:r}){let{rtlClasses:i}=s(),{dimensionStyles:a}=n(t);return l(()=>e(t.tag,{class:c([`v-container`,{"v-container--fluid":t.fluid},i.value,t.class]),style:o([a.value,t.style])},r)),{}}});function p(){return(e,t=`success`)=>{let n=(e||``).trim()||(t===`error`?`操作失败`:`操作完成`);window.$snackbar?.(n,t)}}export{f as n,p as t};
import{Er as e,On as t,X as n,Y as r,dt as i,kn as a,mi as o,mn as s,pi as c,vn as l,wn as u}from"./index-_6O5JL4W.js";var d=a({fluid:{type:Boolean,default:!1},...t(),...r(),...i()},`VContainer`),f=u()({name:`VContainer`,props:d(),setup(t,{slots:r}){let{rtlClasses:i}=s(),{dimensionStyles:a}=n(t);return l(()=>e(t.tag,{class:c([`v-container`,{"v-container--fluid":t.fluid},i.value,t.class]),style:o([a.value,t.style])},r)),{}}});function p(){return(e,t=`success`)=>{let n=(e||``).trim()||(t===`error`?`操作失败`:`操作完成`);window.$snackbar?.(n,t)}}export{f as n,p as t};
@@ -1,2 +1,2 @@
import{Cr as e,Gr as t,Nr as n,Or as r,Sr as i,Vr as a,en as o,ii as s,pi as c,xr as l,yr as u}from"./index--ZLWJhtp.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]!==`
import{Cr as e,Gr as t,Nr as n,Or as r,Sr as i,Vr as a,en as o,ii as s,pi as c,xr as l,yr as u}from"./index-_6O5JL4W.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(r({__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(r,{expose:o,emit:d}){let f=s(null),p=r,m=d,h=u(()=>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 r=t.selectionStart??t.value.length,i=t.selectionEnd??r;m(`update:modelValue`,t.value.slice(0,r)+e+t.value.slice(i)),await n(),t.focus();let a=r+e.length;t.setSelectionRange(a,a)}return o({getInputEl:b,focusInput:x,getSelectionText:S,selectAllInput:C,insertAtSelection:w}),(n,o)=>(a(),e(`div`,{class:c([`sh-field position-relative`,{"sh-field--disabled":r.disabled,"sh-field--empty":!r.modelValue,"sh-field--large":r.size===`large`}])},[r.modelValue?(a(),e(`div`,{key:0,class:c([`sh-field__highlight font-mono`,r.multiline?`sh-field__highlight--multi`:`sh-field__highlight--single`]),"aria-hidden":`true`,innerHTML:h.value},null,10,y)):i(``,!0),(a(),l(t(r.multiline?`textarea`:`input`),{ref_key:`inputRef`,ref:f,value:r.modelValue,placeholder:r.placeholder,disabled:r.disabled,rows:r.multiline?r.rows:void 0,class:c([`sh-field__input font-mono`,r.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([]),t=s(!1);async function n(){t.value=!0;try{e.value=x(await o.get(`/terminal/quick-commands`)||[])}catch{throw e.value=[],Error(``)}finally{t.value=!1}}async function r(e,t){await o.post(`/terminal/quick-commands`,{name:e.trim(),cmd:t.trim()}),await n()}async function i(e,t,r){await o.put(`/terminal/quick-commands/${e}`,{name:t.trim(),cmd:r.trim()}),await n()}async function a(e){await o.delete(`/terminal/quick-commands/${e}`),await n()}async function c(t){e.value=x((await o.put(`/terminal/quick-commands/reorder`,{ids:t})).items||[])}return{commands:e,loading:t,load:n,create:r,update:i,remove:a,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 +1 @@
import{p as e}from"./initMonaco-CEDuy8q1.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};
import{p as e}from"./initMonaco-D1bUcg_U.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 +1 @@
import{p as e}from"./initMonaco-CEDuy8q1.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};
import{p as e}from"./initMonaco-D1bUcg_U.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--ZLWJhtp.js"></script>
<script type="module" crossorigin src="/app/assets/index-_6O5JL4W.js"></script>
<link rel="modulepreload" crossorigin href="/app/assets/chunk-DK3Fl9T5.js">
<link rel="stylesheet" crossorigin href="/app/assets/index-DUUkodzN.css">
</head>