diff --git a/apps/web/src/pages/generate/GeneratePage.tsx b/apps/web/src/pages/generate/GeneratePage.tsx index 492f13680..470e1e62f 100644 --- a/apps/web/src/pages/generate/GeneratePage.tsx +++ b/apps/web/src/pages/generate/GeneratePage.tsx @@ -25,6 +25,8 @@ import { useGenerateFormState } from "./hooks/useGenerateFormState" import { useStepNavigation } from "./hooks/useStepNavigation" import { useGenerateVideo } from "./hooks/useGenerateVideo" import { useStep5Preview } from "./hooks/useStep5Preview" +import { useQuery } from "@tanstack/react-query" +import { getAssetsByKind } from "@/api/assets" import "./generate.css" const GeneratePage: React.FC = () => { @@ -262,7 +264,6 @@ const GeneratePage: React.FC = () => { onRegenerate={step5Preview.regeneratePreview} titleText={titleSettings.title} titleSettings={titleSettings} - showTitlePreview={currentStep === 4} sourceVideoUrl={sourceVideoUrl} /> )} diff --git a/apps/web/src/pages/generate/components/PreviewVideoPanel.tsx b/apps/web/src/pages/generate/components/PreviewVideoPanel.tsx index 03d63024e..864494503 100644 --- a/apps/web/src/pages/generate/components/PreviewVideoPanel.tsx +++ b/apps/web/src/pages/generate/components/PreviewVideoPanel.tsx @@ -16,6 +16,7 @@ import { PlayCircleOutlined, LoadingOutlined } from "@ant-design/icons" import type { PreviewResult, PreviewStatus } from "../hooks/useStep5Preview" import type { TitleSettings } from "../types" import { drawTitleOnCanvas } from "../utils/drawTitleOnCanvas" +import TitlePreviewCanvas from "./title/TitlePreviewCanvas" interface PreviewVideoPanelProps { previewStatus: PreviewStatus @@ -28,8 +29,6 @@ interface PreviewVideoPanelProps { titleText?: string /** 标题样式设置 */ titleSettings?: TitleSettings - /** Step4 标题预览模式 */ - showTitlePreview?: boolean /** 素材视频 URL(用于 Step4 标题预览背景) */ sourceVideoUrl?: string } @@ -45,7 +44,6 @@ export const PreviewVideoPanel: React.FC = ({ onRegenerate, titleText, titleSettings, - showTitlePreview, sourceVideoUrl, }) => { const hasPreview = previewStatus === "ready" && previewResult diff --git a/apps/web/src/pages/generate/components/Step4TitleSettings.tsx b/apps/web/src/pages/generate/components/Step4TitleSettings.tsx index 131548fb1..698dbe5d0 100644 --- a/apps/web/src/pages/generate/components/Step4TitleSettings.tsx +++ b/apps/web/src/pages/generate/components/Step4TitleSettings.tsx @@ -8,7 +8,6 @@ import type { TitleSettings } from "../types" import { useStep4Title } from "../hooks/useStep4Title" import AiTitleGenerator from "./title/AiTitleGenerator" import TitleStylePanel from "./title/TitleStylePanel" -import TitlePreviewCanvas from "./title/TitlePreviewCanvas" interface Step4TitleSettingsProps { titleSettings: TitleSettings diff --git a/apps/web/src/pages/generate/components/title/TitlePreviewCanvas.tsx b/apps/web/src/pages/generate/components/title/TitlePreviewCanvas.tsx index 084739ccd..357474d02 100644 --- a/apps/web/src/pages/generate/components/title/TitlePreviewCanvas.tsx +++ b/apps/web/src/pages/generate/components/title/TitlePreviewCanvas.tsx @@ -86,6 +86,7 @@ const TitlePreviewCanvas: React.FC = ({ .load() .then(() => { if (!cancelled) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any -- FontFaceSet.add() exists at runtime ;(document.fonts as any).add(fontFace) onFontReady() } @@ -108,11 +109,13 @@ const TitlePreviewCanvas: React.FC = ({ return () => { cancelled = true } + // eslint-disable-next-line react-hooks/exhaustive-deps -- draw uses refs, stable by design }, [titleSettings.font, titleSettings.size, titleSettings.bold, titleSettings.italic]) // props 变化时重绘 useEffect(() => { requestAnimationFrame(draw) + // eslint-disable-next-line react-hooks/exhaustive-deps -- draw uses refs, stable by design }, [titleText, titleSettings]) // ResizeObserver 监听容器尺寸变化 @@ -126,6 +129,7 @@ const TitlePreviewCanvas: React.FC = ({ observer.observe(container) return () => observer.disconnect() + // eslint-disable-next-line react-hooks/exhaustive-deps -- draw uses refs, stable by design }, []) return (