aitu-app 0.6.49 → 0.6.51

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.
Files changed (136) hide show
  1. package/README.md +3 -3
  2. package/assets/{CanvasAudioPlayer-DITqjh6L.js → CanvasAudioPlayer-DniTYxIg.js} +1 -1
  3. package/assets/{ChatMessagesArea-D9jmGx5a.js → ChatMessagesArea-DlsFUxBe.js} +2 -2
  4. package/assets/{KnowledgeBaseContent-za__rOJH.js → KnowledgeBaseContent-5Sp2Y4AU.js} +3 -3
  5. package/assets/{MVCreator-CTG316DL.js → MVCreator-Co634ejf.js} +1 -1
  6. package/assets/{ModelBenchmarkWorkbench-JCQglDx0.js → ModelBenchmarkWorkbench-BivFDW3S.js} +1 -1
  7. package/assets/{MusicAnalyzer-QQf3iMVf.js → MusicAnalyzer-DzNmAG09.js} +1 -1
  8. package/assets/{MusicAnalyzer-DE_rzhdo.js → MusicAnalyzer-VBVlVQKH.js} +1 -1
  9. package/assets/{ResizableDivider-CNJfwuMZ.js → ResizableDivider-4DfyW2jN.js} +1 -1
  10. package/assets/{TaskQueuePanel-CcKV6Mtu.js → TaskQueuePanel-qi_vc0Ap.js} +1 -1
  11. package/assets/{VideoAnalyzer-4jAswALN.js → VideoAnalyzer-CFfeiTGz.js} +1 -1
  12. package/assets/{arc-CUJYo2bm.js → arc-7xYmprhZ.js} +1 -1
  13. package/assets/{arc-Do7iheP0.js → arc-DQ-An0sn.js} +1 -1
  14. package/assets/{batch-image-generation-BcGzhZc6.js → batch-image-generation-DZFfTPJI.js} +1 -1
  15. package/assets/{blockDiagram-38ab4fdb-7dWD8NFK.js → blockDiagram-38ab4fdb-Df6IfaNP.js} +1 -1
  16. package/assets/{blockDiagram-38ab4fdb-CQhYv8hA.js → blockDiagram-38ab4fdb-HpP8rPNJ.js} +1 -1
  17. package/assets/{browser-Dlc7rtso.js → browser-BfQXeJDQ.js} +1 -1
  18. package/assets/{c4Diagram-3d4e48cf-DcDSmMC1.js → c4Diagram-3d4e48cf-Cw80xOlM.js} +1 -1
  19. package/assets/{c4Diagram-3d4e48cf-YiNiIQMx.js → c4Diagram-3d4e48cf-e6uo4LtY.js} +1 -1
  20. package/assets/channel-BOLP-sjD.js +1 -0
  21. package/assets/channel-D3afY4hf.js +1 -0
  22. package/assets/{classDiagram-70f12bd4-uRbi4Ob8.js → classDiagram-70f12bd4-C8X9ZIPo.js} +1 -1
  23. package/assets/{classDiagram-70f12bd4--vcKyE3X.js → classDiagram-70f12bd4-D50-TJb_.js} +1 -1
  24. package/assets/{classDiagram-v2-f2320105-CJVRZ6AN.js → classDiagram-v2-f2320105-CfUr0WEa.js} +1 -1
  25. package/assets/{classDiagram-v2-f2320105-vzjVMHkr.js → classDiagram-v2-f2320105-LnhMJ6Ei.js} +1 -1
  26. package/assets/{clipper-DOGfacWv.js → clipper-CinpowZv.js} +1 -1
  27. package/assets/clone-BfVzbJFM.js +1 -0
  28. package/assets/{createText-2e5e7dd3-Caeqt6QH.js → createText-2e5e7dd3-Titb6mNG.js} +1 -1
  29. package/assets/{createText-2e5e7dd3-BwZkEiuo.js → createText-2e5e7dd3-v_4QCNiY.js} +1 -1
  30. package/assets/{edges-e0da2a9e-izyAbn2P.js → edges-e0da2a9e-BiWTBg0W.js} +1 -1
  31. package/assets/{edges-e0da2a9e-C0phcDTf.js → edges-e0da2a9e-yO08pQmB.js} +1 -1
  32. package/assets/{erDiagram-9861fffd-CbdcBVpG.js → erDiagram-9861fffd-BAIrWtoE.js} +1 -1
  33. package/assets/{erDiagram-9861fffd-2xZLFO3_.js → erDiagram-9861fffd-DiRw24jf.js} +1 -1
  34. package/assets/{flowDb-956e92f1-CKDRVial.js → flowDb-956e92f1-BCpUX4j_.js} +1 -1
  35. package/assets/{flowDb-956e92f1-X_4p-qaU.js → flowDb-956e92f1-CEjKD8Mw.js} +1 -1
  36. package/assets/{flowDiagram-66a62f08-DBi4rRPf.js → flowDiagram-66a62f08-67cRfEo5.js} +1 -1
  37. package/assets/{flowDiagram-66a62f08-CujQt6CJ.js → flowDiagram-66a62f08-uywt5ylg.js} +1 -1
  38. package/assets/flowDiagram-v2-96b9c2cf-DXlCvOKr.js +1 -0
  39. package/assets/flowDiagram-v2-96b9c2cf-D_-gUObz.js +1 -0
  40. package/assets/{flowchart-elk-definition-4a651766-Uf06y1Ck.js → flowchart-elk-definition-4a651766-17y70AOQ.js} +1 -1
  41. package/assets/{flowchart-elk-definition-4a651766-wpAztAJn.js → flowchart-elk-definition-4a651766-AuOQsJmv.js} +1 -1
  42. package/assets/{ganttDiagram-c361ad54-CIb_MFVi.js → ganttDiagram-c361ad54-DysfI_sm.js} +1 -1
  43. package/assets/{ganttDiagram-c361ad54-B3JxRUoo.js → ganttDiagram-c361ad54-FNsEB1lK.js} +1 -1
  44. package/assets/{gitGraphDiagram-72cf32ee-PuJBoZww.js → gitGraphDiagram-72cf32ee-BKh2SFyq.js} +1 -1
  45. package/assets/{gitGraphDiagram-72cf32ee-i6oLazGK.js → gitGraphDiagram-72cf32ee-BXonjLg1.js} +1 -1
  46. package/assets/{graph-DUQ4GGpV.js → graph-CUWN3bJK.js} +1 -1
  47. package/assets/{graph-CbDG5PTO.js → graph-DyXuG_lL.js} +1 -1
  48. package/assets/{index-3862675e-CLvnWYyN.js → index-3862675e-BXZCf57h.js} +1 -1
  49. package/assets/{index-3862675e-CxQdmW6r.js → index-3862675e-BgcnjX2V.js} +1 -1
  50. package/assets/{index-BYAyLEaG.js → index-B2KFRvht.js} +1 -1
  51. package/assets/{index-Ayt_kr_j.js → index-BFMFfpEL.js} +1 -1
  52. package/assets/{index-Bc75bQXQ.js → index-BHTsu5Dl.js} +1 -1
  53. package/assets/{index-B0aeak-l.js → index-BRXPd99N.js} +1 -1
  54. package/assets/{index-BWokxWXg.js → index-BXdWvHxk.js} +1 -1
  55. package/assets/{index-hGrN05cs.js → index-BbUIOxRC.js} +1 -1
  56. package/assets/{index-BjxNPKa3.js → index-Bc6-cvww.js} +1 -1
  57. package/assets/{index-DlZybecc.js → index-BgixTFW9.js} +1 -1
  58. package/assets/{index-3K3oLjal.js → index-CCK1RpME.js} +1 -1
  59. package/assets/{index-CGq-gcht.js → index-CL33grzk.js} +1 -1
  60. package/assets/{index-EYhL1Kgt.js → index-CTwkVk9V.js} +1 -1
  61. package/assets/{index-fqJaUvT1.js → index-CnPyiqyj.js} +1 -1
  62. package/assets/{index-CdYUDSvm.js → index-Cnx6rG4x.js} +1 -1
  63. package/assets/{index-BkvYpt-1.js → index-Ct0HLgCs.js} +1 -1
  64. package/assets/{index-04BPVAKr.js → index-Cv23AZDU.js} +1 -1
  65. package/assets/{index-BECtRsXJ.js → index-D3j_X8x1.js} +1 -1
  66. package/assets/{index-DHQdBbnC.js → index-DF6VIcYc.js} +1 -1
  67. package/assets/{index-CJCAjGj3.js → index-DNlPztrW.js} +1 -1
  68. package/assets/{index-BAeTUD9a.js → index-DYdsWczf.js} +1 -1
  69. package/assets/{index-CxEkGLrr.js → index-DeNgS6Ju.js} +2 -2
  70. package/assets/{index-BUB5I7zd.js → index-Deo-f1LD.js} +1 -1
  71. package/assets/{index-BScFd-2h.js → index-DkxPG60I.js} +1 -1
  72. package/assets/{index-DzlsyVkU.js → index-PAijoLEl.js} +1 -1
  73. package/assets/{index-Bnb0fjWR.js → index-RdktjkRh.js} +1 -1
  74. package/assets/{index-c441JIOr.js → index-S9hmkrOw.js} +1 -1
  75. package/assets/{index-BZS4gNhO.js → index-TGdHUoxQ.js} +1 -1
  76. package/assets/{index-DYdelMnT.js → index-_hI1NnWM.js} +1 -1
  77. package/assets/{index-zV_AIntM.js → index-cesL0b0J.js} +1 -1
  78. package/assets/{index-DmWG413C.js → index-gt3JjsjQ.js} +1 -1
  79. package/assets/{index-Dk5t_-56.js → index-zC8JwbY7.js} +3 -3
  80. package/assets/{infoDiagram-f8f76790-D_TYtc3S.js → infoDiagram-f8f76790-292LowK4.js} +1 -1
  81. package/assets/{infoDiagram-f8f76790-BYO9kBqO.js → infoDiagram-f8f76790-D3QOOfzI.js} +1 -1
  82. package/assets/{journeyDiagram-49397b02-Dv5EEshV.js → journeyDiagram-49397b02-CZbSNd2e.js} +1 -1
  83. package/assets/{journeyDiagram-49397b02-DWfiJTLK.js → journeyDiagram-49397b02-DjY3ZWrB.js} +1 -1
  84. package/assets/{layout-Bc2296BZ.js → layout-DW8XIKKQ.js} +1 -1
  85. package/assets/{layout-Dm28IvOg.js → layout-Dkm4PfbF.js} +1 -1
  86. package/assets/{line-DTTPRZLU.js → line-BnbHDXDY.js} +1 -1
  87. package/assets/{line-C3mpslQb.js → line-D3s3tZAD.js} +1 -1
  88. package/assets/{linear-YwuGF1HZ.js → linear-BzA5taZC.js} +1 -1
  89. package/assets/{linear-g8AgbOem.js → linear-D93C0Xkr.js} +1 -1
  90. package/assets/{main-sSl0uAQQ.js → main-DHHQqQ-d.js} +60 -60
  91. package/assets/{mermaid.core-GIkiJOrg.js → mermaid.core-FQIGteI2.js} +3 -3
  92. package/assets/{mindmap-definition-fc14e90a-Chuh4Ixc.js → mindmap-definition-fc14e90a-8-u-W6s5.js} +1 -1
  93. package/assets/{mindmap-definition-fc14e90a-D_ZKvIES.js → mindmap-definition-fc14e90a-NUDHDzJO.js} +1 -1
  94. package/assets/{photo-wall-splitter-CY0T_wNE.js → photo-wall-splitter-CePSUK_z.js} +1 -1
  95. package/assets/{pieDiagram-8a3498a8-Dah8ahbr.js → pieDiagram-8a3498a8-Byrby69W.js} +1 -1
  96. package/assets/{pieDiagram-8a3498a8-DRsICc_f.js → pieDiagram-8a3498a8-DffbJprE.js} +1 -1
  97. package/assets/{quadrantDiagram-120e2f19-gL-_zV58.js → quadrantDiagram-120e2f19-IV-hRQSH.js} +1 -1
  98. package/assets/{quadrantDiagram-120e2f19-Fh6InPVY.js → quadrantDiagram-120e2f19-ZLubYGP0.js} +1 -1
  99. package/assets/{requirementDiagram-deff3bca-CNSkJJCh.js → requirementDiagram-deff3bca-BLkeeBM6.js} +1 -1
  100. package/assets/{requirementDiagram-deff3bca-CfDffyTL.js → requirementDiagram-deff3bca-CYYGgqwK.js} +1 -1
  101. package/assets/{sankeyDiagram-04a897e0-JvhHugQc.js → sankeyDiagram-04a897e0-DqQ8XmlG.js} +1 -1
  102. package/assets/{sankeyDiagram-04a897e0-Bk-KjkRU.js → sankeyDiagram-04a897e0-Dsx55Ewu.js} +1 -1
  103. package/assets/{sequenceDiagram-704730f1-DtYYZkJD.js → sequenceDiagram-704730f1-BE2GupM-.js} +1 -1
  104. package/assets/{sequenceDiagram-704730f1-Hcr6n9p8.js → sequenceDiagram-704730f1-BjsJ2Fyk.js} +1 -1
  105. package/assets/{stateDiagram-587899a1-BBe_EhAD.js → stateDiagram-587899a1-BhWF_B5s.js} +1 -1
  106. package/assets/{stateDiagram-587899a1-DqdI8yJY.js → stateDiagram-587899a1-D0jD5lYH.js} +1 -1
  107. package/assets/{stateDiagram-v2-d93cdb3a-CR8nQq3k.js → stateDiagram-v2-d93cdb3a-DtEJKlTw.js} +1 -1
  108. package/assets/{stateDiagram-v2-d93cdb3a-BFy9jG1p.js → stateDiagram-v2-d93cdb3a-R2E6fUDd.js} +1 -1
  109. package/assets/{styles-6aaf32cf-B3jetBAL.js → styles-6aaf32cf-AbnAz8M7.js} +1 -1
  110. package/assets/{styles-6aaf32cf-CtTk65AO.js → styles-6aaf32cf-T10JAuyl.js} +1 -1
  111. package/assets/{styles-9a916d00-CC9GaYxg.js → styles-9a916d00-6ckRZjDF.js} +1 -1
  112. package/assets/{styles-9a916d00-BzAmphe7.js → styles-9a916d00-BUUS8Ol9.js} +1 -1
  113. package/assets/{styles-c10674c1-Db2Kd6RJ.js → styles-c10674c1-CXVifria.js} +1 -1
  114. package/assets/{styles-c10674c1-CNAwL7Ic.js → styles-c10674c1-Cu2yIWI9.js} +1 -1
  115. package/assets/{svgDrawCommon-08f97a94-JdKl-BWQ.js → svgDrawCommon-08f97a94-CqvTgLD2.js} +1 -1
  116. package/assets/{svgDrawCommon-08f97a94-C5qlB1eZ.js → svgDrawCommon-08f97a94-TeCeZL9T.js} +1 -1
  117. package/assets/{timeline-definition-85554ec2-o-R8VXA5.js → timeline-definition-85554ec2-B_Yaguja.js} +1 -1
  118. package/assets/{timeline-definition-85554ec2-DOdYNzv7.js → timeline-definition-85554ec2-CQ8AuTQS.js} +1 -1
  119. package/assets/{tool-windows-DWUG3k_L.js → tool-windows-Cxt97IUt.js} +9 -9
  120. package/assets/{ttd-dialog-BQiy0hwR.js → ttd-dialog-ti22xcDP.js} +4 -4
  121. package/assets/{useCharacters-BxKzeyv4.js → useCharacters-BaLFv1IE.js} +1 -1
  122. package/assets/{version-update-prompt-HA-CqLZW.js → version-update-prompt-Ys60lWwZ.js} +1 -1
  123. package/assets/{video-recovery-service-C0PZsfFC.js → video-recovery-service-BOoHU7ou.js} +1 -1
  124. package/assets/{workflow-generation-utils-DspPdLxa.js → workflow-generation-utils-B9mgfVRN.js} +2 -2
  125. package/assets/{xychartDiagram-e933f94c-D13oeSTj.js → xychartDiagram-e933f94c-DbCbPITY.js} +1 -1
  126. package/assets/{xychartDiagram-e933f94c-DwikDAhJ.js → xychartDiagram-e933f94c-DqcAlZUs.js} +1 -1
  127. package/idle-prefetch-manifest.json +4 -4
  128. package/package.json +1 -1
  129. package/precache-manifest.json +275 -359
  130. package/sw.js +1 -1
  131. package/version.json +2 -2
  132. package/assets/channel-CbiJkWzq.js +0 -1
  133. package/assets/channel-CmPwOS9o.js +0 -1
  134. package/assets/clone-D79TnM4U.js +0 -1
  135. package/assets/flowDiagram-v2-96b9c2cf-BLkw2ciq.js +0 -1
  136. package/assets/flowDiagram-v2-96b9c2cf-DVKQK2hY.js +0 -1
