Files
xiaoxia-saas/apps/web/src/pages/editing-planner/hooks/useEditorDrawers.ts
T
xiaoxia 887e66b0f9
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m26s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m28s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m16s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 3m17s
CI/CD Pipeline / Build Staging Web Image (push) Failing after 3m18s
CI/CD Pipeline / Build Staging API Image (push) Successful in 6m20s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 7m4s
CI/CD Pipeline / Unit Tests (push) Failing after 8m0s
CI/CD Pipeline / Integration Tests (push) Successful in 3m15s
CI/CD Pipeline / CI Gate (push) Failing after 838h15m23s
CI/CD Pipeline / Production Browser E2E (push) Failing after 838h17m39s
CI/CD Pipeline / Deploy Production (push) Failing after 838h17m39s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 838h17m41s
CI/CD Pipeline / Build Production Web Image (push) Failing after 838h17m41s
CI/CD Pipeline / ACR Image Cleanup (push) Failing after 838h19m20s
CI/CD Pipeline / Staging API Integration Tests (push) Failing after 838h19m21s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 838h19m21s
CI/CD Pipeline / PR Build Web Image (push) Failing after 838h25m43s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Failing after 838h19m22s
CI/CD Pipeline / PR Build API Image (push) Failing after 838h25m43s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 838h25m45s
CI/CD Pipeline / Canary Release to Production (push) Failing after 838h51m8s
CI/CD Pipeline / Build Production API Image (push) Failing after 838h51m10s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 838h59m11s
CI/CD Pipeline / Frontend Lint (push) Failing after 838h59m13s
refactor(#1341): 删除 EditingPlanner 废弃的封面代码
2026-08-12 17:01:04 +08:00

79 lines
2.6 KiB
TypeScript

import { useState, useCallback } from "react"
/**
* 编辑器 Drawer 开关管理
* 集中管理 11 个抽屉的开关状态 + 3 个目标片段 ID + 快捷打开方法
*/
export const useEditorDrawers = () => {
/* ── 抽屉开关 ── */
const [bgmDrawerOpen, setBgmDrawerOpen] = useState(false)
const [subtitleDrawerOpen, setSubtitleDrawerOpen] = useState(false)
const [transitionDrawerOpen, setTransitionDrawerOpen] = useState(false)
const [speedDrawerOpen, setSpeedDrawerOpen] = useState(false)
const [ttsDrawerOpen, setTtsDrawerOpen] = useState(false)
const [watermarkDrawerOpen, setWatermarkDrawerOpen] = useState(false)
const [introOutroDrawerOpen, setIntroOutroDrawerOpen] = useState(false)
const [pipDrawerOpen, setPipDrawerOpen] = useState(false)
const [filterDrawerOpen, setFilterDrawerOpen] = useState(false)
const [chromaKeyDrawerOpen, setChromaKeyDrawerOpen] = useState(false)
const [stickerDrawerOpen, setStickerDrawerOpen] = useState(false)
/* ── 目标片段 ID ── */
/** 当前正在编辑转场的片段 ID(null = 全局默认转场) */
const [transitionTargetClipId, setTransitionTargetClipId] = useState<string | null>(null)
/** 当前正在调速的片段 ID */
const [speedTargetClipId, setSpeedTargetClipId] = useState<string | null>(null)
/** 当前正在配置 TTS 的片段 ID */
const [ttsTargetClipId, setTtsTargetClipId] = useState<string | null>(null)
/* ── 快捷打开 ── */
const openTransitionDrawer = useCallback((clipId?: string) => {
setTransitionTargetClipId(clipId ?? null)
setTransitionDrawerOpen(true)
}, [])
const openSpeedDrawer = useCallback((clipId: string) => {
setSpeedTargetClipId(clipId)
setSpeedDrawerOpen(true)
}, [])
const openTtsDrawer = useCallback((clipId: string) => {
setTtsTargetClipId(clipId)
setTtsDrawerOpen(true)
}, [])
return {
// 开关 state
bgmDrawerOpen,
setBgmDrawerOpen,
subtitleDrawerOpen,
setSubtitleDrawerOpen,
transitionDrawerOpen,
setTransitionDrawerOpen,
speedDrawerOpen,
setSpeedDrawerOpen,
ttsDrawerOpen,
setTtsDrawerOpen,
watermarkDrawerOpen,
setWatermarkDrawerOpen,
introOutroDrawerOpen,
setIntroOutroDrawerOpen,
pipDrawerOpen,
setPipDrawerOpen,
filterDrawerOpen,
setFilterDrawerOpen,
chromaKeyDrawerOpen,
setChromaKeyDrawerOpen,
stickerDrawerOpen,
setStickerDrawerOpen,
// 目标 ID
transitionTargetClipId,
speedTargetClipId,
ttsTargetClipId,
// 快捷方法
openTransitionDrawer,
openSpeedDrawer,
openTtsDrawer,
}
}