@fuxishi/vitepress-theme 1.0.14 → 2.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,16 +10,14 @@
10
10
  - 🎊 **点击彩纸** — 全局点击彩纸特效,支持金色星星、彩色纸片和自定义 Emoji
11
11
  - 🎨 **Hero 图片取色** — 自动提取首页 hero 图片颜色,动态应用到背景光晕、标题渐变、代码块光束和音乐球
12
12
  - ✨ **Feature 光效** — 首页 Feature 卡片鼠标追踪光晕效果
13
- - ✨ **光束边框** — 暗色模式下代码块和导航 hover 时展示紫青品牌色光束旋转边框
13
+ - ✨ **光束边框** — 暗色模式下代码块、代码组和导航 hover 时展示紫青品牌色光束旋转边框
14
14
  - 🔄 **主题切换动画** — View Transition API 实现亮暗模式圆形扩散动画
15
15
  - 📜 **平滑滚动** — 右侧大纲导航点击时平滑滚动,指示条丝滑过渡
16
16
  - 🎨 **标题装饰** — h1-h4 各有不同颜色的下划线装饰
17
17
  - 📦 **代码块折叠** — 超过指定行数的代码块自动折叠,底部毛玻璃模糊遮罩,可配置折叠行数阈值
18
18
  - ⚙️ **类型安全** — 完整的 TypeScript 类型定义,IDE 友好
19
19
 
20
- > **注意:** `1.0.9` 及之前的版本仅适用于 VitePress `1.6.4`。如果你使用 VitePress 2.x,请等待主题后续版本适配。
21
- >
22
- > ⚠️ `1.0.10` 版本的代码块折叠展开功能存在问题,已废弃,请升级到 `1.0.11` 及以上版本。
20
+ > **注意:** 本版本(v2.x)基于 VitePress `2.0` 开发,不向下兼容 VitePress 1.x
23
21
 
24
22
  ## 安装
25
23
 
@@ -51,11 +49,14 @@ export default FxTheme
51
49
  创建 `.vitepress/config.mts`:
52
50
 
