aitu-app 0.6.71 → 0.6.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/assets/{CanvasAudioPlayer-BxZowfRq.js → CanvasAudioPlayer-C4pqPNnG.js} +1 -1
- package/assets/{ChatDrawer-BGK5A7Rf.js → ChatDrawer-9XDg_01o.js} +2 -2
- package/assets/{ChatMessagesArea-CuPP1K-H.js → ChatMessagesArea-MrSlzXfd.js} +2 -2
- package/assets/{DeferredAIInputBar-jZEz3pqU.js → DeferredAIInputBar-rlzvr9H5.js} +2 -2
- package/assets/{DrawnixDeferredFeatures-DRggo5l2.js → DrawnixDeferredFeatures-6BN6HsXW.js} +1 -1
- package/assets/{KnowledgeBaseContent-C1xFBdX9.js → KnowledgeBaseContent-DJnJZh6i.js} +3 -3
- package/assets/{MVCreator-D3rDT4pv.js → MVCreator-BVXIEkng.js} +1 -1
- package/assets/{ModelBenchmarkWorkbench-DrHfXMOC.js → ModelBenchmarkWorkbench-DV6h0r-O.js} +1 -1
- package/assets/{ModelDropdown-CErXiJel.js → ModelDropdown-iU3c5Z_N.js} +1 -1
- package/assets/{MusicAnalyzer-DNVsOB04.js → MusicAnalyzer-D9rIcu4x.js} +1 -1
- package/assets/{MusicAnalyzer-q0eIxKqJ.js → MusicAnalyzer-ghn7zFIt.js} +1 -1
- package/assets/{ResizableDivider-XFJLfAwc.js → ResizableDivider-C6Z5EQJ_.js} +1 -1
- package/assets/{TaskQueuePanel-zmK3r_Sy.js → TaskQueuePanel-NAYUh8lN.js} +1 -1
- package/assets/{VideoAnalyzer-IiMRyspL.js → VideoAnalyzer-VjFOqpZU.js} +1 -1
- package/assets/{ai-generation-preferences-service-DheS7yb2.js → ai-generation-preferences-service-BuQhsO32.js} +1 -1
- package/assets/{arc-AunKa7Be.js → arc-CCorIawr.js} +1 -1
- package/assets/{arc-CxS0h6XE.js → arc-OsezXT79.js} +1 -1
- package/assets/{batch-image-generation-BTo-Hh2f.js → batch-image-generation-BM3dGGpo.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-BOwTTQqR.js → blockDiagram-38ab4fdb-DUFnN1Ei.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-B9BxtRcE.js → blockDiagram-38ab4fdb-DWGlT04d.js} +1 -1
- package/assets/{browser-CK6xKVG3.js → browser-BlDolpRT.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-l1vuEfws.js → c4Diagram-3d4e48cf-D4FViX2F.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-B7o3_NGM.js → c4Diagram-3d4e48cf-D6HbI2bj.js} +1 -1
- package/assets/{canvas-insertion-6qsJRfKC.js → canvas-insertion-BZAyMFnR.js} +1 -1
- package/assets/channel-DHHHwu9d.js +1 -0
- package/assets/channel-DbaY041U.js +1 -0
- package/assets/{classDiagram-70f12bd4-BxdM_ZFq.js → classDiagram-70f12bd4-BJiXLgfR.js} +1 -1
- package/assets/{classDiagram-70f12bd4-C5PI5m3K.js → classDiagram-70f12bd4-P5-MZZHm.js} +1 -1
- package/assets/{classDiagram-v2-f2320105-D2WGupMF.js → classDiagram-v2-f2320105-BckUVKrQ.js} +1 -1
- package/assets/{classDiagram-v2-f2320105-CRLBLeIT.js → classDiagram-v2-f2320105-BlMVbuKh.js} +1 -1
- package/assets/{clipper-D9tfnKC1.js → clipper-BkGBD2Ma.js} +1 -1
- package/assets/clone-B9352qPQ.js +1 -0
- package/assets/{createText-2e5e7dd3-B8mv8HgF.js → createText-2e5e7dd3-BLEzJgyq.js} +1 -1
- package/assets/{createText-2e5e7dd3-CWQBEaI7.js → createText-2e5e7dd3-_0asARpb.js} +1 -1
- package/assets/{edges-e0da2a9e-CW611sej.js → edges-e0da2a9e-BvNEeRN2.js} +1 -1
- package/assets/{edges-e0da2a9e-CiSIgajX.js → edges-e0da2a9e-Su9We6Oe.js} +1 -1
- package/assets/{erDiagram-9861fffd-B60hPtiy.js → erDiagram-9861fffd-B-TnweRY.js} +1 -1
- package/assets/{erDiagram-9861fffd-Bq-lh9QY.js → erDiagram-9861fffd-ChF_4VVA.js} +1 -1
- package/assets/{flowDb-956e92f1-Bz6i22S1.js → flowDb-956e92f1-BklqjU-F.js} +1 -1
- package/assets/{flowDb-956e92f1-CVT7Imrs.js → flowDb-956e92f1-CpHT5-s-.js} +1 -1
- package/assets/{flowDiagram-66a62f08-e10-kMn8.js → flowDiagram-66a62f08-BW0lq2iO.js} +1 -1
- package/assets/{flowDiagram-66a62f08-CRiWeGax.js → flowDiagram-66a62f08-CM-ufoRy.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-CXd4cAmC.js +1 -0
- package/assets/flowDiagram-v2-96b9c2cf-WaERXGrn.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-CBnyqo_M.js → flowchart-elk-definition-4a651766-BHXMQM8F.js} +1 -1
- package/assets/{flowchart-elk-definition-4a651766-DKGRcOAx.js → flowchart-elk-definition-4a651766-BNNCQnvT.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-mhde3_of.js → ganttDiagram-c361ad54-BMznP5js.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-D19CTSCa.js → ganttDiagram-c361ad54-Cn_w4SQu.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-BTRFRUeL.js → gitGraphDiagram-72cf32ee-CcqxYifa.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-BPmLlXIw.js → gitGraphDiagram-72cf32ee-HNSkomMm.js} +1 -1
- package/assets/{graph-DIg8rY1E.js → graph-2O9SKVX0.js} +1 -1
- package/assets/{graph-B1ieZuJT.js → graph-D24U5F9b.js} +1 -1
- package/assets/{index-3862675e-CAW4PMyX.js → index-3862675e-kPXP30L6.js} +1 -1
- package/assets/{index-3862675e-BFVjQZrI.js → index-3862675e-wtTLssRq.js} +1 -1
- package/assets/{index-o4MkHJtB.js → index-7Yy5taJZ.js} +1 -1
- package/assets/{index-D0pBPzvH.js → index-9lQYp-F3.js} +1 -1
- package/assets/{index-cFN27HDb.js → index-BCZHTjCF.js} +1 -1
- package/assets/{index-zNq6WR1M.js → index-BELf2XK1.js} +1 -1
- package/assets/{index-CAmlVCIf.js → index-BJiKHIU5.js} +1 -1
- package/assets/{index-sZWFW1o8.js → index-BfJrMjzE.js} +1 -1
- package/assets/{index-Dszi0QdY.js → index-BgTSdPjs.js} +1 -1
- package/assets/{index-A3FZLzj3.js → index-BnBH1zrC.js} +1 -1
- package/assets/{index-Byg7B0_b.js → index-BnuBC6-d.js} +1 -1
- package/assets/{index-DLYbtrPe.js → index-BvjfhvDI.js} +1 -1
- package/assets/{index-BVd4ZdJq.js → index-C66Oc7kp.js} +1 -1
- package/assets/{index-B5h3vVYf.js → index-C8BMcDy_.js} +1 -1
- package/assets/{index-O1yzWoAv.js → index-CD0uXSEJ.js} +1 -1
- package/assets/{index-Dsn0zIY5.js → index-CDI7kJJr.js} +1 -1
- package/assets/{index-Cxhc7DpJ.js → index-CHYWTMjD.js} +1 -1
- package/assets/{index-BnOaEPvW.js → index-CIR5517N.js} +1 -1
- package/assets/{index-DsQmr35F.js → index-CSh9cI-m.js} +1 -1
- package/assets/{index-sq_FndL-.js → index-Cdm1s3zH.js} +1 -1
- package/assets/{index-Cs7bP6R-.js → index-Ce_zjJd0.js} +1 -1
- package/assets/{index-DXVriIPX.js → index-Cf-6nhZx.js} +3 -3
- package/assets/{index-DCn6TEiD.js → index-CszzzzlU.js} +3 -3
- package/assets/{index-LfJyON59.js → index-D057A5AW.js} +1 -1
- package/assets/{index-BwMXzWpM.js → index-D0nupp1L.js} +1 -1
- package/assets/{index-BYfSEJIM.js → index-D5ni4ZMT.js} +2 -2
- package/assets/{index-BRccxBUA.js → index-DKZkufa4.js} +1 -1
- package/assets/{index-WDtJA1fY.js → index-Duz4qBVw.js} +1 -1
- package/assets/{index-Dtw21-1a.js → index-DxlqWfyM.js} +1 -1
- package/assets/{index-DUi1yiuN.js → index-DzSyiFE3.js} +1 -1
- package/assets/{index-Cgt6J1qz.js → index-ESZ1UttR.js} +1 -1
- package/assets/{index-CysE-UTz.js → index-oiyTGfuR.js} +1 -1
- package/assets/{index-u7vr_P_s.js → index-q9Vudaup.js} +1 -1
- package/assets/{index-C3HRC3b5.js → index-te4VWNfY.js} +1 -1
- package/assets/{infoDiagram-f8f76790-Dmv1egEN.js → infoDiagram-f8f76790-CQWNDm6d.js} +1 -1
- package/assets/{infoDiagram-f8f76790-C9LQ9jd5.js → infoDiagram-f8f76790-D4GOLEO3.js} +1 -1
- package/assets/{journeyDiagram-49397b02-8CnesQvB.js → journeyDiagram-49397b02-2ir0vod-.js} +1 -1
- package/assets/{journeyDiagram-49397b02-LV1k8ByA.js → journeyDiagram-49397b02-BIR-UXT9.js} +1 -1
- package/assets/{layout-3nkAix10.js → layout-CYzCl7YP.js} +1 -1
- package/assets/{layout-BW8C-Xw4.js → layout-Cjlcubqs.js} +1 -1
- package/assets/{line-DDWqaSCo.js → line-B6TatEZ8.js} +1 -1
- package/assets/{line-U1joDaO1.js → line-qfwz7WRO.js} +1 -1
- package/assets/{linear-D8frs5RT.js → linear-GuBoF0OP.js} +1 -1
- package/assets/{linear-3k1Xl9ve.js → linear-ssbBIRl5.js} +1 -1
- package/assets/{main-hjIskWwz.js → main-B6qbLicq.js} +8 -8
- package/assets/{mermaid.core-BlObAm7H.js → mermaid.core-DOJyKoHR.js} +3 -3
- package/assets/{mindmap-definition-fc14e90a-go-0aDNp.js → mindmap-definition-fc14e90a-BN4fqdNM.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-DRTqIBGi.js → mindmap-definition-fc14e90a-qPR072_x.js} +1 -1
- package/assets/{model-benchmark-launcher-Dhybe1Ps.js → model-benchmark-launcher-CUPxnAZr.js} +1 -1
- package/assets/{model-benchmark-service-BlgtfJ25.js → model-benchmark-service-C3taFBGp.js} +1 -1
- package/assets/{model-selection-C9DVcl8A.js → model-selection-Da4xzp54.js} +1 -1
- package/assets/{photo-wall-splitter-BSRMMrLk.js → photo-wall-splitter-DN8Hms8E.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-OgnCNkdZ.js → pieDiagram-8a3498a8-6gjBTuiK.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-DsU04FDA.js → pieDiagram-8a3498a8-B_B-oMBm.js} +1 -1
- package/assets/{quadrantDiagram-120e2f19-CAKix819.js → quadrantDiagram-120e2f19-CGIYsVeK.js} +1 -1
- package/assets/{quadrantDiagram-120e2f19-B-qdqCsc.js → quadrantDiagram-120e2f19-DQlP5fyR.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-BFiAHorQ.js → requirementDiagram-deff3bca-BhadGJas.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-DCvuwhP4.js → requirementDiagram-deff3bca-CZrZs6WH.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-CW0FxDIH.js → sankeyDiagram-04a897e0-CYbsYQIC.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-DynB_N5t.js → sankeyDiagram-04a897e0-DLMtKqV7.js} +1 -1
- package/assets/{sequenceDiagram-704730f1-C3kzvK6i.js → sequenceDiagram-704730f1-CnMi1-vV.js} +1 -1
- package/assets/{sequenceDiagram-704730f1-iLPkDpBi.js → sequenceDiagram-704730f1-D5_Tbq78.js} +1 -1
- package/assets/{settings-dialog-CcLfJFr_.js → settings-dialog-BVG80WDy.js} +1 -1
- package/assets/{skill-dsl-parser-DrFEUbDY.js → skill-dsl-parser-C252Shcy.js} +1 -1
- package/assets/{stateDiagram-587899a1-fLTDppNO.js → stateDiagram-587899a1-BStwFkNh.js} +1 -1
- package/assets/{stateDiagram-587899a1-DbwUO5DV.js → stateDiagram-587899a1-DYdXq59h.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-DzR2PasK.js → stateDiagram-v2-d93cdb3a--y2o64Ew.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-aZJTxhK8.js → stateDiagram-v2-d93cdb3a-IdPKDi36.js} +1 -1
- package/assets/{styles-6aaf32cf-C_VEAaHX.js → styles-6aaf32cf-4WFibVVF.js} +1 -1
- package/assets/{styles-6aaf32cf-C5JfMGYv.js → styles-6aaf32cf-Cm63YNOe.js} +1 -1
- package/assets/{styles-9a916d00-BYSJ54L0.js → styles-9a916d00-B49ieQxk.js} +1 -1
- package/assets/{styles-9a916d00-C3gY_lFJ.js → styles-9a916d00-D3LwlgPD.js} +1 -1
- package/assets/{styles-c10674c1-ANPmaoE9.js → styles-c10674c1-DJhcCs3x.js} +1 -1
- package/assets/{styles-c10674c1-DXxQEnvg.js → styles-c10674c1-cbwmIB4x.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-c2dOJxSO.js → svgDrawCommon-08f97a94-C5ek8a-c.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-BVjA84-b.js → svgDrawCommon-08f97a94-c77e0hhb.js} +1 -1
- package/assets/{timeline-definition-85554ec2-6QIdYNFS.js → timeline-definition-85554ec2-7ZMOJP7x.js} +1 -1
- package/assets/{timeline-definition-85554ec2-BST8-Dw9.js → timeline-definition-85554ec2-BIhOlyVe.js} +1 -1
- package/assets/{tool-windows-Bd5iqcJh.js → tool-windows-BTXOQvEU.js} +10 -10
- package/assets/{ttd-dialog-Chz4Dc5q.js → ttd-dialog-CMzq1PeM.js} +4 -4
- package/assets/{use-runtime-models-NPMCne8X.js → use-runtime-models-C_YMetmY.js} +1 -1
- package/assets/{useCharacters-Yt_yZunw.js → useCharacters-6F7LfBD2.js} +1 -1
- package/assets/{useWorkflowSubmission-DNz90nBd.js → useWorkflowSubmission-B-0oH5Q6.js} +2 -2
- package/assets/{video-analyze-cG43kQp7.js → video-analyze-gJnLIFVx.js} +1 -1
- package/assets/{video-generation-CY32Hcvy.js → video-generation-D0RudPQ8.js} +1 -1
- package/assets/{video-recovery-service-DqRVY2GL.js → video-recovery-service-CRZVLLWA.js} +1 -1
- package/assets/{workflow-generation-utils-CqQgPCFy.js → workflow-generation-utils-5aqKk8qR.js} +2 -2
- package/assets/{workflow-submission-service-C55NPNuz.js → workflow-submission-service-C9Ph3Y2w.js} +1 -1
- package/assets/{xychartDiagram-e933f94c-DY34Q03N.js → xychartDiagram-e933f94c-9bdjNrcG.js} +1 -1
- package/assets/{xychartDiagram-e933f94c-DD9JQg-b.js → xychartDiagram-e933f94c-D6a2PcvQ.js} +1 -1
- package/changelog.json +15 -0
- package/idle-prefetch-manifest.json +302 -302
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/precache-manifest.json +6 -6
- package/sw.js +5 -5
- package/version.json +6 -3
- package/assets/channel-Dx9ePqRL.js +0 -1
- package/assets/channel-YfSSwDXj.js +0 -1
- package/assets/clone-DSiLnhfM.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-Bqr3L3y4.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-gCWf76DS.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{y as a,aI as vs,nA as Ba,at as as,nB as Sa,lI as ys,nC as Ns,np as bs,nu as xs,nD as hs,nE as js,nF as ws,nG as ks,ns as zs,ny as Es,nz as Vs,nH as le,bL as qa,r as n,nI as ve,nJ as Oe,lv as Ds,iV as va,g$ as ye,nK as ia,nL as Ia,nM as _a,i1 as _e,nN as Us,nO as Re,nP as Ps,h1 as J,nQ as ss,nR as ya,nS as Qe,nT as Ss,nU as _s,nV as qs,nW as Na,cX as ea,al as ze,nX as Is,ib as ns,h0 as Ne,nY as ba,nZ as xa,hK as ha,kY as Cs,bV as Le,kb as is,hM as Ka,as as ja,bx as Ya,j0 as As,hk as Ms,nk as Wa,nl as Rs,nm as Ts,n_ as Gs,ii as Fs,fP as Ls,dj as Os,eI as Hs}from"./tool-windows-Bd5iqcJh.js";import{v as $s}from"./video-analyze-cG43kQp7.js";import{quickInsert as na,setCanvasBoard as Za}from"./canvas-insertion-6qsJRfKC.js";import{M as He}from"./ModelDropdown-CErXiJel.js";import{u as $e}from"./use-runtime-models-NPMCne8X.js";import{a as Be}from"./model-selection-C9DVcl8A.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-CqQgPCFy.js";/* empty css *//* empty css *//* empty css */import{R as Js}from"./ResizableDivider-XFJLfAwc.js";/* empty css */import"./model-benchmark-service-BlgtfJ25.js";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=$e("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(He,{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,nA as Ba,at as as,nB as Sa,lI as ys,nC as Ns,np as bs,nu as xs,nD as hs,nE as js,nF as ws,nG as ks,ns as zs,ny as Es,nz as Vs,nH as le,bL as qa,r as n,nI as ve,nJ as Oe,lv as Ds,iV as va,g$ as ye,nK as ia,nL as Ia,nM as _a,i1 as _e,nN as Us,nO as Re,nP as Ps,h1 as J,nQ as ss,nR as ya,nS as Qe,nT as Ss,nU as _s,nV as qs,nW as Na,cX as ea,al as ze,nX as Is,ib as ns,h0 as Ne,nY as ba,nZ as xa,hK as ha,kY as Cs,bV as Le,kb as is,hM as Ka,as as ja,bx as Ya,j0 as As,hk as Ms,nk as Wa,nl as Rs,nm as Ts,n_ as Gs,ii as Fs,fP as Ls,dj as Os,eI as Hs}from"./tool-windows-BTXOQvEU.js";import{v as $s}from"./video-analyze-gJnLIFVx.js";import{quickInsert as na,setCanvasBoard as Za}from"./canvas-insertion-BZAyMFnR.js";import{M as He}from"./ModelDropdown-iU3c5Z_N.js";import{u as $e}from"./use-runtime-models-C_YMetmY.js";import{a as Be}from"./model-selection-Da4xzp54.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-5aqKk8qR.js";/* empty css *//* empty css *//* empty css */import{R as Js}from"./ResizableDivider-C6Z5EQJ_.js";/* empty css */import"./model-benchmark-service-C3taFBGp.js";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=$e("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(He,{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=$e("text"),L=$e("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(He,{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(He,{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=$e("image"),F=$e("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}=ns(),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(He,{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(He,{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(is,{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(is,{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}=ns(),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)},On=()=>{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{On as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as b,hz as B,y as n,bD as se,bw as oe,dM as ne,b7 as re,iC as ae,hj as le,hw as J,hv as U,hy as G,al as K,iD as de,iy as ue,iz as ce,iE as me,iF as pe,bW as fe,hn as he,il as Z,i3 as A,hb as ge,gP as E,hA as be,hG as Ne,he as xe,hf as ye,iG as we,hg as ze,i1 as Pe,iH as ve,ik as H,io as _e}from"./tool-windows-Bd5iqcJh.js";import{u as De,K as Ee,M as je}from"./ModelDropdown-CErXiJel.js";import{u as Oe}from"./use-runtime-models-NPMCne8X.js";import{f as Y,g as Q,a as Se}from"./model-selection-C9DVcl8A.js";/* empty css */function ke(e,t,i){return e==="size"?i.split("(")[0].trim():e==="duration"?`${t}s`:e==="klingAction2"?t==="image2video"?"图生":"文生":e==="mode"?t:i}const He=({selectedParams:e,onParamChange:t,compatibleParams:i,modelId:o,language:s="zh",disabled:r=!1,isOpen:l,onOpenChange:u,excludeParamIds:m})=>{const{value:c,setValue:a}=De({controlledValue:l,defaultValue:!1,onChange:u}),[g,w]=b.useState(0),[D,P]=b.useState(0),N=b.useMemo(()=>{const p=i??B(o);return m&&m.length>0?p.filter(h=>!m.includes(h.id)):p},[i,o,m]);b.useEffect(()=>{var p;if(c&&N.length>0){w(0);const h=N[0],z=e[h.id],_=((p=h.options)==null?void 0:p.findIndex(f=>f.value===z))??0;P(_>=0?_:0)}},[c,N,e]);const I=b.useMemo(()=>{if(N.length===0)return s==="zh"?"参数":"Params";const p=[];return N.forEach(h=>{var _;const z=e[h.id];if(z)if(h.valueType==="enum"){const f=(_=h.options)==null?void 0:_.find(y=>y.value===z);f&&p.push(ke(h.id,z,f.label))}else{const f=z.length>10?`${z.slice(0,10)}…`:z;p.push(`${h.shortLabel||h.label}:${f}`)}}),p.length===0?s==="zh"?"配置参数":"Settings":p.join(", ")},[N,e,s]),R=b.useCallback(p=>{p.preventDefault(),!r&&a(!c)},[r,c,a]),L=b.useCallback(p=>{var _,f;if(p==="Escape")return a(!1),!0;const h=N[g],z=((_=h==null?void 0:h.options)==null?void 0:_.length)??0;if(p==="ArrowDown")return w(y=>{var x;const O=y<N.length-1?y+1:0,S=N[O],M=e[S.id],d=((x=S.options)==null?void 0:x.findIndex(v=>v.value===M))??0;return P(d>=0?d:0),O}),!0;if(p==="ArrowUp")return w(y=>{var x;const O=y>0?y-1:N.length-1,S=N[O],M=e[S.id],d=((x=S.options)==null?void 0:x.findIndex(v=>v.value===M))??0;return P(d>=0?d:0),O}),!0;if(p==="ArrowRight")return P(y=>y<z-1?y+1:0),!0;if(p==="ArrowLeft")return P(y=>y>0?y-1:z-1),!0;if(p==="Enter"||p===" "||p==="Tab"){const y=(f=h==null?void 0:h.options)==null?void 0:f[D];return y&&t(h.id,y.value),!0}return!1},[N,g,D,e,t]),j=b.useCallback((p,h)=>{t(p,h)},[t]),T=b.useCallback((p,h)=>{t(p,h,{keepOpen:!0})},[t]);return N.length===0?null:n.jsxDEV(Ee,{isOpen:c,setIsOpen:a,disabled:r,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:L,children:({containerRef:p,menuRef:h,portalPosition:z,handleTriggerKeyDown:_})=>n.jsxDEV("div",{className:"parameters-dropdown",ref:p,children:[n.jsxDEV("button",{className:`parameters-dropdown__trigger ${c?"parameters-dropdown__trigger--open":""}`,onMouseDown:R,onKeyDown:_,type:"button",disabled:r,title:`${I} (↑↓ Tab)`,children:[n.jsxDEV("span",{className:"parameters-dropdown__label",children:I},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:237,columnNumber:13},void 0),n.jsxDEV(oe,{size:14,className:`parameters-dropdown__icon ${c?"parameters-dropdown__icon--open":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:238,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:229,columnNumber:11},void 0),c&&se.createPortal(n.jsxDEV("div",{ref:h,className:`parameters-dropdown__menu parameters-dropdown__menu--flat ${re}`,style:{position:"fixed",zIndex:ne.DROPDOWN_PORTAL,left:z.left,bottom:window.innerHeight-z.top+8,maxHeight:Math.max(240,Math.min(420,z.top-12)),overflowY:"auto"},onMouseDown:f=>f.stopPropagation(),onClick:f=>f.stopPropagation(),children:[n.jsxDEV("div",{className:"parameters-dropdown__header",children:[n.jsxDEV(ae,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:259,columnNumber:17},void 0),n.jsxDEV("span",{children:s==="zh"?"设置生成参数 (↑↓←→ Tab)":"Parameters (↑↓←→ Tab)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:260,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:258,columnNumber:15},void 0),n.jsxDEV("div",{className:"parameters-dropdown__sections",children:N.map((f,y)=>{var M;const O=e[f.id],S=y===g;return n.jsxDEV("div",{className:`parameters-dropdown__section ${S?"parameters-dropdown__section--highlighted":""}`,children:[n.jsxDEV("div",{className:"parameters-dropdown__section-title",children:f.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:272,columnNumber:23},void 0),f.valueType==="enum"?n.jsxDEV("div",{className:"parameters-dropdown__options",children:(M=f.options)==null?void 0:M.map((d,x)=>{const v=O===d.value,k=S&&x===D;return n.jsxDEV("button",{type:"button",className:`parameters-dropdown__option ${v?"parameters-dropdown__option--selected":""} ${k?"parameters-dropdown__option--highlighted":""}`,onClick:()=>j(f.id,d.value),onMouseEnter:()=>{w(y),P(x)},children:[n.jsxDEV("span",{className:"parameters-dropdown__option-label",children:d.label.split("(")[0].trim()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:291,columnNumber:33},void 0),v&&n.jsxDEV(le,{size:12,className:"parameters-dropdown__option-check"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:294,columnNumber:48},void 0)]},d.value,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:281,columnNumber:31},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:276,columnNumber:25},void 0):n.jsxDEV("div",{className:"parameters-dropdown__field",children:n.jsxDEV("input",{type:f.valueType==="number"?"number":"text",className:"parameters-dropdown__field-input",value:O||"",placeholder:f.description||f.label,min:f.valueType==="number"?f.min:void 0,max:f.valueType==="number"?f.max:void 0,step:f.valueType==="number"?f.step:void 0,onChange:d=>T(f.id,d.target.value),onMouseDown:d=>d.stopPropagation(),onKeyDown:d=>d.stopPropagation()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:301,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:300,columnNumber:25},void 0)]},f.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:268,columnNumber:21},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:263,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:241,columnNumber:13},void 0),document.body)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:228,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:220,columnNumber:5},void 0)},Me={mj_ar:"--ar",mj_v:"--v",mj_style:"--style",mj_s:"--s",mj_q:"--q",mj_seed:"--seed"},Ye=e=>{const t=[];return Object.entries(Me).forEach(([i,o])=>{const s=e[i];!s||s==="default"||t.push(`${o} ${s}`)}),t.join(" ")},X=(e,t,i)=>{const o=i==="image"?{isGenerating:e,imageLoading:t}:{isGenerating:e,videoLoading:t};window.dispatchEvent(new CustomEvent("ai-generation-state-change",{detail:o}))},Qe=(e,t,i)=>{b.useEffect(()=>{const o=s=>{(s.metaKey||s.ctrlKey)&&s.key==="Enter"&&(s.preventDefault(),!e&&t.trim()&&i())};return document.addEventListener("keydown",o),()=>{document.removeEventListener("keydown",o)}},[e,t,i])},Xe=e=>{const[t,i]=b.useState(!1),[o,s]=b.useState(!1),r=b.useCallback(u=>{i(u),X(u,o,e)},[o,e]),l=b.useCallback(u=>{s(u),X(t,u,e)},[t,e]);return{isGenerating:t,isLoading:o,updateIsGenerating:r,updateIsLoading:l}},We=(e,t,i)=>t==="image"?e==="zh"?"一只可爱的小猫坐在窗台上,阳光透过窗户洒在它的毛发上,背景是温馨的家居环境":"A cute kitten sitting on a windowsill, with sunlight streaming through the window onto its fur, with a cozy home environment in the background":i==="sora"?e==="zh"?"描述视频内容,输入 @ 可引用已创建的角色,如 @username 在海边漫步...":"Describe video content, type @ to reference created characters, e.g. @username walking on the beach...":e==="zh"?"生成一个美丽的日出场景,阳光从山峰后缓缓升起,云朵轻柔地飘动":"Generate a beautiful sunrise scene where the sun slowly rises from behind mountains with clouds gently floating",Ve=({originalPrompt:e,optimizationRequirements:t,language:i,type:o,mode:s="polish"})=>{const r=e.trim(),l=(t==null?void 0:t.trim())||"",u=i==="zh"?o==="image"?"图片生成":"视频生成":o==="image"?"image generation":"video generation",m=i==="zh"?o==="image"?"重点补足主体、构图、风格、光线、材质与画面细节。":"重点补足主体动作、镜头语言、运镜、时序、转场与画面连续性。":o==="image"?"Improve subject detail, composition, style, lighting, materials, and visual detail.":"Improve subject motion, camera language, camera movement, timing, transitions, and continuity.";return s==="structured"?i==="zh"?[`你是一名专业的${u}结构化提示词设计师。`,"请把原始需求整理成适合复杂场景生成的 JSON 结构化提示词。","","目标:","1. 保留用户原始意图,不要擅自改题。","2. 将复杂场景拆解为稳定、可复用、可继续编辑的结构字段。","3. 如果原文中有明确的布局、数量、标题、区域、主体、材质、风格、时间线、图例、标注等信息,尽量显式结构化。",`4. ${m}`,"5. 只输出一个合法 JSON 对象,不要解释、不要标题、不要 Markdown 代码块。","","JSON 结构要求:","1. 顶层优先包含这些键:type、instruction、style、layout。","2. style 是对象,放背景、主体风格、材质、镜头或质感等。","3. layout 是对象,放标题、分区、数量、位置、图例、时间轴、主体布局等。","4. 对复杂主体区域,优先使用 centerpiece、focal_point、sections、annotations、timeline、legends 等语义化字段。","5. 数量必须用数字,枚举信息尽量使用数组。","6. 不确定的扩展项可以补充 defaults、constraints、notes,但保持简洁。","7. 如果用户已经给了某种 JSON 雏形,要在其基础上补全,而不是完全推翻重写。","","输出风格要求:","1. value 尽量写成可直接给生图/生视频模型使用的短句或短段落。","2. 字段命名保持英文 snake_case 或 lowerCamelCase 二选一,但同一份 JSON 内保持一致。","3. 内容语言尽量与原始提示词一致。","","【原始提示词】",r,"","【补充要求】",l||"将其整理成适合复杂结构场景的 JSON 提示词,便于后续继续扩写与复用。"].join(`
|
|
1
|
+
import{r as b,hz as B,y as n,bD as se,bw as oe,dM as ne,b7 as re,iC as ae,hj as le,hw as J,hv as U,hy as G,al as K,iD as de,iy as ue,iz as ce,iE as me,iF as pe,bW as fe,hn as he,il as Z,i3 as A,hb as ge,gP as E,hA as be,hG as Ne,he as xe,hf as ye,iG as we,hg as ze,i1 as Pe,iH as ve,ik as H,io as _e}from"./tool-windows-BTXOQvEU.js";import{u as De,K as Ee,M as je}from"./ModelDropdown-iU3c5Z_N.js";import{u as Oe}from"./use-runtime-models-C_YMetmY.js";import{f as Y,g as Q,a as Se}from"./model-selection-Da4xzp54.js";/* empty css */function ke(e,t,i){return e==="size"?i.split("(")[0].trim():e==="duration"?`${t}s`:e==="klingAction2"?t==="image2video"?"图生":"文生":e==="mode"?t:i}const He=({selectedParams:e,onParamChange:t,compatibleParams:i,modelId:o,language:s="zh",disabled:r=!1,isOpen:l,onOpenChange:u,excludeParamIds:m})=>{const{value:c,setValue:a}=De({controlledValue:l,defaultValue:!1,onChange:u}),[g,w]=b.useState(0),[D,P]=b.useState(0),N=b.useMemo(()=>{const p=i??B(o);return m&&m.length>0?p.filter(h=>!m.includes(h.id)):p},[i,o,m]);b.useEffect(()=>{var p;if(c&&N.length>0){w(0);const h=N[0],z=e[h.id],_=((p=h.options)==null?void 0:p.findIndex(f=>f.value===z))??0;P(_>=0?_:0)}},[c,N,e]);const I=b.useMemo(()=>{if(N.length===0)return s==="zh"?"参数":"Params";const p=[];return N.forEach(h=>{var _;const z=e[h.id];if(z)if(h.valueType==="enum"){const f=(_=h.options)==null?void 0:_.find(y=>y.value===z);f&&p.push(ke(h.id,z,f.label))}else{const f=z.length>10?`${z.slice(0,10)}…`:z;p.push(`${h.shortLabel||h.label}:${f}`)}}),p.length===0?s==="zh"?"配置参数":"Settings":p.join(", ")},[N,e,s]),R=b.useCallback(p=>{p.preventDefault(),!r&&a(!c)},[r,c,a]),L=b.useCallback(p=>{var _,f;if(p==="Escape")return a(!1),!0;const h=N[g],z=((_=h==null?void 0:h.options)==null?void 0:_.length)??0;if(p==="ArrowDown")return w(y=>{var x;const O=y<N.length-1?y+1:0,S=N[O],M=e[S.id],d=((x=S.options)==null?void 0:x.findIndex(v=>v.value===M))??0;return P(d>=0?d:0),O}),!0;if(p==="ArrowUp")return w(y=>{var x;const O=y>0?y-1:N.length-1,S=N[O],M=e[S.id],d=((x=S.options)==null?void 0:x.findIndex(v=>v.value===M))??0;return P(d>=0?d:0),O}),!0;if(p==="ArrowRight")return P(y=>y<z-1?y+1:0),!0;if(p==="ArrowLeft")return P(y=>y>0?y-1:z-1),!0;if(p==="Enter"||p===" "||p==="Tab"){const y=(f=h==null?void 0:h.options)==null?void 0:f[D];return y&&t(h.id,y.value),!0}return!1},[N,g,D,e,t]),j=b.useCallback((p,h)=>{t(p,h)},[t]),T=b.useCallback((p,h)=>{t(p,h,{keepOpen:!0})},[t]);return N.length===0?null:n.jsxDEV(Ee,{isOpen:c,setIsOpen:a,disabled:r,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:L,children:({containerRef:p,menuRef:h,portalPosition:z,handleTriggerKeyDown:_})=>n.jsxDEV("div",{className:"parameters-dropdown",ref:p,children:[n.jsxDEV("button",{className:`parameters-dropdown__trigger ${c?"parameters-dropdown__trigger--open":""}`,onMouseDown:R,onKeyDown:_,type:"button",disabled:r,title:`${I} (↑↓ Tab)`,children:[n.jsxDEV("span",{className:"parameters-dropdown__label",children:I},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:237,columnNumber:13},void 0),n.jsxDEV(oe,{size:14,className:`parameters-dropdown__icon ${c?"parameters-dropdown__icon--open":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:238,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:229,columnNumber:11},void 0),c&&se.createPortal(n.jsxDEV("div",{ref:h,className:`parameters-dropdown__menu parameters-dropdown__menu--flat ${re}`,style:{position:"fixed",zIndex:ne.DROPDOWN_PORTAL,left:z.left,bottom:window.innerHeight-z.top+8,maxHeight:Math.max(240,Math.min(420,z.top-12)),overflowY:"auto"},onMouseDown:f=>f.stopPropagation(),onClick:f=>f.stopPropagation(),children:[n.jsxDEV("div",{className:"parameters-dropdown__header",children:[n.jsxDEV(ae,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:259,columnNumber:17},void 0),n.jsxDEV("span",{children:s==="zh"?"设置生成参数 (↑↓←→ Tab)":"Parameters (↑↓←→ Tab)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:260,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:258,columnNumber:15},void 0),n.jsxDEV("div",{className:"parameters-dropdown__sections",children:N.map((f,y)=>{var M;const O=e[f.id],S=y===g;return n.jsxDEV("div",{className:`parameters-dropdown__section ${S?"parameters-dropdown__section--highlighted":""}`,children:[n.jsxDEV("div",{className:"parameters-dropdown__section-title",children:f.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:272,columnNumber:23},void 0),f.valueType==="enum"?n.jsxDEV("div",{className:"parameters-dropdown__options",children:(M=f.options)==null?void 0:M.map((d,x)=>{const v=O===d.value,k=S&&x===D;return n.jsxDEV("button",{type:"button",className:`parameters-dropdown__option ${v?"parameters-dropdown__option--selected":""} ${k?"parameters-dropdown__option--highlighted":""}`,onClick:()=>j(f.id,d.value),onMouseEnter:()=>{w(y),P(x)},children:[n.jsxDEV("span",{className:"parameters-dropdown__option-label",children:d.label.split("(")[0].trim()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:291,columnNumber:33},void 0),v&&n.jsxDEV(le,{size:12,className:"parameters-dropdown__option-check"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:294,columnNumber:48},void 0)]},d.value,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:281,columnNumber:31},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:276,columnNumber:25},void 0):n.jsxDEV("div",{className:"parameters-dropdown__field",children:n.jsxDEV("input",{type:f.valueType==="number"?"number":"text",className:"parameters-dropdown__field-input",value:O||"",placeholder:f.description||f.label,min:f.valueType==="number"?f.min:void 0,max:f.valueType==="number"?f.max:void 0,step:f.valueType==="number"?f.step:void 0,onChange:d=>T(f.id,d.target.value),onMouseDown:d=>d.stopPropagation(),onKeyDown:d=>d.stopPropagation()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:301,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:300,columnNumber:25},void 0)]},f.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:268,columnNumber:21},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:263,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:241,columnNumber:13},void 0),document.body)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:228,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ParametersDropdown.tsx",lineNumber:220,columnNumber:5},void 0)},Me={mj_ar:"--ar",mj_v:"--v",mj_style:"--style",mj_s:"--s",mj_q:"--q",mj_seed:"--seed"},Ye=e=>{const t=[];return Object.entries(Me).forEach(([i,o])=>{const s=e[i];!s||s==="default"||t.push(`${o} ${s}`)}),t.join(" ")},X=(e,t,i)=>{const o=i==="image"?{isGenerating:e,imageLoading:t}:{isGenerating:e,videoLoading:t};window.dispatchEvent(new CustomEvent("ai-generation-state-change",{detail:o}))},Qe=(e,t,i)=>{b.useEffect(()=>{const o=s=>{(s.metaKey||s.ctrlKey)&&s.key==="Enter"&&(s.preventDefault(),!e&&t.trim()&&i())};return document.addEventListener("keydown",o),()=>{document.removeEventListener("keydown",o)}},[e,t,i])},Xe=e=>{const[t,i]=b.useState(!1),[o,s]=b.useState(!1),r=b.useCallback(u=>{i(u),X(u,o,e)},[o,e]),l=b.useCallback(u=>{s(u),X(t,u,e)},[t,e]);return{isGenerating:t,isLoading:o,updateIsGenerating:r,updateIsLoading:l}},We=(e,t,i)=>t==="image"?e==="zh"?"一只可爱的小猫坐在窗台上,阳光透过窗户洒在它的毛发上,背景是温馨的家居环境":"A cute kitten sitting on a windowsill, with sunlight streaming through the window onto its fur, with a cozy home environment in the background":i==="sora"?e==="zh"?"描述视频内容,输入 @ 可引用已创建的角色,如 @username 在海边漫步...":"Describe video content, type @ to reference created characters, e.g. @username walking on the beach...":e==="zh"?"生成一个美丽的日出场景,阳光从山峰后缓缓升起,云朵轻柔地飘动":"Generate a beautiful sunrise scene where the sun slowly rises from behind mountains with clouds gently floating",Ve=({originalPrompt:e,optimizationRequirements:t,language:i,type:o,mode:s="polish"})=>{const r=e.trim(),l=(t==null?void 0:t.trim())||"",u=i==="zh"?o==="image"?"图片生成":"视频生成":o==="image"?"image generation":"video generation",m=i==="zh"?o==="image"?"重点补足主体、构图、风格、光线、材质与画面细节。":"重点补足主体动作、镜头语言、运镜、时序、转场与画面连续性。":o==="image"?"Improve subject detail, composition, style, lighting, materials, and visual detail.":"Improve subject motion, camera language, camera movement, timing, transitions, and continuity.";return s==="structured"?i==="zh"?[`你是一名专业的${u}结构化提示词设计师。`,"请把原始需求整理成适合复杂场景生成的 JSON 结构化提示词。","","目标:","1. 保留用户原始意图,不要擅自改题。","2. 将复杂场景拆解为稳定、可复用、可继续编辑的结构字段。","3. 如果原文中有明确的布局、数量、标题、区域、主体、材质、风格、时间线、图例、标注等信息,尽量显式结构化。",`4. ${m}`,"5. 只输出一个合法 JSON 对象,不要解释、不要标题、不要 Markdown 代码块。","","JSON 结构要求:","1. 顶层优先包含这些键:type、instruction、style、layout。","2. style 是对象,放背景、主体风格、材质、镜头或质感等。","3. layout 是对象,放标题、分区、数量、位置、图例、时间轴、主体布局等。","4. 对复杂主体区域,优先使用 centerpiece、focal_point、sections、annotations、timeline、legends 等语义化字段。","5. 数量必须用数字,枚举信息尽量使用数组。","6. 不确定的扩展项可以补充 defaults、constraints、notes,但保持简洁。","7. 如果用户已经给了某种 JSON 雏形,要在其基础上补全,而不是完全推翻重写。","","输出风格要求:","1. value 尽量写成可直接给生图/生视频模型使用的短句或短段落。","2. 字段命名保持英文 snake_case 或 lowerCamelCase 二选一,但同一份 JSON 内保持一致。","3. 内容语言尽量与原始提示词一致。","","【原始提示词】",r,"","【补充要求】",l||"将其整理成适合复杂结构场景的 JSON 提示词,便于后续继续扩写与复用。"].join(`
|
|
2
2
|
`):[`You are a professional ${u} prompt architect for structured prompts.`,"Transform the original request into a JSON-based structured prompt for complex scenes.","","Goals:","1. Preserve the original intent without changing the subject.","2. Decompose the scene into stable, reusable, and editable fields.","3. Explicitly structure layout, counts, titles, regions, subjects, materials, style, timeline, legends, labels, and annotations whenever present.",`4. ${m}`,"5. Output exactly one valid JSON object. No explanation, no title, no Markdown code fence.","","JSON structure rules:","1. Prefer these top-level keys: type, instruction, style, layout.","2. style should be an object for background, subject style, materials, camera, rendering, or texture.","3. layout should be an object for title, sections, counts, positions, legends, timelines, and composition.","4. For the main subject area, prefer semantic fields such as centerpiece, focal_point, sections, annotations, timeline, or legends.","5. Use numbers for counts and arrays for enumerations whenever possible.","6. Add defaults, constraints, or notes only when useful, and keep them concise.","7. If the user already provided a JSON draft, extend and normalize it instead of replacing it entirely.","","Output style rules:","1. Values should be concise and directly usable for downstream generation.","2. Use either snake_case or lowerCamelCase field names, but stay consistent within the same JSON.","3. Keep the language aligned with the original prompt as much as possible.","","[Original Prompt]",r,"","[Additional Requirements]",l||"Restructure it into a reusable JSON prompt for a complex visual scene."].join(`
|
|
3
3
|
`):i==="zh"?[`你是一名专业的${u}提示词优化助手。`,"请基于原始提示词和优化要求,输出一版可直接用于生成的最终提示词。","","要求:","1. 保持原始提示词的核心意图,不要偏题。","2. 优先满足优化要求;如果优化要求为空,仅做必要润色与结构优化。","3. 保持与原始提示词相同的语言风格;原文中英混合时,尽量沿用原表达。","4. 如果原始提示词已经较完整,只做轻量优化,避免无意义堆砌。",`5. ${m}`,"6. 只输出最终优化后的提示词,不要解释、不要加标题、不要用代码块。","","【原始提示词】",r,"","【优化要求】",l||"无,做通顺、准确、可执行的轻量优化。"].join(`
|
|
4
4
|
`):[`You are a professional ${u} prompt optimizer.`,"Based on the original prompt and refinement requirements, output one final prompt that can be used directly.","","Requirements:","1. Preserve the core intent of the original prompt.","2. Prioritize the refinement requirements; if they are empty, only do light polishing and restructuring.","3. Keep the same language style as the original prompt. If the original is mixed-language, preserve that style when possible.","4. If the original prompt is already detailed, only refine lightly and avoid unnecessary expansion.",`5. ${m}`,"6. Output only the final optimized prompt. No explanation, no title, no code block.","","[Original Prompt]",r,"","[Refinement Requirements]",l||"None. Apply light polishing for clarity and execution quality."].join(`
|
|
@@ -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-
|
|
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-CszzzzlU.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 +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-
|
|
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-DOJyKoHR.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};
|