nfx-ui 0.6.2 → 0.6.3
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/dist/animations.cjs +2 -2
- package/dist/animations.d.ts +0 -29
- package/dist/animations.mjs +9 -11
- package/dist/apis.cjs +2 -2
- package/dist/apis.cjs.map +1 -1
- package/dist/apis.mjs +8 -9
- package/dist/apis.mjs.map +1 -1
- package/dist/{chunk-BounceLoading-B54QEw0n.mjs → chunk-BounceLoading-C5XE8DKc.mjs} +62 -65
- package/dist/{chunk-BounceLoading-B54QEw0n.mjs.map → chunk-BounceLoading-C5XE8DKc.mjs.map} +1 -1
- package/dist/chunk-BounceLoading-CwvDT5HF.cjs +11 -0
- package/dist/{chunk-BounceLoading-C6n4BZVJ.cjs.map → chunk-BounceLoading-CwvDT5HF.cjs.map} +1 -1
- package/dist/chunk-animations-CEZ01ALd.mjs +740 -0
- package/dist/chunk-animations-CEZ01ALd.mjs.map +1 -0
- package/dist/chunk-animations-CO7zKbti.cjs +3 -0
- package/dist/chunk-animations-CO7zKbti.cjs.map +1 -0
- package/dist/chunk-i18n-BCDF-skF.cjs +3 -0
- package/dist/{chunk-i18n-daHSL0Nm.cjs.map → chunk-i18n-BCDF-skF.cjs.map} +1 -1
- package/dist/{chunk-i18n-BBPhh6MT.mjs → chunk-i18n-BsyWvA9c.mjs} +44 -69
- package/dist/{chunk-i18n-BBPhh6MT.mjs.map → chunk-i18n-BsyWvA9c.mjs.map} +1 -1
- package/dist/{chunk-types-SD4MzUGp.mjs → chunk-language-B8sfGadQ.mjs} +2 -2
- package/dist/chunk-language-B8sfGadQ.mjs.map +1 -0
- package/dist/{chunk-types-BE3JCLff.cjs → chunk-language-Bqmpuf2W.cjs} +1 -1
- package/dist/chunk-language-Bqmpuf2W.cjs.map +1 -0
- package/dist/{chunk-types-DNPBKfmx.mjs → chunk-layout-C2uqDEMJ.mjs} +2 -2
- package/dist/chunk-layout-C2uqDEMJ.mjs.map +1 -0
- package/dist/{chunk-types-C_opkZGr.cjs → chunk-layout-D728gccQ.cjs} +1 -1
- package/dist/chunk-layout-D728gccQ.cjs.map +1 -0
- package/dist/{chunk-lucide-BhgnmTNo.mjs → chunk-lucide-C54WenI6.mjs} +2 -2
- package/dist/{chunk-lucide-BhgnmTNo.mjs.map → chunk-lucide-C54WenI6.mjs.map} +1 -1
- package/dist/chunk-preference-BWEpbZgC.mjs +50 -0
- package/dist/{chunk-preference-By58ZcJ_.mjs.map → chunk-preference-BWEpbZgC.mjs.map} +1 -1
- package/dist/chunk-preference-Dbugm0iQ.cjs +3 -0
- package/dist/{chunk-preference-C144GkCD.cjs.map → chunk-preference-Dbugm0iQ.cjs.map} +1 -1
- package/dist/chunk-theme-9dcwRKw8.mjs +17 -0
- package/dist/{chunk-types-BudGuDCK.mjs.map → chunk-theme-9dcwRKw8.mjs.map} +1 -1
- package/dist/chunk-theme-BFvDRCYS.cjs +3 -0
- package/dist/{chunk-types-BNUlgEkq.cjs.map → chunk-theme-BFvDRCYS.cjs.map} +1 -1
- package/dist/components.cjs +3 -3
- package/dist/components.cjs.map +1 -1
- package/dist/components.mjs +628 -642
- package/dist/components.mjs.map +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.mjs +1 -1
- package/dist/events.cjs +1 -1
- package/dist/events.mjs +1 -1
- package/dist/hooks.cjs +1 -1
- package/dist/hooks.mjs +1 -1
- package/dist/icons.cjs +2 -2
- package/dist/icons.mjs +2 -2
- package/dist/languages.cjs +2 -2
- package/dist/languages.cjs.map +1 -1
- package/dist/languages.mjs +4 -4
- package/dist/languages.mjs.map +1 -1
- package/dist/layouts.cjs +2 -2
- package/dist/layouts.cjs.map +1 -1
- package/dist/layouts.mjs +201 -210
- package/dist/layouts.mjs.map +1 -1
- package/dist/navigations.cjs +1 -1
- package/dist/navigations.mjs +1 -1
- package/dist/pixel-blast.cjs +192 -0
- package/dist/pixel-blast.cjs.map +1 -0
- package/dist/pixel-blast.d.ts +33 -0
- package/dist/pixel-blast.mjs +506 -0
- package/dist/pixel-blast.mjs.map +1 -0
- package/dist/preference.cjs +2 -2
- package/dist/preference.mjs +8 -11
- package/dist/services.cjs +2 -2
- package/dist/services.cjs.map +1 -1
- package/dist/services.mjs +9 -10
- package/dist/services.mjs.map +1 -1
- package/dist/stores.cjs +1 -1
- package/dist/stores.mjs +1 -1
- package/dist/themes.cjs +2 -2
- package/dist/themes.cjs.map +1 -1
- package/dist/themes.mjs +13 -17
- package/dist/themes.mjs.map +1 -1
- package/dist/types.cjs +1 -1
- package/dist/types.mjs +1 -1
- package/dist/utils.cjs +2 -2
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +0 -16
- package/dist/utils.mjs +143 -156
- package/dist/utils.mjs.map +1 -1
- package/package.json +20 -8
- package/dist/chunk-BounceLoading-C6n4BZVJ.cjs +0 -11
- package/dist/chunk-animations-Brp-bsaE.mjs +0 -1243
- package/dist/chunk-animations-Brp-bsaE.mjs.map +0 -1
- package/dist/chunk-animations-e2F3zuP9.cjs +0 -190
- package/dist/chunk-animations-e2F3zuP9.cjs.map +0 -1
- package/dist/chunk-i18n-daHSL0Nm.cjs +0 -3
- package/dist/chunk-preference-By58ZcJ_.mjs +0 -51
- package/dist/chunk-preference-C144GkCD.cjs +0 -3
- package/dist/chunk-types-BE3JCLff.cjs.map +0 -1
- package/dist/chunk-types-BNUlgEkq.cjs +0 -3
- package/dist/chunk-types-BudGuDCK.mjs +0 -20
- package/dist/chunk-types-C_opkZGr.cjs.map +0 -1
- package/dist/chunk-types-DNPBKfmx.mjs.map +0 -1
- package/dist/chunk-types-SD4MzUGp.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-animations-e2F3zuP9.cjs","names":[],"sources":["../src/designs/animations/Waves/style.module.css","../src/designs/animations/Waves/index.tsx","../src/designs/animations/Squares/style.module.css","../src/designs/animations/Squares/index.tsx","../src/designs/animations/LetterGlitch/style.module.css","../src/designs/animations/LetterGlitch/index.tsx","../src/designs/animations/PixelBlast/style.module.css","../src/designs/animations/PixelBlast/index.tsx"],"sourcesContent":[".waves {\n position: absolute;\n top: 0;\n left: 0;\n margin: 0;\n padding: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n.waves::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 0.5rem;\n height: 0.5rem;\n background: #160000;\n border-radius: 50%;\n transform: translate3d(calc(var(--x) - 50%), calc(var(--y) - 50%), 0);\n will-change: transform;\n}\n\n.wavesCanvas {\n display: block;\n width: 100%;\n height: 100%;\n}\n","import React, { useEffect, useMemo, useRef } from \"react\";\nimport type { CSSProperties } from \"react\";\n\nimport { useTheme } from \"@/themes/hooks/useTheme\";\n\nimport styles from \"./style.module.css\";\n\nclass Grad {\n x: number;\n y: number;\n z: number;\n constructor(x: number, y: number, z: number) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n dot2(x: number, y: number): number {\n return this.x * x + this.y * y;\n }\n}\n\nclass Noise {\n grad3: Grad[];\n p: number[];\n perm: number[];\n gradP: Grad[];\n\n constructor(seed = 0) {\n this.grad3 = [\n new Grad(1, 1, 0),\n new Grad(-1, 1, 0),\n new Grad(1, -1, 0),\n new Grad(-1, -1, 0),\n new Grad(1, 0, 1),\n new Grad(-1, 0, 1),\n new Grad(1, 0, -1),\n new Grad(-1, 0, -1),\n new Grad(0, 1, 1),\n new Grad(0, -1, 1),\n new Grad(0, 1, -1),\n new Grad(0, -1, -1),\n ];\n this.p = [\n 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234,\n 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139,\n 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80,\n 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202,\n 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221,\n 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210,\n 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150,\n 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,\n ];\n this.perm = new Array(512);\n this.gradP = new Array(512);\n this.seed(seed);\n }\n seed(seed: number) {\n if (seed > 0 && seed < 1) seed *= 65536;\n seed = Math.floor(seed);\n if (seed < 256) seed |= seed << 8;\n for (let i = 0; i < 256; i++) {\n let v = i & 1 ? this.p[i] ^ (seed & 255) : this.p[i] ^ ((seed >> 8) & 255);\n this.perm[i] = this.perm[i + 256] = v;\n this.gradP[i] = this.gradP[i + 256] = this.grad3[v % 12];\n }\n }\n fade(t: number): number {\n return t * t * t * (t * (t * 6 - 15) + 10);\n }\n lerp(a: number, b: number, t: number): number {\n return (1 - t) * a + t * b;\n }\n perlin2(x: number, y: number): number {\n let X = Math.floor(x),\n Y = Math.floor(y);\n x -= X;\n y -= Y;\n X &= 255;\n Y &= 255;\n const n00 = this.gradP[X + this.perm[Y]].dot2(x, y);\n const n01 = this.gradP[X + this.perm[Y + 1]].dot2(x, y - 1);\n const n10 = this.gradP[X + 1 + this.perm[Y]].dot2(x - 1, y);\n const n11 = this.gradP[X + 1 + this.perm[Y + 1]].dot2(x - 1, y - 1);\n const u = this.fade(x);\n return this.lerp(this.lerp(n00, n10, u), this.lerp(n01, n11, u), this.fade(y));\n }\n}\n\ninterface Point {\n x: number;\n y: number;\n wave: { x: number; y: number };\n cursor: { x: number; y: number; vx: number; vy: number };\n}\n\ninterface Mouse {\n x: number;\n y: number;\n lx: number;\n ly: number;\n sx: number;\n sy: number;\n v: number;\n vs: number;\n a: number;\n set: boolean;\n}\n\ninterface Config {\n lineColor: string;\n waveSpeedX: number;\n waveSpeedY: number;\n waveAmpX: number;\n waveAmpY: number;\n friction: number;\n tension: number;\n maxCursorMove: number;\n xGap: number;\n yGap: number;\n}\n\ninterface WavesProps {\n lineColor?: string;\n backgroundColor?: string;\n waveSpeedX?: number;\n waveSpeedY?: number;\n waveAmpX?: number;\n waveAmpY?: number;\n xGap?: number;\n yGap?: number;\n friction?: number;\n tension?: number;\n maxCursorMove?: number;\n style?: CSSProperties;\n className?: string;\n}\n\nconst Waves: React.FC<WavesProps> = ({\n lineColor = \"black\",\n backgroundColor = \"transparent\",\n waveSpeedX = 0.0125,\n waveSpeedY = 0.005,\n waveAmpX = 32,\n waveAmpY = 16,\n xGap = 10,\n yGap = 32,\n friction = 0.925,\n tension = 0.005,\n maxCursorMove = 100,\n style = {},\n className = \"\",\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const ctxRef = useRef<CanvasRenderingContext2D | null>(null);\n const boundingRef = useRef<{\n width: number;\n height: number;\n left: number;\n top: number;\n }>({\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n });\n const noiseRef = useRef(new Noise(Math.random()));\n const linesRef = useRef<Point[][]>([]);\n const mouseRef = useRef<Mouse>({\n x: -10,\n y: 0,\n lx: 0,\n ly: 0,\n sx: 0,\n sy: 0,\n v: 0,\n vs: 0,\n a: 0,\n set: false,\n });\n const configRef = useRef<Config>({\n lineColor,\n waveSpeedX,\n waveSpeedY,\n waveAmpX,\n waveAmpY,\n friction,\n tension,\n maxCursorMove,\n xGap,\n yGap,\n });\n const frameIdRef = useRef<number | null>(null);\n\n useEffect(() => {\n configRef.current = {\n lineColor,\n waveSpeedX,\n waveSpeedY,\n waveAmpX,\n waveAmpY,\n friction,\n tension,\n maxCursorMove,\n xGap,\n yGap,\n };\n }, [lineColor, waveSpeedX, waveSpeedY, waveAmpX, waveAmpY, friction, tension, maxCursorMove, xGap, yGap]);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n const container = containerRef.current;\n if (!canvas || !container) return;\n ctxRef.current = canvas.getContext(\"2d\");\n\n function setSize() {\n if (!container || !canvas) return;\n const rect = container.getBoundingClientRect();\n boundingRef.current = {\n width: rect.width,\n height: rect.height,\n left: rect.left,\n top: rect.top,\n };\n canvas.width = rect.width;\n canvas.height = rect.height;\n }\n\n function setLines() {\n const { width, height } = boundingRef.current;\n linesRef.current = [];\n const oWidth = width + 200,\n oHeight = height + 30;\n const { xGap, yGap } = configRef.current;\n const totalLines = Math.ceil(oWidth / xGap);\n const totalPoints = Math.ceil(oHeight / yGap);\n const xStart = (width - xGap * totalLines) / 2;\n const yStart = (height - yGap * totalPoints) / 2;\n for (let i = 0; i <= totalLines; i++) {\n const pts: Point[] = [];\n for (let j = 0; j <= totalPoints; j++) {\n pts.push({\n x: xStart + xGap * i,\n y: yStart + yGap * j,\n wave: { x: 0, y: 0 },\n cursor: { x: 0, y: 0, vx: 0, vy: 0 },\n });\n }\n linesRef.current.push(pts);\n }\n }\n\n function movePoints(time: number) {\n const lines = linesRef.current;\n const mouse = mouseRef.current;\n const noise = noiseRef.current;\n const { waveSpeedX, waveSpeedY, waveAmpX, waveAmpY, friction, tension, maxCursorMove } = configRef.current;\n lines.forEach((pts) => {\n pts.forEach((p) => {\n const move = noise.perlin2((p.x + time * waveSpeedX) * 0.002, (p.y + time * waveSpeedY) * 0.0015) * 12;\n p.wave.x = Math.cos(move) * waveAmpX;\n p.wave.y = Math.sin(move) * waveAmpY;\n\n const dx = p.x - mouse.sx,\n dy = p.y - mouse.sy;\n const dist = Math.hypot(dx, dy);\n const l = Math.max(175, mouse.vs);\n if (dist < l) {\n const s = 1 - dist / l;\n const f = Math.cos(dist * 0.001) * s;\n p.cursor.vx += Math.cos(mouse.a) * f * l * mouse.vs * 0.00065;\n p.cursor.vy += Math.sin(mouse.a) * f * l * mouse.vs * 0.00065;\n }\n\n p.cursor.vx += (0 - p.cursor.x) * tension;\n p.cursor.vy += (0 - p.cursor.y) * tension;\n p.cursor.vx *= friction;\n p.cursor.vy *= friction;\n p.cursor.x += p.cursor.vx * 2;\n p.cursor.y += p.cursor.vy * 2;\n p.cursor.x = Math.min(maxCursorMove, Math.max(-maxCursorMove, p.cursor.x));\n p.cursor.y = Math.min(maxCursorMove, Math.max(-maxCursorMove, p.cursor.y));\n });\n });\n }\n\n function moved(point: Point, withCursor = true): { x: number; y: number } {\n const x = point.x + point.wave.x + (withCursor ? point.cursor.x : 0);\n const y = point.y + point.wave.y + (withCursor ? point.cursor.y : 0);\n return { x: Math.round(x * 10) / 10, y: Math.round(y * 10) / 10 };\n }\n\n function drawLines() {\n const { width, height } = boundingRef.current;\n const ctx = ctxRef.current;\n if (!ctx) return;\n ctx.clearRect(0, 0, width, height);\n ctx.beginPath();\n ctx.strokeStyle = configRef.current.lineColor;\n linesRef.current.forEach((points) => {\n let p1 = moved(points[0], false);\n ctx.moveTo(p1.x, p1.y);\n points.forEach((p, idx) => {\n const isLast = idx === points.length - 1;\n p1 = moved(p, !isLast);\n const p2 = moved(points[idx + 1] || points[points.length - 1], !isLast);\n ctx.lineTo(p1.x, p1.y);\n if (isLast) ctx.moveTo(p2.x, p2.y);\n });\n });\n ctx.stroke();\n }\n\n function tick(t: number) {\n if (!container) return;\n const mouse = mouseRef.current;\n mouse.sx += (mouse.x - mouse.sx) * 0.1;\n mouse.sy += (mouse.y - mouse.sy) * 0.1;\n const dx = mouse.x - mouse.lx,\n dy = mouse.y - mouse.ly;\n const d = Math.hypot(dx, dy);\n mouse.v = d;\n mouse.vs += (d - mouse.vs) * 0.1;\n mouse.vs = Math.min(100, mouse.vs);\n mouse.lx = mouse.x;\n mouse.ly = mouse.y;\n mouse.a = Math.atan2(dy, dx);\n container.style.setProperty(\"--x\", `${mouse.sx}px`);\n container.style.setProperty(\"--y\", `${mouse.sy}px`);\n\n movePoints(t);\n drawLines();\n frameIdRef.current = requestAnimationFrame(tick);\n }\n\n function onResize() {\n setSize();\n setLines();\n }\n function onMouseMove(e: MouseEvent) {\n updateMouse(e.clientX, e.clientY);\n }\n function onTouchMove(e: TouchEvent) {\n const touch = e.touches[0];\n updateMouse(touch.clientX, touch.clientY);\n }\n function updateMouse(x: number, y: number) {\n const mouse = mouseRef.current;\n const b = boundingRef.current;\n mouse.x = x - b.left;\n mouse.y = y - b.top;\n if (!mouse.set) {\n mouse.sx = mouse.x;\n mouse.sy = mouse.y;\n mouse.lx = mouse.x;\n mouse.ly = mouse.y;\n mouse.set = true;\n }\n }\n\n setSize();\n setLines();\n frameIdRef.current = requestAnimationFrame(tick);\n window.addEventListener(\"resize\", onResize);\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"touchmove\", onTouchMove, { passive: false });\n\n return () => {\n window.removeEventListener(\"resize\", onResize);\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"touchmove\", onTouchMove);\n if (frameIdRef.current !== null) {\n cancelAnimationFrame(frameIdRef.current);\n }\n };\n }, []);\n\n return (\n <div\n ref={containerRef}\n className={`${styles.waves} ${className}`}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n backgroundColor,\n ...style,\n }}\n >\n <canvas ref={canvasRef} className={styles.wavesCanvas} />\n </div>\n );\n};\n\nconst WaveBackground: React.FC<Omit<WavesProps, \"lineColor\" | \"backgroundColor\">> = (props) => {\n const { currentTheme } = useTheme();\n\n // 从主题中获取线条颜色,降低颜色深度(变浅)\n const lineColor = useMemo(() => {\n // 尝试从主题变量中获取主色,如果没有则使用默认值\n const primary = currentTheme.colors.variables.primary || \"rgb(59, 130, 246)\";\n\n // 将颜色变浅的函数:向白色混合\n const lightenColor = (r: number, g: number, b: number, factor: number = 0.4) => {\n // factor: 0 = 原色, 1 = 白色\n const newR = Math.round(r + (255 - r) * factor);\n const newG = Math.round(g + (255 - g) * factor);\n const newB = Math.round(b + (255 - b) * factor);\n return `rgb(${newR}, ${newG}, ${newB})`;\n };\n\n // 如果已经是 hex 格式,转换为 rgb 并变浅\n if (primary.startsWith(\"#\")) {\n const hex = primary.slice(1);\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n return lightenColor(r, g, b);\n }\n // 将 rgb() 格式变浅\n const match = primary.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const r = parseInt(match[1], 10);\n const g = parseInt(match[2], 10);\n const b = parseInt(match[3], 10);\n return lightenColor(r, g, b);\n }\n // 如果已经是 rgba 格式,提取 RGB 并变浅\n const rgbaMatch = primary.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/);\n if (rgbaMatch) {\n const r = parseInt(rgbaMatch[1], 10);\n const g = parseInt(rgbaMatch[2], 10);\n const b = parseInt(rgbaMatch[3], 10);\n return lightenColor(r, g, b);\n }\n return primary;\n }, [currentTheme]);\n\n return <Waves lineColor={lineColor} backgroundColor=\"transparent\" waveSpeedX={0.05} waveSpeedY={0.01} waveAmpX={40} waveAmpY={20} {...props} />;\n};\n\nexport default WaveBackground;\n",".squaresCanvas {\n width: 100%;\n height: 100%;\n border: none;\n display: block;\n}\n","import React, { useEffect, useMemo, useRef } from \"react\";\n\nimport { useTheme } from \"@/themes/hooks/useTheme\";\n\nimport styles from \"./style.module.css\";\n\ntype CanvasStrokeStyle = string | CanvasGradient | CanvasPattern;\n\ninterface GridOffset {\n x: number;\n y: number;\n}\n\ninterface SquaresProps {\n direction?: \"diagonal\" | \"up\" | \"right\" | \"down\" | \"left\";\n speed?: number;\n borderColor?: CanvasStrokeStyle;\n squareSize?: number;\n hoverFillColor?: CanvasStrokeStyle;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst Squares: React.FC<SquaresProps> = ({\n direction = \"right\",\n speed = 1,\n borderColor = \"#999\",\n squareSize = 40,\n hoverFillColor = \"#222\",\n className = \"\",\n style = {},\n}) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const requestRef = useRef<number | null>(null);\n const numSquaresX = useRef<number>(0);\n const numSquaresY = useRef<number>(0);\n const gridOffset = useRef<GridOffset>({ x: 0, y: 0 });\n const hoveredSquareRef = useRef<GridOffset | null>(null);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext(\"2d\");\n\n const resizeCanvas = () => {\n canvas.width = canvas.offsetWidth;\n canvas.height = canvas.offsetHeight;\n numSquaresX.current = Math.ceil(canvas.width / squareSize) + 1;\n numSquaresY.current = Math.ceil(canvas.height / squareSize) + 1;\n };\n\n window.addEventListener(\"resize\", resizeCanvas);\n resizeCanvas();\n\n const drawGrid = () => {\n if (!ctx) return;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n const startX = Math.floor(gridOffset.current.x / squareSize) * squareSize;\n const startY = Math.floor(gridOffset.current.y / squareSize) * squareSize;\n\n for (let x = startX; x < canvas.width + squareSize; x += squareSize) {\n for (let y = startY; y < canvas.height + squareSize; y += squareSize) {\n const squareX = x - (gridOffset.current.x % squareSize);\n const squareY = y - (gridOffset.current.y % squareSize);\n\n if (\n hoveredSquareRef.current &&\n Math.floor((x - startX) / squareSize) === hoveredSquareRef.current.x &&\n Math.floor((y - startY) / squareSize) === hoveredSquareRef.current.y\n ) {\n ctx.fillStyle = hoverFillColor;\n ctx.fillRect(squareX, squareY, squareSize, squareSize);\n }\n\n ctx.strokeStyle = borderColor;\n ctx.strokeRect(squareX, squareY, squareSize, squareSize);\n }\n }\n\n const gradient = ctx.createRadialGradient(\n canvas.width / 2,\n canvas.height / 2,\n 0,\n canvas.width / 2,\n canvas.height / 2,\n Math.sqrt(canvas.width ** 2 + canvas.height ** 2) / 2,\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 0)\");\n gradient.addColorStop(1, \"#060010\");\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n };\n\n const updateAnimation = () => {\n const effectiveSpeed = Math.max(speed, 0.1);\n switch (direction) {\n case \"right\":\n gridOffset.current.x = (gridOffset.current.x - effectiveSpeed + squareSize) % squareSize;\n break;\n case \"left\":\n gridOffset.current.x = (gridOffset.current.x + effectiveSpeed + squareSize) % squareSize;\n break;\n case \"up\":\n gridOffset.current.y = (gridOffset.current.y + effectiveSpeed + squareSize) % squareSize;\n break;\n case \"down\":\n gridOffset.current.y = (gridOffset.current.y - effectiveSpeed + squareSize) % squareSize;\n break;\n case \"diagonal\":\n gridOffset.current.x = (gridOffset.current.x - effectiveSpeed + squareSize) % squareSize;\n gridOffset.current.y = (gridOffset.current.y - effectiveSpeed + squareSize) % squareSize;\n break;\n default:\n break;\n }\n\n drawGrid();\n requestRef.current = requestAnimationFrame(updateAnimation);\n };\n\n const handleMouseMove = (event: MouseEvent) => {\n const rect = canvas.getBoundingClientRect();\n const mouseX = event.clientX - rect.left;\n const mouseY = event.clientY - rect.top;\n\n const startX = Math.floor(gridOffset.current.x / squareSize) * squareSize;\n const startY = Math.floor(gridOffset.current.y / squareSize) * squareSize;\n\n const hoveredSquareX = Math.floor((mouseX + gridOffset.current.x - startX) / squareSize);\n const hoveredSquareY = Math.floor((mouseY + gridOffset.current.y - startY) / squareSize);\n\n if (!hoveredSquareRef.current || hoveredSquareRef.current.x !== hoveredSquareX || hoveredSquareRef.current.y !== hoveredSquareY) {\n hoveredSquareRef.current = { x: hoveredSquareX, y: hoveredSquareY };\n }\n };\n\n const handleMouseLeave = () => {\n hoveredSquareRef.current = null;\n };\n\n canvas.addEventListener(\"mousemove\", handleMouseMove);\n canvas.addEventListener(\"mouseleave\", handleMouseLeave);\n requestRef.current = requestAnimationFrame(updateAnimation);\n\n return () => {\n window.removeEventListener(\"resize\", resizeCanvas);\n if (requestRef.current) cancelAnimationFrame(requestRef.current);\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\n canvas.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, [direction, speed, borderColor, hoverFillColor, squareSize]);\n\n return <canvas ref={canvasRef} className={`${styles.squaresCanvas} ${className}`} style={style} />;\n};\n\nconst SquareBackground: React.FC<Omit<SquaresProps, \"borderColor\" | \"hoverFillColor\">> = (props) => {\n const { currentTheme } = useTheme();\n\n // 从主题中获取边框颜色\n const borderColor = useMemo(() => {\n const borderColorValue = currentTheme.colors.variables.border5 || currentTheme.colors.variables.fg || \"#271E37\";\n if (borderColorValue.startsWith(\"#\")) {\n return borderColorValue;\n }\n const match = borderColorValue.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const r = parseInt(match[1], 10).toString(16).padStart(2, \"0\");\n const g = parseInt(match[2], 10).toString(16).padStart(2, \"0\");\n const b = parseInt(match[3], 10).toString(16).padStart(2, \"0\");\n return `#${r}${g}${b}`;\n }\n return borderColorValue;\n }, [currentTheme]);\n\n // 从主题中获取悬停填充颜色\n const hoverFillColor = useMemo(() => {\n const baseColor = currentTheme.colors.variables.bg3 || currentTheme.colors.variables.border3 || \"#222222\";\n\n const darkenColor = (r: number, g: number, b: number, factor: number = 0.3) => {\n const newR = Math.round(r * (1 - factor));\n const newG = Math.round(g * (1 - factor));\n const newB = Math.round(b * (1 - factor));\n return `rgb(${newR}, ${newG}, ${newB})`;\n };\n\n if (baseColor.startsWith(\"#\")) {\n const hex = baseColor.slice(1);\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n return darkenColor(r, g, b);\n }\n const match = baseColor.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const r = parseInt(match[1], 10);\n const g = parseInt(match[2], 10);\n const b = parseInt(match[3], 10);\n return darkenColor(r, g, b);\n }\n return baseColor;\n }, [currentTheme]);\n\n return <Squares borderColor={borderColor} hoverFillColor={hoverFillColor} speed={0.5} squareSize={40} direction=\"diagonal\" {...props} />;\n};\n\nexport default SquareBackground;\n",".container {\n position: relative;\n width: 100%;\n height: 100%;\n background-color: #000000;\n overflow: hidden;\n}\n\n.canvas {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.outerVignette {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n background: radial-gradient(circle, rgba(0, 0, 0, 0) 60%, rgba(0, 0, 0, 1) 100%);\n}\n\n.centerVignette {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n background: radial-gradient(circle, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0) 60%);\n}\n","import { memo, useCallback, useEffect, useMemo, useRef } from \"react\";\n\nimport { useTheme } from \"@/themes/hooks/useTheme\";\n\nimport styles from \"./style.module.css\";\n\ninterface LetterGlitchProps {\n glitchColors?: string[];\n glitchSpeed?: number;\n centerVignette?: boolean;\n outerVignette?: boolean;\n smooth?: boolean;\n characters?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst LetterGlitch = memo(\n ({\n glitchColors = [\"#2b4539\", \"#61dca3\", \"#61b3dc\"],\n glitchSpeed = 500, // 增加默认速度,减少更新频率\n centerVignette = false,\n outerVignette = true,\n smooth = true,\n characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$&*()-_+=/[]{};:<>.,0123456789\",\n className = \"\",\n style = {},\n }: LetterGlitchProps) => {\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const animationRef = useRef<number | null>(null);\n const letters = useRef<\n {\n char: string;\n color: string;\n targetColor: string;\n colorProgress: number;\n }[]\n >([]);\n const grid = useRef({ columns: 0, rows: 0 });\n const context = useRef<CanvasRenderingContext2D | null>(null);\n const lastGlitchTime = useRef(Date.now());\n\n const lettersAndSymbols = useMemo(() => Array.from(characters), [characters]);\n\n // 缓存 hexToRgb 结果\n const rgbCache = useRef<Map<string, { r: number; g: number; b: number } | null>>(new Map());\n\n const fontSize = 16;\n const charWidth = 10;\n const charHeight = 20;\n\n const getRandomChar = useCallback(() => {\n return lettersAndSymbols[Math.floor(Math.random() * lettersAndSymbols.length)];\n }, [lettersAndSymbols]);\n\n const getRandomColor = useCallback(() => {\n return glitchColors[Math.floor(Math.random() * glitchColors.length)];\n }, [glitchColors]);\n\n const hexToRgb = useCallback((hex: string) => {\n // 检查缓存\n if (rgbCache.current.has(hex)) {\n return rgbCache.current.get(hex)!;\n }\n\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const normalizedHex = hex.replace(shorthandRegex, (_m, r, g, b) => {\n return r + r + g + g + b + b;\n });\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(normalizedHex);\n const rgb = result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n\n // 缓存结果\n rgbCache.current.set(hex, rgb);\n return rgb;\n }, []);\n\n const interpolateColor = (start: { r: number; g: number; b: number }, end: { r: number; g: number; b: number }, factor: number) => {\n const result = {\n r: Math.round(start.r + (end.r - start.r) * factor),\n g: Math.round(start.g + (end.g - start.g) * factor),\n b: Math.round(start.b + (end.b - start.b) * factor),\n };\n return `rgb(${result.r}, ${result.g}, ${result.b})`;\n };\n\n const calculateGrid = (width: number, height: number) => {\n const columns = Math.ceil(width / charWidth);\n const rows = Math.ceil(height / charHeight);\n return { columns, rows };\n };\n\n const initializeLetters = (columns: number, rows: number) => {\n grid.current = { columns, rows };\n const totalLetters = columns * rows;\n letters.current = Array.from({ length: totalLetters }, () => ({\n char: getRandomChar(),\n color: getRandomColor(),\n targetColor: getRandomColor(),\n colorProgress: 1,\n }));\n };\n\n const resizeCanvas = () => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const parent = canvas.parentElement;\n if (!parent) return;\n\n const dpr = window.devicePixelRatio || 1;\n const rect = parent.getBoundingClientRect();\n\n canvas.width = rect.width * dpr;\n canvas.height = rect.height * dpr;\n\n canvas.style.width = `${rect.width}px`;\n canvas.style.height = `${rect.height}px`;\n\n if (context.current) {\n context.current.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n\n const { columns, rows } = calculateGrid(rect.width, rect.height);\n initializeLetters(columns, rows);\n drawLetters();\n };\n\n const drawLetters = useCallback(() => {\n if (!context.current || letters.current.length === 0) return;\n const ctx = context.current;\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.font = `${fontSize}px monospace`;\n ctx.textBaseline = \"top\";\n ctx.textAlign = \"left\";\n\n // 批量绘制,减少状态切换\n letters.current.forEach((letter, index) => {\n const x = (index % grid.current.columns) * charWidth;\n const y = Math.floor(index / grid.current.columns) * charHeight;\n ctx.fillStyle = letter.color;\n ctx.fillText(letter.char, x, y);\n });\n }, []);\n\n const updateLetters = useCallback(() => {\n if (!letters.current || letters.current.length === 0) return;\n\n // 减少更新比例,从 5% 降到 2%,降低性能消耗\n const updateCount = Math.max(1, Math.floor(letters.current.length * 0.02));\n\n for (let i = 0; i < updateCount; i++) {\n const index = Math.floor(Math.random() * letters.current.length);\n if (!letters.current[index]) continue;\n\n letters.current[index].char = getRandomChar();\n letters.current[index].targetColor = getRandomColor();\n\n if (!smooth) {\n letters.current[index].color = letters.current[index].targetColor;\n letters.current[index].colorProgress = 1;\n } else {\n letters.current[index].colorProgress = 0;\n }\n }\n }, [getRandomChar, getRandomColor, smooth]);\n\n const handleSmoothTransitions = useCallback(() => {\n let needsRedraw = false;\n let activeCount = 0;\n\n // 只处理正在过渡的字母,减少不必要的计算\n letters.current.forEach((letter) => {\n if (letter.colorProgress < 1) {\n activeCount++;\n letter.colorProgress += 0.03; // 稍微降低过渡速度,减少重绘频率\n if (letter.colorProgress > 1) letter.colorProgress = 1;\n\n const startRgb = hexToRgb(letter.color);\n const endRgb = hexToRgb(letter.targetColor);\n if (startRgb && endRgb) {\n letter.color = interpolateColor(startRgb, endRgb, letter.colorProgress);\n needsRedraw = true;\n }\n }\n });\n\n // 只有在有活动过渡时才重绘\n if (needsRedraw && activeCount > 0) {\n drawLetters();\n }\n }, [hexToRgb, drawLetters]);\n\n const animate = useCallback(() => {\n const now = Date.now();\n const timeSinceLastGlitch = now - lastGlitchTime.current;\n\n // 只在需要更新时才执行\n if (timeSinceLastGlitch >= glitchSpeed) {\n updateLetters();\n drawLetters();\n lastGlitchTime.current = now;\n } else if (smooth) {\n // 只在平滑模式下才检查过渡\n handleSmoothTransitions();\n }\n\n animationRef.current = requestAnimationFrame(animate);\n }, [glitchSpeed, smooth, updateLetters, handleSmoothTransitions]);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n context.current = canvas.getContext(\"2d\");\n resizeCanvas();\n animate();\n\n let resizeTimeout: ReturnType<typeof setTimeout>;\n\n const handleResize = () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = setTimeout(() => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current);\n }\n resizeCanvas();\n animate();\n }, 100);\n };\n\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current);\n }\n window.removeEventListener(\"resize\", handleResize);\n clearTimeout(resizeTimeout);\n // 清理缓存\n rgbCache.current.clear();\n };\n }, [glitchSpeed, smooth, glitchColors, animate]);\n\n return (\n <div className={`${styles.container} ${className}`} style={style}>\n <canvas ref={canvasRef} className={styles.canvas} />\n {outerVignette && <div className={styles.outerVignette}></div>}\n {centerVignette && <div className={styles.centerVignette}></div>}\n </div>\n );\n },\n);\n\nconst LetterGlitchBackground: React.FC<Omit<LetterGlitchProps, \"glitchColors\">> = memo((props) => {\n const { currentTheme } = useTheme();\n\n // 从主题中获取故障颜色数组\n const glitchColors = useMemo(() => {\n const primary = currentTheme.colors.variables.primary || \"#FA1E16\";\n const info = currentTheme.colors.variables.info || \"#0095ff\";\n const success = currentTheme.colors.variables.success || \"#00d68f\";\n\n const toHex = (color: string): string => {\n if (color.startsWith(\"#\")) {\n return color;\n }\n const match = color.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const r = parseInt(match[1], 10).toString(16).padStart(2, \"0\");\n const g = parseInt(match[2], 10).toString(16).padStart(2, \"0\");\n const b = parseInt(match[3], 10).toString(16).padStart(2, \"0\");\n return `#${r}${g}${b}`;\n }\n return color;\n };\n\n return [toHex(primary), toHex(info), toHex(success)];\n }, [currentTheme]);\n\n return (\n <LetterGlitch\n glitchColors={glitchColors}\n glitchSpeed={300} // 增加默认速度,减少更新频率\n centerVignette={true}\n outerVignette={false}\n smooth={true}\n {...props}\n />\n );\n});\n\nLetterGlitchBackground.displayName = \"LetterGlitchBackground\";\n\nexport default LetterGlitchBackground;\n",".container {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n","// Component inspired by github.com/zavalit/bayer-dithering-webgl-demo\n\nimport React, { memo, useEffect, useMemo, useRef } from \"react\";\nimport { Effect, EffectComposer, EffectPass, RenderPass } from \"postprocessing\";\nimport {\n Clock,\n Color,\n GLSL3,\n LinearFilter,\n Mesh,\n OrthographicCamera,\n PlaneGeometry,\n Scene,\n ShaderMaterial,\n Texture,\n Uniform,\n Vector2,\n WebGLRenderer,\n} from \"three\";\n\nimport { useTheme } from \"@/themes/hooks/useTheme\";\n\nimport styles from \"./style.module.css\";\n\ntype PixelBlastVariant = \"square\" | \"circle\" | \"triangle\" | \"diamond\";\n\ninterface TouchPoint {\n x: number;\n y: number;\n vx: number;\n vy: number;\n force: number;\n age: number;\n}\n\ninterface TouchTexture {\n canvas: HTMLCanvasElement;\n texture: Texture;\n addTouch: (norm: { x: number; y: number }) => void;\n update: () => void;\n radiusScale: number;\n size: number;\n}\n\ninterface ReinitConfig {\n antialias: boolean;\n liquid: boolean;\n noiseAmount: number;\n}\n\ntype PixelBlastProps = {\n variant?: PixelBlastVariant;\n pixelSize?: number;\n color?: string;\n className?: string;\n style?: React.CSSProperties;\n antialias?: boolean;\n patternScale?: number;\n patternDensity?: number;\n liquid?: boolean;\n liquidStrength?: number;\n liquidRadius?: number;\n pixelSizeJitter?: number;\n enableRipples?: boolean;\n rippleIntensityScale?: number;\n rippleThickness?: number;\n rippleSpeed?: number;\n liquidWobbleSpeed?: number;\n autoPauseOffscreen?: boolean;\n speed?: number;\n transparent?: boolean;\n edgeFade?: number;\n noiseAmount?: number;\n};\n\nconst createTouchTexture = (): TouchTexture => {\n const size = 64;\n const canvas = document.createElement(\"canvas\");\n canvas.width = size;\n canvas.height = size;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) throw new Error(\"2D context not available\");\n ctx.fillStyle = \"black\";\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const texture = new Texture(canvas);\n texture.minFilter = LinearFilter;\n texture.magFilter = LinearFilter;\n texture.generateMipmaps = false;\n const trail: TouchPoint[] = [];\n let last: { x: number; y: number } | null = null;\n const maxAge = 64;\n let radius = 0.1 * size;\n const speed = 1 / maxAge;\n const clear = () => {\n ctx.fillStyle = \"black\";\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n };\n const drawPoint = (p: TouchPoint) => {\n const pos = { x: p.x * size, y: (1 - p.y) * size };\n let intensity = 1;\n const easeOutSine = (t: number) => Math.sin((t * Math.PI) / 2);\n const easeOutQuad = (t: number) => -t * (t - 2);\n if (p.age < maxAge * 0.3) intensity = easeOutSine(p.age / (maxAge * 0.3));\n else intensity = easeOutQuad(1 - (p.age - maxAge * 0.3) / (maxAge * 0.7)) || 0;\n intensity *= p.force;\n const color = `${((p.vx + 1) / 2) * 255}, ${((p.vy + 1) / 2) * 255}, ${intensity * 255}`;\n const offset = size * 5;\n ctx.shadowOffsetX = offset;\n ctx.shadowOffsetY = offset;\n ctx.shadowBlur = radius;\n ctx.shadowColor = `rgba(${color},${0.22 * intensity})`;\n ctx.beginPath();\n ctx.fillStyle = \"rgba(255,0,0,1)\";\n ctx.arc(pos.x - offset, pos.y - offset, radius, 0, Math.PI * 2);\n ctx.fill();\n };\n const addTouch = (norm: { x: number; y: number }) => {\n let force = 0;\n let vx = 0;\n let vy = 0;\n if (last) {\n const dx = norm.x - last.x;\n const dy = norm.y - last.y;\n if (dx === 0 && dy === 0) return;\n const dd = dx * dx + dy * dy;\n const d = Math.sqrt(dd);\n vx = dx / (d || 1);\n vy = dy / (d || 1);\n force = Math.min(dd * 10000, 1);\n }\n last = { x: norm.x, y: norm.y };\n trail.push({ x: norm.x, y: norm.y, age: 0, force, vx, vy });\n };\n const update = () => {\n clear();\n for (let i = trail.length - 1; i >= 0; i--) {\n const point = trail[i];\n const f = point.force * speed * (1 - point.age / maxAge);\n point.x += point.vx * f;\n point.y += point.vy * f;\n point.age++;\n if (point.age > maxAge) trail.splice(i, 1);\n }\n for (let i = 0; i < trail.length; i++) drawPoint(trail[i]);\n texture.needsUpdate = true;\n };\n return {\n canvas,\n texture,\n addTouch,\n update,\n set radiusScale(v: number) {\n radius = 0.1 * size * v;\n },\n get radiusScale() {\n return radius / (0.1 * size);\n },\n size,\n };\n};\n\nconst createLiquidEffect = (texture: Texture, opts?: { strength?: number; freq?: number }) => {\n const fragment = `\n uniform sampler2D uTexture;\n uniform float uStrength;\n uniform float uTime;\n uniform float uFreq;\n\n void mainUv(inout vec2 uv) {\n vec4 tex = texture2D(uTexture, uv);\n float vx = tex.r * 2.0 - 1.0;\n float vy = tex.g * 2.0 - 1.0;\n float intensity = tex.b;\n\n float wave = 0.5 + 0.5 * sin(uTime * uFreq + intensity * 6.2831853);\n\n float amt = uStrength * intensity * wave;\n\n uv += vec2(vx, vy) * amt;\n }\n `;\n return new Effect(\"LiquidEffect\", fragment, {\n uniforms: new Map<string, Uniform>([\n [\"uTexture\", new Uniform(texture)],\n [\"uStrength\", new Uniform(opts?.strength ?? 0.025)],\n [\"uTime\", new Uniform(0)],\n [\"uFreq\", new Uniform(opts?.freq ?? 4.5)],\n ]),\n });\n};\n\nconst SHAPE_MAP: Record<PixelBlastVariant, number> = {\n square: 0,\n circle: 1,\n triangle: 2,\n diamond: 3,\n};\n\nconst VERTEX_SRC = `\nvoid main() {\n gl_Position = vec4(position, 1.0);\n}\n`;\n\nconst FRAGMENT_SRC = `\nprecision highp float;\n\nuniform vec3 uColor;\nuniform vec2 uResolution;\nuniform float uTime;\nuniform float uPixelSize;\nuniform float uScale;\nuniform float uDensity;\nuniform float uPixelJitter;\nuniform int uEnableRipples;\nuniform float uRippleSpeed;\nuniform float uRippleThickness;\nuniform float uRippleIntensity;\nuniform float uEdgeFade;\n\nuniform int uShapeType;\nconst int SHAPE_SQUARE = 0;\nconst int SHAPE_CIRCLE = 1;\nconst int SHAPE_TRIANGLE = 2;\nconst int SHAPE_DIAMOND = 3;\n\nconst int MAX_CLICKS = 10;\n\nuniform vec2 uClickPos [MAX_CLICKS];\nuniform float uClickTimes[MAX_CLICKS];\n\nout vec4 fragColor;\n\nfloat Bayer2(vec2 a) {\n a = floor(a);\n return fract(a.x / 2. + a.y * a.y * .75);\n}\n#define Bayer4(a) (Bayer2(.5*(a))*0.25 + Bayer2(a))\n#define Bayer8(a) (Bayer4(.5*(a))*0.25 + Bayer2(a))\n\n#define FBM_OCTAVES 5\n#define FBM_LACUNARITY 1.25\n#define FBM_GAIN 1.0\n\nfloat hash11(float n){ return fract(sin(n)*43758.5453); }\n\nfloat vnoise(vec3 p){\n vec3 ip = floor(p);\n vec3 fp = fract(p);\n float n000 = hash11(dot(ip + vec3(0.0,0.0,0.0), vec3(1.0,57.0,113.0)));\n float n100 = hash11(dot(ip + vec3(1.0,0.0,0.0), vec3(1.0,57.0,113.0)));\n float n010 = hash11(dot(ip + vec3(0.0,1.0,0.0), vec3(1.0,57.0,113.0)));\n float n110 = hash11(dot(ip + vec3(1.0,1.0,0.0), vec3(1.0,57.0,113.0)));\n float n001 = hash11(dot(ip + vec3(0.0,0.0,1.0), vec3(1.0,57.0,113.0)));\n float n101 = hash11(dot(ip + vec3(1.0,0.0,1.0), vec3(1.0,57.0,113.0)));\n float n011 = hash11(dot(ip + vec3(0.0,1.0,1.0), vec3(1.0,57.0,113.0)));\n float n111 = hash11(dot(ip + vec3(1.0,1.0,1.0), vec3(1.0,57.0,113.0)));\n vec3 w = fp*fp*fp*(fp*(fp*6.0-15.0)+10.0);\n float x00 = mix(n000, n100, w.x);\n float x10 = mix(n010, n110, w.x);\n float x01 = mix(n001, n101, w.x);\n float x11 = mix(n011, n111, w.x);\n float y0 = mix(x00, x10, w.y);\n float y1 = mix(x01, x11, w.y);\n return mix(y0, y1, w.z) * 2.0 - 1.0;\n}\n\nfloat fbm2(vec2 uv, float t){\n vec3 p = vec3(uv * uScale, t);\n float amp = 1.0;\n float freq = 1.0;\n float sum = 1.0;\n for (int i = 0; i < FBM_OCTAVES; ++i){\n sum += amp * vnoise(p * freq);\n freq *= FBM_LACUNARITY;\n amp *= FBM_GAIN;\n }\n return sum * 0.5 + 0.5;\n}\n\nfloat maskCircle(vec2 p, float cov){\n float r = sqrt(cov) * .25;\n float d = length(p - 0.5) - r;\n float aa = 0.5 * fwidth(d);\n return cov * (1.0 - smoothstep(-aa, aa, d * 2.0));\n}\n\nfloat maskTriangle(vec2 p, vec2 id, float cov){\n bool flip = mod(id.x + id.y, 2.0) > 0.5;\n if (flip) p.x = 1.0 - p.x;\n float r = sqrt(cov);\n float d = p.y - r*(1.0 - p.x);\n float aa = fwidth(d);\n return cov * clamp(0.5 - d/aa, 0.0, 1.0);\n}\n\nfloat maskDiamond(vec2 p, float cov){\n float r = sqrt(cov) * 0.564;\n return step(abs(p.x - 0.49) + abs(p.y - 0.49), r);\n}\n\nvoid main(){\n float pixelSize = uPixelSize;\n vec2 fragCoord = gl_FragCoord.xy - uResolution * .5;\n float aspectRatio = uResolution.x / uResolution.y;\n\n vec2 pixelId = floor(fragCoord / pixelSize);\n vec2 pixelUV = fract(fragCoord / pixelSize);\n\n float cellPixelSize = 8.0 * pixelSize;\n vec2 cellId = floor(fragCoord / cellPixelSize);\n vec2 cellCoord = cellId * cellPixelSize;\n vec2 uv = cellCoord / uResolution * vec2(aspectRatio, 1.0);\n\n float base = fbm2(uv, uTime * 0.05);\n base = base * 0.5 - 0.65;\n\n float feed = base + (uDensity - 0.5) * 0.3;\n\n float speed = uRippleSpeed;\n float thickness = uRippleThickness;\n const float dampT = 1.0;\n const float dampR = 10.0;\n\n if (uEnableRipples == 1) {\n for (int i = 0; i < MAX_CLICKS; ++i){\n vec2 pos = uClickPos[i];\n if (pos.x < 0.0) continue;\n float cellPixelSize = 8.0 * pixelSize;\n vec2 cuv = (((pos - uResolution * .5 - cellPixelSize * .5) / (uResolution))) * vec2(aspectRatio, 1.0);\n float t = max(uTime - uClickTimes[i], 0.0);\n float r = distance(uv, cuv);\n float waveR = speed * t;\n float ring = exp(-pow((r - waveR) / thickness, 2.0));\n float atten = exp(-dampT * t) * exp(-dampR * r);\n feed = max(feed, ring * atten * uRippleIntensity);\n }\n }\n\n float bayer = Bayer8(fragCoord / uPixelSize) - 0.5;\n float bw = step(0.5, feed + bayer);\n\n float h = fract(sin(dot(floor(fragCoord / uPixelSize), vec2(127.1, 311.7))) * 43758.5453);\n float jitterScale = 1.0 + (h - 0.5) * uPixelJitter;\n float coverage = bw * jitterScale;\n float M;\n if (uShapeType == SHAPE_CIRCLE) M = maskCircle (pixelUV, coverage);\n else if (uShapeType == SHAPE_TRIANGLE) M = maskTriangle(pixelUV, pixelId, coverage);\n else if (uShapeType == SHAPE_DIAMOND) M = maskDiamond(pixelUV, coverage);\n else M = coverage;\n\n if (uEdgeFade > 0.0) {\n vec2 norm = gl_FragCoord.xy / uResolution;\n float edge = min(min(norm.x, norm.y), min(1.0 - norm.x, 1.0 - norm.y));\n float fade = smoothstep(0.0, uEdgeFade, edge);\n M *= fade;\n }\n\n vec3 color = uColor;\n\n // sRGB gamma correction - convert linear to sRGB for accurate color output\n vec3 srgbColor = mix(\n color * 12.92,\n 1.055 * pow(color, vec3(1.0 / 2.4)) - 0.055,\n step(0.0031308, color)\n );\n\n fragColor = vec4(srgbColor, M);\n}\n`;\n\nconst MAX_CLICKS = 10;\n\nconst PixelBlast: React.FC<PixelBlastProps> = memo(\n ({\n variant = \"square\",\n pixelSize = 3,\n color = \"#B19EEF\",\n className,\n style,\n antialias = true,\n patternScale = 2,\n patternDensity = 1,\n liquid = false,\n liquidStrength = 0.1,\n liquidRadius = 1,\n pixelSizeJitter = 0,\n enableRipples = true,\n rippleIntensityScale = 1,\n rippleThickness = 0.1,\n rippleSpeed = 0.3,\n liquidWobbleSpeed = 4.5,\n autoPauseOffscreen = true,\n speed = 0.5,\n transparent = true,\n edgeFade = 0.5,\n noiseAmount = 0,\n }) => {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const visibilityRef = useRef({ visible: true });\n const speedRef = useRef(speed);\n\n const threeRef = useRef<{\n renderer: WebGLRenderer;\n scene: Scene;\n camera: OrthographicCamera;\n material: ShaderMaterial;\n clock: Clock;\n clickIx: number;\n uniforms: {\n uResolution: { value: Vector2 };\n uTime: { value: number };\n uColor: { value: Color };\n uClickPos: { value: Vector2[] };\n uClickTimes: { value: Float32Array };\n uShapeType: { value: number };\n uPixelSize: { value: number };\n uScale: { value: number };\n uDensity: { value: number };\n uPixelJitter: { value: number };\n uEnableRipples: { value: number };\n uRippleSpeed: { value: number };\n uRippleThickness: { value: number };\n uRippleIntensity: { value: number };\n uEdgeFade: { value: number };\n };\n resizeObserver?: ResizeObserver;\n raf?: number;\n quad?: Mesh<PlaneGeometry, ShaderMaterial>;\n timeOffset?: number;\n composer?: EffectComposer;\n touch?: ReturnType<typeof createTouchTexture>;\n liquidEffect?: Effect;\n } | null>(null);\n const prevConfigRef = useRef<ReinitConfig | null>(null);\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n speedRef.current = speed;\n const needsReinitKeys: (keyof ReinitConfig)[] = [\"antialias\", \"liquid\", \"noiseAmount\"];\n const cfg: ReinitConfig = { antialias, liquid, noiseAmount };\n let mustReinit = false;\n if (!threeRef.current) mustReinit = true;\n else if (prevConfigRef.current) {\n for (const k of needsReinitKeys)\n if (prevConfigRef.current[k] !== cfg[k]) {\n mustReinit = true;\n break;\n }\n }\n if (mustReinit) {\n if (threeRef.current) {\n const t = threeRef.current;\n t.resizeObserver?.disconnect();\n cancelAnimationFrame(t.raf!);\n t.quad?.geometry.dispose();\n t.material.dispose();\n t.composer?.dispose();\n t.renderer.dispose();\n if (t.renderer.domElement.parentElement === container) container.removeChild(t.renderer.domElement);\n threeRef.current = null;\n }\n const canvas = document.createElement(\"canvas\");\n const renderer = new WebGLRenderer({\n canvas,\n antialias,\n alpha: true,\n powerPreference: \"high-performance\",\n });\n renderer.domElement.style.width = \"100%\";\n renderer.domElement.style.height = \"100%\";\n // 降低像素比以提高性能\n renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 1.5));\n container.appendChild(renderer.domElement);\n if (transparent) renderer.setClearAlpha(0);\n else renderer.setClearColor(0x000000, 1);\n const uniforms = {\n uResolution: { value: new Vector2(0, 0) },\n uTime: { value: 0 },\n uColor: { value: new Color(color) },\n uClickPos: {\n value: Array.from({ length: MAX_CLICKS }, () => new Vector2(-1, -1)),\n },\n uClickTimes: { value: new Float32Array(MAX_CLICKS) },\n uShapeType: { value: SHAPE_MAP[variant] ?? 0 },\n uPixelSize: { value: pixelSize * renderer.getPixelRatio() },\n uScale: { value: patternScale },\n uDensity: { value: patternDensity },\n uPixelJitter: { value: pixelSizeJitter },\n uEnableRipples: { value: enableRipples ? 1 : 0 },\n uRippleSpeed: { value: rippleSpeed },\n uRippleThickness: { value: rippleThickness },\n uRippleIntensity: { value: rippleIntensityScale },\n uEdgeFade: { value: edgeFade },\n };\n const scene = new Scene();\n const camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\n const material = new ShaderMaterial({\n vertexShader: VERTEX_SRC,\n fragmentShader: FRAGMENT_SRC,\n uniforms,\n transparent: true,\n depthTest: false,\n depthWrite: false,\n glslVersion: GLSL3,\n });\n\n const quadGeom = new PlaneGeometry(2, 2);\n const quad = new Mesh(quadGeom, material);\n scene.add(quad);\n const clock = new Clock();\n const setSize = () => {\n const w = container.clientWidth || 1;\n const h = container.clientHeight || 1;\n renderer.setSize(w, h, false);\n uniforms.uResolution.value.set(renderer.domElement.width, renderer.domElement.height);\n if (threeRef.current?.composer) threeRef.current.composer.setSize(renderer.domElement.width, renderer.domElement.height);\n uniforms.uPixelSize.value = pixelSize * renderer.getPixelRatio();\n };\n setSize();\n const ro = new ResizeObserver(setSize);\n ro.observe(container);\n const randomFloat = (): number => {\n if (typeof window !== \"undefined\" && window.crypto?.getRandomValues) {\n const u32 = new Uint32Array(1);\n window.crypto.getRandomValues(u32);\n return u32[0] / 0xffffffff;\n }\n return Math.random();\n };\n const timeOffset = randomFloat() * 1000;\n let composer: EffectComposer | undefined;\n let touch: ReturnType<typeof createTouchTexture> | undefined;\n let liquidEffect: Effect | undefined;\n if (liquid) {\n touch = createTouchTexture();\n touch.radiusScale = liquidRadius;\n composer = new EffectComposer(renderer);\n const renderPass = new RenderPass(scene, camera);\n liquidEffect = createLiquidEffect(touch.texture, {\n strength: liquidStrength,\n freq: liquidWobbleSpeed,\n });\n const effectPass = new EffectPass(camera, liquidEffect);\n effectPass.renderToScreen = true;\n composer.addPass(renderPass);\n composer.addPass(effectPass);\n }\n if (noiseAmount > 0) {\n if (!composer) {\n composer = new EffectComposer(renderer);\n composer.addPass(new RenderPass(scene, camera));\n }\n const noiseEffect = new Effect(\n \"NoiseEffect\",\n `uniform float uTime; uniform float uAmount; float hash(vec2 p){ return fract(sin(dot(p, vec2(127.1,311.7))) * 43758.5453);} void mainUv(inout vec2 uv){} void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){ float n=hash(floor(uv*vec2(1920.0,1080.0))+floor(uTime*60.0)); float g=(n-0.5)*uAmount; outputColor=inputColor+vec4(vec3(g),0.0);} `,\n {\n uniforms: new Map<string, Uniform>([\n [\"uTime\", new Uniform(0)],\n [\"uAmount\", new Uniform(noiseAmount)],\n ]),\n },\n );\n const noisePass = new EffectPass(camera, noiseEffect);\n noisePass.renderToScreen = true;\n if (composer && composer.passes.length > 0) {\n composer.passes.forEach((p: { renderToScreen?: boolean }) => {\n const pass = p as { renderToScreen?: boolean };\n pass.renderToScreen = false;\n });\n }\n composer.addPass(noisePass);\n }\n if (composer) composer.setSize(renderer.domElement.width, renderer.domElement.height);\n const mapToPixels = (e: PointerEvent) => {\n const rect = renderer.domElement.getBoundingClientRect();\n const scaleX = renderer.domElement.width / rect.width;\n const scaleY = renderer.domElement.height / rect.height;\n const fx = (e.clientX - rect.left) * scaleX;\n const fy = (rect.height - (e.clientY - rect.top)) * scaleY;\n return {\n fx,\n fy,\n w: renderer.domElement.width,\n h: renderer.domElement.height,\n };\n };\n const onPointerDown = (e: PointerEvent) => {\n const { fx, fy } = mapToPixels(e);\n const ix = threeRef.current?.clickIx ?? 0;\n uniforms.uClickPos.value[ix].set(fx, fy);\n uniforms.uClickTimes.value[ix] = uniforms.uTime.value;\n if (threeRef.current) threeRef.current.clickIx = (ix + 1) % MAX_CLICKS;\n };\n const onPointerMove = (e: PointerEvent) => {\n if (!touch) return;\n const { fx, fy, w, h } = mapToPixels(e);\n touch.addTouch({ x: fx / w, y: fy / h });\n };\n renderer.domElement.addEventListener(\"pointerdown\", onPointerDown, {\n passive: true,\n });\n renderer.domElement.addEventListener(\"pointermove\", onPointerMove, {\n passive: true,\n });\n let raf = 0;\n let lastFrameTime = 0;\n const targetFPS = 30; // 限制到 30 FPS 以提高性能\n const frameInterval = 1000 / targetFPS;\n\n const animate = (currentTime: number) => {\n if (autoPauseOffscreen && !visibilityRef.current.visible) {\n raf = requestAnimationFrame(animate);\n return;\n }\n\n // 帧率限制\n const elapsed = currentTime - lastFrameTime;\n if (elapsed < frameInterval) {\n raf = requestAnimationFrame(animate);\n return;\n }\n lastFrameTime = currentTime - (elapsed % frameInterval);\n\n uniforms.uTime.value = timeOffset + clock.getElapsedTime() * speedRef.current;\n if (liquidEffect) {\n const liqEffect = liquidEffect as Effect & { uniforms: Map<string, Uniform> };\n const timeUniform = liqEffect.uniforms.get(\"uTime\");\n if (timeUniform) timeUniform.value = uniforms.uTime.value;\n }\n if (composer) {\n if (touch) touch.update();\n composer.passes.forEach((p: any) => {\n const pass = p as { effects?: Array<Effect & { uniforms?: Map<string, Uniform> }> };\n if (pass.effects) {\n pass.effects.forEach((eff: Effect & { uniforms?: Map<string, Uniform> }) => {\n const timeUniform = eff.uniforms?.get(\"uTime\");\n if (timeUniform) timeUniform.value = uniforms.uTime.value;\n });\n }\n });\n composer.render();\n } else renderer.render(scene, camera);\n raf = requestAnimationFrame(animate);\n };\n raf = requestAnimationFrame((time) => {\n lastFrameTime = time;\n animate(time);\n });\n threeRef.current = {\n renderer,\n scene,\n camera,\n material,\n clock,\n clickIx: 0,\n uniforms,\n resizeObserver: ro,\n raf,\n quad,\n timeOffset,\n composer,\n touch,\n liquidEffect,\n };\n } else {\n const t = threeRef.current!;\n t.uniforms.uShapeType.value = SHAPE_MAP[variant] ?? 0;\n t.uniforms.uPixelSize.value = pixelSize * t.renderer.getPixelRatio();\n t.uniforms.uColor.value.set(color);\n t.uniforms.uScale.value = patternScale;\n t.uniforms.uDensity.value = patternDensity;\n t.uniforms.uPixelJitter.value = pixelSizeJitter;\n t.uniforms.uEnableRipples.value = enableRipples ? 1 : 0;\n t.uniforms.uRippleIntensity.value = rippleIntensityScale;\n t.uniforms.uRippleThickness.value = rippleThickness;\n t.uniforms.uRippleSpeed.value = rippleSpeed;\n t.uniforms.uEdgeFade.value = edgeFade;\n if (transparent) t.renderer.setClearAlpha(0);\n else t.renderer.setClearColor(0x000000, 1);\n if (t.liquidEffect) {\n const liqEffect = t.liquidEffect as Effect & { uniforms: Map<string, Uniform> };\n const uStrength = liqEffect.uniforms.get(\"uStrength\");\n if (uStrength) uStrength.value = liquidStrength;\n const uFreq = liqEffect.uniforms.get(\"uFreq\");\n if (uFreq) uFreq.value = liquidWobbleSpeed;\n }\n if (t.touch) t.touch.radiusScale = liquidRadius;\n }\n prevConfigRef.current = cfg;\n return () => {\n if (threeRef.current && mustReinit) return;\n if (!threeRef.current) return;\n const t = threeRef.current;\n t.resizeObserver?.disconnect();\n cancelAnimationFrame(t.raf!);\n t.quad?.geometry.dispose();\n t.material.dispose();\n t.composer?.dispose();\n t.renderer.dispose();\n if (t.renderer.domElement.parentElement === container) container.removeChild(t.renderer.domElement);\n threeRef.current = null;\n };\n }, [\n antialias,\n liquid,\n noiseAmount,\n pixelSize,\n patternScale,\n patternDensity,\n enableRipples,\n rippleIntensityScale,\n rippleThickness,\n rippleSpeed,\n pixelSizeJitter,\n edgeFade,\n transparent,\n liquidStrength,\n liquidRadius,\n liquidWobbleSpeed,\n autoPauseOffscreen,\n variant,\n color,\n speed,\n ]);\n\n return <div ref={containerRef} className={`${styles.container} ${className ?? \"\"}`} style={style} aria-label=\"PixelBlast interactive background\" />;\n },\n);\n\nPixelBlast.displayName = \"PixelBlast\";\n\nconst PixelBlastBackground: React.FC<Omit<PixelBlastProps, \"color\">> = memo((props) => {\n const { currentTheme } = useTheme();\n\n // 从主题中获取颜色\n const color = useMemo(() => {\n const primary = currentTheme.colors.variables.primary || \"#B19EEF\";\n\n const toHex = (color: string): string => {\n if (color.startsWith(\"#\")) {\n return color;\n }\n const match = color.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const r = parseInt(match[1], 10).toString(16).padStart(2, \"0\");\n const g = parseInt(match[2], 10).toString(16).padStart(2, \"0\");\n const b = parseInt(match[3], 10).toString(16).padStart(2, \"0\");\n return `#${r}${g}${b}`;\n }\n return color;\n };\n\n return toHex(primary);\n }, [currentTheme]);\n\n return (\n <PixelBlast\n color={color}\n variant=\"square\"\n pixelSize={6}\n patternScale={2}\n patternDensity={1}\n pixelSizeJitter={0}\n enableRipples\n rippleSpeed={0.3}\n rippleThickness={0.12}\n rippleIntensityScale={1.2}\n liquid={false}\n liquidStrength={0.12}\n liquidRadius={1.2}\n liquidWobbleSpeed={5}\n speed={0.3}\n edgeFade={0.25}\n transparent\n antialias={false}\n {...props}\n />\n );\n});\n\nPixelBlastBackground.displayName = \"PixelBlastBackground\";\n\nexport default PixelBlastBackground;\n"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const h=require("./chunk-chunk-BFrxaqQT.cjs"),n=require("./chunk-types-BE3JCLff.cjs");let t=require("i18next");t=h.__toESM(t);let l=require("i18next-browser-languagedetector");l=h.__toESM(l);let p=require("react-i18next");const y={show:"Show Sidebar",hide:"Hide Sidebar"};var A={layoutSwitcher:y};const b={en:"English",zh:"Chinese",fr:"French"};var C={languageSwitcher:b};const P={default:"Default",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},N={theme:"Theme",language:"Language",layout:"Layout",preferences:"Preferences"};var $={baseSwitcher:P,preference:N};const v={default:"Default",light:"Light",dark:"Dark",cosmic:"Cosmic",corporate:"Corporate",forest:"Forest",coffee:"Coffee",wine:"Wine",wheat:"Wheat"};var L={themeSwitcher:v};const M={show:"Afficher la barre latérale",hide:"Masquer la barre latérale"};var x={layoutSwitcher:M};const O={en:"Anglais",zh:"Chinois",fr:"Français"};var R={languageSwitcher:O};const F={default:"Par défaut",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},q={theme:"Thème",language:"Langue",layout:"Disposition",preferences:"Préférences"};var k={baseSwitcher:F,preference:q};const D={default:"Par défaut",light:"Clair",dark:"Sombre",cosmic:"Cosmique",corporate:"Entreprise",forest:"Forêt",coffee:"Coffee",wine:"Vin",wheat:"Blé"};var j={themeSwitcher:D};const U={show:"显示侧边栏",hide:"隐藏侧边栏"};var B={layoutSwitcher:U};const W={en:"英语",zh:"中文",fr:"法语"};var X={languageSwitcher:W};const z={default:"默认",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},T={theme:"主题",language:"语言",layout:"布局",preferences:"偏好设置"};var H={baseSwitcher:z,preference:T};const I={default:"默认",light:"浅色",dark:"深色",cosmic:"宇宙",corporate:"企业",forest:"森林",coffee:"咖啡",wine:"酒红",wheat:"麦田"};var V={themeSwitcher:I};const S=["theme","language","layout","preference"],w={theme:"theme",language:"language",layout:"layout",preference:"preference"};var Z={en:{theme:L,language:C,layout:A,preference:$},zh:{theme:V,language:X,layout:B,preference:H},fr:{theme:j,language:R,layout:x,preference:k}};function E(){return{RESOURCES:Z,NAME_SPACES_MAP:w,NAME_SPACES:[...S]}}function J(u){const f=E(),o=u.bundles,i=u.fallbackLng??n.LanguageEnum.ZH,m=[n.LanguageEnum.EN,n.LanguageEnum.ZH,n.LanguageEnum.FR].reduce((r,e)=>({...r,[e]:{...f.RESOURCES[e]??{},...o.RESOURCES[e]??{}}}),{}),s=[...o.NAME_SPACES,...f.NAME_SPACES.filter(r=>!o.NAME_SPACES.includes(r))];t.default.use(l.default).use(p.initReactI18next).init({compatibilityJSON:"v4",resources:m,lng:i,fallbackLng:i,ns:s,defaultNS:s[0],interpolation:{escapeValue:!1},keySeparator:".",detection:{order:["navigator","htmlTag","path","subdomain"]}});const d=u.onLoadExtraBundles;if(d){const r=async e=>{const a=await d(e);if(a==null)return;const _=Array.isArray(a)?a:[a];for(const{namespace:g,bundle:c}of _)g&&c&&typeof c=="object"&&t.default.addResourceBundle(e,g,c,!0,!0)};r(t.default.language||i),t.default.on("languageChanged",e=>{r(e)})}}var G=t.default;Object.defineProperty(exports,"NFX_NAMESPACES",{enumerable:!0,get:function(){return S}});Object.defineProperty(exports,"NFX_NAMESPACES_MAP",{enumerable:!0,get:function(){return w}});Object.defineProperty(exports,"getDefaultNfxBundles",{enumerable:!0,get:function(){return E}});Object.defineProperty(exports,"i18n_default",{enumerable:!0,get:function(){return G}});Object.defineProperty(exports,"initI18n",{enumerable:!0,get:function(){return J}});
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=chunk-i18n-daHSL0Nm.cjs.map
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { c as o, n as g, r as s, s as c } from "./chunk-types-BudGuDCK.mjs";
|
|
2
|
-
import { i as a } from "./chunk-types-DNPBKfmx.mjs";
|
|
3
|
-
import { i as h, r as E } from "./chunk-types-SD4MzUGp.mjs";
|
|
4
|
-
let n = (function(e) {
|
|
5
|
-
return e.NONE = "none", e.WAVES = "waves", e.SQUARES = "squares", e.LETTER_GLITCH = "letterGlitch", e.PIXEL_BLAST = "pixelBlast", e;
|
|
6
|
-
})({});
|
|
7
|
-
const r = n.NONE, A = Object.values(n);
|
|
8
|
-
function b(e) {
|
|
9
|
-
if (!e || typeof e != "string") return null;
|
|
10
|
-
try {
|
|
11
|
-
const t = JSON.parse(e), u = t.layoutMode === a.HIDE ? a.HIDE : a.SHOW, d = typeof t.other?.dashboardBackground == "string" && A.includes(t.other.dashboardBackground) ? t.other.dashboardBackground : r, i = typeof t.base == "string" && g.includes(t.base) ? t.base : s.DEFAULT, l = typeof t.language == "string" && E.includes(t.language) ? t.language : "zh";
|
|
12
|
-
return {
|
|
13
|
-
theme: typeof t.theme == "string" && c.includes(t.theme) ? t.theme : o.DEFAULT,
|
|
14
|
-
base: i,
|
|
15
|
-
language: l,
|
|
16
|
-
layoutMode: u,
|
|
17
|
-
other: { dashboardBackground: d }
|
|
18
|
-
};
|
|
19
|
-
} catch {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function f(e) {
|
|
24
|
-
const t = {
|
|
25
|
-
theme: e.theme || void 0,
|
|
26
|
-
base: e.base || void 0,
|
|
27
|
-
language: e.language || void 0,
|
|
28
|
-
layoutMode: e.layoutMode,
|
|
29
|
-
other: e.other ? { dashboardBackground: e.other.dashboardBackground } : void 0
|
|
30
|
-
};
|
|
31
|
-
return JSON.stringify(t);
|
|
32
|
-
}
|
|
33
|
-
function y() {
|
|
34
|
-
return {
|
|
35
|
-
theme: o.DEFAULT,
|
|
36
|
-
base: s.DEFAULT,
|
|
37
|
-
language: h.ZH,
|
|
38
|
-
layoutMode: a.SHOW,
|
|
39
|
-
other: { dashboardBackground: r }
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export {
|
|
43
|
-
r as a,
|
|
44
|
-
A as i,
|
|
45
|
-
b as n,
|
|
46
|
-
n as o,
|
|
47
|
-
f as r,
|
|
48
|
-
y as t
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
//# sourceMappingURL=chunk-preference-By58ZcJ_.mjs.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const n=require("./chunk-types-BNUlgEkq.cjs"),r=require("./chunk-types-C_opkZGr.cjs"),a=require("./chunk-types-BE3JCLff.cjs");let u=(function(e){return e.NONE="none",e.WAVES="waves",e.SQUARES="squares",e.LETTER_GLITCH="letterGlitch",e.PIXEL_BLAST="pixelBlast",e})({});const o=u.NONE,s=Object.values(u);function l(e){if(!e||typeof e!="string")return null;try{const t=JSON.parse(e),c=t.layoutMode===r.LayoutModeEnum.HIDE?r.LayoutModeEnum.HIDE:r.LayoutModeEnum.SHOW,d=typeof t.other?.dashboardBackground=="string"&&s.includes(t.other.dashboardBackground)?t.other.dashboardBackground:o,i=typeof t.base=="string"&&n.BASE_VALUES.includes(t.base)?t.base:n.BaseEnum.DEFAULT,g=typeof t.language=="string"&&a.LANGUAGE_VALUES.includes(t.language)?t.language:"zh";return{theme:typeof t.theme=="string"&&n.THEME_VALUES.includes(t.theme)?t.theme:n.ThemeEnum.DEFAULT,base:i,language:g,layoutMode:c,other:{dashboardBackground:d}}}catch{return null}}function E(e){const t={theme:e.theme||void 0,base:e.base||void 0,language:e.language||void 0,layoutMode:e.layoutMode,other:e.other?{dashboardBackground:e.other.dashboardBackground}:void 0};return JSON.stringify(t)}function A(){return{theme:n.ThemeEnum.DEFAULT,base:n.BaseEnum.DEFAULT,language:a.LanguageEnum.ZH,layoutMode:r.LayoutModeEnum.SHOW,other:{dashboardBackground:o}}}Object.defineProperty(exports,"DASHBOARD_BACKGROUND_VALUES",{enumerable:!0,get:function(){return s}});Object.defineProperty(exports,"DEFAULT_DASHBOARD_BACKGROUND",{enumerable:!0,get:function(){return o}});Object.defineProperty(exports,"DashboardBackgroundEnum",{enumerable:!0,get:function(){return u}});Object.defineProperty(exports,"getDefaultPreference",{enumerable:!0,get:function(){return A}});Object.defineProperty(exports,"parsePreferenceJson",{enumerable:!0,get:function(){return l}});Object.defineProperty(exports,"preferenceToJson",{enumerable:!0,get:function(){return E}});
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=chunk-preference-C144GkCD.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-types-BE3JCLff.cjs","names":[],"sources":["../src/languages/types/language.ts"],"sourcesContent":["/**\n * 语言枚举与常量,不引用任何 JSON,供需要轻量引用的模块使用。\n * Language enum and constants; no JSON deps for lightweight usage.\n */\nenum LanguageEnum {\n EN = \"en\",\n ZH = \"zh\",\n FR = \"fr\",\n}\n\nconst DEFAULT_LANGUAGE = LanguageEnum.ZH;\nconst LANGUAGE_VALUES = Object.values(LanguageEnum);\nconst LANGUAGE_STORAGE_KEY = \"language-storage\";\n\nexport { LanguageEnum, DEFAULT_LANGUAGE, LANGUAGE_VALUES, LANGUAGE_STORAGE_KEY };\n"],"mappings":"AAIA,IAAK,GAAL,SAAA,EAAA,CACE,OAAA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,SAHG,GAAA,CAAA,CAAA,EAMC,EAAmB,EAAa,GAChC,EAAkB,OAAO,OAAO,CAAA,EAChC,EAAuB"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
let t=(function(e){return e.DEFAULT="default",e.LIGHT="light",e.CORPORATE="corporate",e.FOREST="forest",e.DARK="dark",e.COSMIC="cosmic",e.COFFEE="coffee",e.WINE="wine",e.WHEAT="wheat",e})({});const n=t.DEFAULT,o=Object.values(t);let r=(function(e){return e.DEFAULT="default",e.IOS="ios",e.ANDROID="android",e.WINDOWS="windows",e.LINUX="linux",e})({});const c=r.DEFAULT,u=Object.values(r),E="theme-color",A="theme-base";Object.defineProperty(exports,"BASE_STORAGE_KEY",{enumerable:!0,get:function(){return A}});Object.defineProperty(exports,"BASE_VALUES",{enumerable:!0,get:function(){return u}});Object.defineProperty(exports,"BaseEnum",{enumerable:!0,get:function(){return r}});Object.defineProperty(exports,"COLOR_STORAGE_KEY",{enumerable:!0,get:function(){return E}});Object.defineProperty(exports,"DEFAULT_BASE",{enumerable:!0,get:function(){return c}});Object.defineProperty(exports,"DEFAULT_THEME",{enumerable:!0,get:function(){return n}});Object.defineProperty(exports,"THEME_VALUES",{enumerable:!0,get:function(){return o}});Object.defineProperty(exports,"ThemeEnum",{enumerable:!0,get:function(){return t}});
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=chunk-types-BNUlgEkq.cjs.map
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
let o = (function(t) {
|
|
2
|
-
return t.DEFAULT = "default", t.LIGHT = "light", t.CORPORATE = "corporate", t.FOREST = "forest", t.DARK = "dark", t.COSMIC = "cosmic", t.COFFEE = "coffee", t.WINE = "wine", t.WHEAT = "wheat", t;
|
|
3
|
-
})({});
|
|
4
|
-
const A = o.DEFAULT, c = Object.values(o);
|
|
5
|
-
let s = (function(t) {
|
|
6
|
-
return t.DEFAULT = "default", t.IOS = "ios", t.ANDROID = "android", t.WINDOWS = "windows", t.LINUX = "linux", t;
|
|
7
|
-
})({});
|
|
8
|
-
const a = s.DEFAULT, O = Object.values(s), E = "theme-color", r = "theme-base";
|
|
9
|
-
export {
|
|
10
|
-
a,
|
|
11
|
-
o as c,
|
|
12
|
-
E as i,
|
|
13
|
-
O as n,
|
|
14
|
-
A as o,
|
|
15
|
-
s as r,
|
|
16
|
-
c as s,
|
|
17
|
-
r as t
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
//# sourceMappingURL=chunk-types-BudGuDCK.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-types-C_opkZGr.cjs","names":[],"sources":["../src/designs/layouts/types/layout.ts"],"sourcesContent":["/**\n * 布局模式枚举与常量。Layout mode enum and constants.\n */\nenum LayoutModeEnum {\n SHOW = \"show\",\n HIDE = \"hide\",\n}\n\nconst DEFAULT_LAYOUT_MODE = LayoutModeEnum.SHOW;\nconst LAYOUT_MODE_VALUES = Object.values(LayoutModeEnum);\nconst LAYOUT_STORAGE_KEY = \"layout-storage\";\n\nexport { LayoutModeEnum, DEFAULT_LAYOUT_MODE, LAYOUT_MODE_VALUES, LAYOUT_STORAGE_KEY };\n"],"mappings":"AAGA,IAAK,GAAL,SAAA,EAAA,CACE,OAAA,EAAA,KAAA,OACA,EAAA,KAAA,WAFG,GAAA,CAAA,CAAA,EAKC,EAAsB,EAAe,KACrC,EAAqB,OAAO,OAAO,CAAA,EACnC,EAAqB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-types-DNPBKfmx.mjs","names":[],"sources":["../src/designs/layouts/types/layout.ts"],"sourcesContent":["/**\n * 布局模式枚举与常量。Layout mode enum and constants.\n */\nenum LayoutModeEnum {\n SHOW = \"show\",\n HIDE = \"hide\",\n}\n\nconst DEFAULT_LAYOUT_MODE = LayoutModeEnum.SHOW;\nconst LAYOUT_MODE_VALUES = Object.values(LayoutModeEnum);\nconst LAYOUT_STORAGE_KEY = \"layout-storage\";\n\nexport { LayoutModeEnum, DEFAULT_LAYOUT_MODE, LAYOUT_MODE_VALUES, LAYOUT_STORAGE_KEY };\n"],"mappings":"AAGA,IAAK,KAAL,SAAA,GAAA;AACE,SAAA,EAAA,OAAA,QACA,EAAA,OAAA;GAFG,KAAA,CAAA,CAAA,GAKC,IAAsB,EAAe,MACrC,IAAqB,OAAO,OAAO,CAAA,GACnC,IAAqB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-types-SD4MzUGp.mjs","names":[],"sources":["../src/languages/types/language.ts"],"sourcesContent":["/**\n * 语言枚举与常量,不引用任何 JSON,供需要轻量引用的模块使用。\n * Language enum and constants; no JSON deps for lightweight usage.\n */\nenum LanguageEnum {\n EN = \"en\",\n ZH = \"zh\",\n FR = \"fr\",\n}\n\nconst DEFAULT_LANGUAGE = LanguageEnum.ZH;\nconst LANGUAGE_VALUES = Object.values(LanguageEnum);\nconst LANGUAGE_STORAGE_KEY = \"language-storage\";\n\nexport { LanguageEnum, DEFAULT_LANGUAGE, LANGUAGE_VALUES, LANGUAGE_STORAGE_KEY };\n"],"mappings":"AAIA,IAAK,KAAL,SAAA,GAAA;AACE,SAAA,EAAA,KAAA,MACA,EAAA,KAAA,MACA,EAAA,KAAA;GAHG,KAAA,CAAA,CAAA,GAMC,IAAmB,EAAa,IAChC,IAAkB,OAAO,OAAO,CAAA,GAChC,IAAuB"}
|