@@ -1,2 +1,2 @@
1
- import{y as a,aI as vs,nf as Ba,at as as,ng as Sa,iI as ys,nh as Ns,n4 as bs,n9 as xs,ni as hs,nj as js,nk as ws,nl as ks,n7 as zs,nd as Es,ne as Vs,nm as le,bL as qa,r as n,nn as ve,no as Oe,np as Ds,hL as He,nq as va,eK as ye,nr as ia,hS as $e,ns as Ia,nt as _a,ia as _e,nu as Us,nv as Re,nw as Ps,gK as J,nx as ss,ny as ya,nz as Qe,nA as Ss,nB as _s,nC as qs,nD as Na,cX as ea,al as ze,nE as Is,eO as Ne,nF as ba,nG as xa,gp as ha,gv as Cs,bV as Le,kZ as ns,ir as Ka,as as ja,bx as Ya,mq as As,hD as Ms,m$ as Wa,n0 as Rs,n1 as Ts,nH as Gs,jO as Fs,fW as Ls,dj as Os,eI as Hs}from"./tool-windows-DWUG3k_L.js";import{C as $s,A as na,j as Be,D as Za,d as is}from"./main-sSl0uAQQ.js";import{e as Bs,c as Ks,r as Ys,a as Ws,b as aa,w as wa,d as Zs,f as Xs}from"./workflow-generation-utils-DspPdLxa.js";/* empty css *//* empty css */import{R as Js}from"./ResizableDivider-CNJfwuMZ.js";/* empty css */const Xa=[{id:"analyze",label:"分析"},{id:"script",label:"脚本"},{id:"generate",label:"生成"}],Qs=({current:e,onNavigate:i,hasRecord:d})=>{const j=Xa.findIndex(o=>o.id===e);return a.jsxDEV("div",{className:"va-step-bar",children:Xa.map((o,g)=>{const m=o.id===e,w=g<j,k=!d&&g>0;return a.jsxDEV(vs.Fragment,{children:[g>0&&a.jsxDEV("span",{className:"va-step-arrow",children:"→"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/StepBar.tsx",lineNumber:33,columnNumber:23},void 0),a.jsxDEV("button",{className:`va-step ${m?"active":""} ${w?"past":""}`,onClick:()=>!k&&i(o.id),disabled:k,children:[a.jsxDEV("span",{className:"va-step-num",children:g+1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/StepBar.tsx",lineNumber:39,columnNumber:15},void 0),o.label]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/StepBar.tsx",lineNumber:34,columnNumber:13},void 0)]},o.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/StepBar.tsx",lineNumber:32,columnNumber:11},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/StepBar.tsx",lineNumber:25,columnNumber:5},void 0)},en=({shots:e,totalDuration:i})=>a.jsxDEV("div",{className:"va-timeline",children:e.filter(Boolean).map(d=>a.jsxDEV("div",{className:"va-timeline-segment",style:{flex:Math.max(((d.endTime??0)-(d.startTime??0))/Math.max(i,1),0),backgroundColor:d.type&&Ba[d.type]||Ba.other},title:`${d.label||"未命名镜头"} ${d.startTime??0}s-${d.endTime??0}s`},d.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/ShotTimeline.tsx",lineNumber:17,columnNumber:7},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/ShotTimeline.tsx",lineNumber:15,columnNumber:3},void 0);function Ja(e){return(e||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"")||"mp4"}function an(e){const i=e.name.split(".").pop();if(i&&i.length<=8)return Ja(i);const d=e.type.split("/")[1];return Ja(d)}async function sn(e,i){const d=an(e),o=`/__aitu_cache__/video/${`video-analyzer-source-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}.${d}`;return await as.cacheMediaFromBlob(o,e,"video",{metadata:{source:"video-analyzer-input",fileName:e.name,mimeType:e.type||"video/mp4",size:e.size}}),{type:"upload",cacheUrl:o,fileName:e.name||`video-source.${d}`,mimeType:e.type||"video/mp4",size:e.size}}async function nn(e){if(!e||e.type!=="upload")return null;const i=await as.getCachedBlob(e.cacheUrl);return i?new File([i],e.fileName||"video-source.mp4",{type:e.mimeType||i.type||"video/mp4",lastModified:Date.now()}):null}function rs(e){return Es(e,"videoAnalyzerAction",["analyze","rewrite"])}function rn(e){return Vs(e,{missingMessage:"分析任务缺少结果内容",fromStructured:i=>i})}function tn(e){const i=e.params.videoAnalyzerSourceSnapshot;if((i==null?void 0:i.type)==="youtube"||(i==null?void 0:i.type)==="upload")return i;const d=e.params.videoAnalyzerSource,j=String(e.params.videoAnalyzerSourceLabel||"").trim();return d==="youtube"&&j?{type:"youtube",youtubeUrl:j}:null}function ln(e){var d;const i=(d=e.result)==null?void 0:d.analysisData;return Array.isArray(i==null?void 0:i.editedShots)?i.editedShots:null}async function Ca(e){var S,I;if(e.status!=="completed")return null;const i=rs(e);if(!i)return null;if(i==="analyze"){const R=await Sa(),B=R.find(T=>T.analyzeTaskId===e.id);if(B)return{records:R,record:B};const X=rn(e),y=tn(e),G=e.params.videoAnalyzerSource==="upload"?"upload":"youtube",K=String(e.params.videoAnalyzerSourceLabel||(G==="youtube"?(y==null?void 0:y.type)==="youtube"?y.youtubeUrl:"":"本地视频")),F={id:ys(),createdAt:Date.now(),source:G,sourceLabel:K,sourceSnapshot:y,model:String(e.params.model||""),modelRef:e.params.modelRef||null,analysis:X,starred:!1,analyzeTaskId:e.id};return{records:await Ns(F),record:F}}const d=bs(e,"videoAnalyzerRecordId");if(!d)return null;const o=(await Sa()).find(R=>R.id===d);if(!o||o.pendingRewriteTaskId!==e.id)return null;const g=xs(e),m=ln(e),w=m||(()=>{if(!g)throw new Error("脚本改编任务缺少结果内容");const R=hs(g),B=o.editedShots||o.analysis.shots;return js(B,R)})(),k=`AI 改编 #${(((S=o.scriptVersions)==null?void 0:S.length)||0)+1}`,z=ws(w,k,(I=o.productInfo)==null?void 0:I.prompt),b=ks(o,z);return zs(o,{...b,pendingRewriteTaskId:null,storyboardGeneratedAt:Date.now()},le)}function on(e){return rs(e)!==null}const ka="gemini-3.1-pro-preview",za="video-analyzer:model",dn="aitu:settings:provider-nav";function un(e){return(e/1024/1024).toFixed(1)+"MB"}const cn=({existingRecord:e,onComplete:i,onRecordsChange:d,onCreateNew:j,onNext:o})=>{const{setAppState:g}=qa(),[m,w]=n.useState("upload"),[k,z]=n.useState(""),[b,S]=n.useState(null),[I,R]=n.useState(()=>(e==null?void 0:e.model)||ve(za,ka).modelId),[B,X]=n.useState(()=>(e==null?void 0:e.modelRef)||ve(za,ka).modelRef),y=n.useCallback((l,x)=>{R(l),X(x||null),Oe(za,l,x)},[]),[G,K]=n.useState(!1),[F,U]=n.useState(null),[T,_]=n.useState(""),[oe,M]=n.useState(""),[L,O]=n.useState((e==null?void 0:e.analysis)||null),C=Ds(),P=n.useRef(null),H=n.useRef(null),Y=n.useMemo(()=>{if(H.current&&URL.revokeObjectURL(H.current),!b)return H.current=null,null;const l=URL.createObjectURL(b);return H.current=l,l},[b]);n.useEffect(()=>()=>{H.current&&URL.revokeObjectURL(H.current)},[]),n.useEffect(()=>{let l=!1;return(async()=>{if(!e){if(F)return;O(null),w("upload"),z(""),S(null),M("");return}O(e.analysis||null),R(e.model||ka),X(e.modelRef||null),M("");const h=e.sourceSnapshot;if((h==null?void 0:h.type)==="upload"){w("upload"),z("");const ee=await nn(h);if(l)return;S(ee),ee||M("原上传视频缓存已失效,无法自动回填视频");return}if(e.source==="upload"){w("upload"),z(""),S(null),M("这条旧历史未保存原视频,无法自动回填视频");return}w("youtube"),S(null),(h==null?void 0:h.type)==="youtube"?z(h.youtubeUrl):e.source==="youtube"?z(e.sourceLabel||""):z("")})(),()=>{l=!0}},[e]);const Z=He("text"),$=n.useMemo(()=>Z.filter(l=>/^gemini/i.test(l.id)),[Z]),de=n.useMemo(()=>{const l=C.find(x=>x.id===va);return!!(l!=null&&l.apiKey.trim())},[C]),he=(B==null?void 0:B.profileId)===va,De=n.useCallback(()=>{const l={action:"select",profileId:va};window.__aituPendingProviderNavigationIntent=l,window.dispatchEvent(new CustomEvent(dn,{detail:l})),g(x=>({...x,openSettings:!0}))},[g]),me=n.useCallback(l=>{var h;const x=(h=l.target.files)==null?void 0:h[0];x&&(S(x),M(""),O(null))},[]),Ue=n.useCallback(l=>{l.preventDefault();const x=l.dataTransfer.files[0];x!=null&&x.type.startsWith("video/")&&(S(x),M(""),O(null))},[]),re=n.useCallback(l=>{l.stopPropagation(),S(null),M(""),P.current&&(P.current.value="")},[]),[qe,Ie]=n.useState(!1),[Q,se]=n.useState(""),pe=n.useCallback(async(l,x)=>{Ie(!0),se("提取帧图片...");try{const h=x.map(ue=>ue.startTime),ee=await Bs(l,h,(ue,je)=>se(`提取帧图片 ${ue}/${je}`));return await Promise.all(x.map(async(ue,je)=>{const we=ee[je];if(!we)return ue;try{const ra=await Ks(we,ue.id,"first");return{...ue,generated_first_frame_url:ra}}catch{return ue}}))}catch(h){return console.debug("Frame extraction failed:",h),x}finally{Ie(!1),se("")}},[]),r=n.useCallback(async()=>{K(!0),M(""),_("准备中...");try{let l={};if(m==="upload"&&b){_("缓存视频文件...");const h=await sn(b);l={videoCacheUrl:h.type==="upload"?h.cacheUrl:void 0,...h.type==="upload"?{mimeType:h.mimeType}:{},model:I,modelRef:B,taskLabel:`分析视频:${b.name||"本地视频"}`,videoAnalyzerSource:"upload",videoAnalyzerSourceLabel:b.name||"本地视频",videoAnalyzerSourceSnapshot:h}}else if(m==="youtube"&&k)l={youtubeUrl:k,model:I,modelRef:B,taskLabel:`分析视频:${k}`,videoAnalyzerSource:"youtube",videoAnalyzerSourceLabel:k,videoAnalyzerSourceSnapshot:{type:"youtube",youtubeUrl:k}};else{M("请先选择视频文件或输入 YouTube URL"),K(!1);return}_("加入任务队列...");const x=await $s.execute(l,{mode:"queue"});x.success&&x.taskId?(U(x.taskId||null),_("已加入任务队列,等待分析...")):M(x.error||"创建分析任务失败")}catch(l){M(l.message||"分析失败")}finally{K(!1)}},[m,b,k,I,B]);n.useEffect(()=>{if(!F)return;const l=ye.observeTaskUpdates().subscribe(x=>{var h;if(x.task.id===F){if(x.task.status==="failed"){U(null),_(""),M(((h=x.task.error)==null?void 0:h.message)||"分析失败");return}if(x.task.status==="completed"){Ca(x.task).then(async ee=>{if(ee&&(d(ee.records),i(ee.record),O(ee.record.analysis),ee.record.source==="upload"&&b&&ee.record.analysis.shots.length>0)){const ue=await pe(b,ee.record.analysis.shots);O(we=>we&&{...we,shots:ue});const je=await le(ee.record.id,{editedShots:ue});d(je),i({...ee.record,editedShots:ue})}}).catch(ee=>{M(ee.message||"分析结果同步失败")}).finally(()=>{U(null),_("")});return}typeof x.task.progress=="number"?_(`分析中 ${Math.round(x.task.progress)}%`):_("分析中,请耐心等待...")}});return()=>l.unsubscribe()},[F,i,d,b,pe]);const N=n.useCallback(async()=>{L&&await na("text",ia(L.shots,L))},[L]);return a.jsxDEV("div",{className:"va-page",children:[!L&&a.jsxDEV(a.Fragment,{children:[a.jsxDEV("div",{className:"va-tabs",children:[a.jsxDEV("button",{className:`va-tab ${m==="upload"?"active":""}`,onClick:()=>w("upload"),children:"上传视频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:372,columnNumber:13},void 0),a.jsxDEV("button",{className:`va-tab ${m==="youtube"?"active":""}`,onClick:()=>w("youtube"),children:"YouTube URL"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:373,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:371,columnNumber:11},void 0),m==="upload"?b?a.jsxDEV("div",{className:"va-video-preview",children:[a.jsxDEV("video",{src:Y,controls:!0,muted:!0,playsInline:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:379,columnNumber:17},void 0),a.jsxDEV("button",{className:"va-video-preview-close",onClick:re,children:"✕"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:380,columnNumber:17},void 0),a.jsxDEV("div",{className:"va-video-preview-info",children:[a.jsxDEV("span",{className:"va-video-preview-name",children:b.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:382,columnNumber:19},void 0),a.jsxDEV("span",{className:"va-video-preview-size",children:un(b.size)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:383,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:381,columnNumber:17},void 0),a.jsxDEV("input",{ref:P,type:"file",accept:"video/*",onChange:me,style:{display:"none"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:385,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:377,columnNumber:15},void 0):a.jsxDEV("div",{className:"va-dropzone",onDrop:Ue,onDragOver:l=>l.preventDefault(),onClick:()=>{var l;return(l=P.current)==null?void 0:l.click()},children:[a.jsxDEV("input",{ref:P,type:"file",accept:"video/*",onChange:me,style:{display:"none"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:389,columnNumber:17},void 0),a.jsxDEV("span",{className:"va-placeholder",children:["拖拽视频到此处 或 点击上传",a.jsxDEV("br",{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:392,columnNumber:19},void 0),a.jsxDEV("span",{className:"va-placeholder-hint",children:"建议视频在6M以内,可用推特或Youtube下载器下载最低分辨率视频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:393,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:390,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:388,columnNumber:15},void 0):a.jsxDEV("input",{className:"va-url-input",type:"text",placeholder:"https://www.youtube.com/watch?v=...",value:k,onChange:l=>z(l.target.value)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:398,columnNumber:13},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/video-analyzer/pages/AnalyzePage.tsx",lineNumber:401,columnNumber:13},void 0),a.jsxDEV($e,{variant:"form",selectedModel:I,selectedSelectionKey:Be(I,B),onSelect:y,models:$,placement:"down",disabled:G,placeholder:"选择多模态模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:402,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:400,columnNumber:11},void 0),!he&&a.jsxDEV("div",{className:"va-model-tip",children:[a.jsxDEV("span",{children:"建议使用 gemini-mix 分组的gemini-3.1-pro-preview"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:415,columnNumber:15},void 0),!de&&a.jsxDEV("button",{type:"button",className:"va-model-tip-link",onClick:De,children:"去设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:417,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:414,columnNumber:13},void 0),a.jsxDEV("button",{className:"va-analyze-btn",onClick:r,disabled:G||!!F||(m==="upload"?!b:!k),children:G||F?T||"分析中...":"开始分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:427,columnNumber:11},void 0),oe&&a.jsxDEV("div",{className:"va-error",children:oe},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:434,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:370,columnNumber:9},void 0),L&&a.jsxDEV("div",{className:"va-results",children:[a.jsxDEV("div",{className:"va-stats",children:[a.jsxDEV("div",{className:"va-stat",children:[a.jsxDEV("span",{className:"va-stat-value",children:[L.totalDuration,"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:442,columnNumber:38},void 0),a.jsxDEV("span",{className:"va-stat-label",children:"总时长"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:442,columnNumber:102},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:442,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-stat",children:[a.jsxDEV("span",{className:"va-stat-value",children:L.shotCount},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:443,columnNumber:38},void 0),a.jsxDEV("span",{className:"va-stat-label",children:"镜头数"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:443,columnNumber:97},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:443,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-stat",children:[a.jsxDEV("span",{className:"va-stat-value",children:[L.productExposureRatio,"%"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:444,columnNumber:38},void 0),a.jsxDEV("span",{className:"va-stat-label",children:"产品占比"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:444,columnNumber:109},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:444,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-stat",children:[a.jsxDEV("span",{className:"va-stat-value",children:L.aspect_ratio||"-"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:445,columnNumber:38},void 0),a.jsxDEV("span",{className:"va-stat-label",children:"画面比例"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:445,columnNumber:107},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:445,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:441,columnNumber:11},void 0),(L.video_style||L.bgm_mood)&&a.jsxDEV("div",{className:"va-style-info",children:[L.video_style&&a.jsxDEV("span",{children:["风格: ",L.video_style]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:449,columnNumber:40},void 0),L.bgm_mood&&a.jsxDEV("span",{children:["BGM: ",L.bgm_mood]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:450,columnNumber:37},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:448,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-suggestion",children:L.suggestion},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:453,columnNumber:11},void 0),a.jsxDEV(en,{shots:L.shots,totalDuration:L.totalDuration},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:454,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-shots",children:L.shots.map((l,x)=>a.jsxDEV(Ia,{shot:l,index:x},l.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:459,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:457,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-page-actions",children:[qe&&a.jsxDEV("span",{className:"va-frame-progress",children:Q},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:464,columnNumber:34},void 0),a.jsxDEV("button",{onClick:N,children:"插入画布"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:465,columnNumber:13},void 0),a.jsxDEV("button",{onClick:()=>{O(null)},children:"重新分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:466,columnNumber:13},void 0),j&&a.jsxDEV("button",{onClick:j,children:"新建分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:467,columnNumber:29},void 0),o&&a.jsxDEV("button",{className:"va-btn-primary",onClick:o,children:"下一步: 编辑脚本 →"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:468,columnNumber:24},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:463,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:440,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:367,columnNumber:5},void 0)};function Ve(e){e.style.height="auto",e.style.height=e.scrollHeight+"px"}function Pe(e,i=30){if(!e)return 1;const d=e.split(`
1
+ import{y as a,aI as vs,nf as Ba,at as as,ng as Sa,iI as ys,nh as Ns,n4 as bs,n9 as xs,ni as hs,nj as js,nk as ws,nl as ks,n7 as zs,nd as Es,ne as Vs,nm as le,bL as qa,r as n,nn as ve,no as Oe,np as Ds,hL as He,nq as va,eK as ye,nr as ia,hS as $e,ns as Ia,nt as _a,ia as _e,nu as Us,nv as Re,nw as Ps,gK as J,nx as ss,ny as ya,nz as Qe,nA as Ss,nB as _s,nC as qs,nD as Na,cX as ea,al as ze,nE as Is,eO as Ne,nF as ba,nG as xa,gp as ha,gv as Cs,bV as Le,kZ as ns,ir as Ka,as as ja,bx as Ya,mq as As,hD as Ms,m$ as Wa,n0 as Rs,n1 as Ts,nH as Gs,jO as Fs,fW as Ls,dj as Os,eI as Hs}from"./tool-windows-Cxt97IUt.js";import{C as $s,A as na,j as Be,D as Za,d as is}from"./main-DHHQqQ-d.js";import{e as Bs,c as Ks,r as Ys,a as Ws,b as aa,w as wa,d as Zs,f as Xs}from"./workflow-generation-utils-B9mgfVRN.js";/* empty css *//* empty css */import{R as Js}from"./ResizableDivider-4DfyW2jN.js";/* empty css */const Xa=[{id:"analyze",label:"分析"},{id:"script",label:"脚本"},{id:"generate",label:"生成"}],Qs=({current:e,onNavigate:i,hasRecord:d})=>{const j=Xa.findIndex(o=>o.id===e);return a.jsxDEV("div",{className:"va-step-bar",children:Xa.map((o,g)=>{const m=o.id===e,w=g<j,k=!d&&g>0;return a.jsxDEV(vs.Fragment,{children:[g>0&&a.jsxDEV("span",{className:"va-step-arrow",children:"→"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/StepBar.tsx",lineNumber:33,columnNumber:23},void 0),a.jsxDEV("button",{className:`va-step ${m?"active":""} ${w?"past":""}`,onClick:()=>!k&&i(o.id),disabled:k,children:[a.jsxDEV("span",{className:"va-step-num",children:g+1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/StepBar.tsx",lineNumber:39,columnNumber:15},void 0),o.label]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/StepBar.tsx",lineNumber:34,columnNumber:13},void 0)]},o.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/StepBar.tsx",lineNumber:32,columnNumber:11},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/StepBar.tsx",lineNumber:25,columnNumber:5},void 0)},en=({shots:e,totalDuration:i})=>a.jsxDEV("div",{className:"va-timeline",children:e.filter(Boolean).map(d=>a.jsxDEV("div",{className:"va-timeline-segment",style:{flex:Math.max(((d.endTime??0)-(d.startTime??0))/Math.max(i,1),0),backgroundColor:d.type&&Ba[d.type]||Ba.other},title:`${d.label||"未命名镜头"} ${d.startTime??0}s-${d.endTime??0}s`},d.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/ShotTimeline.tsx",lineNumber:17,columnNumber:7},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/ShotTimeline.tsx",lineNumber:15,columnNumber:3},void 0);function Ja(e){return(e||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"")||"mp4"}function an(e){const i=e.name.split(".").pop();if(i&&i.length<=8)return Ja(i);const d=e.type.split("/")[1];return Ja(d)}async function sn(e,i){const d=an(e),o=`/__aitu_cache__/video/${`video-analyzer-source-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}.${d}`;return await as.cacheMediaFromBlob(o,e,"video",{metadata:{source:"video-analyzer-input",fileName:e.name,mimeType:e.type||"video/mp4",size:e.size}}),{type:"upload",cacheUrl:o,fileName:e.name||`video-source.${d}`,mimeType:e.type||"video/mp4",size:e.size}}async function nn(e){if(!e||e.type!=="upload")return null;const i=await as.getCachedBlob(e.cacheUrl);return i?new File([i],e.fileName||"video-source.mp4",{type:e.mimeType||i.type||"video/mp4",lastModified:Date.now()}):null}function rs(e){return Es(e,"videoAnalyzerAction",["analyze","rewrite"])}function rn(e){return Vs(e,{missingMessage:"分析任务缺少结果内容",fromStructured:i=>i})}function tn(e){const i=e.params.videoAnalyzerSourceSnapshot;if((i==null?void 0:i.type)==="youtube"||(i==null?void 0:i.type)==="upload")return i;const d=e.params.videoAnalyzerSource,j=String(e.params.videoAnalyzerSourceLabel||"").trim();return d==="youtube"&&j?{type:"youtube",youtubeUrl:j}:null}function ln(e){var d;const i=(d=e.result)==null?void 0:d.analysisData;return Array.isArray(i==null?void 0:i.editedShots)?i.editedShots:null}async function Ca(e){var S,I;if(e.status!=="completed")return null;const i=rs(e);if(!i)return null;if(i==="analyze"){const R=await Sa(),B=R.find(T=>T.analyzeTaskId===e.id);if(B)return{records:R,record:B};const X=rn(e),y=tn(e),G=e.params.videoAnalyzerSource==="upload"?"upload":"youtube",K=String(e.params.videoAnalyzerSourceLabel||(G==="youtube"?(y==null?void 0:y.type)==="youtube"?y.youtubeUrl:"":"本地视频")),F={id:ys(),createdAt:Date.now(),source:G,sourceLabel:K,sourceSnapshot:y,model:String(e.params.model||""),modelRef:e.params.modelRef||null,analysis:X,starred:!1,analyzeTaskId:e.id};return{records:await Ns(F),record:F}}const d=bs(e,"videoAnalyzerRecordId");if(!d)return null;const o=(await Sa()).find(R=>R.id===d);if(!o||o.pendingRewriteTaskId!==e.id)return null;const g=xs(e),m=ln(e),w=m||(()=>{if(!g)throw new Error("脚本改编任务缺少结果内容");const R=hs(g),B=o.editedShots||o.analysis.shots;return js(B,R)})(),k=`AI 改编 #${(((S=o.scriptVersions)==null?void 0:S.length)||0)+1}`,z=ws(w,k,(I=o.productInfo)==null?void 0:I.prompt),b=ks(o,z);return zs(o,{...b,pendingRewriteTaskId:null,storyboardGeneratedAt:Date.now()},le)}function on(e){return rs(e)!==null}const ka="gemini-3.1-pro-preview",za="video-analyzer:model",dn="aitu:settings:provider-nav";function un(e){return(e/1024/1024).toFixed(1)+"MB"}const cn=({existingRecord:e,onComplete:i,onRecordsChange:d,onCreateNew:j,onNext:o})=>{const{setAppState:g}=qa(),[m,w]=n.useState("upload"),[k,z]=n.useState(""),[b,S]=n.useState(null),[I,R]=n.useState(()=>(e==null?void 0:e.model)||ve(za,ka).modelId),[B,X]=n.useState(()=>(e==null?void 0:e.modelRef)||ve(za,ka).modelRef),y=n.useCallback((l,x)=>{R(l),X(x||null),Oe(za,l,x)},[]),[G,K]=n.useState(!1),[F,U]=n.useState(null),[T,_]=n.useState(""),[oe,M]=n.useState(""),[L,O]=n.useState((e==null?void 0:e.analysis)||null),C=Ds(),P=n.useRef(null),H=n.useRef(null),Y=n.useMemo(()=>{if(H.current&&URL.revokeObjectURL(H.current),!b)return H.current=null,null;const l=URL.createObjectURL(b);return H.current=l,l},[b]);n.useEffect(()=>()=>{H.current&&URL.revokeObjectURL(H.current)},[]),n.useEffect(()=>{let l=!1;return(async()=>{if(!e){if(F)return;O(null),w("upload"),z(""),S(null),M("");return}O(e.analysis||null),R(e.model||ka),X(e.modelRef||null),M("");const h=e.sourceSnapshot;if((h==null?void 0:h.type)==="upload"){w("upload"),z("");const ee=await nn(h);if(l)return;S(ee),ee||M("原上传视频缓存已失效,无法自动回填视频");return}if(e.source==="upload"){w("upload"),z(""),S(null),M("这条旧历史未保存原视频,无法自动回填视频");return}w("youtube"),S(null),(h==null?void 0:h.type)==="youtube"?z(h.youtubeUrl):e.source==="youtube"?z(e.sourceLabel||""):z("")})(),()=>{l=!0}},[e]);const Z=He("text"),$=n.useMemo(()=>Z.filter(l=>/^gemini/i.test(l.id)),[Z]),de=n.useMemo(()=>{const l=C.find(x=>x.id===va);return!!(l!=null&&l.apiKey.trim())},[C]),he=(B==null?void 0:B.profileId)===va,De=n.useCallback(()=>{const l={action:"select",profileId:va};window.__aituPendingProviderNavigationIntent=l,window.dispatchEvent(new CustomEvent(dn,{detail:l})),g(x=>({...x,openSettings:!0}))},[g]),me=n.useCallback(l=>{var h;const x=(h=l.target.files)==null?void 0:h[0];x&&(S(x),M(""),O(null))},[]),Ue=n.useCallback(l=>{l.preventDefault();const x=l.dataTransfer.files[0];x!=null&&x.type.startsWith("video/")&&(S(x),M(""),O(null))},[]),re=n.useCallback(l=>{l.stopPropagation(),S(null),M(""),P.current&&(P.current.value="")},[]),[qe,Ie]=n.useState(!1),[Q,se]=n.useState(""),pe=n.useCallback(async(l,x)=>{Ie(!0),se("提取帧图片...");try{const h=x.map(ue=>ue.startTime),ee=await Bs(l,h,(ue,je)=>se(`提取帧图片 ${ue}/${je}`));return await Promise.all(x.map(async(ue,je)=>{const we=ee[je];if(!we)return ue;try{const ra=await Ks(we,ue.id,"first");return{...ue,generated_first_frame_url:ra}}catch{return ue}}))}catch(h){return console.debug("Frame extraction failed:",h),x}finally{Ie(!1),se("")}},[]),r=n.useCallback(async()=>{K(!0),M(""),_("准备中...");try{let l={};if(m==="upload"&&b){_("缓存视频文件...");const h=await sn(b);l={videoCacheUrl:h.type==="upload"?h.cacheUrl:void 0,...h.type==="upload"?{mimeType:h.mimeType}:{},model:I,modelRef:B,taskLabel:`分析视频:${b.name||"本地视频"}`,videoAnalyzerSource:"upload",videoAnalyzerSourceLabel:b.name||"本地视频",videoAnalyzerSourceSnapshot:h}}else if(m==="youtube"&&k)l={youtubeUrl:k,model:I,modelRef:B,taskLabel:`分析视频:${k}`,videoAnalyzerSource:"youtube",videoAnalyzerSourceLabel:k,videoAnalyzerSourceSnapshot:{type:"youtube",youtubeUrl:k}};else{M("请先选择视频文件或输入 YouTube URL"),K(!1);return}_("加入任务队列...");const x=await $s.execute(l,{mode:"queue"});x.success&&x.taskId?(U(x.taskId||null),_("已加入任务队列,等待分析...")):M(x.error||"创建分析任务失败")}catch(l){M(l.message||"分析失败")}finally{K(!1)}},[m,b,k,I,B]);n.useEffect(()=>{if(!F)return;const l=ye.observeTaskUpdates().subscribe(x=>{var h;if(x.task.id===F){if(x.task.status==="failed"){U(null),_(""),M(((h=x.task.error)==null?void 0:h.message)||"分析失败");return}if(x.task.status==="completed"){Ca(x.task).then(async ee=>{if(ee&&(d(ee.records),i(ee.record),O(ee.record.analysis),ee.record.source==="upload"&&b&&ee.record.analysis.shots.length>0)){const ue=await pe(b,ee.record.analysis.shots);O(we=>we&&{...we,shots:ue});const je=await le(ee.record.id,{editedShots:ue});d(je),i({...ee.record,editedShots:ue})}}).catch(ee=>{M(ee.message||"分析结果同步失败")}).finally(()=>{U(null),_("")});return}typeof x.task.progress=="number"?_(`分析中 ${Math.round(x.task.progress)}%`):_("分析中,请耐心等待...")}});return()=>l.unsubscribe()},[F,i,d,b,pe]);const N=n.useCallback(async()=>{L&&await na("text",ia(L.shots,L))},[L]);return a.jsxDEV("div",{className:"va-page",children:[!L&&a.jsxDEV(a.Fragment,{children:[a.jsxDEV("div",{className:"va-tabs",children:[a.jsxDEV("button",{className:`va-tab ${m==="upload"?"active":""}`,onClick:()=>w("upload"),children:"上传视频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:372,columnNumber:13},void 0),a.jsxDEV("button",{className:`va-tab ${m==="youtube"?"active":""}`,onClick:()=>w("youtube"),children:"YouTube URL"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:373,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:371,columnNumber:11},void 0),m==="upload"?b?a.jsxDEV("div",{className:"va-video-preview",children:[a.jsxDEV("video",{src:Y,controls:!0,muted:!0,playsInline:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:379,columnNumber:17},void 0),a.jsxDEV("button",{className:"va-video-preview-close",onClick:re,children:"✕"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:380,columnNumber:17},void 0),a.jsxDEV("div",{className:"va-video-preview-info",children:[a.jsxDEV("span",{className:"va-video-preview-name",children:b.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:382,columnNumber:19},void 0),a.jsxDEV("span",{className:"va-video-preview-size",children:un(b.size)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:383,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:381,columnNumber:17},void 0),a.jsxDEV("input",{ref:P,type:"file",accept:"video/*",onChange:me,style:{display:"none"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:385,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:377,columnNumber:15},void 0):a.jsxDEV("div",{className:"va-dropzone",onDrop:Ue,onDragOver:l=>l.preventDefault(),onClick:()=>{var l;return(l=P.current)==null?void 0:l.click()},children:[a.jsxDEV("input",{ref:P,type:"file",accept:"video/*",onChange:me,style:{display:"none"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:389,columnNumber:17},void 0),a.jsxDEV("span",{className:"va-placeholder",children:["拖拽视频到此处 或 点击上传",a.jsxDEV("br",{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:392,columnNumber:19},void 0),a.jsxDEV("span",{className:"va-placeholder-hint",children:"建议视频在6M以内,可用推特或Youtube下载器下载最低分辨率视频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:393,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:390,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:388,columnNumber:15},void 0):a.jsxDEV("input",{className:"va-url-input",type:"text",placeholder:"https://www.youtube.com/watch?v=...",value:k,onChange:l=>z(l.target.value)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:398,columnNumber:13},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/video-analyzer/pages/AnalyzePage.tsx",lineNumber:401,columnNumber:13},void 0),a.jsxDEV($e,{variant:"form",selectedModel:I,selectedSelectionKey:Be(I,B),onSelect:y,models:$,placement:"down",disabled:G,placeholder:"选择多模态模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:402,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:400,columnNumber:11},void 0),!he&&a.jsxDEV("div",{className:"va-model-tip",children:[a.jsxDEV("span",{children:"建议使用 gemini-mix 分组的gemini-3.1-pro-preview"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:415,columnNumber:15},void 0),!de&&a.jsxDEV("button",{type:"button",className:"va-model-tip-link",onClick:De,children:"去设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:417,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:414,columnNumber:13},void 0),a.jsxDEV("button",{className:"va-analyze-btn",onClick:r,disabled:G||!!F||(m==="upload"?!b:!k),children:G||F?T||"分析中...":"开始分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:427,columnNumber:11},void 0),oe&&a.jsxDEV("div",{className:"va-error",children:oe},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:434,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:370,columnNumber:9},void 0),L&&a.jsxDEV("div",{className:"va-results",children:[a.jsxDEV("div",{className:"va-stats",children:[a.jsxDEV("div",{className:"va-stat",children:[a.jsxDEV("span",{className:"va-stat-value",children:[L.totalDuration,"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:442,columnNumber:38},void 0),a.jsxDEV("span",{className:"va-stat-label",children:"总时长"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:442,columnNumber:102},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:442,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-stat",children:[a.jsxDEV("span",{className:"va-stat-value",children:L.shotCount},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:443,columnNumber:38},void 0),a.jsxDEV("span",{className:"va-stat-label",children:"镜头数"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:443,columnNumber:97},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:443,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-stat",children:[a.jsxDEV("span",{className:"va-stat-value",children:[L.productExposureRatio,"%"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:444,columnNumber:38},void 0),a.jsxDEV("span",{className:"va-stat-label",children:"产品占比"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:444,columnNumber:109},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:444,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-stat",children:[a.jsxDEV("span",{className:"va-stat-value",children:L.aspect_ratio||"-"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:445,columnNumber:38},void 0),a.jsxDEV("span",{className:"va-stat-label",children:"画面比例"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:445,columnNumber:107},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:445,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:441,columnNumber:11},void 0),(L.video_style||L.bgm_mood)&&a.jsxDEV("div",{className:"va-style-info",children:[L.video_style&&a.jsxDEV("span",{children:["风格: ",L.video_style]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:449,columnNumber:40},void 0),L.bgm_mood&&a.jsxDEV("span",{children:["BGM: ",L.bgm_mood]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:450,columnNumber:37},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:448,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-suggestion",children:L.suggestion},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:453,columnNumber:11},void 0),a.jsxDEV(en,{shots:L.shots,totalDuration:L.totalDuration},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:454,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-shots",children:L.shots.map((l,x)=>a.jsxDEV(Ia,{shot:l,index:x},l.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:459,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:457,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-page-actions",children:[qe&&a.jsxDEV("span",{className:"va-frame-progress",children:Q},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:464,columnNumber:34},void 0),a.jsxDEV("button",{onClick:N,children:"插入画布"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:465,columnNumber:13},void 0),a.jsxDEV("button",{onClick:()=>{O(null)},children:"重新分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:466,columnNumber:13},void 0),j&&a.jsxDEV("button",{onClick:j,children:"新建分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:467,columnNumber:29},void 0),o&&a.jsxDEV("button",{className:"va-btn-primary",onClick:o,children:"下一步: 编辑脚本 →"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:468,columnNumber:24},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:463,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:440,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/AnalyzePage.tsx",lineNumber:367,columnNumber:5},void 0)};function Ve(e){e.style.height="auto",e.style.height=e.scrollHeight+"px"}function Pe(e,i=30){if(!e)return 1;const d=e.split(`
2
2
  `);let j=0;for(const o of d)j+=Math.max(1,Math.ceil(o.length/i));return Math.max(1,j)}function Se(e){e&&Ve(e)}const Ea="video-analyzer:script-model",Va="video-analyzer:video-model",Qa="gemini-3.1-pro-preview",es="veo3",mn=["固定镜头 (Static)","缓慢推近 (Dolly In)","缓慢拉远 (Dolly Out)","水平平移 (Pan)","垂直摇移 (Tilt)","跟随拍摄 (Follow)","手持感 (Handheld)","环绕拍摄 (Orbit)","升降镜头 (Crane)","快速推移 (Zoom In)","快速拉远 (Zoom Out)","滑轨移动 (Slider)","航拍俯冲 (Drone Dive)","第一人称 (POV)"],pn=[{label:"无 (none)",value:"none"},{label:"仅旁白 (narration_only)",value:"narration_only"},{label:"仅对白 (dialogue_only)",value:"dialogue_only"},{label:"旁白+对白 (both)",value:"both"}],fn=[{label:"硬切 (cut)",value:"cut"},{label:"溶解 (dissolve)",value:"dissolve"},{label:"匹配切 (match_cut)",value:"match_cut"},{label:"淡出到黑 (fade_to_black)",value:"fade_to_black"}],gn=({record:e,onRecordUpdate:i,onRecordsChange:d,onNext:j})=>{var pe;const[o,g]=n.useState(()=>{const r=_a(e.productInfo||{prompt:""},e.analysis.totalDuration);return{...r,videoStyle:r.videoStyle??e.analysis.video_style??"",bgmMood:r.bgmMood??e.analysis.bgm_mood??""}}),[m,w]=n.useState(e.editedShots||[...e.analysis.shots]),[k,z]=n.useState(!1),[b,S]=n.useState(()=>e.pendingRewriteTaskId||null),[I,R]=n.useState(""),[B,X]=n.useState(""),[y,G]=n.useState(!1),K=n.useRef(null),[F,U]=n.useState(()=>ve(Ea,Qa).modelId),[T,_]=n.useState(()=>ve(Ea,Qa).modelRef),oe=n.useCallback((r,N)=>{U(r),_(N||null),Oe(Ea,r,N)},[]),M=He("text"),L=He("video"),[O,C]=n.useState(()=>{var r;return((r=e.productInfo)==null?void 0:r.videoModel)||ve(Va,es).modelId}),[P,H]=n.useState(()=>{var r,N;return((r=e.productInfo)==null?void 0:r.videoModelRef)||ve(Va,((N=e.productInfo)==null?void 0:N.videoModel)||es).modelRef}),Y=n.useCallback((r,N)=>{C(r),H(N||null),Oe(Va,r,N);const l=_e(r),x=parseInt(l.defaultDuration,10)||8;g(h=>({...h,videoModel:r,videoModelRef:N||null,segmentDuration:x}))},[]),Z=n.useMemo(()=>_e(O).durationOptions,[O]),$=n.useMemo(()=>{if(o.segmentDuration&&Z.some(l=>parseInt(l.value,10)===o.segmentDuration))return o.segmentDuration;const r=_e(O);return parseInt(r.defaultDuration,10)||8},[o.segmentDuration,Z,O]),de=n.useMemo(()=>{const r=o.targetDuration||e.analysis.totalDuration,N=[{label:`${$}秒`,value:String($)}];return Us(r,N)},[$,o.targetDuration,e.analysis.totalDuration]),he=n.useMemo(()=>e.characters||e.analysis.characters||[],[e.characters,e.analysis.characters]);n.useEffect(()=>{const r=_a(e.productInfo||{prompt:""},e.analysis.totalDuration);g({...r,videoStyle:r.videoStyle??e.analysis.video_style??"",bgmMood:r.bgmMood??e.analysis.bgm_mood??""}),w(e.editedShots||[...e.analysis.shots]),S(N=>e.pendingRewriteTaskId??N??null),R(N=>e.pendingRewriteTaskId?N:"")},[e]);const De=n.useRef();n.useEffect(()=>(clearTimeout(De.current),De.current=setTimeout(async()=>{const r=await le(e.id,{productInfo:o});d(r),i({...e,productInfo:o,pendingRewriteTaskId:b})},500),()=>clearTimeout(De.current)),[o,b]);const me=n.useCallback(async r=>{w(r);const N=Re(e,r),l=await le(e.id,{...N,productInfo:o});d(l),i({...e,...N,productInfo:o,pendingRewriteTaskId:b})},[e,o,b,i,d]),Ue=n.useCallback(async r=>{const N=await le(e.id,r);d(N),i({...e,...r,productInfo:o,pendingRewriteTaskId:b})},[e,o,b,i,d]),re=n.useCallback((r,N,l)=>{const x=m.map(h=>h.id===r?{...h,[N]:l}:h);me(x)},[m,me]),qe=n.useCallback((r,N)=>{const x=(e.characters||e.analysis.characters||[]).map(h=>h.id===r?{...h,description:N}:h);Ue({characters:x})},[e.characters,e.analysis.characters,Ue]),Ie=n.useCallback(async()=>{var r;if(!((r=o.prompt)!=null&&r.trim())){X("请填写提示词");return}z(!0),X(""),R("AI 改编中 0%");try{const N=Ps({recordAnalysis:e.analysis,productInfo:o,videoModel:O,characters:he}),l=ye.createTask({prompt:`改编脚本:${o.prompt.slice(0,40)}`,model:F,modelRef:T||null,videoAnalyzerAction:"rewrite",videoAnalyzerPrompt:N,videoAnalyzerRecordId:e.id,autoInsertToCanvas:!1},J.CHAT);S(l.id),R(`AI 改编中 ${Math.round(l.progress??0)}%`);const x=await le(e.id,{pendingRewriteTaskId:l.id});d(x),i({...e,pendingRewriteTaskId:l.id})}catch(N){X(N.message||"改编失败")}finally{z(!1)}},[e,o,m,O,he,F,T,i,d]);n.useEffect(()=>{if(!b)return;const r=ye.getTask(b);typeof(r==null?void 0:r.progress)=="number"&&R(`AI 改编中 ${Math.round(r.progress)}%`);const N=ye.observeTaskUpdates().subscribe(l=>{var x;if(l.task.id===b){if(l.task.status==="failed"){S(null),R(""),X(((x=l.task.error)==null?void 0:x.message)||"改编失败"),le(e.id,{pendingRewriteTaskId:null}).then(h=>{d(h),i({...e,pendingRewriteTaskId:null})});return}if(l.task.status==="completed"){Ca(l.task).then(h=>{h&&(d(h.records),i(h.record),w(h.record.editedShots||h.record.analysis.shots))}).catch(h=>{X(h.message||"改编结果同步失败")}).finally(()=>{S(null),R("")});return}typeof l.task.progress=="number"&&R(`AI 改编中 ${Math.round(l.task.progress)}%`)}});return()=>N.unsubscribe()},[b,e.id,i,d]);const Q=n.useCallback(async()=>{await na("text",ia(m,e.analysis,o))},[m,o,e]),se=n.useCallback(async r=>{const N=ss(e,r);if(!N)return;G(!1),w(N.editedShots);const l=await le(e.id,N);d(l),i({...e,...N})},[e,i,d]);return n.useEffect(()=>{if(!y)return;const r=N=>{K.current&&!K.current.contains(N.target)&&G(!1)};return document.addEventListener("mousedown",r),()=>document.removeEventListener("mousedown",r)},[y]),a.jsxDEV("div",{className:"va-page",children:[a.jsxDEV("div",{className:"va-product-form",children:[a.jsxDEV("textarea",{ref:Se,className:"va-form-textarea va-auto-resize",placeholder:"描述你想要的视频内容,如:拖鞋,生活用品,主打防滑...",rows:Math.max(3,Pe(o.prompt)),value:o.prompt,onChange:r=>g(N=>({...N,prompt:r.target.value})),onInput:r=>Ve(r.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:389,columnNumber:9},void 0),a.jsxDEV("div",{className:"va-form-row",children:a.jsxDEV("div",{className:"va-duration-input",style:{width:"auto",flex:1},children:[a.jsxDEV("label",{className:"va-edit-label",children:"视频时长(秒)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:400,columnNumber:13},void 0),a.jsxDEV("input",{className:"va-form-input",type:"number",min:5,max:300,value:o.targetDuration??e.analysis.totalDuration,onChange:r=>g(N=>({...N,targetDuration:Number(r.target.value)||void 0}))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:401,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:399,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:398,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:405,columnNumber:11},void 0),a.jsxDEV($e,{variant:"form",selectedModel:F,selectedSelectionKey:Be(F,T),onSelect:oe,models:M,placement:"down",disabled:k,placeholder:"选择文本模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:406,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:404,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:418,columnNumber:11},void 0),a.jsxDEV($e,{variant:"form",selectedModel:O,selectedSelectionKey:Be(O,P),onSelect:Y,models:L,placement:"down",disabled:k,placeholder:"选择视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:419,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:430,columnNumber:13},void 0),a.jsxDEV("select",{className:"va-form-select",value:String($),onChange:r=>g(N=>({...N,segmentDuration:parseInt(r.target.value,10)})),disabled:Z.length<=1,children:Z.map(r=>a.jsxDEV("option",{value:r.value,children:r.label},r.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:438,columnNumber:17},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:431,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:429,columnNumber:11},void 0),de.overflow>0&&a.jsxDEV("span",{className:"va-duration-overflow",children:["实际 ",de.actualTotal,"s(+",parseFloat(de.overflow.toFixed(2)),"s)"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:443,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:417,columnNumber:9},void 0),a.jsxDEV("div",{className:"va-version-row",children:[a.jsxDEV("button",{className:"va-analyze-btn",onClick:Ie,disabled:k||!!b,style:{flex:1},children:k||b?I||"AI 改编中...":"AI 改编脚本"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:449,columnNumber:11},void 0),e.scriptVersions&&e.scriptVersions.length>0&&a.jsxDEV("div",{className:"va-version-select",ref:K,children:[a.jsxDEV("button",{className:"va-version-btn",onClick:()=>G(r=>!r),children:[e.activeVersionId===ya?"原始分析":((pe=e.scriptVersions.find(r=>r.id===e.activeVersionId))==null?void 0:pe.label)||`v${e.scriptVersions.length}`," ▾"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:454,columnNumber:15},void 0),y&&a.jsxDEV("div",{className:"va-version-menu",children:[e.scriptVersions.map(r=>a.jsxDEV("div",{className:`va-version-item ${r.id===e.activeVersionId?"active":""}`,onClick:()=>se(r.id),children:[a.jsxDEV("span",{children:r.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:470,columnNumber:23},void 0),r.prompt&&a.jsxDEV("span",{className:"va-version-prompt",children:r.prompt.length>30?r.prompt.slice(0,30)+"...":r.prompt},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:471,columnNumber:36},void 0),a.jsxDEV("span",{className:"va-version-time",children:[r.shots.length," 镜头 · ",new Date(r.createdAt).toLocaleTimeString()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:472,columnNumber:23},void 0)]},r.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:465,columnNumber:21},void 0)),a.jsxDEV("div",{className:`va-version-item ${e.activeVersionId===ya||!e.activeVersionId?"active":""}`,onClick:()=>se(ya),children:[a.jsxDEV("span",{children:"原始分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:479,columnNumber:21},void 0),a.jsxDEV("span",{className:"va-version-time",children:[e.analysis.shots.length," 镜头 · ",new Date(e.createdAt).toLocaleTimeString()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:480,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:475,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:463,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:453,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:448,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:490,columnNumber:13},void 0),a.jsxDEV(Qe,{className:"va-style-combo",value:o.videoStyle||"",onChange:r=>g(N=>({...N,videoStyle:r})),options:_s,placeholder:Ss},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:491,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:489,columnNumber:11},void 0),a.jsxDEV("div",{style:{flex:1},children:[a.jsxDEV("label",{className:"va-edit-label",children:"BGM 情绪"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:500,columnNumber:13},void 0),a.jsxDEV("textarea",{ref:Se,className:"va-edit-textarea va-auto-resize",rows:Pe(o.bgmMood),value:o.bgmMood||"",onChange:r=>g(N=>({...N,bgmMood:r.target.value})),onInput:r=>Ve(r.currentTarget),placeholder:"如:轻快、治愈、科技感"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:501,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:499,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:488,columnNumber:9},void 0),B&&a.jsxDEV("div",{className:"va-error",children:B},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:512,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:388,columnNumber:7},void 0),a.jsxDEV(qs,{characters:he,onChange:qe},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:515,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-shots",children:m.map((r,N)=>a.jsxDEV(Ia,{shot:r,index:N,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:525,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:Se,className:"va-edit-textarea va-auto-resize",rows:Pe(r.description),value:r.description||"",onChange:l=>re(r.id,"description",l.target.value),onInput:l=>Ve(l.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:526,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:527,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:Se,className:"va-edit-textarea va-auto-resize",rows:Pe(r.narration),value:r.narration||"",onChange:l=>re(r.id,"narration",l.target.value),onInput:l=>Ve(l.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:528,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:529,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:Se,className:"va-edit-textarea va-auto-resize",rows:Pe(r.dialogue),value:r.dialogue||"",onChange:l=>re(r.id,"dialogue",l.target.value),onInput:l=>Ve(l.currentTarget),placeholder:'多角色时按"角色名: 台词"分行'},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:530,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:531,columnNumber:15},void 0),a.jsxDEV("input",{className:"va-form-input",type:"text",value:r.dialogue_speakers||"",onChange:l=>re(r.id,"dialogue_speakers",l.target.value),placeholder:"如:主讲人 或 主讲人|顾客"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:532,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:533,columnNumber:15},void 0),a.jsxDEV(Qe,{value:r.speech_relation||"",onChange:l=>re(r.id,"speech_relation",l),options:pn,placeholder:"选择关系"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:534,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:535,columnNumber:15},void 0),a.jsxDEV(Qe,{value:r.camera_movement||"",onChange:l=>re(r.id,"camera_movement",l),options:mn,placeholder:"选择或输入运镜方式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:536,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:537,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:Se,className:"va-edit-textarea va-auto-resize",rows:Pe(r.first_frame_prompt),value:r.first_frame_prompt||"",onChange:l=>re(r.id,"first_frame_prompt",l.target.value),onInput:l=>Ve(l.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:538,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:539,columnNumber:15},void 0),a.jsxDEV("textarea",{ref:Se,className:"va-edit-textarea va-auto-resize",rows:Pe(r.last_frame_prompt),value:r.last_frame_prompt||"",onChange:l=>re(r.id,"last_frame_prompt",l.target.value),onInput:l=>Ve(l.currentTarget)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:540,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/video-analyzer/pages/ScriptPage.tsx",lineNumber:541,columnNumber:15},void 0),a.jsxDEV(Qe,{value:r.transition_hint||"",onChange:l=>re(r.id,"transition_hint",l),options:fn,placeholder:"选择转场方式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:542,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:524,columnNumber:13},void 0)},r.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:523,columnNumber:11},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:521,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-page-actions",children:[a.jsxDEV("button",{onClick:Q,children:"脚本插入画布"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:549,columnNumber:9},void 0),j&&a.jsxDEV("button",{className:"va-btn-primary",onClick:j,children:"下一步:批量生成 →"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:550,columnNumber:20},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:548,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/ScriptPage.tsx",lineNumber:386,columnNumber:5},void 0)};function vn(e,i,d){var j,o,g;return{recordId:e.id,fileNamePrefix:"va",zipBaseName:"video_analyzer_assets",scriptMarkdown:ia(i,e.analysis,e.productInfo),recordMeta:{id:e.id,source:e.source,sourceLabel:e.sourceLabel,prompt:((j=e.productInfo)==null?void 0:j.prompt)||"",aspectRatio:e.analysis.aspect_ratio||"16x9",videoStyle:((o=e.productInfo)==null?void 0:o.videoStyle)||e.analysis.video_style||"",bgmMood:((g=e.productInfo)==null?void 0:g.bgmMood)||e.analysis.bgm_mood||"",shotCount:i.length},shots:i,assets:d}}function yn(e,i){const d=e.characters||e.analysis.characters||[];return Ys(i,d)}const Da="video-analyzer:image-model",sa="video-analyzer:video-model",Ua=({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/video-analyzer/pages/GeneratePage.tsx",lineNumber:63,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/video-analyzer/pages/GeneratePage.tsx",lineNumber:64,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/video-analyzer/pages/GeneratePage.tsx",lineNumber:65,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/video-analyzer/pages/GeneratePage.tsx",lineNumber:66,columnNumber:5},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:52,columnNumber:3},void 0),Nn=({record:e,onRecordUpdate:i,onRecordsChange:d,onRestart:j})=>{const o=n.useMemo(()=>e.editedShots||e.analysis.shots,[e.editedShots,e.analysis.shots]),g=e.analysis.aspect_ratio||"16x9",m=e.batchId||`va_${e.id}`,{openDialog:w,board:k}=qa(),z=n.useRef(e),b=n.useRef(o),S=n.useRef(!1),I=n.useRef(null),R=n.useRef(null),[B,X]=n.useState([]),[y,G]=n.useState(null),K=He("image"),F=He("video"),[U,T]=n.useState(()=>ve(Da,"").modelId),[_,oe]=n.useState(()=>ve(Da,"").modelRef),[M,L]=n.useState(()=>{var s;return((s=e.productInfo)==null?void 0:s.videoModel)||ve(sa,"veo3").modelId}),[O,C]=n.useState(()=>{var s,t;return((s=e.productInfo)==null?void 0:s.videoModelRef)||ve(sa,((t=e.productInfo)==null?void 0:t.videoModel)||"veo3").modelRef}),[P,H]=n.useState(()=>{var s,t;return Na(((s=e.productInfo)==null?void 0:s.videoModel)||ve(sa,"veo3").modelId,(t=e.productInfo)==null?void 0:t.videoSize,g)}),[Y,Z]=n.useState(()=>{var s,t;return((s=e.productInfo)==null?void 0:s.segmentDuration)||parseInt(_e(((t=e.productInfo)==null?void 0:t.videoModel)||"veo3").defaultDuration,10)||8}),[$,de]=n.useState({running:!1,stopping:!1,currentIndex:-1,retryCount:0}),[he,De]=n.useState(!1),me=n.useMemo(()=>_e(M),[M]),Ue=n.useMemo(()=>me.durationOptions,[me]),re=n.useMemo(()=>me.sizeOptions,[me]),qe=n.useMemo(()=>e.characters||e.analysis.characters||[],[e.characters,e.analysis.characters]),Ie=n.useMemo(()=>Ws(o),[o]);n.useEffect(()=>{z.current=e},[e]),n.useEffect(()=>{b.current=o},[o]);const Q=n.useCallback(async s=>{const t=z.current,c={...t,...s};z.current=c,c.editedShots&&(b.current=c.editedShots);const u=await le(t.id,s);return d(u),i(c),c},[i,d]),se=n.useCallback(async s=>{const t=z.current,c=Re(t,s);return b.current=s,await Q(c),s},[Q]),pe=n.useCallback(async s=>{const t=z.current,c={..._a(t.productInfo||{prompt:""},t.analysis.totalDuration),...s};return await Q({productInfo:c}),c},[Q]),r=n.useCallback(async(s,t)=>{const c=z.current,f=(c.characters||c.analysis.characters||[]).map(p=>p.id===s?{...p,referenceImageUrl:t}:p);await Q({characters:f})},[Q]),N=n.useCallback(s=>{const t=`va_${e.id}_char${s.id}_ref`;w(ea.aiImageGeneration,{initialPrompt:s.description,batchId:t,initialAspectRatio:"1:1",initialModel:U||void 0,initialModelRef:_})},[e.id,w,U,_]),l=n.useCallback((s,t)=>{T(s),oe(t||null),Oe(Da,s,t)},[]),x=n.useCallback((s,t)=>{L(s),C(t||null),Oe(sa,s,t);const c=_e(s),u=parseInt(c.defaultDuration,10)||8,f=Na(s,P,g);Z(u),H(f),pe({videoModel:s,videoModelRef:t||null,segmentDuration:u,videoSize:f})},[pe,g,P]),h=n.useCallback(s=>{Z(s),pe({segmentDuration:s})},[pe]),ee=n.useCallback(s=>{const t=Na(M,s,g);H(t),pe({videoSize:t})},[pe,g,M]),ue=n.useCallback(async()=>{try{const s=z.current,t=b.current;if(!k)throw new Error("画布未就绪");Za(k);const c=await na("text",ia(t,s.analysis,s.productInfo));if(!c.success)throw new Error(c.error||"插入失败,请确认画布已打开");ze.success("脚本已插入画布")}catch(s){console.error("[VideoAnalyzer] Failed to insert script to canvas:",s);const t=s instanceof Error?s.message:"脚本插入画布失败";ze.error(t)}},[k]),je=n.useCallback(async s=>{if(!k)return!1;try{Za(k);const t=await na("video",s);if(!t.success)throw new Error(t.error||"插入失败,请确认画布已打开");return!0}catch(t){return console.error("[VideoAnalyzer] Failed to insert generated video to canvas:",t),!1}},[k]),{isExportingAssets:we,exportProgress:ra,handleExportAssets:ls}=Is({onExport:async s=>{const t=z.current,c=b.current;return await Xs({...vn(t,c,Ie),onProgress:s})},onExportSuccess:s=>{ze.success(`素材导出完成,共 ${s.assetCount} 个文件`)},onExportError:s=>{console.error("[VideoAnalyzer] Failed to export assets:",s),ze.error("素材导出失败")}}),ta=n.useMemo(()=>B.map(s=>s.url).filter(Boolean),[B]),Aa=n.useCallback(async()=>{e.batchId||await Q({batchId:m})},[e.batchId,m,Q]),{tasks:Ma}=is(),Ce=n.useRef(new Set),la=n.useRef(new Set),Ra=n.useCallback(async(s,t,c)=>{let u=[...t],f=!1;for(const{shotId:p,videoUrl:E}of c){const V=`auto_${p}`;if(!la.current.has(V)){la.current.add(V);try{const q=u.findIndex(A=>A.id===p);if(q===-1)continue;const D=u[q+1];if(!D)continue;const v=await aa(E,D.id,"first","last");if(!v||D.generated_first_frame_url===v)continue;u=u.map((A,te)=>te===q+1?{...A,generated_first_frame_url:v}:A),f=!0}finally{la.current.delete(V)}}}if(f){const p=e;le(s,Re(p,u)).then(E=>{d(E),i({...p,editedShots:u})})}},[e,i,d]);n.useEffect(()=>{var E,V,q,D;const s=`va_${e.id}_shot`,t=`va_${e.id}_char`;let c=!1;const u=e;let f=u.editedShots||u.analysis.shots;const p=[];for(const v of Ma){if(v.status!==Ne.COMPLETED||Ce.current.has(v.id))continue;const A=(E=v.params)==null?void 0:E.batchId;if(!A)continue;if(A.startsWith(t)){const ge=(V=v.result)==null?void 0:V.url;if(Ce.current.add(v.id),ge){const Ha=A.slice(t.length),$a=Ha.lastIndexOf("_ref");if($a!==-1){const fs=Ha.slice(0,$a),gs=(z.current.characters||z.current.analysis.characters||[]).map(ga=>ga.id===fs?{...ga,referenceImageUrl:ge}:ga);Q({characters:gs})}}continue}if(!A.startsWith(s))continue;if(e.storyboardGeneratedAt&&v.createdAt<e.storyboardGeneratedAt){Ce.current.add(v.id);continue}const te=(q=v.result)==null?void 0:q.url;if(!te)continue;const ne=A.slice(s.length),ke=ne.lastIndexOf("_");if(ke===-1)continue;const ie=ne.slice(0,ke),W=ne.slice(ke+1);if(W!=="first"&&W!=="last"&&W!=="video")continue;const fe=W==="first"?"generated_first_frame_url":W==="last"?"generated_last_frame_url":"generated_video_url",ae=f.find(ge=>ge.id===ie),ce=(D=ae==null?void 0:ae.suppressed_generated_urls)==null?void 0:D[W];if(ce&&ce===te){Ce.current.add(v.id);continue}if(!ae||ae[fe]===te){Ce.current.add(v.id);continue}f=f.map(ge=>ge.id===ie?{...ge,[fe]:te,suppressed_generated_urls:ge.suppressed_generated_urls?{...ge.suppressed_generated_urls,[W]:void 0}:void 0}:ge),Ce.current.add(v.id),c=!0,W==="video"&&p.push({shotId:ie,videoUrl:te})}c&&le(u.id,Re(u,f)).then(v=>{d(v),i({...u,editedShots:f})}),p.length>0&&Ra(u.id,f,p)},[Ma,Ra,e,i,d,Q]);const[be,oa]=n.useState(null),da=n.useCallback((s,t)=>{oa({shotId:s,assetType:t})},[]),os=n.useCallback(async s=>{if(!be)return;oa(null);const{shotId:t,assetType:c}=be,u=c==="first"?"generated_first_frame_url":c==="last"?"generated_last_frame_url":"generated_video_url",p=(e.editedShots||e.analysis.shots).map(V=>V.id===t?{...V,[u]:s.url}:V),E=await le(e.id,Re(e,p));d(E),i({...e,editedShots:p})},[be,e,d,i]),[Ae,ua]=n.useState(null),Te=n.useRef(null),xe=n.useCallback(()=>{Te.current!==null&&(window.clearTimeout(Te.current),Te.current=null)},[]),Ta=n.useCallback(()=>{xe(),ua(null)},[xe]),Ga=n.useCallback(()=>{xe(),Te.current=window.setTimeout(()=>{Te.current=null,ua(null)},120)},[xe]),Ke=n.useCallback((s,t,c)=>{xe();const u=c.currentTarget.getBoundingClientRect();ua({url:s,type:t,x:u.left+u.width/2,y:u.top-8})},[xe]),Ye=n.useCallback(()=>{Ga()},[Ga]),ds=n.useCallback(()=>{xe()},[xe]),us=n.useCallback(()=>{Ta()},[Ta]);n.useEffect(()=>()=>{xe()},[xe]);const Ge=n.useMemo(()=>{var t;const s=(t=re.find(c=>c.value===P))==null?void 0:t.aspectRatio;if(s)return s;if(P!=null&&P.includes("x")){const[c,u]=P.split("x").map(Number);if(c&&u){const f=(E,V)=>V===0?E:f(V,E%V),p=f(c,u);return`${c/p}:${u/p}`}}return g.replace("x",":")},[g,re,P]),We=Ge,Ee=n.useCallback(s=>s.map(t=>({url:t.url,name:t.name})),[]),Ze=n.useCallback((s=[],t=[])=>s.length===t.length&&s.every((c,u)=>{var f,p;return c.url===((f=t[u])==null?void 0:f.url)&&c.name===((p=t[u])==null?void 0:p.name)}),[]),Me=n.useCallback(async(s,t,c)=>{let u=!1;const f=Ee(c.images),p=b.current.map(E=>{if(E.id!==s)return E;if(t==="first"){const D=E.first_frame_draft,v={prompt:c.prompt,images:f,aspectRatio:c.aspectRatio};return(D==null?void 0:D.prompt)===v.prompt&&(D==null?void 0:D.aspectRatio)===v.aspectRatio&&Ze(D==null?void 0:D.images,v.images)?E:(u=!0,{...E,first_frame_draft:v})}if(t==="last"){const D=E.last_frame_draft,v={prompt:c.prompt,images:f,aspectRatio:c.aspectRatio};return(D==null?void 0:D.prompt)===v.prompt&&(D==null?void 0:D.aspectRatio)===v.aspectRatio&&Ze(D==null?void 0:D.images,v.images)?E:(u=!0,{...E,last_frame_draft:v})}const V=E.video_draft,q={prompt:c.prompt,images:f,duration:c.duration,size:c.size};return(V==null?void 0:V.prompt)===q.prompt&&(V==null?void 0:V.duration)===q.duration&&(V==null?void 0:V.size)===q.size&&Ze(V==null?void 0:V.images,q.images)?E:(u=!0,{...E,video_draft:q})});u&&await se(p)},[se,Ze,Ee]),ca=n.useCallback(s=>{const t=s.first_frame_prompt||s.description||"";if(!t)return;const c=ba(t,e.analysis,e.productInfo),u=s.first_frame_draft,f=`va_${e.id}_shot${s.id}_first`;w(ea.aiImageGeneration,{initialPrompt:(u==null?void 0:u.prompt)||c,batchId:f,initialAspectRatio:(u==null?void 0:u.aspectRatio)??We,initialModel:U||void 0,initialModelRef:_,initialImages:u?Ee(u.images||[]):s.generated_first_frame_url?[{url:s.generated_first_frame_url,name:"首帧"}]:void 0,onDraftChange:p=>Me(s.id,"first",p)})},[e,w,We,U,_,Me,Ee]),Fe=n.useCallback((s,t)=>{if(s.generated_last_frame_url)return s.generated_last_frame_url;const c=o[t+1];return c==null?void 0:c.generated_first_frame_url},[o]),Xe=n.useCallback((s,t)=>{const c=s.last_frame_prompt||s.description||"";if(!c)return;const u=ba(c,e.analysis,e.productInfo),f=s.last_frame_draft,p=`va_${e.id}_shot${s.id}_last`,E=Fe(s,t);w(ea.aiImageGeneration,{initialPrompt:(f==null?void 0:f.prompt)||u,batchId:p,initialAspectRatio:(f==null?void 0:f.aspectRatio)??We,initialModel:U||void 0,initialModelRef:_,initialImages:f?Ee(f.images||[]):E?[{url:E,name:"尾帧"}]:void 0,onDraftChange:V=>Me(s.id,"last",V)})},[e,w,Fe,We,U,_,Me,Ee]),ma=n.useCallback((s,t)=>{const c=xa(s,e.analysis,e.productInfo);if(!c)return;const u=s.video_draft,f=`va_${e.id}_shot${s.id}_video`,p=[];s.generated_first_frame_url&&p.push({url:s.generated_first_frame_url,name:"首帧"});const E=Fe(s,t);E&&p.push({url:E,name:"尾帧"});const V=Ee((u==null?void 0:u.images)||[]),q=V.length>0?V:p.length>0?p:void 0,D=_e(M),v=String((u==null?void 0:u.duration)??Y),A=D.durationOptions.some(ne=>ne.value===v)?(u==null?void 0:u.duration)??Y:void 0,te=D.sizeOptions.some(ne=>ne.value===((u==null?void 0:u.size)??P))?(u==null?void 0:u.size)??P:void 0;w(ea.aiVideoGeneration,{initialPrompt:(u==null?void 0:u.prompt)||c,initialImages:q,initialDuration:A,initialSize:te,initialModel:M||void 0,initialModelRef:O,batchId:f,onDraftChange:ne=>Me(s.id,"video",ne)})},[e.id,Y,P,M,O,w,Fe,e.analysis,e.productInfo,Me,Ee]),pa=n.useCallback((s,t)=>{const c=t==="first"?"generated_first_frame_url":t==="last"?"generated_last_frame_url":"generated_video_url",f=(e.editedShots||e.analysis.shots).map(p=>p.id===s?{...p,[c]:void 0,suppressed_generated_urls:p[c]?{...p.suppressed_generated_urls||{},[t]:p[c]}:p.suppressed_generated_urls}:p);le(e.id,Re(e,f)).then(p=>{d(p),i({...e,editedShots:f})})},[e,i,d]),Fa=n.useCallback(async(s,t,c)=>{var A,te,ne;const u=s.first_frame_prompt||s.description||"";if(!u)return null;const f=ba(u,e.analysis,e.productInfo),p=[];if(t&&p.push(t),s.character_ids&&s.character_ids.length>0)for(const ke of s.character_ids){const ie=c.find(W=>W.id===ke);ie!=null&&ie.referenceImageUrl&&!p.includes(ie.referenceImageUrl)&&p.push(ie.referenceImageUrl)}const E=`va_${e.id}_shot${s.id}_first`,V=await ha.executeTool({name:"generate_image",arguments:{prompt:f.trim(),count:1,size:g,referenceImages:p.length>0?p:void 0,batchId:E,...U?{model:U,modelRef:_}:{}}},{mode:"queue"}),q=V.taskId||((A=V.data)==null?void 0:A.taskId);if(!V.success||!q)return null;const D=await wa(q,(te=I.current)==null?void 0:te.signal);if(!D.success)return null;const v=D.task||ye.getTask(q);return((ne=v==null?void 0:v.result)==null?void 0:ne.url)||null},[e,g,U,_]),fa=n.useCallback(async(s,t,c)=>{const u=s[t+1];if(!u)return s;const f=await aa(c,u.id,"first","last");if(!f||u.generated_first_frame_url===f)return s;const p=s.map((E,V)=>V===t+1?{...E,generated_first_frame_url:f}:E);return await se(p),p},[se]),La=n.useCallback(async(s,t,c)=>{const u=s[t];if(!u||u.generated_video_url===c)return s;const f=s.map((p,E)=>E===t?{...p,generated_video_url:c}:p);return await se(f),f},[se]),Oa=n.useCallback(async(s,t,c)=>{var v,A;const u=xa(s,e.analysis,e.productInfo);if(!u)return null;const f=t===0?ta[0]:s.generated_first_frame_url,p=s.generated_last_frame_url||((v=c[t+1])==null?void 0:v.generated_first_frame_url),{referenceImages:E}=Zs({model:M,firstFrameUrl:f,lastFrameUrl:p,extraReferenceUrls:ta.slice(t===0?1:0)}),V=`va_${e.id}_shot${s.id}_video`,q=await ha.executeTool({name:"generate_video",arguments:{prompt:u,size:P,seconds:String(Y),count:1,batchId:V,model:M,modelRef:O,referenceImages:E,params:me.provider==="seedance"?{aspect_ratio:Ge}:void 0}},{mode:"queue"}),D=q.taskId||((A=q.data)==null?void 0:A.taskId);if(!q.success||!D)throw new Error(q.error||"创建视频任务失败");return D},[e.analysis,e.id,e.productInfo,ta,Y,M,me.provider,O,P,Ge]),cs=n.useCallback(()=>{var s;S.current=!0,de(t=>t.running?{...t,stopping:!0}:t),R.current&&ye.cancelTask(R.current),(s=I.current)==null||s.abort()},[]);n.useEffect(()=>()=>{var s;S.current=!0,(s=I.current)==null||s.abort()},[]);const ms=n.useCallback(async()=>{var t,c,u,f,p;if($.running)return;let s=he;s&&!k&&(ze.warning("画布未就绪,本次将只生成不插入画布"),s=!1),await Aa(),S.current=!1,I.current=new AbortController,R.current=null,de({running:!0,stopping:!1,currentIndex:-1,retryCount:0});try{let E=z.current.characters||z.current.analysis.characters||[];const V=E.filter(v=>!v.referenceImageUrl);if(V.length>0&&!S.current){for(const v of V){if(S.current)break;const A=`va_${e.id}_char${v.id}_ref`,te=await ha.executeTool({name:"generate_image",arguments:{prompt:v.description,count:1,size:"1:1",batchId:A,...U?{model:U,modelRef:_}:{}}},{mode:"queue"}),ne=te.taskId||((t=te.data)==null?void 0:t.taskId);if(ne){const ke=await wa(ne,(c=I.current)==null?void 0:c.signal);if(ke.success){const ie=ke.task||ye.getTask(ne),W=(u=ie==null?void 0:ie.result)==null?void 0:u.url;if(W){const ae=(z.current.characters||z.current.analysis.characters||[]).map(ce=>ce.id===v.id?{...ce,referenceImageUrl:W}:ce);await Q({characters:ae})}}}}E=z.current.characters||z.current.analysis.characters||[]}let q=b.current,D;for(let v=0;v<q.length&&!S.current;v++){q=b.current;const A=q[v];if(!A||!xa(A,e.analysis,e.productInfo))continue;if(de(fe=>({...fe,currentIndex:v,retryCount:0})),A.generated_video_url){try{D=await aa(A.generated_video_url,A.id,"last","last")||void 0}catch{D=void 0}s&&await je(A.generated_video_url),q=await fa(q,v,A.generated_video_url);continue}if(E=z.current.characters||z.current.analysis.characters||[],((A.character_ids||[]).length>0||D!==void 0)&&!A.generated_first_frame_url&&!S.current){const fe=await Fa(A,D,E);fe&&(q=q.map((ae,ce)=>ce===v?{...ae,generated_first_frame_url:fe}:ae),await se(q))}if(S.current)break;let ie=0,W=null;for(;!S.current&&(W||(W=await Oa(q[v]||A,v,q)),!!W);){R.current=W,de({running:!0,stopping:!1,currentIndex:v,retryCount:ie});const fe=await wa(W,(f=I.current)==null?void 0:f.signal);if(S.current)break;const ae=fe.task||ye.getTask(W),ce=(p=ae==null?void 0:ae.result)==null?void 0:p.url;if(fe.success&&ae&&ce){q=await La(q,v,ce),s&&await je(ce);try{D=await aa(ce,A.id,"last","last")||void 0}catch{D=void 0}q=await fa(q,v,ce);break}if(ie+=1,de({running:!0,stopping:!1,currentIndex:v,retryCount:ie}),(ae==null?void 0:ae.status)===Ne.FAILED){ye.retryTask(W);continue}W=null}R.current=null}}finally{R.current=null,I.current=null,de({running:!1,stopping:!1,currentIndex:-1,retryCount:0})}},[$.running,Oa,Aa,Fa,se,Q,fa,e.id,e.analysis,e.productInfo,U,_,je,he,La,k]),ps=n.useCallback(async()=>{const s=yn(z.current,b.current);await se(s.shots),await Q({characters:s.characters})},[se,Q]),Je=n.useMemo(()=>{const[s,t]=Ge.split(":").map(Number);return!s||!t?{}:{width:Math.round(54*s/t),height:54}},[Ge]);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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1169,columnNumber:9},void 0),a.jsxDEV(Js,{images:B,onImagesChange:X,multiple:!0,label:"参考图 (可选)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1170,columnNumber:9},void 0),qe.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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1179,columnNumber:13},void 0),qe.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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1183,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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1184,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1182,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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1189,columnNumber:23},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>void r(s.id,void 0),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1194,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1188,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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1200,columnNumber:21},void 0),a.jsxDEV("button",{onClick:()=>N(s),children:"生成"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1202,columnNumber:19},void 0),a.jsxDEV("button",{onClick:()=>G(s.id),children:"素材库"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1203,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1186,columnNumber:17},void 0)]},s.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1181,columnNumber:15},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1178,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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1211,columnNumber:13},void 0),a.jsxDEV($e,{variant:"form",selectedModel:U,selectedSelectionKey:Be(U,_),onSelect:l,models:K,placement:"down",placeholder:"选择图片模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1212,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1210,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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1223,columnNumber:13},void 0),a.jsxDEV($e,{variant:"form",selectedModel:M,selectedSelectionKey:Be(M,O),onSelect:x,models:F,placement:"down",placeholder:"选择视频模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1224,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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1234,columnNumber:15},void 0),a.jsxDEV("select",{className:"va-form-select",value:String(Y),onChange:s=>h(parseInt(s.target.value,10)),disabled:Ue.length<=1,children:Ue.map(s=>a.jsxDEV("option",{value:s.value,children:s.label},s.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1242,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1235,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1247,columnNumber:15},void 0),a.jsxDEV("select",{className:"va-form-select",value:P,onChange:s=>ee(s.target.value),disabled:re.length<=1,children:re.map(s=>a.jsxDEV("option",{value:s.value,children:s.label},s.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1255,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1248,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1246,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1222,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1209,columnNumber:9},void 0),$.running&&a.jsxDEV("div",{className:"va-batch-config-title",children:["正在串行生成第 ",Math.max($.currentIndex+1,1),"/",o.length," 段",$.retryCount>0?`,已重试 ${$.retryCount} 次`:""]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1262,columnNumber:11},void 0),a.jsxDEV("div",{className:"va-page-actions",children:[j&&a.jsxDEV("button",{onClick:j,children:"重新分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1268,columnNumber:25},void 0),a.jsxDEV("button",{onClick:ps,children:"重置生成"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1269,columnNumber:11},void 0),a.jsxDEV("label",{className:"va-inline-checkbox",children:[a.jsxDEV("input",{type:"checkbox",checked:he,onChange:s=>De(s.target.checked)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1271,columnNumber:13},void 0),"生成后插入画布"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1270,columnNumber:11},void 0),a.jsxDEV("button",{onClick:ms,disabled:$.running,children:"全部→生成视频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1278,columnNumber:11},void 0),$.running&&a.jsxDEV("button",{onClick:cs,children:$.stopping?"停止中…":"停止全部生成"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1280,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1267,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1168,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-shots",children:o.map((s,t)=>a.jsxDEV(Ia,{shot:s,index:t,actions:a.jsxDEV(a.Fragment,{children:[s.generated_first_frame_url?a.jsxDEV("div",{className:"va-shot-frame-thumb",style:Je,onMouseEnter:c=>Ke(s.generated_first_frame_url,"image",c),onMouseLeave:Ye,children:[a.jsxDEV("img",{src:s.generated_first_frame_url,alt:"首帧",referrerPolicy:"no-referrer",onClick:()=>ca(s)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1304,columnNumber:21},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>pa(s.id,"first"),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1310,columnNumber:19},void 0),a.jsxDEV("button",{className:"va-shot-frame-regen",onClick:()=>ca(s),children:"↻"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1311,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1298,columnNumber:19},void 0):s.first_frame_prompt||s.description?a.jsxDEV("span",{className:"va-shot-frame-btn-group",children:[a.jsxDEV("button",{onClick:()=>ca(s),children:"生成首帧"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1315,columnNumber:21},void 0),a.jsxDEV("button",{className:"va-shot-frame-library-btn",onClick:()=>da(s.id,"first"),children:a.jsxDEV(Le,{content:"从素材库选择",showArrow:!1,children:a.jsxDEV("span",{children:a.jsxDEV(Ua,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1322,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1321,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1320,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1316,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1314,columnNumber:19},void 0):null,(()=>{const c=s.generated_last_frame_url||Fe(s,t),u=!s.generated_last_frame_url&&c;return s.generated_last_frame_url?a.jsxDEV("div",{className:"va-shot-frame-thumb",style:Je,onMouseEnter:f=>Ke(s.generated_last_frame_url,"image",f),onMouseLeave:Ye,children:[a.jsxDEV("img",{src:s.generated_last_frame_url,alt:"尾帧",referrerPolicy:"no-referrer",onClick:()=>Xe(s,t)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1340,columnNumber:25},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>pa(s.id,"last"),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1346,columnNumber:25},void 0),a.jsxDEV("button",{className:"va-shot-frame-regen",onClick:()=>Xe(s,t),children:"↻"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1347,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1334,columnNumber:23},void 0):u?a.jsxDEV("div",{className:"va-shot-frame-thumb va-shot-frame-thumb--borrowed",style:Je,onMouseEnter:f=>Ke(c,"image",f),onMouseLeave:Ye,children:[a.jsxDEV("img",{src:c,alt:"尾帧(下一镜头首帧)",referrerPolicy:"no-referrer",onClick:()=>Xe(s,t)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1359,columnNumber:25},void 0),a.jsxDEV("span",{className:"va-shot-frame-label",children:"下一镜头首帧"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1365,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1353,columnNumber:23},void 0):s.last_frame_prompt||s.description?a.jsxDEV("span",{className:"va-shot-frame-btn-group",children:[a.jsxDEV("button",{onClick:()=>Xe(s,t),children:"生成尾帧"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1372,columnNumber:25},void 0),a.jsxDEV("button",{className:"va-shot-frame-library-btn",onClick:()=>da(s.id,"last"),children:a.jsxDEV(Le,{content:"从素材库选择",showArrow:!1,children:a.jsxDEV("span",{children:a.jsxDEV(Ua,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1379,columnNumber:31},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1378,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1377,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1373,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1371,columnNumber:23},void 0):null})(),s.generated_video_url?a.jsxDEV("div",{className:"va-shot-frame-thumb",style:Je,onMouseEnter:c=>Ke(s.generated_video_url,"video",c),onMouseLeave:Ye,children:[a.jsxDEV(ns,{src:s.generated_video_url,alt:"生成视频缩略图",className:"va-shot-frame-media",thumbnailSize:"small",onClick:()=>ma(s,t),videoProps:{muted:!0,preload:"metadata"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1396,columnNumber:21},void 0),a.jsxDEV("button",{className:"va-shot-frame-delete",onClick:()=>pa(s.id,"video"),children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1407,columnNumber:21},void 0),a.jsxDEV("button",{className:"va-shot-frame-regen",onClick:()=>ma(s,t),children:"↻"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1408,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1390,columnNumber:19},void 0):s.description||s.narration||s.dialogue||s.camera_movement||s.first_frame_prompt||s.last_frame_prompt?a.jsxDEV("span",{className:"va-shot-frame-btn-group",children:[a.jsxDEV("button",{onClick:()=>ma(s,t),children:"生成视频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1412,columnNumber:21},void 0),a.jsxDEV("button",{className:"va-shot-frame-library-btn",onClick:()=>da(s.id,"video"),children:a.jsxDEV(Le,{content:"从素材库插入视频",showArrow:!1,children:a.jsxDEV("span",{children:a.jsxDEV(Ua,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1419,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1418,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1417,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1413,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1411,columnNumber:19},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1295,columnNumber:15},void 0)},s.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1290,columnNumber:11},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1288,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-page-actions mv-generate-footer-actions",children:[a.jsxDEV("button",{onClick:()=>void ue(),disabled:o.length===0||!k,children:"脚本插入画布"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1432,columnNumber:9},void 0),a.jsxDEV("button",{onClick:()=>void ls(),disabled:we||o.length===0,children:we?`素材下载 ${ra}%`:"素材下载 ZIP"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1435,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1431,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/video-analyzer/pages/GeneratePage.tsx",lineNumber:1439,columnNumber:7},void 0),a.jsxDEV(Ka,{isOpen:!!be,onClose:()=>oa(null),mode:Ya.SELECT,filterType:(be==null?void 0:be.assetType)==="video"?ja.VIDEO:ja.IMAGE,onSelect:os,selectButtonText:(be==null?void 0:be.assetType)==="video"?"使用此视频":"使用此图片"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1444,columnNumber:7},void 0),a.jsxDEV(Ka,{isOpen:!!y,onClose:()=>G(null),mode:Ya.SELECT,filterType:ja.IMAGE,onSelect:s=>{y&&r(y,s.url),G(null)},selectButtonText:"使用此图片"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1453,columnNumber:7},void 0),Ae&&Cs.createPortal(a.jsxDEV("div",{className:"mv-hover-preview",style:{left:`${Ae.x}px`,top:`${Ae.y}px`},onMouseEnter:ds,onMouseLeave:us,children:Ae.type==="image"?a.jsxDEV("img",{src:Ae.url,alt:"Preview",referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1475,columnNumber:13},void 0):a.jsxDEV("video",{src:Ae.url,controls:!0,muted:!0,preload:"metadata"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1477,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1468,columnNumber:9},void 0),document.body)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx",lineNumber:1166,columnNumber:5},void 0)};function ts(e){var i;return e.result?(i=e.result.urls)!=null&&i.length?e.result.urls.filter(Boolean):e.result.url?[e.result.url]:[]:[]}function bn(e){var i,d;return e.result?e.type===J.VIDEO?((i=e.result.thumbnailUrls)==null?void 0:i[0])||e.result.thumbnailUrl||null:((d=e.result.thumbnailUrls)==null?void 0:d[0])||e.result.url||null:null}function xn(e){switch(e){case Ne.COMPLETED:return"已完成";case Ne.PROCESSING:return"进行中";case Ne.PENDING:return"等待中";case Ne.FAILED:return"失败";default:return""}}function hn(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 jn(e){const i=new Date(e);return`${i.getMonth()+1}/${i.getDate()} ${String(i.getHours()).padStart(2,"0")}:${String(i.getMinutes()).padStart(2,"0")}`}function wn(e){const i=String(e.params.prompt||"");return i.length>40?`${i.slice(0,40)}…`:i}const kn=({record:e,related:i,isExpanded:d,onSelect:j,onToggleStar:o,onDelete:g,onToggleExpand:m,onInsertTask:w,onPreviewOpen:k,onSelectScript:z})=>{const b=!!(i&&i.rewrite.length+i.image.length+i.video.length>0),S=i?[...i.image,...i.video]:[];return a.jsxDEV("div",{className:"va-history-item",onClick:()=>j(e),children:[a.jsxDEV("div",{className:"va-history-header",children:[a.jsxDEV("span",{className:"va-history-source",children:[e.source==="youtube"?"🔗":"📁"," ",e.sourceLabel]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:112,columnNumber:9},void 0),a.jsxDEV("button",{className:`va-star-btn ${e.starred?"starred":""}`,onClick:I=>o(I,e),children:e.starred?"★":"☆"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:115,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:111,columnNumber:7},void 0),a.jsxDEV("div",{className:"va-history-meta",children:[b&&a.jsxDEV("button",{className:`va-history-expand-btn ${d?"expanded":""}`,onClick:I=>m(I,e.id),children:[a.jsxDEV(As,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:128,columnNumber:13},void 0),a.jsxDEV("span",{children:d?"收起":"关联任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:129,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:124,columnNumber:11},void 0),a.jsxDEV("span",{children:new Date(e.createdAt).toLocaleString()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:132,columnNumber:9},void 0),a.jsxDEV("span",{children:[e.analysis.shotCount," 镜头"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:133,columnNumber:9},void 0),a.jsxDEV("span",{children:e.model},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:134,columnNumber:9},void 0),a.jsxDEV("button",{className:"va-history-delete",onClick:I=>g(I,e.id),children:"删除"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:135,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:122,columnNumber:7},void 0),e.analysis.video_style&&a.jsxDEV("div",{className:"va-history-style",children:e.analysis.video_style},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:140,columnNumber:9},void 0),d&&i&&a.jsxDEV(zn,{related:i,record:e,previewTasks:S,onInsertTask:w,onPreviewOpen:k,onSelectScript:z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:143,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:110,columnNumber:5},void 0)},zn=({related:e,record:i,previewTasks:d,onInsertTask:j,onPreviewOpen:o,onSelectScript:g})=>a.jsxDEV("div",{className:"va-history-related",onClick:m=>m.stopPropagation(),children:[e.rewrite.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["脚本改编 (",e.rewrite.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:167,columnNumber:9},void 0),e.rewrite.map(m=>a.jsxDEV(Pa,{task:m,onClick:w=>g==null?void 0:g(w,i,m)},m.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:169,columnNumber:11},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:166,columnNumber:7},void 0),e.image.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["图片生成 (",e.image.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:179,columnNumber:9},void 0),e.image.map(m=>a.jsxDEV(Pa,{task:m,previewTasks:d,onInsertTask:j,onPreviewOpen:o},m.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:181,columnNumber:11},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:178,columnNumber:7},void 0),e.video.length>0&&a.jsxDEV("div",{children:[a.jsxDEV("div",{className:"va-history-related-group-title",children:["视频生成 (",e.video.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:193,columnNumber:9},void 0),e.video.map(m=>a.jsxDEV(Pa,{task:m,previewTasks:d,onInsertTask:j,onPreviewOpen:o},m.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:195,columnNumber:11},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:192,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:164,columnNumber:3},void 0),Pa=({task:e,previewTasks:i,onClick:d,onInsertTask:j,onPreviewOpen:o})=>{const g=e.status===Ne.COMPLETED,m=ts(e),w=g&&m.length>0,k=(e.type===J.IMAGE||e.type===J.VIDEO)&&w&&!!(i!=null&&i.length),z=bn(e),b=m[0],S=n.useCallback(I=>{if(k&&i){o==null||o(I,e,i);return}d==null||d(I)},[k,d,o,i,e]);return a.jsxDEV(Le,{content:xn(e.status),showArrow:!1,children:a.jsxDEV("div",{className:"va-history-related-task",onClick:S,children:[a.jsxDEV("span",{className:`va-history-related-task-status ${hn(e.status)}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:239,columnNumber:9},void 0),a.jsxDEV("span",{className:"va-history-related-task-prompt",children:wn(e)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:242,columnNumber:9},void 0),a.jsxDEV("span",{className:"va-history-related-task-time",children:jn(e.createdAt)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:245,columnNumber:9},void 0),w&&b&&e.type!==J.CHAT&&a.jsxDEV("span",{className:"va-history-related-task-thumb",children:[e.type===J.VIDEO?a.jsxDEV(ns,{src:b,poster:z||void 0,alt:"",className:"va-history-related-task-thumb-media",thumbnailSize:"small",videoProps:{preload:"metadata",muted:!0,playsInline:!0,"aria-hidden":!0}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:251,columnNumber:15},void 0):a.jsxDEV("img",{src:z||b,alt:"",referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:265,columnNumber:15},void 0),e.type===J.VIDEO&&a.jsxDEV("span",{className:"va-history-related-task-thumb-badge","aria-hidden":"true",children:"▶"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:272,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:249,columnNumber:11},void 0),w&&j&&a.jsxDEV(Le,{content:"插入画板",showArrow:!1,children:a.jsxDEV("button",{className:"va-history-related-insert-btn",onClick:I=>j(I,e),"aria-label":"插入画板",children:a.jsxDEV(Ms,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:288,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:283,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:282,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:238,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/components/HistoryRecordCard.tsx",lineNumber:237,columnNumber:5},void 0)};function En(e,i,d){var o;const j=((o=e.result)==null?void 0:o.title)||e.params.title||e.params.prompt||(e.type===J.VIDEO?"视频预览":"图片预览");return d>1?`${j} (${i+1}/${d})`:j}function Vn(e){var j,o,g;const i=[],d=new Map;for(const m of e){if(m.type!==J.IMAGE&&m.type!==J.VIDEO)continue;const w=ts(m);if(w.length===0)continue;const k=i.length,z=m.type===J.VIDEO&&(((o=(j=m.result)==null?void 0:j.thumbnailUrls)==null?void 0:o[0])||((g=m.result)==null?void 0:g.thumbnailUrl))||void 0;w.forEach((b,S)=>{i.push({id:w.length>1?`${m.id}-${S}`:m.id,url:b,type:m.type===J.VIDEO?"video":"image",title:En(m,S,w.length),prompt:m.params.prompt,posterUrl:m.type===J.VIDEO?z:void 0})}),d.set(m.id,k)}return{items:i,taskIdToIndex:d}}const Dn=({records:e,onSelect:i,onRecordsChange:d,showStarredOnly:j=!1,onInsertTask:o,onSelectScript:g})=>{const m=j?e.filter(C=>C.starred):e,[w,k]=n.useState(null),[z,b]=n.useState(!1),[S,I]=n.useState([]),[R,B]=n.useState(0),[X,y]=n.useState(null),{tasks:G}=is(),K=n.useMemo(()=>{const C=new Map,P=new Set(e.map(Y=>Y.id)),H=()=>({rewrite:[],image:[],video:[]});for(const Y of G){const Z=Y.params;if(Y.type===J.CHAT&&Z.videoAnalyzerAction==="rewrite"&&typeof Z.videoAnalyzerRecordId=="string"&&P.has(Z.videoAnalyzerRecordId)){const $=Z.videoAnalyzerRecordId;Wa(C,$,"rewrite",Y,H);continue}if((Y.type===J.IMAGE||Y.type===J.VIDEO)&&typeof Z.batchId=="string"&&Z.batchId.startsWith("va_")){const $=Rs(Z.batchId,"va_",P);if($){const de=Y.type===J.IMAGE?"image":"video";Wa(C,$,de,Y,H)}}}return Ts(C)},[G,e]),F=n.useCallback(async(C,P)=>{C.stopPropagation();const H=await le(P.id,{starred:!P.starred});d(H)},[d]),U=n.useCallback((C,P)=>{C.stopPropagation(),y(P)},[]),T=n.useCallback(async()=>{if(!X)return;const C=await Gs(X);d(C),y(null)},[d,X]),_=n.useCallback((C,P)=>{C.stopPropagation(),k(H=>H===P?null:P)},[]),oe=n.useCallback((C,P)=>{C.stopPropagation(),o==null||o(P)},[o]),M=n.useCallback((C,P,H)=>{C.stopPropagation(),g==null||g(P,H)},[g]),L=n.useCallback((C,P,H)=>{C.stopPropagation();const{items:Y,taskIdToIndex:Z}=Vn(H),$=Z.get(P.id);!Y.length||$===void 0||(I(Y),B($),b(!0))},[]),O=n.useCallback(()=>{b(!1)},[]);return m.length===0?a.jsxDEV("div",{className:"va-page va-empty",children:a.jsxDEV("span",{children:j?"暂无收藏":"暂无分析记录"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/HistoryPage.tsx",lineNumber:196,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/HistoryPage.tsx",lineNumber:195,columnNumber:7},void 0):a.jsxDEV(a.Fragment,{children:[a.jsxDEV("div",{className:"va-page",children:a.jsxDEV("div",{className:"va-history-list",children:m.map(C=>{const P=K.get(C.id),H=w===C.id;return a.jsxDEV(kn,{record:C,related:P,isExpanded:H,onSelect:i,onToggleStar:F,onDelete:U,onToggleExpand:_,onInsertTask:oe,onPreviewOpen:L,onSelectScript:M},C.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/HistoryPage.tsx",lineNumber:210,columnNumber:15},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/HistoryPage.tsx",lineNumber:204,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/HistoryPage.tsx",lineNumber:203,columnNumber:7},void 0),a.jsxDEV(Fs,{visible:z,items:S,initialIndex:R,onClose:O,showThumbnails:S.length>1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/HistoryPage.tsx",lineNumber:228,columnNumber:7},void 0),a.jsxDEV(Ls,{open:X!==null,title:"确认删除",description:"确定要删除这条历史记录吗?此操作不可撤销。",confirmText:"删除",cancelText:"取消",danger:!0,onOpenChange:C=>{C||y(null)},onConfirm:T},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/HistoryPage.tsx",lineNumber:236,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/pages/HistoryPage.tsx",lineNumber:202,columnNumber:5},void 0)},Mn=()=>{const[e,i]=n.useState("analyze"),[d,j]=n.useState(null),[o,g]=n.useState([]),[m,w]=n.useState(!1),{board:k}=qa();n.useEffect(()=>{Sa().then(g)},[]),n.useEffect(()=>{let y=!1;const G=new Set,K=async U=>{if(!(!on(U)||G.has(U.id))){G.add(U.id);try{const T=await Ca(U);if(!T||y)return;g(T.records),j(_=>(_==null?void 0:_.id)===T.record.id?T.record:_)}catch(T){console.error("[VideoAnalyzer] Failed to sync task result:",T)}finally{G.delete(U.id)}}};ye.getAllTasks().forEach(U=>{K(U)});const F=ye.observeTaskUpdates().subscribe(U=>{U.task.status==="completed"&&K(U.task)});return()=>{y=!0,F.unsubscribe()}},[]);const z=n.useCallback(y=>{j(y)},[]),b=n.useCallback(y=>{j(y),i("analyze")},[]),S=n.useCallback(y=>{j(y)},[]),I=n.useCallback(()=>{j(null),i("analyze")},[]),R=n.useCallback(y=>{y==="history"&&w(!1),i(y)},[]),B=n.useCallback(async y=>{var G,K,F,U;if(!((G=y.result)!=null&&G.url)&&!((F=(K=y.result)==null?void 0:K.urls)!=null&&F.length)||!k){ze.warning("无法插入:白板未就绪");return}try{if(y.type===J.IMAGE){const T=(U=y.result.urls)!=null&&U.length?y.result.urls:[y.result.url];for(const _ of T)await Os(k,_);ze.success(T.length>1?"多图已插入到白板":"图片已插入到白板")}else y.type===J.VIDEO&&(await Hs(k,y.result.url),ze.success("视频已插入到白板"))}catch(T){console.error("[VideoAnalyzer] Failed to insert to board:",T),ze.error(`插入失败: ${T instanceof Error?T.message:"未知错误"}`)}},[k]),X=n.useCallback(async(y,G)=>{const K=String(G.params.videoAnalyzerPrompt||G.params.prompt||""),F=y.scriptVersions||[],U=F.find(_=>_.prompt===K)||F.find(_=>{var oe;return K&&((oe=_.prompt)==null?void 0:oe.includes(K))});let T=y;if(U&&U.id!==y.activeVersionId){const _=ss(y,U.id);if(_){const oe=await le(y.id,_);T=oe.find(M=>M.id===y.id)||{...y,..._},g(oe)}}j(T),i("script")},[]);return a.jsxDEV("div",{className:"video-analyzer",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/video-analyzer/VideoAnalyzer.tsx",lineNumber:158,columnNumber:13},void 0),a.jsxDEV("span",{className:"va-nav-title",children:m?"收藏":"历史记录"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:159,columnNumber:13},void 0),a.jsxDEV("button",{className:`va-nav-btn ${m?"active":""}`,onClick:()=>w(y=>!y),children:m?"★ 收藏":"☆ 全部"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:160,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:157,columnNumber:11},void 0):a.jsxDEV(a.Fragment,{children:[a.jsxDEV(Qs,{current:e,onNavigate:R,hasRecord:!!d},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:169,columnNumber:13},void 0),a.jsxDEV("div",{className:"va-nav-actions",children:[a.jsxDEV("button",{className:"va-nav-btn",onClick:()=>{w(!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/video-analyzer/VideoAnalyzer.tsx",lineNumber:172,columnNumber:17},void 0),o.length>0&&a.jsxDEV("span",{className:"va-nav-count",children:o.length},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:173,columnNumber:40},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:171,columnNumber:15},void 0),a.jsxDEV("button",{className:"va-nav-btn",onClick:()=>{w(!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/video-analyzer/VideoAnalyzer.tsx",lineNumber:176,columnNumber:17},void 0),o.filter(y=>y.starred).length>0&&a.jsxDEV("span",{className:"va-nav-count",children:o.filter(y=>y.starred).length},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:177,columnNumber:63},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:175,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:170,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:168,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:155,columnNumber:7},void 0),e==="analyze"&&a.jsxDEV(cn,{existingRecord:d,onComplete:z,onRecordsChange:g,onCreateNew:I,onNext:d?()=>i("script"):void 0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:186,columnNumber:9},void 0),e==="script"&&d&&a.jsxDEV(gn,{record:d,onRecordUpdate:S,onRecordsChange:g,onNext:()=>i("generate")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:195,columnNumber:9},void 0),e==="generate"&&d&&a.jsxDEV(Nn,{record:d,onRecordUpdate:S,onRecordsChange:g,onRestart:I},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:203,columnNumber:9},void 0),e==="history"&&a.jsxDEV(Dn,{records:o,onSelect:b,onRecordsChange:g,showStarredOnly:m,onInsertTask:k?B:void 0,onSelectScript:X},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:211,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-analyzer/VideoAnalyzer.tsx",lineNumber:153,columnNumber:5},void 0)};export{Mn as default};
@@ -1 +1 @@
1
- import{w as ln,c as Q}from"./path-CY0bYimO.js";import{aM as an,aN as X,aO as I,aP as rn,aQ as y,aI as on,aR as B,aS as _,aT as un,aU as t,aV as sn,aW as tn,aX as fn}from"./mermaid.core-GIkiJOrg.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function mn(l){return l.endAngle}function pn(l){return l&&l.padAngle}function dn(l,h,q,O,v,R,U,a){var D=q-l,i=O-h,n=U-v,m=a-R,r=m*D-n*i;if(!(r*r<y))return r=(n*(h-R)-m*(l-v))/r,[l+r*D,h+r*i]}function K(l,h,q,O,v,R,U){var a=l-q,D=h-O,i=(U?R:-R)/B(a*a+D*D),n=i*D,m=-i*a,r=l+n,s=h+m,f=q+n,c=O+m,V=(r+f)/2,o=(s+c)/2,p=f-r,g=c-s,A=p*p+g*g,T=v-R,P=r*c-f*s,E=(g<0?-1:1)*B(tn(0,T*T*A-P*P)),M=(P*g-p*E)/A,N=(-P*p-g*E)/A,w=(P*g+p*E)/A,d=(-P*p+g*E)/A,x=M-V,e=N-o,u=w-V,W=d-o;return x*x+e*e>u*u+W*W&&(M=w,N=d),{cx:M,cy:N,x01:-n,y01:-m,x11:M*(v/T-1),y11:N*(v/T-1)}}function vn(){var l=cn,h=yn,q=Q(0),O=null,v=gn,R=mn,U=pn,a=null,D=ln(i);function i(){var n,m,r=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-rn,c=R.apply(this,arguments)-rn,V=un(c-f),o=c>f;if(a||(a=n=D()),s<r&&(m=s,s=r,r=m),!(s>y))a.moveTo(0,0);else if(V>on-y)a.moveTo(s*X(f),s*I(f)),a.arc(0,0,s,f,c,!o),r>y&&(a.moveTo(r*X(c),r*I(c)),a.arc(0,0,r,c,f,o));else{var p=f,g=c,A=f,T=c,P=V,E=V,M=U.apply(this,arguments)/2,N=M>y&&(O?+O.apply(this,arguments):B(r*r+s*s)),w=_(un(s-r)/2,+q.apply(this,arguments)),d=w,x=w,e,u;if(N>y){var W=sn(N/r*I(M)),C=sn(N/s*I(M));(P-=W*2)>y?(W*=o?1:-1,A+=W,T-=W):(P=0,A=T=(f+c)/2),(E-=C*2)>y?(C*=o?1:-1,p+=C,g-=C):(E=0,p=g=(f+c)/2)}var j=s*X(p),z=s*I(p),F=r*X(T),G=r*I(T);if(w>y){var H=s*X(g),J=s*I(g),L=r*X(A),Y=r*I(A),S;if(V<an)if(S=dn(j,z,L,Y,H,J,F,G)){var Z=j-S[0],$=z-S[1],k=H-S[0],b=J-S[1],nn=1/I(fn((Z*k+$*b)/(B(Z*Z+$*$)*B(k*k+b*b)))/2),en=B(S[0]*S[0]+S[1]*S[1]);d=_(w,(r-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else d=x=0}E>y?x>y?(e=K(L,Y,j,z,s,x,o),u=K(H,J,F,G,s,x,o),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(u.y01,u.x01),!o):(a.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(e.y11,e.x11),!o),a.arc(0,0,s,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),!o),a.arc(u.cx,u.cy,x,t(u.y11,u.x11),t(u.y01,u.x01),!o))):(a.moveTo(j,z),a.arc(0,0,s,p,g,!o)):a.moveTo(j,z),!(r>y)||!(P>y)?a.lineTo(F,G):d>y?(e=K(F,G,H,J,r,-d,o),u=K(j,z,L,Y,r,-d,o),a.lineTo(e.cx+e.x01,e.cy+e.y01),d<w?a.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(u.y01,u.x01),!o):(a.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(e.y11,e.x11),!o),a.arc(0,0,r,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),o),a.arc(u.cx,u.cy,d,t(u.y11,u.x11),t(u.y01,u.x01),!o))):a.arc(0,0,r,T,A,o)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,m=(+v.apply(this,arguments)+ +R.apply(this,arguments))/2-an/2;return[X(m)*n,I(m)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:Q(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:Q(+n),i):h},i.cornerRadius=function(n){return arguments.length?(q=typeof n=="function"?n:Q(+n),i):q},i.padRadius=function(n){return arguments.length?(O=n==null?null:typeof n=="function"?n:Q(+n),i):O},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:Q(+n),i):v},i.endAngle=function(n){return arguments.length?(R=typeof n=="function"?n:Q(+n),i):R},i.padAngle=function(n){return arguments.length?(U=typeof n=="function"?n:Q(+n),i):U},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{vn as a};
1
+ import{w as ln,c as Q}from"./path-CY0bYimO.js";import{aM as an,aN as X,aO as I,aP as rn,aQ as y,aI as on,aR as B,aS as _,aT as un,aU as t,aV as sn,aW as tn,aX as fn}from"./mermaid.core-FQIGteI2.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function mn(l){return l.endAngle}function pn(l){return l&&l.padAngle}function dn(l,h,q,O,v,R,U,a){var D=q-l,i=O-h,n=U-v,m=a-R,r=m*D-n*i;if(!(r*r<y))return r=(n*(h-R)-m*(l-v))/r,[l+r*D,h+r*i]}function K(l,h,q,O,v,R,U){var a=l-q,D=h-O,i=(U?R:-R)/B(a*a+D*D),n=i*D,m=-i*a,r=l+n,s=h+m,f=q+n,c=O+m,V=(r+f)/2,o=(s+c)/2,p=f-r,g=c-s,A=p*p+g*g,T=v-R,P=r*c-f*s,E=(g<0?-1:1)*B(tn(0,T*T*A-P*P)),M=(P*g-p*E)/A,N=(-P*p-g*E)/A,w=(P*g+p*E)/A,d=(-P*p+g*E)/A,x=M-V,e=N-o,u=w-V,W=d-o;return x*x+e*e>u*u+W*W&&(M=w,N=d),{cx:M,cy:N,x01:-n,y01:-m,x11:M*(v/T-1),y11:N*(v/T-1)}}function vn(){var l=cn,h=yn,q=Q(0),O=null,v=gn,R=mn,U=pn,a=null,D=ln(i);function i(){var n,m,r=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-rn,c=R.apply(this,arguments)-rn,V=un(c-f),o=c>f;if(a||(a=n=D()),s<r&&(m=s,s=r,r=m),!(s>y))a.moveTo(0,0);else if(V>on-y)a.moveTo(s*X(f),s*I(f)),a.arc(0,0,s,f,c,!o),r>y&&(a.moveTo(r*X(c),r*I(c)),a.arc(0,0,r,c,f,o));else{var p=f,g=c,A=f,T=c,P=V,E=V,M=U.apply(this,arguments)/2,N=M>y&&(O?+O.apply(this,arguments):B(r*r+s*s)),w=_(un(s-r)/2,+q.apply(this,arguments)),d=w,x=w,e,u;if(N>y){var W=sn(N/r*I(M)),C=sn(N/s*I(M));(P-=W*2)>y?(W*=o?1:-1,A+=W,T-=W):(P=0,A=T=(f+c)/2),(E-=C*2)>y?(C*=o?1:-1,p+=C,g-=C):(E=0,p=g=(f+c)/2)}var j=s*X(p),z=s*I(p),F=r*X(T),G=r*I(T);if(w>y){var H=s*X(g),J=s*I(g),L=r*X(A),Y=r*I(A),S;if(V<an)if(S=dn(j,z,L,Y,H,J,F,G)){var Z=j-S[0],$=z-S[1],k=H-S[0],b=J-S[1],nn=1/I(fn((Z*k+$*b)/(B(Z*Z+$*$)*B(k*k+b*b)))/2),en=B(S[0]*S[0]+S[1]*S[1]);d=_(w,(r-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else d=x=0}E>y?x>y?(e=K(L,Y,j,z,s,x,o),u=K(H,J,F,G,s,x,o),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(u.y01,u.x01),!o):(a.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(e.y11,e.x11),!o),a.arc(0,0,s,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),!o),a.arc(u.cx,u.cy,x,t(u.y11,u.x11),t(u.y01,u.x01),!o))):(a.moveTo(j,z),a.arc(0,0,s,p,g,!o)):a.moveTo(j,z),!(r>y)||!(P>y)?a.lineTo(F,G):d>y?(e=K(F,G,H,J,r,-d,o),u=K(j,z,L,Y,r,-d,o),a.lineTo(e.cx+e.x01,e.cy+e.y01),d<w?a.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(u.y01,u.x01),!o):(a.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(e.y11,e.x11),!o),a.arc(0,0,r,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),o),a.arc(u.cx,u.cy,d,t(u.y11,u.x11),t(u.y01,u.x01),!o))):a.arc(0,0,r,T,A,o)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,m=(+v.apply(this,arguments)+ +R.apply(this,arguments))/2-an/2;return[X(m)*n,I(m)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:Q(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:Q(+n),i):h},i.cornerRadius=function(n){return arguments.length?(q=typeof n=="function"?n:Q(+n),i):q},i.padRadius=function(n){return arguments.length?(O=n==null?null:typeof n=="function"?n:Q(+n),i):O},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:Q(+n),i):v},i.endAngle=function(n){return arguments.length?(R=typeof n=="function"?n:Q(+n),i):R},i.padAngle=function(n){return arguments.length?(U=typeof n=="function"?n:Q(+n),i):U},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{vn as a};
@@ -1 +1 @@
1
- import{w as ln,c as B}from"./path-CbwjOpE9.js";import{a4 as an,a5 as H,a6 as q,a7 as rn,a8 as y,a0 as on,a9 as L,aa as _,ab as un,ac as t,ad as sn,ae as tn,af as fn}from"./index-Dk5t_-56.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function mn(l){return l.endAngle}function pn(l){return l&&l.padAngle}function dn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,m=a-A,r=m*O-n*i;if(!(r*r<y))return r=(n*(h-A)-m*(l-v))/r,[l+r*O,h+r*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,m=-i*a,r=l+n,s=h+m,f=I+n,c=D+m,F=(r+f)/2,o=(s+c)/2,p=f-r,g=c-s,R=p*p+g*g,T=v-A,P=r*c-f*s,S=(g<0?-1:1)*L(tn(0,T*T*R-P*P)),j=(P*g-p*S)/R,z=(-P*p-g*S)/R,w=(P*g+p*S)/R,d=(-P*p+g*S)/R,x=j-F,e=z-o,u=w-F,G=d-o;return x*x+e*e>u*u+G*G&&(j=w,z=d),{cx:j,cy:z,x01:-n,y01:-m,x11:j*(v/T-1),y11:z*(v/T-1)}}function vn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=mn,C=pn,a=null,O=ln(i);function i(){var n,m,r=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-rn,c=A.apply(this,arguments)-rn,F=un(c-f),o=c>f;if(a||(a=n=O()),s<r&&(m=s,s=r,r=m),!(s>y))a.moveTo(0,0);else if(F>on-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!o),r>y&&(a.moveTo(r*H(c),r*q(c)),a.arc(0,0,r,c,f,o));else{var p=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(r*r+s*s)),w=_(un(s-r)/2,+I.apply(this,arguments)),d=w,x=w,e,u;if(z>y){var G=sn(z/r*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=o?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=o?1:-1,p+=M,g-=M):(S=0,p=g=(f+c)/2)}var J=s*H(p),K=s*q(p),N=r*H(T),Q=r*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=r*H(R),Y=r*q(R),E;if(F<an)if(E=dn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(fn((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);d=_(w,(r-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else d=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,o),u=W(U,V,N,Q,s,x,o),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(u.y01,u.x01),!o):(a.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(e.y11,e.x11),!o),a.arc(0,0,s,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),!o),a.arc(u.cx,u.cy,x,t(u.y11,u.x11),t(u.y01,u.x01),!o))):(a.moveTo(J,K),a.arc(0,0,s,p,g,!o)):a.moveTo(J,K),!(r>y)||!(P>y)?a.lineTo(N,Q):d>y?(e=W(N,Q,U,V,r,-d,o),u=W(J,K,X,Y,r,-d,o),a.lineTo(e.cx+e.x01,e.cy+e.y01),d<w?a.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(u.y01,u.x01),!o):(a.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(e.y11,e.x11),!o),a.arc(0,0,r,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),o),a.arc(u.cx,u.cy,d,t(u.y11,u.x11),t(u.y01,u.x01),!o))):a.arc(0,0,r,T,R,o)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,m=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[H(m)*n,q(m)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{vn as a};
1
+ import{w as ln,c as B}from"./path-CbwjOpE9.js";import{a4 as an,a5 as H,a6 as q,a7 as rn,a8 as y,a0 as on,a9 as L,aa as _,ab as un,ac as t,ad as sn,ae as tn,af as fn}from"./index-zC8JwbY7.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function mn(l){return l.endAngle}function pn(l){return l&&l.padAngle}function dn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,m=a-A,r=m*O-n*i;if(!(r*r<y))return r=(n*(h-A)-m*(l-v))/r,[l+r*O,h+r*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,m=-i*a,r=l+n,s=h+m,f=I+n,c=D+m,F=(r+f)/2,o=(s+c)/2,p=f-r,g=c-s,R=p*p+g*g,T=v-A,P=r*c-f*s,S=(g<0?-1:1)*L(tn(0,T*T*R-P*P)),j=(P*g-p*S)/R,z=(-P*p-g*S)/R,w=(P*g+p*S)/R,d=(-P*p+g*S)/R,x=j-F,e=z-o,u=w-F,G=d-o;return x*x+e*e>u*u+G*G&&(j=w,z=d),{cx:j,cy:z,x01:-n,y01:-m,x11:j*(v/T-1),y11:z*(v/T-1)}}function vn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=mn,C=pn,a=null,O=ln(i);function i(){var n,m,r=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-rn,c=A.apply(this,arguments)-rn,F=un(c-f),o=c>f;if(a||(a=n=O()),s<r&&(m=s,s=r,r=m),!(s>y))a.moveTo(0,0);else if(F>on-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!o),r>y&&(a.moveTo(r*H(c),r*q(c)),a.arc(0,0,r,c,f,o));else{var p=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(r*r+s*s)),w=_(un(s-r)/2,+I.apply(this,arguments)),d=w,x=w,e,u;if(z>y){var G=sn(z/r*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=o?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=o?1:-1,p+=M,g-=M):(S=0,p=g=(f+c)/2)}var J=s*H(p),K=s*q(p),N=r*H(T),Q=r*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=r*H(R),Y=r*q(R),E;if(F<an)if(E=dn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(fn((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);d=_(w,(r-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else d=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,o),u=W(U,V,N,Q,s,x,o),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(u.y01,u.x01),!o):(a.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(e.y11,e.x11),!o),a.arc(0,0,s,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),!o),a.arc(u.cx,u.cy,x,t(u.y11,u.x11),t(u.y01,u.x01),!o))):(a.moveTo(J,K),a.arc(0,0,s,p,g,!o)):a.moveTo(J,K),!(r>y)||!(P>y)?a.lineTo(N,Q):d>y?(e=W(N,Q,U,V,r,-d,o),u=W(J,K,X,Y,r,-d,o),a.lineTo(e.cx+e.x01,e.cy+e.y01),d<w?a.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(u.y01,u.x01),!o):(a.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(e.y11,e.x11),!o),a.arc(0,0,r,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),o),a.arc(u.cx,u.cy,d,t(u.y11,u.x11),t(u.y01,u.x01),!o))):a.arc(0,0,r,T,R,o)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,m=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[H(m)*n,q(m)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{vn as a};
@@ -1,4 +1,4 @@
1
- import{r as o,b8 as kt,bm as vt,hL as yt,ig as jt,eW as Et,as as ue,bn as za,bo as Dt,hM as _a,hK as ma,hN as Ra,i4 as Ut,al as N,ar as Pe,d4 as Vt,_ as ga,eO as G,d2 as Ct,hY as qt,io as St,gK as zt,y as t,bV as M,fM as j,l1 as Ta,m7 as _t,kz as Rt,m8 as Tt,m9 as Mt,iw as $t,hS as At,bt as Ma,jN as $a,ma as Oe,g5 as It,iT as Lt,g3 as Pt,bu as Aa,kt as Ot,cr as Ia,ir as Ft,bx as Kt,dp as Gt,mb as Bt}from"./tool-windows-DWUG3k_L.js";import{a as Jt,h as Fe,i as Ke,j as ha}from"./main-sSl0uAQQ.js";function Ht(ie={}){const{showNavbar:C=!0,showToolbar:B=!0,showTitle:$=!0,videoAutoPlay:J=!0,videoLoop:r=!0,onClose:se,onIndexChange:le}=ie,[A,me]=o.useState(!1),[Z,I]=o.useState([]),[ge,ce]=o.useState(0),Ge=o.useCallback((f,D=0)=>{const T=Array.isArray(f)?f:[f];T.length!==0&&(I(T),ce(Math.max(0,Math.min(D,T.length-1))),me(!0))},[]),he=o.useCallback(()=>{me(!1),I([]),ce(0),se==null||se()},[se]),fe=o.useCallback(f=>{ce(f),le==null||le(f)},[le]),ve=o.useMemo(()=>({visible:A,items:Z,initialIndex:ge,onClose:he,onIndexChange:fe,showNavbar:C,showToolbar:B,showTitle:$,videoAutoPlay:J,videoLoop:r}),[A,Z,ge,he,fe,C,B,$,J,r]);return{openViewer:Ge,closeViewer:he,isOpen:A,currentIndex:ge,items:Z,viewerProps:ve}}function Wt(ie,C="image"){return ie.map((B,$)=>({url:B,type:C,alt:`${C==="image"?"Image":"Video"} ${$+1}`}))}const La=Dt.BATCH_IMAGE_CACHE,Xt=["auto","1x1","1x4","4x1","1x8","8x1","2x3","3x2","3x4","4x3","4x5","5x4","9x16","16x9","21x9"],fa={auto:"自动","1x1":"1:1","1x4":"1:4","4x1":"4:1","1x8":"1:8","8x1":"8:1","2x3":"2:3","3x2":"3:2","3x4":"3:4","4x3":"4:3","4x5":"4:5","5x4":"5:4","9x16":"9:16","16x9":"16:9","21x9":"21:9"},E=["prompt","size","images","count","preview"];function Yt(){const ie=[];for(let C=0;C<5;C++)ie.push({id:C+1,prompt:"",size:"auto",images:[],count:1,taskIds:[]});return ie}const ti=({onSwitchToSingle:ie,selectedModel:C,selectedModelRef:B,onModelChange:$,onModelRefChange:J})=>{var qa;const{language:r}=kt(),{confirm:se,confirmDialog:le}=vt(),A=yt("image"),{createTask:me,tasks:Z}=Jt(),{addAsset:I,assets:ge,loadAssets:ce}=jt(),{isMobile:Ge,isTablet:he}=Et(),fe=Ge||he,ve=ge.filter(a=>a.type===ue.IMAGE);o.useEffect(()=>{ce()},[ce]);const[f,D]=o.useState(Yt),[T,ye]=o.useState(6),[pa,ba]=o.useState(!1),[Be,Je]=o.useState(!1);o.useEffect(()=>{let a=!0;return za.get(La).then(e=>{a&&(e&&e.tasks&&Array.isArray(e.tasks)&&e.tasks.length>0&&(D(e.tasks),e.taskIdCounter&&ye(e.taskIdCounter)),ba(!0))}).catch(e=>{console.warn("Failed to load batch image cache:",e),a&&ba(!0)}),()=>{a=!1}},[]);const[k,ne]=o.useState(null),[_,H]=o.useState([]),[L,U]=o.useState(null),[w,W]=o.useState(new Set),{validSelectedRows:Zt,selectedTaskCount:Qt,selectedInfoText:Pa}=o.useMemo(()=>{const a=[...w].filter(s=>{const l=f[s];return l&&l.prompt&&l.prompt.trim()!==""}).sort((s,l)=>s-l),e=a.reduce((s,l)=>{const u=f[l];return s+((u==null?void 0:u.count)||1)},0),i=a.length>0?r==="zh"?`已选 ${a.length} 行 / ${e} 任务`:`${a.length} rows / ${e} tasks`:"";return{validSelectedRows:a,selectedTaskCount:e,selectedInfoText:i}},[w,f,r]),P=o.useRef([]),O=o.useRef(-1),pe=o.useRef(!1),[Na,He]=o.useState(!0),[Oa,We]=o.useState(!1),[F,xa]=o.useState(!1),[z,wa]=o.useState(null),[ka,va]=o.useState([]),[je,Xe]=o.useState(null),[de,Ye]=o.useState(!1),[Ee,Ze]=o.useState(null),[Fa,Qe]=o.useState(null),[X,Ka]=o.useState(1),[Ga,ea]=o.useState(!1),[q,aa]=o.useState([]),[Q,ya]=o.useState(1),ta=o.useMemo(()=>q.slice(0,12).map(a=>URL.createObjectURL(a)),[q]);o.useEffect(()=>()=>{ta.forEach(a=>URL.revokeObjectURL(a))},[ta]);const ee=_a("image"),De=Fe(A,ee.modelId,ma(ee.profileId,ee.modelId))||Ra("image",ee.modelId,ma(ee.profileId,ee.modelId)),[V,Ue]=o.useState((De==null?void 0:De.id)||((qa=A[0])==null?void 0:qa.id)||"gemini-2.5-flash-image-vip"),[K,Ve]=o.useState(Ke(De)||ma(ee.profileId,ee.modelId)),ae=o.useMemo(()=>{if(Fe(A,V,K)||!V)return A;const e=Ra("image",V,K);return e?[e,...A]:A},[A,V,K]),be=o.useMemo(()=>{const a=Ut(V).map(e=>e.value);return a.length>0?a:Xt},[V]),Y=o.useMemo(()=>new Set(be),[be]),R=o.useMemo(()=>Y.has("auto")?"auto":be[0]||"auto",[Y,be]);o.useEffect(()=>{D(a=>a.map(e=>Y.has(e.size)?e:{...e,size:R}))},[R,Y]),o.useEffect(()=>{if(ae.length===0)return;Fe(ae,V,K)||(Ue(ae[0].id),Ve(Ke(ae[0])))},[V,K,ae]),o.useEffect(()=>{if(!C)return;const a=ha(V,K),e=ha(C,B);if(a!==e){Ue(C);const i=Fe(ae,C,B);Ve(Ke(i)||B||null)}},[C,B,V,K,ae]);const{openViewer:ja,viewerProps:Ba}=Ht(),[Ne,ia]=o.useState(null),[Ja,Ce]=o.useState(!1),[qe,Ha]=o.useState(5),[Ea,sa]=o.useState(!1),[na,ra]=o.useState(null),Se=o.useRef(null),ze=o.useRef(null),_e=o.useRef(null),Re=o.useRef(null),Da=o.useRef(null),Te=o.useRef(null),oa=o.useRef(null);o.useEffect(()=>{if(!pa)return;const a={tasks:f,taskIdCounter:T,timestamp:Date.now()};za.set(La,a).catch(e=>{console.warn("Failed to save batch image cache:",e)})},[f,T,pa]);const Ua=o.useCallback((a,e,i,s)=>{if(pe.current){pe.current=!1;return}P.current=P.current.slice(0,O.current+1);const l={tasks:JSON.parse(JSON.stringify(a)),selectedCells:[...e],activeCell:i?{...i}:null,selectedRows:Array.from(s)};P.current.push(l),O.current=P.current.length-1,P.current.length>50&&(P.current.shift(),O.current--)},[]);o.useEffect(()=>{f.length>0&&Ua(f,_,k,w)},[f,Ua]),o.useEffect(()=>{if(P.current.length>0&&O.current>=0&&!pe.current){const a=P.current[O.current];a&&(a.selectedCells=[..._],a.activeCell=k?{...k}:null,a.selectedRows=Array.from(w))}},[_,k,w]);const Va=o.useCallback(()=>{if(O.current>0){O.current--,pe.current=!0;const a=P.current[O.current];D(JSON.parse(JSON.stringify(a.tasks))),H([...a.selectedCells]),ne(a.activeCell?{...a.activeCell}:null),W(new Set(a.selectedRows)),N.info(r==="zh"?"已撤销":"Undone")}else N.warning(r==="zh"?"没有可撤销的操作":"Nothing to undo")},[r]),Ca=o.useCallback(()=>{if(O.current<P.current.length-1){O.current++,pe.current=!0;const a=P.current[O.current];D(JSON.parse(JSON.stringify(a.tasks))),H([...a.selectedCells]),ne(a.activeCell?{...a.activeCell}:null),W(new Set(a.selectedRows)),N.info(r==="zh"?"已重做":"Redone")}else N.warning(r==="zh"?"没有可重做的操作":"Nothing to redo")},[r]),Wa=o.useCallback(a=>{D(e=>{const i=[...e];for(let s=0;s<a;s++)i.push({id:T+s,prompt:"",size:R,images:[],count:1,taskIds:[]});return i}),ye(e=>e+a)},[R,T]),Xa=o.useCallback(()=>{if(w.size===0){N.warning(r==="zh"?"请先勾选要删除的行":"Please check rows to delete");return}D(a=>a.filter((e,i)=>!w.has(i))),W(new Set),H([]),ne(null)},[w,r]),v=o.useCallback((a,e)=>{ne({row:a,col:e}),H([{row:a,col:e}]),U(null)},[]),Me=o.useCallback((a,e)=>{v(a,e),E.includes(e)&&e!=="images"&&U({row:a,col:e})},[v]),y=o.useCallback((a,e,i)=>{D(s=>{if(!s[a])return s;const l=[...s];return l[a]={...l[a],[e]:i},l})},[]),xe=o.useCallback((a,e,i)=>{if(a.shiftKey&&k){const s=Math.min(k.row,e),l=Math.max(k.row,e);W(c=>{const d=new Set(c);for(let p=s;p<=l;p++)d.add(p);return d});const u=[];for(let c=s;c<=l;c++)u.push({row:c,col:k.col});H(u),Da.current=e}else a.ctrlKey||a.metaKey?H(s=>s.some(u=>u.row===e&&u.col===i)?s.filter(u=>!(u.row===e&&u.col===i)):[...s,{row:e,col:i}]):(v(e,i),Da.current=e)},[k,v]),$e=o.useCallback(a=>{var i;if(!k){N.warning(r==="zh"?"请先选中一个单元格作为填充源":"Please select a cell as fill source");return}const e=(i=f[k.row])==null?void 0:i[a];if(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0){N.warning(r==="zh"?"选中的单元格没有数据":"Selected cell has no data");return}D(s=>s.map(l=>({...l,[a]:a==="images"&&Array.isArray(e)?[...e]:e}))),N.success(r==="zh"?"已填充整列":"Column filled")},[k,f,r]),Ae=o.useCallback((a,e)=>{Ye(!1),Ze(null),xa(!0),wa({row:a,col:e}),Xe(a)},[]),la=o.useCallback((a,e)=>{F||(Ye(!0),Ze({row:a,col:e}),ne({row:a,col:e}),H([{row:a,col:e}]))},[F]),Ya=o.useCallback(a=>{if(!F&&!de)return;const i=a.target.closest("tr[data-row-index]");if(!i)return;const s=parseInt(i.dataset.rowIndex||"-1");if(!(s<0)){if(F&&z){Xe(s);const l=z.row,u=s,c=Math.min(l,u),d=Math.max(l,u),p=[];for(let g=c;g<=d;g++)g!==l&&p.push(g);va(p)}if(de&&Ee){const l=Ee.col,u=Ee.row,c=s,d=Math.min(u,c),p=Math.max(u,c),g=[];for(let n=d;n<=p;n++)g.push({row:n,col:l});H(g)}}},[F,z,de,Ee]),Ie=o.useCallback(()=>{var a;if(F&&z&&je!==null&&je!==z.row){const e=(a=f[z.row])==null?void 0:a[z.col],i=z.row,s=je,l=Math.min(i,s),u=Math.max(i,s);D(d=>{const p=[...d];for(let g=l;g<=u;g++)g!==i&&p[g]&&(p[g]={...p[g],[z.col]:Array.isArray(e)?[...e]:e});return p});const c=[];for(let d=l;d<=u;d++)c.push({row:d,col:z.col});H(c),N.success(r==="zh"?`已填充 ${Math.abs(s-i)} 行`:`Filled ${Math.abs(s-i)} rows`)}xa(!1),wa(null),Xe(null),va([]),Ye(!1),Ze(null)},[F,z,je,f,r]),Za=o.useCallback(a=>{const e=a.target.files;e&&(Array.from(e).forEach(i=>{i.type.startsWith("image/")&&I(i,ue.IMAGE,Pe.LOCAL,i.name).catch(s=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",s)})}),Se.current&&(Se.current.value=""))},[I]),Qa=o.useCallback(a=>{let e=[];if(w.size>0?e=[...w]:_.length>0?e=[...new Set(_.map(i=>i.row))]:k&&(e=[k.row]),e.length===0){N.warning(r==="zh"?"请先选中要添加图片的行":"Please select a row first");return}D(i=>{const s=[...i];return e.forEach(l=>{s[l]&&!s[l].images.includes(a)&&(s[l]={...s[l],images:[...s[l].images,a]})}),s})},[w,_,k,r]),re=o.useCallback((a,e)=>{D(i=>{const s=[...i];return s[a]&&!s[a].images.includes(e)&&(s[a]={...s[a],images:[...s[a].images,e]}),s})},[]),et=o.useCallback((a,e)=>{D(i=>{const s=[...i];return s[a]&&(s[a]={...s[a],images:s[a].images.filter(l=>l!==e)}),s})},[]),at=o.useCallback(a=>{const e=a.target.files,i=oa.current;!e||e.length===0||i===null||(Array.from(e).forEach(s=>{if(!s.type.startsWith("image/"))return;I(s,ue.IMAGE,Pe.LOCAL,s.name).catch(u=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",u)});const l=new FileReader;l.onload=u=>{var d;const c=(d=u.target)==null?void 0:d.result;re(i,c)},l.readAsDataURL(s)}),Re.current&&(Re.current.value=""),oa.current=null)},[re,I]),tt=o.useCallback(a=>{var e;oa.current=a,He(!0),(e=Re.current)==null||e.click()},[]),it=o.useCallback(a=>{ra(a),sa(!0)},[]),st=o.useCallback(a=>{na!==null&&(a.url&&re(na,a.url),sa(!1),ra(null))},[na,re]),nt=o.useCallback((a,e)=>{a.preventDefault(),a.dataTransfer.dropEffect="copy",Qe(e)},[]),rt=o.useCallback(a=>{const e=a.relatedTarget;(!e||!a.currentTarget.contains(e))&&Qe(null)},[]),ot=o.useCallback((a,e)=>{a.preventDefault(),Qe(null);const i=a.dataTransfer.getData("text/library-image");if(i){re(e,i),N.success(r==="zh"?`已添加图片到第 ${e+1} 行`:`Added image to row ${e+1}`);return}const s=a.dataTransfer.files;if(!s||s.length===0)return;let l=0;Array.from(s).forEach(u=>{if(!u.type.startsWith("image/"))return;I(u,ue.IMAGE,Pe.LOCAL,u.name).catch(d=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",d)});const c=new FileReader;c.onload=d=>{var g;const p=(g=d.target)==null?void 0:g.result;re(e,p)},c.readAsDataURL(u),l++}),l>0&&N.success(r==="zh"?`已添加 ${l} 张图片到第 ${e+1} 行`:`Added ${l} images to row ${e+1}`)},[re,r,I]),lt=o.useCallback((a,e)=>{a.dataTransfer.setData("text/library-image",e),a.dataTransfer.effectAllowed="copy"},[]),ct=o.useCallback(a=>{const e=a.target.files;if(!e||e.length===0)return;const i=Array.from(e).filter(l=>l.type.startsWith("image/"));if(i.length===0){N.warning(r==="zh"?"请选择图片文件":"Please select image files");return}aa(i);const s=k?k.row+1:1;ya(Math.min(s,f.length)),ea(!0),ze.current&&(ze.current.value="")},[r,k,f.length]),dt=o.useCallback(async()=>{if(q.length===0)return;const a=Vt(`批量导入(${q.length}张)`),e=X,i=q.length,s=Math.ceil(i/e),l=Q-1,u=[];for(const g of q){I(g,ue.IMAGE,Pe.LOCAL,g.name).catch(m=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",m)});const n=await new Promise((m,b)=>{const h=new FileReader;h.onload=x=>{var S;return m((S=x.target)==null?void 0:S.result)},h.onerror=b,h.readAsDataURL(g)});u.push(n)}D(g=>{const n=[...g];let m=0,b=0;for(let h=0;h<s;h++){const x=l+h,S=[];for(let oe=0;oe<e&&m<i;oe++)S.push(u[m]),m++;x<n.length?n[x]={...n[x],images:[...n[x].images,...S]}:(n.push({id:T+b,prompt:"",size:R,images:S,count:1,taskIds:[]}),b++)}return n});const c=Math.min(s,f.length-l),d=Math.max(0,s-c);d>0&&ye(g=>g+d),aa([]),ea(!1),a();const p=r==="zh"?`已导入 ${i} 张图片,从第 ${Q} 行开始`:`Imported ${i} images starting from row ${Q}`;N.success(p)},[q,X,Q,T,f.length,r,I,R]),ca=o.useCallback(()=>{aa([]),ea(!1)},[]),ut=o.useCallback(async()=>{try{const a=await ga(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),e=[{提示词:"一只可爱的橘猫在阳光下睡觉",尺寸:"1x1",数量:1},{提示词:"未来城市的夜景,霓虹灯闪烁",尺寸:"16x9",数量:2},{提示词:"古风美女,水墨画风格",尺寸:"3x4",数量:1},{提示词:"",尺寸:"1x1",数量:1},{提示词:"",尺寸:"1x1",数量:1}],i=a.utils.book_new(),s=a.utils.json_to_sheet(e);s["!cols"]=[{wch:60},{wch:10},{wch:8}],a.utils.book_append_sheet(i,s,"批量出图模板"),a.writeFile(i,"batch-image-template.xlsx"),N.success(r==="zh"?"模板下载成功,填写后可导入使用":"Template downloaded, fill and import to use")}catch(a){console.error("Excel template download error:",a),N.error(r==="zh"?"下载失败,请稍后重试":"Download failed, please try again")}},[r]),mt=o.useCallback(async a=>{var i;const e=(i=a.target.files)==null?void 0:i[0];if(e){try{const s=await ga(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),l=new FileReader;l.onload=u=>{var c;try{const d=new Uint8Array((c=u.target)==null?void 0:c.result),p=s.read(d,{type:"array"}),g=p.SheetNames[0],n=p.Sheets[g],m=s.utils.sheet_to_json(n);if(m.length===0){N.warning(r==="zh"?"Excel 文件为空":"Excel file is empty");return}const b=m.map((h,x)=>{const S=h.提示词||h.prompt||h.Prompt||"",oe=h.尺寸||h.size||h.Size||R,xt=parseInt(String(h.数量||h.count||h.Count||"1"))||1,Sa=h.参考图||h.images||h.Images||"",wt=Sa?Sa.split(`
1
+ import{r as o,b8 as kt,bm as vt,hL as yt,ig as jt,eW as Et,as as ue,bn as za,bo as Dt,hM as _a,hK as ma,hN as Ra,i4 as Ut,al as N,ar as Pe,d4 as Vt,_ as ga,eO as G,d2 as Ct,hY as qt,io as St,gK as zt,y as t,bV as M,fM as j,l1 as Ta,m7 as _t,kz as Rt,m8 as Tt,m9 as Mt,iw as $t,hS as At,bt as Ma,jN as $a,ma as Oe,g5 as It,iT as Lt,g3 as Pt,bu as Aa,kt as Ot,cr as Ia,ir as Ft,bx as Kt,dp as Gt,mb as Bt}from"./tool-windows-Cxt97IUt.js";import{a as Jt,h as Fe,i as Ke,j as ha}from"./main-DHHQqQ-d.js";function Ht(ie={}){const{showNavbar:C=!0,showToolbar:B=!0,showTitle:$=!0,videoAutoPlay:J=!0,videoLoop:r=!0,onClose:se,onIndexChange:le}=ie,[A,me]=o.useState(!1),[Z,I]=o.useState([]),[ge,ce]=o.useState(0),Ge=o.useCallback((f,D=0)=>{const T=Array.isArray(f)?f:[f];T.length!==0&&(I(T),ce(Math.max(0,Math.min(D,T.length-1))),me(!0))},[]),he=o.useCallback(()=>{me(!1),I([]),ce(0),se==null||se()},[se]),fe=o.useCallback(f=>{ce(f),le==null||le(f)},[le]),ve=o.useMemo(()=>({visible:A,items:Z,initialIndex:ge,onClose:he,onIndexChange:fe,showNavbar:C,showToolbar:B,showTitle:$,videoAutoPlay:J,videoLoop:r}),[A,Z,ge,he,fe,C,B,$,J,r]);return{openViewer:Ge,closeViewer:he,isOpen:A,currentIndex:ge,items:Z,viewerProps:ve}}function Wt(ie,C="image"){return ie.map((B,$)=>({url:B,type:C,alt:`${C==="image"?"Image":"Video"} ${$+1}`}))}const La=Dt.BATCH_IMAGE_CACHE,Xt=["auto","1x1","1x4","4x1","1x8","8x1","2x3","3x2","3x4","4x3","4x5","5x4","9x16","16x9","21x9"],fa={auto:"自动","1x1":"1:1","1x4":"1:4","4x1":"4:1","1x8":"1:8","8x1":"8:1","2x3":"2:3","3x2":"3:2","3x4":"3:4","4x3":"4:3","4x5":"4:5","5x4":"5:4","9x16":"9:16","16x9":"16:9","21x9":"21:9"},E=["prompt","size","images","count","preview"];function Yt(){const ie=[];for(let C=0;C<5;C++)ie.push({id:C+1,prompt:"",size:"auto",images:[],count:1,taskIds:[]});return ie}const ti=({onSwitchToSingle:ie,selectedModel:C,selectedModelRef:B,onModelChange:$,onModelRefChange:J})=>{var qa;const{language:r}=kt(),{confirm:se,confirmDialog:le}=vt(),A=yt("image"),{createTask:me,tasks:Z}=Jt(),{addAsset:I,assets:ge,loadAssets:ce}=jt(),{isMobile:Ge,isTablet:he}=Et(),fe=Ge||he,ve=ge.filter(a=>a.type===ue.IMAGE);o.useEffect(()=>{ce()},[ce]);const[f,D]=o.useState(Yt),[T,ye]=o.useState(6),[pa,ba]=o.useState(!1),[Be,Je]=o.useState(!1);o.useEffect(()=>{let a=!0;return za.get(La).then(e=>{a&&(e&&e.tasks&&Array.isArray(e.tasks)&&e.tasks.length>0&&(D(e.tasks),e.taskIdCounter&&ye(e.taskIdCounter)),ba(!0))}).catch(e=>{console.warn("Failed to load batch image cache:",e),a&&ba(!0)}),()=>{a=!1}},[]);const[k,ne]=o.useState(null),[_,H]=o.useState([]),[L,U]=o.useState(null),[w,W]=o.useState(new Set),{validSelectedRows:Zt,selectedTaskCount:Qt,selectedInfoText:Pa}=o.useMemo(()=>{const a=[...w].filter(s=>{const l=f[s];return l&&l.prompt&&l.prompt.trim()!==""}).sort((s,l)=>s-l),e=a.reduce((s,l)=>{const u=f[l];return s+((u==null?void 0:u.count)||1)},0),i=a.length>0?r==="zh"?`已选 ${a.length} 行 / ${e} 任务`:`${a.length} rows / ${e} tasks`:"";return{validSelectedRows:a,selectedTaskCount:e,selectedInfoText:i}},[w,f,r]),P=o.useRef([]),O=o.useRef(-1),pe=o.useRef(!1),[Na,He]=o.useState(!0),[Oa,We]=o.useState(!1),[F,xa]=o.useState(!1),[z,wa]=o.useState(null),[ka,va]=o.useState([]),[je,Xe]=o.useState(null),[de,Ye]=o.useState(!1),[Ee,Ze]=o.useState(null),[Fa,Qe]=o.useState(null),[X,Ka]=o.useState(1),[Ga,ea]=o.useState(!1),[q,aa]=o.useState([]),[Q,ya]=o.useState(1),ta=o.useMemo(()=>q.slice(0,12).map(a=>URL.createObjectURL(a)),[q]);o.useEffect(()=>()=>{ta.forEach(a=>URL.revokeObjectURL(a))},[ta]);const ee=_a("image"),De=Fe(A,ee.modelId,ma(ee.profileId,ee.modelId))||Ra("image",ee.modelId,ma(ee.profileId,ee.modelId)),[V,Ue]=o.useState((De==null?void 0:De.id)||((qa=A[0])==null?void 0:qa.id)||"gemini-2.5-flash-image-vip"),[K,Ve]=o.useState(Ke(De)||ma(ee.profileId,ee.modelId)),ae=o.useMemo(()=>{if(Fe(A,V,K)||!V)return A;const e=Ra("image",V,K);return e?[e,...A]:A},[A,V,K]),be=o.useMemo(()=>{const a=Ut(V).map(e=>e.value);return a.length>0?a:Xt},[V]),Y=o.useMemo(()=>new Set(be),[be]),R=o.useMemo(()=>Y.has("auto")?"auto":be[0]||"auto",[Y,be]);o.useEffect(()=>{D(a=>a.map(e=>Y.has(e.size)?e:{...e,size:R}))},[R,Y]),o.useEffect(()=>{if(ae.length===0)return;Fe(ae,V,K)||(Ue(ae[0].id),Ve(Ke(ae[0])))},[V,K,ae]),o.useEffect(()=>{if(!C)return;const a=ha(V,K),e=ha(C,B);if(a!==e){Ue(C);const i=Fe(ae,C,B);Ve(Ke(i)||B||null)}},[C,B,V,K,ae]);const{openViewer:ja,viewerProps:Ba}=Ht(),[Ne,ia]=o.useState(null),[Ja,Ce]=o.useState(!1),[qe,Ha]=o.useState(5),[Ea,sa]=o.useState(!1),[na,ra]=o.useState(null),Se=o.useRef(null),ze=o.useRef(null),_e=o.useRef(null),Re=o.useRef(null),Da=o.useRef(null),Te=o.useRef(null),oa=o.useRef(null);o.useEffect(()=>{if(!pa)return;const a={tasks:f,taskIdCounter:T,timestamp:Date.now()};za.set(La,a).catch(e=>{console.warn("Failed to save batch image cache:",e)})},[f,T,pa]);const Ua=o.useCallback((a,e,i,s)=>{if(pe.current){pe.current=!1;return}P.current=P.current.slice(0,O.current+1);const l={tasks:JSON.parse(JSON.stringify(a)),selectedCells:[...e],activeCell:i?{...i}:null,selectedRows:Array.from(s)};P.current.push(l),O.current=P.current.length-1,P.current.length>50&&(P.current.shift(),O.current--)},[]);o.useEffect(()=>{f.length>0&&Ua(f,_,k,w)},[f,Ua]),o.useEffect(()=>{if(P.current.length>0&&O.current>=0&&!pe.current){const a=P.current[O.current];a&&(a.selectedCells=[..._],a.activeCell=k?{...k}:null,a.selectedRows=Array.from(w))}},[_,k,w]);const Va=o.useCallback(()=>{if(O.current>0){O.current--,pe.current=!0;const a=P.current[O.current];D(JSON.parse(JSON.stringify(a.tasks))),H([...a.selectedCells]),ne(a.activeCell?{...a.activeCell}:null),W(new Set(a.selectedRows)),N.info(r==="zh"?"已撤销":"Undone")}else N.warning(r==="zh"?"没有可撤销的操作":"Nothing to undo")},[r]),Ca=o.useCallback(()=>{if(O.current<P.current.length-1){O.current++,pe.current=!0;const a=P.current[O.current];D(JSON.parse(JSON.stringify(a.tasks))),H([...a.selectedCells]),ne(a.activeCell?{...a.activeCell}:null),W(new Set(a.selectedRows)),N.info(r==="zh"?"已重做":"Redone")}else N.warning(r==="zh"?"没有可重做的操作":"Nothing to redo")},[r]),Wa=o.useCallback(a=>{D(e=>{const i=[...e];for(let s=0;s<a;s++)i.push({id:T+s,prompt:"",size:R,images:[],count:1,taskIds:[]});return i}),ye(e=>e+a)},[R,T]),Xa=o.useCallback(()=>{if(w.size===0){N.warning(r==="zh"?"请先勾选要删除的行":"Please check rows to delete");return}D(a=>a.filter((e,i)=>!w.has(i))),W(new Set),H([]),ne(null)},[w,r]),v=o.useCallback((a,e)=>{ne({row:a,col:e}),H([{row:a,col:e}]),U(null)},[]),Me=o.useCallback((a,e)=>{v(a,e),E.includes(e)&&e!=="images"&&U({row:a,col:e})},[v]),y=o.useCallback((a,e,i)=>{D(s=>{if(!s[a])return s;const l=[...s];return l[a]={...l[a],[e]:i},l})},[]),xe=o.useCallback((a,e,i)=>{if(a.shiftKey&&k){const s=Math.min(k.row,e),l=Math.max(k.row,e);W(c=>{const d=new Set(c);for(let p=s;p<=l;p++)d.add(p);return d});const u=[];for(let c=s;c<=l;c++)u.push({row:c,col:k.col});H(u),Da.current=e}else a.ctrlKey||a.metaKey?H(s=>s.some(u=>u.row===e&&u.col===i)?s.filter(u=>!(u.row===e&&u.col===i)):[...s,{row:e,col:i}]):(v(e,i),Da.current=e)},[k,v]),$e=o.useCallback(a=>{var i;if(!k){N.warning(r==="zh"?"请先选中一个单元格作为填充源":"Please select a cell as fill source");return}const e=(i=f[k.row])==null?void 0:i[a];if(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0){N.warning(r==="zh"?"选中的单元格没有数据":"Selected cell has no data");return}D(s=>s.map(l=>({...l,[a]:a==="images"&&Array.isArray(e)?[...e]:e}))),N.success(r==="zh"?"已填充整列":"Column filled")},[k,f,r]),Ae=o.useCallback((a,e)=>{Ye(!1),Ze(null),xa(!0),wa({row:a,col:e}),Xe(a)},[]),la=o.useCallback((a,e)=>{F||(Ye(!0),Ze({row:a,col:e}),ne({row:a,col:e}),H([{row:a,col:e}]))},[F]),Ya=o.useCallback(a=>{if(!F&&!de)return;const i=a.target.closest("tr[data-row-index]");if(!i)return;const s=parseInt(i.dataset.rowIndex||"-1");if(!(s<0)){if(F&&z){Xe(s);const l=z.row,u=s,c=Math.min(l,u),d=Math.max(l,u),p=[];for(let g=c;g<=d;g++)g!==l&&p.push(g);va(p)}if(de&&Ee){const l=Ee.col,u=Ee.row,c=s,d=Math.min(u,c),p=Math.max(u,c),g=[];for(let n=d;n<=p;n++)g.push({row:n,col:l});H(g)}}},[F,z,de,Ee]),Ie=o.useCallback(()=>{var a;if(F&&z&&je!==null&&je!==z.row){const e=(a=f[z.row])==null?void 0:a[z.col],i=z.row,s=je,l=Math.min(i,s),u=Math.max(i,s);D(d=>{const p=[...d];for(let g=l;g<=u;g++)g!==i&&p[g]&&(p[g]={...p[g],[z.col]:Array.isArray(e)?[...e]:e});return p});const c=[];for(let d=l;d<=u;d++)c.push({row:d,col:z.col});H(c),N.success(r==="zh"?`已填充 ${Math.abs(s-i)} 行`:`Filled ${Math.abs(s-i)} rows`)}xa(!1),wa(null),Xe(null),va([]),Ye(!1),Ze(null)},[F,z,je,f,r]),Za=o.useCallback(a=>{const e=a.target.files;e&&(Array.from(e).forEach(i=>{i.type.startsWith("image/")&&I(i,ue.IMAGE,Pe.LOCAL,i.name).catch(s=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",s)})}),Se.current&&(Se.current.value=""))},[I]),Qa=o.useCallback(a=>{let e=[];if(w.size>0?e=[...w]:_.length>0?e=[...new Set(_.map(i=>i.row))]:k&&(e=[k.row]),e.length===0){N.warning(r==="zh"?"请先选中要添加图片的行":"Please select a row first");return}D(i=>{const s=[...i];return e.forEach(l=>{s[l]&&!s[l].images.includes(a)&&(s[l]={...s[l],images:[...s[l].images,a]})}),s})},[w,_,k,r]),re=o.useCallback((a,e)=>{D(i=>{const s=[...i];return s[a]&&!s[a].images.includes(e)&&(s[a]={...s[a],images:[...s[a].images,e]}),s})},[]),et=o.useCallback((a,e)=>{D(i=>{const s=[...i];return s[a]&&(s[a]={...s[a],images:s[a].images.filter(l=>l!==e)}),s})},[]),at=o.useCallback(a=>{const e=a.target.files,i=oa.current;!e||e.length===0||i===null||(Array.from(e).forEach(s=>{if(!s.type.startsWith("image/"))return;I(s,ue.IMAGE,Pe.LOCAL,s.name).catch(u=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",u)});const l=new FileReader;l.onload=u=>{var d;const c=(d=u.target)==null?void 0:d.result;re(i,c)},l.readAsDataURL(s)}),Re.current&&(Re.current.value=""),oa.current=null)},[re,I]),tt=o.useCallback(a=>{var e;oa.current=a,He(!0),(e=Re.current)==null||e.click()},[]),it=o.useCallback(a=>{ra(a),sa(!0)},[]),st=o.useCallback(a=>{na!==null&&(a.url&&re(na,a.url),sa(!1),ra(null))},[na,re]),nt=o.useCallback((a,e)=>{a.preventDefault(),a.dataTransfer.dropEffect="copy",Qe(e)},[]),rt=o.useCallback(a=>{const e=a.relatedTarget;(!e||!a.currentTarget.contains(e))&&Qe(null)},[]),ot=o.useCallback((a,e)=>{a.preventDefault(),Qe(null);const i=a.dataTransfer.getData("text/library-image");if(i){re(e,i),N.success(r==="zh"?`已添加图片到第 ${e+1} 行`:`Added image to row ${e+1}`);return}const s=a.dataTransfer.files;if(!s||s.length===0)return;let l=0;Array.from(s).forEach(u=>{if(!u.type.startsWith("image/"))return;I(u,ue.IMAGE,Pe.LOCAL,u.name).catch(d=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",d)});const c=new FileReader;c.onload=d=>{var g;const p=(g=d.target)==null?void 0:g.result;re(e,p)},c.readAsDataURL(u),l++}),l>0&&N.success(r==="zh"?`已添加 ${l} 张图片到第 ${e+1} 行`:`Added ${l} images to row ${e+1}`)},[re,r,I]),lt=o.useCallback((a,e)=>{a.dataTransfer.setData("text/library-image",e),a.dataTransfer.effectAllowed="copy"},[]),ct=o.useCallback(a=>{const e=a.target.files;if(!e||e.length===0)return;const i=Array.from(e).filter(l=>l.type.startsWith("image/"));if(i.length===0){N.warning(r==="zh"?"请选择图片文件":"Please select image files");return}aa(i);const s=k?k.row+1:1;ya(Math.min(s,f.length)),ea(!0),ze.current&&(ze.current.value="")},[r,k,f.length]),dt=o.useCallback(async()=>{if(q.length===0)return;const a=Vt(`批量导入(${q.length}张)`),e=X,i=q.length,s=Math.ceil(i/e),l=Q-1,u=[];for(const g of q){I(g,ue.IMAGE,Pe.LOCAL,g.name).catch(m=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",m)});const n=await new Promise((m,b)=>{const h=new FileReader;h.onload=x=>{var S;return m((S=x.target)==null?void 0:S.result)},h.onerror=b,h.readAsDataURL(g)});u.push(n)}D(g=>{const n=[...g];let m=0,b=0;for(let h=0;h<s;h++){const x=l+h,S=[];for(let oe=0;oe<e&&m<i;oe++)S.push(u[m]),m++;x<n.length?n[x]={...n[x],images:[...n[x].images,...S]}:(n.push({id:T+b,prompt:"",size:R,images:S,count:1,taskIds:[]}),b++)}return n});const c=Math.min(s,f.length-l),d=Math.max(0,s-c);d>0&&ye(g=>g+d),aa([]),ea(!1),a();const p=r==="zh"?`已导入 ${i} 张图片,从第 ${Q} 行开始`:`Imported ${i} images starting from row ${Q}`;N.success(p)},[q,X,Q,T,f.length,r,I,R]),ca=o.useCallback(()=>{aa([]),ea(!1)},[]),ut=o.useCallback(async()=>{try{const a=await ga(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),e=[{提示词:"一只可爱的橘猫在阳光下睡觉",尺寸:"1x1",数量:1},{提示词:"未来城市的夜景,霓虹灯闪烁",尺寸:"16x9",数量:2},{提示词:"古风美女,水墨画风格",尺寸:"3x4",数量:1},{提示词:"",尺寸:"1x1",数量:1},{提示词:"",尺寸:"1x1",数量:1}],i=a.utils.book_new(),s=a.utils.json_to_sheet(e);s["!cols"]=[{wch:60},{wch:10},{wch:8}],a.utils.book_append_sheet(i,s,"批量出图模板"),a.writeFile(i,"batch-image-template.xlsx"),N.success(r==="zh"?"模板下载成功,填写后可导入使用":"Template downloaded, fill and import to use")}catch(a){console.error("Excel template download error:",a),N.error(r==="zh"?"下载失败,请稍后重试":"Download failed, please try again")}},[r]),mt=o.useCallback(async a=>{var i;const e=(i=a.target.files)==null?void 0:i[0];if(e){try{const s=await ga(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),l=new FileReader;l.onload=u=>{var c;try{const d=new Uint8Array((c=u.target)==null?void 0:c.result),p=s.read(d,{type:"array"}),g=p.SheetNames[0],n=p.Sheets[g],m=s.utils.sheet_to_json(n);if(m.length===0){N.warning(r==="zh"?"Excel 文件为空":"Excel file is empty");return}const b=m.map((h,x)=>{const S=h.提示词||h.prompt||h.Prompt||"",oe=h.尺寸||h.size||h.Size||R,xt=parseInt(String(h.数量||h.count||h.Count||"1"))||1,Sa=h.参考图||h.images||h.Images||"",wt=Sa?Sa.split(`
2
2
  `).map(ke=>ke.trim()).filter(ke=>ke.length>0&&!ke.startsWith("[")&&!ke.endsWith("]")):[];return{id:T+x,prompt:String(S).trim(),size:Y.has(oe)?oe:R,images:wt,count:Math.max(1,xt),taskIds:[]}});D(h=>[...h,...b]),ye(h=>h+b.length),N.success(r==="zh"?`已导入 ${b.length} 行数据`:`Imported ${b.length} rows`)}catch(d){console.error("Excel import error:",d),N.error(r==="zh"?"导入失败,请检查文件格式":"Import failed, please check file format")}},l.readAsArrayBuffer(e)}catch(s){console.error("Excel library load error:",s),N.error(r==="zh"?"加载 Excel 处理库失败":"Failed to load Excel library")}_e.current&&(_e.current.value="")}},[R,T,r,Y]),te=o.useCallback(a=>{if(a.taskIds.length===0)return{status:"idle",tasks:[],completedCount:0,failedCount:0};const e=Z.filter(c=>a.taskIds.includes(c.id)),i=e.filter(c=>c.status===G.COMPLETED).length,s=e.filter(c=>c.status===G.FAILED).length,l=e.filter(c=>c.status===G.PENDING||c.status===G.PROCESSING).length;let u="idle";return l>0?u="generating":s>0&&i>0?u="partial":s>0?u="failed":i>0&&(u="completed"),{status:u,tasks:e,completedCount:i,failedCount:s}},[Z]),gt=o.useCallback(async()=>{try{const a=await ga(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),e=32e3,i=n=>{const b=n.map((h,x)=>h.startsWith("data:")?`[本地图片${x+1}]`:h).join(`
3
3
  `);return b.length>e?b.substring(0,e-20)+`
4
4
  ...[已截断]`:b},s=f.map(n=>{const m=te(n),b=m.tasks.filter(h=>{var x;return h.status===G.COMPLETED&&((x=h.result)==null?void 0:x.url)}).map(h=>h.result.url);return{提示词:n.prompt,尺寸:n.size,参考图:i(n.images),数量:n.count,预览图:i(b),状态:m.status==="idle"?"未生成":m.status==="generating"?"生成中":m.status==="completed"?"已完成":m.status==="failed"?"失败":m.status==="partial"?"部分完成":""}}),l=a.utils.book_new(),u=a.utils.json_to_sheet(s);u["!cols"]=[{wch:60},{wch:10},{wch:80},{wch:8},{wch:80},{wch:12}],a.utils.book_append_sheet(l,u,"批量出图数据");const c=new Date,d=`${c.getFullYear()}${String(c.getMonth()+1).padStart(2,"0")}${String(c.getDate()).padStart(2,"0")}`,p=`${String(c.getHours()).padStart(2,"0")}${String(c.getMinutes()).padStart(2,"0")}`,g=`batch-image-export_${d}_${p}.xlsx`;a.writeFile(l,g),N.success(r==="zh"?`已导出 ${f.length} 行数据`:`Exported ${f.length} rows`)}catch(a){console.error("Excel export error:",a),N.error(r==="zh"?"导出失败,请稍后重试":"Export failed, please try again")}},[f,te,r]),ht=o.useCallback(()=>{const a=[];if(f.forEach((e,i)=>{const{status:s}=te(e);(s==="failed"||s==="partial")&&a.push(i)}),a.length===0){N.info(r==="zh"?"没有失败的行":"No failed rows");return}W(new Set(a)),N.success(r==="zh"?`已选中 ${a.length} 个失败行`:`Selected ${a.length} failed rows`)},[f,te,r]),ft=o.useCallback(()=>{const a=new Set;f.forEach((e,i)=>{w.has(i)||a.add(i)}),W(a)},[f,w]),da=o.useCallback((a,e=0)=>{ja(Wt(a,"image"),e)},[ja]),Le=o.useCallback((a,e=!1)=>{W(i=>{const s=new Set(i);if(e&&Te.current!==null){const l=Math.min(Te.current,a),u=Math.max(Te.current,a);for(let c=l;c<=u;c++)s.add(c)}else s.has(a)?s.delete(a):s.add(a);return s}),Te.current=a},[]),pt=o.useCallback(()=>{w.size===f.length&&f.length>0?W(new Set):W(new Set(f.map((a,e)=>e)))},[f,w.size]),bt=o.useCallback(async()=>{const a=[...w].sort((i,s)=>i-s);if(a.length===0){N.warning(r==="zh"?"请先勾选要下载的行":"Please check rows to download");return}const e=[];if(a.forEach(i=>{const s=f[i];s&&s.taskIds.forEach((l,u)=>{var d;const c=Z.find(p=>p.id===l);(c==null?void 0:c.status)===G.COMPLETED&&((d=c.result)!=null&&d.url)&&e.push({url:c.result.url,filename:`row${i+1}_${u+1}_${s.prompt.slice(0,20).replace(/[^\w\u4e00-\u9fa5]/g,"_")}.png`})})}),e.length===0){N.warning(r==="zh"?"选中的行没有已生成的图片":"No generated images in selected rows");return}try{N.info(r==="zh"?"正在准备下载...":"Preparing download...");const i=new Date,s=`${i.getFullYear()}${String(i.getMonth()+1).padStart(2,"0")}${String(i.getDate()).padStart(2,"0")}`,l=`${String(i.getHours()).padStart(2,"0")}${String(i.getMinutes()).padStart(2,"0")}`,u=`aitu_images_${e.length}pics_${s}_${l}.zip`,c=e.map(p=>({url:p.url,type:"image",filename:p.filename})),d=await Ct(c,u);d.openedCount>0&&d.downloadedCount===0?N.success(r==="zh"?d.openedCount>1?`已打开 ${d.openedCount} 个链接,请在新标签页下载`:"资源不支持直接下载,已打开链接":d.openedCount>1?`Opened ${d.openedCount} links for download`:"Opened link for download"):N.success(r==="zh"?"下载成功":"Download complete")}catch(i){console.error("Download failed:",i),N.error(r==="zh"?"下载失败":"Download failed")}},[w,f,Z,r]),ua=o.useCallback(async a=>{if(Je(!0),!qt("image",K||V)&&(U(null),ne(null),!await St())){Je(!1),N.warning(r==="zh"?"需要 API Key 才能生成图片":"API Key is required to generate images");return}const e=Date.now();let i=0,s=0;for(const{task:l,rowIndex:u}of a){const c=l.count||1,d=`batch_${l.id}_${e}`,p=l.size||R,g=p==="auto"?void 0:p,n=l.images.map((b,h)=>({type:"url",url:b,name:`reference_${h+1}`})),m=[];for(let b=0;b<c;b++){i++;const h={prompt:l.prompt.trim(),aspectRatio:p,size:g,model:V||_a("image").modelId||"gemini-2.5-flash-image-vip",modelRef:K||null,uploadedImages:n,batchId:d,batchIndex:b+1,batchTotal:c,globalIndex:i,autoInsertToCanvas:!0},x=me(h,zt.IMAGE);x&&(s++,m.push(x.id))}m.length>0&&D(b=>{const h=[...b];return h[u]&&(h[u]={...h[u],taskIds:[...h[u].taskIds,...m]}),h})}Je(!1),s>0&&N.success(r==="zh"?`已提交 ${s} 个任务到队列`:`Submitted ${s} tasks to queue`)},[me,R,r,V,K,D,U,ne]),Nt=o.useCallback(async()=>{const a=[...w].sort((c,d)=>c-d);if(a.length===0){N.warning(r==="zh"?"请先勾选要生成的行":"Please check rows to generate");return}const e=a.map(c=>({task:f[c],rowIndex:c})).filter(({task:c})=>c&&c.prompt&&c.prompt.trim()!=="");if(e.length===0){N.warning(r==="zh"?"选中的行没有填写提示词":"Selected rows have no prompts");return}const i=e.filter(({task:c})=>te(c).status==="generating"),s=e.filter(({task:c})=>(c.count||1)>=100),l=e.reduce((c,{task:d})=>c+(d.count||1),0),u=l>=100;if(i.length>0||s.length>0||u){const c=[];if(i.length>0){const g=i.map(({rowIndex:n})=>n+1).join("、");c.push(r==="zh"?`第 ${g} 行正在生成中`:`Row ${g} is generating`)}if(s.length>0){const g=s.map(({task:n,rowIndex:m})=>r==="zh"?`第 ${m+1} 行数量为 ${n.count}`:`Row ${m+1} count is ${n.count}`).join("、");c.push(g)}u&&c.push(r==="zh"?`总任务数为 ${l}`:`Total task count is ${l}`);const d=c.join(r==="zh"?";":"; "),p=r==="zh"?`${d},是否继续?`:`${d}. Continue?`;se({title:r==="zh"?"生成提醒":"Generation Warning",description:p,confirmText:r==="zh"?"继续生成":"Continue",cancelText:r==="zh"?"取消":"Cancel",confirmTheme:"warning"}).then(g=>{g&&ua(e)});return}ua(e)},[se,f,w,r,ua,te]);o.useEffect(()=>{const a=e=>{if(!k||L)return;const{row:i,col:s}=k,l=E.indexOf(s);if(e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&E.includes(s)&&s!=="images"&&s!=="size"){if(e.preventDefault(),s==="count"){const c=parseInt(e.key);isNaN(c)?y(i,s,0):y(i,s,c)}else s==="prompt"&&y(i,s,e.key);U({row:i,col:s}),window.__cellEditSelectAll=!1;return}if((e.ctrlKey||e.metaKey)&&e.key==="z"&&!e.shiftKey){e.preventDefault(),Va();return}if((e.ctrlKey||e.metaKey)&&(e.key==="y"||e.key==="z"&&e.shiftKey)){e.preventDefault(),Ca();return}if((e.ctrlKey||e.metaKey)&&e.key==="c"){e.preventDefault();const d=[..._].sort((p,g)=>p.row-g.row).map(p=>{var n;const g=(n=f[p.row])==null?void 0:n[p.col];return{row:p.row,col:p.col,value:g}});if(d.length>0){const p=d.map(g=>g.col==="images"?JSON.stringify(g.value):String(g.value??"")).join(`
@@ -1,4 +1,4 @@
1
- import{ah as se,D as ye,d as H,e as Ee,l as S,z as we,k as De,g as he,q as ve}from"./index-Dk5t_-56.js";import{ok as Ne}from"./tool-windows-DWUG3k_L.js";import{i as ke,c as Ie,b as Oe,d as Te,a as ge,p as ze}from"./edges-e0da2a9e-C0phcDTf.js";import{G as Ce}from"./graph-DUQ4GGpV.js";import{c as Ae}from"./channel-CbiJkWzq.js";import{o as Re}from"./ordinal-Cboi1Yqb.js";import{s as Be}from"./Tableau10-B-NsZVaP.js";import"./createText-2e5e7dd3-Caeqt6QH.js";import"./index-BScFd-2h.js";import"./browser-Dlc7rtso.js";import"./line-C3mpslQb.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";import"./init-Gi6I4Gst.js";var oe,le,ee=(function(){var e=function(D,l,s,i){for(s=s||{},i=D.length;i--;s[D[i]]=l);return s},a=[1,7],d=[1,13],c=[1,14],n=[1,15],g=[1,19],o=[1,16],f=[1,17],b=[1,18],p=[8,30],x=[8,21,28,29,30,31,32,40,44,47],y=[1,23],T=[1,24],v=[8,15,16,21,28,29,30,31,32,40,44,47],N=[8,15,16,21,27,28,29,30,31,32,40,44,47],E=[1,49],L={trace:function(){},yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:function(l,s,i,u,h,t,m){var r=t.length-1;switch(h){case 4:u.getLogger().debug("Rule: separator (NL) ");break;case 5:u.getLogger().debug("Rule: separator (Space) ");break;case 6:u.getLogger().debug("Rule: separator (EOF) ");break;case 7:u.getLogger().debug("Rule: hierarchy: ",t[r-1]),u.setHierarchy(t[r-1]);break;case 8:u.getLogger().debug("Stop NL ");break;case 9:u.getLogger().debug("Stop EOF ");break;case 10:u.getLogger().debug("Stop NL2 ");break;case 11:u.getLogger().debug("Stop EOF2 ");break;case 12:u.getLogger().debug("Rule: statement: ",t[r]),typeof t[r].length=="number"?this.$=t[r]:this.$=[t[r]];break;case 13:u.getLogger().debug("Rule: statement #2: ",t[r-1]),this.$=[t[r-1]].concat(t[r]);break;case 14:u.getLogger().debug("Rule: link: ",t[r],l),this.$={edgeTypeStr:t[r],label:""};break;case 15:u.getLogger().debug("Rule: LABEL link: ",t[r-3],t[r-1],t[r]),this.$={edgeTypeStr:t[r],label:t[r-1]};break;case 18:const R=parseInt(t[r]),Y=u.generateId();this.$={id:Y,type:"space",label:"",width:R,children:[]};break;case 23:u.getLogger().debug("Rule: (nodeStatement link node) ",t[r-2],t[r-1],t[r]," typestr: ",t[r-1].edgeTypeStr);const F=u.edgeStrToEdgeData(t[r-1].edgeTypeStr);this.$=[{id:t[r-2].id,label:t[r-2].label,type:t[r-2].type,directions:t[r-2].directions},{id:t[r-2].id+"-"+t[r].id,start:t[r-2].id,end:t[r].id,label:t[r-1].label,type:"edge",directions:t[r].directions,arrowTypeEnd:F,arrowTypeStart:"arrow_open"},{id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions}];break;case 24:u.getLogger().debug("Rule: nodeStatement (abc88 node size) ",t[r-1],t[r]),this.$={id:t[r-1].id,label:t[r-1].label,type:u.typeStr2Type(t[r-1].typeStr),directions:t[r-1].directions,widthInColumns:parseInt(t[r],10)};break;case 25:u.getLogger().debug("Rule: nodeStatement (node) ",t[r]),this.$={id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions,widthInColumns:1};break;case 26:u.getLogger().debug("APA123",this?this:"na"),u.getLogger().debug("COLUMNS: ",t[r]),this.$={type:"column-setting",columns:t[r]==="auto"?-1:parseInt(t[r])};break;case 27:u.getLogger().debug("Rule: id-block statement : ",t[r-2],t[r-1]),u.generateId(),this.$={...t[r-2],type:"composite",children:t[r-1]};break;case 28:u.getLogger().debug("Rule: blockStatement : ",t[r-2],t[r-1],t[r]);const C=u.generateId();this.$={id:C,type:"composite",label:"",children:t[r-1]};break;case 29:u.getLogger().debug("Rule: node (NODE_ID separator): ",t[r]),this.$={id:t[r]};break;case 30:u.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",t[r-1],t[r]),this.$={id:t[r-1],label:t[r].label,typeStr:t[r].typeStr,directions:t[r].directions};break;case 31:u.getLogger().debug("Rule: dirList: ",t[r]),this.$=[t[r]];break;case 32:u.getLogger().debug("Rule: dirList: ",t[r-1],t[r]),this.$=[t[r-1]].concat(t[r]);break;case 33:u.getLogger().debug("Rule: nodeShapeNLabel: ",t[r-2],t[r-1],t[r]),this.$={typeStr:t[r-2]+t[r],label:t[r-1]};break;case 34:u.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",t[r-3],t[r-2]," #3:",t[r-1],t[r]),this.$={typeStr:t[r-3]+t[r],label:t[r-2],directions:t[r-1]};break;case 35:case 36:this.$={type:"classDef",id:t[r-1].trim(),css:t[r].trim()};break;case 37:this.$={type:"applyClass",id:t[r-1].trim(),styleClass:t[r].trim()};break;case 38:this.$={type:"applyStyles",id:t[r-1].trim(),stylesStr:t[r].trim()};break}},table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:o,44:f,47:b},{8:[1,20]},e(p,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:a,28:d,29:c,31:n,32:g,40:o,44:f,47:b}),e(x,[2,16],{14:22,15:y,16:T}),e(x,[2,17]),e(x,[2,18]),e(x,[2,19]),e(x,[2,20]),e(x,[2,21]),e(x,[2,22]),e(v,[2,25],{27:[1,25]}),e(x,[2,26]),{19:26,26:12,32:g},{11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:o,44:f,47:b},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},e(N,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},e(p,[2,13]),{26:35,32:g},{32:[2,14]},{17:[1,36]},e(v,[2,24]),{11:37,13:4,14:22,15:y,16:T,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:o,44:f,47:b},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},e(N,[2,30]),{18:[1,43]},{18:[1,44]},e(v,[2,23]),{18:[1,45]},{30:[1,46]},e(x,[2,28]),e(x,[2,35]),e(x,[2,36]),e(x,[2,37]),e(x,[2,38]),{37:[1,47]},{34:48,35:E},{15:[1,50]},e(x,[2,27]),e(N,[2,33]),{39:[1,51]},{34:52,35:E,39:[2,31]},{32:[2,15]},e(N,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:function(l,s){if(s.recoverable)this.trace(l);else{var i=new Error(l);throw i.hash=s,i}},parse:function(l){var s=this,i=[0],u=[],h=[null],t=[],m=this.table,r="",R=0,Y=0,F=2,C=1,Le=t.slice.call(arguments,1),w=Object.create(this.lexer),K={yy:{}};for(var Z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Z)&&(K.yy[Z]=this.yy[Z]);w.setInput(l,K.yy),K.yy.lexer=w,K.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var J=w.yylloc;t.push(J);var me=w.options&&w.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _e(){var P;return P=u.pop()||w.lex()||C,typeof P!="number"&&(P instanceof Array&&(u=P,P=u.pop()),P=s.symbols_[P]||P),P}for(var I,M,z,Q,W={},X,B,ae,G;;){if(M=i[i.length-1],this.defaultActions[M]?z=this.defaultActions[M]:((I===null||typeof I>"u")&&(I=_e()),z=m[M]&&m[M][I]),typeof z>"u"||!z.length||!z[0]){var $="";G=[];for(X in m[M])this.terminals_[X]&&X>F&&G.push("'"+this.terminals_[X]+"'");w.showPosition?$="Parse error on line "+(R+1)+`:
1
+ import{ah as se,D as ye,d as H,e as Ee,l as S,z as we,k as De,g as he,q as ve}from"./index-zC8JwbY7.js";import{ok as Ne}from"./tool-windows-Cxt97IUt.js";import{i as ke,c as Ie,b as Oe,d as Te,a as ge,p as ze}from"./edges-e0da2a9e-yO08pQmB.js";import{G as Ce}from"./graph-CUWN3bJK.js";import{c as Ae}from"./channel-D3afY4hf.js";import{o as Re}from"./ordinal-Cboi1Yqb.js";import{s as Be}from"./Tableau10-B-NsZVaP.js";import"./createText-2e5e7dd3-Titb6mNG.js";import"./index-DkxPG60I.js";import"./browser-BfQXeJDQ.js";import"./line-D3s3tZAD.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";import"./init-Gi6I4Gst.js";var oe,le,ee=(function(){var e=function(D,l,s,i){for(s=s||{},i=D.length;i--;s[D[i]]=l);return s},a=[1,7],d=[1,13],c=[1,14],n=[1,15],g=[1,19],o=[1,16],f=[1,17],b=[1,18],p=[8,30],x=[8,21,28,29,30,31,32,40,44,47],y=[1,23],T=[1,24],v=[8,15,16,21,28,29,30,31,32,40,44,47],N=[8,15,16,21,27,28,29,30,31,32,40,44,47],E=[1,49],L={trace:function(){},yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:function(l,s,i,u,h,t,m){var r=t.length-1;switch(h){case 4:u.getLogger().debug("Rule: separator (NL) ");break;case 5:u.getLogger().debug("Rule: separator (Space) ");break;case 6:u.getLogger().debug("Rule: separator (EOF) ");break;case 7:u.getLogger().debug("Rule: hierarchy: ",t[r-1]),u.setHierarchy(t[r-1]);break;case 8:u.getLogger().debug("Stop NL ");break;case 9:u.getLogger().debug("Stop EOF ");break;case 10:u.getLogger().debug("Stop NL2 ");break;case 11:u.getLogger().debug("Stop EOF2 ");break;case 12:u.getLogger().debug("Rule: statement: ",t[r]),typeof t[r].length=="number"?this.$=t[r]:this.$=[t[r]];break;case 13:u.getLogger().debug("Rule: statement #2: ",t[r-1]),this.$=[t[r-1]].concat(t[r]);break;case 14:u.getLogger().debug("Rule: link: ",t[r],l),this.$={edgeTypeStr:t[r],label:""};break;case 15:u.getLogger().debug("Rule: LABEL link: ",t[r-3],t[r-1],t[r]),this.$={edgeTypeStr:t[r],label:t[r-1]};break;case 18:const R=parseInt(t[r]),Y=u.generateId();this.$={id:Y,type:"space",label:"",width:R,children:[]};break;case 23:u.getLogger().debug("Rule: (nodeStatement link node) ",t[r-2],t[r-1],t[r]," typestr: ",t[r-1].edgeTypeStr);const F=u.edgeStrToEdgeData(t[r-1].edgeTypeStr);this.$=[{id:t[r-2].id,label:t[r-2].label,type:t[r-2].type,directions:t[r-2].directions},{id:t[r-2].id+"-"+t[r].id,start:t[r-2].id,end:t[r].id,label:t[r-1].label,type:"edge",directions:t[r].directions,arrowTypeEnd:F,arrowTypeStart:"arrow_open"},{id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions}];break;case 24:u.getLogger().debug("Rule: nodeStatement (abc88 node size) ",t[r-1],t[r]),this.$={id:t[r-1].id,label:t[r-1].label,type:u.typeStr2Type(t[r-1].typeStr),directions:t[r-1].directions,widthInColumns:parseInt(t[r],10)};break;case 25:u.getLogger().debug("Rule: nodeStatement (node) ",t[r]),this.$={id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions,widthInColumns:1};break;case 26:u.getLogger().debug("APA123",this?this:"na"),u.getLogger().debug("COLUMNS: ",t[r]),this.$={type:"column-setting",columns:t[r]==="auto"?-1:parseInt(t[r])};break;case 27:u.getLogger().debug("Rule: id-block statement : ",t[r-2],t[r-1]),u.generateId(),this.$={...t[r-2],type:"composite",children:t[r-1]};break;case 28:u.getLogger().debug("Rule: blockStatement : ",t[r-2],t[r-1],t[r]);const C=u.generateId();this.$={id:C,type:"composite",label:"",children:t[r-1]};break;case 29:u.getLogger().debug("Rule: node (NODE_ID separator): ",t[r]),this.$={id:t[r]};break;case 30:u.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",t[r-1],t[r]),this.$={id:t[r-1],label:t[r].label,typeStr:t[r].typeStr,directions:t[r].directions};break;case 31:u.getLogger().debug("Rule: dirList: ",t[r]),this.$=[t[r]];break;case 32:u.getLogger().debug("Rule: dirList: ",t[r-1],t[r]),this.$=[t[r-1]].concat(t[r]);break;case 33:u.getLogger().debug("Rule: nodeShapeNLabel: ",t[r-2],t[r-1],t[r]),this.$={typeStr:t[r-2]+t[r],label:t[r-1]};break;case 34:u.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",t[r-3],t[r-2]," #3:",t[r-1],t[r]),this.$={typeStr:t[r-3]+t[r],label:t[r-2],directions:t[r-1]};break;case 35:case 36:this.$={type:"classDef",id:t[r-1].trim(),css:t[r].trim()};break;case 37:this.$={type:"applyClass",id:t[r-1].trim(),styleClass:t[r].trim()};break;case 38:this.$={type:"applyStyles",id:t[r-1].trim(),stylesStr:t[r].trim()};break}},table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:o,44:f,47:b},{8:[1,20]},e(p,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:a,28:d,29:c,31:n,32:g,40:o,44:f,47:b}),e(x,[2,16],{14:22,15:y,16:T}),e(x,[2,17]),e(x,[2,18]),e(x,[2,19]),e(x,[2,20]),e(x,[2,21]),e(x,[2,22]),e(v,[2,25],{27:[1,25]}),e(x,[2,26]),{19:26,26:12,32:g},{11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:o,44:f,47:b},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},e(N,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},e(p,[2,13]),{26:35,32:g},{32:[2,14]},{17:[1,36]},e(v,[2,24]),{11:37,13:4,14:22,15:y,16:T,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:o,44:f,47:b},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},e(N,[2,30]),{18:[1,43]},{18:[1,44]},e(v,[2,23]),{18:[1,45]},{30:[1,46]},e(x,[2,28]),e(x,[2,35]),e(x,[2,36]),e(x,[2,37]),e(x,[2,38]),{37:[1,47]},{34:48,35:E},{15:[1,50]},e(x,[2,27]),e(N,[2,33]),{39:[1,51]},{34:52,35:E,39:[2,31]},{32:[2,15]},e(N,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:function(l,s){if(s.recoverable)this.trace(l);else{var i=new Error(l);throw i.hash=s,i}},parse:function(l){var s=this,i=[0],u=[],h=[null],t=[],m=this.table,r="",R=0,Y=0,F=2,C=1,Le=t.slice.call(arguments,1),w=Object.create(this.lexer),K={yy:{}};for(var Z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Z)&&(K.yy[Z]=this.yy[Z]);w.setInput(l,K.yy),K.yy.lexer=w,K.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var J=w.yylloc;t.push(J);var me=w.options&&w.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _e(){var P;return P=u.pop()||w.lex()||C,typeof P!="number"&&(P instanceof Array&&(u=P,P=u.pop()),P=s.symbols_[P]||P),P}for(var I,M,z,Q,W={},X,B,ae,G;;){if(M=i[i.length-1],this.defaultActions[M]?z=this.defaultActions[M]:((I===null||typeof I>"u")&&(I=_e()),z=m[M]&&m[M][I]),typeof z>"u"||!z.length||!z[0]){var $="";G=[];for(X in m[M])this.terminals_[X]&&X>F&&G.push("'"+this.terminals_[X]+"'");w.showPosition?$="Parse error on line "+(R+1)+`:
2
2
  `+w.showPosition()+`
3
3
  Expecting `+G.join(", ")+", got '"+(this.terminals_[I]||I)+"'":$="Parse error on line "+(R+1)+": Unexpected "+(I==C?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError($,{text:w.match,token:this.terminals_[I]||I,line:w.yylineno,loc:J,expected:G})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+M+", token: "+I);switch(z[0]){case 1:i.push(I),h.push(w.yytext),t.push(w.yylloc),i.push(z[1]),I=null,Y=w.yyleng,r=w.yytext,R=w.yylineno,J=w.yylloc;break;case 2:if(B=this.productions_[z[1]][1],W.$=h[h.length-B],W._$={first_line:t[t.length-(B||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(B||1)].first_column,last_column:t[t.length-1].last_column},me&&(W._$.range=[t[t.length-(B||1)].range[0],t[t.length-1].range[1]]),Q=this.performAction.apply(W,[r,Y,R,K.yy,z[1],h,t].concat(Le)),typeof Q<"u")return Q;B&&(i=i.slice(0,-1*B*2),h=h.slice(0,-1*B),t=t.slice(0,-1*B)),i.push(this.productions_[z[1]][0]),h.push(W.$),t.push(W._$),ae=m[i[i.length-2]][i[i.length-1]],i.push(ae);break;case 3:return!0}}return!0}},A=(function(){var D={EOF:1,parseError:function(s,i){if(this.yy.parser)this.yy.parser.parseError(s,i);else throw new Error(s)},setInput:function(l,s){return this.yy=s||this.yy||{},this._input=l,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var l=this._input[0];this.yytext+=l,this.yyleng++,this.offset++,this.match+=l,this.matched+=l;var s=l.match(/(?:\r\n?|\n).*/g);return s?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),l},unput:function(l){var s=l.length,i=l.split(/(?:\r\n?|\n)/g);this._input=l+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-s),this.offset-=s;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var h=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===u.length?this.yylloc.first_column:0)+u[u.length-i.length].length-i[0].length:this.yylloc.first_column-s},this.options.ranges&&(this.yylloc.range=[h[0],h[0]+this.yyleng-s]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(l){this.unput(this.match.slice(l))},pastInput:function(){var l=this.matched.substr(0,this.matched.length-this.match.length);return(l.length>20?"...":"")+l.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var l=this.match;return l.length<20&&(l+=this._input.substr(0,20-l.length)),(l.substr(0,20)+(l.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var l=this.pastInput(),s=new Array(l.length+1).join("-");return l+this.upcomingInput()+`