53
51
  ```ts
54
- import { defineConfigWithTheme } from "vitepress"
52
+ import { defineConfig } from "vitepress"
53
+ import type { DefaultTheme } from "vitepress"
55
54
  import fxConfig from "@fuxishi/vitepress-theme/config"
56
- import type { FxThemeConfig } from "@fuxishi/vitepress-theme/config"
55
+ import type { FxThemeCustomConfig } from "@fuxishi/vitepress-theme"
57
56
 
58
- export default defineConfigWithTheme<FxThemeConfig>({
57
+ type ThemeConfig = DefaultTheme.Config & FxThemeCustomConfig
58
+
59
+ export default defineConfig<ThemeConfig>({
59
60
  extends: fxConfig,
60
61
  lang: "zh-CN",
61
62
  title: "我的文档站",
@@ -97,9 +98,9 @@ npx vitepress dev
97
98
 
98
99
  ## 配置
99
100
 
100
- ### FxThemeConfig
101
+ ### FxThemeCustomConfig
101
102
 
102
- 继承自 VitePress `DefaultTheme.Config`,新增以下字段:
103
+ 通过 `DefaultTheme.Config & FxThemeCustomConfig` 交叉类型扩展 VitePress 默认主题配置,新增以下字段:
103
104
 
104
105
  | 配置项 | 类型 | 默认值 | 说明 |
105
106
  | --------------------- | --------------------------- | -------- | ------------------------------------------------------ |
package/README_EN.md ADDED
@@ -0,0 +1,140 @@
1
+ # @fuxishi/vitepress-theme
2
+
3
+ A beautiful VitePress theme extension with frosted glass effects, purple-blue gradients, rich animations, and ready to use.
4
+
5
+ [中文](./README.md)
6
+
7
+ ## Features
8
+
9
+ - 🎵 **Floating Music Ball** — Frosted glass floating player with single/playlist mode, purple-blue gradient progress ring and four playback animations
10
+ - 🎊 **Click Confetti** — Global click confetti effect with gold stars, colored paper pieces, and custom Emoji
11
+ - 🎨 **Hero Image Color** — Auto-extract colors from hero image for background glow, title gradient, code block beams, and music ball
12
+ - ✨ **Feature Glow** — Mouse-tracking glow effect on homepage Feature cards
13
+ - ✨ **Beam Border** — Purple-cyan brand color beam border on code blocks, code groups, and navigation in dark mode on hover
14
+ - 🔄 **Theme Switch Animation** — Circular spread animation for light/dark mode switching using View Transition API
15
+ - 📜 **Smooth Scroll** — Smooth scrolling when clicking outline navigation with silky marker transition
16
+ - 🎨 **Heading Decorations** — Different colored underlines for h1-h4 headings
17
+ - 📦 **Code Block Fold** — Auto-fold code blocks exceeding a line threshold with frosted glass blur overlay, configurable fold line count
18
+ - ⚙️ **Type-safe** — Complete TypeScript type definitions, IDE friendly
19
+
20
+ > **Note:** This version (v2.x) is built on VitePress `2.0` and is not backward compatible with VitePress 1.x.
21
+
22
+ ## Installation
23
+
24
+ ```bash
25
+ npm install @fuxishi/vitepress-theme
26
+ ```
27
+
28
+ Install peerDependencies:
29
+
30
+ ```bash
31
+ npm install vitepress
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ ### 1. Register Theme
37
+
38
+ Create `.vitepress/theme/index.ts`:
39
+
40
+ ```ts
41
+ import FxTheme from "@fuxishi/vitepress-theme"
42
+ import "@fuxishi/vitepress-theme/style.css"
43
+
44
+ export default FxTheme
45
+ ```
46
+
47
+ ### 2. Extend Configuration
48
+
49
+ Create `.vitepress/config.mts`:
50
+
51
+ ```ts
52
+ import { defineConfig } from "vitepress"
53
+ import type { DefaultTheme } from "vitepress"
54
+ import fxConfig from "@fuxishi/vitepress-theme/config"
55
+ import type { FxThemeCustomConfig } from "@fuxishi/vitepress-theme"
56
+
57
+ type ThemeConfig = DefaultTheme.Config & FxThemeCustomConfig
58
+
59
+ export default defineConfig<ThemeConfig>({
60
+ extends: fxConfig,
61
+ lang: "en",
62
+ title: "My Docs",
63
+ themeConfig: {
64
+ nav: [{ text: "Guide", link: "/guide/" }],
65
+ sidebar: {
66
+ "/guide/": [{ text: "Getting Started", link: "/guide/" }],
67
+ },
68
+ // Enable music ball
69
+ musicBall: {
70
+ enable: true,
71
+ autoplay: false,
72
+ loop: true,
73
+ src: "/music/my-song.mp3",
74
+ },
75
+ // Enable confetti
76
+ confetti: true,
77
+ // Colored paper pieces
78
+ // confetti: { shape: "colored-paper" },
79
+ // Custom Emoji
80
+ // confetti: { shapes: ["🌸", "🎀"] },
81
+ // Enable hero image color extraction
82
+ heroImageColor: true,
83
+ // Enable smooth scroll
84
+ smoothScroll: true,
85
+ // Code block fold (enabled by default, 10 lines threshold)
86
+ codeBlockFold: true,
87
+ // Custom fold line threshold
88
+ // codeBlockFold: { lines: 20 },
89
+ },
90
+ })
91
+ ```
92
+
93
+ ### 3. Start Dev Server
94
+
95
+ ```bash
96
+ npx vitepress dev
97
+ ```
98
+
99
+ ## Configuration
100
+
101
+ ### FxThemeCustomConfig
102
+
103
+ Extends VitePress `DefaultTheme.Config` via intersection type `DefaultTheme.Config & FxThemeCustomConfig`, adding the following fields:
104
+
105
+ | Option | Type | Default | Description |
106
+ | --------------------- | --------------------------- | -------- | ----------------------------------------------------------------- |
107
+ | `musicBall.enable` | `boolean` | `true` | Enable music ball |
108
+ | `musicBall.visible` | `boolean` | `true` | Visibility |
109
+ | `musicBall.autoplay` | `boolean` | `false` | Autoplay |
110
+ | `musicBall.loop` | `boolean` | `true` | Loop playback (single mode) |
111
+ | `musicBall.src` | `string` | `''` | Single music URL |
112
+ | `musicBall.list` | `MusicItem[]` | — | Multi-song playlist |
113
+ | `confetti` | `boolean \| object` | `true` | Enable confetti |
114
+ | `confetti.shape` | `'star' \| 'colored-paper'` | `'star'` | Preset shape |
115
+ | `confetti.shapes` | `string \| string[]` | — | Custom Emoji shapes |
116
+ | `confetti.secondary` | `boolean` | `true` | Whether to add secondary particles |
117
+ | `heroImageColor` | `boolean` | `false` | Auto-extract hero image colors (affects glow, title, beams, ball) |
118
+ | `smoothScroll` | `boolean` | `false` | Enable smooth scrolling and outline marker transition |
119
+ | `codeBlockFold` | `boolean \| object` | `true` | Enable code block folding |
120
+ | `codeBlockFold.lines` | `number` | `10` | Line count threshold for folding |
121
+
122
+ ## Exports
123
+
124
+ | Export Path | Description |
125
+ | ------------------------------------ | ---------------------------- |
126
+ | `@fuxishi/vitepress-theme` | Theme (Layout + Styles) |
127
+ | `@fuxishi/vitepress-theme/config` | VitePress base config preset |
128
+ | `@fuxishi/vitepress-theme/style.css` | Standalone style file |
129
+
130
+ ## Documentation
131
+
132
+ Full documentation:
133
+
134
+ [https://fuxishi-vitepress-theme.fuxizjxzy.cn](https://fuxishi-vitepress-theme.fuxizjxzy.cn)
135
+
136
+ ## License
137
+
138
+ [MIT](./LICENSE)
139
+
140
+ > Will be open-sourced on GitHub in the future.
@@ -1,18 +1,18 @@
1
- import { t as e } from "./icons-DtAsNqxj.js";
1
+ import { t as e } from "./icons-BLv72Cfw.js";
2
2
  import { defineComponent as t, nextTick as n, onBeforeUnmount as r, onMounted as i, watch as a } from "vue";
3
3
  import { useRoute as o } from "vitepress";
4
4
  //#region .vitepress/components/FxCodeBlockFold.ts
5
- var s = "fx-code-folded", c = "fx-code-fold-overlay", l = t({
5
+ var s = "fx-code-folded", c = "fx-code-fold-overlay", l = "div[class*='language-']", u = t({
6
6
  props: { lines: {
7
7
  type: Number,
8
8
  default: 10
9
9
  } },
10
10
  setup(t) {
11
- function l() {
11
+ function u() {
12
12
  let n = t.lines ?? 10;
13
- document.querySelectorAll(".vp-adaptive-theme").forEach((t) => {
13
+ document.querySelectorAll(l).forEach((t) => {
14
14
  if (t.classList.contains(c) || t.classList.contains("vp-code-group")) return;
15
- let r = t.querySelector("pre.vp-code code");
15
+ let r = t.querySelector("pre.shiki code");
16
16
  if (!r) return;
17
17
  if (r.querySelectorAll(".line").length <= n) {
18
18
  t.classList.add("fx-code-no-fold");
@@ -29,29 +29,29 @@ var s = "fx-code-folded", c = "fx-code-fold-overlay", l = t({
29
29
  }), t.appendChild(i);
30
30
  });
31
31
  }
32
- let u = null;
33
- function d() {
34
- u?.disconnect();
32
+ let d = null;
33
+ function f() {
34
+ d?.disconnect();
35
35
  let e = document.querySelector(".vp-doc");
36
- e && (u = new MutationObserver(() => {
37
- requestAnimationFrame(l);
38
- }), u.observe(e, {
36
+ e && (d = new MutationObserver(() => {
37
+ requestAnimationFrame(u);
38
+ }), d.observe(e, {
39
39
  childList: !0,
40
40
  subtree: !0
41
41
  }));
42
42
  }
43
43
  i(() => {
44
- l(), d();
44
+ u(), f();
45
45
  });
46
- let f = o();
47
- return a(() => f.path, () => {
46
+ let p = o();
47
+ return a(() => p.path, () => {
48
48
  n(() => {
49
- l(), d();
49
+ u(), f();
50
50
  });
51
51
  }), r(() => {
52
- u?.disconnect();
52
+ d?.disconnect();
53
53
  }), () => null;
54
54
  }
55
55
  });
56
56
  //#endregion
57
- export { l as default };
57
+ export { u as default };
@@ -1,4 +1,4 @@
1
- import { t as e } from "./icons-DtAsNqxj.js";
1
+ import { t as e } from "./icons-BLv72Cfw.js";
2
2
  import { Fragment as t, computed as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, nextTick as ee, normalizeClass as c, onBeforeUnmount as l, onMounted as u, openBlock as d, ref as f, renderList as p, toDisplayString as m, unref as h, vShow as g, watchEffect as _, withDirectives as v } from "vue";
3
3
  import { useData as y, withBase as b } from "vitepress";
4
4
  import { ElSlider as x } from "element-plus";
@@ -1,6 +1,6 @@
1
1
  //#endregion
2
2
  //#region .vitepress/utils/icons.ts
3
- var e = /* @__PURE__ */ Object.assign({
3
+ var e = /* #__PURE__ */ Object.assign({
4
4
  "../assets/svg/fold.svg": "<svg t=\"1777001773348\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"15732\" width=\"200\" height=\"200\"><path d=\"M736 480c-12.5-12.5-32.8-12.5-45.3 0L523.3 647.4c-6.2 6.2-16.4 6.2-22.6 0L333.3 480c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L466.7 704c25 25 65.5 25 90.5 0L736 525.3c12.5-12.5 12.5-32.8 0-45.3z\" p-id=\"15733\"></path></svg>",
5
5
  "../assets/svg/music-ball/music_list.svg": "<svg t=\"1777001773348\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"15732\" width=\"200\" height=\"200\"><path d=\"M128 128h384v85.333333H128zM128 298.666667h384v85.333333H128zM128 469.333333h209.066667v85.333334H128zM725.333333 170.666667v418.133333c-34.133333-21.333333-81.066667-34.133333-128-34.133333-119.466667 0-213.333333 76.8-213.333333 170.666666s93.866667 170.666667 213.333333 170.666667 213.333333-76.8 213.333334-170.666667V256h128V170.666667h-213.333334z\" ></path></svg>",
6
6
  "../assets/svg/music-ball/pause.svg": "<svg t=\"1777001773348\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"15732\" width=\"200\" height=\"200\"><path d=\"M426.666667 288v448a32.426667 32.426667 0 0 1-32 32h-64a32.426667 32.426667 0 0 1-32-32V288A32.426667 32.426667 0 0 1 330.666667 256h64a32.426667 32.426667 0 0 1 32 32zM693.333333 256h-64a32.426667 32.426667 0 0 0-32 32v448a32.426667 32.426667 0 0 0 32 32h64a32.426667 32.426667 0 0 0 32-32V288a32.426667 32.426667 0 0 0-32-32z\" ></path></svg>",
package/dist/config.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- import type { UserConfig, DefaultTheme } from 'vitepress'
2
-
3
1
  export type MusicItem = {
4
2
  name: string
5
3
  src: string
@@ -13,7 +11,8 @@ export type ConfettiConfig = {
13
11
  secondary?: boolean
14
12
  }
15
13
 
16
- export interface FxThemeConfig extends DefaultTheme.Config {
14
+ /** 自定义主题属性,消费方通过 & 组合到 DefaultTheme.Config */
15
+ export interface FxThemeCustomConfig {
17
16
  musicBall?: {
18
17
  enable?: boolean
19
18
  visible?: boolean
@@ -34,5 +33,11 @@ export interface FxThemeConfig extends DefaultTheme.Config {
34
33
  }
35
34
  }
36
35
 
37
- declare const fxConfig: UserConfig<FxThemeConfig>
36
+ // fxConfig 不引用 vitepress 内部类型,避免跨模块类型冲突
37
+ // 运行时实际值包含完整配置(在 .vitepress/config/index.ts 源码中维护)
38
+ declare const fxConfig: {
39
+ markdown?: { lineNumbers?: boolean }
40
+ transformPageData?: (pageData: any) => any
41
+ vite?: { ssr?: { noExternal?: string[] } }
42
+ }
38
43
  export default fxConfig
package/dist/config.js CHANGED
@@ -1,5 +1,104 @@
1
+ import e from "node:crypto";
2
+ import { existsSync as t, readdirSync as n } from "node:fs";
3
+ import { dirname as r, extname as i, join as a, resolve as o } from "node:path";
4
+ //#region .vitepress/config/plugins/demo-preview.ts
5
+ var s = "virtual:fx-demo/", c = /* @__PURE__ */ new Map();
6
+ function l(t, n = 10) {
7
+ return e.createHash("sha256").update(t).digest("hex").slice(0, n);
8
+ }
9
+ function u(e) {
10
+ return i(e).slice(1) || "vue";
11
+ }
12
+ function d(e) {
13
+ return e.split("\\").join("/");
14
+ }
15
+ function f(e) {
16
+ let t = e.split("\n"), n = t.filter((e) => e.trim()).map((e) => (e.match(/^\s*/) || [""])[0].length), r = n.length ? Math.min(...n) : 0;
17
+ return t.map((e) => e.slice(r)).join("\n");
18
+ }
19
+ function p(e) {
20
+ e.core.ruler.after("inline", "fx-demo-preview", (e) => {
21
+ let i = e.env, p = process.cwd(), m = (t) => {
22
+ let n = e.tokens.findIndex((e) => e.type === "html_block" && /^<script setup>/.test(e.content.trim()));
23
+ if (n === -1) {
24
+ let n = new e.Token("html_block", "", 0);
25
+ n.content = `<script setup>\n${t}\n<\/script>\n`, e.tokens.splice(0, 0, n);
26
+ } else e.tokens[n].content.includes(t) || (e.tokens[n].content = e.tokens[n].content.replace("<\/script>", `${t}\n<\/script>`));
27
+ }, h = (t, n, r, i) => {
28
+ let a = [], o = new e.Token("html_inline", "", 0);
29
+ o.content = `<template #${t}>`, a.push(o);
30
+ let s = new e.Token("fence", "code", 0);
31
+ s.info = n, s.content = r, i && (s.src = i), a.push(s);
32
+ let c = new e.Token("html_inline", "", 0);
33
+ return c.content = "</template>", a.push(c), a;
34
+ }, g = () => {
35
+ let t = new e.Token("html_inline", "", 0);
36
+ return t.content = "</DemoPreview>", t;
37
+ }, _ = (t, n, r, i) => {
38
+ e.tokens[t].content = `<DemoPreview files="${encodeURIComponent(JSON.stringify(n))}"><${r}/>`, e.tokens.splice(t + 1, 0, ...i, g());
39
+ };
40
+ e.src = e.src.replace(/<DemoPreview\b[^>]*\bdir="([^"]*)"[^>]*?\/?>/g, (t, r) => {
41
+ let i = d(a(p, r)), o = [];
42
+ try {
43
+ o = n(i) || [];
44
+ } catch {
45
+ o = [];
46
+ }
47
+ if (!o.length) return "";
48
+ o.sort((e, t) => e === "index.vue" ? -1 : t === "index.vue" ? 1 : e.localeCompare(t));
49
+ let s = `Fx_${l(i)}`;
50
+ m(`import ${s} from '${i}/index.vue'`);
51
+ let c = e.tokens.findIndex((e) => e.content.includes(t));
52
+ if (c === -1) return "";
53
+ let f = o.flatMap((e) => {
54
+ let t = d(a(i, e));
55
+ return h(e, u(e), `<<< ${t}`, [t]);
56
+ });
57
+ return _(c, o, s, f), "";
58
+ }), e.src = e.src.replace(/<DemoPreview\b[^>]*\bsrc="([^"]*)"[^>]*?\/?>/g, (n, a) => {
59
+ let s = d(o(i.path ? r(i.path) : p, a));
60
+ if (!t(s)) return "";
61
+ let c = a.split("/").pop() || "demo.vue", f = `Fx_${l(s)}`;
62
+ m(`import ${f} from '${s}'`);
63
+ let g = e.tokens.findIndex((e) => e.content.includes(n));
64
+ return g === -1 || _(g, [c], f, h(c, u(c), `<<< ${s}`, [s])), "";
65
+ });
66
+ for (let t = 0; t < e.tokens.length; t++) {
67
+ let n = e.tokens[t];
68
+ if (n.type !== "html_block") continue;
69
+ let r = n.content.match(/^<DemoPreview>([\s\S]*?)<\/DemoPreview>\s*$/);
70
+ if (!r) continue;
71
+ let i = f(r[1]).trim();
72
+ if (!i) continue;
73
+ let a = i.match(/<script setup>([\s\S]*?)<\/script>/), o = a ? a[1].trim() : "", u = `<template>\n${i.replace(/<script setup>[\s\S]*?<\/script>/, "").trim()}\n</template>` + (o ? `\n<script setup>\n${o}\n<\/script>` : ""), d = l(u);
74
+ c.set(d, u);
75
+ let p = `Fx_${d}`;
76
+ m(`import ${p} from '${s}${d}.vue'`);
77
+ let _ = "demo.vue";
78
+ n.content = `<DemoPreview files="${encodeURIComponent(JSON.stringify([_]))}"><${p}/>`;
79
+ let v = [...h(_, "vue", i), g()], y = e.tokens.indexOf(n);
80
+ e.tokens.splice(y + 1, 0, ...v), t = y + v.length;
81
+ }
82
+ });
83
+ }
84
+ function m() {
85
+ return {
86
+ name: "fx-demo-virtual",
87
+ enforce: "pre",
88
+ resolveId(e) {
89
+ if (e.startsWith(s)) return e;
90
+ },
91
+ load(e) {
92
+ if (e.startsWith(s)) {
93
+ let t = e.slice(16).replace(/\.vue$/, "");
94
+ return c.get(t) || "";
95
+ }
96
+ }
97
+ };
98
+ }
99
+ //#endregion
1
100
  //#region .vitepress/config/index.ts
2
- var e = null, t = {
101
+ var h = null, g = {
3
102
  themeConfig: {
4
103
  outline: [2, 3],
5
104
  musicBall: {
@@ -11,27 +110,35 @@ var e = null, t = {
11
110
  },
12
111
  confetti: !0
13
112
  },
14
- markdown: { lineNumbers: !0 },
15
- transformPageData(t) {
16
- let n = t.frontmatter;
17
- if (n.layout === "home" && n.hero?.image) {
18
- let t = n.hero.image;
19
- e = typeof t == "string" ? {
20
- light: t,
21
- dark: t
113
+ markdown: {
114
+ lineNumbers: !0,
115
+ preConfig(e) {
116
+ e.use(p);
117
+ }
118
+ },
119
+ transformPageData(e) {
120
+ let t = e.frontmatter;
121
+ if (t.layout === "home" && t.hero?.image) {
122
+ let e = t.hero.image;
123
+ h = typeof e == "string" ? {
124
+ light: e,
125
+ dark: e
22
126
  } : {
23
- light: t.light,
24
- dark: t.dark
127
+ light: e.light,
128
+ dark: e.dark
25
129
  };
26
130
  }
27
- e && (e.light || e.dark) && (t.frontmatter.fxHeroImages = { ...e });
131
+ h && (h.light || h.dark) && (e.frontmatter.fxHeroImages = { ...h });
28
132
  },
29
- vite: { ssr: { noExternal: [
30
- "element-plus",
31
- "canvas-confetti",
32
- "node-vibrant",
33
- "@fuxishi/vitepress-theme"
34
- ] } }
133
+ vite: {
134
+ plugins: [m()],
135
+ ssr: { noExternal: [
136
+ "element-plus",
137
+ "canvas-confetti",
138
+ "node-vibrant",
139
+ "@fuxishi/vitepress-theme"
140
+ ] }
141
+ }
35
142
  };
36
143
  //#endregion
37
- export { t as default };
144
+ export { g as default };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,15 @@
1
- import type { Theme } from 'vitepress'
1
+ export type {
2
+ FxThemeCustomConfig,
3
+ MusicItem,
4
+ ConfettiShape,
5
+ ConfettiConfig,
6
+ } from "./config";
7
+ export { default as configPreset } from "./config";
2
8
 
3
- declare const theme: Theme
4
- export default theme
9
+ declare const theme: {
10
+ extends?: any;
11
+ Layout?: any;
12
+ enhanceApp?: (ctx: any) => any;
13
+ setup?: () => void;
14
+ };
15
+ export default theme;
package/dist/index.js CHANGED
@@ -1,58 +1,123 @@
1
1
  import e from "vitepress/theme";
2
- import { defineComponent as t, h as n, nextTick as r, onMounted as i, onUnmounted as a, provide as o, ref as s } from "vue";
3
- import { defineClientComponent as c, useData as l } from "vitepress";
4
- import { ElTooltip as u } from "element-plus";
5
- //#endregion
6
- //#region .vitepress/theme/index.ts
7
- var d = {
8
- extends: e,
9
- Layout: t({ setup(t, { slots: d }) {
10
- let f = d, { Layout: p } = e, { site: m, isDark: h } = l(), g = m.value.themeConfig;
11
- o("toggle-appearance", async ({ clientX: e, clientY: t }) => {
12
- if (!("startViewTransition" in document)) {
13
- h.value = !h.value;
14
- return;
2
+ import { Fragment as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createSlots as s, createVNode as c, defineComponent as l, h as u, nextTick as d, normalizeClass as f, onMounted as p, onUnmounted as m, openBlock as h, provide as g, ref as _, renderList as v, renderSlot as y, resolveComponent as b, resolveDynamicComponent as x, toDisplayString as S, useSlots as C, vShow as w, withCtx as T, withDirectives as E } from "vue";
3
+ import { defineClientComponent as D, useData as O } from "vitepress";
4
+ import { ElTooltip as k } from "element-plus";
5
+ //#region .vitepress/components/FxLayout.ts
6
+ var A = l({ setup(t, { slots: n }) {
7
+ let r = n, { Layout: i } = e, { site: a, isDark: o } = O(), s = a.value.themeConfig;
8
+ g("toggle-appearance", async ({ clientX: e, clientY: t }) => {
9
+ if (!("startViewTransition" in document)) {
10
+ o.value = !o.value;
11
+ return;
12
+ }
13
+ let n = [`circle(0px at ${e}px ${t}px)`, `circle(${Math.hypot(Math.max(e, innerWidth - e), Math.max(t, innerHeight - t))}px at ${e}px ${t}px)`];
14
+ await document.startViewTransition(async () => {
15
+ o.value = !o.value, await d();
16
+ }).ready, document.documentElement.animate({ clipPath: o.value ? [...n].reverse() : n }, {
17
+ duration: 400,
18
+ easing: "ease-in-out",
19
+ fill: "forwards",
20
+ pseudoElement: `::view-transition-${o.value ? "old" : "new"}(root)`
21
+ });
22
+ });
23
+ let c = s.musicBall?.enable && (s.musicBall?.src || s.musicBall?.list?.length > 0), l = _(), f = _(""), h = _(!1), v, y = s.codeBlockFold !== !1, b = typeof s.codeBlockFold == "object" ? s.codeBlockFold.lines : void 0;
24
+ p(() => {
25
+ s.smoothScroll && document.documentElement.classList.add("fx-smooth-scroll"), y && document.documentElement.classList.add("fx-code-fold-enabled");
26
+ let e = () => {
27
+ let e = document.querySelector(".VPNavBarTitle .title span");
28
+ e && (l.value = e, f.value = e.textContent || "", h.value = e.scrollWidth > e.clientWidth);
29
+ }, t = document.querySelector(".VPNavBarTitle .title");
30
+ t && (v = new ResizeObserver(e), v.observe(t)), e();
31
+ }), m(() => v?.disconnect());
32
+ let x = D(() => import("./chunk/FxMusicBall-B2TF7Q7J.js"), [{ style: { display: s.musicBall && s.musicBall.visible ? "" : "none" } }]), S = D(() => import("./chunk/FxHomeFeatureBefore-BHzR4SeT.js")), C = D(() => import("./chunk/FxConfetti-C8bEZxL7.js"), [{ confetti: s.confetti }]), w = D(() => import("./chunk/FxHeroImageBg-BWDDLukW.js"), [{ heroImageColor: s.heroImageColor }]), T = D(() => import("./chunk/FxCodeBlockFold-DGFv2bTG.js"), [{ lines: b }]);
33
+ return () => [
34
+ y && u("style", `:root{--fx-code-fold-lines:${b || 10}}`),
35
+ s.heroImageColor && u("style", ":root{--vp-home-hero-image-background-image:none;--vp-home-hero-name-color:transparent;--vp-home-hero-name-background:none}"),
36
+ u(i, null, {
37
+ ...n,
38
+ "home-features-before": () => [u(S), r["home-features-before"]?.()]
39
+ }),
40
+ c && u(x),
41
+ s.confetti && u(C),
42
+ s.heroImageColor && u(w),
43
+ y && u(T),
44
+ l.value && u(k, {
45
+ content: f.value,
46
+ virtualTriggering: !0,
47
+ virtualRef: l.value,
48
+ disabled: !h.value,
49
+ placement: "bottom"
50
+ })
51
+ ];
52
+ } }), j = { class: "fx-preview-group" }, M = { class: "fx-preview-group__toolbar" }, N = { class: "fx-preview-group__tabs" }, P = ["onClick"], F = ["title"], I = { class: "fx-preview-group__content" }, L = /* @__PURE__ */ l({
53
+ __name: "PreviewGroup",
54
+ props: { files: { default: () => [] } },
55
+ setup(e) {
56
+ let i = e, s = C(), c = _(!1), l = _(i.files[0] || ""), u = n(() => i.files.map((e) => ({
57
+ label: e,
58
+ render: s[e]
59
+ }))), d = (e) => {
60
+ l.value = e, c.value = !0;
61
+ };
62
+ return (e, n) => (h(), a("div", j, [o("div", M, [o("div", N, [(h(!0), a(t, null, v(u.value, (e) => (h(), a("button", {
63
+ key: e.label,
64
+ type: "button",
65
+ class: f(["fx-preview-group__tab", { "is-active": l.value === e.label }]),
66
+ onClick: (t) => d(e.label)
67
+ }, S(e.label), 11, P))), 128))]), o("button", {
68
+ type: "button",
69
+ class: f(["fx-preview-group__toggle", { "is-expanded": c.value }]),
70
+ title: c.value ? "收起源码" : "查看源码",
71
+ onClick: n[0] ||= (e) => c.value = !c.value
72
+ }, [...n[1] ||= [o("svg", {
73
+ viewBox: "0 0 24 24",
74
+ width: "16",
75
+ height: "16",
76
+ "aria-hidden": "true"
77
+ }, [o("path", {
78
+ fill: "none",
79
+ stroke: "currentColor",
80
+ "stroke-width": "2",
81
+ "stroke-linecap": "round",
82
+ "stroke-linejoin": "round",
83
+ d: "m6 9 6 6 6-6"
84
+ })], -1)]], 10, F)]), E(o("div", I, [(h(!0), a(t, null, v(u.value, (e) => E((h(), a("div", {
85
+ key: e.label,
86
+ class: "fx-preview-group__panel"
87
+ }, [(h(), r(x(e.render)))])), [[w, l.value === e.label]])), 128))], 512), [[w, c.value]])]));
88
+ }
89
+ }), R = { class: "fx-demo-preview" }, z = { class: "fx-demo-preview__runner not-prose" }, B = /* @__PURE__ */ l({
90
+ __name: "DemoPreview",
91
+ props: { files: { default: "" } },
92
+ setup(e) {
93
+ let t = e, l = n(() => {
94
+ try {
95
+ return JSON.parse(decodeURIComponent(t.files || ""));
96
+ } catch {
97
+ return [];
15
98
  }
16
- let n = [`circle(0px at ${e}px ${t}px)`, `circle(${Math.hypot(Math.max(e, innerWidth - e), Math.max(t, innerHeight - t))}px at ${e}px ${t}px)`];
17
- await document.startViewTransition(async () => {
18
- h.value = !h.value, await r();
19
- }).ready, document.documentElement.animate({ clipPath: h.value ? [...n].reverse() : n }, {
20
- duration: 400,
21
- easing: "ease-in-out",
22
- fill: "forwards",
23
- pseudoElement: `::view-transition-${h.value ? "old" : "new"}(root)`
24
- });
25
99
  });
26
- let _ = g.musicBall?.enable && (g.musicBall?.src || g.musicBall?.list?.length > 0), v = s(), y = s(""), b = s(!1), x, S = g.codeBlockFold !== !1, C = typeof g.codeBlockFold == "object" ? g.codeBlockFold.lines : void 0;
27
- i(() => {
28
- g.smoothScroll && document.documentElement.classList.add("fx-smooth-scroll"), S && document.documentElement.classList.add("fx-code-fold-enabled");
29
- let e = () => {
30
- let e = document.querySelector(".VPNavBarTitle .title span");
31
- e && (v.value = e, y.value = e.textContent || "", b.value = e.scrollWidth > e.clientWidth);
32
- }, t = document.querySelector(".VPNavBarTitle .title");
33
- t && (x = new ResizeObserver(e), x.observe(t)), e();
34
- }), a(() => x?.disconnect());
35
- let w = c(() => import("./chunk/FxMusicBall-CTP51ydo.js"), [{ style: { display: g.musicBall && g.musicBall.visible ? "" : "none" } }]), T = c(() => import("./chunk/FxHomeFeatureBefore-Cd9m9wit.js")), E = c(() => import("./chunk/FxConfetti-DFRD5KKS.js"), [{ confetti: g.confetti }]), D = c(() => import("./chunk/FxHeroImageBg-DyiZOKOD.js"), [{ heroImageColor: g.heroImageColor }]), O = c(() => import("./chunk/FxCodeBlockFold-C7zqZ39g.js"), [{ lines: C }]);
36
- return () => [
37
- S && n("style", `:root{--fx-code-fold-lines:${C || 10}}`),
38
- g.heroImageColor && n("style", ":root{--vp-home-hero-image-background-image:none;--vp-home-hero-name-color:transparent;--vp-home-hero-name-background:none}"),
39
- n(p, null, {
40
- ...d,
41
- "home-features-before": () => [n(T), f["home-features-before"]?.()]
42
- }),
43
- _ && n(w),
44
- g.confetti && n(E),
45
- g.heroImageColor && n(D),
46
- S && n(O),
47
- v.value && n(u, {
48
- content: y.value,
49
- virtualTriggering: !0,
50
- virtualRef: v.value,
51
- disabled: !b.value,
52
- placement: "bottom"
53
- })
54
- ];
55
- } })
100
+ return (e, t) => {
101
+ let n = b("ClientOnly");
102
+ return h(), a("div", R, [o("div", z, [c(n, null, {
103
+ fallback: T(() => [...t[0] ||= [o("div", { class: "fx-demo-preview__loading" }, "加载预览中…", -1)]]),
104
+ default: T(() => [y(e.$slots, "default")]),
105
+ _: 3
106
+ })]), l.value.length ? (h(), r(L, {
107
+ key: 0,
108
+ files: l.value
109
+ }, s({ _: 2 }, [v(l.value, (t) => ({
110
+ name: t,
111
+ fn: T(() => [y(e.$slots, t)])
112
+ }))]), 1032, ["files"])) : i("", !0)]);
113
+ };
114
+ }
115
+ }), V = {
116
+ extends: e,
117
+ Layout: A,
118
+ enhanceApp({ app: e }) {
119
+ e.component("DemoPreview", B);
120
+ }
56
121
  };
57
122
  //#endregion
58
- export { d as default };
123
+ export { V as default };
package/dist/style.css CHANGED
@@ -1,2 +1,2 @@
1
- :root{--fx-beam-c1:189, 52, 254;--fx-beam-c2:65, 209, 255;--decoration-color-blue:#45abff;--decoration-color-yellow:#a29bdb;--decoration-color-green:#8eb78b;--decoration-color-red:#f3bad6;--decoration-color-blue-dark:hsl(from var(--decoration-color-blue) h s calc(l * .5));--decoration-color-yellow-dark:hsl(from var(--decoration-color-yellow) h s calc(l * .5));--decoration-color-green-dark:hsl(from var(--decoration-color-green) h s calc(l * .5));--decoration-color-red-dark:hsl(from var(--decoration-color-red) h s calc(l * .5));--decoration-thick:.6em;--decoration-style:solid;--decoration-line:underline;--decoration-skip-ink:none;--underline-offset:-.4em;--vp-home-hero-name-color:transparent;--vp-home-hero-name-background:linear-gradient(120deg, #bd34fe, #41d1ff);--vp-home-hero-image-background-image:-webkit-linear-gradient(-45deg, #bd34fe 50%, #47caff 50%);--vp-home-hero-image-filter:blur(45px);--vp-layout-max-width:1450px;--vp-code-line-height:2.2em;--fx-code-fold-lines:99999}::selection{color:#fff;background-color:#fe7300}.dark ::selection{color:#efefef;background-color:#692f00}@property --beam-angle{syntax:"<angle>";inherits:true;initial-value:0deg}@keyframes beam-spin{to{--beam-angle:360deg}}@keyframes beam-hue-shift{0%{filter:hue-rotate(-20deg)brightness(1.2)saturate(1.1)}50%{filter:hue-rotate(20deg)brightness(1.2)saturate(1.1)}to{filter:hue-rotate(-20deg)brightness(1.2)saturate(1.1)}}@keyframes beam-hue-shift-bloom{0%{filter:blur(4px)hue-rotate(-20deg)brightness(1.2)saturate(1.1)}50%{filter:blur(4px)hue-rotate(20deg)brightness(1.2)saturate(1.1)}to{filter:blur(4px)hue-rotate(-20deg)brightness(1.2)saturate(1.1)}}@property --blur{syntax:"<length>";inherits:false;initial-value:30px}@keyframes filter_blur{0%{--blur:30px}to{--blur:80px}}.VPDoc.has-aside .content-container{max-width:100%!important}.VPDoc.has-aside>.container>.content{padding-left:5px;padding-right:5px}.VPImage{border-radius:50%}.VPDocOutlineItem a{font-size:12px!important}.aside-container{width:350px!important}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#80808059;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#8080808c}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4{text-decoration-thickness:var(--decoration-thick);-webkit-text-decoration-style:var(--decoration-style);text-decoration-style:var(--decoration-style);-webkit-text-decoration-line:var(--decoration-line);text-decoration-line:var(--decoration-line);text-decoration-skip-ink:var(--decoration-skip-ink);text-underline-offset:var(--underline-offset)}.vp-doc h1{-webkit-text-decoration-color:var(--decoration-color-blue);text-decoration-color:var(--decoration-color-blue)}.vp-doc h2{-webkit-text-decoration-color:var(--decoration-color-yellow);text-decoration-color:var(--decoration-color-yellow)}.vp-doc h3{-webkit-text-decoration-color:var(--decoration-color-green);text-decoration-color:var(--decoration-color-green)}.vp-doc h4{-webkit-text-decoration-color:var(--decoration-color-red);text-decoration-color:var(--decoration-color-red)}.vp-doc img{border:1px dashed #efefef;border-radius:5px;margin-top:10px}.vp-doc .vp-adaptive-theme:not(.vp-code-group .vp-adaptive-theme){border-top:6px solid #d4eaf7}.vp-doc .vp-adaptive-theme:not(.vp-code-group .vp-adaptive-theme) .vp-code:not(.dark .vp-code){padding-bottom:18px}.vp-doc .vp-code-group.vp-adaptive-theme:not(.dark .vp-code-group.vp-adaptive-theme){border-top:none!important}.vp-doc .vp-code-group.vp-adaptive-theme:after{display:none}.vp-doc .vp-code-group .tabs{border-top:6px solid #d4eaf7}.dark .VPHome .image-bg{filter:blur(var(--blur));animation:1.8s ease-in infinite alternate-reverse filter_blur}.dark .vp-doc h1{-webkit-text-decoration-color:var(--decoration-color-blue-dark);text-decoration-color:var(--decoration-color-blue-dark)}.dark .vp-doc h2{-webkit-text-decoration-color:var(--decoration-color-yellow-dark);text-decoration-color:var(--decoration-color-yellow-dark)}.dark .vp-doc h3{-webkit-text-decoration-color:var(--decoration-color-green-dark);text-decoration-color:var(--decoration-color-green-dark)}.dark .vp-doc h4{-webkit-text-decoration-color:var(--decoration-color-red-dark);text-decoration-color:var(--decoration-color-red-dark)}.dark .vp-doc img{border-color:#2b2b2b}.dark .vp-doc .vp-code-group .tabs{border-top:2px solid #0000!important}.dark .vp-doc .vp-adaptive-theme{border:2px solid #0000;border-radius:8px;position:relative}.dark .vp-doc .vp-adaptive-theme.active{margin-bottom:0}.dark .vp-doc .vp-adaptive-theme:not(.vp-code-group .vp-adaptive-theme){--beam-radius:8px;--beam-z-before:4;--beam-z-after:5;--beam-mask-inset:28px;border-top:2px solid #0000}.dark .VPDocFooter .pager-link{border-color:#0000;position:relative}.dark .VPDocFooter .pager-link:not(:hover){border-color:var(--vp-c-divider,#313d44)}.dark .VPDocFooter .pager-link{--beam-radius:8px;--beam-z-before:1;--beam-z-after:2;--beam-mask-inset:20px}.dark .vp-doc .vp-adaptive-theme:not(.vp-code-group .vp-adaptive-theme):before,.dark .VPDocFooter .pager-link:before{content:"";border-radius:var(--beam-radius);clip-path:inset(0 round var(--beam-radius));pointer-events:none;z-index:var(--beam-z-before);opacity:0;box-shadow:inset 0 0 9px 1px rgba(var(--fx-beam-c1),.3), inset 0 0 12px rgba(var(--fx-beam-c2),.15);background:radial-gradient(ellipse 63px 36px at 33% -7.4%, rgba(var(--fx-beam-c1),.45), transparent), radial-gradient(ellipse 54px 31px at 12% -5%, rgba(var(--fx-beam-c1),.45), transparent), radial-gradient(ellipse 36px 63px at 2.1% 68.3%, rgba(var(--fx-beam-c2),.45), transparent), radial-gradient(ellipse 18px 31px at 2.1% 68.3%, rgba(var(--fx-beam-c2),.45), transparent), radial-gradient(ellipse 162px 28px at 74.4% 100%, rgba(var(--fx-beam-c1),.45), transparent), radial-gradient(ellipse 76px 23px at 55% 100%, rgba(var(--fx-beam-c2),.45), transparent), radial-gradient(ellipse 66px 28px at 93.9% 0%, rgba(var(--fx-beam-c1),.45), transparent), radial-gradient(ellipse 23px 37px at 100% 27.1%, rgba(var(--fx-beam-c1),.45), transparent), radial-gradient(ellipse 46px 43px at 100% 27.1%, rgba(var(--fx-beam-c2),.45), transparent);-webkit-mask-image:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white), linear-gradient(to right, white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white);-webkit-mask-image:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white), linear-gradient(to right, white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white);mask-image:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white), linear-gradient(to right, white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white);-webkit-mask-composite:source-in, source-over;transition:opacity .5s;animation:3s linear infinite beam-spin,12s ease-in-out infinite beam-hue-shift;position:absolute;inset:0;-webkit-mask-composite:source-in,source-over;mask-composite:intersect,add}.dark .vp-doc .vp-adaptive-theme:not(.vp-code-group .vp-adaptive-theme):after,.dark .VPDocFooter .pager-link:after{content:"";border-radius:var(--beam-radius);pointer-events:none;z-index:var(--beam-z-after);opacity:0;background:conic-gradient(from var(--beam-angle), transparent 0%, transparent 64%, rgba(var(--fx-beam-c1),.15) 66.5%, rgba(var(--fx-beam-c1),.35) 68%, rgba(var(--fx-beam-c1),.5) 69%, rgba(var(--fx-beam-c2),.65) 70%, rgba(var(--fx-beam-c2),.65) 70.5%, rgba(var(--fx-beam-c2),.45) 71.5%, rgba(var(--fx-beam-c1),.25) 73%, rgba(var(--fx-beam-c1),.1) 75%, transparent 77%, transparent 100%), radial-gradient(ellipse 70px 40px at 33% -7.4%, rgb(var(--fx-beam-c1)), transparent), radial-gradient(ellipse 60px 35px at 12% -5%, rgb(var(--fx-beam-c1)), transparent), radial-gradient(ellipse 40px 70px at 2.1% 68.3%, rgb(var(--fx-beam-c2)), transparent), radial-gradient(ellipse 20px 35px at 2.1% 68.3%, rgb(var(--fx-beam-c2)), transparent), radial-gradient(ellipse 180px 32px at 74.4% 100%, rgb(var(--fx-beam-c1)), transparent), radial-gradient(ellipse 85px 26px at 55% 100%, rgb(var(--fx-beam-c2)), transparent), radial-gradient(ellipse 74px 32px at 93.9% 0%, rgb(var(--fx-beam-c1)), transparent), radial-gradient(ellipse 26px 42px at 100% 27.1%, rgb(var(--fx-beam-c1)), transparent), radial-gradient(ellipse 52px 48px at 100% 27.1%, rgb(var(--fx-beam-c2)), transparent);-webkit-mask:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);-webkit-mask:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);mask:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);-webkit-mask-composite:source-in, xor;filter:blur(4px)brightness(1.2)saturate(1.1);padding:1px;transition:opacity .5s;animation:3s linear infinite beam-spin,12s ease-in-out infinite beam-hue-shift-bloom;position:absolute;inset:0;-webkit-mask-composite:source-in,xor;mask-composite:intersect,exclude}.dark .vp-doc .vp-adaptive-theme:not(.vp-code-group .vp-adaptive-theme):hover:before,.dark .VPDocFooter .pager-link:hover:before{opacity:.7}.dark .vp-doc .vp-adaptive-theme:not(.vp-code-group .vp-adaptive-theme):hover:after,.dark .VPDocFooter .pager-link:hover:after{opacity:.6}.dark .VPHomeFeatures .VPFeature{border-radius:12px;position:relative;overflow:hidden}.dark .VPHomeFeatures .VPFeature:before{content:"";background:radial-gradient(var(--color), transparent, transparent);left:var(--x);top:var(--y);opacity:0;width:700px;height:700px;transition:opacity 1s;display:block;position:absolute;transform:translate(-50%,-50%)}.dark .VPHomeFeatures .VPFeature:hover:before{opacity:1;transition:opacity .3s}.dark .VPHomeFeatures .VPFeature:after{content:"";z-index:0;background-color:#222c;border-radius:10px;display:block;position:absolute;inset:2px}.dark .VPHomeFeatures .VPFeature>.box{z-index:1;position:relative}html.fx-smooth-scroll{scroll-behavior:smooth}html.fx-smooth-scroll .VPDocAsideOutline .outline-marker{transition:top .35s cubic-bezier(.22,1,.36,1),opacity .35s}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}.dark::view-transition-new(root){z-index:1}::view-transition-new(root){z-index:9999}.dark::view-transition-old(root){z-index:9999}.VPNavBarTitle{overflow:hidden}.VPNavBarTitle .title{min-width:0}.VPNavBarTitle .title span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.VPNavBarTitle .title img{flex-shrink:0}.vp-doc .vp-adaptive-theme{position:relative}.vp-doc .vp-adaptive-theme>.vp-code{max-height:calc(var(--vp-code-line-height,2.2em) * var(--fx-code-fold-lines,10) + 18px);overflow:hidden}.vp-doc .vp-adaptive-theme>.line-numbers-wrapper{max-height:calc(var(--vp-code-line-height,2.2em) * var(--fx-code-fold-lines,10));overflow:hidden}.fx-code-fold-enabled .vp-doc .fx-code-no-fold>.vp-code,.fx-code-fold-enabled .vp-doc .fx-code-no-fold>.line-numbers-wrapper,.fx-code-fold-enabled .vp-doc .fx-code-foldable:not(.fx-code-folded)>.vp-code,.fx-code-fold-enabled .vp-doc .fx-code-foldable:not(.fx-code-folded)>.line-numbers-wrapper{max-height:none;overflow:visible}.fx-code-fold-overlay{pointer-events:none;z-index:3;justify-content:center;align-items:center;font-size:13px;font-weight:500;transition:-webkit-backdrop-filter .3s,backdrop-filter .3s,height .3s;display:flex;position:absolute;bottom:0;left:0;right:0}.fx-code-fold-label{color:var(--vp-c-text-1);pointer-events:auto;cursor:pointer;align-items:center;gap:4px;display:inline-flex}.fx-code-fold-label svg{fill:currentColor;flex-shrink:0}.fx-code-fold-overlay:hover .fx-code-fold-label{color:var(--vp-c-brand-1)}.fx-code-folded>.fx-code-fold-overlay{-webkit-backdrop-filter:blur(8px);background:linear-gradient(to bottom, transparent, var(--vp-c-bg-soft));align-items:flex-end;height:80px;padding-bottom:10px}.fx-code-fold-overlay.fx-code-fold-expanded{height:auto;padding:8px 0}.fx-code-foldable:not(.fx-code-folded){padding-bottom:36px}:root{--el-color-white:#fff;--el-color-black:#000;--el-color-primary-rgb:64, 158, 255;--el-color-success-rgb:103, 194, 58;--el-color-warning-rgb:230, 162, 60;--el-color-danger-rgb:245, 108, 108;--el-color-error-rgb:245, 108, 108;--el-color-info-rgb:144, 147, 153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645, .045, .355, 1);--el-transition-function-fast-bezier:cubic-bezier(.23, 1, .32, 1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier), opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#fff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#fff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#fff;--el-box-shadow:0px 12px 32px 4px #0000000a, 0px 8px 20px #00000014;--el-box-shadow-light:0px 0px 12px #0000001f;--el-box-shadow-lighter:0px 0px 6px #0000001f;--el-box-shadow-dark:0px 16px 48px 16px #00000014, 0px 12px 32px #0000001f, 0px 8px 16px -8px #00000029;--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:#000c;--el-overlay-color-light:#000000b3;--el-overlay-color-lighter:#00000080;--el-mask-color:#ffffffe6;--el-mask-color-extra-light:#ffffff4d;--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:top;transform:scaleY(1)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:bottom;transform:scaleY(1)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:0 0;transform:scale(1)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out, var(--el-transition-duration) padding-top ease-in-out, var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-leave-active,.el-collapse-transition-enter-active{transition:var(--el-transition-duration) max-height ease-in-out, var(--el-transition-duration) padding-top ease-in-out, var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out, var(--el-transition-duration) padding-left ease-in-out, var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55, 0, .1, 1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.el-icon{--color:inherit;fill:currentColor;width:1em;height:1em;color:var(--color);line-height:1em;font-size:inherit;justify-content:center;align-items:center;display:inline-flex;position:relative}.el-icon.is-loading{animation:2s linear infinite rotating}.el-icon svg{width:1em;height:1em}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);--el-popper-bg-color-light:var(--el-bg-color-overlay);--el-popper-bg-color-dark:var(--el-text-color-primary);border-radius:var(--el-popper-border-radius);z-index:2000;overflow-wrap:break-word;word-break:normal;visibility:visible;min-width:10px;padding:5px 11px;font-size:12px;line-height:20px;position:absolute}.el-popper.is-dark{--el-fill-color-blank:var(--el-popper-bg-color-dark);color:var(--el-bg-color);background:var(--el-popper-bg-color-dark);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{border:1px solid var(--el-text-color-primary);background:var(--el-popper-bg-color-dark);right:0}.el-popper.is-light{--el-fill-color-blank:var(--el-popper-bg-color-light);background:var(--el-popper-bg-color-light);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{border:1px solid var(--el-border-color-light);background:var(--el-popper-bg-color-light);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{z-index:-1;width:10px;height:10px;position:absolute}.el-popper__arrow:before{z-index:-1;content:" ";background:var(--el-text-color-primary);box-sizing:border-box;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-top-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-right-color:#0000!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-top-color:#0000!important;border-right-color:#0000!important}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;vertical-align:bottom;width:100%;font-size:var(--el-font-size-base);display:inline-block;position:relative}.el-textarea__inner{resize:vertical;box-sizing:border-box;width:100%;line-height:1.5;font-size:inherit;color:var(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);background-image:none;border:none;padding:5px 11px;font-family:inherit;display:block;position:relative}.el-textarea__inner.is-clearable{padding:5px 26px 5px 11px}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea__clear{color:var(--el-input-icon-color);cursor:pointer;font-size:14px;position:absolute;top:15px;right:11px;transform:translateY(-50%)}.el-textarea__clear:hover{color:var(--el-input-clear-hover-color)}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);font-size:12px;line-height:14px;position:absolute;bottom:5px;right:10px}.el-textarea .el-input__count.is-outside{top:100%;right:0;bottom:unset;background:0 0;padding-top:2px;line-height:1;position:absolute}.el-textarea.is-disabled .el-textarea__inner{box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);font-size:var(--el-font-size-base);width:var(--el-input-width);line-height:var(--el-input-height);box-sizing:border-box;vertical-align:middle;display:inline-flex;position:relative}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;color:var(--el-color-info);align-items:center;font-size:12px;display:inline-flex}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;padding-left:8px;display:inline-block}.el-input .el-input__count.is-outside{height:unset;padding-top:2px;position:absolute;top:100%;right:0}.el-input .el-input__count.is-outside .el-input__count-inner{background:0 0;padding-left:0;line-height:1}.el-input__wrapper{background-color:var(--el-input-bg-color,var(--el-fill-color-blank));border-radius:var(--el-input-border-radius,var(--el-border-radius-base));cursor:text;transition:var(--el-transition-box-shadow);box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;background-image:none;flex-grow:1;justify-content:center;align-items:center;padding:1px 11px;display:inline-flex;transform:translate(0)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height,32px) - 2px)}.el-input__inner{-webkit-appearance:none;width:100%;color:var(--el-input-text-color,var(--el-text-color-regular));font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);box-sizing:border-box;background:0 0;border:none;outline:none;flex-grow:1;padding:0}.el-input__inner:focus{outline:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__prefix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__suffix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{height:inherit;line-height:inherit;transition:all var(--el-transition-duration);justify-content:center;align-items:center;margin-left:8px;display:flex}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);cursor:not-allowed;box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-disabled .el-input__prefix-inner,.el-input.is-disabled .el-input__suffix-inner{pointer-events:none}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height,40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height,24px) - 2px)}.el-input-group{align-items:stretch;width:100%;display:inline-flex}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);border-radius:var(--el-input-border-radius);white-space:nowrap;justify-content:center;align-items:center;min-height:100%;padding:0 20px;display:inline-flex;position:relative}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-select,.el-input-group__append .el-button,.el-input-group__prepend .el-select,.el-input-group__prepend .el-button{flex:1;margin:0 -20px;display:inline-block}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{color:inherit;background-color:#0000;border-color:#0000}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{box-shadow:1px 0 0 0 var(--el-input-border-color) inset, 0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset;border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{box-shadow:0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset, -1px 0 0 0 var(--el-input-border-color) inset;border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend>.el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{box-shadow:1px 0 0 0 var(--el-input-border-color) inset, 0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append>.el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{box-shadow:0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset, -1px 0 0 0 var(--el-input-border-color) inset;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-hidden{display:none!important}.el-input-number{vertical-align:middle;width:150px;line-height:30px;display:inline-flex;position:relative}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;text-align:center;line-height:1}.el-input-number .el-input__inner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__increase,.el-input-number__decrease{z-index:1;background:var(--el-fill-color-light);width:32px;height:auto;color:var(--el-text-color-regular);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;top:1px;bottom:1px}.el-input-number__increase:hover,.el-input-number__decrease:hover{color:var(--el-color-primary)}.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__increase.is-disabled,.el-input-number__decrease.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;border-left:var(--el-border);right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__increase,.el-input-number.is-disabled .el-input-number__decrease{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__increase:hover,.el-input-number.is-disabled .el-input-number__decrease:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{width:180px;line-height:38px}.el-input-number--large .el-input-number__increase,.el-input-number--large .el-input-number__decrease{width:40px;font-size:14px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{width:120px;line-height:22px}.el-input-number--small .el-input-number__increase,.el-input-number--small .el-input-number__decrease{width:24px;font-size:12px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__increase [class*=el-icon],.el-input-number--small .el-input-number__decrease [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__increase,.el-input-number.is-controls-right .el-input-number__decrease{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon],.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 var(--el-border-radius-base) 0 0;border-bottom:var(--el-border);bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-right:none;border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;top:auto;left:auto;right:1px}.el-input-number.is-controls-right[class*=large] [class*=increase],.el-input-number.is-controls-right[class*=large] [class*=decrease]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=increase],.el-input-number.is-controls-right[class*=small] [class*=decrease]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;width:100%;height:32px;display:flex}.el-slider__runway{height:var(--el-slider-height);background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;position:relative}.el-slider__runway.show-input{width:auto;margin-right:30px}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper:hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button:hover,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button.dragging{cursor:not-allowed;transform:scale(1)}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{height:var(--el-slider-height);background-color:var(--el-slider-main-bg-color);border-top-left-radius:var(--el-slider-border-radius);border-bottom-left-radius:var(--el-slider-border-radius);position:absolute}.el-slider__button-wrapper{height:var(--el-slider-button-wrapper-size);width:var(--el-slider-button-wrapper-size);z-index:1;top:var(--el-slider-button-wrapper-offset);text-align:center;-webkit-user-select:none;user-select:none;background-color:#0000;outline:none;line-height:normal;position:absolute;transform:translate(-50%)}.el-slider__button-wrapper:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-slider__button-wrapper:hover,.el-slider__button-wrapper.hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:var(--el-slider-button-size);height:var(--el-slider-button-size);vertical-align:middle;border:solid 2px var(--el-slider-main-bg-color);background-color:var(--el-color-white);box-sizing:border-box;transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;border-radius:50%;display:inline-block}.el-slider__button:hover,.el-slider__button.hover,.el-slider__button.dragging{transform:scale(1.2)}.el-slider__button:hover,.el-slider__button.hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:var(--el-slider-height);width:var(--el-slider-height);border-radius:var(--el-border-radius-circle);background-color:var(--el-slider-stop-bg-color);position:absolute;transform:translate(-50%)}.el-slider__marks{width:18px;height:100%;top:0;left:12px}.el-slider__marks-text{color:var(--el-color-info);white-space:pre;margin-top:15px;font-size:14px;position:absolute;transform:translate(-50%)}.el-slider.is-vertical{flex:0;width:auto;height:100%;display:inline-flex;position:relative}.el-slider.is-vertical .el-slider__runway{width:var(--el-slider-height);height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:var(--el-slider-height);border-radius:0 0 3px 3px;height:auto}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:var(--el-slider-button-wrapper-offset);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.fx-music-ball{--fx-music-accent-start:rgb(var(--fx-beam-c1));--fx-music-accent-end:rgb(var(--fx-beam-c2));--fx-music-bg:#ffffff73;--fx-music-bg-blur:12px;--fx-music-border:#ffffff4d;--fx-music-shadow:0 4px 16px #0000001a;--fx-music-text:#000000a6;--fx-music-text-muted:#0006;--fx-music-slider-track:#00000014;--fx-music-slider-thumb:rgb(var(--fx-beam-c2));--music-list-sep-color:#0000000f;--music-list-bgcolor:#ffffff80;--music-list-bdcolor:#ffffff4d}.dark .fx-music-ball{--fx-music-bg:#1e1e328c;--fx-music-bg-blur:16px;--fx-music-border:#ffffff14;--fx-music-shadow:0 4px 20px #0000004d, 0 0 12px rgba(var(--fx-beam-c1), .15);--fx-music-text:#ffffffb3;--fx-music-text-muted:#fff6;--fx-music-slider-track:#ffffff1a;--music-list-sep-color:#ffffff0d;--music-list-bgcolor:#1e1e3299;--music-list-bdcolor:#ffffff0f}.fx-music-ball{background:var(--fx-music-bg);-webkit-backdrop-filter:blur(var(--fx-music-bg-blur));border:1px solid var(--fx-music-border);box-shadow:var(--fx-music-shadow);cursor:pointer;z-index:99;box-sizing:border-box;border-radius:28px;justify-content:space-between;align-items:center;width:50px;height:50px;padding:0 20px 0 5px;transition:width .35s cubic-bezier(.22,1,.36,1);display:flex;position:fixed;bottom:15px;left:15px;overflow:hidden}.fx-music-ball.active{overflow:inherit}.fx-music-ball:hover{width:330px;transition:width .4s cubic-bezier(.34,1.56,.64,1) .5s}.fx-music-ball .fx-progress-ring{cursor:pointer;position:absolute;top:-1px;left:-1px;transform:rotate(-90deg)}.fx-music-ball .fx-progress-track{stroke:var(--fx-music-slider-track)}.fx-music-ball .fx-progress-bar{stroke:url(#fx-progress-gradient);transition:stroke-dasharray .1s}.fx-music-ball .fx-orbit-ring{border:1.5px solid #0000;border-top-color:rgba(var(--fx-beam-c1), .4);border-right-color:rgba(var(--fx-beam-c2), .2);pointer-events:none;border-radius:50%;animation:3s linear infinite orbit-spin;position:absolute;inset:-4px}.dark .fx-music-ball .fx-orbit-ring{border-top-color:rgba(var(--fx-beam-c1), .6);border-right-color:rgba(var(--fx-beam-c2), .3);filter:drop-shadow(0 0 4px rgba(var(--fx-beam-c1), .3))}@keyframes orbit-spin{to{transform:rotate(360deg)}}.fx-music-ball .fx-music-ball__inner{justify-content:space-between;align-items:center;width:330px;display:flex}.fx-music-ball .fx-play-pause span,.fx-music-ball .fx-music-list-button span,.fx-music-ball .fx-icon-volume{justify-content:center;align-items:center;display:flex}.fx-music-ball .fx-play-pause span svg,.fx-music-ball .fx-music-list-button span svg,.fx-music-ball .fx-icon-volume svg{fill:var(--fx-music-text)}.fx-music-ball .fx-play-pause{border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:background-color .3s;display:flex}.fx-music-ball .fx-play-pause:hover{background-color:rgba(var(--fx-beam-c1), .1)}.dark .fx-music-ball .fx-play-pause:hover{background-color:rgba(var(--fx-beam-c1), .15)}.fx-music-ball .fx-time{color:var(--fx-music-text-muted);white-space:nowrap;width:78px;padding:0 10px;font-size:12px}.fx-music-ball .fx-duration{flex:1;padding:0 10px 0 3px}.fx-music-ball .fx-music-list-button{justify-content:center;align-items:center;width:30px;margin-left:8px;display:flex}.fx-music-ball .el-slider{--el-slider-height:4px;--el-slider-main-bg-color:var(--fx-music-accent-end);--el-color-white:var(--fx-music-slider-thumb)}.fx-music-ball .el-slider .el-slider__runway{background-color:var(--fx-music-slider-track)}.fx-music-ball .el-slider .el-slider__bar{background:linear-gradient(90deg, var(--fx-music-accent-start), var(--fx-music-accent-end))}.fx-music-ball .el-slider .el-slider__button{--el-slider-button-size:12px;border-color:var(--fx-music-slider-thumb);box-shadow:0 0 6px rgba(var(--fx-beam-c2), .3);position:relative;top:-1px}.fx-music-ball .fx-volume{align-items:center;width:30px;transition:width .3s .3s;display:flex}.fx-music-ball .fx-volume .el-slider{opacity:0;transition:opacity .3s .3s}.fx-music-ball .fx-volume:hover{width:120px;transition:width .3s .3s}.fx-music-ball .fx-volume:hover .el-slider{opacity:1;transition:opacity .3s}.fx-music-ball .fx-icon-volume{cursor:pointer;margin-left:5px}.fx-music-ball.is-playing .fx-progress-bar{animation:2s ease-in-out infinite progress-pulse}@keyframes progress-pulse{0%,to{filter:drop-shadow(0 0 2px rgba(var(--fx-beam-c1), .3))}50%{filter:drop-shadow(0 0 6px rgba(var(--fx-beam-c2), .6))}}.fx-music-ball.is-playing:before{content:"";border-radius:inherit;background:linear-gradient(135deg, rgba(var(--fx-beam-c1), .08) 0%, transparent 40%, rgba(var(--fx-beam-c2), .08) 60%, transparent 100%);pointer-events:none;background-size:200% 200%;animation:4s ease-in-out infinite shimmer;position:absolute;inset:0}@keyframes shimmer{0%{background-position:200% 0}50%{background-position:0 200%}to{background-position:200% 0}}.dark .fx-music-ball.is-playing{box-shadow:0 4px 20px #0000004d, 0 0 12px rgba(var(--fx-beam-c1), .15), 0 0 24px rgba(var(--fx-beam-c2), .08)}.fx-music-ball .fx-music-list{box-sizing:border-box;z-index:-9;background:var(--music-list-bgcolor);-webkit-backdrop-filter:blur(20px);border:1px solid var(--music-list-bdcolor);width:100%;box-shadow:var(--fx-music-shadow);opacity:0;pointer-events:none;border-radius:24px;padding:15px 5px 50px;transition:opacity .3s,transform .3s;position:absolute;bottom:0;left:0;transform:translateY(10px)}.fx-music-ball.active .fx-music-list{opacity:1;pointer-events:auto;transform:translateY(0)}.fx-music-ball .fx-music-list .fx-music-list-sep{border-bottom:1px solid var(--music-list-sep-color);margin:5px 0}.fx-music-ball .fx-music-list .fx-music-list-item{text-wrap:nowrap;text-overflow:ellipsis;color:var(--fx-music-text-muted);padding-left:20px;padding-right:20px;font-size:12px;line-height:24px;transition:color .2s;position:relative;overflow:hidden}.fx-music-ball .fx-music-list .fx-music-list-item:hover{color:var(--fx-music-accent-end)}.fx-music-ball .fx-music-list .fx-music-list-item .image-live{width:12px;height:12px;position:absolute;bottom:6px;left:3px}.fx-music-ball .fx-music-list .fx-music-list-item .image-live svg{width:100%;height:100%}.fx-music-ball .fx-music-list .fx-music-list-item .image-live .bar{fill:currentColor;transform-box:fill-box;transform-origin:bottom}.fx-music-ball .fx-music-list .fx-music-list-item .image-live.playing .bar-1{animation:.8s ease-in-out infinite fx-eq-bar}.fx-music-ball .fx-music-list .fx-music-list-item .image-live.playing .bar-2{animation:.8s ease-in-out .2s infinite fx-eq-bar}.fx-music-ball .fx-music-list .fx-music-list-item .image-live.playing .bar-3{animation:.8s ease-in-out .4s infinite fx-eq-bar}.fx-music-ball .fx-music-list .fx-music-list-item .image-live.playing .bar-4{animation:.8s ease-in-out .1s infinite fx-eq-bar}@keyframes fx-eq-bar{0%,to{transform:scaleY(1)}50%{transform:scaleY(.3)}}.fx-music-ball .fx-music-list .fx-music-list-item.active{color:var(--fx-music-accent-start)}.fx-music-ball .fx-music-list .fx-music-list-item.active:hover{color:var(--fx-music-accent-end)}@media (prefers-reduced-motion:reduce){.fx-music-ball *,.fx-music-ball :before,.fx-music-ball :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
1
+ :root{--fx-beam-c1:189, 52, 254;--fx-beam-c2:65, 209, 255;--decoration-color-blue:#45abff;--decoration-color-yellow:#a29bdb;--decoration-color-green:#8eb78b;--decoration-color-red:#f3bad6;--decoration-color-blue-dark:hsl(from var(--decoration-color-blue) h s calc(l * .5));--decoration-color-yellow-dark:hsl(from var(--decoration-color-yellow) h s calc(l * .5));--decoration-color-green-dark:hsl(from var(--decoration-color-green) h s calc(l * .5));--decoration-color-red-dark:hsl(from var(--decoration-color-red) h s calc(l * .5));--decoration-thick:.6em;--decoration-style:solid;--decoration-line:underline;--decoration-skip-ink:none;--underline-offset:-.4em;--vp-home-hero-name-color:transparent;--vp-home-hero-name-background:linear-gradient(120deg, #bd34fe, #41d1ff);--vp-home-hero-image-background-image:-webkit-linear-gradient(-45deg, #bd34fe 50%, #47caff 50%);--vp-home-hero-image-filter:blur(45px);--vp-layout-max-width:1450px;--vp-code-line-height:2.2em;--fx-code-fold-lines:99999}::selection{color:#fff;background-color:#fe7300}.dark ::selection{color:#efefef;background-color:#692f00}@property --beam-angle{syntax:"<angle>";inherits:true;initial-value:0deg}@keyframes beam-spin{to{--beam-angle:360deg}}@keyframes beam-hue-shift{0%{filter:hue-rotate(-20deg)brightness(1.2)saturate(1.1)}50%{filter:hue-rotate(20deg)brightness(1.2)saturate(1.1)}to{filter:hue-rotate(-20deg)brightness(1.2)saturate(1.1)}}@keyframes beam-hue-shift-bloom{0%{filter:blur(4px)hue-rotate(-20deg)brightness(1.2)saturate(1.1)}50%{filter:blur(4px)hue-rotate(20deg)brightness(1.2)saturate(1.1)}to{filter:blur(4px)hue-rotate(-20deg)brightness(1.2)saturate(1.1)}}@property --blur{syntax:"<length>";inherits:false;initial-value:30px}@keyframes filter_blur{0%{--blur:30px}to{--blur:80px}}.VPDoc.has-aside .content-container{max-width:100%!important}.VPDoc.has-aside>.container>.content{padding-left:5px;padding-right:5px}.VPImage{border-radius:50%}.VPDocOutlineItem a{font-size:12px!important}.aside-container{width:350px!important}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#80808059;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#8080808c}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4{text-decoration-thickness:var(--decoration-thick);-webkit-text-decoration-style:var(--decoration-style);text-decoration-style:var(--decoration-style);-webkit-text-decoration-line:var(--decoration-line);text-decoration-line:var(--decoration-line);text-decoration-skip-ink:var(--decoration-skip-ink);text-underline-offset:var(--underline-offset)}.vp-doc h1{-webkit-text-decoration-color:var(--decoration-color-blue);text-decoration-color:var(--decoration-color-blue)}.vp-doc h2{-webkit-text-decoration-color:var(--decoration-color-yellow);text-decoration-color:var(--decoration-color-yellow)}.vp-doc h3{-webkit-text-decoration-color:var(--decoration-color-green);text-decoration-color:var(--decoration-color-green)}.vp-doc h4{-webkit-text-decoration-color:var(--decoration-color-red);text-decoration-color:var(--decoration-color-red)}.vp-doc img{border:1px dashed #efefef;border-radius:5px;margin-top:10px}.vp-doc div[class*=language-]:not(.vp-code-group div[class*=language-]){border-top:6px solid #d4eaf7}.vp-doc div[class*=language-]:not(.vp-code-group div[class*=language-]) pre.shiki:not(.dark pre.shiki){padding-bottom:18px}.vp-doc .vp-code-group:not(.dark .vp-code-group){border-top:none!important}.vp-doc .vp-code-group .tabs{border-top:6px solid #d4eaf7}.dark .VPHome .image-bg{filter:blur(var(--blur));animation:1.8s ease-in infinite alternate-reverse filter_blur}.dark .vp-doc h1{-webkit-text-decoration-color:var(--decoration-color-blue-dark);text-decoration-color:var(--decoration-color-blue-dark)}.dark .vp-doc h2{-webkit-text-decoration-color:var(--decoration-color-yellow-dark);text-decoration-color:var(--decoration-color-yellow-dark)}.dark .vp-doc h3{-webkit-text-decoration-color:var(--decoration-color-green-dark);text-decoration-color:var(--decoration-color-green-dark)}.dark .vp-doc h4{-webkit-text-decoration-color:var(--decoration-color-red-dark);text-decoration-color:var(--decoration-color-red-dark)}.dark .vp-doc img{border-color:#2b2b2b}.dark .vp-doc .vp-code-group .tabs{border-top:2px solid #0000!important}.dark .vp-doc div[class*=language-]:not(.vp-code-group div[class*=language-]){--beam-radius:8px;--beam-z-before:4;--beam-z-after:5;--beam-mask-inset:28px;border:2px solid #0000;border-radius:8px;position:relative}.dark .vp-doc .vp-code-group{--beam-radius:8px;--beam-z-before:4;--beam-z-after:5;--beam-mask-inset:28px;border-radius:8px;position:relative;overflow:hidden}.vp-doc .vp-code-group div[class*=language-]{margin-bottom:0!important}.dark .VPDocFooter .pager-link{border-color:#0000;position:relative}.dark .VPDocFooter .pager-link:not(:hover){border-color:var(--vp-c-divider,#313d44)}.dark .VPDocFooter .pager-link{--beam-radius:8px;--beam-z-before:1;--beam-z-after:2;--beam-mask-inset:20px}.dark .vp-doc div[class*=language-]:not(.vp-code-group div[class*=language-]):before,.dark .vp-doc .vp-code-group:before,.dark .VPDocFooter .pager-link:before{content:"";border-radius:var(--beam-radius);clip-path:inset(0 round var(--beam-radius));pointer-events:none;z-index:var(--beam-z-before);opacity:0;box-shadow:inset 0 0 9px 1px rgba(var(--fx-beam-c1),.3), inset 0 0 12px rgba(var(--fx-beam-c2),.15);background:radial-gradient(ellipse 63px 36px at 33% -7.4%, rgba(var(--fx-beam-c1),.45), transparent), radial-gradient(ellipse 54px 31px at 12% -5%, rgba(var(--fx-beam-c1),.45), transparent), radial-gradient(ellipse 36px 63px at 2.1% 68.3%, rgba(var(--fx-beam-c2),.45), transparent), radial-gradient(ellipse 18px 31px at 2.1% 68.3%, rgba(var(--fx-beam-c2),.45), transparent), radial-gradient(ellipse 162px 28px at 74.4% 100%, rgba(var(--fx-beam-c1),.45), transparent), radial-gradient(ellipse 76px 23px at 55% 100%, rgba(var(--fx-beam-c2),.45), transparent), radial-gradient(ellipse 66px 28px at 93.9% 0%, rgba(var(--fx-beam-c1),.45), transparent), radial-gradient(ellipse 23px 37px at 100% 27.1%, rgba(var(--fx-beam-c1),.45), transparent), radial-gradient(ellipse 46px 43px at 100% 27.1%, rgba(var(--fx-beam-c2),.45), transparent);-webkit-mask-image:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white), linear-gradient(to right, white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white);-webkit-mask-image:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white), linear-gradient(to right, white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white);mask-image:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white), linear-gradient(to right, white, transparent var(--beam-mask-inset), transparent calc(100% - var(--beam-mask-inset)), white);-webkit-mask-composite:source-in, source-over;transition:opacity .5s;animation:3s linear infinite beam-spin,12s ease-in-out infinite beam-hue-shift;position:absolute;inset:0;-webkit-mask-composite:source-in,source-over;mask-composite:intersect,add}.dark .vp-doc div[class*=language-]:not(.vp-code-group div[class*=language-]):after,.dark .vp-doc .vp-code-group:after,.dark .VPDocFooter .pager-link:after{content:"";border-radius:var(--beam-radius);pointer-events:none;z-index:var(--beam-z-after);opacity:0;background:conic-gradient(from var(--beam-angle), transparent 0%, transparent 64%, rgba(var(--fx-beam-c1),.15) 66.5%, rgba(var(--fx-beam-c1),.35) 68%, rgba(var(--fx-beam-c1),.5) 69%, rgba(var(--fx-beam-c2),.65) 70%, rgba(var(--fx-beam-c2),.65) 70.5%, rgba(var(--fx-beam-c2),.45) 71.5%, rgba(var(--fx-beam-c1),.25) 73%, rgba(var(--fx-beam-c1),.1) 75%, transparent 77%, transparent 100%), radial-gradient(ellipse 70px 40px at 33% -7.4%, rgb(var(--fx-beam-c1)), transparent), radial-gradient(ellipse 60px 35px at 12% -5%, rgb(var(--fx-beam-c1)), transparent), radial-gradient(ellipse 40px 70px at 2.1% 68.3%, rgb(var(--fx-beam-c2)), transparent), radial-gradient(ellipse 20px 35px at 2.1% 68.3%, rgb(var(--fx-beam-c2)), transparent), radial-gradient(ellipse 180px 32px at 74.4% 100%, rgb(var(--fx-beam-c1)), transparent), radial-gradient(ellipse 85px 26px at 55% 100%, rgb(var(--fx-beam-c2)), transparent), radial-gradient(ellipse 74px 32px at 93.9% 0%, rgb(var(--fx-beam-c1)), transparent), radial-gradient(ellipse 26px 42px at 100% 27.1%, rgb(var(--fx-beam-c1)), transparent), radial-gradient(ellipse 52px 48px at 100% 27.1%, rgb(var(--fx-beam-c2)), transparent);-webkit-mask:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);-webkit-mask:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);mask:conic-gradient(from var(--beam-angle), transparent 0%, transparent 48%, #ffffff1a 54%, #ffffff59 62%, white 68%, white 72%, #ffffff59 78%, #ffffff1a 84%, transparent 95%, transparent 100%), linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);-webkit-mask-composite:source-in, xor;filter:blur(4px)brightness(1.2)saturate(1.1);padding:1px;transition:opacity .5s;animation:3s linear infinite beam-spin,12s ease-in-out infinite beam-hue-shift-bloom;position:absolute;inset:0;-webkit-mask-composite:source-in,xor;mask-composite:intersect,exclude}.dark .vp-doc div[class*=language-]:not(.vp-code-group div[class*=language-]):hover:before,.dark .vp-doc .vp-code-group:hover:before,.dark .VPDocFooter .pager-link:hover:before{opacity:.7}.dark .vp-doc div[class*=language-]:not(.vp-code-group div[class*=language-]):hover:after,.dark .vp-doc .vp-code-group:hover:after,.dark .VPDocFooter .pager-link:hover:after{opacity:.6}.dark .VPHomeFeatures .VPFeature{border-radius:12px;position:relative;overflow:hidden}.dark .VPHomeFeatures .VPFeature:before{content:"";background:radial-gradient(var(--color), transparent, transparent);left:var(--x);top:var(--y);opacity:0;width:700px;height:700px;transition:opacity 1s;display:block;position:absolute;transform:translate(-50%,-50%)}.dark .VPHomeFeatures .VPFeature:hover:before{opacity:1;transition:opacity .3s}.dark .VPHomeFeatures .VPFeature:after{content:"";z-index:0;background-color:#222c;border-radius:10px;display:block;position:absolute;inset:2px}.dark .VPHomeFeatures .VPFeature>.box{z-index:1;position:relative}html.fx-smooth-scroll{scroll-behavior:smooth}html.fx-smooth-scroll .VPDocAsideOutline .outline-marker{transition:top .35s cubic-bezier(.22,1,.36,1),opacity .35s}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}.dark::view-transition-new(root){z-index:1}::view-transition-new(root){z-index:9999}.dark::view-transition-old(root){z-index:9999}.VPNavBarTitle{overflow:hidden}.VPNavBarTitle .title{min-width:0}.VPNavBarTitle .title span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.VPNavBarTitle .title img{flex-shrink:0}.vp-doc div[class*=language-]{position:relative;overflow:hidden}.vp-doc div[class*=language-]>pre.shiki{max-height:calc(var(--vp-code-line-height,2.2em) * var(--fx-code-fold-lines,10) + 18px);overflow:hidden}.vp-doc div[class*=language-]>.line-numbers-wrapper{max-height:calc(var(--vp-code-line-height,2.2em) * var(--fx-code-fold-lines,10));overflow:hidden}.fx-code-fold-enabled .vp-doc .fx-code-no-fold>pre.shiki,.fx-code-fold-enabled .vp-doc .fx-code-no-fold>.line-numbers-wrapper,.fx-code-fold-enabled .vp-doc .fx-code-foldable:not(.fx-code-folded)>pre.shiki,.fx-code-fold-enabled .vp-doc .fx-code-foldable:not(.fx-code-folded)>.line-numbers-wrapper{max-height:none;overflow:visible}.fx-code-fold-overlay{pointer-events:none;z-index:3;justify-content:center;align-items:center;font-size:13px;font-weight:500;transition:-webkit-backdrop-filter .3s,backdrop-filter .3s,height .3s;display:flex;position:absolute;bottom:0;left:0;right:0}.fx-code-fold-label{color:var(--vp-c-text-1);pointer-events:auto;cursor:pointer;align-items:center;gap:4px;display:inline-flex}.fx-code-fold-label svg{fill:currentColor;flex-shrink:0}.fx-code-fold-overlay:hover .fx-code-fold-label{color:var(--vp-c-brand-1)}.fx-code-folded>.fx-code-fold-overlay{-webkit-backdrop-filter:blur(8px);background:linear-gradient(to bottom, transparent, var(--vp-c-bg-soft));align-items:flex-end;height:80px;padding-bottom:10px}.fx-code-fold-overlay.fx-code-fold-expanded{height:auto;padding:8px 0}.fx-code-foldable:not(.fx-code-folded){padding-bottom:36px}@property --fx-demo-beam{syntax:"<angle>";inherits:false;initial-value:0deg}.fx-demo-preview{border:1px solid var(--vp-c-divider);background:var(--vp-c-bg);border-radius:10px;margin:18px 0;transition:box-shadow .4s;position:relative;overflow:hidden}.dark .fx-demo-preview{border:2px solid #0000}.dark .fx-demo-preview:before{content:"";z-index:0;opacity:0;background:conic-gradient(from var(--fx-demo-beam,0deg), transparent 0%, transparent 46%, rgba(var(--fx-beam-c1), .5) 52%, rgba(var(--fx-beam-c2), .4) 58%, transparent 64%, transparent 100%);border-radius:12px;transition:opacity .4s;animation:4s linear infinite fx-demo-beam-spin;position:absolute;inset:-2px}.dark .fx-demo-preview:hover:before{opacity:.7}.dark .fx-demo-preview>*{z-index:1;position:relative}@keyframes fx-demo-beam-spin{to{--fx-demo-beam:360deg}}.fx-demo-preview__runner{background:radial-gradient(ellipse 80% 60% at 50% 0%, rgba(var(--fx-beam-c1), .05), transparent 70%), var(--vp-c-bg);justify-content:center;align-items:center;min-height:100px;padding:28px;display:flex}.dark .fx-demo-preview__runner{background:radial-gradient(ellipse 80% 60% at 50% 0%, rgba(var(--fx-beam-c1), .1), transparent 70%), var(--vp-c-bg)}.fx-demo-preview__loading{color:var(--vp-c-text-3);font-size:13px}.fx-preview-group{border-top:1px solid var(--vp-c-divider);background:var(--vp-c-bg-soft)}.fx-preview-group__toolbar{z-index:1;border-bottom:1px solid var(--vp-c-divider);background:rgba(var(--vp-c-bg-soft-rgb,248, 248, 248), .85);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);justify-content:space-between;align-items:center;gap:8px;padding:0 8px 0 4px;display:flex;position:sticky;top:0}.dark .fx-preview-group__toolbar{background:#222226d9}.fx-preview-group__tabs{scrollbar-width:none;display:flex;overflow-x:auto}.fx-preview-group__tabs::-webkit-scrollbar{display:none}.fx-preview-group__tab{color:var(--vp-c-text-2);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex-shrink:0;padding:10px 16px;font-size:13px;font-weight:500;transition:color .25s,border-color .25s}.fx-preview-group__tab:hover{color:var(--vp-c-text-1)}.fx-preview-group__tab.is-active{color:rgb(var(--fx-beam-c1));border-bottom-color:rgb(var(--fx-beam-c1))}.fx-preview-group__toggle{width:30px;height:30px;color:var(--vp-c-text-2);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:color .2s,background-color .2s;display:inline-flex}.fx-preview-group__toggle:hover{color:rgb(var(--fx-beam-c1));background:rgba(var(--fx-beam-c1), .08)}.fx-preview-group__toggle svg{transition:transform .25s}.fx-preview-group__toggle.is-expanded svg{transform:rotate(180deg)}.fx-preview-group__panel div[class*=language-]{border:none!important;border-radius:0!important;margin:0!important}:root{--el-color-white:#fff;--el-color-black:#000;--el-color-primary-rgb:64, 158, 255;--el-color-success-rgb:103, 194, 58;--el-color-warning-rgb:230, 162, 60;--el-color-danger-rgb:245, 108, 108;--el-color-error-rgb:245, 108, 108;--el-color-info-rgb:144, 147, 153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645, .045, .355, 1);--el-transition-function-fast-bezier:cubic-bezier(.23, 1, .32, 1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier), opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#fff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#fff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#fff;--el-box-shadow:0px 12px 32px 4px #0000000a, 0px 8px 20px #00000014;--el-box-shadow-light:0px 0px 12px #0000001f;--el-box-shadow-lighter:0px 0px 6px #0000001f;--el-box-shadow-dark:0px 16px 48px 16px #00000014, 0px 12px 32px #0000001f, 0px 8px 16px -8px #00000029;--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:#000c;--el-overlay-color-light:#000000b3;--el-overlay-color-lighter:#00000080;--el-mask-color:#ffffffe6;--el-mask-color-extra-light:#ffffff4d;--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:top;transform:scaleY(1)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:bottom;transform:scaleY(1)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:0 0;transform:scale(1)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out, var(--el-transition-duration) padding-top ease-in-out, var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-leave-active,.el-collapse-transition-enter-active{transition:var(--el-transition-duration) max-height ease-in-out, var(--el-transition-duration) padding-top ease-in-out, var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out, var(--el-transition-duration) padding-left ease-in-out, var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55, 0, .1, 1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.el-icon{--color:inherit;fill:currentColor;width:1em;height:1em;color:var(--color);line-height:1em;font-size:inherit;justify-content:center;align-items:center;display:inline-flex;position:relative}.el-icon.is-loading{animation:2s linear infinite rotating}.el-icon svg{width:1em;height:1em}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);--el-popper-bg-color-light:var(--el-bg-color-overlay);--el-popper-bg-color-dark:var(--el-text-color-primary);border-radius:var(--el-popper-border-radius);z-index:2000;overflow-wrap:break-word;word-break:normal;visibility:visible;min-width:10px;padding:5px 11px;font-size:12px;line-height:20px;position:absolute}.el-popper.is-dark{--el-fill-color-blank:var(--el-popper-bg-color-dark);color:var(--el-bg-color);background:var(--el-popper-bg-color-dark);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{border:1px solid var(--el-text-color-primary);background:var(--el-popper-bg-color-dark);right:0}.el-popper.is-light{--el-fill-color-blank:var(--el-popper-bg-color-light);background:var(--el-popper-bg-color-light);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{border:1px solid var(--el-border-color-light);background:var(--el-popper-bg-color-light);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{z-index:-1;width:10px;height:10px;position:absolute}.el-popper__arrow:before{z-index:-1;content:" ";background:var(--el-text-color-primary);box-sizing:border-box;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-top-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-right-color:#0000!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-top-color:#0000!important;border-right-color:#0000!important}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;vertical-align:bottom;width:100%;font-size:var(--el-font-size-base);display:inline-block;position:relative}.el-textarea__inner{resize:vertical;box-sizing:border-box;width:100%;line-height:1.5;font-size:inherit;color:var(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);background-image:none;border:none;padding:5px 11px;font-family:inherit;display:block;position:relative}.el-textarea__inner.is-clearable{padding:5px 26px 5px 11px}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea__clear{color:var(--el-input-icon-color);cursor:pointer;font-size:14px;position:absolute;top:15px;right:11px;transform:translateY(-50%)}.el-textarea__clear:hover{color:var(--el-input-clear-hover-color)}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);font-size:12px;line-height:14px;position:absolute;bottom:5px;right:10px}.el-textarea .el-input__count.is-outside{top:100%;right:0;bottom:unset;background:0 0;padding-top:2px;line-height:1;position:absolute}.el-textarea.is-disabled .el-textarea__inner{box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);font-size:var(--el-font-size-base);width:var(--el-input-width);line-height:var(--el-input-height);box-sizing:border-box;vertical-align:middle;display:inline-flex;position:relative}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;color:var(--el-color-info);align-items:center;font-size:12px;display:inline-flex}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;padding-left:8px;display:inline-block}.el-input .el-input__count.is-outside{height:unset;padding-top:2px;position:absolute;top:100%;right:0}.el-input .el-input__count.is-outside .el-input__count-inner{background:0 0;padding-left:0;line-height:1}.el-input__wrapper{background-color:var(--el-input-bg-color,var(--el-fill-color-blank));border-radius:var(--el-input-border-radius,var(--el-border-radius-base));cursor:text;transition:var(--el-transition-box-shadow);box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;background-image:none;flex-grow:1;justify-content:center;align-items:center;padding:1px 11px;display:inline-flex;transform:translate(0)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height,32px) - 2px)}.el-input__inner{-webkit-appearance:none;width:100%;color:var(--el-input-text-color,var(--el-text-color-regular));font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);box-sizing:border-box;background:0 0;border:none;outline:none;flex-grow:1;padding:0}.el-input__inner:focus{outline:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__prefix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__suffix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{height:inherit;line-height:inherit;transition:all var(--el-transition-duration);justify-content:center;align-items:center;margin-left:8px;display:flex}.el-input .el-input__clear{transition:color var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);cursor:not-allowed;box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-disabled .el-input__prefix-inner,.el-input.is-disabled .el-input__suffix-inner{pointer-events:none}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height,40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height,24px) - 2px)}.el-input-group{align-items:stretch;width:100%;display:inline-flex}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);border-radius:var(--el-input-border-radius);white-space:nowrap;justify-content:center;align-items:center;min-height:100%;padding:0 20px;display:inline-flex;position:relative}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-select,.el-input-group__append .el-button,.el-input-group__prepend .el-select,.el-input-group__prepend .el-button{flex:1;margin:0 -20px;display:inline-block}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{color:inherit;background-color:#0000;border-color:#0000}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{box-shadow:1px 0 0 0 var(--el-input-border-color) inset, 0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset;border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{box-shadow:0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset, -1px 0 0 0 var(--el-input-border-color) inset;border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend>.el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{box-shadow:1px 0 0 0 var(--el-input-border-color) inset, 0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append>.el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{box-shadow:0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset, -1px 0 0 0 var(--el-input-border-color) inset;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-hidden{display:none!important}.el-input-number{vertical-align:middle;width:150px;line-height:30px;display:inline-flex;position:relative}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;text-align:center;line-height:1}.el-input-number .el-input__inner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__increase,.el-input-number__decrease{z-index:1;background:var(--el-fill-color-light);width:32px;height:auto;color:var(--el-text-color-regular);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;top:1px;bottom:1px}.el-input-number__increase:hover,.el-input-number__decrease:hover{color:var(--el-color-primary)}.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__increase.is-disabled,.el-input-number__decrease.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;border-left:var(--el-border);right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__increase,.el-input-number.is-disabled .el-input-number__decrease{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__increase:hover,.el-input-number.is-disabled .el-input-number__decrease:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{width:180px;line-height:38px}.el-input-number--large .el-input-number__increase,.el-input-number--large .el-input-number__decrease{width:40px;font-size:14px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{width:120px;line-height:22px}.el-input-number--small .el-input-number__increase,.el-input-number--small .el-input-number__decrease{width:24px;font-size:12px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__increase [class*=el-icon],.el-input-number--small .el-input-number__decrease [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__increase,.el-input-number.is-controls-right .el-input-number__decrease{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon],.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 var(--el-border-radius-base) 0 0;border-bottom:var(--el-border);bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-right:none;border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;top:auto;left:auto;right:1px}.el-input-number.is-controls-right[class*=large] [class*=increase],.el-input-number.is-controls-right[class*=large] [class*=decrease]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=increase],.el-input-number.is-controls-right[class*=small] [class*=decrease]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;width:100%;height:32px;display:flex}.el-slider__runway{height:var(--el-slider-height);background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;position:relative}.el-slider__runway.show-input{width:auto;margin-right:30px}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper:hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button:hover,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button.dragging{cursor:not-allowed;transform:scale(1)}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{height:var(--el-slider-height);background-color:var(--el-slider-main-bg-color);border-top-left-radius:var(--el-slider-border-radius);border-bottom-left-radius:var(--el-slider-border-radius);position:absolute}.el-slider__button-wrapper{height:var(--el-slider-button-wrapper-size);width:var(--el-slider-button-wrapper-size);z-index:1;top:var(--el-slider-button-wrapper-offset);text-align:center;-webkit-user-select:none;user-select:none;background-color:#0000;outline:none;line-height:normal;position:absolute;transform:translate(-50%)}.el-slider__button-wrapper:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-slider__button-wrapper:hover,.el-slider__button-wrapper.hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:var(--el-slider-button-size);height:var(--el-slider-button-size);vertical-align:middle;border:solid 2px var(--el-slider-main-bg-color);background-color:var(--el-color-white);box-sizing:border-box;transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;border-radius:50%;display:inline-block}.el-slider__button:hover,.el-slider__button.hover,.el-slider__button.dragging{transform:scale(1.2)}.el-slider__button:hover,.el-slider__button.hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:var(--el-slider-height);width:var(--el-slider-height);border-radius:var(--el-border-radius-circle);background-color:var(--el-slider-stop-bg-color);position:absolute;transform:translate(-50%)}.el-slider__marks{width:18px;height:100%;top:0;left:12px}.el-slider__marks-text{color:var(--el-color-info);white-space:pre;margin-top:15px;font-size:14px;position:absolute;transform:translate(-50%)}.el-slider.is-vertical{flex:0;width:auto;height:100%;display:inline-flex;position:relative}.el-slider.is-vertical .el-slider__runway{width:var(--el-slider-height);height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:var(--el-slider-height);border-radius:0 0 3px 3px;height:auto}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:var(--el-slider-button-wrapper-offset);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.fx-music-ball{--fx-music-accent-start:rgb(var(--fx-beam-c1));--fx-music-accent-end:rgb(var(--fx-beam-c2));--fx-music-bg:#ffffff73;--fx-music-bg-blur:12px;--fx-music-border:#ffffff4d;--fx-music-shadow:0 4px 16px #0000001a;--fx-music-text:#000000a6;--fx-music-text-muted:#0006;--fx-music-slider-track:#00000014;--fx-music-slider-thumb:rgb(var(--fx-beam-c2));--music-list-sep-color:#0000000f;--music-list-bgcolor:#ffffff80;--music-list-bdcolor:#ffffff4d}.dark .fx-music-ball{--fx-music-bg:#1e1e328c;--fx-music-bg-blur:16px;--fx-music-border:#ffffff14;--fx-music-shadow:0 4px 20px #0000004d, 0 0 12px rgba(var(--fx-beam-c1), .15);--fx-music-text:#ffffffb3;--fx-music-text-muted:#fff6;--fx-music-slider-track:#ffffff1a;--music-list-sep-color:#ffffff0d;--music-list-bgcolor:#1e1e3299;--music-list-bdcolor:#ffffff0f}.fx-music-ball{background:var(--fx-music-bg);-webkit-backdrop-filter:blur(var(--fx-music-bg-blur));border:1px solid var(--fx-music-border);box-shadow:var(--fx-music-shadow);cursor:pointer;z-index:99;box-sizing:border-box;border-radius:28px;justify-content:space-between;align-items:center;width:50px;height:50px;padding:0 20px 0 5px;transition:width .35s cubic-bezier(.22,1,.36,1);display:flex;position:fixed;bottom:15px;left:15px;overflow:hidden}.fx-music-ball.active{overflow:inherit}.fx-music-ball:hover{width:330px;transition:width .4s cubic-bezier(.34,1.56,.64,1) .5s}.fx-music-ball .fx-progress-ring{cursor:pointer;position:absolute;top:-1px;left:-1px;transform:rotate(-90deg)}.fx-music-ball .fx-progress-track{stroke:var(--fx-music-slider-track)}.fx-music-ball .fx-progress-bar{stroke:url(#fx-progress-gradient);transition:stroke-dasharray .1s}.fx-music-ball .fx-orbit-ring{border:1.5px solid #0000;border-top-color:rgba(var(--fx-beam-c1), .4);border-right-color:rgba(var(--fx-beam-c2), .2);pointer-events:none;border-radius:50%;animation:3s linear infinite orbit-spin;position:absolute;inset:-4px}.dark .fx-music-ball .fx-orbit-ring{border-top-color:rgba(var(--fx-beam-c1), .6);border-right-color:rgba(var(--fx-beam-c2), .3);filter:drop-shadow(0 0 4px rgba(var(--fx-beam-c1), .3))}@keyframes orbit-spin{to{transform:rotate(360deg)}}.fx-music-ball .fx-music-ball__inner{justify-content:space-between;align-items:center;width:330px;display:flex}.fx-music-ball .fx-play-pause span,.fx-music-ball .fx-music-list-button span,.fx-music-ball .fx-icon-volume{justify-content:center;align-items:center;display:flex}.fx-music-ball .fx-play-pause span svg,.fx-music-ball .fx-music-list-button span svg,.fx-music-ball .fx-icon-volume svg{fill:var(--fx-music-text)}.fx-music-ball .fx-play-pause{border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:background-color .3s;display:flex}.fx-music-ball .fx-play-pause:hover{background-color:rgba(var(--fx-beam-c1), .1)}.dark .fx-music-ball .fx-play-pause:hover{background-color:rgba(var(--fx-beam-c1), .15)}.fx-music-ball .fx-time{color:var(--fx-music-text-muted);white-space:nowrap;width:78px;padding:0 10px;font-size:12px}.fx-music-ball .fx-duration{flex:1;padding:0 10px 0 3px}.fx-music-ball .fx-music-list-button{justify-content:center;align-items:center;width:30px;margin-left:8px;display:flex}.fx-music-ball .el-slider{--el-slider-height:4px;--el-slider-main-bg-color:var(--fx-music-accent-end);--el-color-white:var(--fx-music-slider-thumb)}.fx-music-ball .el-slider .el-slider__runway{background-color:var(--fx-music-slider-track)}.fx-music-ball .el-slider .el-slider__bar{background:linear-gradient(90deg, var(--fx-music-accent-start), var(--fx-music-accent-end))}.fx-music-ball .el-slider .el-slider__button{--el-slider-button-size:12px;border-color:var(--fx-music-slider-thumb);box-shadow:0 0 6px rgba(var(--fx-beam-c2), .3);position:relative;top:-1px}.fx-music-ball .fx-volume{align-items:center;width:30px;transition:width .3s .3s;display:flex}.fx-music-ball .fx-volume .el-slider{opacity:0;transition:opacity .3s .3s}.fx-music-ball .fx-volume:hover{width:120px;transition:width .3s .3s}.fx-music-ball .fx-volume:hover .el-slider{opacity:1;transition:opacity .3s}.fx-music-ball .fx-icon-volume{cursor:pointer;margin-left:5px}.fx-music-ball.is-playing .fx-progress-bar{animation:2s ease-in-out infinite progress-pulse}@keyframes progress-pulse{0%,to{filter:drop-shadow(0 0 2px rgba(var(--fx-beam-c1), .3))}50%{filter:drop-shadow(0 0 6px rgba(var(--fx-beam-c2), .6))}}.fx-music-ball.is-playing:before{content:"";border-radius:inherit;background:linear-gradient(135deg, rgba(var(--fx-beam-c1), .08) 0%, transparent 40%, rgba(var(--fx-beam-c2), .08) 60%, transparent 100%);pointer-events:none;background-size:200% 200%;animation:4s ease-in-out infinite shimmer;position:absolute;inset:0}@keyframes shimmer{0%{background-position:200% 0}50%{background-position:0 200%}to{background-position:200% 0}}.dark .fx-music-ball.is-playing{box-shadow:0 4px 20px #0000004d, 0 0 12px rgba(var(--fx-beam-c1), .15), 0 0 24px rgba(var(--fx-beam-c2), .08)}.fx-music-ball .fx-music-list{box-sizing:border-box;z-index:-9;background:var(--music-list-bgcolor);-webkit-backdrop-filter:blur(20px);border:1px solid var(--music-list-bdcolor);width:100%;box-shadow:var(--fx-music-shadow);opacity:0;pointer-events:none;border-radius:24px;padding:15px 5px 50px;transition:opacity .3s,transform .3s;position:absolute;bottom:0;left:0;transform:translateY(10px)}.fx-music-ball.active .fx-music-list{opacity:1;pointer-events:auto;transform:translateY(0)}.fx-music-ball .fx-music-list .fx-music-list-sep{border-bottom:1px solid var(--music-list-sep-color);margin:5px 0}.fx-music-ball .fx-music-list .fx-music-list-item{text-wrap:nowrap;text-overflow:ellipsis;color:var(--fx-music-text-muted);padding-left:20px;padding-right:20px;font-size:12px;line-height:24px;transition:color .2s;position:relative;overflow:hidden}.fx-music-ball .fx-music-list .fx-music-list-item:hover{color:var(--fx-music-accent-end)}.fx-music-ball .fx-music-list .fx-music-list-item .image-live{width:12px;height:12px;position:absolute;bottom:6px;left:3px}.fx-music-ball .fx-music-list .fx-music-list-item .image-live svg{width:100%;height:100%}.fx-music-ball .fx-music-list .fx-music-list-item .image-live .bar{fill:currentColor;transform-box:fill-box;transform-origin:bottom}.fx-music-ball .fx-music-list .fx-music-list-item .image-live.playing .bar-1{animation:.8s ease-in-out infinite fx-eq-bar}.fx-music-ball .fx-music-list .fx-music-list-item .image-live.playing .bar-2{animation:.8s ease-in-out .2s infinite fx-eq-bar}.fx-music-ball .fx-music-list .fx-music-list-item .image-live.playing .bar-3{animation:.8s ease-in-out .4s infinite fx-eq-bar}.fx-music-ball .fx-music-list .fx-music-list-item .image-live.playing .bar-4{animation:.8s ease-in-out .1s infinite fx-eq-bar}@keyframes fx-eq-bar{0%,to{transform:scaleY(1)}50%{transform:scaleY(.3)}}.fx-music-ball .fx-music-list .fx-music-list-item.active{color:var(--fx-music-accent-start)}.fx-music-ball .fx-music-list .fx-music-list-item.active:hover{color:var(--fx-music-accent-end)}@media (prefers-reduced-motion:reduce){.fx-music-ball *,.fx-music-ball :before,.fx-music-ball :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
2
2
  /*$vite$:1*/
package/package.json CHANGED
@@ -2,40 +2,41 @@
2
2
  "name": "@fuxishi/vitepress-theme",
3
3
  "displayName": "@fuxishi/vitepress-theme",
4
4
  "private": false,
5
- "version": "1.0.14",
5
+ "version": "2.0.0-alpha.10",
6
6
  "license": "MIT",
7
7
  "description": "一款精美的 VitePress 主题",
8
8
  "keywords": [
9
9
  "vitepress",
10
- "theme",
11
10
  "vitepress-theme",
12
11
  "@fuxishi/vitepress-theme",
13
12
  "fuxishi"
14
13
  ],
15
14
  "type": "module",
16
15
  "files": [
17
- "dist"
16
+ "dist",
17
+ "LICENSE",
18
+ "README.md",
19
+ "README_EN.md",
20
+ "package.json"
18
21
  ],
19
22
  "main": "./dist/index.js",
20
23
  "module": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
21
25
  "exports": {
22
26
  ".": {
23
- "import": {
24
- "types": "./dist/index.d.ts",
25
- "default": "./dist/index.js"
26
- }
27
+ "types": "./dist/index.d.ts",
28
+ "import": "./dist/index.js",
29
+ "default": "./dist/index.js"
27
30
  },
28
31
  "./config": {
29
- "import": {
30
- "types": "./dist/config.d.ts",
31
- "default": "./dist/config.js"
32
- }
32
+ "types": "./dist/config.d.ts",
33
+ "import": "./dist/config.js",
34
+ "default": "./dist/config.js"
33
35
  },
34
36
  "./style.css": {
35
- "import": {
36
- "types": "./dist/style.css.d.ts",
37
- "default": "./dist/style.css"
38
- }
37
+ "types": "./dist/style.css.d.ts",
38
+ "import": "./dist/style.css",
39
+ "default": "./dist/style.css"
39
40
  }
40
41
  },
41
42
  "scripts": {
@@ -44,23 +45,24 @@
44
45
  "ncu": "ncu -u && npm install",
45
46
  "login": "npm login --registry=https://registry.npmjs.org/",
46
47
  "pub": "npm publish --access public --registry=https://registry.npmjs.org/",
48
+ "pub-tag": "npm publish --access public --tag alpha --registry=https://registry.npmjs.org/",
47
49
  "deprecate": "node -e \"const v=process.argv[1],m=process.argv[2]||'';require('child_process').execSync('npm deprecate @fuxishi/vitepress-theme@'+v+' \\\"'+m+'\\\" --registry=https://registry.npmjs.org/',{stdio:'inherit'})\""
48
50
  },
49
51
  "dependencies": {
50
52
  "canvas-confetti": "^1.9.4",
51
- "element-plus": "^2.13.7",
53
+ "element-plus": "^2.14.2",
52
54
  "node-vibrant": "^4.0.4"
53
55
  },
54
56
  "devDependencies": {
55
57
  "@types/canvas-confetti": "^1.9.0",
56
- "@types/node": "^25.6.0",
57
- "@vitejs/plugin-vue": "^6.0.6",
58
+ "@types/node": "^25.9.3",
59
+ "@vitejs/plugin-vue": "^6.0.7",
58
60
  "typescript": "^6.0.3",
59
- "vite": "^8.0.10",
60
- "vitepress": "^1.6.4",
61
- "vue": "^3.5.33"
61
+ "vite": "^8.0.16",
62
+ "vitepress": "^2.0.0-alpha.17",
63
+ "vue": "^3.5.38"
62
64
  },
63
65
  "peerDependencies": {
64
- "vitepress": "^1.6.4"
66
+ "vitepress": ">=2.0.0-alpha.17"
65
67
  }
66
68
  }