aitu-app 0.6.76 → 0.6.78
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 +3 -3
- package/assets/CanvasAudioPlayer-DutgwdiU.js +2 -0
- package/assets/ChatDrawer-E6Fog16I.js +11 -0
- package/assets/{ChatMessagesArea-CZkiRzmW.js → ChatMessagesArea-Bgwiz_XP.js} +3 -3
- package/assets/DeferredAIInputBar-CPkD8Cv9.js +8 -0
- package/assets/DeferredAIInputBar-szBPHiNW.css +1 -0
- package/assets/DrawnixDeferredFeatures-Cul76-88.js +2 -0
- package/assets/{KnowledgeBaseContent-Dan2DUqY.js → KnowledgeBaseContent-DcX5Jofx.js} +6 -6
- package/assets/{MVCreator-Dzjl2fXA.js → MVCreator-DllHozYg.js} +8 -8
- package/assets/{ModelBenchmarkWorkbench-oy2wue1u.js → ModelBenchmarkWorkbench-Dv9SNYTi.js} +2 -2
- package/assets/MusicAnalyzer-CHcQ5t4P.js +1 -0
- package/assets/{MusicAnalyzer-BO44f-db.js → MusicAnalyzer-DDeT6g3c.js} +2 -2
- package/assets/ResizableDivider-CaG9JQbJ.js +1 -0
- package/assets/TaskQueuePanel-BNhNzGp5.js +1 -0
- package/assets/{VideoAnalyzer-iiJpoWb6.js → VideoAnalyzer-BSLz1FaI.js} +2 -2
- package/assets/ai-generation-preferences-service-BF7QkuJp.js +1 -0
- package/assets/arc-BU2KKCa_.js +1 -0
- package/assets/arc-DmGoDCEL.js +1 -0
- package/assets/{batch-image-generation-B2R0hJW_.js → batch-image-generation-Bg68r_Ql.js} +5 -5
- package/assets/{blockDiagram-38ab4fdb-BmWPnNuS.js → blockDiagram-38ab4fdb-BCGEnMME.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-trArAOFP.js → blockDiagram-38ab4fdb-CsZR5uC5.js} +1 -1
- package/assets/board-utils-CpAtoKn2.js +1 -0
- package/assets/{browser-Dya3c6_X.js → browser-DpICcNby.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-Cvj3RMOv.js → c4Diagram-3d4e48cf-9fuiuFdV.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-CqJrO4Za.js → c4Diagram-3d4e48cf-WM4wd_GR.js} +1 -1
- package/assets/{canvas-insertion-Dq3gR9Nw.js → canvas-insertion-CdUQF7IV.js} +3 -3
- package/assets/channel-CZjE-WNp.js +1 -0
- package/assets/channel-SXZD6bG3.js +1 -0
- package/assets/classDiagram-70f12bd4-CBVHTwQu.js +2 -0
- package/assets/{classDiagram-70f12bd4-DvrRZ41d.js → classDiagram-70f12bd4-DcYDedz1.js} +2 -2
- package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +2 -0
- package/assets/classDiagram-v2-f2320105-jpCwaHEd.js +2 -0
- package/assets/{clipper-B4i11tN1.js → clipper-jvd5rF5a.js} +1 -1
- package/assets/clone-C4mvvMDb.js +1 -0
- package/assets/{createText-2e5e7dd3-D7dXlVes.js → createText-2e5e7dd3-CkXS3l7I.js} +2 -2
- package/assets/{createText-2e5e7dd3-B8gnT5hD.js → createText-2e5e7dd3-x5lOIwut.js} +1 -1
- package/assets/edges-e0da2a9e-CbrF4nbD.js +4 -0
- package/assets/{edges-e0da2a9e-CyRAzEMi.js → edges-e0da2a9e-Ch6PBwWs.js} +2 -2
- package/assets/{erDiagram-9861fffd-D8yYsjoN.js → erDiagram-9861fffd-Bq07elcI.js} +3 -3
- package/assets/{erDiagram-9861fffd-BHbAa_Ka.js → erDiagram-9861fffd-DSlNVuAZ.js} +4 -4
- package/assets/{flowDb-956e92f1-DAqb8wjP.js → flowDb-956e92f1-BqPCJlZp.js} +3 -3
- package/assets/{flowDb-956e92f1-f30uG4pp.js → flowDb-956e92f1-Ti5YC4Vv.js} +3 -3
- package/assets/{flowDiagram-66a62f08-C4Gz9mOM.js → flowDiagram-66a62f08-CPDuG3rY.js} +3 -3
- package/assets/{flowDiagram-66a62f08-CBXypoEi.js → flowDiagram-66a62f08-D3GSABFi.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +1 -0
- package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-CSm5diF6.js → flowchart-elk-definition-4a651766-BH09NeLA.js} +1 -1
- package/assets/{flowchart-elk-definition-4a651766-BHB7pRxm.js → flowchart-elk-definition-4a651766-BLaLPCDV.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-CU9a9DsJ.js → ganttDiagram-c361ad54-DL9ZeaEc.js} +4 -4
- package/assets/ganttDiagram-c361ad54-Sp9M1KHP.js +257 -0
- package/assets/{gitGraphDiagram-72cf32ee-B2zj8Xnu.js → gitGraphDiagram-72cf32ee-BSf1fsDV.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-BWOgrFeh.js → gitGraphDiagram-72cf32ee-BWwmRKo-.js} +1 -1
- package/assets/{graph-Bnmq4jgf.js → graph--nPw8zXQ.js} +1 -1
- package/assets/graph-g-2U7grQ.js +1 -0
- package/assets/{index-3862675e-CQLKy6RO.js → index-3862675e-BXwbZ2pz.js} +1 -1
- package/assets/{index-3862675e-BSxxidV_.js → index-3862675e-D6Zy95zZ.js} +1 -1
- package/assets/index-3eqA7Bag.js +1 -0
- package/assets/{index-D1ORCZqJ.js → index-7Q-aiwln.js} +2 -2
- package/assets/index-B2dttXd7.js +1 -0
- package/assets/index-B7V7-Vxz.js +1 -0
- package/assets/index-BHPTfCZM.js +1 -0
- package/assets/{index-vvV37Q1S.js → index-BP77pG9S.js} +4 -4
- package/assets/index-BPR_DyGD.js +1 -0
- package/assets/index-BWrcsh8u.js +1 -0
- package/assets/{index-D4qm_1m5.js → index-BXzGHPXz.js} +1 -1
- package/assets/index-BaCHOxhI.js +1 -0
- package/assets/{index-BoglETHF.js → index-Bq8mPedC.js} +2 -2
- package/assets/index-BqHZCcen.js +2 -0
- package/assets/index-Bti3m-iW.js +1 -0
- package/assets/{index-sPNG1_UN.js → index-BwSnJN93.js} +5 -5
- package/assets/{index-D5qxbeGT.js → index-C3qD42ws.js} +1 -1
- package/assets/{index-VzDb_AHs.js → index-C5eu4uSl.js} +5 -5
- package/assets/index-CLJUfzvO.js +1 -0
- package/assets/index-CfgvFFx3.js +271 -0
- package/assets/index-CmyOpFTN.js +1 -0
- package/assets/index-D4pIkh3S.js +1 -0
- package/assets/index-D7b5fX1d.js +1 -0
- package/assets/index-DH12_HTj.js +13 -0
- package/assets/index-DI0OV6F8.js +7 -0
- package/assets/index-DIiIUyb-.js +1 -0
- package/assets/index-DcZrElEK.js +2 -0
- package/assets/index-DllL1sx1.js +1 -0
- package/assets/index-DqMndQiP.js +1 -0
- package/assets/index-Dz8sghkK.js +1 -0
- package/assets/index-QkP3EC02.js +1 -0
- package/assets/index-TkfyNewx.js +1 -0
- package/assets/index-ZrVeQUWo.js +1 -0
- package/assets/index-eZfwJ9bV.js +3 -0
- package/assets/{index-VarwiJlL.js → index-gQ7LgvSv.js} +1 -1
- package/assets/{infoDiagram-f8f76790-d-BYTW2w.js → infoDiagram-f8f76790-DpFqCCNv.js} +3 -3
- package/assets/{infoDiagram-f8f76790-BMsVq8O_.js → infoDiagram-f8f76790-G2JpJJP7.js} +3 -3
- package/assets/{journeyDiagram-49397b02-DCtCkoaC.js → journeyDiagram-49397b02-BdESGMrv.js} +1 -1
- package/assets/{journeyDiagram-49397b02-CBqb8-ml.js → journeyDiagram-49397b02-DLLTobRM.js} +1 -1
- package/assets/{layout-DKqEkE_W.js → layout-CVkuImk4.js} +1 -1
- package/assets/layout-WSR0vNPO.js +1 -0
- package/assets/line-D3bnG227.js +1 -0
- package/assets/line-DQuMJveY.js +1 -0
- package/assets/{linear-C6OQYT56.js → linear-CciP-97N.js} +1 -1
- package/assets/linear-Z6vFvuwc.js +1 -0
- package/assets/{main-i0s2IJTn.css → main-8DNjLY6L.css} +1 -1
- package/assets/main-BFEkxCOK.js +56 -0
- package/assets/{mermaid.core-CI-VJEiw.js → mermaid.core-CwZQb0ud.js} +5 -5
- package/assets/{mindmap-definition-fc14e90a-k_RSypuP.js → mindmap-definition-fc14e90a-BnJ8OOTI.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-DrtlQLES.js → mindmap-definition-fc14e90a-CxQMydCW.js} +1 -1
- package/assets/model-benchmark-launcher-Ct3lYXVq.js +1 -0
- package/assets/photo-wall-splitter-BZ88W5Zy.js +1 -0
- package/assets/{pieDiagram-8a3498a8-CdknGxKY.js → pieDiagram-8a3498a8-BSDdkTeu.js} +5 -5
- package/assets/{pieDiagram-8a3498a8-Bpr5V3o5.js → pieDiagram-8a3498a8-D6VtAoja.js} +4 -4
- package/assets/ppt-generation-FzjP_rp0.js +48 -0
- package/assets/{quadrantDiagram-120e2f19-Dx3qoKDx.js → quadrantDiagram-120e2f19-BbFV0VXY.js} +3 -3
- package/assets/{quadrantDiagram-120e2f19-pVIXp9i6.js → quadrantDiagram-120e2f19-C8k2xuBd.js} +3 -3
- package/assets/{requirementDiagram-deff3bca-hM4oekUG.js → requirementDiagram-deff3bca-C3xMdzJV.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-DD6NY75P.js → requirementDiagram-deff3bca-CpjqKjYZ.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-BsvEG71N.js → sankeyDiagram-04a897e0-BBJJgsFv.js} +5 -5
- package/assets/{sankeyDiagram-04a897e0-C9uf1jU5.js → sankeyDiagram-04a897e0-Bjvig9bW.js} +4 -4
- package/assets/{sequenceDiagram-704730f1-CNEBmz1G.js → sequenceDiagram-704730f1-DX1MmBN_.js} +4 -4
- package/assets/{sequenceDiagram-704730f1-Bpg54z74.js → sequenceDiagram-704730f1-PFC_9IFI.js} +4 -4
- package/assets/settings-dialog-CQM4v791.js +1 -0
- package/assets/{skill-dsl-parser-DS3VOBFI.js → skill-dsl-parser-syNWYxFu.js} +10 -10
- package/assets/{stateDiagram-587899a1-BN2ZP-3x.js → stateDiagram-587899a1-Dc3mI_B_.js} +1 -1
- package/assets/stateDiagram-587899a1-SFMUVAam.js +1 -0
- package/assets/{stateDiagram-v2-d93cdb3a-BtV1Ziy9.js → stateDiagram-v2-d93cdb3a-DmnBjHpC.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-BLwIM8s1.js → stateDiagram-v2-d93cdb3a-P4Yt2p_j.js} +1 -1
- package/assets/{styles-6aaf32cf-aFVlX_lA.js → styles-6aaf32cf-C3jnr3hV.js} +1 -1
- package/assets/{styles-6aaf32cf-CGp3i5qu.js → styles-6aaf32cf-b6AdP7fu.js} +1 -1
- package/assets/{styles-9a916d00-BK7pejCH.js → styles-9a916d00-BUiD9iBe.js} +4 -4
- package/assets/{styles-9a916d00-CSwFWVnr.js → styles-9a916d00-ii0XTdIm.js} +1 -1
- package/assets/styles-c10674c1-Bt89Yy8Q.js +116 -0
- package/assets/styles-c10674c1-DbTSpy3W.js +116 -0
- package/assets/{svgDrawCommon-08f97a94-Cr4rWU-W.js → svgDrawCommon-08f97a94-BK6lD4D6.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-DypvMDvH.js → svgDrawCommon-08f97a94-D4gIV05W.js} +1 -1
- package/assets/{timeline-definition-85554ec2-D3-lXEL5.js → timeline-definition-85554ec2-Bl2y548G.js} +1 -1
- package/assets/{timeline-definition-85554ec2-DIwHE15c.js → timeline-definition-85554ec2-CWKg_JxG.js} +3 -3
- package/assets/{tool-windows-B-a9r3G3.css → tool-windows-CUNbW1Tz.css} +1 -1
- package/assets/tool-windows-DOIu9TAD.js +2975 -0
- package/assets/ttd-dialog-DI4kQSg8.js +99 -0
- package/assets/{useCharacters-DsZ779l-.js → useCharacters-Chv4Ky7x.js} +3 -3
- package/assets/useWorkflowSubmission-BizuDmuw.js +70 -0
- package/assets/video-analyze-6v3Y-rUE.js +1 -0
- package/assets/{video-generation-C7qCz-ZF.js → video-generation-DnmTlWnm.js} +2 -2
- package/assets/video-recovery-service-BeRoh0s2.js +1 -0
- package/assets/workflow-generation-utils-me381Cax.js +3 -0
- package/assets/workflow-submission-service-YOpo7g37.js +4 -0
- package/assets/{xychartDiagram-e933f94c-B17Evxfw.js → xychartDiagram-e933f94c-CJX9_9WF.js} +4 -4
- package/assets/{xychartDiagram-e933f94c-Dln5PJtU.js → xychartDiagram-e933f94c-Cep8CQEH.js} +3 -3
- package/changelog.json +50 -0
- package/idle-prefetch-manifest.json +300 -316
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/precache-manifest.json +8 -8
- package/sw.js +5 -5
- package/version.json +19 -3
- package/assets/CanvasAudioPlayer-DwM6PU4W.js +0 -2
- package/assets/ChatDrawer-BQTaa6r6.js +0 -11
- package/assets/DeferredAIInputBar-BmPgFhXr.css +0 -1
- package/assets/DeferredAIInputBar-ObyfJQ0O.js +0 -7
- package/assets/DrawnixDeferredFeatures-CFHVLxc5.js +0 -2
- package/assets/ModelDropdown-CQTTHEI7.css +0 -1
- package/assets/ModelDropdown-DjvIvi8O.js +0 -1
- package/assets/MusicAnalyzer-BU5l2wPR.js +0 -1
- package/assets/ResizableDivider-CBgTphcS.js +0 -1
- package/assets/TaskQueuePanel-CTDuSScf.js +0 -1
- package/assets/ai-generation-preferences-service-CqwXb9Cs.js +0 -5
- package/assets/arc-BBE0LXa1.js +0 -1
- package/assets/arc-h476db6P.js +0 -1
- package/assets/channel-DMTz1UNN.js +0 -1
- package/assets/channel-DQOY3XLe.js +0 -1
- package/assets/classDiagram-70f12bd4-5ACx619h.js +0 -2
- package/assets/classDiagram-v2-f2320105-4zQ4jrwi.js +0 -2
- package/assets/classDiagram-v2-f2320105-CB4rof84.js +0 -2
- package/assets/clone-fuaXEdc-.js +0 -1
- package/assets/edges-e0da2a9e-DZalSm7f.js +0 -4
- package/assets/flowDiagram-v2-96b9c2cf-C-DFFh54.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-CWjydvHB.js +0 -1
- package/assets/ganttDiagram-c361ad54-DDnbMkWm.js +0 -257
- package/assets/graph-BsYIlc-B.js +0 -1
- package/assets/index-B10kMZoq.js +0 -1
- package/assets/index-B2_XRj3U.js +0 -1
- package/assets/index-B4lLv-Sz.js +0 -1
- package/assets/index-BFZNUUCR.js +0 -1
- package/assets/index-BTSYG2Vy.js +0 -1
- package/assets/index-BY5Kvjqg.js +0 -1
- package/assets/index-Blf7J5yW.js +0 -1
- package/assets/index-BoQA7VaE.js +0 -3
- package/assets/index-BzqQ69oU.js +0 -1
- package/assets/index-CD2D1BYc.js +0 -2
- package/assets/index-CLRs5cWt.js +0 -1
- package/assets/index-CLU4LJjR.js +0 -1
- package/assets/index-CPDfMZkS.js +0 -1
- package/assets/index-CPfhqyDz.js +0 -316
- package/assets/index-CU4ySaQE.js +0 -1
- package/assets/index-CsCwwmYY.js +0 -1
- package/assets/index-Cyz_w8KS.js +0 -7
- package/assets/index-D489cJtb.js +0 -1
- package/assets/index-D6DebbcI.js +0 -1
- package/assets/index-DDtPG6Km.js +0 -1
- package/assets/index-DKhTnUBU.js +0 -1
- package/assets/index-DMIwLDS8.js +0 -13
- package/assets/index-DgsUJgRJ.js +0 -1
- package/assets/index-oT8mbA3U.js +0 -2
- package/assets/layout-B1ePJO5V.js +0 -1
- package/assets/line-C_jmJ6v1.js +0 -1
- package/assets/line-DfhCgsyz.js +0 -1
- package/assets/linear-ChY5Iu43.js +0 -1
- package/assets/main-LCg1nQGB.js +0 -69
- package/assets/model-benchmark-launcher-B2MsZXmV.js +0 -1
- package/assets/model-benchmark-service-CkIRp-Sq.js +0 -1
- package/assets/model-selection-BvdXmVGX.js +0 -1
- package/assets/photo-wall-splitter-CVrfkWnh.js +0 -1
- package/assets/prompt-optimize-dialog-DLdL2_a1.css +0 -1
- package/assets/settings-dialog-CAhU3cfG.js +0 -1
- package/assets/stateDiagram-587899a1-CMylUAYu.js +0 -1
- package/assets/styles-c10674c1-KfJINP7I.js +0 -116
- package/assets/styles-c10674c1-cccyjRUz.js +0 -116
- package/assets/tool-windows-CtLXQDGF.js +0 -2847
- package/assets/ttd-dialog-BRg3XE5k.js +0 -99
- package/assets/use-runtime-models-BH9r4Yc1.js +0 -1
- package/assets/use-runtime-models-BgWWl4Ng.css +0 -1
- package/assets/useWorkflowSubmission-BeJQ3BuO.js +0 -70
- package/assets/video-analyze-aDVIfgUi.js +0 -1
- package/assets/video-recovery-service-Dy0xiPr8.js +0 -1
- package/assets/workflow-generation-utils-CpMilOwA.js +0 -3
- package/assets/workflow-submission-service-CmBBMIis.js +0 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{fd as xs,fe as ys,ff as js,fg as ws,ai as a,aH as ks,fh as _s,bR as _e,eZ as Ga,fi as Es,fj as Vs,b0 as ts,fk as Ds,aj as r,bl as Fe,eT as ue,W as de,bS as Ps,bz as Ne,T as Ce,cb as De,$ as Ja,fl as Ss,eU as Be,bH as Ke,bx as We,eX as za,b2 as ns,b5 as is,b7 as os,eO as wa,eP as ka,b8 as Us,b9 as Is,bb as qs,f2 as _a,f3 as Cs,f4 as Ms,f5 as As,ah as Ts,f6 as Ea,aU as ea,f7 as $s,cc as la,eD as cs,f8 as Va,f9 as Da,aC as Pa,eK as Gs,aO as He,fa as zs,fm as Os,fn as Rs,ax as Za,ar as Sa,bN as Xa,eE as ua,eF as Hs,eG as Ls,d_ as Fs,bY as Bs}from"./tool-windows-DOIu9TAD.js";import{e as Ks}from"./MusicAnalyzer-CHcQ5t4P.js";import{setCanvasBoard as Qa,quickInsert as es}from"./canvas-insertion-CdUQF7IV.js";/* empty css */import{R as Ws}from"./ResizableDivider-CaG9JQbJ.js";import{r as Ys,a as Js,b as da,w as Ua,d as Zs,f as Xs}from"./workflow-generation-utils-me381Cax.js";/* empty css *//* empty css */const ga="mv-creator:records",Qs=50;async function va(){return xs(ga)}async function er(e){return ys(ga,e,Qs)}async function ae(e,i){return js(ga,e,i)}async function ar(e){return ws(ga,e)}const as=[{id:"analyze",label:"分析"},{id:"script",label:"脚本"},{id:"generate",label:"生成"}],sr=({current:e,onNavigate:i,hasRecord:m,hasShots:h})=>{const u=as.findIndex(p=>p.id===e);return a.jsxDEV("div",{className:"va-step-bar",children:as.map((p,b)=>{const D=p.id===e,P=b<u,w=!m&&b>0||(p.id==="script"||p.id==="generate")&&!h;return a.jsxDEV(ks.Fragment,{children:[b>0&&a.jsxDEV("span",{className:"va-step-arrow",children:"→"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/components/StepBar.tsx",lineNumber:36,columnNumber:27},void 0),a.jsxDEV("button",{className:`va-step ${D?"active":""} ${P?"past":""}`,onClick:()=>!w&&i(p.id),disabled:w,children:[a.jsxDEV("span",{className:"va-step-num",children:b+1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/components/StepBar.tsx",lineNumber:42,columnNumber:15},void 0),p.label]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/components/StepBar.tsx",lineNumber:37,columnNumber:13},void 0)]},p.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/components/StepBar.tsx",lineNumber:35,columnNumber:11},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/components/StepBar.tsx",lineNumber:27,columnNumber:5},void 0)},rr=10;function ls(e,i,m){return{id:ts(),createdAt:Date.now(),label:i,prompt:m,shots:structuredClone(e)}}function us(e,i){return Ds(e,"storyboardVersions",i,rr,{editedShots:i.shots})}const fa=_s;function tr(e,i){return Vs(e,"storyboardVersions",i,{getVersionPatch:m=>({editedShots:m.shots}),getOriginalPatch:m=>{var u;const h=(u=m.storyboardVersions)==null?void 0:u[m.storyboardVersions.length-1];return h?{editedShots:[...h.shots]}:null},originalVersionId:fa})}function Te(e,i){return Es(e,"storyboardVersions",i)}function ds(e,i=e.editedShots||[]){var D,P,w;const m=e.selectedClipDuration||i.reduce((v,f)=>Math.max(v,f.endTime||0),0),h=(D=e.musicStyleTags)==null?void 0:D.filter(Boolean).join(", "),u=e.characters||[],p=["# 爆款MV脚本","",`**创意描述:** ${e.creationPrompt||"-"}`,`**音乐标题:** ${e.musicTitle||"-"}`,`**音乐风格:** ${h||"-"}`,`**时长:** ${m||0}s`,`**画面比例:** ${e.aspectRatio||"16x9"}`,`**视频风格:** ${e.videoStyle||"-"}`];(P=e.musicLyrics)!=null&&P.trim()&&p.push("","## 歌词","",e.musicLyrics.trim()),(w=e.rewritePrompt)!=null&&w.trim()&&p.push("","## 改编提示词","",e.rewritePrompt.trim()),u.length>0&&(p.push("","## 角色设定",""),u.forEach((v,f)=>{p.push(`### ${f+1}. ${v.name||v.id}`),p.push(`- ID:${v.id}`),p.push(`- 外观提示词:${v.description||"-"}`),v.referenceImageUrl&&p.push(`- 参考图:${v.referenceImageUrl}`),p.push("")}));const b=i.map((v,f)=>{var U;return[`### ${f+1}. ${v.label||`镜头 ${f+1}`} (${v.startTime}s-${v.endTime}s)`,"",`**画面描述:** ${v.description||"-"}`,"",`**旁白:** ${v.narration||"-"}`,v.dialogue?`
|
|
2
2
|
**角色对白:** ${v.dialogue}`:"",v.dialogue_speakers?`
|
|
3
3
|
**对白角色:** ${v.dialogue_speakers}`:"",v.speech_relation?`
|
|
4
4
|
**语音关系:** ${v.speech_relation}`:"",v.camera_movement?`
|
|
@@ -16,7 +16,7 @@ ${b.join(`
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
`)}`}function nr(e){const{creationPrompt:i,musicTitle:m,musicStyleTags:h,musicLyrics:u,clipDuration:p,videoModel:b,segmentDuration:D,aspectRatio:P,videoStyle:w,hasAudio:v}=e,f=_e(b),I=D||parseInt(f.defaultDuration,10)||8,U=[{label:`${I}秒`,value:String(I)}],R=Ga(p,U),{segments:d,actualTotal:N,isFixed:z,overflow:M}=R,V=d.length,q=z?`视频模型(${b})为固定时长模型,每段固定 ${d[0]} 秒。实际总时长:${N} 秒(${V} 段)${M>0?`,比音乐时长 ${p} 秒多出 ${M} 秒`:""}。`:`分段方案:${d.map((
|
|
19
|
+
`)}`}function nr(e){const{creationPrompt:i,musicTitle:m,musicStyleTags:h,musicLyrics:u,clipDuration:p,videoModel:b,segmentDuration:D,aspectRatio:P,videoStyle:w,hasAudio:v}=e,f=_e(b),I=D||parseInt(f.defaultDuration,10)||8,U=[{label:`${I}秒`,value:String(I)}],R=Ga(p,U),{segments:d,actualTotal:N,isFixed:z,overflow:M}=R,V=d.length,q=z?`视频模型(${b})为固定时长模型,每段固定 ${d[0]} 秒。实际总时长:${N} 秒(${V} 段)${M>0?`,比音乐时长 ${p} 秒多出 ${M} 秒`:""}。`:`分段方案:${d.map((H,A)=>`第${A+1}段 ${H}s`).join("、")},实际总时长 ${N} 秒。`,k=[m?`- 标题:${m}`:"",h!=null&&h.length?`- 风格标签:${h.join(", ")}`:"",`- 时长:${p}秒`,u?`- 歌词:
|
|
20
20
|
${u}`:""].filter(Boolean).join(`
|
|
21
21
|
`),$=v?`
|
|
22
22
|
⚠️ 重要:本次请求附带了音频文件。你必须先完整听完这段音乐,基于你听到的实际节奏、节拍、情绪变化来编排分镜,而不是仅凭歌词文本猜测。
|
|
@@ -54,7 +54,7 @@ ${w?`- 画面风格:${w}`:""}
|
|
|
54
54
|
${$}
|
|
55
55
|
|
|
56
56
|
第二步:时间轴对齐
|
|
57
|
-
- 将 ${V} 个视频片段(${d.map((
|
|
57
|
+
- 将 ${V} 个视频片段(${d.map((H,A)=>`第${A+1}段=${H}s`).join("、")})映射到音乐时间轴上
|
|
58
58
|
- 每个镜头的切换点必须对齐音乐的节奏变化点(段落切换、节拍重音、情绪转折)
|
|
59
59
|
- 不允许镜头内容与音乐时间错位(例如:副歌在 30s 开始,对应镜头不能放在 10s)
|
|
60
60
|
|
|
@@ -67,7 +67,7 @@ ${$}
|
|
|
67
67
|
- 尾奏段:情绪回落,运镜放缓,呼应开场
|
|
68
68
|
|
|
69
69
|
分镜格式要求:
|
|
70
|
-
1. 每个镜头的 duration 必须等于对应段的时长:${d.map((
|
|
70
|
+
1. 每个镜头的 duration 必须等于对应段的时长:${d.map((H,A)=>`第${A+1}段=${H}s`).join("、")}
|
|
71
71
|
2. startTime 从 0 开始,每个镜头的 startTime = 上一个镜头的 endTime
|
|
72
72
|
3. 镜头之间要有视觉连贯性(共同视觉元素、运镜方向延续、色调一致)
|
|
73
73
|
4. 所有字段使用与创意描述相同的语言
|
|
@@ -93,7 +93,7 @@ ${$}
|
|
|
93
93
|
{ "id": "char_1", "name": "角色名", "description": "English appearance description for text-to-image" }
|
|
94
94
|
],
|
|
95
95
|
"shots": [ ...镜头数组... ]
|
|
96
|
-
}`}function ir(e){var
|
|
96
|
+
}`}function ir(e){var H;const{record:i,currentShots:m,rewritePrompt:h,videoModel:u,segmentDuration:p,videoStyle:b}=e,D=i.selectedClipDuration||30,P=i.characters||[],w=P.length>0,v=_e(u),f=p||parseInt(v.defaultDuration,10)||8,I=[{label:`${f}秒`,value:String(f)}],U=Ga(D,I),{segments:R,actualTotal:d,isFixed:N,overflow:z}=U,M=R.length,V=N?`视频模型(${u})为固定时长模型,每段固定 ${R[0]} 秒。实际总时长:${d} 秒(${M} 段)${z>0?`,比音乐时长 ${D} 秒多出 ${z} 秒`:""}。`:`分段方案:${R.map((A,Q)=>`第${Q+1}段 ${A}s`).join("、")},实际总时长 ${d} 秒。`,q=[i.musicTitle?`- 标题:${i.musicTitle}`:"",(H=i.musicStyleTags)!=null&&H.length?`- 风格标签:${i.musicStyleTags.join(", ")}`:"",`- 时长:${D}秒`,i.musicLyrics?`- 歌词:
|
|
97
97
|
${i.musicLyrics}`:""].filter(Boolean).join(`
|
|
98
98
|
`),k=JSON.stringify(m.map(A=>({id:A.id,label:A.label,type:A.type,startTime:A.startTime,endTime:A.endTime,duration:A.duration,description:A.description,narration:A.narration||"",first_frame_prompt:A.first_frame_prompt,last_frame_prompt:A.last_frame_prompt,camera_movement:A.camera_movement,character_ids:A.character_ids||[]}))),$=b||i.videoStyle||"";return`你是一个专业的 MV 脚本改编专家。请基于以下 MV 分镜脚本,根据用户提示词进行改编。
|
|
99
99
|
|
|
@@ -146,7 +146,7 @@ ${h}`:""}
|
|
|
146
146
|
{ "id": "char_1", "name": "角色名", "description": "English appearance description for text-to-image" }
|
|
147
147
|
],
|
|
148
148
|
"shots": [ ...镜头数组,每个元素包含 id、startTime、endTime、duration、description、narration、first_frame_prompt、last_frame_prompt、camera_movement、label、type、transition_hint、character_ids 字段... ]
|
|
149
|
-
}`}const Ta="mv-creator:creation-prompt",Ia="mv-creator:video-model",qa="mv-creator:storyboard-model",ss="gemini-2.5-pro";function or(){try{return sessionStorage.getItem(Ta)||""}catch{return""}}function cr(e){try{e?sessionStorage.setItem(Ta,e):sessionStorage.removeItem(Ta)}catch{}}const lr=({existingRecord:e,onComplete:i,onRecordsChange:m,onNext:h})=>{const[u,p]=r.useState(()=>(e==null?void 0:e.creationPrompt)||or()),[b,D]=r.useState((e==null?void 0:e.selectedClipId)||null),[P,w]=r.useState(!1),v=We("video"),[f,I]=r.useState(()=>(e==null?void 0:e.videoModel)||ue(Ia,"veo3").modelId),[U,R]=r.useState(()=>(e==null?void 0:e.videoModelRef)||ue(Ia,"veo3").modelRef),d=r.useMemo(()=>_e(f),[f]),[N,z]=r.useState(()=>(e==null?void 0:e.segmentDuration)||parseInt(d.defaultDuration,10)||8),M=r.useMemo(()=>(d.durationOptions||[]).map(t=>({value:parseInt(t.value,10),label:t.label})),[d]),V=We("text"),q=r.useMemo(()=>V.filter(t=>/^gemini/i.test(t.id)),[V]),[k,$]=r.useState(()=>ue(qa,ss).modelId),[L,A]=r.useState(()=>ue(qa,ss).modelRef),[Q,Pe]=r.useState(!1),[ee,ie]=r.useState(""),K=r.useRef(!1);r.useEffect(()=>{e&&(p(e.creationPrompt||""),D(e.selectedClipId||null))},[e]);const oe=(e==null?void 0:e.editedShots)||[];r.useEffect(()=>{oe.length>0&&w(!0)},[oe.length]),r.useEffect(()=>{e||cr(u)},[u,e]),r.useEffect(()=>{var J;const t=e==null?void 0:e.pendingStoryboardTaskId;if(!t){ie("");return}const x=de.getTask(t);if((x==null?void 0:x.status)==="failed"){ie(`分镜生成失败: ${((J=x.error)==null?void 0:J.message)||"未知错误"}`);return}if((x==null?void 0:x.status)==="completed"){ie("");return}const Y=de.observeTaskUpdates().subscribe(te=>{var ne;te.task.id===t&&(te.task.status==="failed"?ie(`分镜生成失败: ${((ne=te.task.error)==null?void 0:ne.message)||"未知错误"}`):te.task.status==="completed"&&ie(""))});return()=>Y.unsubscribe()},[e==null?void 0:e.pendingStoryboardTaskId]);const[se,be]=r.useState([]);r.useEffect(()=>{let t=!1;return Ps.getAllTasks({type:Ce.AUDIO,status:Ne.COMPLETED,includeArchived:!0}).then(x=>{if(t)return;const Y=[];for(const J of x){const te=Ws(J);for(const ne of te)Y.push({...ne,prompt:String(J.params.prompt||"")})}be(Y)}).catch(()=>{}),()=>{t=!0}},[]);const G=r.useMemo(()=>{var t;return b&&(((t=e==null?void 0:e.generatedClips)==null?void 0:t.find(x=>x.clipId===b))||se.find(x=>x.clipId===b))||null},[b,e==null?void 0:e.generatedClips,se]),ce=(e==null?void 0:e.selectedClipDuration)||(G==null?void 0:G.duration)||30,xe=r.useCallback(()=>{De.trackUIInteraction({area:"popular_mv_tool",action:"music_tool_opened",control:"open_music_tool",source:"mv_creator_analyze_page",metadata:{existingAudioClipsCount:se.length}});const t=Ja.getPrimaryToolState("mv-creator"),x=t==null?void 0:t.position,Y=x?{x:x.x+((t==null?void 0:t.tool.defaultWidth)||520)+16,y:x.y}:void 0;Ja.openTool(Ss.manifest,{launchMode:"reuse",position:Y})},[]),Ye=r.useCallback(async t=>{var Y;De.trackUIInteraction({area:"popular_mv_tool",action:"music_clip_selected",control:"select_music_clip",source:"mv_creator_analyze_page",metadata:{hasClipId:!!t.clipId,hasAudioUrl:!!t.audioUrl,duration:t.duration}}),t.prompt&&!u.trim()&&p(t.prompt);let x=e||null;if(x){const J=x.generatedClips||[],Ue={generatedClips:J.some(Me=>Me.clipId===t.clipId)?J:[...J,t],selectedClipId:t.clipId,selectedClipDuration:t.duration??null,selectedClipAudioUrl:t.audioUrl,musicTitle:x.musicTitle||t.title||""},$e=await ae(x.id,Ue);m($e),i({...x,...Ue})}else{const J=t.title||((Y=t.prompt)==null?void 0:Y.slice(0,20))||"已有音频";x={id:ts(),createdAt:Date.now(),creationPrompt:u.trim()||t.prompt||"",sourceLabel:J,starred:!1,musicTitle:t.title||"",generatedClips:[t],selectedClipId:t.clipId,selectedClipDuration:t.duration??null,selectedClipAudioUrl:t.audioUrl};const te=await er(x);m(te),i(x)}D(t.clipId)},[e,u,i,m]),ye=r.useCallback((t,x)=>{I(t),R(x||null),Fe(Ia,t,x);const Y=_e(t);z(parseInt(Y.defaultDuration,10)||8)},[]),Ee=r.useCallback((t,x)=>{$(t),A(x||null),Fe(qa,t,x)},[]),Se=r.useCallback(async()=>{if(!(K.current||!e)){K.current=!0,De.trackUIInteraction({area:"popular_mv_tool",action:"storyboard_generation_started",control:"generate_storyboard",source:"mv_creator_analyze_page",metadata:{hasSelectedClip:!!(G!=null&&G.audioUrl),clipDuration:ce,segmentDuration:N,hasStoryboardModelRef:!!L,hasVideoModelRef:!!U}}),Pe(!0),ie("");try{const t=nr({creationPrompt:u||e.creationPrompt,musicTitle:e.musicTitle,musicStyleTags:e.musicStyleTags,musicLyrics:e.musicLyrics,clipDuration:ce,videoModel:f,segmentDuration:N,hasAudio:!!(G!=null&&G.audioUrl)}),Y={pendingStoryboardTaskId:de.createTask({prompt:t,model:k,modelRef:L,mvCreatorAction:"storyboard",mvCreatorRecordId:e.id,audioCacheUrl:G==null?void 0:G.audioUrl},Ce.CHAT).id,creationPrompt:u||e.creationPrompt,videoModel:f,videoModelRef:U,segmentDuration:N},J=await ae(e.id,Y);m(J),i({...e,...Y}),ie("分镜规划任务已提交,等待 AI 生成...")}catch(t){ie(t.message||"提交失败")}finally{Pe(!1),K.current=!1}}},[e,u,ce,f,U,N,k,L,G,i,m]);return a.jsxDEV("div",{className:"va-page",children:[oe.length>0&&a.jsxDEV("button",{className:"va-collapse-toggle",onClick:()=>w(t=>!t),children:P?"▶ 展开配置":"▼ 收起配置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:316,columnNumber:9},void 0),!P&&a.jsxDEV(a.Fragment,{children:[a.jsxDEV("div",{className:"ma-card ma-card--grow",children:[a.jsxDEV("div",{className:"ma-card-header",children:[a.jsxDEV("span",{children:["选择配乐 (",se.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:329,columnNumber:15},void 0),a.jsxDEV("button",{className:"ma-chip ma-chip--accent",style:{cursor:"pointer",fontSize:"11px",padding:"2px 8px"},onClick:xe,children:"+ 生成新音乐"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:330,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:328,columnNumber:13},void 0),se.length===0?a.jsxDEV("div",{className:"ma-hint",children:["暂无已完成的音频,",a.jsxDEV("button",{onClick:xe,style:{background:"none",border:"none",color:"#E67E22",cursor:"pointer",textDecoration:"underline",padding:0,font:"inherit"},children:"去生成音乐"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:341,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:339,columnNumber:15},void 0):a.jsxDEV("div",{className:"ma-clips-gallery",children:se.map((t,x)=>{var Y;return a.jsxDEV("div",{className:`ma-clip-row ${b===t.clipId?"is-selected":""}`,onClick:()=>Ye(t),style:{cursor:"pointer"},children:[t.imageUrl?a.jsxDEV("img",{src:t.imageUrl,alt:"",className:"ma-clip-thumb",referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:362,columnNumber:23},void 0):a.jsxDEV("div",{className:"ma-clip-thumb ma-clip-thumb--placeholder",children:"♪"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:364,columnNumber:23},void 0),a.jsxDEV("div",{className:"ma-clip-meta",children:[a.jsxDEV("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[a.jsxDEV("span",{className:"ma-clip-title",children:t.title||((Y=t.prompt)==null?void 0:Y.slice(0,30))||t.clipId},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:368,columnNumber:25},void 0),b===t.clipId&&a.jsxDEV("span",{className:"ma-chip ma-chip--accent",style:{flexShrink:0,padding:"0 4px",fontSize:"10px",height:"16px",lineHeight:"14px"},children:"已选"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:370,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:367,columnNumber:23},void 0),t.duration!=null&&a.jsxDEV("span",{className:"ma-clip-duration",children:[Math.round(t.duration),"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:374,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:366,columnNumber:21},void 0),a.jsxDEV("audio",{controls:!0,src:t.audioUrl,preload:"metadata",className:"ma-clip-player",onClick:J=>J.stopPropagation()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:377,columnNumber:21},void 0)]},`${t.clipId||x}`,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:355,columnNumber:19},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:353,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:327,columnNumber:11},void 0),a.jsxDEV("div",{className:"ma-card",children:[a.jsxDEV("div",{className:"ma-card-header",children:a.jsxDEV("span",{children:"MV 创意描述"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:386,columnNumber:45},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:386,columnNumber:13},void 0),a.jsxDEV("textarea",{className:"ma-textarea",rows:2,placeholder:"描述你想要的 MV 主题、风格、情绪、画面...",value:u,onChange:t=>p(t.target.value)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:387,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:385,columnNumber:11},void 0),b&&a.jsxDEV("div",{className:"ma-card",children:[a.jsxDEV("div",{className:"ma-card-header",children:a.jsxDEV("span",{children:"视频参数"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:399,columnNumber:47},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:399,columnNumber:15},void 0),a.jsxDEV("div",{className:"va-model-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:401,columnNumber:17},void 0),a.jsxDEV(Be,{models:v,selectedModel:f,selectedSelectionKey:Ke(f,U),onSelect:(t,x)=>ye(t,x),variant:"form",placement:"down"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:402,columnNumber:17},void 0),a.jsxDEV("div",{className:"va-segment-duration-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"单段"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:411,columnNumber:19},void 0),a.jsxDEV("select",{className:"va-form-select",value:String(N),onChange:t=>z(parseInt(t.target.value,10)),disabled:M.length<=1,children:M.map(t=>a.jsxDEV("option",{value:t.value,children:t.label},t.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:419,columnNumber:23},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:412,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:410,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:400,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:398,columnNumber:13},void 0),b&&a.jsxDEV("div",{className:"ma-card",children:[a.jsxDEV("div",{className:"ma-card-header",children:a.jsxDEV("span",{children:"AI 分镜模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:430,columnNumber:47},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:430,columnNumber:15},void 0),a.jsxDEV(Be,{models:q,selectedModel:k,selectedSelectionKey:Ke(k,L),onSelect:(t,x)=>Ee(t,x),variant:"form",placement:"down"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:431,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:429,columnNumber:13},void 0),ee&&a.jsxDEV("div",{className:"ma-progress",children:ee},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:442,columnNumber:23},void 0),b&&a.jsxDEV("div",{className:"va-page-actions",children:a.jsxDEV("button",{className:"va-btn-primary",onClick:Se,disabled:Q||!e,children:Q?"提交中...":oe.length>0?"重新生成分镜":"AI 生成分镜"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:447,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:446,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:325,columnNumber:9},void 0),oe.length>0&&a.jsxDEV(a.Fragment,{children:[G&&P&&a.jsxDEV("div",{className:"ma-card",children:a.jsxDEV("div",{className:"ma-clip-row is-selected",children:[G.imageUrl?a.jsxDEV("img",{src:G.imageUrl,alt:"",className:"ma-clip-thumb",referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:468,columnNumber:19},void 0):a.jsxDEV("div",{className:"ma-clip-thumb ma-clip-thumb--placeholder",children:"♪"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:470,columnNumber:19},void 0),a.jsxDEV("div",{className:"ma-clip-meta",children:[a.jsxDEV("span",{className:"ma-clip-title",children:G.title||G.clipId},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:473,columnNumber:19},void 0),a.jsxDEV("span",{className:"ma-clip-duration",children:[Math.round(ce),"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:474,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:472,columnNumber:17},void 0),a.jsxDEV("audio",{controls:!0,src:G.audioUrl,preload:"metadata",className:"ma-clip-player"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:476,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:466,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:465,columnNumber:13},void 0),(e==null?void 0:e.characters)&&e.characters.length>0&&a.jsxDEV("div",{className:"ma-card",children:[a.jsxDEV("div",{className:"ma-card-header",children:a.jsxDEV("span",{children:["角色(",e.characters.length," 个)"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:484,columnNumber:47},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:484,columnNumber:15},void 0),a.jsxDEV("div",{className:"va-characters",children:e.characters.map(t=>a.jsxDEV("div",{className:"va-character-item",children:a.jsxDEV("div",{className:"va-character-info",children:[a.jsxDEV("span",{className:"va-character-name",children:t.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:489,columnNumber:23},void 0),a.jsxDEV("span",{className:"va-character-desc",children:t.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:490,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:488,columnNumber:21},void 0)},t.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:487,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:485,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:483,columnNumber:13},void 0),a.jsxDEV("div",{className:"ma-card",children:[a.jsxDEV("div",{className:"ma-card-header",children:a.jsxDEV("span",{children:["分镜脚本(",oe.length," 个镜头)"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:500,columnNumber:45},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:500,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-shots",children:oe.map((t,x)=>a.jsxDEV(za,{shot:t,index:x,compact:!0},t.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:503,columnNumber:17},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:501,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:499,columnNumber:11},void 0),h&&a.jsxDEV("div",{className:"va-page-actions",children:a.jsxDEV("button",{className:"va-btn-primary",onClick:h,children:"下一步:编辑脚本 →"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:511,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:510,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:462,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:313,columnNumber:5},void 0)};function Oa(e){return qs(e,"mvCreatorAction",["storyboard","rewrite"])}function ur(e){return Oa(e)!==null}function dr(e){var w,v;let i=os(e);if(!i)throw new Error("分镜任务缺少结果内容");const m=i.match(/```(?:json)?\s*([\s\S]*?)\s*```/);m&&(i=m[1].trim());const h=i.match(/\{[\s\S]*\}/);if(h)try{const f=JSON.parse(h[0]);if(Array.isArray(f.shots)){const I=f.shots.map((R,d)=>({...R,id:R.id||`shot_${d+1}`})),U=Array.isArray(f.characters)?f.characters:[];return{shots:I,characters:U}}}catch{}const u=i.match(/\[[\s\S]*\]/);if(u)try{return{shots:JSON.parse(u[0]).map((I,U)=>({...I,id:I.id||`shot_${U+1}`})),characters:[]}}catch{}const p=[],b=[],D=/\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}/g;let P;for(;(P=D.exec(i))!==null;)try{const f=JSON.parse(P[0]);f&&typeof f=="object"&&((w=f.id)!=null&&w.startsWith("char_")&&f.name&&f.description?b.push(f):((v=f.id)!=null&&v.startsWith("shot_")||f.startTime!==void 0)&&p.push({...f,id:f.id||`shot_${p.length+1}`}))}catch{}if(p.length>0)return{shots:p,characters:b};throw new Error("响应中未找到有效 JSON(可能因输出过长被截断)")}async function mr(e){if(e.status!=="completed"||Oa(e)!=="storyboard")return null;const i=ns(e,"mvCreatorRecordId");if(!i)return null;const h=(await va()).find(w=>w.id===i);if(!h||h.pendingStoryboardTaskId!==e.id)return null;const{shots:u,characters:p}=dr(e),b=(h.storyboardVersions||[]).length,D=ls(u,`AI 分镜 #${b+1}`,e.params.prompt),P=us(h,D);return is(h,{editedShots:u,pendingStoryboardTaskId:null,storyboardGeneratedAt:Date.now(),...p.length>0?{characters:p}:{},...P},ae)}async function $a(e){if(e.status!=="completed"||Oa(e)!=="rewrite")return null;const i=ns(e,"mvCreatorRecordId");if(!i)return null;const h=(await va()).find(f=>f.id===i);if(!h||h.pendingRewriteTaskId!==e.id)return null;const u=os(e);if(!u)return null;let p,b=null;const D=u.match(/\{[\s\S]*\}/);if(D)try{const f=JSON.parse(D[0]);if(Array.isArray(f.shots))p=f.shots.map((I,U)=>({...I,id:I.id||`shot_${U+1}`})),Array.isArray(f.characters)&&f.characters.length>0&&(b=f.characters);else{const I=wa(u),U=h.editedShots||[];p=ka(U,I)}}catch{const f=wa(u),I=h.editedShots||[];p=ka(I,f)}else{const f=wa(u),I=h.editedShots||[];p=ka(I,f)}const P=(h.storyboardVersions||[]).length,w=ls(p,`AI 改编 #${P+1}`,e.params.prompt),v=us(h,w);return is(h,{editedShots:p,pendingRewriteTaskId:null,storyboardGeneratedAt:Date.now(),...b?{characters:b}:{},...v},ae)}function pr(e){if(e.type!==Ce.AUDIO)return null;const i=e.params.batchId;return i?Us(i,{prefix:"mv_",marker:"_music_"}):null}async function fr(e,i){return Is(e,i,{loadRecords:va,updateRecord:ae})}function He(e){e.style.height="auto",e.style.height=e.scrollHeight+"px"}function aa(e){e&&He(e)}function sa(e,i=30){if(!e)return 1;const m=e.split(`
|
|
150
|
-
`);let h=0;for(const u of m)h+=Math.max(1,Math.ceil(u.length/i));return Math.max(1,h)}const gr=["固定镜头 (Static)","缓慢推近 (Dolly In)","缓慢拉远 (Dolly Out)","水平平移 (Pan)","垂直摇移 (Tilt)","跟随拍摄 (Follow)","手持感 (Handheld)","环绕拍摄 (Orbit)","升降镜头 (Crane)","快速推移 (Zoom In)","快速拉远 (Zoom Out)","航拍俯冲 (Drone Dive)"],vr=[{label:"硬切 (cut)",value:"cut"},{label:"交叉溶解 (dissolve)",value:"dissolve"},{label:"匹配切 (match_cut)",value:"match_cut"},{label:"淡出到黑 (fade_to_black)",value:"fade_to_black"}],Ca="mv-creator:script-model",rs="gemini-2.5-pro",hr=({record:e,onRecordUpdate:i,onRecordsChange:m,onNext:h})=>{var Me,ra;const[u,p]=r.useState(e.editedShots||[]),[b,D]=r.useState(e.rewritePrompt||""),[P,w]=r.useState(!1),[v,f]=r.useState(""),[I,U]=r.useState(""),[R,d]=r.useState(e.pendingRewriteTaskId||null),[N,z]=r.useState(!1),M=r.useRef(null),V=r.useRef(!1),q=We("video"),k="mv-creator:video-model",[$,L]=r.useState(()=>e.videoModel||ue(k,"veo3").modelId),[A,Q]=r.useState(()=>e.videoModelRef||ue(k,"veo3").modelRef),Pe=r.useMemo(()=>_e($),[$]),[ee,ie]=r.useState(()=>e.segmentDuration||parseInt(Pe.defaultDuration,10)||8),K=r.useMemo(()=>(Pe.durationOptions||[]).map(o=>({value:parseInt(o.value,10),label:o.label})),[Pe]),oe=e.selectedClipDuration||30,se=r.useMemo(()=>{const o=[{label:`${ee}秒`,value:String(ee)}];return Ga(oe,o)},[oe,ee]),[be,G]=r.useState(e.videoStyle||""),ce=r.useCallback((o,T)=>{L(o),Q(T||null),Fe(k,o,T);const C=_e(o),X=parseInt(C.defaultDuration,10)||8;ie(X)},[]),xe=r.useCallback(async o=>{const T=await ae(e.id,o);m(T),i({...e,...o})},[e,i,m]),Ye=r.useCallback((o,T)=>{const X=(e.characters||[]).map(me=>me.id===o?{...me,description:T}:me);xe({characters:X})},[e,xe]),ye=We("text"),[Ee,Se]=r.useState(()=>ue(Ca,rs).modelId),[t,x]=r.useState(()=>ue(Ca,rs).modelRef),Y=r.useCallback((o,T)=>{Se(o),x(T||null),Fe(Ca,o,T)},[]),J=r.useRef();r.useEffect(()=>(clearTimeout(J.current),J.current=setTimeout(async()=>{const o=await ae(e.id,{rewritePrompt:b,videoModel:$,videoModelRef:A,segmentDuration:ee,videoStyle:be});m(o),i({...e,rewritePrompt:b,videoModel:$,videoModelRef:A,segmentDuration:ee,videoStyle:be})},500),()=>clearTimeout(J.current)),[b,$,A,ee,be]),r.useEffect(()=>{p(e.editedShots||[])},[e.editedShots]);const te=r.useCallback(async o=>{p(o);const T=Te(e,o),C=await ae(e.id,T);m(C),i({...e,...T})},[e,i,m]),ne=r.useCallback((o,T,C)=>{const X=u.map(me=>me.id===o?{...me,[T]:C}:me);te(X)},[u,te]),Ue=r.useCallback(async()=>{if(!V.current){V.current=!0,w(!0),U(""),De.trackUIInteraction({area:"popular_mv_tool",action:"script_rewrite_started",control:"rewrite_script",source:"mv_creator_script_page",metadata:{shotCount:u.length,hasRewritePrompt:!!b.trim(),segmentDuration:ee,hasModelRef:!!t}});try{const o=ir({record:e,currentShots:u,rewritePrompt:b,videoModel:$,segmentDuration:ee,videoStyle:be}),T=de.createTask({prompt:o,model:Ee,modelRef:t,mvCreatorAction:"rewrite",mvCreatorRecordId:e.id},Ce.CHAT);d(T.id);const C=await ae(e.id,{pendingRewriteTaskId:T.id});m(C),i({...e,pendingRewriteTaskId:T.id}),f("AI 改编中...")}catch(o){U(o.message||"提交失败")}finally{w(!1),V.current=!1}}},[e,u,b,Ee,t,i,m]);r.useEffect(()=>{var C;if(!R)return;const o=de.getTask(R);if((o==null?void 0:o.status)==="failed"){d(null),f(""),U(((C=o.error)==null?void 0:C.message)||"改编失败");return}if((o==null?void 0:o.status)==="completed"){$a(o).then(X=>{X&&(m(X.records),i(X.record),p(X.record.editedShots||[]))}).finally(()=>{d(null),f("")});return}typeof(o==null?void 0:o.progress)=="number"&&f(`AI 改编中 ${Math.round(o.progress)}%`);const T=de.observeTaskUpdates().subscribe(X=>{var me;if(X.task.id===R){if(X.task.status==="failed"){d(null),f(""),U(((me=X.task.error)==null?void 0:me.message)||"改编失败"),ae(e.id,{pendingRewriteTaskId:null}).then(he=>{m(he),i({...e,pendingRewriteTaskId:null})});return}if(X.task.status==="completed"){$a(X.task).then(he=>{he&&(m(he.records),i(he.record),p(he.record.editedShots||[]))}).catch(he=>{U(he.message||"改编结果同步失败")}).finally(()=>{d(null),f("")});return}typeof X.task.progress=="number"&&f(`AI 改编中 ${Math.round(X.task.progress)}%`)}});return()=>T.unsubscribe()},[R,e,i,m]);const $e=r.useCallback(async o=>{const T=tr(e,o);if(!T)return;z(!1),p(T.editedShots);const C=await ae(e.id,T);m(C),i({...e,...T})},[e,i,m]);return r.useEffect(()=>{if(!N)return;const o=T=>{M.current&&!M.current.contains(T.target)&&z(!1)};return document.addEventListener("mousedown",o),()=>document.removeEventListener("mousedown",o)},[N]),a.jsxDEV("div",{className:"va-page",children:[a.jsxDEV("div",{className:"va-product-form",children:[a.jsxDEV("textarea",{ref:aa,className:"va-form-textarea va-auto-resize",placeholder:"输入改编提示词,描述你想要的调整方向...",rows:Math.max(3,sa(b)),value:b,onChange:o=>D(o.target.value),onInput:o=>He(o.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:330,columnNumber:9},void 0),a.jsxDEV("div",{className:"va-model-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"改编模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:340,columnNumber:11},void 0),a.jsxDEV(Be,{variant:"form",selectedModel:Ee,selectedSelectionKey:Ke(Ee,t),onSelect:Y,models:ye,placement:"down",disabled:!!R,placeholder:"选择文本模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:341,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:339,columnNumber:9},void 0),a.jsxDEV("div",{className:"va-model-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:353,columnNumber:11},void 0),a.jsxDEV(Be,{variant:"form",selectedModel:$,selectedSelectionKey:Ke($,A),onSelect:ce,models:q,placement:"down",disabled:!!R,placeholder:"选择视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:354,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-segment-duration-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"单段"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:365,columnNumber:13},void 0),a.jsxDEV("select",{className:"va-form-select",value:String(ee),onChange:o=>ie(parseInt(o.target.value,10)),disabled:K.length<=1,children:K.map(o=>a.jsxDEV("option",{value:o.value,children:o.label},o.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:373,columnNumber:17},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:366,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:364,columnNumber:11},void 0),se.overflow>0&&a.jsxDEV("span",{className:"va-duration-overflow",children:["实际 ",se.actualTotal,"s(+",parseFloat(se.overflow.toFixed(2)),"s)"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:378,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:352,columnNumber:9},void 0),a.jsxDEV("div",{className:"va-form-row",children:a.jsxDEV("div",{style:{flex:1},children:[a.jsxDEV("label",{className:"va-edit-label",children:"画面风格"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:386,columnNumber:13},void 0),a.jsxDEV(_a,{className:"va-style-combo",value:be,onChange:G,options:Ms,placeholder:Cs},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:387,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:385,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:384,columnNumber:9},void 0),a.jsxDEV("div",{className:"va-version-row",children:[a.jsxDEV("button",{className:"va-analyze-btn",style:{flex:1},onClick:Ue,disabled:P||!!R,children:P||R?v||"AI 改编中...":"AI 改编脚本"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:397,columnNumber:11},void 0),e.storyboardVersions&&e.storyboardVersions.length>0&&a.jsxDEV("div",{className:"va-version-select",ref:M,children:[a.jsxDEV("button",{className:"va-version-btn",onClick:()=>z(o=>!o),children:[e.activeVersionId===fa?"原始版本":((Me=e.storyboardVersions.find(o=>o.id===e.activeVersionId))==null?void 0:Me.label)||`v${e.storyboardVersions.length}`," ▾"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:407,columnNumber:15},void 0),N&&a.jsxDEV("div",{className:"va-version-menu",children:[e.storyboardVersions.map(o=>a.jsxDEV("div",{className:`va-version-item ${o.id===e.activeVersionId?"active":""}`,onClick:()=>$e(o.id),children:[a.jsxDEV("span",{children:o.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:423,columnNumber:23},void 0),o.prompt&&a.jsxDEV("span",{className:"va-version-prompt",children:o.prompt.length>30?o.prompt.slice(0,30)+"...":o.prompt},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:424,columnNumber:36},void 0),a.jsxDEV("span",{className:"va-version-time",children:[o.shots.length," 镜头 · ",new Date(o.createdAt).toLocaleTimeString()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:425,columnNumber:23},void 0)]},o.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:418,columnNumber:21},void 0)),a.jsxDEV("div",{className:`va-version-item ${e.activeVersionId===fa||!e.activeVersionId?"active":""}`,onClick:()=>$e(fa),children:[a.jsxDEV("span",{children:"原始版本"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:432,columnNumber:21},void 0),a.jsxDEV("span",{className:"va-version-time",children:[(((ra=e.storyboardVersions[e.storyboardVersions.length-1])==null?void 0:ra.shots)||[]).length," 镜头"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:433,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:428,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:416,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:406,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:396,columnNumber:9},void 0),I&&a.jsxDEV("div",{className:"va-error",children:I},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:440,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:329,columnNumber:7},void 0),v&&!P&&a.jsxDEV("div",{className:"ma-progress",children:v},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:443,columnNumber:41},void 0),a.jsxDEV(As,{characters:e.characters||[],onChange:Ye},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:445,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-shots",children:u.map((o,T)=>a.jsxDEV(za,{shot:o,index:T,compact:!0,children:a.jsxDEV("div",{className:"va-edit-fields",children:[a.jsxDEV("label",{className:"va-edit-label",children:"画面描述"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:455,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:aa,className:"va-edit-textarea va-auto-resize",rows:sa(o.description),value:o.description||"",onChange:C=>ne(o.id,"description",C.target.value),onInput:C=>He(C.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:456,columnNumber:15},void 0),a.jsxDEV("label",{className:"va-edit-label",children:"旁白"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:457,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:aa,className:"va-edit-textarea va-auto-resize",rows:sa(o.narration),value:o.narration||"",onChange:C=>ne(o.id,"narration",C.target.value),onInput:C=>He(C.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:458,columnNumber:15},void 0),a.jsxDEV("label",{className:"va-edit-label",children:"运镜方式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:459,columnNumber:15},void 0),a.jsxDEV(_a,{value:o.camera_movement||"",onChange:C=>ne(o.id,"camera_movement",C),options:gr,placeholder:"选择或输入运镜方式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:460,columnNumber:15},void 0),a.jsxDEV("label",{className:"va-edit-label",children:"首帧 Prompt"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:461,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:aa,className:"va-edit-textarea va-auto-resize",rows:sa(o.first_frame_prompt),value:o.first_frame_prompt||"",onChange:C=>ne(o.id,"first_frame_prompt",C.target.value),onInput:C=>He(C.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:462,columnNumber:15},void 0),a.jsxDEV("label",{className:"va-edit-label",children:"尾帧 Prompt"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:463,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:aa,className:"va-edit-textarea va-auto-resize",rows:sa(o.last_frame_prompt),value:o.last_frame_prompt||"",onChange:C=>ne(o.id,"last_frame_prompt",C.target.value),onInput:C=>He(C.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:464,columnNumber:15},void 0),a.jsxDEV("label",{className:"va-edit-label",children:"转场方式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:465,columnNumber:15},void 0),a.jsxDEV(_a,{value:o.transition_hint||"",onChange:C=>ne(o.id,"transition_hint",C),options:vr,placeholder:"选择转场方式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:466,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:454,columnNumber:13},void 0)},o.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:453,columnNumber:11},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:451,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-page-actions",children:a.jsxDEV("button",{className:"va-btn-primary",onClick:h,children:"下一步:批量生成 →"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:473,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:472,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:327,columnNumber:5},void 0)};function Nr(e,i,m){var u,p;const h=e.selectedClipAudioUrl||((p=(u=e.generatedClips)==null?void 0:u.find(b=>b.clipId===e.selectedClipId))==null?void 0:p.audioUrl)||null;return{recordId:e.id,fileNamePrefix:"mv",zipBaseName:"mv_assets",scriptMarkdown:ds(e,i),recordMeta:{id:e.id,creationPrompt:e.creationPrompt||"",musicTitle:e.musicTitle||"",musicStyleTags:e.musicStyleTags||[],aspectRatio:e.aspectRatio||"16x9",videoStyle:e.videoStyle||"",shotCount:i.length},shots:i,assets:m,audioAsset:h?{url:h,fallbackExtension:"mp3",downloadErrorMessage:"音乐下载失败"}:{url:"",missingErrorMessage:"缺少已选中的音乐文件"}}}function br(e,i){return Ys(i,e.characters||[])}const Ma="mv-creator:image-model",ma="mv-creator:gen-video-model",Aa=({size:e=14})=>a.jsxDEV("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",width:e,height:e,"aria-hidden":"true",children:[a.jsxDEV("rect",{x:"3",y:"3",width:"8",height:"8",rx:"1.5"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:62,columnNumber:5},void 0),a.jsxDEV("circle",{cx:"17",cy:"7",r:"4"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:63,columnNumber:5},void 0),a.jsxDEV("rect",{x:"3",y:"13",width:"8",height:"8",rx:"1.5"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:64,columnNumber:5},void 0),a.jsxDEV("rect",{x:"13",y:"13",width:"8",height:"8",rx:"1.5"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:65,columnNumber:5},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:51,columnNumber:3},void 0),xr=({record:e,onRecordUpdate:i,onRecordsChange:m,onRestart:h})=>{const u=r.useMemo(()=>e.editedShots||[],[e.editedShots]),p=e.aspectRatio||"16x9",b=e.batchId||`mv_${e.id}`,{openDialog:D,board:P}=Ts(),w=r.useRef(e),v=r.useRef(u),f=r.useRef(!1),I=r.useRef(null),U=r.useRef(null),[R,d]=r.useState([]),N=r.useMemo(()=>e.characters||[],[e.characters]),[z,M]=r.useState(null),V=We("image"),q=We("video"),[k,$]=r.useState(()=>ue(Ma,"").modelId),[L,A]=r.useState(()=>ue(Ma,"").modelRef),[Q,Pe]=r.useState(()=>e.videoModel||ue(ma,"veo3").modelId),[ee,ie]=r.useState(()=>e.videoModelRef||ue(ma,"veo3").modelRef),[K,oe]=r.useState(()=>Ea(e.videoModel||ue(ma,"veo3").modelId,e.videoSize,p)),[se,be]=r.useState(()=>e.segmentDuration||parseInt(_e(e.videoModel||"veo3").defaultDuration,10)||8),[G,ce]=r.useState({running:!1,stopping:!1,currentIndex:-1,retryCount:0}),[xe,Ye]=r.useState(!1),ye=r.useMemo(()=>_e(Q),[Q]),Ee=r.useMemo(()=>ye.durationOptions,[ye]),Se=r.useMemo(()=>ye.sizeOptions,[ye]);r.useEffect(()=>{w.current=e},[e]),r.useEffect(()=>{v.current=u},[u]);const t=r.useCallback(async s=>{const n=w.current,l={...n,...s};w.current=l,l.editedShots&&(v.current=l.editedShots);const c=await ae(n.id,s);return m(c),i(l),l},[i,m]),x=r.useCallback(async s=>{const n=w.current,l=Te(n,s);return v.current=s,await t(l),s},[t]),Y=r.useCallback((s,n)=>{$(s),A(n||null),Fe(Ma,s,n)},[]),J=r.useCallback((s,n)=>{Pe(s),ie(n||null),Fe(ma,s,n);const l=_e(s),c=parseInt(l.defaultDuration,10)||8,g=Ea(s,K,p);be(c),oe(g),t({videoModel:s,videoModelRef:n||null,segmentDuration:c,videoSize:g})},[t,p,K]),te=r.useCallback(s=>{be(s),t({segmentDuration:s})},[t]),ne=r.useCallback(s=>{const n=Ea(Q,s,p);oe(n),t({videoSize:n})},[t,p,Q]),Ue=r.useMemo(()=>R.map(s=>s.url).filter(Boolean),[R]),$e=r.useMemo(()=>Js(u),[u]),Me=r.useCallback(async(s,n)=>{const c=(w.current.characters||[]).map(g=>g.id===s?{...g,referenceImageUrl:n}:g);await t({characters:c})},[t]),ra=r.useCallback(async()=>{try{const s=w.current,n=v.current;Qa(P);const l=await es("text",ds(s,n));if(!l.success)throw new Error(l.error||"插入失败,请确认画布已打开");De.trackUIInteraction({area:"popular_mv_tool",action:"script_inserted_to_canvas",control:"insert_script",source:"mv_creator_generate_page",metadata:{shotCount:n.length}}),ea.success("脚本已插入画布")}catch(s){console.error("[MVCreator] Failed to insert script to canvas:",s);const n=s instanceof Error?s.message:"脚本插入画布失败";ea.error(n)}},[P]),o=r.useCallback(async s=>{if(!P)return!1;try{Qa(P);const n=await es("video",s);if(!n.success)throw new Error(n.error||"插入失败,请确认画布已打开");return!0}catch(n){return console.error("[MVCreator] Failed to insert generated video to canvas:",n),!1}},[P]),{isExportingAssets:T,exportProgress:C,handleExportAssets:X}=$s({onExport:async s=>{const n=w.current,l=v.current;return await Xs({...Nr(n,l,$e),onProgress:s})},onExportSuccess:s=>{ea.success(`素材导出完成,共 ${s.assetCount} 个文件`)},onExportError:s=>{console.error("[MVCreator] Failed to export mv assets:",s),ea.error("素材导出失败")}}),me=r.useCallback(s=>{const n=`mv_${e.id}_char${s.id}_ref`,l=e.videoStyle?`${e.videoStyle} style. `:"";D(la.aiImageGeneration,{initialPrompt:`${l}${s.description}`,batchId:n,initialAspectRatio:"1:1",initialModel:k||void 0,initialModelRef:L,autoInsertToCanvas:!1})},[e.id,e.videoStyle,D,k,L]),he=r.useCallback(async()=>{e.batchId||await t({batchId:b})},[e.batchId,b,t]),{tasks:Ra}=cs(),Ge=r.useRef(new Set),ha=r.useRef(new Set),La=r.useCallback(async(s,n,l)=>{let c=[...n],g=!1;for(const{shotId:E,videoUrl:y}of l){const S=`auto_${E}`;if(!ha.current.has(S)){ha.current.add(S);try{const O=c.findIndex(j=>j.id===E);if(O===-1)continue;const _=O>0?c[O-1]:void 0;if(_&&!_.generated_last_frame_url&&!_.generated_video_url){const j=await da(y,_.id,"last","first");j&&(c=c.map(B=>B.id===_.id?{...B,generated_last_frame_url:j}:B),g=!0)}}finally{ha.current.delete(S)}}}if(g){const E=e;ae(s,Te(E,c)).then(y=>{m(y),i({...E,editedShots:c})})}},[e,i,m]);r.useEffect(()=>{var y,S,O,_;const s=`mv_${e.id}_shot`,n=`mv_${e.id}_char`;let l=!1;const c=e;let g=c.editedShots||[];const E=[];for(const j of Ra){if(j.status!==Ne.COMPLETED||Ge.current.has(j.id))continue;const B=(y=j.params)==null?void 0:y.batchId;if(!B)continue;if(B.startsWith(n)){const Z=(S=j.result)==null?void 0:S.url;if(Ge.current.add(j.id),Z){const re=B.slice(n.length),le=re.lastIndexOf("_ref");if(le!==-1){const qe=re.slice(0,le),bs=(w.current.characters||[]).map(ja=>ja.id===qe?{...ja,referenceImageUrl:Z}:ja);t({characters:bs})}}continue}if(!B.startsWith(s))continue;if(e.storyboardGeneratedAt&&j.createdAt<e.storyboardGeneratedAt){Ge.current.add(j.id);continue}const H=(O=j.result)==null?void 0:O.url;if(!H)continue;const F=B.slice(s.length),ke=F.lastIndexOf("_");if(ke===-1)continue;const ge=F.slice(0,ke),W=F.slice(ke+1);if(W!=="first"&&W!=="last"&&W!=="video")continue;const ve=W==="first"?"generated_first_frame_url":W==="last"?"generated_last_frame_url":"generated_video_url",Ve=g.find(Z=>Z.id===ge),Ae=(_=Ve==null?void 0:Ve.suppressed_generated_urls)==null?void 0:_[W];if(Ae&&Ae===H){Ge.current.add(j.id);continue}if(!Ve||Ve[ve]===H){Ge.current.add(j.id);continue}g=g.map(Z=>Z.id===ge?{...Z,[ve]:H,suppressed_generated_urls:Z.suppressed_generated_urls?{...Z.suppressed_generated_urls,[W]:void 0}:void 0}:Z),Ge.current.add(j.id),l=!0,W==="video"&&E.push({shotId:ge,videoUrl:H})}l&&ae(c.id,Te(c,g)).then(j=>{m(j),i({...c,editedShots:g})}),E.length>0&&La(c.id,g,E)},[Ra,La,e,i,m,t]);const[je,Je]=r.useState(null),ms=r.useCallback(async s=>{if(!je)return;Je(null);const{shotId:n,assetType:l}=je,c=l==="first"?"generated_first_frame_url":l==="last"?"generated_last_frame_url":"generated_video_url",g=u.map(y=>y.id===n?{...y,[c]:s.url}:y),E=await ae(e.id,Te(e,g));m(E),i({...e,editedShots:g})},[je,e,u,m,i]),[ze,Na]=r.useState(null),Ze=r.useRef(null),we=r.useCallback(()=>{Ze.current!==null&&(window.clearTimeout(Ze.current),Ze.current=null)},[]),Ha=r.useCallback(()=>{we(),Na(null)},[we]),Fa=r.useCallback(()=>{we(),Ze.current=window.setTimeout(()=>{Ze.current=null,Na(null)},120)},[we]),ta=r.useCallback((s,n,l)=>{we();const c=l.currentTarget.getBoundingClientRect();Na({url:s,type:n,x:c.left+c.width/2,y:c.top-8})},[we]),na=r.useCallback(()=>{Fa()},[Fa]),ps=r.useCallback(()=>{we()},[we]),fs=r.useCallback(()=>{Ha()},[Ha]);r.useEffect(()=>()=>{we()},[we]);const Xe=r.useMemo(()=>{var n;const s=(n=Se.find(l=>l.value===K))==null?void 0:n.aspectRatio;if(s)return s;if(K!=null&&K.includes("x")){const[l,c]=K.split("x").map(Number);if(l&&c){const g=(y,S)=>S===0?y:g(S,y%S),E=g(l,c);return`${l/E}:${c/E}`}}return p.replace("x",":")},[p,Se,K]),Oe=Xe,Ie=r.useCallback(s=>s.map(n=>({url:n.url,name:n.name})),[]),ia=r.useCallback((s=[],n=[])=>s.length===n.length&&s.every((l,c)=>{var g,E;return l.url===((g=n[c])==null?void 0:g.url)&&l.name===((E=n[c])==null?void 0:E.name)}),[]),Re=r.useCallback(async(s,n,l)=>{let c=!1;const g=Ie(l.images),E=v.current.map(y=>{if(y.id!==s)return y;if(n==="first"){const _=y.first_frame_draft,j={prompt:l.prompt,images:g,aspectRatio:l.aspectRatio};return(_==null?void 0:_.prompt)===j.prompt&&(_==null?void 0:_.aspectRatio)===j.aspectRatio&&ia(_==null?void 0:_.images,j.images)?y:(c=!0,{...y,first_frame_draft:j})}if(n==="last"){const _=y.last_frame_draft,j={prompt:l.prompt,images:g,aspectRatio:l.aspectRatio};return(_==null?void 0:_.prompt)===j.prompt&&(_==null?void 0:_.aspectRatio)===j.aspectRatio&&ia(_==null?void 0:_.images,j.images)?y:(c=!0,{...y,last_frame_draft:j})}const S=y.video_draft,O={prompt:l.prompt,images:g,duration:l.duration,size:l.size};return(S==null?void 0:S.prompt)===O.prompt&&(S==null?void 0:S.duration)===O.duration&&(S==null?void 0:S.size)===O.size&&ia(S==null?void 0:S.images,O.images)?y:(c=!0,{...y,video_draft:O})});c&&await x(E)},[x,ia,Ie]),pe=r.useMemo(()=>({totalDuration:e.selectedClipDuration||30,productExposureDuration:0,productExposureRatio:0,shotCount:u.length,firstProductAppearance:0,aspect_ratio:p,video_style:e.videoStyle||"",bgm_mood:"",suggestion:"",shots:u}),[e,u,p]),fe=r.useMemo(()=>({prompt:e.creationPrompt||"",videoStyle:e.videoStyle||""}),[e]),ba=r.useCallback(s=>{const n=s.first_frame_prompt||s.description||"";if(!n)return;De.trackUIInteraction({area:"popular_mv_tool",action:"shot_first_frame_generation_opened",control:"generate_first_frame",source:"mv_creator_generate_page",metadata:{shotId:s.id,hasDraft:!!s.first_frame_draft}});const l=Va(n,pe,fe),c=s.first_frame_draft,g=`mv_${e.id}_shot${s.id}_first`;D(la.aiImageGeneration,{initialPrompt:(c==null?void 0:c.prompt)||l,batchId:g,initialAspectRatio:(c==null?void 0:c.aspectRatio)??Oe,initialModel:k||void 0,initialModelRef:L,autoInsertToCanvas:!1,initialImages:c?Ie(c.images||[]):s.generated_first_frame_url?[{url:s.generated_first_frame_url,name:"首帧"}]:void 0,onDraftChange:E=>Re(s.id,"first",E)})},[e.id,pe,fe,D,Oe,k,L,Re,Ie]),Qe=r.useCallback((s,n)=>{var l;return s.generated_last_frame_url?s.generated_last_frame_url:(l=u[n+1])==null?void 0:l.generated_first_frame_url},[u]),oa=r.useCallback((s,n)=>{const l=s.last_frame_prompt||s.description||"";if(!l)return;De.trackUIInteraction({area:"popular_mv_tool",action:"shot_last_frame_generation_opened",control:"generate_last_frame",source:"mv_creator_generate_page",metadata:{shotId:s.id,shotIndex:n,hasDraft:!!s.last_frame_draft}});const c=Va(l,pe,fe),g=s.last_frame_draft,E=`mv_${e.id}_shot${s.id}_last`,y=Qe(s,n);D(la.aiImageGeneration,{initialPrompt:(g==null?void 0:g.prompt)||c,batchId:E,initialAspectRatio:(g==null?void 0:g.aspectRatio)??Oe,initialModel:k||void 0,initialModelRef:L,autoInsertToCanvas:!1,initialImages:g?Ie(g.images||[]):y?[{url:y,name:"尾帧"}]:void 0,onDraftChange:S=>Re(s.id,"last",S)})},[e.id,pe,fe,D,Qe,Oe,k,L,Re,Ie]),xa=r.useCallback(async(s,n)=>{const l=Da(s,pe,fe);if(!l)return;De.trackUIInteraction({area:"popular_mv_tool",action:"shot_video_generation_opened",control:"generate_shot_video",source:"mv_creator_generate_page",metadata:{shotId:s.id,shotIndex:n,hasDraft:!!s.video_draft}});const c=s.video_draft,g=`mv_${e.id}_shot${s.id}_video`,E=[];s.generated_first_frame_url&&E.push({url:s.generated_first_frame_url,name:"首帧"});const y=Qe(s,n);y&&E.push({url:y,name:"尾帧"});const S=Ie((c==null?void 0:c.images)||[]),O=S.length>0?S:E.length>0?E:void 0,_=_e(Q),j=String((c==null?void 0:c.duration)??se),B=_.durationOptions.some(F=>F.value===j)?(c==null?void 0:c.duration)??se:void 0,H=_.sizeOptions.some(F=>F.value===((c==null?void 0:c.size)??K))?(c==null?void 0:c.size)??K:void 0;D(la.aiVideoGeneration,{initialPrompt:(c==null?void 0:c.prompt)||l,initialImages:O,initialDuration:B,initialSize:H,initialModel:Q||void 0,initialModelRef:ee,batchId:g,autoInsertToCanvas:!1,onDraftChange:F=>Re(s.id,"video",F)})},[e.id,pe,fe,se,K,Q,ee,D,Qe,Re,Ie]),ya=r.useCallback((s,n)=>{const l=n==="first"?"generated_first_frame_url":n==="last"?"generated_last_frame_url":"generated_video_url",c=u.map(g=>g.id===s?{...g,[l]:void 0,suppressed_generated_urls:g[l]?{...g.suppressed_generated_urls||{},[n]:g[l]}:g.suppressed_generated_urls}:g);ae(e.id,Te(e,c)).then(g=>{m(g),i({...e,editedShots:c})})},[e,u,i,m]),Ba=r.useCallback(async(s,n,l)=>{if(!s.generated_video_url)return;const c=l==="next-first"?u[n+1]:u[n-1];if(!c)return;const g=l==="next-first"?"first":"last",E=l==="next-first"?"last":"first",y=await da(s.generated_video_url,c.id,g,E);if(!y)return;const S=g==="first"?"generated_first_frame_url":"generated_last_frame_url",O=u.map(_=>_.id===c.id?{..._,[S]:y}:_);ae(e.id,Te(e,O)).then(_=>{m(_),i({...e,editedShots:O})})},[e,u,i,m]),Wa=r.useCallback(async(s,n,l)=>{const c=s[n];if(!c||c.generated_video_url===l)return s;const g=s.map((E,y)=>y===n?{...E,generated_video_url:l}:E);return await x(g),g},[x]),Ka=r.useCallback(async(s,n,l)=>{var H,F,ke;const c=s.first_frame_prompt||s.description||"";if(!c)return null;let g=Va(c,pe,fe);const E=[];if(s.character_ids&&s.character_ids.length>0)for(const ge of s.character_ids){const W=l.find(ve=>ve.id===ge);W!=null&&W.description&&E.push(`${W.name}: ${W.description}`)}E.length>0&&(g+=`
|
|
149
|
+
}`}const Ta="mv-creator:creation-prompt",Ia="mv-creator:video-model",qa="mv-creator:storyboard-model",ss="gemini-2.5-pro";function or(){try{return sessionStorage.getItem(Ta)||""}catch{return""}}function cr(e){try{e?sessionStorage.setItem(Ta,e):sessionStorage.removeItem(Ta)}catch{}}const lr=({existingRecord:e,onComplete:i,onRecordsChange:m,onNext:h})=>{const[u,p]=r.useState(()=>(e==null?void 0:e.creationPrompt)||or()),[b,D]=r.useState((e==null?void 0:e.selectedClipId)||null),[P,w]=r.useState(!1),v=Fe("video"),[f,I]=r.useState(()=>(e==null?void 0:e.videoModel)||ue(Ia,"veo3").modelId),[U,R]=r.useState(()=>(e==null?void 0:e.videoModelRef)||ue(Ia,"veo3").modelRef),d=r.useMemo(()=>_e(f),[f]),[N,z]=r.useState(()=>(e==null?void 0:e.segmentDuration)||parseInt(d.defaultDuration,10)||8),M=r.useMemo(()=>(d.durationOptions||[]).map(t=>({value:parseInt(t.value,10),label:t.label})),[d]),V=Fe("text"),q=r.useMemo(()=>V.filter(t=>/^gemini/i.test(t.id)),[V]),[k,$]=r.useState(()=>ue(qa,ss).modelId),[H,A]=r.useState(()=>ue(qa,ss).modelRef),[Q,Pe]=r.useState(!1),[ee,ie]=r.useState(""),W=r.useRef(!1);r.useEffect(()=>{e&&(p(e.creationPrompt||""),D(e.selectedClipId||null))},[e]);const oe=(e==null?void 0:e.editedShots)||[];r.useEffect(()=>{oe.length>0&&w(!0)},[oe.length]),r.useEffect(()=>{e||cr(u)},[u,e]),r.useEffect(()=>{var J;const t=e==null?void 0:e.pendingStoryboardTaskId;if(!t){ie("");return}const x=de.getTask(t);if((x==null?void 0:x.status)==="failed"){ie(`分镜生成失败: ${((J=x.error)==null?void 0:J.message)||"未知错误"}`);return}if((x==null?void 0:x.status)==="completed"){ie("");return}const Y=de.observeTaskUpdates().subscribe(te=>{var ne;te.task.id===t&&(te.task.status==="failed"?ie(`分镜生成失败: ${((ne=te.task.error)==null?void 0:ne.message)||"未知错误"}`):te.task.status==="completed"&&ie(""))});return()=>Y.unsubscribe()},[e==null?void 0:e.pendingStoryboardTaskId]);const[se,be]=r.useState([]);r.useEffect(()=>{let t=!1;return Ps.getAllTasks({type:Ce.AUDIO,status:Ne.COMPLETED,includeArchived:!0}).then(x=>{if(t)return;const Y=[];for(const J of x){const te=Ks(J);for(const ne of te)Y.push({...ne,prompt:String(J.params.prompt||"")})}be(Y)}).catch(()=>{}),()=>{t=!0}},[]);const G=r.useMemo(()=>{var t;return b&&(((t=e==null?void 0:e.generatedClips)==null?void 0:t.find(x=>x.clipId===b))||se.find(x=>x.clipId===b))||null},[b,e==null?void 0:e.generatedClips,se]),ce=(e==null?void 0:e.selectedClipDuration)||(G==null?void 0:G.duration)||30,xe=r.useCallback(()=>{De.trackUIInteraction({area:"popular_mv_tool",action:"music_tool_opened",control:"open_music_tool",source:"mv_creator_analyze_page",metadata:{existingAudioClipsCount:se.length}});const t=Ja.getPrimaryToolState("mv-creator"),x=t==null?void 0:t.position,Y=x?{x:x.x+((t==null?void 0:t.tool.defaultWidth)||520)+16,y:x.y}:void 0;Ja.openTool(Ss.manifest,{launchMode:"reuse",position:Y})},[]),Ye=r.useCallback(async t=>{var Y;De.trackUIInteraction({area:"popular_mv_tool",action:"music_clip_selected",control:"select_music_clip",source:"mv_creator_analyze_page",metadata:{hasClipId:!!t.clipId,hasAudioUrl:!!t.audioUrl,duration:t.duration}}),t.prompt&&!u.trim()&&p(t.prompt);let x=e||null;if(x){const J=x.generatedClips||[],Ue={generatedClips:J.some(Me=>Me.clipId===t.clipId)?J:[...J,t],selectedClipId:t.clipId,selectedClipDuration:t.duration??null,selectedClipAudioUrl:t.audioUrl,musicTitle:x.musicTitle||t.title||""},$e=await ae(x.id,Ue);m($e),i({...x,...Ue})}else{const J=t.title||((Y=t.prompt)==null?void 0:Y.slice(0,20))||"已有音频";x={id:ts(),createdAt:Date.now(),creationPrompt:u.trim()||t.prompt||"",sourceLabel:J,starred:!1,musicTitle:t.title||"",generatedClips:[t],selectedClipId:t.clipId,selectedClipDuration:t.duration??null,selectedClipAudioUrl:t.audioUrl};const te=await er(x);m(te),i(x)}D(t.clipId)},[e,u,i,m]),ye=r.useCallback((t,x)=>{I(t),R(x||null),Be(Ia,t,x);const Y=_e(t);z(parseInt(Y.defaultDuration,10)||8)},[]),Ee=r.useCallback((t,x)=>{$(t),A(x||null),Be(qa,t,x)},[]),Se=r.useCallback(async()=>{if(!(W.current||!e)){W.current=!0,De.trackUIInteraction({area:"popular_mv_tool",action:"storyboard_generation_started",control:"generate_storyboard",source:"mv_creator_analyze_page",metadata:{hasSelectedClip:!!(G!=null&&G.audioUrl),clipDuration:ce,segmentDuration:N,hasStoryboardModelRef:!!H,hasVideoModelRef:!!U}}),Pe(!0),ie("");try{const t=nr({creationPrompt:u||e.creationPrompt,musicTitle:e.musicTitle,musicStyleTags:e.musicStyleTags,musicLyrics:e.musicLyrics,clipDuration:ce,videoModel:f,segmentDuration:N,hasAudio:!!(G!=null&&G.audioUrl)}),Y={pendingStoryboardTaskId:de.createTask({prompt:t,model:k,modelRef:H,mvCreatorAction:"storyboard",mvCreatorRecordId:e.id,audioCacheUrl:G==null?void 0:G.audioUrl},Ce.CHAT).id,creationPrompt:u||e.creationPrompt,videoModel:f,videoModelRef:U,segmentDuration:N},J=await ae(e.id,Y);m(J),i({...e,...Y}),ie("分镜规划任务已提交,等待 AI 生成...")}catch(t){ie(t.message||"提交失败")}finally{Pe(!1),W.current=!1}}},[e,u,ce,f,U,N,k,H,G,i,m]);return a.jsxDEV("div",{className:"va-page",children:[oe.length>0&&a.jsxDEV("button",{className:"va-collapse-toggle",onClick:()=>w(t=>!t),children:P?"▶ 展开配置":"▼ 收起配置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:316,columnNumber:9},void 0),!P&&a.jsxDEV(a.Fragment,{children:[a.jsxDEV("div",{className:"ma-card ma-card--grow",children:[a.jsxDEV("div",{className:"ma-card-header",children:[a.jsxDEV("span",{children:["选择配乐 (",se.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:329,columnNumber:15},void 0),a.jsxDEV("button",{className:"ma-chip ma-chip--accent",style:{cursor:"pointer",fontSize:"11px",padding:"2px 8px"},onClick:xe,children:"+ 生成新音乐"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:330,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:328,columnNumber:13},void 0),se.length===0?a.jsxDEV("div",{className:"ma-hint",children:["暂无已完成的音频,",a.jsxDEV("button",{onClick:xe,style:{background:"none",border:"none",color:"#E67E22",cursor:"pointer",textDecoration:"underline",padding:0,font:"inherit"},children:"去生成音乐"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:341,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:339,columnNumber:15},void 0):a.jsxDEV("div",{className:"ma-clips-gallery",children:se.map((t,x)=>{var Y;return a.jsxDEV("div",{className:`ma-clip-row ${b===t.clipId?"is-selected":""}`,onClick:()=>Ye(t),style:{cursor:"pointer"},children:[t.imageUrl?a.jsxDEV("img",{src:t.imageUrl,alt:"",className:"ma-clip-thumb",referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:362,columnNumber:23},void 0):a.jsxDEV("div",{className:"ma-clip-thumb ma-clip-thumb--placeholder",children:"♪"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:364,columnNumber:23},void 0),a.jsxDEV("div",{className:"ma-clip-meta",children:[a.jsxDEV("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[a.jsxDEV("span",{className:"ma-clip-title",children:t.title||((Y=t.prompt)==null?void 0:Y.slice(0,30))||t.clipId},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:368,columnNumber:25},void 0),b===t.clipId&&a.jsxDEV("span",{className:"ma-chip ma-chip--accent",style:{flexShrink:0,padding:"0 4px",fontSize:"10px",height:"16px",lineHeight:"14px"},children:"已选"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:370,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:367,columnNumber:23},void 0),t.duration!=null&&a.jsxDEV("span",{className:"ma-clip-duration",children:[Math.round(t.duration),"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:374,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:366,columnNumber:21},void 0),a.jsxDEV("audio",{controls:!0,src:t.audioUrl,preload:"metadata",className:"ma-clip-player",onClick:J=>J.stopPropagation()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:377,columnNumber:21},void 0)]},`${t.clipId||x}`,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:355,columnNumber:19},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:353,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:327,columnNumber:11},void 0),a.jsxDEV("div",{className:"ma-card",children:[a.jsxDEV("div",{className:"ma-card-header",children:a.jsxDEV("span",{children:"MV 创意描述"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:386,columnNumber:45},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:386,columnNumber:13},void 0),a.jsxDEV("textarea",{className:"ma-textarea",rows:2,placeholder:"描述你想要的 MV 主题、风格、情绪、画面...",value:u,onChange:t=>p(t.target.value)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:387,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:385,columnNumber:11},void 0),b&&a.jsxDEV("div",{className:"ma-card",children:[a.jsxDEV("div",{className:"ma-card-header",children:a.jsxDEV("span",{children:"视频参数"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:399,columnNumber:47},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:399,columnNumber:15},void 0),a.jsxDEV("div",{className:"va-model-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:401,columnNumber:17},void 0),a.jsxDEV(Ke,{models:v,selectedModel:f,selectedSelectionKey:We(f,U),onSelect:(t,x)=>ye(t,x),variant:"form",placement:"down"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:402,columnNumber:17},void 0),a.jsxDEV("div",{className:"va-segment-duration-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"单段"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:411,columnNumber:19},void 0),a.jsxDEV("select",{className:"va-form-select",value:String(N),onChange:t=>z(parseInt(t.target.value,10)),disabled:M.length<=1,children:M.map(t=>a.jsxDEV("option",{value:t.value,children:t.label},t.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:419,columnNumber:23},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:412,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:410,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:400,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:398,columnNumber:13},void 0),b&&a.jsxDEV("div",{className:"ma-card",children:[a.jsxDEV("div",{className:"ma-card-header",children:a.jsxDEV("span",{children:"AI 分镜模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:430,columnNumber:47},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:430,columnNumber:15},void 0),a.jsxDEV(Ke,{models:q,selectedModel:k,selectedSelectionKey:We(k,H),onSelect:(t,x)=>Ee(t,x),variant:"form",placement:"down"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:431,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:429,columnNumber:13},void 0),ee&&a.jsxDEV("div",{className:"ma-progress",children:ee},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:442,columnNumber:23},void 0),b&&a.jsxDEV("div",{className:"va-page-actions",children:a.jsxDEV("button",{className:"va-btn-primary",onClick:Se,disabled:Q||!e,children:Q?"提交中...":oe.length>0?"重新生成分镜":"AI 生成分镜"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:447,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:446,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:325,columnNumber:9},void 0),oe.length>0&&a.jsxDEV(a.Fragment,{children:[G&&P&&a.jsxDEV("div",{className:"ma-card",children:a.jsxDEV("div",{className:"ma-clip-row is-selected",children:[G.imageUrl?a.jsxDEV("img",{src:G.imageUrl,alt:"",className:"ma-clip-thumb",referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:468,columnNumber:19},void 0):a.jsxDEV("div",{className:"ma-clip-thumb ma-clip-thumb--placeholder",children:"♪"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:470,columnNumber:19},void 0),a.jsxDEV("div",{className:"ma-clip-meta",children:[a.jsxDEV("span",{className:"ma-clip-title",children:G.title||G.clipId},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:473,columnNumber:19},void 0),a.jsxDEV("span",{className:"ma-clip-duration",children:[Math.round(ce),"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:474,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:472,columnNumber:17},void 0),a.jsxDEV("audio",{controls:!0,src:G.audioUrl,preload:"metadata",className:"ma-clip-player"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:476,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:466,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:465,columnNumber:13},void 0),(e==null?void 0:e.characters)&&e.characters.length>0&&a.jsxDEV("div",{className:"ma-card",children:[a.jsxDEV("div",{className:"ma-card-header",children:a.jsxDEV("span",{children:["角色(",e.characters.length," 个)"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:484,columnNumber:47},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:484,columnNumber:15},void 0),a.jsxDEV("div",{className:"va-characters",children:e.characters.map(t=>a.jsxDEV("div",{className:"va-character-item",children:a.jsxDEV("div",{className:"va-character-info",children:[a.jsxDEV("span",{className:"va-character-name",children:t.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:489,columnNumber:23},void 0),a.jsxDEV("span",{className:"va-character-desc",children:t.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:490,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:488,columnNumber:21},void 0)},t.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:487,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:485,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:483,columnNumber:13},void 0),a.jsxDEV("div",{className:"ma-card",children:[a.jsxDEV("div",{className:"ma-card-header",children:a.jsxDEV("span",{children:["分镜脚本(",oe.length," 个镜头)"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:500,columnNumber:45},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:500,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-shots",children:oe.map((t,x)=>a.jsxDEV(za,{shot:t,index:x,compact:!0},t.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:503,columnNumber:17},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:501,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:499,columnNumber:11},void 0),h&&a.jsxDEV("div",{className:"va-page-actions",children:a.jsxDEV("button",{className:"va-btn-primary",onClick:h,children:"下一步:编辑脚本 →"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:511,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:510,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:462,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/AnalyzePage.tsx",lineNumber:313,columnNumber:5},void 0)};function Oa(e){return qs(e,"mvCreatorAction",["storyboard","rewrite"])}function ur(e){return Oa(e)!==null}function dr(e){var w,v;let i=os(e);if(!i)throw new Error("分镜任务缺少结果内容");const m=i.match(/```(?:json)?\s*([\s\S]*?)\s*```/);m&&(i=m[1].trim());const h=i.match(/\{[\s\S]*\}/);if(h)try{const f=JSON.parse(h[0]);if(Array.isArray(f.shots)){const I=f.shots.map((R,d)=>({...R,id:R.id||`shot_${d+1}`})),U=Array.isArray(f.characters)?f.characters:[];return{shots:I,characters:U}}}catch{}const u=i.match(/\[[\s\S]*\]/);if(u)try{return{shots:JSON.parse(u[0]).map((I,U)=>({...I,id:I.id||`shot_${U+1}`})),characters:[]}}catch{}const p=[],b=[],D=/\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}/g;let P;for(;(P=D.exec(i))!==null;)try{const f=JSON.parse(P[0]);f&&typeof f=="object"&&((w=f.id)!=null&&w.startsWith("char_")&&f.name&&f.description?b.push(f):((v=f.id)!=null&&v.startsWith("shot_")||f.startTime!==void 0)&&p.push({...f,id:f.id||`shot_${p.length+1}`}))}catch{}if(p.length>0)return{shots:p,characters:b};throw new Error("响应中未找到有效 JSON(可能因输出过长被截断)")}async function mr(e){if(e.status!=="completed"||Oa(e)!=="storyboard")return null;const i=ns(e,"mvCreatorRecordId");if(!i)return null;const h=(await va()).find(w=>w.id===i);if(!h||h.pendingStoryboardTaskId!==e.id)return null;const{shots:u,characters:p}=dr(e),b=(h.storyboardVersions||[]).length,D=ls(u,`AI 分镜 #${b+1}`,e.params.prompt),P=us(h,D);return is(h,{editedShots:u,pendingStoryboardTaskId:null,storyboardGeneratedAt:Date.now(),...p.length>0?{characters:p}:{},...P},ae)}async function $a(e){if(e.status!=="completed"||Oa(e)!=="rewrite")return null;const i=ns(e,"mvCreatorRecordId");if(!i)return null;const h=(await va()).find(f=>f.id===i);if(!h||h.pendingRewriteTaskId!==e.id)return null;const u=os(e);if(!u)return null;let p,b=null;const D=u.match(/\{[\s\S]*\}/);if(D)try{const f=JSON.parse(D[0]);if(Array.isArray(f.shots))p=f.shots.map((I,U)=>({...I,id:I.id||`shot_${U+1}`})),Array.isArray(f.characters)&&f.characters.length>0&&(b=f.characters);else{const I=wa(u),U=h.editedShots||[];p=ka(U,I)}}catch{const f=wa(u),I=h.editedShots||[];p=ka(I,f)}else{const f=wa(u),I=h.editedShots||[];p=ka(I,f)}const P=(h.storyboardVersions||[]).length,w=ls(p,`AI 改编 #${P+1}`,e.params.prompt),v=us(h,w);return is(h,{editedShots:p,pendingRewriteTaskId:null,storyboardGeneratedAt:Date.now(),...b?{characters:b}:{},...v},ae)}function pr(e){if(e.type!==Ce.AUDIO)return null;const i=e.params.batchId;return i?Us(i,{prefix:"mv_",marker:"_music_"}):null}async function fr(e,i){return Is(e,i,{loadRecords:va,updateRecord:ae})}function Le(e){e.style.height="auto",e.style.height=e.scrollHeight+"px"}function aa(e){e&&Le(e)}function sa(e,i=30){if(!e)return 1;const m=e.split(`
|
|
150
|
+
`);let h=0;for(const u of m)h+=Math.max(1,Math.ceil(u.length/i));return Math.max(1,h)}const gr=["固定镜头 (Static)","缓慢推近 (Dolly In)","缓慢拉远 (Dolly Out)","水平平移 (Pan)","垂直摇移 (Tilt)","跟随拍摄 (Follow)","手持感 (Handheld)","环绕拍摄 (Orbit)","升降镜头 (Crane)","快速推移 (Zoom In)","快速拉远 (Zoom Out)","航拍俯冲 (Drone Dive)"],vr=[{label:"硬切 (cut)",value:"cut"},{label:"交叉溶解 (dissolve)",value:"dissolve"},{label:"匹配切 (match_cut)",value:"match_cut"},{label:"淡出到黑 (fade_to_black)",value:"fade_to_black"}],Ca="mv-creator:script-model",rs="gemini-2.5-pro",hr=({record:e,onRecordUpdate:i,onRecordsChange:m,onNext:h})=>{var Me,ra;const[u,p]=r.useState(e.editedShots||[]),[b,D]=r.useState(e.rewritePrompt||""),[P,w]=r.useState(!1),[v,f]=r.useState(""),[I,U]=r.useState(""),[R,d]=r.useState(e.pendingRewriteTaskId||null),[N,z]=r.useState(!1),M=r.useRef(null),V=r.useRef(!1),q=Fe("video"),k="mv-creator:video-model",[$,H]=r.useState(()=>e.videoModel||ue(k,"veo3").modelId),[A,Q]=r.useState(()=>e.videoModelRef||ue(k,"veo3").modelRef),Pe=r.useMemo(()=>_e($),[$]),[ee,ie]=r.useState(()=>e.segmentDuration||parseInt(Pe.defaultDuration,10)||8),W=r.useMemo(()=>(Pe.durationOptions||[]).map(o=>({value:parseInt(o.value,10),label:o.label})),[Pe]),oe=e.selectedClipDuration||30,se=r.useMemo(()=>{const o=[{label:`${ee}秒`,value:String(ee)}];return Ga(oe,o)},[oe,ee]),[be,G]=r.useState(e.videoStyle||""),ce=r.useCallback((o,T)=>{H(o),Q(T||null),Be(k,o,T);const C=_e(o),X=parseInt(C.defaultDuration,10)||8;ie(X)},[]),xe=r.useCallback(async o=>{const T=await ae(e.id,o);m(T),i({...e,...o})},[e,i,m]),Ye=r.useCallback((o,T)=>{const X=(e.characters||[]).map(me=>me.id===o?{...me,description:T}:me);xe({characters:X})},[e,xe]),ye=Fe("text"),[Ee,Se]=r.useState(()=>ue(Ca,rs).modelId),[t,x]=r.useState(()=>ue(Ca,rs).modelRef),Y=r.useCallback((o,T)=>{Se(o),x(T||null),Be(Ca,o,T)},[]),J=r.useRef();r.useEffect(()=>(clearTimeout(J.current),J.current=setTimeout(async()=>{const o=await ae(e.id,{rewritePrompt:b,videoModel:$,videoModelRef:A,segmentDuration:ee,videoStyle:be});m(o),i({...e,rewritePrompt:b,videoModel:$,videoModelRef:A,segmentDuration:ee,videoStyle:be})},500),()=>clearTimeout(J.current)),[b,$,A,ee,be]),r.useEffect(()=>{p(e.editedShots||[])},[e.editedShots]);const te=r.useCallback(async o=>{p(o);const T=Te(e,o),C=await ae(e.id,T);m(C),i({...e,...T})},[e,i,m]),ne=r.useCallback((o,T,C)=>{const X=u.map(me=>me.id===o?{...me,[T]:C}:me);te(X)},[u,te]),Ue=r.useCallback(async()=>{if(!V.current){V.current=!0,w(!0),U(""),De.trackUIInteraction({area:"popular_mv_tool",action:"script_rewrite_started",control:"rewrite_script",source:"mv_creator_script_page",metadata:{shotCount:u.length,hasRewritePrompt:!!b.trim(),segmentDuration:ee,hasModelRef:!!t}});try{const o=ir({record:e,currentShots:u,rewritePrompt:b,videoModel:$,segmentDuration:ee,videoStyle:be}),T=de.createTask({prompt:o,model:Ee,modelRef:t,mvCreatorAction:"rewrite",mvCreatorRecordId:e.id},Ce.CHAT);d(T.id);const C=await ae(e.id,{pendingRewriteTaskId:T.id});m(C),i({...e,pendingRewriteTaskId:T.id}),f("AI 改编中...")}catch(o){U(o.message||"提交失败")}finally{w(!1),V.current=!1}}},[e,u,b,Ee,t,i,m]);r.useEffect(()=>{var C;if(!R)return;const o=de.getTask(R);if((o==null?void 0:o.status)==="failed"){d(null),f(""),U(((C=o.error)==null?void 0:C.message)||"改编失败");return}if((o==null?void 0:o.status)==="completed"){$a(o).then(X=>{X&&(m(X.records),i(X.record),p(X.record.editedShots||[]))}).finally(()=>{d(null),f("")});return}typeof(o==null?void 0:o.progress)=="number"&&f(`AI 改编中 ${Math.round(o.progress)}%`);const T=de.observeTaskUpdates().subscribe(X=>{var me;if(X.task.id===R){if(X.task.status==="failed"){d(null),f(""),U(((me=X.task.error)==null?void 0:me.message)||"改编失败"),ae(e.id,{pendingRewriteTaskId:null}).then(he=>{m(he),i({...e,pendingRewriteTaskId:null})});return}if(X.task.status==="completed"){$a(X.task).then(he=>{he&&(m(he.records),i(he.record),p(he.record.editedShots||[]))}).catch(he=>{U(he.message||"改编结果同步失败")}).finally(()=>{d(null),f("")});return}typeof X.task.progress=="number"&&f(`AI 改编中 ${Math.round(X.task.progress)}%`)}});return()=>T.unsubscribe()},[R,e,i,m]);const $e=r.useCallback(async o=>{const T=tr(e,o);if(!T)return;z(!1),p(T.editedShots);const C=await ae(e.id,T);m(C),i({...e,...T})},[e,i,m]);return r.useEffect(()=>{if(!N)return;const o=T=>{M.current&&!M.current.contains(T.target)&&z(!1)};return document.addEventListener("mousedown",o),()=>document.removeEventListener("mousedown",o)},[N]),a.jsxDEV("div",{className:"va-page",children:[a.jsxDEV("div",{className:"va-product-form",children:[a.jsxDEV("textarea",{ref:aa,className:"va-form-textarea va-auto-resize",placeholder:"输入改编提示词,描述你想要的调整方向...",rows:Math.max(3,sa(b)),value:b,onChange:o=>D(o.target.value),onInput:o=>Le(o.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:330,columnNumber:9},void 0),a.jsxDEV("div",{className:"va-model-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"改编模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:340,columnNumber:11},void 0),a.jsxDEV(Ke,{variant:"form",selectedModel:Ee,selectedSelectionKey:We(Ee,t),onSelect:Y,models:ye,placement:"down",disabled:!!R,placeholder:"选择文本模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:341,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:339,columnNumber:9},void 0),a.jsxDEV("div",{className:"va-model-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:353,columnNumber:11},void 0),a.jsxDEV(Ke,{variant:"form",selectedModel:$,selectedSelectionKey:We($,A),onSelect:ce,models:q,placement:"down",disabled:!!R,placeholder:"选择视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:354,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-segment-duration-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"单段"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:365,columnNumber:13},void 0),a.jsxDEV("select",{className:"va-form-select",value:String(ee),onChange:o=>ie(parseInt(o.target.value,10)),disabled:W.length<=1,children:W.map(o=>a.jsxDEV("option",{value:o.value,children:o.label},o.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:373,columnNumber:17},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:366,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:364,columnNumber:11},void 0),se.overflow>0&&a.jsxDEV("span",{className:"va-duration-overflow",children:["实际 ",se.actualTotal,"s(+",parseFloat(se.overflow.toFixed(2)),"s)"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:378,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:352,columnNumber:9},void 0),a.jsxDEV("div",{className:"va-form-row",children:a.jsxDEV("div",{style:{flex:1},children:[a.jsxDEV("label",{className:"va-edit-label",children:"画面风格"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:386,columnNumber:13},void 0),a.jsxDEV(_a,{className:"va-style-combo",value:be,onChange:G,options:Ms,placeholder:Cs},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:387,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:385,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:384,columnNumber:9},void 0),a.jsxDEV("div",{className:"va-version-row",children:[a.jsxDEV("button",{className:"va-analyze-btn",style:{flex:1},onClick:Ue,disabled:P||!!R,children:P||R?v||"AI 改编中...":"AI 改编脚本"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:397,columnNumber:11},void 0),e.storyboardVersions&&e.storyboardVersions.length>0&&a.jsxDEV("div",{className:"va-version-select",ref:M,children:[a.jsxDEV("button",{className:"va-version-btn",onClick:()=>z(o=>!o),children:[e.activeVersionId===fa?"原始版本":((Me=e.storyboardVersions.find(o=>o.id===e.activeVersionId))==null?void 0:Me.label)||`v${e.storyboardVersions.length}`," ▾"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:407,columnNumber:15},void 0),N&&a.jsxDEV("div",{className:"va-version-menu",children:[e.storyboardVersions.map(o=>a.jsxDEV("div",{className:`va-version-item ${o.id===e.activeVersionId?"active":""}`,onClick:()=>$e(o.id),children:[a.jsxDEV("span",{children:o.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:423,columnNumber:23},void 0),o.prompt&&a.jsxDEV("span",{className:"va-version-prompt",children:o.prompt.length>30?o.prompt.slice(0,30)+"...":o.prompt},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:424,columnNumber:36},void 0),a.jsxDEV("span",{className:"va-version-time",children:[o.shots.length," 镜头 · ",new Date(o.createdAt).toLocaleTimeString()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:425,columnNumber:23},void 0)]},o.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:418,columnNumber:21},void 0)),a.jsxDEV("div",{className:`va-version-item ${e.activeVersionId===fa||!e.activeVersionId?"active":""}`,onClick:()=>$e(fa),children:[a.jsxDEV("span",{children:"原始版本"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:432,columnNumber:21},void 0),a.jsxDEV("span",{className:"va-version-time",children:[(((ra=e.storyboardVersions[e.storyboardVersions.length-1])==null?void 0:ra.shots)||[]).length," 镜头"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:433,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:428,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:416,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:406,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:396,columnNumber:9},void 0),I&&a.jsxDEV("div",{className:"va-error",children:I},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:440,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:329,columnNumber:7},void 0),v&&!P&&a.jsxDEV("div",{className:"ma-progress",children:v},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:443,columnNumber:41},void 0),a.jsxDEV(As,{characters:e.characters||[],onChange:Ye},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:445,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-shots",children:u.map((o,T)=>a.jsxDEV(za,{shot:o,index:T,compact:!0,children:a.jsxDEV("div",{className:"va-edit-fields",children:[a.jsxDEV("label",{className:"va-edit-label",children:"画面描述"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:455,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:aa,className:"va-edit-textarea va-auto-resize",rows:sa(o.description),value:o.description||"",onChange:C=>ne(o.id,"description",C.target.value),onInput:C=>Le(C.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:456,columnNumber:15},void 0),a.jsxDEV("label",{className:"va-edit-label",children:"旁白"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:457,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:aa,className:"va-edit-textarea va-auto-resize",rows:sa(o.narration),value:o.narration||"",onChange:C=>ne(o.id,"narration",C.target.value),onInput:C=>Le(C.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:458,columnNumber:15},void 0),a.jsxDEV("label",{className:"va-edit-label",children:"运镜方式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:459,columnNumber:15},void 0),a.jsxDEV(_a,{value:o.camera_movement||"",onChange:C=>ne(o.id,"camera_movement",C),options:gr,placeholder:"选择或输入运镜方式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:460,columnNumber:15},void 0),a.jsxDEV("label",{className:"va-edit-label",children:"首帧 Prompt"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:461,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:aa,className:"va-edit-textarea va-auto-resize",rows:sa(o.first_frame_prompt),value:o.first_frame_prompt||"",onChange:C=>ne(o.id,"first_frame_prompt",C.target.value),onInput:C=>Le(C.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:462,columnNumber:15},void 0),a.jsxDEV("label",{className:"va-edit-label",children:"尾帧 Prompt"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:463,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:aa,className:"va-edit-textarea va-auto-resize",rows:sa(o.last_frame_prompt),value:o.last_frame_prompt||"",onChange:C=>ne(o.id,"last_frame_prompt",C.target.value),onInput:C=>Le(C.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:464,columnNumber:15},void 0),a.jsxDEV("label",{className:"va-edit-label",children:"转场方式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:465,columnNumber:15},void 0),a.jsxDEV(_a,{value:o.transition_hint||"",onChange:C=>ne(o.id,"transition_hint",C),options:vr,placeholder:"选择转场方式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:466,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:454,columnNumber:13},void 0)},o.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:453,columnNumber:11},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:451,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-page-actions",children:a.jsxDEV("button",{className:"va-btn-primary",onClick:h,children:"下一步:批量生成 →"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:473,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:472,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/ScriptPage.tsx",lineNumber:327,columnNumber:5},void 0)};function Nr(e,i,m){var u,p;const h=e.selectedClipAudioUrl||((p=(u=e.generatedClips)==null?void 0:u.find(b=>b.clipId===e.selectedClipId))==null?void 0:p.audioUrl)||null;return{recordId:e.id,fileNamePrefix:"mv",zipBaseName:"mv_assets",scriptMarkdown:ds(e,i),recordMeta:{id:e.id,creationPrompt:e.creationPrompt||"",musicTitle:e.musicTitle||"",musicStyleTags:e.musicStyleTags||[],aspectRatio:e.aspectRatio||"16x9",videoStyle:e.videoStyle||"",shotCount:i.length},shots:i,assets:m,audioAsset:h?{url:h,fallbackExtension:"mp3",downloadErrorMessage:"音乐下载失败"}:{url:"",missingErrorMessage:"缺少已选中的音乐文件"}}}function br(e,i){return Ys(i,e.characters||[])}const Ma="mv-creator:image-model",ma="mv-creator:gen-video-model",Aa=({size:e=14})=>a.jsxDEV("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",width:e,height:e,"aria-hidden":"true",children:[a.jsxDEV("rect",{x:"3",y:"3",width:"8",height:"8",rx:"1.5"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:62,columnNumber:5},void 0),a.jsxDEV("circle",{cx:"17",cy:"7",r:"4"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:63,columnNumber:5},void 0),a.jsxDEV("rect",{x:"3",y:"13",width:"8",height:"8",rx:"1.5"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:64,columnNumber:5},void 0),a.jsxDEV("rect",{x:"13",y:"13",width:"8",height:"8",rx:"1.5"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:65,columnNumber:5},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:51,columnNumber:3},void 0),xr=({record:e,onRecordUpdate:i,onRecordsChange:m,onRestart:h})=>{const u=r.useMemo(()=>e.editedShots||[],[e.editedShots]),p=e.aspectRatio||"16x9",b=e.batchId||`mv_${e.id}`,{openDialog:D,board:P}=Ts(),w=r.useRef(e),v=r.useRef(u),f=r.useRef(!1),I=r.useRef(null),U=r.useRef(null),[R,d]=r.useState([]),N=r.useMemo(()=>e.characters||[],[e.characters]),[z,M]=r.useState(null),V=Fe("image"),q=Fe("video"),[k,$]=r.useState(()=>ue(Ma,"").modelId),[H,A]=r.useState(()=>ue(Ma,"").modelRef),[Q,Pe]=r.useState(()=>e.videoModel||ue(ma,"veo3").modelId),[ee,ie]=r.useState(()=>e.videoModelRef||ue(ma,"veo3").modelRef),[W,oe]=r.useState(()=>Ea(e.videoModel||ue(ma,"veo3").modelId,e.videoSize,p)),[se,be]=r.useState(()=>e.segmentDuration||parseInt(_e(e.videoModel||"veo3").defaultDuration,10)||8),[G,ce]=r.useState({running:!1,stopping:!1,currentIndex:-1,retryCount:0}),[xe,Ye]=r.useState(!1),ye=r.useMemo(()=>_e(Q),[Q]),Ee=r.useMemo(()=>ye.durationOptions,[ye]),Se=r.useMemo(()=>ye.sizeOptions,[ye]);r.useEffect(()=>{w.current=e},[e]),r.useEffect(()=>{v.current=u},[u]);const t=r.useCallback(async s=>{const n=w.current,l={...n,...s};w.current=l,l.editedShots&&(v.current=l.editedShots);const c=await ae(n.id,s);return m(c),i(l),l},[i,m]),x=r.useCallback(async s=>{const n=w.current,l=Te(n,s);return v.current=s,await t(l),s},[t]),Y=r.useCallback((s,n)=>{$(s),A(n||null),Be(Ma,s,n)},[]),J=r.useCallback((s,n)=>{Pe(s),ie(n||null),Be(ma,s,n);const l=_e(s),c=parseInt(l.defaultDuration,10)||8,g=Ea(s,W,p);be(c),oe(g),t({videoModel:s,videoModelRef:n||null,segmentDuration:c,videoSize:g})},[t,p,W]),te=r.useCallback(s=>{be(s),t({segmentDuration:s})},[t]),ne=r.useCallback(s=>{const n=Ea(Q,s,p);oe(n),t({videoSize:n})},[t,p,Q]),Ue=r.useMemo(()=>R.map(s=>s.url).filter(Boolean),[R]),$e=r.useMemo(()=>Js(u),[u]),Me=r.useCallback(async(s,n)=>{const c=(w.current.characters||[]).map(g=>g.id===s?{...g,referenceImageUrl:n}:g);await t({characters:c})},[t]),ra=r.useCallback(async()=>{try{const s=w.current,n=v.current;Qa(P);const l=await es("text",ds(s,n));if(!l.success)throw new Error(l.error||"插入失败,请确认画布已打开");De.trackUIInteraction({area:"popular_mv_tool",action:"script_inserted_to_canvas",control:"insert_script",source:"mv_creator_generate_page",metadata:{shotCount:n.length}}),ea.success("脚本已插入画布")}catch(s){console.error("[MVCreator] Failed to insert script to canvas:",s);const n=s instanceof Error?s.message:"脚本插入画布失败";ea.error(n)}},[P]),o=r.useCallback(async s=>{if(!P)return!1;try{Qa(P);const n=await es("video",s);if(!n.success)throw new Error(n.error||"插入失败,请确认画布已打开");return!0}catch(n){return console.error("[MVCreator] Failed to insert generated video to canvas:",n),!1}},[P]),{isExportingAssets:T,exportProgress:C,handleExportAssets:X}=$s({onExport:async s=>{const n=w.current,l=v.current;return await Xs({...Nr(n,l,$e),onProgress:s})},onExportSuccess:s=>{ea.success(`素材导出完成,共 ${s.assetCount} 个文件`)},onExportError:s=>{console.error("[MVCreator] Failed to export mv assets:",s),ea.error("素材导出失败")}}),me=r.useCallback(s=>{const n=`mv_${e.id}_char${s.id}_ref`,l=e.videoStyle?`${e.videoStyle} style. `:"";D(la.aiImageGeneration,{initialPrompt:`${l}${s.description}`,batchId:n,initialAspectRatio:"1:1",initialModel:k||void 0,initialModelRef:H,autoInsertToCanvas:!1})},[e.id,e.videoStyle,D,k,H]),he=r.useCallback(async()=>{e.batchId||await t({batchId:b})},[e.batchId,b,t]),{tasks:Ra}=cs(),Ge=r.useRef(new Set),ha=r.useRef(new Set),Ha=r.useCallback(async(s,n,l)=>{let c=[...n],g=!1;for(const{shotId:E,videoUrl:y}of l){const S=`auto_${E}`;if(!ha.current.has(S)){ha.current.add(S);try{const O=c.findIndex(j=>j.id===E);if(O===-1)continue;const _=O>0?c[O-1]:void 0;if(_&&!_.generated_last_frame_url&&!_.generated_video_url){const j=await da(y,_.id,"last","first");j&&(c=c.map(B=>B.id===_.id?{...B,generated_last_frame_url:j}:B),g=!0)}}finally{ha.current.delete(S)}}}if(g){const E=e;ae(s,Te(E,c)).then(y=>{m(y),i({...E,editedShots:c})})}},[e,i,m]);r.useEffect(()=>{var y,S,O,_;const s=`mv_${e.id}_shot`,n=`mv_${e.id}_char`;let l=!1;const c=e;let g=c.editedShots||[];const E=[];for(const j of Ra){if(j.status!==Ne.COMPLETED||Ge.current.has(j.id))continue;const B=(y=j.params)==null?void 0:y.batchId;if(!B)continue;if(B.startsWith(n)){const Z=(S=j.result)==null?void 0:S.url;if(Ge.current.add(j.id),Z){const re=B.slice(n.length),le=re.lastIndexOf("_ref");if(le!==-1){const qe=re.slice(0,le),bs=(w.current.characters||[]).map(ja=>ja.id===qe?{...ja,referenceImageUrl:Z}:ja);t({characters:bs})}}continue}if(!B.startsWith(s))continue;if(e.storyboardGeneratedAt&&j.createdAt<e.storyboardGeneratedAt){Ge.current.add(j.id);continue}const L=(O=j.result)==null?void 0:O.url;if(!L)continue;const F=B.slice(s.length),ke=F.lastIndexOf("_");if(ke===-1)continue;const ge=F.slice(0,ke),K=F.slice(ke+1);if(K!=="first"&&K!=="last"&&K!=="video")continue;const ve=K==="first"?"generated_first_frame_url":K==="last"?"generated_last_frame_url":"generated_video_url",Ve=g.find(Z=>Z.id===ge),Ae=(_=Ve==null?void 0:Ve.suppressed_generated_urls)==null?void 0:_[K];if(Ae&&Ae===L){Ge.current.add(j.id);continue}if(!Ve||Ve[ve]===L){Ge.current.add(j.id);continue}g=g.map(Z=>Z.id===ge?{...Z,[ve]:L,suppressed_generated_urls:Z.suppressed_generated_urls?{...Z.suppressed_generated_urls,[K]:void 0}:void 0}:Z),Ge.current.add(j.id),l=!0,K==="video"&&E.push({shotId:ge,videoUrl:L})}l&&ae(c.id,Te(c,g)).then(j=>{m(j),i({...c,editedShots:g})}),E.length>0&&Ha(c.id,g,E)},[Ra,Ha,e,i,m,t]);const[je,Je]=r.useState(null),ms=r.useCallback(async s=>{if(!je)return;Je(null);const{shotId:n,assetType:l}=je,c=l==="first"?"generated_first_frame_url":l==="last"?"generated_last_frame_url":"generated_video_url",g=u.map(y=>y.id===n?{...y,[c]:s.url}:y),E=await ae(e.id,Te(e,g));m(E),i({...e,editedShots:g})},[je,e,u,m,i]),[ze,Na]=r.useState(null),Ze=r.useRef(null),we=r.useCallback(()=>{Ze.current!==null&&(window.clearTimeout(Ze.current),Ze.current=null)},[]),La=r.useCallback(()=>{we(),Na(null)},[we]),Fa=r.useCallback(()=>{we(),Ze.current=window.setTimeout(()=>{Ze.current=null,Na(null)},120)},[we]),ta=r.useCallback((s,n,l)=>{we();const c=l.currentTarget.getBoundingClientRect();Na({url:s,type:n,x:c.left+c.width/2,y:c.top-8})},[we]),na=r.useCallback(()=>{Fa()},[Fa]),ps=r.useCallback(()=>{we()},[we]),fs=r.useCallback(()=>{La()},[La]);r.useEffect(()=>()=>{we()},[we]);const Xe=r.useMemo(()=>{var n;const s=(n=Se.find(l=>l.value===W))==null?void 0:n.aspectRatio;if(s)return s;if(W!=null&&W.includes("x")){const[l,c]=W.split("x").map(Number);if(l&&c){const g=(y,S)=>S===0?y:g(S,y%S),E=g(l,c);return`${l/E}:${c/E}`}}return p.replace("x",":")},[p,Se,W]),Oe=Xe,Ie=r.useCallback(s=>s.map(n=>({url:n.url,name:n.name})),[]),ia=r.useCallback((s=[],n=[])=>s.length===n.length&&s.every((l,c)=>{var g,E;return l.url===((g=n[c])==null?void 0:g.url)&&l.name===((E=n[c])==null?void 0:E.name)}),[]),Re=r.useCallback(async(s,n,l)=>{let c=!1;const g=Ie(l.images),E=v.current.map(y=>{if(y.id!==s)return y;if(n==="first"){const _=y.first_frame_draft,j={prompt:l.prompt,images:g,aspectRatio:l.aspectRatio};return(_==null?void 0:_.prompt)===j.prompt&&(_==null?void 0:_.aspectRatio)===j.aspectRatio&&ia(_==null?void 0:_.images,j.images)?y:(c=!0,{...y,first_frame_draft:j})}if(n==="last"){const _=y.last_frame_draft,j={prompt:l.prompt,images:g,aspectRatio:l.aspectRatio};return(_==null?void 0:_.prompt)===j.prompt&&(_==null?void 0:_.aspectRatio)===j.aspectRatio&&ia(_==null?void 0:_.images,j.images)?y:(c=!0,{...y,last_frame_draft:j})}const S=y.video_draft,O={prompt:l.prompt,images:g,duration:l.duration,size:l.size};return(S==null?void 0:S.prompt)===O.prompt&&(S==null?void 0:S.duration)===O.duration&&(S==null?void 0:S.size)===O.size&&ia(S==null?void 0:S.images,O.images)?y:(c=!0,{...y,video_draft:O})});c&&await x(E)},[x,ia,Ie]),pe=r.useMemo(()=>({totalDuration:e.selectedClipDuration||30,productExposureDuration:0,productExposureRatio:0,shotCount:u.length,firstProductAppearance:0,aspect_ratio:p,video_style:e.videoStyle||"",bgm_mood:"",suggestion:"",shots:u}),[e,u,p]),fe=r.useMemo(()=>({prompt:e.creationPrompt||"",videoStyle:e.videoStyle||""}),[e]),ba=r.useCallback(s=>{const n=s.first_frame_prompt||s.description||"";if(!n)return;De.trackUIInteraction({area:"popular_mv_tool",action:"shot_first_frame_generation_opened",control:"generate_first_frame",source:"mv_creator_generate_page",metadata:{shotId:s.id,hasDraft:!!s.first_frame_draft}});const l=Va(n,pe,fe),c=s.first_frame_draft,g=`mv_${e.id}_shot${s.id}_first`;D(la.aiImageGeneration,{initialPrompt:(c==null?void 0:c.prompt)||l,batchId:g,initialAspectRatio:(c==null?void 0:c.aspectRatio)??Oe,initialModel:k||void 0,initialModelRef:H,autoInsertToCanvas:!1,initialImages:c?Ie(c.images||[]):s.generated_first_frame_url?[{url:s.generated_first_frame_url,name:"首帧"}]:void 0,onDraftChange:E=>Re(s.id,"first",E)})},[e.id,pe,fe,D,Oe,k,H,Re,Ie]),Qe=r.useCallback((s,n)=>{var l;return s.generated_last_frame_url?s.generated_last_frame_url:(l=u[n+1])==null?void 0:l.generated_first_frame_url},[u]),oa=r.useCallback((s,n)=>{const l=s.last_frame_prompt||s.description||"";if(!l)return;De.trackUIInteraction({area:"popular_mv_tool",action:"shot_last_frame_generation_opened",control:"generate_last_frame",source:"mv_creator_generate_page",metadata:{shotId:s.id,shotIndex:n,hasDraft:!!s.last_frame_draft}});const c=Va(l,pe,fe),g=s.last_frame_draft,E=`mv_${e.id}_shot${s.id}_last`,y=Qe(s,n);D(la.aiImageGeneration,{initialPrompt:(g==null?void 0:g.prompt)||c,batchId:E,initialAspectRatio:(g==null?void 0:g.aspectRatio)??Oe,initialModel:k||void 0,initialModelRef:H,autoInsertToCanvas:!1,initialImages:g?Ie(g.images||[]):y?[{url:y,name:"尾帧"}]:void 0,onDraftChange:S=>Re(s.id,"last",S)})},[e.id,pe,fe,D,Qe,Oe,k,H,Re,Ie]),xa=r.useCallback(async(s,n)=>{const l=Da(s,pe,fe);if(!l)return;De.trackUIInteraction({area:"popular_mv_tool",action:"shot_video_generation_opened",control:"generate_shot_video",source:"mv_creator_generate_page",metadata:{shotId:s.id,shotIndex:n,hasDraft:!!s.video_draft}});const c=s.video_draft,g=`mv_${e.id}_shot${s.id}_video`,E=[];s.generated_first_frame_url&&E.push({url:s.generated_first_frame_url,name:"首帧"});const y=Qe(s,n);y&&E.push({url:y,name:"尾帧"});const S=Ie((c==null?void 0:c.images)||[]),O=S.length>0?S:E.length>0?E:void 0,_=_e(Q),j=String((c==null?void 0:c.duration)??se),B=_.durationOptions.some(F=>F.value===j)?(c==null?void 0:c.duration)??se:void 0,L=_.sizeOptions.some(F=>F.value===((c==null?void 0:c.size)??W))?(c==null?void 0:c.size)??W:void 0;D(la.aiVideoGeneration,{initialPrompt:(c==null?void 0:c.prompt)||l,initialImages:O,initialDuration:B,initialSize:L,initialModel:Q||void 0,initialModelRef:ee,batchId:g,autoInsertToCanvas:!1,onDraftChange:F=>Re(s.id,"video",F)})},[e.id,pe,fe,se,W,Q,ee,D,Qe,Re,Ie]),ya=r.useCallback((s,n)=>{const l=n==="first"?"generated_first_frame_url":n==="last"?"generated_last_frame_url":"generated_video_url",c=u.map(g=>g.id===s?{...g,[l]:void 0,suppressed_generated_urls:g[l]?{...g.suppressed_generated_urls||{},[n]:g[l]}:g.suppressed_generated_urls}:g);ae(e.id,Te(e,c)).then(g=>{m(g),i({...e,editedShots:c})})},[e,u,i,m]),Ba=r.useCallback(async(s,n,l)=>{if(!s.generated_video_url)return;const c=l==="next-first"?u[n+1]:u[n-1];if(!c)return;const g=l==="next-first"?"first":"last",E=l==="next-first"?"last":"first",y=await da(s.generated_video_url,c.id,g,E);if(!y)return;const S=g==="first"?"generated_first_frame_url":"generated_last_frame_url",O=u.map(_=>_.id===c.id?{..._,[S]:y}:_);ae(e.id,Te(e,O)).then(_=>{m(_),i({...e,editedShots:O})})},[e,u,i,m]),Ka=r.useCallback(async(s,n,l)=>{const c=s[n];if(!c||c.generated_video_url===l)return s;const g=s.map((E,y)=>y===n?{...E,generated_video_url:l}:E);return await x(g),g},[x]),Wa=r.useCallback(async(s,n,l)=>{var L,F,ke;const c=s.first_frame_prompt||s.description||"";if(!c)return null;let g=Va(c,pe,fe);const E=[];if(s.character_ids&&s.character_ids.length>0)for(const ge of s.character_ids){const K=l.find(ve=>ve.id===ge);K!=null&&K.description&&E.push(`${K.name}: ${K.description}`)}E.length>0&&(g+=`
|
|
151
151
|
Characters in this frame: ${E.join("; ")}`),n&&(g+=`
|
|
152
|
-
This frame should visually continue from the previous shot's last frame (provided as reference image #1).`);const y=[];if(n&&y.push(n),s.character_ids&&s.character_ids.length>0)for(const ge of s.character_ids){const W=l.find(ve=>ve.id===ge);W!=null&&W.referenceImageUrl&&!y.includes(W.referenceImageUrl)&&y.push(W.referenceImageUrl)}const S=`mv_${e.id}_shot${s.id}_first`,O=await Pa.executeTool({name:"generate_image",arguments:{prompt:g.trim(),count:1,size:Oe,referenceImages:y.length>0?y:void 0,batchId:S,autoInsertToCanvas:!1,...k?{model:k,modelRef:L}:{}}},{mode:"queue"}),_=O.taskId||((H=O.data)==null?void 0:H.taskId);if(!O.success||!_)return null;const j=await Ua(_,(F=I.current)==null?void 0:F.signal);if(!j.success)return null;const B=j.task||de.getTask(_);return((ke=B==null?void 0:B.result)==null?void 0:ke.url)||null},[e.id,pe,fe,Oe,k,L]),Ya=r.useCallback(async(s,n,l)=>{var j,B;const c=Da(s,pe,fe);if(!c)return null;const g=n===0?Ue[0]:s.generated_first_frame_url,E=s.generated_last_frame_url||((j=l[n+1])==null?void 0:j.generated_first_frame_url),{referenceImages:y}=Zs({model:Q,firstFrameUrl:g,lastFrameUrl:E,extraReferenceUrls:Ue.slice(n===0?1:0)}),S=`mv_${e.id}_shot${s.id}_video`,O=await Pa.executeTool({name:"generate_video",arguments:{prompt:c,size:K,seconds:String(se),count:1,batchId:S,model:Q,modelRef:ee,referenceImages:y,autoInsertToCanvas:!1,params:ye.provider==="seedance"?{aspect_ratio:Xe}:void 0}},{mode:"queue"}),_=O.taskId||((B=O.data)==null?void 0:B.taskId);if(!O.success||!_)throw new Error(O.error||"创建视频任务失败");return _},[pe,fe,Ue,e.id,se,Q,ye.provider,ee,K,Xe]),gs=r.useCallback(()=>{var s;f.current=!0,ce(n=>n.running?{...n,stopping:!0}:n),U.current&&de.cancelTask(U.current),(s=I.current)==null||s.abort()},[]);r.useEffect(()=>()=>{var s;f.current=!0,(s=I.current)==null||s.abort()},[]);const vs=r.useCallback(async()=>{var n,l,c,g,E,y;if(G.running)return;De.trackUIInteraction({area:"popular_mv_tool",action:"batch_video_generation_started",control:"generate_all_videos",source:"mv_creator_generate_page",metadata:{shotCount:v.current.length,charactersCount:((n=w.current.characters)==null?void 0:n.length)||0,insertToCanvasRequested:xe,hasBoard:!!P}});let s=xe;s&&!P&&(ea.warning("画布未就绪,本次将只生成不插入画布"),s=!1),await he(),f.current=!1,I.current=new AbortController,U.current=null,ce({running:!0,stopping:!1,currentIndex:-1,retryCount:0});try{let S=w.current.characters||[];const O=S.filter(H=>!H.referenceImageUrl),_=w.current.videoStyle?`${w.current.videoStyle} style. `:"";if(O.length>0&&!f.current){for(const H of O){if(f.current)break;const F=`mv_${e.id}_char${H.id}_ref`,ke=await Pa.executeTool({name:"generate_image",arguments:{prompt:`${_}${H.description}`,count:1,size:"1:1",batchId:F,autoInsertToCanvas:!1,...k?{model:k,modelRef:L}:{}}},{mode:"queue"}),ge=ke.taskId||((l=ke.data)==null?void 0:l.taskId);if(ge){const W=await Ua(ge,(c=I.current)==null?void 0:c.signal);if(W.success){const ve=W.task||de.getTask(ge),Ve=(g=ve==null?void 0:ve.result)==null?void 0:g.url;if(Ve){const Z=(w.current.characters||[]).map(re=>re.id===H.id?{...re,referenceImageUrl:Ve}:re);await t({characters:Z})}}}}S=w.current.characters||[]}let j=v.current,B;for(let H=0;H<j.length&&!f.current;H++){j=v.current;const F=j[H];if(!F||!Da(F,pe,fe))continue;if(ce(re=>({...re,currentIndex:H,retryCount:0})),F.generated_video_url){s&&await o(F.generated_video_url);try{B=await da(F.generated_video_url,F.id,"last","last")||void 0}catch{B=void 0}continue}S=w.current.characters||[];const W=(F.character_ids||[]).length>0||B!==void 0,ve=!!F.generated_first_frame_url;if(W&&!ve&&!f.current){const re=await Ka(F,B,S);re&&(j=j.map((le,qe)=>qe===H?{...le,generated_first_frame_url:re}:le),await x(j))}let Ae=0,Z=null;for(;!f.current&&(Z||(Z=await Ya(j[H]||F,H,j)),!!Z);){U.current=Z,ce({running:!0,stopping:!1,currentIndex:H,retryCount:Ae});const re=await Ua(Z,(E=I.current)==null?void 0:E.signal);if(f.current)break;const le=re.task||de.getTask(Z),qe=(y=le==null?void 0:le.result)==null?void 0:y.url;if(re.success&&le&&qe){j=await Wa(j,H,qe),s&&await o(qe);try{B=await da(qe,F.id,"last","last")||void 0}catch{B=void 0}break}if(Ae+=1,ce({running:!0,stopping:!1,currentIndex:H,retryCount:Ae}),(le==null?void 0:le.status)===Ne.FAILED){de.retryTask(Z);continue}Z=null}U.current=null}}finally{U.current=null,I.current=null,ce({running:!1,stopping:!1,currentIndex:-1,retryCount:0})}},[G.running,Ya,he,Ka,pe,fe,x,t,e.id,k,L,o,xe,Wa,P]),hs=r.useCallback(async()=>{const s=br(e,u);await x(s.shots),await t({characters:s.characters})},[u,e.characters,x,t]),ca=r.useMemo(()=>{const[s,n]=Xe.split(":").map(Number);if(!s||!n)return{};const l=Math.round(54*s/n);return{width:Math.max(l,48),height:l<48?Math.round(48*n/s):54}},[Xe]);return a.jsxDEV("div",{className:"va-page",children:[a.jsxDEV("div",{className:"va-batch-config",children:[a.jsxDEV("div",{className:"va-batch-config-title",children:"批量生成配置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1194,columnNumber:9},void 0),a.jsxDEV(Ks,{images:R,onImagesChange:d,multiple:!0,label:"参考图 (可选)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1195,columnNumber:9},void 0),N.length>0&&a.jsxDEV("div",{className:"va-characters",children:[a.jsxDEV("div",{className:"va-characters-title",children:"角色"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1198,columnNumber:13},void 0),N.map(s=>a.jsxDEV("div",{className:"va-character-item",children:[a.jsxDEV("div",{className:"va-character-info",children:[a.jsxDEV("span",{className:"va-character-name",children:s.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1202,columnNumber:19},void 0),a.jsxDEV("span",{className:"va-character-desc",children:s.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1203,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1201,columnNumber:17},void 0),a.jsxDEV("div",{className:"va-character-ref",children:[s.referenceImageUrl?a.jsxDEV("div",{className:"va-character-ref-thumb",children:[a.jsxDEV("img",{src:s.referenceImageUrl,alt:s.name,referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1208,columnNumber:23},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>void Me(s.id,void 0),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1209,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1207,columnNumber:21},void 0):a.jsxDEV("span",{className:"va-character-ref-empty",children:"未设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1212,columnNumber:21},void 0),a.jsxDEV("button",{onClick:()=>me(s),children:"生成"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1214,columnNumber:19},void 0),a.jsxDEV("button",{onClick:()=>M(s.id),children:"素材库"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1215,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1205,columnNumber:17},void 0)]},s.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1200,columnNumber:15},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1197,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-product-form",children:[a.jsxDEV("div",{className:"va-model-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"图片模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1223,columnNumber:13},void 0),a.jsxDEV(Be,{variant:"form",selectedModel:k,selectedSelectionKey:Ke(k,L),onSelect:Y,models:V,placement:"down",placeholder:"选择图片模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1224,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1222,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-model-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1229,columnNumber:13},void 0),a.jsxDEV(Be,{variant:"form",selectedModel:Q,selectedSelectionKey:Ke(Q,ee),onSelect:J,models:q,placement:"down",placeholder:"选择视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1230,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-segment-duration-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"单段"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1234,columnNumber:15},void 0),a.jsxDEV("select",{className:"va-form-select",value:String(se),onChange:s=>te(parseInt(s.target.value,10)),disabled:Ee.length<=1,children:Ee.map(s=>a.jsxDEV("option",{value:s.value,children:s.label},s.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1239,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1235,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1233,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-segment-duration-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"尺寸"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1244,columnNumber:15},void 0),a.jsxDEV("select",{className:"va-form-select",value:K,onChange:s=>ne(s.target.value),disabled:Se.length<=1,children:Se.map(s=>a.jsxDEV("option",{value:s.value,children:s.label},s.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1252,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1245,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1243,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1228,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1221,columnNumber:9},void 0),G.running&&a.jsxDEV("div",{className:"va-batch-config-title",children:["正在串行生成第 ",Math.max(G.currentIndex+1,1),"/",u.length," 段",G.retryCount>0?`,已重试 ${G.retryCount} 次`:""]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1259,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-page-actions",children:[h&&a.jsxDEV("button",{onClick:h,children:"重新开始"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1265,columnNumber:25},void 0),a.jsxDEV("button",{onClick:hs,children:"重置生成"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1266,columnNumber:11},void 0),a.jsxDEV("label",{className:"va-inline-checkbox",children:[a.jsxDEV("input",{type:"checkbox",checked:xe,onChange:s=>Ye(s.target.checked)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1268,columnNumber:13},void 0),"生成后插入画布"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1267,columnNumber:11},void 0),a.jsxDEV("button",{onClick:vs,disabled:G.running,children:"全部→生成视频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1275,columnNumber:11},void 0),G.running&&a.jsxDEV("button",{onClick:gs,children:G.stopping?"停止中…":"停止全部生成"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1277,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1264,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1193,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-shots",children:u.map((s,n)=>a.jsxDEV(za,{shot:s,index:n,actions:a.jsxDEV(a.Fragment,{children:[s.generated_first_frame_url?a.jsxDEV("div",{className:"va-shot-frame-thumb",style:ca,onMouseEnter:l=>ta(s.generated_first_frame_url,"image",l),onMouseLeave:na,children:[a.jsxDEV("img",{src:s.generated_first_frame_url,alt:"首帧",referrerPolicy:"no-referrer",onClick:()=>ba(s)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1292,columnNumber:19},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>ya(s.id,"first"),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1294,columnNumber:19},void 0),a.jsxDEV("button",{className:"va-shot-frame-regen",onClick:()=>ba(s),children:"↻"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1295,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1289,columnNumber:17},void 0):s.first_frame_prompt||s.description?a.jsxDEV("span",{className:"va-shot-frame-btn-group",children:[a.jsxDEV("button",{onClick:()=>ba(s),children:"生成首帧"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1299,columnNumber:21},void 0),a.jsxDEV(Le,{content:"从素材库选择",showArrow:!1,children:a.jsxDEV("button",{className:"va-shot-frame-library-btn",onClick:()=>Je({shotId:s.id,assetType:"first"}),children:a.jsxDEV(Aa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1307,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1301,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1300,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1298,columnNumber:19},void 0):null,(()=>{const l=Qe(s,n);return s.generated_last_frame_url?a.jsxDEV("div",{className:"va-shot-frame-thumb",style:ca,onMouseEnter:c=>ta(s.generated_last_frame_url,"image",c),onMouseLeave:na,children:[a.jsxDEV("img",{src:s.generated_last_frame_url,alt:"尾帧",referrerPolicy:"no-referrer",onClick:()=>oa(s,n)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1319,columnNumber:23},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>ya(s.id,"last"),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1321,columnNumber:23},void 0),a.jsxDEV("button",{className:"va-shot-frame-regen",onClick:()=>oa(s,n),children:"↻"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1322,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1316,columnNumber:21},void 0):!s.generated_last_frame_url&&l?a.jsxDEV("div",{className:"va-shot-frame-thumb va-shot-frame-thumb--borrowed",style:ca,onMouseEnter:c=>ta(l,"image",c),onMouseLeave:na,children:[a.jsxDEV("img",{src:l,alt:"尾帧(下一镜头首帧)",referrerPolicy:"no-referrer",onClick:()=>oa(s,n)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1331,columnNumber:23},void 0),a.jsxDEV("span",{className:"va-shot-frame-label",children:"下一镜头首帧"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1333,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1328,columnNumber:21},void 0):s.last_frame_prompt||s.description?a.jsxDEV("span",{className:"va-shot-frame-btn-group",children:[a.jsxDEV("button",{onClick:()=>oa(s,n),children:"生成尾帧"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1340,columnNumber:23},void 0),a.jsxDEV(Le,{content:"从素材库选择",showArrow:!1,children:a.jsxDEV("button",{className:"va-shot-frame-library-btn",onClick:()=>Je({shotId:s.id,assetType:"last"}),children:a.jsxDEV(Aa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1348,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1342,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1341,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1339,columnNumber:21},void 0):null})(),s.generated_video_url?a.jsxDEV("div",{className:"va-shot-video-wrap",children:[a.jsxDEV("div",{className:"va-shot-frame-thumb",style:ca,onMouseEnter:l=>ta(s.generated_video_url,"video",l),onMouseLeave:na,children:[a.jsxDEV(zs,{src:s.generated_video_url,alt:"生成视频缩略图",className:"va-shot-frame-media",thumbnailSize:"small",onClick:()=>xa(s,n),videoProps:{muted:!0,preload:"metadata",title:"重新生成视频"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1361,columnNumber:21},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>ya(s.id,"video"),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1373,columnNumber:21},void 0),a.jsxDEV("button",{className:"va-shot-frame-regen",onClick:()=>xa(s,n),children:"↻"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1374,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1358,columnNumber:19},void 0),(n>0||n<u.length-1)&&a.jsxDEV("div",{className:"va-shot-frame-transfer",children:[n>0&&a.jsxDEV(Le,{content:"提取首帧 → 前一片段尾帧",showArrow:!1,children:a.jsxDEV("button",{className:"va-shot-frame-transfer-btn",onClick:()=>Ba(s,n,"prev-last"),children:a.jsxDEV(Os,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1387,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1383,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1379,columnNumber:25},void 0),n<u.length-1&&a.jsxDEV(Le,{content:"提取尾帧 → 后一片段首帧",showArrow:!1,children:a.jsxDEV("button",{className:"va-shot-frame-transfer-btn",onClick:()=>Ba(s,n,"next-first"),children:a.jsxDEV(Rs,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1400,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1396,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1392,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1377,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1357,columnNumber:17},void 0):s.description?a.jsxDEV("span",{className:"va-shot-frame-btn-group",children:[a.jsxDEV("button",{onClick:()=>xa(s,n),children:"生成视频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1409,columnNumber:19},void 0),a.jsxDEV(Le,{content:"从素材库插入视频",showArrow:!1,children:a.jsxDEV("button",{className:"va-shot-frame-library-btn",onClick:()=>Je({shotId:s.id,assetType:"video"}),children:a.jsxDEV(Aa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1417,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1411,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1410,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1408,columnNumber:17},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1287,columnNumber:13},void 0)},s.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1286,columnNumber:11},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1284,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-page-actions mv-generate-footer-actions",children:[a.jsxDEV("button",{onClick:()=>void ra(),disabled:u.length===0,children:"脚本插入画布"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1428,columnNumber:9},void 0),a.jsxDEV("button",{onClick:()=>void X(),disabled:T||u.length===0,children:T?`素材下载 ${C}%`:"素材下载 ZIP"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1431,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1427,columnNumber:7},void 0),a.jsxDEV("div",{className:"mv-generate-footer-hint",children:"若有素材未打包成功,解压后在 ZIP 根目录运行 `sh 00.补全下载.sh` 即可按 manifest 补全下载。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1435,columnNumber:7},void 0),a.jsxDEV(Za,{isOpen:!!je,onClose:()=>Je(null),mode:Xa.SELECT,filterType:(je==null?void 0:je.assetType)==="video"?Sa.VIDEO:Sa.IMAGE,onSelect:ms,selectButtonText:(je==null?void 0:je.assetType)==="video"?"使用此视频":"使用此图片"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1439,columnNumber:7},void 0),a.jsxDEV(Za,{isOpen:!!z,onClose:()=>M(null),mode:Xa.SELECT,filterType:Sa.IMAGE,onSelect:s=>{z&&Me(z,s.url),M(null)},selectButtonText:"使用此图片"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1448,columnNumber:7},void 0),ze&&Gs.createPortal(a.jsxDEV("div",{className:"mv-hover-preview",style:{left:`${ze.x}px`,top:`${ze.y}px`},onMouseEnter:ps,onMouseLeave:fs,children:ze.type==="image"?a.jsxDEV("img",{src:ze.url,alt:"Preview",referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1470,columnNumber:13},void 0):a.jsxDEV("video",{src:ze.url,controls:!0,muted:!0,preload:"metadata"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1472,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1463,columnNumber:9},void 0),document.body)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1192,columnNumber:5},void 0)};function yr(e){switch(e){case Ne.COMPLETED:return"已完成";case Ne.PROCESSING:return"进行中";case Ne.PENDING:return"等待中";case Ne.FAILED:return"失败";default:return""}}function jr(e){switch(e){case Ne.COMPLETED:return"completed";case Ne.PROCESSING:return"processing";case Ne.PENDING:return"pending";case Ne.FAILED:return"failed";default:return"pending"}}function wr(e){const i=new Date(e);return`${i.getMonth()+1}/${i.getDate()} ${String(i.getHours()).padStart(2,"0")}:${String(i.getMinutes()).padStart(2,"0")}`}const kr=({records:e,onSelect:i,onRecordsChange:m,showStarredOnly:h=!1})=>{const u=h?e.filter(d=>d.starred):e,[p,b]=r.useState(null),[D,P]=r.useState(null),{tasks:w}=cs(),v=r.useMemo(()=>{const d=new Map,N=new Set(e.map(M=>M.id)),z=()=>({storyboard:[],music:[],video:[],image:[]});for(const M of w){const V=M.params;if(M.type===Ce.CHAT&&V.mvCreatorAction==="storyboard"&&typeof V.mvCreatorRecordId=="string"&&N.has(V.mvCreatorRecordId)){const $=V.mvCreatorRecordId;ua(d,$,"storyboard",M,z);continue}const q=typeof V.batchId=="string"?V.batchId:"";if(!q.startsWith("mv_"))continue;const k=Ls(q,"mv_",N);k&&(M.type===Ce.AUDIO?ua(d,k,"music",M,z):M.type===Ce.VIDEO?ua(d,k,"video",M,z):M.type===Ce.IMAGE&&ua(d,k,"image",M,z))}return Hs(d)},[w,e]),f=r.useCallback(async(d,N)=>{d.stopPropagation();const z=await ae(N.id,{starred:!N.starred});m(z)},[m]),I=r.useCallback((d,N)=>{d.stopPropagation(),P(N)},[]),U=r.useCallback(async()=>{if(!D)return;const d=await ar(D);m(d),P(null)},[m,D]),R=r.useCallback((d,N)=>{d.stopPropagation(),b(z=>z===N?null:N)},[]);return u.length===0?a.jsxDEV("div",{className:"va-page va-empty",children:a.jsxDEV("span",{children:h?"暂无收藏":"暂无 MV 记录"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:145,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:144,columnNumber:7},void 0):a.jsxDEV(a.Fragment,{children:[a.jsxDEV("div",{className:"va-page",children:a.jsxDEV("div",{className:"va-history-list",children:u.map(d=>{var V;const N=v.get(d.id),z=N?N.storyboard.length+N.music.length+N.video.length+N.image.length:0,M=p===d.id;return a.jsxDEV("div",{className:"va-history-item",onClick:()=>i(d),children:[a.jsxDEV("div",{className:"va-history-header",children:[a.jsxDEV("span",{className:"va-history-source",children:[a.jsxDEV("span",{role:"img","aria-label":"mv",children:"🎬"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:165,columnNumber:21},void 0)," ",d.sourceLabel]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:164,columnNumber:19},void 0),a.jsxDEV("button",{className:`va-star-btn ${d.starred?"starred":""}`,onClick:q=>f(q,d),children:d.starred?"★":"☆"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:168,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:163,columnNumber:17},void 0),a.jsxDEV("div",{className:"va-history-meta",children:[z>0&&a.jsxDEV("button",{className:`va-history-expand-btn ${M?"expanded":""}`,onClick:q=>R(q,d.id),children:[a.jsxDEV(Fs,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:181,columnNumber:23},void 0),a.jsxDEV("span",{children:M?"收起":"关联任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:182,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:177,columnNumber:21},void 0),a.jsxDEV("span",{children:new Date(d.createdAt).toLocaleString()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:185,columnNumber:19},void 0),a.jsxDEV("button",{className:"va-history-delete",onClick:q=>I(q,d.id),children:"删除"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:186,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:175,columnNumber:17},void 0),a.jsxDEV("div",{className:"ma-history-title",children:d.musicTitle||"未命名 MV"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:193,columnNumber:17},void 0),a.jsxDEV("div",{className:"ma-history-summary",children:((V=d.creationPrompt)==null?void 0:V.slice(0,80))||"暂无描述"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:194,columnNumber:17},void 0),d.generatedClips&&d.generatedClips.length>0&&a.jsxDEV("div",{className:"ma-history-clips-count",children:[d.generatedClips.length," 首音乐",d.editedShots?` · ${d.editedShots.length} 个镜头`:""]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:198,columnNumber:19},void 0),M&&N&&a.jsxDEV("div",{className:"va-history-related",onClick:q=>q.stopPropagation(),children:[N.music.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["音乐生成 (",N.music.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:207,columnNumber:25},void 0),N.music.map(q=>a.jsxDEV(pa,{task:q},q.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:211,columnNumber:27},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:206,columnNumber:23},void 0),N.storyboard.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["分镜规划 (",N.storyboard.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:217,columnNumber:25},void 0),N.storyboard.map(q=>a.jsxDEV(pa,{task:q},q.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:221,columnNumber:27},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:216,columnNumber:23},void 0),N.video.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["视频生成 (",N.video.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:227,columnNumber:25},void 0),N.video.map(q=>a.jsxDEV(pa,{task:q},q.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:231,columnNumber:27},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:226,columnNumber:23},void 0),N.image.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["图片生成 (",N.image.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:237,columnNumber:25},void 0),N.image.map(q=>a.jsxDEV(pa,{task:q},q.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:241,columnNumber:27},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:236,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:204,columnNumber:19},void 0)]},d.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:162,columnNumber:15},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:153,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:152,columnNumber:7},void 0),a.jsxDEV(Bs,{open:D!==null,title:"确认删除",description:"确定要删除这条 MV 记录吗?此操作不可撤销。",confirmText:"删除",cancelText:"取消",danger:!0,onOpenChange:d=>{d||P(null)},onConfirm:U},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:253,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:151,columnNumber:5},void 0)},pa=({task:e})=>a.jsxDEV(Le,{content:yr(e.status),showArrow:!1,children:a.jsxDEV("div",{className:"va-history-related-task",children:[a.jsxDEV("span",{className:`va-history-related-task-status ${jr(e.status)}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:270,columnNumber:7},void 0),a.jsxDEV("span",{className:"va-history-related-task-prompt",children:String(e.params.prompt||"").slice(0,40)||e.id.slice(0,8)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:273,columnNumber:7},void 0),a.jsxDEV("span",{className:"va-history-related-task-time",children:wr(e.createdAt)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:276,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:269,columnNumber:5},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:268,columnNumber:3},void 0),$r=()=>{var R;const[e,i]=r.useState("analyze"),[m,h]=r.useState(null),[u,p]=r.useState([]),[b,D]=r.useState(!1);r.useEffect(()=>{va().then(p)},[]),r.useEffect(()=>{let d=!1;const N=new Set,z=async V=>{if(N.has(V.id))return;if(ur(V)){N.add(V.id);try{const k=await mr(V)||await $a(V);if(!k||d)return;p(k.records),h($=>($==null?void 0:$.id)===k.record.id?k.record:$)}catch(k){console.error("[MVCreator] Failed to sync storyboard task:",k)}finally{N.delete(V.id)}return}const q=pr(V);if(q){N.add(V.id);try{const k=await fr(V,q);if(!k||d)return;p(k.records),h($=>($==null?void 0:$.id)===k.record.id?k.record:$)}catch(k){console.error("[MVCreator] Failed to sync music task:",k)}finally{N.delete(V.id)}}};de.getAllTasks().forEach(V=>{V.status==="completed"&&z(V)});const M=de.observeTaskUpdates().subscribe(V=>{V.task.status==="completed"&&z(V.task)});return()=>{d=!0,M.unsubscribe()}},[]);const P=r.useCallback(d=>{h(d)},[]),w=r.useCallback(d=>{h(d),d.editedShots&&d.editedShots.length>0?i("generate"):(d.selectedClipId,i("analyze"))},[]),v=r.useCallback(d=>{h(d)},[]),f=r.useCallback(()=>{h(null),i("analyze")},[]),I=r.useCallback(d=>{i(d)},[]),U=!!(m!=null&&m.editedShots&&m.editedShots.length>0);return a.jsxDEV("div",{className:"video-analyzer music-analyzer mv-creator",children:[a.jsxDEV("div",{className:"va-nav",children:e==="history"?a.jsxDEV(a.Fragment,{children:[a.jsxDEV("button",{className:"va-nav-back",onClick:()=>i("analyze"),children:"←"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:135,columnNumber:13},void 0),a.jsxDEV("span",{className:"va-nav-title",children:b?"收藏":"历史记录"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:136,columnNumber:13},void 0),a.jsxDEV("button",{className:`va-nav-btn ${b?"active":""}`,onClick:()=>D(d=>!d),children:b?"★ 收藏":"☆ 全部"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:137,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:134,columnNumber:11},void 0):a.jsxDEV(a.Fragment,{children:[a.jsxDEV(sr,{current:e,onNavigate:I,hasRecord:!!m,hasShots:U},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:146,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-nav-actions",children:[a.jsxDEV("button",{className:"va-nav-btn",onClick:()=>{D(!1),i("history")},children:[a.jsxDEV("span",{role:"img","aria-label":"history",children:"📋"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:154,columnNumber:17},void 0),u.length>0&&a.jsxDEV("span",{className:"va-nav-count",children:u.length},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:155,columnNumber:40},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:153,columnNumber:15},void 0),a.jsxDEV("button",{className:"va-nav-btn",onClick:()=>{D(!0),i("history")},children:[a.jsxDEV("span",{role:"img","aria-label":"starred",children:"⭐"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:158,columnNumber:17},void 0),u.filter(d=>d.starred).length>0&&a.jsxDEV("span",{className:"va-nav-count",children:u.filter(d=>d.starred).length},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:160,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:157,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:152,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:145,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:132,columnNumber:7},void 0),e==="analyze"&&a.jsxDEV(lr,{existingRecord:m,onComplete:P,onRecordsChange:p,onCreateNew:f,onNext:(R=m==null?void 0:m.editedShots)!=null&&R.length?()=>i("script"):void 0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:169,columnNumber:9},void 0),e==="script"&&m&&U&&a.jsxDEV(hr,{record:m,onRecordUpdate:v,onRecordsChange:p,onNext:()=>i("generate")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:178,columnNumber:9},void 0),e==="generate"&&m&&U&&a.jsxDEV(xr,{record:m,onRecordUpdate:v,onRecordsChange:p,onRestart:f},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:186,columnNumber:9},void 0),e==="history"&&a.jsxDEV(kr,{records:u,onSelect:w,onRecordsChange:p,showStarredOnly:b},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:194,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:131,columnNumber:5},void 0)};export{$r as default};
|
|
152
|
+
This frame should visually continue from the previous shot's last frame (provided as reference image #1).`);const y=[];if(n&&y.push(n),s.character_ids&&s.character_ids.length>0)for(const ge of s.character_ids){const K=l.find(ve=>ve.id===ge);K!=null&&K.referenceImageUrl&&!y.includes(K.referenceImageUrl)&&y.push(K.referenceImageUrl)}const S=`mv_${e.id}_shot${s.id}_first`,O=await Pa.executeTool({name:"generate_image",arguments:{prompt:g.trim(),count:1,size:Oe,referenceImages:y.length>0?y:void 0,batchId:S,autoInsertToCanvas:!1,...k?{model:k,modelRef:H}:{}}},{mode:"queue"}),_=O.taskId||((L=O.data)==null?void 0:L.taskId);if(!O.success||!_)return null;const j=await Ua(_,(F=I.current)==null?void 0:F.signal);if(!j.success)return null;const B=j.task||de.getTask(_);return((ke=B==null?void 0:B.result)==null?void 0:ke.url)||null},[e.id,pe,fe,Oe,k,H]),Ya=r.useCallback(async(s,n,l)=>{var j,B;const c=Da(s,pe,fe);if(!c)return null;const g=n===0?Ue[0]:s.generated_first_frame_url,E=s.generated_last_frame_url||((j=l[n+1])==null?void 0:j.generated_first_frame_url),{referenceImages:y}=Zs({model:Q,firstFrameUrl:g,lastFrameUrl:E,extraReferenceUrls:Ue.slice(n===0?1:0)}),S=`mv_${e.id}_shot${s.id}_video`,O=await Pa.executeTool({name:"generate_video",arguments:{prompt:c,size:W,seconds:String(se),count:1,batchId:S,model:Q,modelRef:ee,referenceImages:y,autoInsertToCanvas:!1,params:ye.provider==="seedance"?{aspect_ratio:Xe}:void 0}},{mode:"queue"}),_=O.taskId||((B=O.data)==null?void 0:B.taskId);if(!O.success||!_)throw new Error(O.error||"创建视频任务失败");return _},[pe,fe,Ue,e.id,se,Q,ye.provider,ee,W,Xe]),gs=r.useCallback(()=>{var s;f.current=!0,ce(n=>n.running?{...n,stopping:!0}:n),U.current&&de.cancelTask(U.current),(s=I.current)==null||s.abort()},[]);r.useEffect(()=>()=>{var s;f.current=!0,(s=I.current)==null||s.abort()},[]);const vs=r.useCallback(async()=>{var n,l,c,g,E,y;if(G.running)return;De.trackUIInteraction({area:"popular_mv_tool",action:"batch_video_generation_started",control:"generate_all_videos",source:"mv_creator_generate_page",metadata:{shotCount:v.current.length,charactersCount:((n=w.current.characters)==null?void 0:n.length)||0,insertToCanvasRequested:xe,hasBoard:!!P}});let s=xe;s&&!P&&(ea.warning("画布未就绪,本次将只生成不插入画布"),s=!1),await he(),f.current=!1,I.current=new AbortController,U.current=null,ce({running:!0,stopping:!1,currentIndex:-1,retryCount:0});try{let S=w.current.characters||[];const O=S.filter(L=>!L.referenceImageUrl),_=w.current.videoStyle?`${w.current.videoStyle} style. `:"";if(O.length>0&&!f.current){for(const L of O){if(f.current)break;const F=`mv_${e.id}_char${L.id}_ref`,ke=await Pa.executeTool({name:"generate_image",arguments:{prompt:`${_}${L.description}`,count:1,size:"1:1",batchId:F,autoInsertToCanvas:!1,...k?{model:k,modelRef:H}:{}}},{mode:"queue"}),ge=ke.taskId||((l=ke.data)==null?void 0:l.taskId);if(ge){const K=await Ua(ge,(c=I.current)==null?void 0:c.signal);if(K.success){const ve=K.task||de.getTask(ge),Ve=(g=ve==null?void 0:ve.result)==null?void 0:g.url;if(Ve){const Z=(w.current.characters||[]).map(re=>re.id===L.id?{...re,referenceImageUrl:Ve}:re);await t({characters:Z})}}}}S=w.current.characters||[]}let j=v.current,B;for(let L=0;L<j.length&&!f.current;L++){j=v.current;const F=j[L];if(!F||!Da(F,pe,fe))continue;if(ce(re=>({...re,currentIndex:L,retryCount:0})),F.generated_video_url){s&&await o(F.generated_video_url);try{B=await da(F.generated_video_url,F.id,"last","last")||void 0}catch{B=void 0}continue}S=w.current.characters||[];const K=(F.character_ids||[]).length>0||B!==void 0,ve=!!F.generated_first_frame_url;if(K&&!ve&&!f.current){const re=await Wa(F,B,S);re&&(j=j.map((le,qe)=>qe===L?{...le,generated_first_frame_url:re}:le),await x(j))}let Ae=0,Z=null;for(;!f.current&&(Z||(Z=await Ya(j[L]||F,L,j)),!!Z);){U.current=Z,ce({running:!0,stopping:!1,currentIndex:L,retryCount:Ae});const re=await Ua(Z,(E=I.current)==null?void 0:E.signal);if(f.current)break;const le=re.task||de.getTask(Z),qe=(y=le==null?void 0:le.result)==null?void 0:y.url;if(re.success&&le&&qe){j=await Ka(j,L,qe),s&&await o(qe);try{B=await da(qe,F.id,"last","last")||void 0}catch{B=void 0}break}if(Ae+=1,ce({running:!0,stopping:!1,currentIndex:L,retryCount:Ae}),(le==null?void 0:le.status)===Ne.FAILED){de.retryTask(Z);continue}Z=null}U.current=null}}finally{U.current=null,I.current=null,ce({running:!1,stopping:!1,currentIndex:-1,retryCount:0})}},[G.running,Ya,he,Wa,pe,fe,x,t,e.id,k,H,o,xe,Ka,P]),hs=r.useCallback(async()=>{const s=br(e,u);await x(s.shots),await t({characters:s.characters})},[u,e.characters,x,t]),ca=r.useMemo(()=>{const[s,n]=Xe.split(":").map(Number);if(!s||!n)return{};const l=Math.round(54*s/n);return{width:Math.max(l,48),height:l<48?Math.round(48*n/s):54}},[Xe]);return a.jsxDEV("div",{className:"va-page",children:[a.jsxDEV("div",{className:"va-batch-config",children:[a.jsxDEV("div",{className:"va-batch-config-title",children:"批量生成配置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1194,columnNumber:9},void 0),a.jsxDEV(Ws,{images:R,onImagesChange:d,multiple:!0,label:"参考图 (可选)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1195,columnNumber:9},void 0),N.length>0&&a.jsxDEV("div",{className:"va-characters",children:[a.jsxDEV("div",{className:"va-characters-title",children:"角色"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1198,columnNumber:13},void 0),N.map(s=>a.jsxDEV("div",{className:"va-character-item",children:[a.jsxDEV("div",{className:"va-character-info",children:[a.jsxDEV("span",{className:"va-character-name",children:s.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1202,columnNumber:19},void 0),a.jsxDEV("span",{className:"va-character-desc",children:s.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1203,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1201,columnNumber:17},void 0),a.jsxDEV("div",{className:"va-character-ref",children:[s.referenceImageUrl?a.jsxDEV("div",{className:"va-character-ref-thumb",children:[a.jsxDEV("img",{src:s.referenceImageUrl,alt:s.name,referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1208,columnNumber:23},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>void Me(s.id,void 0),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1209,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1207,columnNumber:21},void 0):a.jsxDEV("span",{className:"va-character-ref-empty",children:"未设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1212,columnNumber:21},void 0),a.jsxDEV("button",{onClick:()=>me(s),children:"生成"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1214,columnNumber:19},void 0),a.jsxDEV("button",{onClick:()=>M(s.id),children:"素材库"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1215,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1205,columnNumber:17},void 0)]},s.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1200,columnNumber:15},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1197,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-product-form",children:[a.jsxDEV("div",{className:"va-model-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"图片模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1223,columnNumber:13},void 0),a.jsxDEV(Ke,{variant:"form",selectedModel:k,selectedSelectionKey:We(k,H),onSelect:Y,models:V,placement:"down",placeholder:"选择图片模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1224,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1222,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-model-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1229,columnNumber:13},void 0),a.jsxDEV(Ke,{variant:"form",selectedModel:Q,selectedSelectionKey:We(Q,ee),onSelect:J,models:q,placement:"down",placeholder:"选择视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1230,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-segment-duration-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"单段"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1234,columnNumber:15},void 0),a.jsxDEV("select",{className:"va-form-select",value:String(se),onChange:s=>te(parseInt(s.target.value,10)),disabled:Ee.length<=1,children:Ee.map(s=>a.jsxDEV("option",{value:s.value,children:s.label},s.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1239,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1235,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1233,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-segment-duration-select",children:[a.jsxDEV("label",{className:"va-model-label",children:"尺寸"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1244,columnNumber:15},void 0),a.jsxDEV("select",{className:"va-form-select",value:W,onChange:s=>ne(s.target.value),disabled:Se.length<=1,children:Se.map(s=>a.jsxDEV("option",{value:s.value,children:s.label},s.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1252,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1245,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1243,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1228,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1221,columnNumber:9},void 0),G.running&&a.jsxDEV("div",{className:"va-batch-config-title",children:["正在串行生成第 ",Math.max(G.currentIndex+1,1),"/",u.length," 段",G.retryCount>0?`,已重试 ${G.retryCount} 次`:""]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1259,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-page-actions",children:[h&&a.jsxDEV("button",{onClick:h,children:"重新开始"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1265,columnNumber:25},void 0),a.jsxDEV("button",{onClick:hs,children:"重置生成"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1266,columnNumber:11},void 0),a.jsxDEV("label",{className:"va-inline-checkbox",children:[a.jsxDEV("input",{type:"checkbox",checked:xe,onChange:s=>Ye(s.target.checked)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1268,columnNumber:13},void 0),"生成后插入画布"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1267,columnNumber:11},void 0),a.jsxDEV("button",{onClick:vs,disabled:G.running,children:"全部→生成视频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1275,columnNumber:11},void 0),G.running&&a.jsxDEV("button",{onClick:gs,children:G.stopping?"停止中…":"停止全部生成"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1277,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1264,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1193,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-shots",children:u.map((s,n)=>a.jsxDEV(za,{shot:s,index:n,actions:a.jsxDEV(a.Fragment,{children:[s.generated_first_frame_url?a.jsxDEV("div",{className:"va-shot-frame-thumb",style:ca,onMouseEnter:l=>ta(s.generated_first_frame_url,"image",l),onMouseLeave:na,children:[a.jsxDEV("img",{src:s.generated_first_frame_url,alt:"首帧",referrerPolicy:"no-referrer",onClick:()=>ba(s)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1292,columnNumber:19},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>ya(s.id,"first"),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1294,columnNumber:19},void 0),a.jsxDEV("button",{className:"va-shot-frame-regen",onClick:()=>ba(s),children:"↻"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1295,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1289,columnNumber:17},void 0):s.first_frame_prompt||s.description?a.jsxDEV("span",{className:"va-shot-frame-btn-group",children:[a.jsxDEV("button",{onClick:()=>ba(s),children:"生成首帧"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1299,columnNumber:21},void 0),a.jsxDEV(He,{content:"从素材库选择",showArrow:!1,children:a.jsxDEV("button",{className:"va-shot-frame-library-btn",onClick:()=>Je({shotId:s.id,assetType:"first"}),children:a.jsxDEV(Aa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1307,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1301,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1300,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1298,columnNumber:19},void 0):null,(()=>{const l=Qe(s,n);return s.generated_last_frame_url?a.jsxDEV("div",{className:"va-shot-frame-thumb",style:ca,onMouseEnter:c=>ta(s.generated_last_frame_url,"image",c),onMouseLeave:na,children:[a.jsxDEV("img",{src:s.generated_last_frame_url,alt:"尾帧",referrerPolicy:"no-referrer",onClick:()=>oa(s,n)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1319,columnNumber:23},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>ya(s.id,"last"),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1321,columnNumber:23},void 0),a.jsxDEV("button",{className:"va-shot-frame-regen",onClick:()=>oa(s,n),children:"↻"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1322,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1316,columnNumber:21},void 0):!s.generated_last_frame_url&&l?a.jsxDEV("div",{className:"va-shot-frame-thumb va-shot-frame-thumb--borrowed",style:ca,onMouseEnter:c=>ta(l,"image",c),onMouseLeave:na,children:[a.jsxDEV("img",{src:l,alt:"尾帧(下一镜头首帧)",referrerPolicy:"no-referrer",onClick:()=>oa(s,n)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1331,columnNumber:23},void 0),a.jsxDEV("span",{className:"va-shot-frame-label",children:"下一镜头首帧"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1333,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1328,columnNumber:21},void 0):s.last_frame_prompt||s.description?a.jsxDEV("span",{className:"va-shot-frame-btn-group",children:[a.jsxDEV("button",{onClick:()=>oa(s,n),children:"生成尾帧"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1340,columnNumber:23},void 0),a.jsxDEV(He,{content:"从素材库选择",showArrow:!1,children:a.jsxDEV("button",{className:"va-shot-frame-library-btn",onClick:()=>Je({shotId:s.id,assetType:"last"}),children:a.jsxDEV(Aa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1348,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1342,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1341,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1339,columnNumber:21},void 0):null})(),s.generated_video_url?a.jsxDEV("div",{className:"va-shot-video-wrap",children:[a.jsxDEV("div",{className:"va-shot-frame-thumb",style:ca,onMouseEnter:l=>ta(s.generated_video_url,"video",l),onMouseLeave:na,children:[a.jsxDEV(zs,{src:s.generated_video_url,alt:"生成视频缩略图",className:"va-shot-frame-media",thumbnailSize:"small",onClick:()=>xa(s,n),videoProps:{muted:!0,preload:"metadata",title:"重新生成视频"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1361,columnNumber:21},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>ya(s.id,"video"),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1373,columnNumber:21},void 0),a.jsxDEV("button",{className:"va-shot-frame-regen",onClick:()=>xa(s,n),children:"↻"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1374,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1358,columnNumber:19},void 0),(n>0||n<u.length-1)&&a.jsxDEV("div",{className:"va-shot-frame-transfer",children:[n>0&&a.jsxDEV(He,{content:"提取首帧 → 前一片段尾帧",showArrow:!1,children:a.jsxDEV("button",{className:"va-shot-frame-transfer-btn",onClick:()=>Ba(s,n,"prev-last"),children:a.jsxDEV(Os,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1387,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1383,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1379,columnNumber:25},void 0),n<u.length-1&&a.jsxDEV(He,{content:"提取尾帧 → 后一片段首帧",showArrow:!1,children:a.jsxDEV("button",{className:"va-shot-frame-transfer-btn",onClick:()=>Ba(s,n,"next-first"),children:a.jsxDEV(Rs,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1400,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1396,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1392,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1377,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1357,columnNumber:17},void 0):s.description?a.jsxDEV("span",{className:"va-shot-frame-btn-group",children:[a.jsxDEV("button",{onClick:()=>xa(s,n),children:"生成视频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1409,columnNumber:19},void 0),a.jsxDEV(He,{content:"从素材库插入视频",showArrow:!1,children:a.jsxDEV("button",{className:"va-shot-frame-library-btn",onClick:()=>Je({shotId:s.id,assetType:"video"}),children:a.jsxDEV(Aa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1417,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1411,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1410,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1408,columnNumber:17},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1287,columnNumber:13},void 0)},s.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1286,columnNumber:11},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1284,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-page-actions mv-generate-footer-actions",children:[a.jsxDEV("button",{onClick:()=>void ra(),disabled:u.length===0,children:"脚本插入画布"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1428,columnNumber:9},void 0),a.jsxDEV("button",{onClick:()=>void X(),disabled:T||u.length===0,children:T?`素材下载 ${C}%`:"素材下载 ZIP"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1431,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1427,columnNumber:7},void 0),a.jsxDEV("div",{className:"mv-generate-footer-hint",children:"若有素材未打包成功,解压后在 ZIP 根目录运行 `sh 00.补全下载.sh` 即可按 manifest 补全下载。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1435,columnNumber:7},void 0),a.jsxDEV(Za,{isOpen:!!je,onClose:()=>Je(null),mode:Xa.SELECT,filterType:(je==null?void 0:je.assetType)==="video"?Sa.VIDEO:Sa.IMAGE,onSelect:ms,selectButtonText:(je==null?void 0:je.assetType)==="video"?"使用此视频":"使用此图片"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1439,columnNumber:7},void 0),a.jsxDEV(Za,{isOpen:!!z,onClose:()=>M(null),mode:Xa.SELECT,filterType:Sa.IMAGE,onSelect:s=>{z&&Me(z,s.url),M(null)},selectButtonText:"使用此图片"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1448,columnNumber:7},void 0),ze&&Gs.createPortal(a.jsxDEV("div",{className:"mv-hover-preview",style:{left:`${ze.x}px`,top:`${ze.y}px`},onMouseEnter:ps,onMouseLeave:fs,children:ze.type==="image"?a.jsxDEV("img",{src:ze.url,alt:"Preview",referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1470,columnNumber:13},void 0):a.jsxDEV("video",{src:ze.url,controls:!0,muted:!0,preload:"metadata"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1472,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1463,columnNumber:9},void 0),document.body)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx",lineNumber:1192,columnNumber:5},void 0)};function yr(e){switch(e){case Ne.COMPLETED:return"已完成";case Ne.PROCESSING:return"进行中";case Ne.PENDING:return"等待中";case Ne.FAILED:return"失败";default:return""}}function jr(e){switch(e){case Ne.COMPLETED:return"completed";case Ne.PROCESSING:return"processing";case Ne.PENDING:return"pending";case Ne.FAILED:return"failed";default:return"pending"}}function wr(e){const i=new Date(e);return`${i.getMonth()+1}/${i.getDate()} ${String(i.getHours()).padStart(2,"0")}:${String(i.getMinutes()).padStart(2,"0")}`}const kr=({records:e,onSelect:i,onRecordsChange:m,showStarredOnly:h=!1})=>{const u=h?e.filter(d=>d.starred):e,[p,b]=r.useState(null),[D,P]=r.useState(null),{tasks:w}=cs(),v=r.useMemo(()=>{const d=new Map,N=new Set(e.map(M=>M.id)),z=()=>({storyboard:[],music:[],video:[],image:[]});for(const M of w){const V=M.params;if(M.type===Ce.CHAT&&V.mvCreatorAction==="storyboard"&&typeof V.mvCreatorRecordId=="string"&&N.has(V.mvCreatorRecordId)){const $=V.mvCreatorRecordId;ua(d,$,"storyboard",M,z);continue}const q=typeof V.batchId=="string"?V.batchId:"";if(!q.startsWith("mv_"))continue;const k=Hs(q,"mv_",N);k&&(M.type===Ce.AUDIO?ua(d,k,"music",M,z):M.type===Ce.VIDEO?ua(d,k,"video",M,z):M.type===Ce.IMAGE&&ua(d,k,"image",M,z))}return Ls(d)},[w,e]),f=r.useCallback(async(d,N)=>{d.stopPropagation();const z=await ae(N.id,{starred:!N.starred});m(z)},[m]),I=r.useCallback((d,N)=>{d.stopPropagation(),P(N)},[]),U=r.useCallback(async()=>{if(!D)return;const d=await ar(D);m(d),P(null)},[m,D]),R=r.useCallback((d,N)=>{d.stopPropagation(),b(z=>z===N?null:N)},[]);return u.length===0?a.jsxDEV("div",{className:"va-page va-empty",children:a.jsxDEV("span",{children:h?"暂无收藏":"暂无 MV 记录"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:145,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:144,columnNumber:7},void 0):a.jsxDEV(a.Fragment,{children:[a.jsxDEV("div",{className:"va-page",children:a.jsxDEV("div",{className:"va-history-list",children:u.map(d=>{var V;const N=v.get(d.id),z=N?N.storyboard.length+N.music.length+N.video.length+N.image.length:0,M=p===d.id;return a.jsxDEV("div",{className:"va-history-item",onClick:()=>i(d),children:[a.jsxDEV("div",{className:"va-history-header",children:[a.jsxDEV("span",{className:"va-history-source",children:[a.jsxDEV("span",{role:"img","aria-label":"mv",children:"🎬"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:165,columnNumber:21},void 0)," ",d.sourceLabel]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:164,columnNumber:19},void 0),a.jsxDEV("button",{className:`va-star-btn ${d.starred?"starred":""}`,onClick:q=>f(q,d),children:d.starred?"★":"☆"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:168,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:163,columnNumber:17},void 0),a.jsxDEV("div",{className:"va-history-meta",children:[z>0&&a.jsxDEV("button",{className:`va-history-expand-btn ${M?"expanded":""}`,onClick:q=>R(q,d.id),children:[a.jsxDEV(Fs,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:181,columnNumber:23},void 0),a.jsxDEV("span",{children:M?"收起":"关联任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:182,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:177,columnNumber:21},void 0),a.jsxDEV("span",{children:new Date(d.createdAt).toLocaleString()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:185,columnNumber:19},void 0),a.jsxDEV("button",{className:"va-history-delete",onClick:q=>I(q,d.id),children:"删除"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:186,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:175,columnNumber:17},void 0),a.jsxDEV("div",{className:"ma-history-title",children:d.musicTitle||"未命名 MV"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:193,columnNumber:17},void 0),a.jsxDEV("div",{className:"ma-history-summary",children:((V=d.creationPrompt)==null?void 0:V.slice(0,80))||"暂无描述"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:194,columnNumber:17},void 0),d.generatedClips&&d.generatedClips.length>0&&a.jsxDEV("div",{className:"ma-history-clips-count",children:[d.generatedClips.length," 首音乐",d.editedShots?` · ${d.editedShots.length} 个镜头`:""]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:198,columnNumber:19},void 0),M&&N&&a.jsxDEV("div",{className:"va-history-related",onClick:q=>q.stopPropagation(),children:[N.music.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["音乐生成 (",N.music.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:207,columnNumber:25},void 0),N.music.map(q=>a.jsxDEV(pa,{task:q},q.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:211,columnNumber:27},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:206,columnNumber:23},void 0),N.storyboard.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["分镜规划 (",N.storyboard.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:217,columnNumber:25},void 0),N.storyboard.map(q=>a.jsxDEV(pa,{task:q},q.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:221,columnNumber:27},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:216,columnNumber:23},void 0),N.video.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["视频生成 (",N.video.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:227,columnNumber:25},void 0),N.video.map(q=>a.jsxDEV(pa,{task:q},q.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:231,columnNumber:27},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:226,columnNumber:23},void 0),N.image.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["图片生成 (",N.image.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:237,columnNumber:25},void 0),N.image.map(q=>a.jsxDEV(pa,{task:q},q.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:241,columnNumber:27},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:236,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:204,columnNumber:19},void 0)]},d.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:162,columnNumber:15},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:153,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:152,columnNumber:7},void 0),a.jsxDEV(Bs,{open:D!==null,title:"确认删除",description:"确定要删除这条 MV 记录吗?此操作不可撤销。",confirmText:"删除",cancelText:"取消",danger:!0,onOpenChange:d=>{d||P(null)},onConfirm:U},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:253,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:151,columnNumber:5},void 0)},pa=({task:e})=>a.jsxDEV(He,{content:yr(e.status),showArrow:!1,children:a.jsxDEV("div",{className:"va-history-related-task",children:[a.jsxDEV("span",{className:`va-history-related-task-status ${jr(e.status)}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:270,columnNumber:7},void 0),a.jsxDEV("span",{className:"va-history-related-task-prompt",children:String(e.params.prompt||"").slice(0,40)||e.id.slice(0,8)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:273,columnNumber:7},void 0),a.jsxDEV("span",{className:"va-history-related-task-time",children:wr(e.createdAt)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:276,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:269,columnNumber:5},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/pages/HistoryPage.tsx",lineNumber:268,columnNumber:3},void 0),qr=()=>{var R;const[e,i]=r.useState("analyze"),[m,h]=r.useState(null),[u,p]=r.useState([]),[b,D]=r.useState(!1);r.useEffect(()=>{va().then(p)},[]),r.useEffect(()=>{let d=!1;const N=new Set,z=async V=>{if(N.has(V.id))return;if(ur(V)){N.add(V.id);try{const k=await mr(V)||await $a(V);if(!k||d)return;p(k.records),h($=>($==null?void 0:$.id)===k.record.id?k.record:$)}catch(k){console.error("[MVCreator] Failed to sync storyboard task:",k)}finally{N.delete(V.id)}return}const q=pr(V);if(q){N.add(V.id);try{const k=await fr(V,q);if(!k||d)return;p(k.records),h($=>($==null?void 0:$.id)===k.record.id?k.record:$)}catch(k){console.error("[MVCreator] Failed to sync music task:",k)}finally{N.delete(V.id)}}};de.getAllTasks().forEach(V=>{V.status==="completed"&&z(V)});const M=de.observeTaskUpdates().subscribe(V=>{V.task.status==="completed"&&z(V.task)});return()=>{d=!0,M.unsubscribe()}},[]);const P=r.useCallback(d=>{h(d)},[]),w=r.useCallback(d=>{h(d),d.editedShots&&d.editedShots.length>0?i("generate"):(d.selectedClipId,i("analyze"))},[]),v=r.useCallback(d=>{h(d)},[]),f=r.useCallback(()=>{h(null),i("analyze")},[]),I=r.useCallback(d=>{i(d)},[]),U=!!(m!=null&&m.editedShots&&m.editedShots.length>0);return a.jsxDEV("div",{className:"video-analyzer music-analyzer mv-creator",children:[a.jsxDEV("div",{className:"va-nav",children:e==="history"?a.jsxDEV(a.Fragment,{children:[a.jsxDEV("button",{className:"va-nav-back",onClick:()=>i("analyze"),children:"←"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:135,columnNumber:13},void 0),a.jsxDEV("span",{className:"va-nav-title",children:b?"收藏":"历史记录"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:136,columnNumber:13},void 0),a.jsxDEV("button",{className:`va-nav-btn ${b?"active":""}`,onClick:()=>D(d=>!d),children:b?"★ 收藏":"☆ 全部"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:137,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:134,columnNumber:11},void 0):a.jsxDEV(a.Fragment,{children:[a.jsxDEV(sr,{current:e,onNavigate:I,hasRecord:!!m,hasShots:U},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:146,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-nav-actions",children:[a.jsxDEV("button",{className:"va-nav-btn",onClick:()=>{D(!1),i("history")},children:[a.jsxDEV("span",{role:"img","aria-label":"history",children:"📋"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:154,columnNumber:17},void 0),u.length>0&&a.jsxDEV("span",{className:"va-nav-count",children:u.length},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:155,columnNumber:40},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:153,columnNumber:15},void 0),a.jsxDEV("button",{className:"va-nav-btn",onClick:()=>{D(!0),i("history")},children:[a.jsxDEV("span",{role:"img","aria-label":"starred",children:"⭐"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:158,columnNumber:17},void 0),u.filter(d=>d.starred).length>0&&a.jsxDEV("span",{className:"va-nav-count",children:u.filter(d=>d.starred).length},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:160,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:157,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:152,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:145,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:132,columnNumber:7},void 0),e==="analyze"&&a.jsxDEV(lr,{existingRecord:m,onComplete:P,onRecordsChange:p,onCreateNew:f,onNext:(R=m==null?void 0:m.editedShots)!=null&&R.length?()=>i("script"):void 0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:169,columnNumber:9},void 0),e==="script"&&m&&U&&a.jsxDEV(hr,{record:m,onRecordUpdate:v,onRecordsChange:p,onNext:()=>i("generate")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:178,columnNumber:9},void 0),e==="generate"&&m&&U&&a.jsxDEV(xr,{record:m,onRecordUpdate:v,onRecordsChange:p,onRestart:f},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:186,columnNumber:9},void 0),e==="history"&&a.jsxDEV(kr,{records:u,onSelect:w,onRecordsChange:p,showStarredOnly:b},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:194,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/MVCreator.tsx",lineNumber:131,columnNumber:5},void 0)};export{qr as default};
|