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,4 +1,4 @@
|
|
|
1
|
-
import{n$ as hs,o0 as bs,o1 as xs,o2 as ys,y as a,aI as js,o3 as ws,i1 as Ee,nN as Ta,o4 as ks,o5 as Es,lI as rs,o6 as Vs,r,nI as le,g$ as ue,ie as Ds,h0 as he,h1 as Ie,hF as Ya,o7 as Ps,nJ as Le,nL as $a,np as ts,ns,nu as is,nD as ya,nE as ja,nv as Ss,nw as _s,ny as Us,nS as wa,nT as qs,nU as Is,nV as Cs,bL as Ms,nW as ka,al as Xe,nX as As,cX as oa,ib as os,nY as Ea,nZ as Va,hK as Da,kY as Ts,bV as Oe,kb as $s,o8 as Gs,o9 as zs,hM as Ja,as as Pa,bx as Za,nk as ca,nl as Os,nm as Rs,j0 as Ls,fP as Fs}from"./tool-windows-
|
|
1
|
+
import{n$ as hs,o0 as bs,o1 as xs,o2 as ys,y as a,aI as js,o3 as ws,i1 as Ee,nN as Ta,o4 as ks,o5 as Es,lI as rs,o6 as Vs,r,nI as le,g$ as ue,ie as Ds,h0 as he,h1 as Ie,hF as Ya,o7 as Ps,nJ as Le,nL as $a,np as ts,ns,nu as is,nD as ya,nE as ja,nv as Ss,nw as _s,ny as Us,nS as wa,nT as qs,nU as Is,nV as Cs,bL as Ms,nW as ka,al as Xe,nX as As,cX as oa,ib as os,nY as Ea,nZ as Va,hK as Da,kY as Ts,bV as Oe,kb as $s,o8 as Gs,o9 as zs,hM as Ja,as as Pa,bx as Za,nk as ca,nl as Os,nm as Rs,j0 as Ls,fP as Fs}from"./tool-windows-BTXOQvEU.js";import{e as Hs}from"./MusicAnalyzer-D9rIcu4x.js";import{M as Fe}from"./ModelDropdown-iU3c5Z_N.js";import{u as He}from"./use-runtime-models-C_YMetmY.js";import{a as Be}from"./model-selection-Da4xzp54.js";import{setCanvasBoard as Xa,quickInsert as Qa}from"./canvas-insertion-BZAyMFnR.js";/* empty css *//* empty css */import{R as Bs}from"./ResizableDivider-C6Z5EQJ_.js";import{r as Ks,a as Ws,b as la,w as Sa,d as Ys,f as Js}from"./workflow-generation-utils-5aqKk8qR.js";/* empty css *//* empty css */import"./model-benchmark-service-C3taFBGp.js";const pa="mv-creator:records",Zs=50;async function fa(){return hs(pa)}async function Xs(e){return bs(pa,e,Zs)}async function Q(e,n){return xs(pa,e,n)}async function Qs(e){return ys(pa,e)}const es=[{id:"analyze",label:"分析"},{id:"script",label:"脚本"},{id:"generate",label:"生成"}],er=({current:e,onNavigate:n,hasRecord:m,hasShots:N})=>{const u=es.findIndex(p=>p.id===e);return a.jsxDEV("div",{className:"va-step-bar",children:es.map((p,y)=>{const P=p.id===e,S=y<u,k=!m&&y>0||(p.id==="script"||p.id==="generate")&&!N;return a.jsxDEV(js.Fragment,{children:[y>0&&a.jsxDEV("span",{className:"va-step-arrow",children:"→"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/components/StepBar.tsx",lineNumber:36,columnNumber:27},void 0),a.jsxDEV("button",{className:`va-step ${P?"active":""} ${S?"past":""}`,onClick:()=>!k&&n(p.id),disabled:k,children:[a.jsxDEV("span",{className:"va-step-num",children:y+1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/components/StepBar.tsx",lineNumber:42,columnNumber:15},void 0),p.label]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/components/StepBar.tsx",lineNumber:37,columnNumber:13},void 0)]},p.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/components/StepBar.tsx",lineNumber:35,columnNumber:11},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/mv-creator/components/StepBar.tsx",lineNumber:27,columnNumber:5},void 0)},ar=10;function cs(e,n,m){return{id:rs(),createdAt:Date.now(),label:n,prompt:m,shots:structuredClone(e)}}function ls(e,n){return Vs(e,"storyboardVersions",n,ar,{editedShots:n.shots})}const ma=ws;function sr(e,n){return Es(e,"storyboardVersions",n,{getVersionPatch:m=>({editedShots:m.shots}),getOriginalPatch:m=>{var u;const N=(u=m.storyboardVersions)==null?void 0:u[m.storyboardVersions.length-1];return N?{editedShots:[...N.shots]}:null},originalVersionId:ma})}function Me(e,n){return ks(e,"storyboardVersions",n)}function us(e,n=e.editedShots||[]){var P,S,k;const m=e.selectedClipDuration||n.reduce((v,f)=>Math.max(v,f.endTime||0),0),N=(P=e.musicStyleTags)==null?void 0:P.filter(Boolean).join(", "),u=e.characters||[],p=["# 爆款MV脚本","",`**创意描述:** ${e.creationPrompt||"-"}`,`**音乐标题:** ${e.musicTitle||"-"}`,`**音乐风格:** ${N||"-"}`,`**时长:** ${m||0}s`,`**画面比例:** ${e.aspectRatio||"16x9"}`,`**视频风格:** ${e.videoStyle||"-"}`];(S=e.musicLyrics)!=null&&S.trim()&&p.push("","## 歌词","",e.musicLyrics.trim()),(k=e.rewritePrompt)!=null&&k.trim()&&p.push("","## 改编提示词","",e.rewritePrompt.trim()),u.length>0&&(p.push("","## 角色设定",""),u.forEach((v,f)=>{p.push(`### ${f+1}. ${v.name||v.id}`),p.push(`- ID:${v.id}`),p.push(`- 外观提示词:${v.description||"-"}`),v.referenceImageUrl&&p.push(`- 参考图:${v.referenceImageUrl}`),p.push("")}));const y=n.map((v,f)=>{var _;return[`### ${f+1}. ${v.label||`镜头 ${f+1}`} (${v.startTime}s-${v.endTime}s)`,"",`**画面描述:** ${v.description||"-"}`,"",`**旁白:** ${v.narration||"-"}`,v.dialogue?`
|
|
2
2
|
**角色对白:** ${v.dialogue}`:"",v.dialogue_speakers?`
|
|
3
3
|
**对白角色:** ${v.dialogue_speakers}`:"",v.speech_relation?`
|
|
4
4
|
**语音关系:** ${v.speech_relation}`:"",v.camera_movement?`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{bm as us,mL as hs,r as c,aI as bs,iY as De,y as s,ig as ps,ih as ks,bV as je,i9 as fs,i8 as ee,iR as we,iP as Ns,al as _e,_ as xs,mM as vs,lS as gs,jL as js,jM as ws,ho as _s,mN as Ms}from"./tool-windows-
|
|
1
|
+
import{bm as us,mL as hs,r as c,aI as bs,iY as De,y as s,ig as ps,ih as ks,bV as je,i9 as fs,i8 as ee,iR as we,iP as Ns,al as _e,_ as xs,mM as vs,lS as gs,jL as js,jM as ws,ho as _s,mN as Ms}from"./tool-windows-BTXOQvEU.js";import{m as _,g as A,b as T,r as Me,a as Es,c as ys}from"./model-benchmark-service-C3taFBGp.js";import{b as Ds}from"./model-benchmark-launcher-CUPxnAZr.js";const se={text:"文本",image:"图片",video:"视频",audio:"音频"},oe={"cross-provider":"跨供应商对比","cross-model":"多模型批测",custom:"自定义测试"},Bs={"cross-provider":"锁定一个模型,横向比较不同供应商的稳定性、速度和效果差异。","cross-model":"锁定一个供应商,一次跑完同类模型,快速筛掉慢和差的型号。",custom:"手动编排供应商与模型组合,适合做定向复测和候选名单对比。"},Vs={speed:"速度优先",cost:"成本优先",balanced:"综合平衡","value-for-money":"性价比"},Ee={draft:"待启动",running:"测试中",completed:"已完成",partial:"部分失败",failed:"全部失败"},he={pending:"待测",running:"测试中",completed:"已完成",failed:"失败"},qs=6,Ss=8,Fe=32e3;function re(r){return r?new Date(r).toLocaleString("zh-CN",{hour12:!1}):""}function Qe(r){return r.length>Fe?`${r.slice(0,Fe-8)}...[截断]`:r}function F(r){return r?r.startsWith("data:")?"[内嵌数据已省略]":Qe(r):""}function Us(r){return r!=null&&r.length?Qe(r.map(l=>F(l)).join(`
|
|
2
2
|
`)):""}function Oe(r){return r?"是":"否"}function be(r){let l=0,n=0;return r.forEach(m=>{typeof m=="number"&&Number.isFinite(m)&&(l+=m,n+=1)}),n>0?Number((l/n).toFixed(2)):null}function Ws(r=new Date){const l=`${r.getFullYear()}${String(r.getMonth()+1).padStart(2,"0")}${String(r.getDate()).padStart(2,"0")}`,n=`${String(r.getHours()).padStart(2,"0")}${String(r.getMinutes()).padStart(2,"0")}${String(r.getSeconds()).padStart(2,"0")}`;return`model-benchmark-history_${l}_${n}.xlsx`}function ye(r){return r!==null}function Is(r){return r.trim().toLowerCase().split(/\s+/).filter(Boolean)}function pe(r,l){const n=Is(r);if(n.length===0)return!0;const m=l.filter(Boolean).join(" ").toLowerCase();return n.every(u=>m.includes(u))}function Cs(r){return r==="text"?"supportsText":r==="image"?"supportsImage":r==="video"?"supportsVideo":"supportsAudio"}function Ge(r,l){const n=Cs(l);return r.filter(m=>m.enabled&&(m.id===Ns||m.capabilities[n]))}function As(){const[r,l]=c.useState(0);return c.useEffect(()=>De.subscribe(()=>{l(n=>n+1)}),[]),r}function Ls(){const[r,l]=c.useState(()=>we.get());return c.useEffect(()=>{const n=m=>{l(m)};return we.addListener(n),()=>{we.removeListener(n)}},[]),r}function ke(r){return!r||r<0?"--":r<1e3?`${r}ms`:`${(r/1e3).toFixed(r>=1e4?1:2)}s`}function Rs(r){const l=new Map;r.entries.forEach(m=>{var ne,b;const u=(ne=m.modelId)==null?void 0:ne.trim(),N=(b=m.modelLabel)==null?void 0:b.trim();u&&N&&!l.has(u)&&l.set(u,{modelId:u,modelLabel:N})});const n=new Map;return l.forEach(({modelLabel:m})=>{n.set(m,(n.get(m)||0)+1)}),Array.from(l.values()).map(({modelId:m,modelLabel:u})=>(n.get(u)||0)>1?`${u} · ${m}`:u)}function ze(r){return r?r.entries.reduce((l,n)=>(l.total+=1,n.status==="completed"&&(l.completed+=1),n.status==="failed"&&(l.failed+=1),n.status==="running"&&(l.running+=1),l),{total:0,completed:0,failed:0,running:0}):{total:0,completed:0,failed:0,running:0}}function M(r,l){const n=De.getState(r).models.filter(u=>u.type===l),m=new Map;return n.forEach(u=>{m.has(u.id)||m.set(u.id,u)}),Array.from(m.values())}function Ye(r){return r.shortLabel||r.label||r.id}function Xe(r){const l=Ye(r);return l===r.id?l:`${l} · ${r.id}`}function Ps(r,l){return`${r}::${l}`}function Gs({}){const{confirm:r,confirmDialog:l}=us(),n=hs(Ds),m=Ls(),u=As(),[N,ne]=c.useState(()=>_.getState()),[b,Be]=c.useState("text"),[f,Ve]=c.useState("cross-provider"),[v,ae]=c.useState(""),[L,ie]=c.useState(""),[O,R]=c.useState([]),[G,z]=c.useState([]),[X,Q]=c.useState([]),[$,Ts]=c.useState(""),[K,$s]=c.useState(!1),[He,qe]=c.useState(A("text").id),[ce,fe]=c.useState(A("text").prompt),[Se,Je]=c.useState(2),[Ne,Ue]=c.useState(!1),[xe,Ze]=c.useState("speed"),[ve,es]=c.useState(""),[le,ss]=c.useState("all"),We=c.useRef(""),q=c.useRef(!1),te=c.useRef(null);c.useRef({}),c.useEffect(()=>{const e=_.observe().subscribe(o=>{c.startTransition(()=>{ne(o)})});return()=>e.unsubscribe()},[]);const w=c.useMemo(()=>Ge(m,b),[b,m]),Y=c.useMemo(()=>new Map(w.map(e=>[e.id,e])),[w]),D=v&&Y.get(v)||null,os=bs.useCallback(async e=>{await r({title:"确认删除会话",description:`确定要删除会话「${e.title||"未命名会话"}」吗?此操作不可撤销。`,confirmText:"删除",cancelText:"取消",danger:!0})&&_.removeSession(e.id)},[r]),S=c.useMemo(()=>v?M(v,b):[],[u,b,v]),ge=c.useMemo(()=>{const e=new Map;return w.forEach(o=>{M(o.id,b).forEach(t=>{e.has(t.id)||e.set(t.id,t)})}),Array.from(e.values())},[w,u,b]),U=c.useMemo(()=>w.flatMap(e=>M(e.id,b).map(o=>T(e.id,e.name,o))),[w,u,b]);c.useEffect(()=>{if(q.current){console.debug("[Benchmark] reconcile profile/prompt: skipped (launchGuard)");return}if(!w.length){ae("");return}const e=A(b);qe(e.id),fe(o=>o===A("text").prompt||o===A("image").prompt||o===A("video").prompt||o===A("audio").prompt?e.prompt:o),(!v||!Y.has(v))&&ae(w[0].id)},[w,b,Y,v]),c.useEffect(()=>{if(q.current){console.debug("[Benchmark] reconcile modelIds: skipped (launchGuard)");return}const e=S.map(o=>o.id);if(e.length===0){R([]);return}R(o=>{const t=Me(o,e,{fallback:"all"});return t!==o&&console.debug("[Benchmark] reconcile modelIds: changed",{from:o,to:t}),t})},[S]),c.useEffect(()=>{if(q.current){console.debug("[Benchmark] reconcile selectedModelId: skipped (launchGuard)");return}const e=ge.map(o=>o.id);if(e.length===0){ie("");return}e.includes(L)||ie(e[0])},[ge,L]);const P=c.useMemo(()=>L?w.map(e=>{const o=M(e.id,b).find(t=>t.id===L);return o?T(e.id,e.name,o):null}).filter(ye):[],[w,b,L]);c.useEffect(()=>{if(q.current){console.debug("[Benchmark] reconcile providerIds: skipped (launchGuard)");return}z(e=>Me(e,P.map(o=>o.profileId),{fallback:"all"}))},[P]),c.useEffect(()=>{if(q.current){console.debug("[Benchmark] reconcile customKeys: skipped (launchGuard)");return}Q(e=>Me(e,U.map(o=>o.selectionKey),{fallback:"first",limit:qs}))},[U]);const p=c.useMemo(()=>N.sessions.find(e=>e.id===N.activeSessionId)||null,[N.activeSessionId,N.sessions]),Ie=c.useMemo(()=>N.sessions.filter(e=>le!=="all"&&e.modality!==le?!1:pe(ve,[e.title,e.prompt,oe[e.compareMode],se[e.modality],...e.entries.flatMap(o=>[o.profileName,o.profileId,o.modelLabel,o.modelId,o.vendor])])),[le,ve,N.sessions]);c.useEffect(()=>{p&&Ze(p.rankingMode)},[p]);const rs=c.useMemo(()=>ze(p),[p]),ns=c.useMemo(()=>p?Es(p.entries,p.rankingMode):[],[p]),W=c.useMemo(()=>{if(f==="cross-provider")return P.filter(e=>G.includes(e.profileId));if(f==="cross-model"){if(!v)return[];const e=Y.get(v);return e?S.filter(o=>O.includes(o.id)).map(o=>T(e.id,e.name,o)):[]}return U.filter(e=>X.includes(e.selectionKey))},[S,f,P,U,Y,X,O,v,G]),Ce=c.useMemo(()=>{if(!p||p.modality!==b||p.compareMode!==f)return!1;const e=W.map(t=>t.selectionKey);if(e.length===0||p.entries.length!==e.length)return!1;const o=new Set(e);return p.entries.every(t=>o.has(t.selectionKey))},[p,f,b,W]),Ae=c.useMemo(()=>p&&Ce?p.entries.map(e=>({key:e.selectionKey,modelLabel:e.modelLabel,profileName:e.profileName,badgeLabel:he[e.status]||he.pending})):W.map(e=>({key:e.selectionKey,modelLabel:e.modelLabel,profileName:e.profileName,badgeLabel:he.pending})),[p,Ce,W]),x=p,H=x?rs:ze(null),Le=x?ns:[];Ae.length,Ae.slice(0,Ss);const E=Le.find(e=>e.status==="completed")||null,Re=c.useMemo(()=>S.filter(e=>{const o=O.includes(e.id);return K&&!o?!1:pe($,[Ye(e),e.id,D==null?void 0:D.name])}),[D==null?void 0:D.name,S,$,O,K]),Pe=c.useMemo(()=>P.filter(e=>{const o=G.includes(e.profileId);return K&&!o?!1:pe($,[e.profileName,e.modelLabel,e.modelId,e.profileId])}),[P,$,G,K]),Te=c.useMemo(()=>U.filter(e=>{const o=X.includes(e.selectionKey);return K&&!o?!1:pe($,[e.profileName,e.modelLabel,e.modelId,e.profileId])}),[U,$,X,K]),me=c.useMemo(()=>f==="cross-model"?Re.map(e=>e.id):f==="cross-provider"?Pe.map(e=>e.profileId):Te.map(e=>e.selectionKey),[f,Re,Pe,Te]);c.useEffect(()=>{if(me.length===0){te.current=null;return}te.current&&me.includes(te.current)||(te.current=me[0])},[me]),c.useEffect(()=>{var Ke;if(!n){console.debug("[Benchmark] useEffect: no initialRequest, skip");return}if(!N.ready){console.debug("[Benchmark] useEffect: storeState not ready, waiting...");return}const e=JSON.stringify(n);if(We.current===e){console.debug("[Benchmark] useEffect: same signature, skip",{signature:e});return}const o=n.modality||"text",t=Ge(m,o),B=n.profileId||"",I=n.modelId||"",C=B?De.getState(B):null,de=B&&I?M(B,o):[],ue=!I||de.some(k=>k.id===I);if(C&&I&&!ue&&(C.status==="idle"||C.status==="loading")){console.debug("[Benchmark] useEffect: waiting for requested model discovery",{signature:e,requestedProfileId:B,requestedModelId:I,status:C.status,discoveryVersion:u});return}q.current=!0,We.current=e;const J=n.compareMode||(n.modelId?"cross-provider":"cross-model");let j=J,i=[];const a=n.profileId&&n.modelId?Ps(n.profileId,n.modelId):"";J==="cross-provider"&&n.modelId&&(i=t.filter(k=>M(k.id,o).some(Z=>Z.id===n.modelId)).map(k=>k.id),i.length<=1&&(j="custom",console.debug("[Benchmark] cross-provider → custom downgrade",{modelId:n.modelId,matchingProviderIds:i}))),console.debug("[Benchmark] useEffect: applying initialRequest",{nextModality:o,nextCompareMode:j,requestedCompareMode:J,profileId:n.profileId,modelId:n.modelId,profileCount:t.length,matchingProviderIds:i});const y=A(o);Be(o),Ve(j),qe(y.id),fe(y.prompt);const d=n.profileId||i[0]||((Ke=t[0])==null?void 0:Ke.id)||"";if(d&&ae(d),j==="cross-provider"&&n.modelId)ie(n.modelId),z(i);else if(j==="cross-model"&&n.modelId)R([n.modelId]);else if(j==="cross-model"&&!n.modelId&&d){const k=M(d,o);R(k.map(Z=>Z.id))}else j==="custom"&&a&&Q([a]);const ms=window.setTimeout(()=>{let k;if(j==="cross-provider"&&n.modelId)k=t.map(h=>{const g=M(h.id,o).find(V=>V.id===n.modelId);return g?T(h.id,h.name,g):null}).filter(ye);else if(j==="cross-model"&&n.modelId){const h=t.find(g=>g.id===d);if(h){const g=M(h.id,o).find(V=>V.id===n.modelId);k=g?[T(h.id,h.name,g)]:[]}else k=[]}else if(j==="custom"){const h=t.find(g=>g.id===(n.profileId||d));if(h&&n.modelId){const g=M(h.id,o).find(V=>V.id===n.modelId);k=g?[T(h.id,h.name,g)]:[]}else k=[]}else{const h=d||v;h?k=M(h,o).map(g=>{const V=t.find(ds=>ds.id===h);return V?T(V.id,V.name,g):null}).filter(ye):k=[]}if(!k.length){console.debug("[Benchmark] setTimeout: no targets built, abort");return}if(console.debug("[Benchmark] setTimeout: creating session",{targetCount:k.length,targets:k.map(h=>`${h.profileName}/${h.modelId}`),autoRun:n.autoRun}),!n.autoRun){requestAnimationFrame(()=>{setTimeout(()=>{q.current=!1,console.debug("[Benchmark] guard released without autoRun")},0)});return}const Z=_.createSession({modality:o,compareMode:j,promptPresetId:y.id,prompt:y.prompt,rankingMode:xe,targets:k,source:"shortcut"});_.runSession(Z.id),requestAnimationFrame(()=>{setTimeout(()=>{q.current=!1,console.debug("[Benchmark] guard released")},0)})},120);return()=>{window.clearTimeout(ms)}},[u,n,m,xe,v,N.ready]);const as=async()=>{if(W.length===0||!ce.trim())return;const e=_.createSession({modality:b,compareMode:f,promptPresetId:He,prompt:ce,rankingMode:xe,targets:W,source:"manual"});await _.runSession(e.id,Se)},is=async()=>{if(Ne)return;const e=N.sessions;if(e.length===0){_e.warning("暂无历史会话可导出");return}Ue(!0);try{const o=await xs(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),t=e.flatMap(i=>i.entries.map(a=>({会话标题:i.title,会话ID:i.id,会话创建时间:re(i.createdAt),模态:se[i.modality],对比方式:oe[i.compareMode],会话状态:Ee[i.status],提示词预设:i.promptPresetId,提示词:F(i.prompt),供应商配置:a.profileName,供应商ID:a.profileId,模型名称:a.modelLabel,模型ID:a.modelId,厂商:a.vendor,选择Key:a.selectionKey,结果ID:a.id,结果状态:he[a.status],开始时间:re(a.startedAt),首响时间:re(a.firstResponseAt),完成时间:re(a.completedAt),首响ms:a.firstResponseMs,总耗时ms:a.totalDurationMs,预估成本:a.estimatedCost,用户评分:a.userScore,已收藏:Oe(a.favorite),已淘汰:Oe(a.rejected),错误摘要:F(a.errorSummary),预览文本:F(a.preview.text),预览链接:F(a.preview.url),预览链接列表:Us(a.preview.urls),预览格式:a.preview.format||"",预览时长:a.preview.duration??"",预览标题:F(a.preview.title)}))),B=new Map;e.forEach(i=>{i.entries.forEach(a=>{const y=`${i.modality}::${a.selectionKey}`,d=B.get(y)||{profileName:a.profileName,profileId:a.profileId,modelLabel:a.modelLabel,modelId:a.modelId,vendor:a.vendor,modality:se[i.modality],selectionKey:a.selectionKey,sessionIds:new Set,count:0,completedCount:0,failedCount:0,runningCount:0,pendingCount:0,favoriteCount:0,rejectedCount:0,firstResponseValues:[],totalDurationValues:[],costValues:[],scoreValues:[],latestAt:0};d.sessionIds.add(i.id),d.count+=1,a.status==="completed"&&(d.completedCount+=1),a.status==="failed"&&(d.failedCount+=1),a.status==="running"&&(d.runningCount+=1),a.status==="pending"&&(d.pendingCount+=1),a.favorite&&(d.favoriteCount+=1),a.rejected&&(d.rejectedCount+=1),typeof a.firstResponseMs=="number"&&d.firstResponseValues.push(a.firstResponseMs),typeof a.totalDurationMs=="number"&&d.totalDurationValues.push(a.totalDurationMs),typeof a.estimatedCost=="number"&&d.costValues.push(a.estimatedCost),typeof a.userScore=="number"&&d.scoreValues.push(a.userScore),d.latestAt=Math.max(d.latestAt,a.completedAt||a.startedAt||i.updatedAt||i.createdAt),B.set(y,d)})});const I=Array.from(B.values()).map(i=>({供应商配置:i.profileName,供应商ID:i.profileId,模型名称:i.modelLabel,模型ID:i.modelId,厂商:i.vendor,模态:i.modality,选择Key:i.selectionKey,测试次数:i.count,涉及会话数:i.sessionIds.size,完成次数:i.completedCount,失败次数:i.failedCount,运行中次数:i.runningCount,待测次数:i.pendingCount,收藏次数:i.favoriteCount,淘汰次数:i.rejectedCount,平均首响ms:be(i.firstResponseValues),最快首响ms:i.firstResponseValues.length>0?Math.min(...i.firstResponseValues):null,平均总耗时ms:be(i.totalDurationValues),最快总耗时ms:i.totalDurationValues.length>0?Math.min(...i.totalDurationValues):null,平均成本:be(i.costValues),平均评分:be(i.scoreValues),最近测试时间:re(i.latestAt)})).sort((i,a)=>{const y=(a.平均评分??-1)-(i.平均评分??-1);if(y!==0)return y;const d=(i.平均首响ms??Number.MAX_SAFE_INTEGER)-(a.平均首响ms??Number.MAX_SAFE_INTEGER);return d!==0?d:(i.平均成本??Number.MAX_SAFE_INTEGER)-(a.平均成本??Number.MAX_SAFE_INTEGER)}),C=o.utils.book_new(),de=o.utils.json_to_sheet(I),ue=o.utils.json_to_sheet(t);de["!cols"]=[{wch:18},{wch:22},{wch:24},{wch:32},{wch:14},{wch:10},{wch:32},{wch:8},{wch:10},{wch:8},{wch:8},{wch:10},{wch:8},{wch:8},{wch:8},{wch:18},{wch:18},{wch:12},{wch:18},{wch:12},{wch:12},{wch:12},{wch:20}],ue["!cols"]=[{wch:28},{wch:24},{wch:20},{wch:10},{wch:14},{wch:10},{wch:18},{wch:60},{wch:18},{wch:22},{wch:24},{wch:32},{wch:14},{wch:32},{wch:24},{wch:10},{wch:20},{wch:20},{wch:20},{wch:12},{wch:12},{wch:12},{wch:10},{wch:8},{wch:8},{wch:36},{wch:60},{wch:60},{wch:80},{wch:12},{wch:10},{wch:28}],o.utils.book_append_sheet(C,de,"模型汇总"),o.utils.book_append_sheet(C,ue,"原始结果");const J=o.write(C,{bookType:"xlsx",type:"array"}),j=new Blob([J],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});vs(j,Ws()),_e.success(`已导出 ${I.length} 个模型结果`)}catch(o){console.error("[ModelBenchmark] Excel export failed:",o),_e.error("导出 Excel 失败,请稍后重试")}finally{Ue(!1)}},cs=e=>{const o=e.preview.rawData?s.jsxDEV("details",{className:"model-benchmark__raw-data",children:[s.jsxDEV("summary",{children:"原始数据 (JSON)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1454,columnNumber:9},this),s.jsxDEV("pre",{children:JSON.stringify(e.preview.rawData,null,2)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1455,columnNumber:9},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1453,columnNumber:7},this):null;return e.modality==="text"?s.jsxDEV("div",{className:"model-benchmark__preview-content",children:[s.jsxDEV("pre",{className:"model-benchmark__preview-text",children:e.preview.text||"暂无返回"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1462,columnNumber:11},this),o]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1461,columnNumber:9},this):e.modality==="image"&&e.preview.url?s.jsxDEV("div",{className:"model-benchmark__preview-content",children:[s.jsxDEV("img",{className:"model-benchmark__preview-image",src:e.preview.url,alt:e.modelLabel,loading:"lazy"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1473,columnNumber:11},this),o]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1472,columnNumber:9},this):e.modality==="video"&&e.preview.url?s.jsxDEV("div",{className:"model-benchmark__preview-content",children:[s.jsxDEV("video",{className:"model-benchmark__preview-video",src:e.preview.url,controls:!0,preload:"metadata"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1487,columnNumber:11},this),o]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1486,columnNumber:9},this):e.modality==="audio"&&e.preview.url?s.jsxDEV("div",{className:"model-benchmark__preview-content",children:[s.jsxDEV("div",{className:"model-benchmark__preview-audio-shell",children:[s.jsxDEV("audio",{controls:!0,preload:"none",src:e.preview.url},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1502,columnNumber:13},this),e.preview.text?s.jsxDEV("pre",{className:"model-benchmark__preview-text",children:e.preview.text},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1504,columnNumber:15},this):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1501,columnNumber:11},this),o]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1500,columnNumber:9},this):s.jsxDEV("div",{className:"model-benchmark__preview-empty",children:[e.status==="failed"?"加载失败":"暂无预览",o]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1515,columnNumber:7},this)};f==="cross-model"?`${(D==null?void 0:D.name)||"未选择"}`:f==="cross-provider"&&`${L||"未选择"}`;const ls=ge.map(e=>({label:Xe(e),value:e.id})),$e=P.map(e=>({label:`${e.profileName} · ${e.modelLabel}`,value:e.profileId})),ts=[{label:"全部",value:"all",icon:s.jsxDEV(gs,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1553,columnNumber:40},this)},{label:"图片",value:"image",icon:s.jsxDEV(js,{size:"14px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1554,columnNumber:42},this)},{label:"视频",value:"video",icon:s.jsxDEV(ws,{size:"14px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1555,columnNumber:42},this)},{label:"音频",value:"audio",icon:s.jsxDEV(_s,{size:14,strokeWidth:1.9},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1559,columnNumber:13},this)},{label:"文本",value:"text",icon:s.jsxDEV(Ms,{size:"14px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1561,columnNumber:41},this)}];return s.jsxDEV("div",{className:"model-benchmark",children:[s.jsxDEV("aside",{className:"model-benchmark__sidebar",children:[s.jsxDEV("div",{className:"model-benchmark__sidebar-head",children:[s.jsxDEV("div",{className:"model-benchmark__panel-title",children:"历史会话"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1568,columnNumber:11},this),s.jsxDEV("button",{type:"button",className:"model-benchmark__ghost-button",onClick:is,disabled:N.sessions.length===0||Ne,children:Ne?"导出中...":"导出 Excel"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1569,columnNumber:11},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1567,columnNumber:9},this),s.jsxDEV("div",{className:"model-benchmark__sidebar-filters",children:[s.jsxDEV(ps,{value:ve,onChange:es,placeholder:"搜索会话 / 模型 / 供应商",prefixIcon:s.jsxDEV(ks,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1583,columnNumber:25},this),size:"small",clearable:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1579,columnNumber:11},this),s.jsxDEV("div",{className:"model-benchmark__sidebar-tabs",children:ts.map(e=>s.jsxDEV(je,{content:e.label,children:s.jsxDEV("button",{type:"button",className:le===e.value?"model-benchmark__sidebar-tab model-benchmark__sidebar-tab--active":"model-benchmark__sidebar-tab",onClick:()=>ss(e.value),"aria-label":e.label,title:e.label,children:e.icon},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1590,columnNumber:17},this)},e.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1589,columnNumber:15},this))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1587,columnNumber:11},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1578,columnNumber:9},this),s.jsxDEV("div",{className:"model-benchmark__session-list",children:Ie.length>0?Ie.map(e=>{const o=Rs(e);return s.jsxDEV("div",{className:"model-benchmark__session-row",children:[s.jsxDEV("button",{type:"button",className:`model-benchmark__session-item ${e.id===N.activeSessionId?"model-benchmark__session-item--active":""}`,onClick:()=>_.setActiveSession(e.id),children:[s.jsxDEV("span",{className:"model-benchmark__session-title",children:e.title},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1624,columnNumber:21},this),s.jsxDEV("span",{className:"model-benchmark__session-models",children:o.length>0?o.join(" / "):"暂无模型信息"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1627,columnNumber:21},this),s.jsxDEV("span",{className:"model-benchmark__session-meta",children:[oe[e.compareMode]," ·"," ",e.entries.length," 个目标 ·"," ",Ee[e.status]]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1632,columnNumber:21},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1613,columnNumber:19},this),s.jsxDEV("button",{type:"button",className:"model-benchmark__session-delete",onClick:()=>void os(e),"aria-label":`删除会话 ${e.title}`,children:s.jsxDEV(je,{content:"删除会话",showArrow:!1,children:s.jsxDEV("span",{children:s.jsxDEV(fs,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1646,columnNumber:25},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1645,columnNumber:23},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1644,columnNumber:21},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1638,columnNumber:19},this)]},e.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1612,columnNumber:17},this)}):s.jsxDEV("div",{className:"model-benchmark__session-empty",children:N.sessions.length===0?"暂无历史会话":"没有匹配的历史会话"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1654,columnNumber:13},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1607,columnNumber:9},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1566,columnNumber:7},this),s.jsxDEV("main",{className:"model-benchmark__main",children:s.jsxDEV("div",{className:"model-benchmark__main-shell",children:[s.jsxDEV("section",{className:"model-benchmark__config-dashboard",children:[s.jsxDEV("div",{className:"model-benchmark__config-row model-benchmark__config-row--top",children:[s.jsxDEV("div",{className:"model-benchmark__modality-tabs",children:Object.keys(se).map(e=>s.jsxDEV("button",{type:"button",className:b===e?"active":"",onClick:()=>Be(e),children:se[e]},e,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1670,columnNumber:21},this))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1667,columnNumber:15},this),s.jsxDEV("div",{className:"model-benchmark__mode-selector",children:Object.entries(oe).map(([e,o])=>s.jsxDEV(je,{content:Bs[e],placement:"top",children:s.jsxDEV("button",{type:"button",className:f===e?"active":"",onClick:()=>Ve(e),children:o},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1690,columnNumber:23},this)},e,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1685,columnNumber:21},this))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1682,columnNumber:15},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1666,columnNumber:13},this),s.jsxDEV("div",{className:"model-benchmark__config-main",children:[s.jsxDEV("div",{className:"model-benchmark__config-controls",children:[s.jsxDEV("div",{className:"model-benchmark__primary-select-row",children:[f==="cross-model"?s.jsxDEV(ee,{className:"model-benchmark__select",label:"目标供应商: ",value:v,onChange:e=>ae(e),options:w.map(e=>({label:e.name,value:e.id}))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1709,columnNumber:21},this):null,f==="cross-provider"?s.jsxDEV(ee,{filterable:!0,className:"model-benchmark__select",label:"对比模型: ",value:L,options:ls,placeholder:"搜索并选择要横向对比的模型",onChange:e=>ie(e||"")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1724,columnNumber:21},this):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1707,columnNumber:17},this),s.jsxDEV("div",{className:"model-benchmark__secondary-select-row",children:[f==="cross-provider"?s.jsxDEV(ee,{multiple:!0,filterable:!0,minCollapsedNum:3,popupProps:{overlayClassName:"model-benchmark__select-popup"},panelTopContent:s.jsxDEV("div",{className:"model-benchmark__select-actions",children:[s.jsxDEV("button",{type:"button",onClick:()=>z($e.map(e=>e.value)),children:"全选"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1749,columnNumber:27},this),s.jsxDEV("button",{type:"button",onClick:()=>z([]),children:"清除"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1761,columnNumber:27},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1748,columnNumber:25},this),className:"model-benchmark__multi-select",label:"参测供应商: ",value:G,options:$e,placeholder:"多选要参与对比的供应商 (已选即为批测队列)",onChange:e=>z(Array.isArray(e)?e:[])},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1740,columnNumber:21},this):null,f==="cross-model"?s.jsxDEV(ee,{multiple:!0,filterable:!0,minCollapsedNum:3,popupProps:{overlayClassName:"model-benchmark__select-popup"},panelTopContent:s.jsxDEV("div",{className:"model-benchmark__select-actions",children:[s.jsxDEV("button",{type:"button",onClick:()=>R(S.map(e=>e.id)),children:"全选"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1792,columnNumber:27},this),s.jsxDEV("button",{type:"button",onClick:()=>R([]),children:"清除"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1802,columnNumber:27},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1791,columnNumber:25},this),className:"model-benchmark__multi-select",label:"参测模型: ",value:O,options:S.map(e=>({label:Xe(e),value:e.id})),placeholder:"多选要测试的模型 (已选即为批测队列)",onChange:e=>R(Array.isArray(e)?e:[])},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1783,columnNumber:21},this):null,f==="custom"?s.jsxDEV(ee,{multiple:!0,filterable:!0,minCollapsedNum:3,popupProps:{overlayClassName:"model-benchmark__select-popup"},panelTopContent:s.jsxDEV("div",{className:"model-benchmark__select-actions",children:[s.jsxDEV("button",{type:"button",onClick:()=>Q(U.map(e=>e.selectionKey)),children:"全选"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1836,columnNumber:27},this),s.jsxDEV("button",{type:"button",onClick:()=>Q([]),children:"清除"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1846,columnNumber:27},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1835,columnNumber:25},this),className:"model-benchmark__multi-select",label:"目标组合: ",value:X,options:U.map(e=>({label:`${e.profileName} · ${e.modelLabel}`,value:e.selectionKey})),placeholder:"手动编排供应商与模型组合",onChange:e=>Q(Array.isArray(e)?e:[])},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1827,columnNumber:21},this):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1738,columnNumber:17},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1706,columnNumber:15},this),s.jsxDEV("div",{className:"model-benchmark__config-actions",children:[s.jsxDEV("div",{className:"model-benchmark__prompt-area",children:s.jsxDEV("textarea",{value:ce,onChange:e=>fe(e.target.value),placeholder:"在此输入测试提示词..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1874,columnNumber:19},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1873,columnNumber:17},this),s.jsxDEV("div",{className:"model-benchmark__action-row-inline",children:[s.jsxDEV("div",{className:"model-benchmark__concurrency",children:[s.jsxDEV("span",{children:"最大并发:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1882,columnNumber:21},this),s.jsxDEV("input",{type:"text",inputMode:"numeric","aria-label":"最大并发",value:Se,onChange:e=>{const o=e.target.value.replace(/\D/g,""),t=Number(o);Je(Math.min(10,Math.max(1,t||1)))}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1883,columnNumber:21},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1881,columnNumber:19},this),s.jsxDEV("button",{type:"button",className:"model-benchmark__primary-button",onClick:as,disabled:!N.ready||W.length===0||!ce.trim(),children:["开始测试 (",W.length,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1900,columnNumber:19},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1880,columnNumber:17},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1872,columnNumber:15},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1705,columnNumber:13},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1665,columnNumber:11},this),s.jsxDEV("div",{className:"model-benchmark__main-head",children:s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"model-benchmark__eyebrow",children:x?oe[x.compareMode]:"Result Board"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1919,columnNumber:15},this),s.jsxDEV("h3",{children:x?x.title:"还没有测试结果"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1924,columnNumber:15},this),x?s.jsxDEV("p",{className:"model-benchmark__main-desc",children:[H.total," 个目标",H.completed>0?`,${H.completed} 成功`:"",H.failed>0?`,${H.failed} 失败`:""," · ",Ee[x.status]," · ",Vs[x.rankingMode]]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1928,columnNumber:17},this):s.jsxDEV("p",{className:"model-benchmark__main-desc",children:"请先在上方明确范围,或点击历史会话查看以往结果。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1942,columnNumber:17},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1918,columnNumber:13},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1917,columnNumber:11},this),x?s.jsxDEV(s.Fragment,{children:[E?s.jsxDEV("section",{className:"model-benchmark__spotlight",children:[s.jsxDEV("div",{className:"model-benchmark__spotlight-copy",children:[s.jsxDEV("div",{className:"model-benchmark__eyebrow",children:"当前第一名"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1954,columnNumber:21},this),s.jsxDEV("h4",{children:x.compareMode==="cross-provider"?E.profileName:E.modelLabel},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1955,columnNumber:21},this),s.jsxDEV("p",{children:[x.compareMode==="cross-provider"?`${E.modelLabel},`:`来自 ${E.profileName},`,"首响 ",ke(E.firstResponseMs),",总耗时 ",ke(E.totalDurationMs)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1960,columnNumber:21},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1953,columnNumber:19},this),s.jsxDEV("div",{className:"model-benchmark__spotlight-meta",children:[E.userScore?s.jsxDEV("span",{children:[E.userScore," 分"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1970,columnNumber:23},this):null,E.favorite?s.jsxDEV("span",{children:"已收藏"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1972,columnNumber:42},this):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1968,columnNumber:19},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1952,columnNumber:17},this):null,s.jsxDEV("div",{className:"model-benchmark__result-grid",children:Le.map((e,o)=>s.jsxDEV("article",{className:`model-benchmark__result-card model-benchmark__result-card--${e.status}`,children:[s.jsxDEV("header",{className:"model-benchmark__result-head",children:[s.jsxDEV("div",{className:"model-benchmark__result-rank",children:["#",o+1]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1984,columnNumber:23},this),s.jsxDEV("div",{className:"model-benchmark__result-heading",children:[s.jsxDEV("div",{className:"model-benchmark__result-title",children:e.modelLabel},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1988,columnNumber:25},this),s.jsxDEV("div",{className:"model-benchmark__result-subtitle",children:e.profileName},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1991,columnNumber:25},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1987,columnNumber:23},this),s.jsxDEV("span",{className:`model-benchmark__status model-benchmark__status--${e.status}`,children:e.status==="completed"?"完成":e.status==="failed"?"失败":e.status==="running"?"测试中":"等待中"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1995,columnNumber:23},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1983,columnNumber:21},this),s.jsxDEV("div",{className:"model-benchmark__result-metrics",children:[s.jsxDEV("span",{children:["首响 ",ke(e.firstResponseMs)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2009,columnNumber:23},this),s.jsxDEV("span",{children:["总耗时 ",ke(e.totalDurationMs)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2010,columnNumber:23},this),s.jsxDEV("span",{children:["成本"," ",e.estimatedCost===null?"未知":`¥${e.estimatedCost.toFixed(4)}`]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2013,columnNumber:23},this),s.jsxDEV("span",{children:["性价比"," ",(()=>{const t=ys(e);return t===null?"—":`${t}/10`})()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2019,columnNumber:23},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2008,columnNumber:21},this),s.jsxDEV("div",{className:"model-benchmark__preview",children:cs(e)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2028,columnNumber:21},this),e.errorSummary?s.jsxDEV("div",{className:"model-benchmark__error",children:e.errorSummary},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2033,columnNumber:23},this):null,s.jsxDEV("div",{className:"model-benchmark__feedback",children:[s.jsxDEV("div",{className:"model-benchmark__score-row",children:[1,2,3,4,5].map(t=>s.jsxDEV("button",{type:"button",className:`model-benchmark__score-chip ${e.userScore===t?"model-benchmark__score-chip--active":""}`,onClick:()=>_.setEntryFeedback(x.id,e.id,{userScore:e.userScore===t?null:t}),children:[t,"分"]},t,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2041,columnNumber:27},this))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2039,columnNumber:23},this),s.jsxDEV("div",{className:"model-benchmark__action-row",children:[s.jsxDEV("button",{type:"button",className:`model-benchmark__ghost-button ${e.favorite?"model-benchmark__ghost-button--active":""}`,onClick:()=>_.setEntryFeedback(x.id,e.id,{favorite:!e.favorite}),children:"收藏"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2065,columnNumber:25},this),s.jsxDEV("button",{type:"button",className:`model-benchmark__ghost-button ${e.rejected?"model-benchmark__ghost-button--danger":""}`,onClick:()=>_.setEntryFeedback(x.id,e.id,{rejected:!e.rejected}),children:"淘汰"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2084,columnNumber:25},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2064,columnNumber:23},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2038,columnNumber:21},this)]},e.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1979,columnNumber:19},this))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1977,columnNumber:15},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1950,columnNumber:13},this):s.jsxDEV("div",{className:"model-benchmark__empty",children:"先在左侧选定“同供应商多模型”或“同模型跨供应商”,把批测目标编满后再开跑。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:2110,columnNumber:13},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1664,columnNumber:9},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1663,columnNumber:7},this),l]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/model-benchmark/ModelBenchmarkWorkbench.tsx",lineNumber:1565,columnNumber:5},this)}export{Gs as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as s,y as n,iP as Me,iI as Be,lt as Fe,lu as Oe,bL as We,iS as Ze,lv as Ge,l3 as Qe,hb as Xe,j8 as Ye,iU as ge,hv as Je,dp as Ke,al as _e,iN as Ee,cV as eo,lw as oo,dM as no,b7 as io,iK as so,bW as ro,aI as ke,hj as ao,hk as to,bD as uo,j4 as lo,bw as je}from"./tool-windows-Bd5iqcJh.js";import{g as J,a as co,b as Y,D as mo,V as po,i as de,j as fo,h as bo,f as No}from"./use-runtime-models-NPMCne8X.js";function wo({controlledValue:i,defaultValue:t,onChange:f}){const[N,c]=s.useState(t),m=i!==void 0,x=m?i:N,u=s.useCallback(l=>{const a=typeof l=="function"?l(x):l;m||c(a),f==null||f(a)},[m,x,f]);return{value:x,setValue:u}}function xo(i){return typeof i!="string"?null:i.trim()||null}function ho(i){var N;const t=(i==null?void 0:i.trim())||"";if(!t)return"供";const f=t.match(/[A-Za-z0-9]+/g);return f!=null&&f[0]?f[0][0].toUpperCase():((N=Array.from(t)[0])==null?void 0:N.toUpperCase())||"供"}const ae=({vendor:i,profileName:t,iconUrl:f,size:N=18,className:c})=>{const m=s.useMemo(()=>xo(f),[f]),[x,u]=s.useState(m);s.useEffect(()=>{u(m)},[m]);const l=co(i),a=t||J(i),V=!!(t||x),D={"--model-source-icon-size":`${N}px`,"--model-source-icon-accent":l.accent,"--model-source-icon-surface":l.surface,"--model-source-icon-border":l.border};return n.jsxDEV("span",{className:`model-source-icon ${V?"model-source-icon--avatar":"model-source-icon--vendor"} ${c||""}`.trim(),style:D,"aria-hidden":"true",title:a,children:V?x?n.jsxDEV("img",{src:x,alt:`${a} 图标`,className:"model-source-icon__image",loading:"lazy",onError:()=>u(null)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/ModelSourceIcon.tsx",lineNumber:78,columnNumber:11},void 0):n.jsxDEV("span",{className:"model-source-icon__text",children:ho(a)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/ModelSourceIcon.tsx",lineNumber:86,columnNumber:11},void 0):n.jsxDEV(Y,{vendor:i,size:Math.max(N-2,12)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/ModelSourceIcon.tsx",lineNumber:91,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/ModelSourceIcon.tsx",lineNumber:66,columnNumber:5},void 0)},vo="ai-input-bar__input";function ye(i){return i.isComposing||i.keyCode===229}const Do=({isOpen:i,setIsOpen:t,disabled:f=!1,openKeys:N=[],onOpenKey:c,trackPosition:m=!0,children:x})=>{const u=s.useRef(null),l=s.useRef(null),[a,V]=s.useState({top:0,left:0,width:0,bottom:0}),D=s.useCallback(h=>{if(!ye(h.nativeEvent)){if(i){if(!c)return;c(h.key)&&h.preventDefault();return}N.includes(h.key)&&(h.preventDefault(),f||t(!0))}},[i,c,N,f,t]);return s.useEffect(()=>{if(!i||!c)return;const h=w=>{var b;if(ye(w))return;const E=w.target,z=!!((b=E==null?void 0:E.classList)!=null&&b.contains(vo));if(w.defaultPrevented&&!z)return;c(w.key)&&w.preventDefault()};return document.addEventListener("keydown",h),()=>document.removeEventListener("keydown",h)},[i,c]),s.useEffect(()=>{if(!i)return;const h=w=>{var z,R;const E=w.target;(z=u.current)!=null&&z.contains(E)||(R=l.current)!=null&&R.contains(E)||t(!1)};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[i,t]),s.useLayoutEffect(()=>{if(!m||!i)return;const h=()=>{if(!u.current)return;const w=u.current.getBoundingClientRect();V({top:w.top,left:w.left,width:w.width,bottom:w.bottom})};return h(),window.addEventListener("resize",h),window.addEventListener("scroll",h,!0),()=>{window.removeEventListener("resize",h),window.removeEventListener("scroll",h,!0)}},[i,m]),n.jsxDEV(n.Fragment,{children:x({isOpen:i,setIsOpen:t,containerRef:u,menuRef:l,portalPosition:a,handleTriggerKeyDown:D})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/KeyboardDropdown.tsx",lineNumber:123,columnNumber:5},void 0)},B=Me;function go(i){return i.sourceProfileId?i.sourceProfileId:B}function _o(i,t){const f=new Map(t.map(u=>[u.id,u])),N=new Set,c=new Map;for(const u of i){const l=go(u),a=`${l}::${u.type}::${u.id}`;if(N.has(a))continue;N.add(a);const V=c.get(l);V?V.push(u):c.set(l,[u])}const m=new Map(mo.map((u,l)=>[u,l])),x=[];for(const[u,l]of c){const a=new Map;for(const w of l){const E=a.get(w.vendor);E?E.push(w):a.set(w.vendor,[w])}const V=Array.from(a.entries()).sort((w,E)=>(m.get(w[0])??999)-(m.get(E[0])??999)).map(([w,E])=>({vendor:w,label:J(w),models:Be(E)})),D=f.get(u),h=u===B;x.push({providerId:u,providerName:h?(D==null?void 0:D.name)||Oe:(D==null?void 0:D.name)||u,providerIconUrl:h?(D==null?void 0:D.iconUrl)||Fe:D==null?void 0:D.iconUrl,vendorCategories:V,totalCount:l.length})}return x.sort((u,l)=>u.providerId===B?-1:l.providerId===B?1:u.providerName.localeCompare(l.providerName)),x}const Eo="aitu:settings:provider-nav";function te(i){return(i||"").toLowerCase().replace(/[\s\-_.:/]+/g,"").trim()}const jo=ke.memo(({model:i})=>{const t=bo(i.sourceProfileId,i.id);return t?n.jsxDEV("span",{className:"model-dropdown__item-price",children:t},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:77,columnNumber:12},void 0):null}),yo=ke.memo(({model:i})=>{const t=No(i.sourceProfileId,i.id);return t!=null&&t.description?n.jsxDEV("div",{className:"model-dropdown__item-desc",children:t.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:86,columnNumber:7},void 0):null});function T(i,t){const f=i.toLowerCase().trim(),N=t.toLowerCase().trim();if(!f||!N)return 0;const c=te(f),m=te(N);if(!m)return 0;if(f===N||c===m)return 120;if(f.startsWith(N)||c.startsWith(m))return 100;if(f.includes(N))return 80;if(c.includes(m))return 70;const x=N.split(/\s+/).filter(Boolean);if(x.length>1&&x.every(l=>{const a=te(l);return f.includes(l)||!!a&&c.includes(a)}))return 60;let u=0;for(const l of c)if(l===m[u]&&(u+=1,u===m.length))return 40;return 0}const Vo=({selectedModel:i,selectedSelectionKey:t,onSelect:f,onSelectModel:N,language:c="zh",models:m=Qe,placement:x="up",header:u,disabled:l=!1,variant:a="minimal",placeholder:V,allowCustomValue:D=!0,isOpen:h,onOpenChange:w,providerProfilesOverride:E,showProviderAction:z=!0})=>{const{setAppState:R}=We(),{value:b,setValue:y}=wo({controlledValue:h,defaultValue:!1,onChange:w}),[M,k]=s.useState(""),[L,A]=s.useState(0),[P,Z]=s.useState(null),[S,$]=s.useState(null),{contextMenu:Ve,open:ue,close:I}=Ze(),K=s.useRef(null),ee=s.useRef(null),G=s.useRef(null),Ue=Ge(),H=E||Ue,le=s.useMemo(()=>new Map(H.map(e=>[e.id,e])),[H]),ce=s.useMemo(()=>new Map(m.map((e,o)=>[e.selectionKey||e.id,o])),[m]),Q=s.useCallback(e=>e.selectionKey||e.id,[]),me=s.useCallback(e=>e.sourceProfileId&&le.get(e.sourceProfileId)||null,[le]),g=s.useMemo(()=>_o(m,H),[m,H]),pe=s.useMemo(()=>new Map(g.map(e=>[e.providerId,e.providerName])),[g]),oe=s.useMemo(()=>new Map(g.map(e=>[e.providerId,e.totalCount])),[g]),ne=s.useCallback(e=>pe.get(e.sourceProfileId||B)||e.sourceProfileName||J(e.vendor),[pe]),C=s.useMemo(()=>g.find(e=>e.providerId===P)||g[0]||null,[g,P]),X=s.useMemo(()=>C&&(C.vendorCategories.find(e=>e.vendor===S)||C.vendorCategories[0])||null,[C,S]);s.useEffect(()=>{if(b&&G.current){const e=G.current.querySelector(`[data-model-index="${L}"]`);if(e){const o=G.current,r=e.offsetTop,v=e.offsetHeight,j=o.scrollTop,W=o.offsetHeight,p=4;L===0?o.scrollTop=0:r-p<j?o.scrollTop=r-p:r+v>j+W&&(o.scrollTop=r+v-W+p)}}},[L,b]);const d=m.find(e=>Q(e)===(t||i))||Xe(i),_=s.useMemo(()=>d?me(d):null,[d,me]),Ie=(d==null?void 0:d.shortCode)||"img",F=!!M.trim(),O=s.useMemo(()=>d!=null&&d.sourceProfileId?d.sourceProfileId:t!=null&&t.includes("::")?t.split("::")[0]:B,[d,t]),q=(d==null?void 0:d.vendor)??null;s.useEffect(()=>{a==="form"&&!b&&k((d==null?void 0:d.label)||i)},[i,d,a,b]);const fe=s.useMemo(()=>{const e=M.trim();return e?m.map(o=>{const r=Math.max(T(o.id,e),T(o.label,e),T(o.shortLabel||"",e),T(o.shortCode||"",e),T(o.description||"",e),T(ne(o),e),T(J(o.vendor),e));return{model:o,score:r}}).filter(({score:o})=>o>0).sort((o,r)=>r.score-o.score||Ye(o.model,r.model,{fallbackOrderMap:ce})):[]},[ne,m,M,ce]),be=s.useMemo(()=>fe.map(({model:e})=>e),[fe]),U=s.useMemo(()=>F?be:(X==null?void 0:X.models)||[],[F,be,X]),Ce=s.useMemo(()=>g.map(e=>{var o,r;return{id:e.providerId,label:e.providerName,count:e.totalCount,icon:e.providerIconUrl?n.jsxDEV(ae,{vendor:((o=e.vendorCategories[0])==null?void 0:o.vendor)||"OTHER",profileName:e.providerName,iconUrl:e.providerIconUrl,size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:409,columnNumber:11},void 0):n.jsxDEV(Y,{vendor:((r=e.vendorCategories[0])==null?void 0:r.vendor)||"OTHER",size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:418,columnNumber:11},void 0)}}),[g]),qe=s.useMemo(()=>((C==null?void 0:C.vendorCategories)||[]).map(e=>({id:e.vendor,label:e.label,count:e.models.length,icon:n.jsxDEV(Y,{vendor:e.vendor,size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:436,columnNumber:15},void 0)})),[C]),Pe=s.useCallback(e=>{var r;Z(e),k("");const o=g.find(v=>v.providerId===e);$(((r=o==null?void 0:o.vendorCategories[0])==null?void 0:r.vendor)??null),A(0)},[g]),Te=s.useCallback(e=>{$(e),A(0)},[]),ze=s.useCallback((e,o)=>{e.preventDefault(),e.stopPropagation(),ue(e,{modelId:o})},[ue]),Re=s.useCallback(()=>{const e=H.filter(j=>j.id!==Me),o=e[e.length-1]||null,r=o&&oe.get(o.id)||0,v=o&&r===0?{action:"select",profileId:o.id}:e.some(j=>j.id===ge&&(oe.get(j.id)||0)===0)?{action:"select",profileId:ge}:{action:"create"};window.__aituPendingProviderNavigationIntent=v,window.dispatchEvent(new CustomEvent(Eo,{detail:v})),y(!1),R(j=>({...j,openSettings:!0}))},[H,oe,R,y]);s.useEffect(()=>{const e=t||i,o=U.findIndex(r=>Q(r)===e);A(o>=0?o:0)},[U,i,t,Q]),s.useEffect(()=>{var o;if(F)return;if(!P||!g.some(r=>r.providerId===P)){const r=g.find(v=>v.providerId===O);if(Z((r==null?void 0:r.providerId)||((o=g[0])==null?void 0:o.providerId)||null),q){$(q);return}}const e=g.find(r=>r.providerId===P)||g[0]||null;if(e){const r=e.vendorCategories.map(v=>v.vendor);(!S||!r.includes(S))&&$(r[0]??null)}},[g,P,S,F,O,q]),s.useEffect(()=>{b||I()},[b,I]);const Ne=s.useCallback(e=>{if(e==null||e.preventDefault(),l)return;const o=!b;o&&(Z(O),q&&$(q)),o?k(""):a==="form"&&k((d==null?void 0:d.label)||i),y(o)},[l,b,y,a,d,i,O,q]),ie=s.useCallback(e=>{I(),f(e.id,Je(e.sourceProfileId||null,e.id)),N==null||N(e),y(!1),k(a==="form"?e.label||e.id:"")},[I,f,N,y,a]),we=s.useCallback(async e=>{try{await Ke(e),_e.success(c==="zh"?"模型名已复制":"Model name copied"),I()}catch(o){console.error("[ModelDropdown] failed to copy model id",o),_e.error(c==="zh"?"复制失败":"Copy failed")}},[I,c]),xe=s.useCallback(e=>{var r;const o=m.find(v=>v.id===e);return(r=Ee.getModelPrice(o==null?void 0:o.sourceProfileId,e))==null?void 0:r.docsUrl},[m]),he=s.useCallback(e=>{var r;const o=m.find(v=>v.id===e);if(o!=null&&o.description)return o.description;if(o!=null&&o.sourceProfileId)return(r=Ee.getModelPrice(o.sourceProfileId,e))==null?void 0:r.description},[m]),Le=s.useCallback(({modelId:e})=>{const o=he(e),r=[{key:"model-id",label:e,disabled:!0}];o&&r.push({key:"model-desc",label:n.jsxDEV("span",{style:{fontSize:11,color:"var(--td-text-color-secondary)",whiteSpace:"normal",lineHeight:1.4,display:"block",maxWidth:260},children:o.length>80?o.slice(0,80)+"…":o},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:653,columnNumber:13},void 0),disabled:!0}),r.push({key:"divider-1",type:"divider"},{key:"copy-model-id",label:c==="zh"?"复制模型名":"Copy model name",icon:n.jsxDEV(eo,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:665,columnNumber:17},void 0),onSelect:({modelId:j})=>we(j)});const v=xe(e);return v&&r.push({key:"open-docs",label:c==="zh"?"查看模型文档":"View model docs",icon:n.jsxDEV(oo,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:674,columnNumber:17},void 0),onSelect:()=>window.open(v,"_blank","noopener")}),r},[he,xe,we,c]),Ae=s.useCallback(e=>{if(e==="Escape")return y(!1),a==="form"&&k((d==null?void 0:d.label)||i),!0;if(e==="ArrowDown")return U.length>0&&A(o=>o<U.length-1?o+1:0),!0;if(e==="ArrowUp")return U.length>0&&A(o=>o>0?o-1:U.length-1),!0;if(e==="Enter"||e==="Tab"){const o=U[L];if(o)return ie(o),!0;if(a==="form"&&D&&M.trim())return f(M.trim()),y(!1),!0}return!1},[U,L,ie,a,D,d,f,M,i,y]);s.useEffect(()=>{var e,o;b&&a==="form"&&((e=K.current)==null||e.focus(),(o=K.current)==null||o.select())},[b,a]),s.useEffect(()=>{var e;b&&a==="minimal"&&((e=ee.current)==null||e.focus())},[b,a]),s.useEffect(()=>{!b&&a==="minimal"&&M&&k("")},[b,M,a]);const Se=e=>a==="minimal"?n.jsxDEV("button",{className:`model-dropdown__trigger model-dropdown__trigger--minimal ${b?"model-dropdown__trigger--open":""}`,onMouseDown:Ne,onKeyDown:e,type:"button","aria-haspopup":"listbox","aria-expanded":b,"aria-label":`${(d==null?void 0:d.shortLabel)||(d==null?void 0:d.label)||i} (↑↓ Tab)`,disabled:l,children:[d?n.jsxDEV(ae,{vendor:d.vendor,profileName:(_==null?void 0:_.name)||d.sourceProfileName,iconUrl:_==null?void 0:_.iconUrl,size:15,className:"model-dropdown__trigger-source-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:781,columnNumber:13},void 0):null,n.jsxDEV("span",{className:"model-dropdown__at",children:"#"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:791,columnNumber:11},void 0),n.jsxDEV("span",{className:"model-dropdown__code",children:Ie},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:792,columnNumber:11},void 0),n.jsxDEV(de,{modelId:i,profileId:(_==null?void 0:_.id)||(d==null?void 0:d.sourceProfileId)||null},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:793,columnNumber:11},void 0),n.jsxDEV(je,{size:14,className:`model-dropdown__chevron ${b?"model-dropdown__chevron--open":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:797,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:766,columnNumber:9},void 0):n.jsxDEV("div",{className:`model-dropdown__trigger model-dropdown__trigger--form ${b?"model-dropdown__trigger--open":""}`,onMouseDown:o=>{o.preventDefault(),b||(y(!0),k(""),Z(O),q&&$(q))},children:[n.jsxDEV("div",{className:"model-dropdown__form-content",children:[d?n.jsxDEV(ae,{vendor:d.vendor,profileName:(_==null?void 0:_.name)||d.sourceProfileName,iconUrl:_==null?void 0:_.iconUrl,size:18,className:"model-dropdown__trigger-source-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:826,columnNumber:13},void 0):null,n.jsxDEV("input",{ref:K,type:"text",className:"model-dropdown__form-input",value:M,onChange:o=>{k(o.target.value),b||y(!0)},placeholder:V||(c==="zh"?"选择或输入模型":"Select or enter model"),disabled:l},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:836,columnNumber:11},void 0),n.jsxDEV(de,{modelId:i,profileId:(_==null?void 0:_.id)||(d==null?void 0:d.sourceProfileId)||null},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:851,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:824,columnNumber:9},void 0),n.jsxDEV(je,{size:16,className:`model-dropdown__chevron ${b?"model-dropdown__chevron--open":""}`,onMouseDown:o=>{o.preventDefault(),o.stopPropagation(),Ne()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:856,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:808,columnNumber:7},void 0);return n.jsxDEV(Do,{isOpen:b,setIsOpen:y,disabled:l,openKeys:["Enter"," "],onOpenKey:Ae,trackPosition:a==="form"||x==="down"||x==="up",children:({containerRef:e,menuRef:o,portalPosition:r,handleTriggerKeyDown:v})=>{const j=a==="form"||x==="down"||x==="up",W=n.jsxDEV("div",{className:`model-dropdown__menu model-dropdown__menu--${x} ${a==="form"?"model-dropdown__menu--form":""} ${j?"model-dropdown__menu--portalled":""} ${io}`,ref:o,role:"listbox","aria-label":c==="zh"?"选择模型":"Select Model",onMouseDown:p=>p.stopPropagation(),onClick:p=>p.stopPropagation(),style:j?{position:"fixed",zIndex:no.DROPDOWN_PORTAL,left:r.left,width:a==="form"?Math.max(r.width,g.length>1?620:520):"auto",top:x==="down"?r.bottom+4:"auto",bottom:x==="up"?window.innerHeight-r.top+4:"auto",visibility:r.width===0?"hidden":"visible"}:{zIndex:1e3},children:[a==="minimal"?n.jsxDEV("div",{className:"model-dropdown__toolbar",children:[u?n.jsxDEV("div",{className:"model-dropdown__toolbar-title",children:u},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:929,columnNumber:19},void 0):null,n.jsxDEV("div",{className:"model-dropdown__search",children:n.jsxDEV("div",{className:"model-dropdown__search-input-wrapper",children:[n.jsxDEV(so,{className:"model-dropdown__search-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:933,columnNumber:21},void 0),n.jsxDEV("input",{ref:ee,type:"text",className:"model-dropdown__search-input",value:M,onChange:p=>k(p.target.value),placeholder:c==="zh"?"搜索模型名 / 展示名 / 供应商":"Search model id / label / provider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:934,columnNumber:21},void 0),M?n.jsxDEV("button",{type:"button",className:"model-dropdown__search-clear",onClick:()=>{var p;k(""),(p=ee.current)==null||p.focus()},"aria-label":c==="zh"?"清空搜索":"Clear search",children:n.jsxDEV(ro,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:956,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:947,columnNumber:23},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:932,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:931,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:927,columnNumber:15},void 0):u?n.jsxDEV("div",{className:"model-dropdown__header",children:u},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:963,columnNumber:15},void 0):null,n.jsxDEV(po,{tabs:Ce,activeTab:P,onTabChange:Pe,middleTabs:qe,activeMiddleTab:S,onMiddleTabChange:Te,searchQuery:M,compact:!0,tabsFooter:z?n.jsxDEV("button",{type:"button",className:"model-dropdown__provider-action",onClick:Re,"aria-label":c==="zh"?"新增供应商或打开供应商设置":"Add provider or open provider settings",children:n.jsxDEV(to,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:987,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:977,columnNumber:19},void 0):null,children:n.jsxDEV("div",{className:"model-dropdown__list-pane",children:n.jsxDEV("div",{className:"model-dropdown__list",ref:G,onScroll:I,children:U.length>0?U.map((p,se)=>{var De;const ve=Q(p),re=ve===(t||i),$e=se===L;return n.jsxDEV("div",{"data-model-index":se,className:`model-dropdown__item ${re?"model-dropdown__item--selected":""} ${$e?"model-dropdown__item--highlighted":""}`,onClick:()=>ie(p),onMouseEnter:()=>{A(se)},onContextMenu:He=>ze(He,p.id),role:"option","aria-selected":re,children:[n.jsxDEV("div",{className:"model-dropdown__item-content",children:[n.jsxDEV("div",{className:"model-dropdown__item-name",children:[n.jsxDEV("span",{className:"model-dropdown__item-source-icon",children:n.jsxDEV(Y,{vendor:p.vendor,size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1028,columnNumber:33},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1027,columnNumber:31},void 0),n.jsxDEV("span",{className:"model-dropdown__item-code",children:["#",p.shortCode||p.id]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1033,columnNumber:31},void 0),n.jsxDEV("span",{className:"model-dropdown__item-label",children:p.shortLabel||p.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1036,columnNumber:31},void 0),F?n.jsxDEV("span",{className:"model-dropdown__item-group-tag",children:ne(p)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1040,columnNumber:33},void 0):null,((De=p.tags)==null?void 0:De.includes("new"))&&n.jsxDEV("span",{className:"model-dropdown__item-new",children:"NEW"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1045,columnNumber:33},void 0),n.jsxDEV(de,{modelId:p.id,profileId:p.sourceProfileId||null},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1049,columnNumber:31},void 0),n.jsxDEV(fo,{modelId:p.id},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1053,columnNumber:31},void 0),n.jsxDEV(jo,{model:p},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1054,columnNumber:31},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1026,columnNumber:29},void 0),p.description?n.jsxDEV("div",{className:"model-dropdown__item-desc",children:p.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1057,columnNumber:31},void 0):n.jsxDEV(yo,{model:p},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1061,columnNumber:31},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1025,columnNumber:27},void 0),re&&n.jsxDEV(ao,{size:16,className:"model-dropdown__item-check"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1065,columnNumber:29},void 0)]},ve,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1005,columnNumber:25},void 0)}):n.jsxDEV("div",{className:"model-dropdown__empty",children:c==="zh"?"未找到匹配的模型":"No matching models"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1074,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:993,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:992,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:966,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:888,columnNumber:11},void 0);return n.jsxDEV("div",{className:`model-dropdown model-dropdown--variant-${a} ${l?"model-dropdown--disabled":""}`,ref:e,"data-testid":"model-selector",children:[Se(v),b&&(j?uo.createPortal(W,document.body):W),b?n.jsxDEV(lo,{state:Ve,items:Le,onClose:I},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1097,columnNumber:15},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1087,columnNumber:11},void 0)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:873,columnNumber:5},void 0)};export{Do as K,Vo as M,wo as u};
|
|
1
|
+
import{r as s,y as n,iP as Me,iI as Be,lt as Fe,lu as Oe,bL as We,iS as Ze,lv as Ge,l3 as Qe,hb as Xe,j8 as Ye,iU as ge,hv as Je,dp as Ke,al as _e,iN as Ee,cV as eo,lw as oo,dM as no,b7 as io,iK as so,bW as ro,aI as ke,hj as ao,hk as to,bD as uo,j4 as lo,bw as je}from"./tool-windows-BTXOQvEU.js";import{g as J,a as co,b as Y,D as mo,V as po,i as de,j as fo,h as bo,f as No}from"./use-runtime-models-C_YMetmY.js";function wo({controlledValue:i,defaultValue:t,onChange:f}){const[N,c]=s.useState(t),m=i!==void 0,x=m?i:N,u=s.useCallback(l=>{const a=typeof l=="function"?l(x):l;m||c(a),f==null||f(a)},[m,x,f]);return{value:x,setValue:u}}function xo(i){return typeof i!="string"?null:i.trim()||null}function ho(i){var N;const t=(i==null?void 0:i.trim())||"";if(!t)return"供";const f=t.match(/[A-Za-z0-9]+/g);return f!=null&&f[0]?f[0][0].toUpperCase():((N=Array.from(t)[0])==null?void 0:N.toUpperCase())||"供"}const ae=({vendor:i,profileName:t,iconUrl:f,size:N=18,className:c})=>{const m=s.useMemo(()=>xo(f),[f]),[x,u]=s.useState(m);s.useEffect(()=>{u(m)},[m]);const l=co(i),a=t||J(i),V=!!(t||x),D={"--model-source-icon-size":`${N}px`,"--model-source-icon-accent":l.accent,"--model-source-icon-surface":l.surface,"--model-source-icon-border":l.border};return n.jsxDEV("span",{className:`model-source-icon ${V?"model-source-icon--avatar":"model-source-icon--vendor"} ${c||""}`.trim(),style:D,"aria-hidden":"true",title:a,children:V?x?n.jsxDEV("img",{src:x,alt:`${a} 图标`,className:"model-source-icon__image",loading:"lazy",onError:()=>u(null)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/ModelSourceIcon.tsx",lineNumber:78,columnNumber:11},void 0):n.jsxDEV("span",{className:"model-source-icon__text",children:ho(a)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/ModelSourceIcon.tsx",lineNumber:86,columnNumber:11},void 0):n.jsxDEV(Y,{vendor:i,size:Math.max(N-2,12)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/ModelSourceIcon.tsx",lineNumber:91,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/ModelSourceIcon.tsx",lineNumber:66,columnNumber:5},void 0)},vo="ai-input-bar__input";function ye(i){return i.isComposing||i.keyCode===229}const Do=({isOpen:i,setIsOpen:t,disabled:f=!1,openKeys:N=[],onOpenKey:c,trackPosition:m=!0,children:x})=>{const u=s.useRef(null),l=s.useRef(null),[a,V]=s.useState({top:0,left:0,width:0,bottom:0}),D=s.useCallback(h=>{if(!ye(h.nativeEvent)){if(i){if(!c)return;c(h.key)&&h.preventDefault();return}N.includes(h.key)&&(h.preventDefault(),f||t(!0))}},[i,c,N,f,t]);return s.useEffect(()=>{if(!i||!c)return;const h=w=>{var b;if(ye(w))return;const E=w.target,z=!!((b=E==null?void 0:E.classList)!=null&&b.contains(vo));if(w.defaultPrevented&&!z)return;c(w.key)&&w.preventDefault()};return document.addEventListener("keydown",h),()=>document.removeEventListener("keydown",h)},[i,c]),s.useEffect(()=>{if(!i)return;const h=w=>{var z,R;const E=w.target;(z=u.current)!=null&&z.contains(E)||(R=l.current)!=null&&R.contains(E)||t(!1)};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[i,t]),s.useLayoutEffect(()=>{if(!m||!i)return;const h=()=>{if(!u.current)return;const w=u.current.getBoundingClientRect();V({top:w.top,left:w.left,width:w.width,bottom:w.bottom})};return h(),window.addEventListener("resize",h),window.addEventListener("scroll",h,!0),()=>{window.removeEventListener("resize",h),window.removeEventListener("scroll",h,!0)}},[i,m]),n.jsxDEV(n.Fragment,{children:x({isOpen:i,setIsOpen:t,containerRef:u,menuRef:l,portalPosition:a,handleTriggerKeyDown:D})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/KeyboardDropdown.tsx",lineNumber:123,columnNumber:5},void 0)},B=Me;function go(i){return i.sourceProfileId?i.sourceProfileId:B}function _o(i,t){const f=new Map(t.map(u=>[u.id,u])),N=new Set,c=new Map;for(const u of i){const l=go(u),a=`${l}::${u.type}::${u.id}`;if(N.has(a))continue;N.add(a);const V=c.get(l);V?V.push(u):c.set(l,[u])}const m=new Map(mo.map((u,l)=>[u,l])),x=[];for(const[u,l]of c){const a=new Map;for(const w of l){const E=a.get(w.vendor);E?E.push(w):a.set(w.vendor,[w])}const V=Array.from(a.entries()).sort((w,E)=>(m.get(w[0])??999)-(m.get(E[0])??999)).map(([w,E])=>({vendor:w,label:J(w),models:Be(E)})),D=f.get(u),h=u===B;x.push({providerId:u,providerName:h?(D==null?void 0:D.name)||Oe:(D==null?void 0:D.name)||u,providerIconUrl:h?(D==null?void 0:D.iconUrl)||Fe:D==null?void 0:D.iconUrl,vendorCategories:V,totalCount:l.length})}return x.sort((u,l)=>u.providerId===B?-1:l.providerId===B?1:u.providerName.localeCompare(l.providerName)),x}const Eo="aitu:settings:provider-nav";function te(i){return(i||"").toLowerCase().replace(/[\s\-_.:/]+/g,"").trim()}const jo=ke.memo(({model:i})=>{const t=bo(i.sourceProfileId,i.id);return t?n.jsxDEV("span",{className:"model-dropdown__item-price",children:t},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:77,columnNumber:12},void 0):null}),yo=ke.memo(({model:i})=>{const t=No(i.sourceProfileId,i.id);return t!=null&&t.description?n.jsxDEV("div",{className:"model-dropdown__item-desc",children:t.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:86,columnNumber:7},void 0):null});function T(i,t){const f=i.toLowerCase().trim(),N=t.toLowerCase().trim();if(!f||!N)return 0;const c=te(f),m=te(N);if(!m)return 0;if(f===N||c===m)return 120;if(f.startsWith(N)||c.startsWith(m))return 100;if(f.includes(N))return 80;if(c.includes(m))return 70;const x=N.split(/\s+/).filter(Boolean);if(x.length>1&&x.every(l=>{const a=te(l);return f.includes(l)||!!a&&c.includes(a)}))return 60;let u=0;for(const l of c)if(l===m[u]&&(u+=1,u===m.length))return 40;return 0}const Vo=({selectedModel:i,selectedSelectionKey:t,onSelect:f,onSelectModel:N,language:c="zh",models:m=Qe,placement:x="up",header:u,disabled:l=!1,variant:a="minimal",placeholder:V,allowCustomValue:D=!0,isOpen:h,onOpenChange:w,providerProfilesOverride:E,showProviderAction:z=!0})=>{const{setAppState:R}=We(),{value:b,setValue:y}=wo({controlledValue:h,defaultValue:!1,onChange:w}),[M,k]=s.useState(""),[L,A]=s.useState(0),[P,Z]=s.useState(null),[S,$]=s.useState(null),{contextMenu:Ve,open:ue,close:I}=Ze(),K=s.useRef(null),ee=s.useRef(null),G=s.useRef(null),Ue=Ge(),H=E||Ue,le=s.useMemo(()=>new Map(H.map(e=>[e.id,e])),[H]),ce=s.useMemo(()=>new Map(m.map((e,o)=>[e.selectionKey||e.id,o])),[m]),Q=s.useCallback(e=>e.selectionKey||e.id,[]),me=s.useCallback(e=>e.sourceProfileId&&le.get(e.sourceProfileId)||null,[le]),g=s.useMemo(()=>_o(m,H),[m,H]),pe=s.useMemo(()=>new Map(g.map(e=>[e.providerId,e.providerName])),[g]),oe=s.useMemo(()=>new Map(g.map(e=>[e.providerId,e.totalCount])),[g]),ne=s.useCallback(e=>pe.get(e.sourceProfileId||B)||e.sourceProfileName||J(e.vendor),[pe]),C=s.useMemo(()=>g.find(e=>e.providerId===P)||g[0]||null,[g,P]),X=s.useMemo(()=>C&&(C.vendorCategories.find(e=>e.vendor===S)||C.vendorCategories[0])||null,[C,S]);s.useEffect(()=>{if(b&&G.current){const e=G.current.querySelector(`[data-model-index="${L}"]`);if(e){const o=G.current,r=e.offsetTop,v=e.offsetHeight,j=o.scrollTop,W=o.offsetHeight,p=4;L===0?o.scrollTop=0:r-p<j?o.scrollTop=r-p:r+v>j+W&&(o.scrollTop=r+v-W+p)}}},[L,b]);const d=m.find(e=>Q(e)===(t||i))||Xe(i),_=s.useMemo(()=>d?me(d):null,[d,me]),Ie=(d==null?void 0:d.shortCode)||"img",F=!!M.trim(),O=s.useMemo(()=>d!=null&&d.sourceProfileId?d.sourceProfileId:t!=null&&t.includes("::")?t.split("::")[0]:B,[d,t]),q=(d==null?void 0:d.vendor)??null;s.useEffect(()=>{a==="form"&&!b&&k((d==null?void 0:d.label)||i)},[i,d,a,b]);const fe=s.useMemo(()=>{const e=M.trim();return e?m.map(o=>{const r=Math.max(T(o.id,e),T(o.label,e),T(o.shortLabel||"",e),T(o.shortCode||"",e),T(o.description||"",e),T(ne(o),e),T(J(o.vendor),e));return{model:o,score:r}}).filter(({score:o})=>o>0).sort((o,r)=>r.score-o.score||Ye(o.model,r.model,{fallbackOrderMap:ce})):[]},[ne,m,M,ce]),be=s.useMemo(()=>fe.map(({model:e})=>e),[fe]),U=s.useMemo(()=>F?be:(X==null?void 0:X.models)||[],[F,be,X]),Ce=s.useMemo(()=>g.map(e=>{var o,r;return{id:e.providerId,label:e.providerName,count:e.totalCount,icon:e.providerIconUrl?n.jsxDEV(ae,{vendor:((o=e.vendorCategories[0])==null?void 0:o.vendor)||"OTHER",profileName:e.providerName,iconUrl:e.providerIconUrl,size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:409,columnNumber:11},void 0):n.jsxDEV(Y,{vendor:((r=e.vendorCategories[0])==null?void 0:r.vendor)||"OTHER",size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:418,columnNumber:11},void 0)}}),[g]),qe=s.useMemo(()=>((C==null?void 0:C.vendorCategories)||[]).map(e=>({id:e.vendor,label:e.label,count:e.models.length,icon:n.jsxDEV(Y,{vendor:e.vendor,size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:436,columnNumber:15},void 0)})),[C]),Pe=s.useCallback(e=>{var r;Z(e),k("");const o=g.find(v=>v.providerId===e);$(((r=o==null?void 0:o.vendorCategories[0])==null?void 0:r.vendor)??null),A(0)},[g]),Te=s.useCallback(e=>{$(e),A(0)},[]),ze=s.useCallback((e,o)=>{e.preventDefault(),e.stopPropagation(),ue(e,{modelId:o})},[ue]),Re=s.useCallback(()=>{const e=H.filter(j=>j.id!==Me),o=e[e.length-1]||null,r=o&&oe.get(o.id)||0,v=o&&r===0?{action:"select",profileId:o.id}:e.some(j=>j.id===ge&&(oe.get(j.id)||0)===0)?{action:"select",profileId:ge}:{action:"create"};window.__aituPendingProviderNavigationIntent=v,window.dispatchEvent(new CustomEvent(Eo,{detail:v})),y(!1),R(j=>({...j,openSettings:!0}))},[H,oe,R,y]);s.useEffect(()=>{const e=t||i,o=U.findIndex(r=>Q(r)===e);A(o>=0?o:0)},[U,i,t,Q]),s.useEffect(()=>{var o;if(F)return;if(!P||!g.some(r=>r.providerId===P)){const r=g.find(v=>v.providerId===O);if(Z((r==null?void 0:r.providerId)||((o=g[0])==null?void 0:o.providerId)||null),q){$(q);return}}const e=g.find(r=>r.providerId===P)||g[0]||null;if(e){const r=e.vendorCategories.map(v=>v.vendor);(!S||!r.includes(S))&&$(r[0]??null)}},[g,P,S,F,O,q]),s.useEffect(()=>{b||I()},[b,I]);const Ne=s.useCallback(e=>{if(e==null||e.preventDefault(),l)return;const o=!b;o&&(Z(O),q&&$(q)),o?k(""):a==="form"&&k((d==null?void 0:d.label)||i),y(o)},[l,b,y,a,d,i,O,q]),ie=s.useCallback(e=>{I(),f(e.id,Je(e.sourceProfileId||null,e.id)),N==null||N(e),y(!1),k(a==="form"?e.label||e.id:"")},[I,f,N,y,a]),we=s.useCallback(async e=>{try{await Ke(e),_e.success(c==="zh"?"模型名已复制":"Model name copied"),I()}catch(o){console.error("[ModelDropdown] failed to copy model id",o),_e.error(c==="zh"?"复制失败":"Copy failed")}},[I,c]),xe=s.useCallback(e=>{var r;const o=m.find(v=>v.id===e);return(r=Ee.getModelPrice(o==null?void 0:o.sourceProfileId,e))==null?void 0:r.docsUrl},[m]),he=s.useCallback(e=>{var r;const o=m.find(v=>v.id===e);if(o!=null&&o.description)return o.description;if(o!=null&&o.sourceProfileId)return(r=Ee.getModelPrice(o.sourceProfileId,e))==null?void 0:r.description},[m]),Le=s.useCallback(({modelId:e})=>{const o=he(e),r=[{key:"model-id",label:e,disabled:!0}];o&&r.push({key:"model-desc",label:n.jsxDEV("span",{style:{fontSize:11,color:"var(--td-text-color-secondary)",whiteSpace:"normal",lineHeight:1.4,display:"block",maxWidth:260},children:o.length>80?o.slice(0,80)+"…":o},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:653,columnNumber:13},void 0),disabled:!0}),r.push({key:"divider-1",type:"divider"},{key:"copy-model-id",label:c==="zh"?"复制模型名":"Copy model name",icon:n.jsxDEV(eo,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:665,columnNumber:17},void 0),onSelect:({modelId:j})=>we(j)});const v=xe(e);return v&&r.push({key:"open-docs",label:c==="zh"?"查看模型文档":"View model docs",icon:n.jsxDEV(oo,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:674,columnNumber:17},void 0),onSelect:()=>window.open(v,"_blank","noopener")}),r},[he,xe,we,c]),Ae=s.useCallback(e=>{if(e==="Escape")return y(!1),a==="form"&&k((d==null?void 0:d.label)||i),!0;if(e==="ArrowDown")return U.length>0&&A(o=>o<U.length-1?o+1:0),!0;if(e==="ArrowUp")return U.length>0&&A(o=>o>0?o-1:U.length-1),!0;if(e==="Enter"||e==="Tab"){const o=U[L];if(o)return ie(o),!0;if(a==="form"&&D&&M.trim())return f(M.trim()),y(!1),!0}return!1},[U,L,ie,a,D,d,f,M,i,y]);s.useEffect(()=>{var e,o;b&&a==="form"&&((e=K.current)==null||e.focus(),(o=K.current)==null||o.select())},[b,a]),s.useEffect(()=>{var e;b&&a==="minimal"&&((e=ee.current)==null||e.focus())},[b,a]),s.useEffect(()=>{!b&&a==="minimal"&&M&&k("")},[b,M,a]);const Se=e=>a==="minimal"?n.jsxDEV("button",{className:`model-dropdown__trigger model-dropdown__trigger--minimal ${b?"model-dropdown__trigger--open":""}`,onMouseDown:Ne,onKeyDown:e,type:"button","aria-haspopup":"listbox","aria-expanded":b,"aria-label":`${(d==null?void 0:d.shortLabel)||(d==null?void 0:d.label)||i} (↑↓ Tab)`,disabled:l,children:[d?n.jsxDEV(ae,{vendor:d.vendor,profileName:(_==null?void 0:_.name)||d.sourceProfileName,iconUrl:_==null?void 0:_.iconUrl,size:15,className:"model-dropdown__trigger-source-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:781,columnNumber:13},void 0):null,n.jsxDEV("span",{className:"model-dropdown__at",children:"#"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:791,columnNumber:11},void 0),n.jsxDEV("span",{className:"model-dropdown__code",children:Ie},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:792,columnNumber:11},void 0),n.jsxDEV(de,{modelId:i,profileId:(_==null?void 0:_.id)||(d==null?void 0:d.sourceProfileId)||null},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:793,columnNumber:11},void 0),n.jsxDEV(je,{size:14,className:`model-dropdown__chevron ${b?"model-dropdown__chevron--open":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:797,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:766,columnNumber:9},void 0):n.jsxDEV("div",{className:`model-dropdown__trigger model-dropdown__trigger--form ${b?"model-dropdown__trigger--open":""}`,onMouseDown:o=>{o.preventDefault(),b||(y(!0),k(""),Z(O),q&&$(q))},children:[n.jsxDEV("div",{className:"model-dropdown__form-content",children:[d?n.jsxDEV(ae,{vendor:d.vendor,profileName:(_==null?void 0:_.name)||d.sourceProfileName,iconUrl:_==null?void 0:_.iconUrl,size:18,className:"model-dropdown__trigger-source-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:826,columnNumber:13},void 0):null,n.jsxDEV("input",{ref:K,type:"text",className:"model-dropdown__form-input",value:M,onChange:o=>{k(o.target.value),b||y(!0)},placeholder:V||(c==="zh"?"选择或输入模型":"Select or enter model"),disabled:l},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:836,columnNumber:11},void 0),n.jsxDEV(de,{modelId:i,profileId:(_==null?void 0:_.id)||(d==null?void 0:d.sourceProfileId)||null},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:851,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:824,columnNumber:9},void 0),n.jsxDEV(je,{size:16,className:`model-dropdown__chevron ${b?"model-dropdown__chevron--open":""}`,onMouseDown:o=>{o.preventDefault(),o.stopPropagation(),Ne()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:856,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:808,columnNumber:7},void 0);return n.jsxDEV(Do,{isOpen:b,setIsOpen:y,disabled:l,openKeys:["Enter"," "],onOpenKey:Ae,trackPosition:a==="form"||x==="down"||x==="up",children:({containerRef:e,menuRef:o,portalPosition:r,handleTriggerKeyDown:v})=>{const j=a==="form"||x==="down"||x==="up",W=n.jsxDEV("div",{className:`model-dropdown__menu model-dropdown__menu--${x} ${a==="form"?"model-dropdown__menu--form":""} ${j?"model-dropdown__menu--portalled":""} ${io}`,ref:o,role:"listbox","aria-label":c==="zh"?"选择模型":"Select Model",onMouseDown:p=>p.stopPropagation(),onClick:p=>p.stopPropagation(),style:j?{position:"fixed",zIndex:no.DROPDOWN_PORTAL,left:r.left,width:a==="form"?Math.max(r.width,g.length>1?620:520):"auto",top:x==="down"?r.bottom+4:"auto",bottom:x==="up"?window.innerHeight-r.top+4:"auto",visibility:r.width===0?"hidden":"visible"}:{zIndex:1e3},children:[a==="minimal"?n.jsxDEV("div",{className:"model-dropdown__toolbar",children:[u?n.jsxDEV("div",{className:"model-dropdown__toolbar-title",children:u},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:929,columnNumber:19},void 0):null,n.jsxDEV("div",{className:"model-dropdown__search",children:n.jsxDEV("div",{className:"model-dropdown__search-input-wrapper",children:[n.jsxDEV(so,{className:"model-dropdown__search-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:933,columnNumber:21},void 0),n.jsxDEV("input",{ref:ee,type:"text",className:"model-dropdown__search-input",value:M,onChange:p=>k(p.target.value),placeholder:c==="zh"?"搜索模型名 / 展示名 / 供应商":"Search model id / label / provider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:934,columnNumber:21},void 0),M?n.jsxDEV("button",{type:"button",className:"model-dropdown__search-clear",onClick:()=>{var p;k(""),(p=ee.current)==null||p.focus()},"aria-label":c==="zh"?"清空搜索":"Clear search",children:n.jsxDEV(ro,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:956,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:947,columnNumber:23},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:932,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:931,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:927,columnNumber:15},void 0):u?n.jsxDEV("div",{className:"model-dropdown__header",children:u},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:963,columnNumber:15},void 0):null,n.jsxDEV(po,{tabs:Ce,activeTab:P,onTabChange:Pe,middleTabs:qe,activeMiddleTab:S,onMiddleTabChange:Te,searchQuery:M,compact:!0,tabsFooter:z?n.jsxDEV("button",{type:"button",className:"model-dropdown__provider-action",onClick:Re,"aria-label":c==="zh"?"新增供应商或打开供应商设置":"Add provider or open provider settings",children:n.jsxDEV(to,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:987,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:977,columnNumber:19},void 0):null,children:n.jsxDEV("div",{className:"model-dropdown__list-pane",children:n.jsxDEV("div",{className:"model-dropdown__list",ref:G,onScroll:I,children:U.length>0?U.map((p,se)=>{var De;const ve=Q(p),re=ve===(t||i),$e=se===L;return n.jsxDEV("div",{"data-model-index":se,className:`model-dropdown__item ${re?"model-dropdown__item--selected":""} ${$e?"model-dropdown__item--highlighted":""}`,onClick:()=>ie(p),onMouseEnter:()=>{A(se)},onContextMenu:He=>ze(He,p.id),role:"option","aria-selected":re,children:[n.jsxDEV("div",{className:"model-dropdown__item-content",children:[n.jsxDEV("div",{className:"model-dropdown__item-name",children:[n.jsxDEV("span",{className:"model-dropdown__item-source-icon",children:n.jsxDEV(Y,{vendor:p.vendor,size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1028,columnNumber:33},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1027,columnNumber:31},void 0),n.jsxDEV("span",{className:"model-dropdown__item-code",children:["#",p.shortCode||p.id]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1033,columnNumber:31},void 0),n.jsxDEV("span",{className:"model-dropdown__item-label",children:p.shortLabel||p.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1036,columnNumber:31},void 0),F?n.jsxDEV("span",{className:"model-dropdown__item-group-tag",children:ne(p)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1040,columnNumber:33},void 0):null,((De=p.tags)==null?void 0:De.includes("new"))&&n.jsxDEV("span",{className:"model-dropdown__item-new",children:"NEW"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1045,columnNumber:33},void 0),n.jsxDEV(de,{modelId:p.id,profileId:p.sourceProfileId||null},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1049,columnNumber:31},void 0),n.jsxDEV(fo,{modelId:p.id},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1053,columnNumber:31},void 0),n.jsxDEV(jo,{model:p},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1054,columnNumber:31},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1026,columnNumber:29},void 0),p.description?n.jsxDEV("div",{className:"model-dropdown__item-desc",children:p.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1057,columnNumber:31},void 0):n.jsxDEV(yo,{model:p},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1061,columnNumber:31},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1025,columnNumber:27},void 0),re&&n.jsxDEV(ao,{size:16,className:"model-dropdown__item-check"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1065,columnNumber:29},void 0)]},ve,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1005,columnNumber:25},void 0)}):n.jsxDEV("div",{className:"model-dropdown__empty",children:c==="zh"?"未找到匹配的模型":"No matching models"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1074,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:993,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:992,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:966,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:888,columnNumber:11},void 0);return n.jsxDEV("div",{className:`model-dropdown model-dropdown--variant-${a} ${l?"model-dropdown--disabled":""}`,ref:e,"data-testid":"model-selector",children:[Se(v),b&&(j?uo.createPortal(W,document.body):W),b?n.jsxDEV(lo,{state:Ve,items:Le,onClose:I},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1097,columnNumber:15},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:1087,columnNumber:11},void 0)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/ModelDropdown.tsx",lineNumber:873,columnNumber:5},void 0)};export{Do as K,Vo as M,wo as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{no as g,lI as M,ne as G,np as D,nq as S,nr as R,h1 as h,ns as I,nt as w,nu as x,nv as b,nw as v,nx as P,ny as B,nz as F,nb as U,n9 as A}from"./tool-windows-
|
|
1
|
+
import{no as g,lI as M,ne as G,np as D,nq as S,nr as R,h1 as h,ns as I,nt as w,nu as x,nv as b,nw as v,nx as P,ny as B,nz as F,nb as U,n9 as A}from"./tool-windows-BTXOQvEU.js";function z(t){return B(t,"musicAnalyzerAction",["analyze","rewrite","lyrics-gen"])}function V(t){return F(t,{missingMessage:"分析任务缺少结果内容",fromStructured:r=>U(r)})}function O(t){const r=t.params.musicAnalyzerSourceSnapshot;return(r==null?void 0:r.type)==="upload"?r:null}function L(t){var i;const r=(i=t.result)==null?void 0:i.analysisData;return!r||typeof r!="object"||typeof r.lyricsDraft!="string"&&typeof r.title!="string"&&!Array.isArray(r.styleTags)?null:{title:String(r.title||"").trim(),styleTags:Array.isArray(r.styleTags)?r.styleTags.map(u=>String(u||"").trim()).filter(Boolean):[],lyricsDraft:String(r.lyricsDraft||"").trim()}}async function q(t){if(t.status!=="completed")return null;const r=z(t);if(!r)return null;if(r==="analyze"){const l=await g(),p=l.find(m=>m.analyzeTaskId===t.id);if(p)return{records:l,record:p};const e=V(t),n=O(t),c=String(t.params.musicAnalyzerSourceLabel||(n==null?void 0:n.fileName)||"本地音频").trim(),o={id:M(),createdAt:Date.now(),source:"upload",sourceLabel:c,sourceSnapshot:n,analysisModel:String(t.params.model||""),analysisModelRef:t.params.modelRef||null,analysis:e,styleTags:e.sunoStyleTags.length>0?e.sunoStyleTags:e.genreTags,title:e.sunoTitle||e.titleSuggestions[0]||c.replace(/\.[^.]+$/,""),lyricsDraft:e.sunoLyricsDraft||"",analyzeTaskId:t.id,starred:!1};return{records:await G(o),record:o}}if(r==="lyrics-gen"){const l=D(t,"musicAnalyzerRecordId");if(!l)return null;const e=(await g()).find(C=>C.id===l);if(!e||e.pendingLyricsGenTaskId!==t.id)return null;const n=$(t),c=(n==null?void 0:n.title)||e.title||"",o=n&&n.styleTags.length>0?n.styleTags:e.styleTags||[],d=(n==null?void 0:n.lyricsDraft)||e.lyricsDraft||"",m=n?S({...e,title:c,styleTags:o,lyricsDraft:d},R({...e,title:c,styleTags:o,lyricsDraft:d},t.type===h.CHAT?"AI 草稿":"Suno 歌词",e.creationPrompt)):{};return I(e,{title:c,styleTags:o,lyricsDraft:d,...m,pendingLyricsGenTaskId:null},A)}const i=D(t,"musicAnalyzerRecordId");if(!i)return null;const s=(await g()).find(l=>l.id===i);if(!s||s.pendingRewriteTaskId!==t.id)return null;const a=L(t)||w(x(t)),y=(s.lyricsVersions||[]).length,f=R({...s,title:a.title||s.title,styleTags:a.styleTags.length>0?a.styleTags:s.styleTags,lyricsDraft:a.lyricsDraft||s.lyricsDraft},`AI 改写 #${y+1}`,s.rewritePrompt),T=S(s,f);return I(s,{title:a.title||s.title,styleTags:a.styleTags.length>0?a.styleTags:s.styleTags,lyricsDraft:a.lyricsDraft||s.lyricsDraft,pendingRewriteTaskId:null,...T},A)}function $(t){const r=t.result;if(!r)return null;const i=L(t);if(i)return i;const u=x(t);if(u)try{return w(u)}catch{}const s=r.lyricsText||"",a=r.lyricsTitle||r.title||"",y=r.lyricsTags;if(!s&&!a)return null;const f=Array.isArray(y)?y.map(T=>String(T||"").trim()).filter(Boolean):[];return{title:String(a).trim(),styleTags:f,lyricsDraft:String(s).trim()}}function H(t){return P(t)}async function J(t,r){return v(t,r,{loadRecords:g,updateRecord:A})}function N(t){return z(t)!==null}function W(t){if(t.type!==h.AUDIO)return null;const r=t.params.batchId;return r?b(r,{prefix:"ma_"}):null}export{J as a,H as e,W as g,N as i,q as s};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{y as e,aI as Be,at as Le,r as s,n7 as ue,n8 as fe,n9 as se,na as $e,nb as Ue,g$ as L,lr as Ke,h1 as O,lI as Ye,nc as _e,nd as He,ne as We,nf as Qe,hf as Ne,ng as Ve,nh as qe,ni as Je,nj as Re,hz as Xe,ib as Ze,nk as be,nl as ea,nm as aa,nn as sa,j0 as ia,fP as na,h0 as ie,bV as ra,no as ua}from"./tool-windows-Bd5iqcJh.js";import{M as ge}from"./ModelDropdown-CErXiJel.js";import{u as pe}from"./use-runtime-models-NPMCne8X.js";import{a as ye}from"./model-selection-C9DVcl8A.js";import{quickInsert as Oe}from"./canvas-insertion-6qsJRfKC.js";import{s as Pe,i as la,g as ta,a as ca}from"./MusicAnalyzer-DNVsOB04.js";/* empty css */import"./model-benchmark-service-BlgtfJ25.js";const Se=[{id:"create",label:"创作"},{id:"lyrics",label:"歌词"},{id:"generate",label:"生成"}],da=({current:a,onNavigate:n,hasRecord:u})=>{const v=Se.findIndex(c=>c.id===a);return e.jsxDEV("div",{className:"va-step-bar",children:Se.map((c,h)=>{const g=c.id===a,k=h<v,y=!u&&h>0;return e.jsxDEV(Be.Fragment,{children:[h>0&&e.jsxDEV("span",{className:"va-step-arrow",children:"→"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/components/StepBar.tsx",lineNumber:32,columnNumber:27},void 0),e.jsxDEV("button",{className:`va-step ${g?"active":""} ${k?"past":""}`,onClick:()=>!y&&n(c.id),disabled:y,children:[e.jsxDEV("span",{className:"va-step-num",children:h+1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/components/StepBar.tsx",lineNumber:38,columnNumber:15},void 0),c.label]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/components/StepBar.tsx",lineNumber:33,columnNumber:13},void 0)]},c.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/components/StepBar.tsx",lineNumber:31,columnNumber:11},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/components/StepBar.tsx",lineNumber:24,columnNumber:5},void 0)};function Ce(a){return(a||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"")||"mp3"}function ma(a){const n=a.name.split(".").pop();return n&&n.length<=8?Ce(n):Ce(a.type.split("/")[1])}async function oa(a,n){const u=ma(a),c=`/__aitu_cache__/audio/${`music-analyzer-source-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}.${u}`;return await Le.cacheMediaFromBlob(c,a,"audio",{metadata:{source:"music-analyzer-input",fileName:a.name,mimeType:a.type||"audio/mpeg",size:a.size}}),{type:"upload",cacheUrl:c,fileName:a.name||`music-source.${u}`,mimeType:a.type||"audio/mpeg",size:a.size}}async function pa(a){if(!a||a.type!=="upload")return null;const n=await Le.getCachedBlob(a.cacheUrl);return n?new File([n],a.fileName||"music-source.mp3",{type:a.mimeType||n.type||"audio/mpeg",lastModified:Date.now()}):null}const he="gemini-2.5-pro",je="music-analyzer:model",ve="music-analyzer:lyrics-model",Ee="music-analyzer:creation-prompt";function fa(a){return`${(a/1024/1024).toFixed(1)}MB`}function Na(){try{return sessionStorage.getItem(Ee)||""}catch{return""}}function Ie(a){try{if(a){sessionStorage.setItem(Ee,a);return}sessionStorage.removeItem(Ee)}catch{}}const ga=({existingRecord:a,onComplete:n,onRecordsChange:u,onCreateNew:v,onNext:c,onLyricsReady:h})=>{const[g,k]=s.useState((a==null?void 0:a.source)==="upload"?"reference":"scratch"),[y,S]=s.useState(()=>(a==null?void 0:a.creationPrompt)||Na()),[D,A]=s.useState(()=>(a==null?void 0:a.pendingLyricsGenTaskId)||null),[w,C]=s.useState(""),[p,P]=s.useState(null),[t,N]=s.useState(null),[d,j]=s.useState(""),[m,f]=s.useState(!0),[F,Z]=s.useState(""),[$,le]=s.useState(""),[B,ne]=s.useState(""),re=s.useRef(null),M=s.useRef(null),J=s.useRef(),[z,E]=s.useState(""),[_,ce]=s.useState(()=>(a==null?void 0:a.analysisModel)||ue(je,he).modelId),[ee,te]=s.useState(()=>(a==null?void 0:a.analysisModelRef)||ue(je,he).modelRef),[U,R]=s.useState(()=>ue(ve,Ne()).modelId),[K,I]=s.useState(()=>ue(ve,Ne()).modelRef),l=s.useCallback((r,x)=>{ce(r),te(x||null),fe(je,r,x)},[]),b=s.useCallback((r,x)=>{R(r),I(x||null),fe(ve,r,x)},[]),V=s.useMemo(()=>{if(M.current&&URL.revokeObjectURL(M.current),!p)return M.current=null,null;const r=URL.createObjectURL(p);return M.current=r,r},[p]);s.useEffect(()=>()=>{M.current&&URL.revokeObjectURL(M.current)},[]),s.useEffect(()=>{let r=!1;return(async()=>{if(!a){!t&&!D&&(P(null),E(""));return}ce(a.analysisModel||he),te(a.analysisModelRef||null),S(a.creationPrompt||"");const o=a.analysis?Ue(a.analysis):null;if(Z(a.title||(o==null?void 0:o.sunoTitle)||""),le((a.styleTags||(o==null?void 0:o.sunoStyleTags)||(o==null?void 0:o.genreTags)||[]).join(", ")),ne(a.lyricsDraft||(o==null?void 0:o.sunoLyricsDraft)||""),E(""),a.source==="upload"){const T=await pa(a.sourceSnapshot);if(r)return;P(T),T||E("原上传音频缓存已失效,无法自动回填音频")}})(),()=>{r=!0}},[a,t,D]),s.useEffect(()=>{if((a==null?void 0:a.source)==="scratch"){Ie(a.creationPrompt||"");return}a||Ie(y)},[y,a]),s.useEffect(()=>{if(!(!a||g!=="reference"))return clearTimeout(J.current),J.current=setTimeout(async()=>{const r=$.split(",").map(T=>T.trim()).filter(Boolean),x=await se(a.id,{title:F.trim(),styleTags:r,lyricsDraft:B});u(x);const o=x.find(T=>T.id===a.id);o&&n(o)},400),()=>clearTimeout(J.current)},[B,$,F,a,g,n,u]);const W=pe("text"),H=s.useMemo(()=>W.filter(r=>/^gemini/i.test(r.id)),[W]),i=pe("audio"),G=s.useMemo(()=>$e(W,i),[W,i]),q=s.useMemo(()=>a!=null&&a.analysis?Ue(a.analysis):null,[a==null?void 0:a.analysis]),ae=s.useCallback(r=>{var o;const x=(o=r.target.files)==null?void 0:o[0];x!=null&&x.type.startsWith("audio/")?(P(x),E("")):E("请选择音频文件")},[]),Y=s.useCallback(r=>{r.preventDefault();const x=r.dataTransfer.files[0];x!=null&&x.type.startsWith("audio/")?(P(x),E("")):E("请选择音频文件")},[]),Q=s.useCallback(async()=>{if(!p){E("请先上传音频");return}E(""),j("缓存音频...");try{const r=await oa(p),x=L.createTask({prompt:`分析音频:${p.name||"本地音频"}`,model:_,modelRef:ee,mimeType:r.mimeType,audioCacheUrl:r.cacheUrl,musicAnalyzerAction:"analyze",musicAnalyzerPrompt:Ke,musicAnalyzerSource:"upload",musicAnalyzerSourceLabel:r.fileName,musicAnalyzerSourceSnapshot:r,autoInsertToCanvas:!1},O.CHAT);N(x.id),j("音频分析中 0%")}catch(r){E(r.message||"音频分析失败")}},[p,_,ee]),de=s.useCallback(async()=>{if(!y.trim()){E("请先描述你想创作的歌曲");return}const r=_e(U);E(""),C(r?"歌词生成中...":"歌词草稿生成中 0%");try{const x={id:Ye(),createdAt:Date.now(),source:"scratch",sourceLabel:y.slice(0,30)||"从零创作",creationPrompt:y,starred:!1},o=r?L.createTask({prompt:y,model:U,modelRef:K,sunoAction:"lyrics",musicAnalyzerAction:"lyrics-gen",musicAnalyzerRecordId:x.id,autoInsertToCanvas:!1},O.AUDIO):L.createTask({prompt:`从零创作歌词:${x.sourceLabel}`,model:U,modelRef:K,musicAnalyzerAction:"lyrics-gen",musicAnalyzerPrompt:He({userPrompt:y,mode:"create"}),musicAnalyzerRecordId:x.id,autoInsertToCanvas:!1},O.CHAT);x.pendingLyricsGenTaskId=o.id;const T=await We(x);u(T),n(x),A(o.id)}catch(x){E(x.message||"歌词生成失败"),C("")}},[y,n,u,U,K]);s.useEffect(()=>{if(!t)return;const r=L.getTask(t);typeof(r==null?void 0:r.progress)=="number"&&j(`音频分析中 ${Math.round(r.progress)}%`);const x=L.observeTaskUpdates().subscribe(o=>{var T;if(o.task.id===t){if(o.task.status==="failed"){N(null),j(""),E(((T=o.task.error)==null?void 0:T.message)||"音频分析失败");return}if(o.task.status==="completed"){Pe(o.task).then(X=>{X&&(u(X.records),n(X.record))}).catch(X=>E(X.message||"分析结果同步失败")).finally(()=>{N(null),j("")});return}typeof o.task.progress=="number"&&j(`音频分析中 ${Math.round(o.task.progress)}%`)}});return()=>x.unsubscribe()},[t,n,u]),s.useEffect(()=>{if(!D)return;const r=L.getTask(D);if(typeof(r==null?void 0:r.progress)=="number"){const o=r.type===O.CHAT?"歌词草稿生成中":"歌词生成中";C(`${o} ${Math.round(r.progress)}%`)}const x=L.observeTaskUpdates().subscribe(o=>{var T;if(o.task.id===D){if(o.task.status==="failed"){const X=String(o.task.params.musicAnalyzerRecordId||"").trim();A(null),C(""),E(((T=o.task.error)==null?void 0:T.message)||"歌词生成失败"),X&&se(X,{pendingLyricsGenTaskId:null}).then(u);return}if(o.task.status==="completed"){A(null),C(""),h==null||h();return}if(typeof o.task.progress=="number"){const X=o.task.type===O.CHAT?"歌词草稿生成中":"歌词生成中";C(`${X} ${Math.round(o.task.progress)}%`)}}});return()=>x.unsubscribe()},[h,u,D]);const xe=s.useCallback(async()=>{q&&await Oe("text",Qe(q))},[q]);return e.jsxDEV("div",{className:"ma-create-page",children:[e.jsxDEV("div",{className:"ma-mode-toggle",children:[e.jsxDEV("button",{className:`ma-mode-btn ${g==="scratch"?"active":""}`,onClick:()=>k("scratch"),children:"从零创作"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:456,columnNumber:9},void 0),e.jsxDEV("button",{className:`ma-mode-btn ${g==="reference"?"active":""}`,onClick:()=>k("reference"),children:"参考音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:462,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:455,columnNumber:7},void 0),e.jsxDEV("div",{className:"va-page",children:[g==="scratch"?e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"ma-card",children:[e.jsxDEV("div",{className:"ma-card-header",children:[e.jsxDEV("span",{children:"歌词草稿模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:476,columnNumber:15},void 0),e.jsxDEV("span",{className:"ma-muted",children:"文本模型会补齐 Suno 所需标题/标签/歌词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:477,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:475,columnNumber:13},void 0),e.jsxDEV(ge,{selectedModel:U,selectedSelectionKey:ye(U,K),onSelect:b,models:G,variant:"form",placement:"down",placeholder:"选择歌词草稿模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:479,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:474,columnNumber:11},void 0),e.jsxDEV("div",{className:"ma-card",children:[e.jsxDEV("div",{className:"ma-card-header",children:e.jsxDEV("span",{children:"描述你想创作的歌曲"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:492,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:491,columnNumber:13},void 0),e.jsxDEV("textarea",{className:"ma-textarea",value:y,onChange:r=>S(r.target.value),rows:6,placeholder:"例如:一首关于夏天海边的轻快流行歌,女声,带有吉他和电子节拍"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:494,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:490,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:473,columnNumber:9},void 0):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"ma-card",children:[e.jsxDEV("div",{className:"ma-card-header",children:[e.jsxDEV("span",{children:"上传音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:507,columnNumber:15},void 0),p&&e.jsxDEV("span",{className:"ma-muted",children:fa(p.size)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:508,columnNumber:29},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:506,columnNumber:13},void 0),e.jsxDEV("div",{className:"va-dropzone ma-dropzone",onClick:()=>{var r;return(r=re.current)==null?void 0:r.click()},onDragOver:r=>r.preventDefault(),onDrop:Y,children:p?e.jsxDEV("div",{className:"ma-audio-preview",children:[e.jsxDEV("div",{className:"ma-audio-preview__meta",children:[e.jsxDEV("strong",{children:p.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:519,columnNumber:21},void 0),e.jsxDEV("button",{className:"va-nav-btn",onClick:r=>{r.stopPropagation(),P(null),E(""),re.current&&(re.current.value="")},children:"清空"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:520,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:518,columnNumber:19},void 0),V&&e.jsxDEV("audio",{controls:!0,src:V},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:532,columnNumber:39},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:517,columnNumber:17},void 0):e.jsxDEV("div",{className:"ma-dropzone__placeholder",children:[e.jsxDEV("span",{children:"点击或拖拽上传本地音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:536,columnNumber:19},void 0),e.jsxDEV("small",{children:"支持 mp3、wav、m4a 等常见格式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:537,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:535,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:510,columnNumber:13},void 0),e.jsxDEV("input",{ref:re,type:"file",accept:"audio/*",hidden:!0,onChange:ae},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:541,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:505,columnNumber:11},void 0),e.jsxDEV("div",{className:"ma-card",children:[e.jsxDEV("div",{className:"ma-card-header",children:e.jsxDEV("span",{children:"分析模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:552,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:551,columnNumber:13},void 0),e.jsxDEV(ge,{selectedModel:_,selectedSelectionKey:ye(_,ee),onSelect:l,models:H,variant:"form",placement:"down",placeholder:"选择 Gemini 分析模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:554,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:550,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:504,columnNumber:9},void 0),q&&g==="reference"&&e.jsxDEV("div",{className:"ma-card",children:[e.jsxDEV("button",{className:"ma-section-toggle",onClick:()=>f(r=>!r),children:[e.jsxDEV("span",{children:"分析摘要"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:574,columnNumber:13},void 0),e.jsxDEV("span",{children:m?"收起":"展开"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:575,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:570,columnNumber:11},void 0),m&&e.jsxDEV("div",{className:"ma-analysis-summary",children:[e.jsxDEV("p",{children:q.summary},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:579,columnNumber:15},void 0),e.jsxDEV("div",{className:"ma-chip-row",children:[e.jsxDEV("span",{className:"ma-chip",children:q.language||"未知语言"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:581,columnNumber:17},void 0),e.jsxDEV("span",{className:"ma-chip",children:q.mood||"未知情绪"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:582,columnNumber:17},void 0),q.genreTags.map(r=>e.jsxDEV("span",{className:"ma-chip ma-chip--accent",children:r},r,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:584,columnNumber:19},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:580,columnNumber:15},void 0),e.jsxDEV("div",{className:"ma-tag-row",children:q.structure.map(r=>e.jsxDEV("code",{children:r},r,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:589,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:587,columnNumber:15},void 0),q.titleSuggestions.length>0&&e.jsxDEV("div",{className:"ma-suggestions",children:["推荐标题:",q.titleSuggestions.join(" / ")]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:593,columnNumber:17},void 0),(q.sunoTitle||q.sunoStyleTags.length>0||q.sunoLyricsDraft)&&e.jsxDEV("div",{className:"ma-suno-summary",children:[e.jsxDEV("div",{className:"ma-suno-summary__title",children:"Suno 生成草稿"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:601,columnNumber:19},void 0),e.jsxDEV("div",{className:"ma-suno-summary__form",children:[e.jsxDEV("label",{className:"ma-suno-summary__field",children:[e.jsxDEV("span",{children:"歌曲标题"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:604,columnNumber:23},void 0),e.jsxDEV("input",{className:"ma-input",value:F,onChange:r=>Z(r.target.value),placeholder:"可直接用于 Suno 的标题"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:605,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:603,columnNumber:21},void 0),e.jsxDEV("label",{className:"ma-suno-summary__field",children:[e.jsxDEV("span",{children:"Suno 风格标签"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:613,columnNumber:23},void 0),e.jsxDEV("input",{className:"ma-input",value:$,onChange:r=>le(r.target.value),placeholder:"逗号分隔的风格标签"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:614,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:612,columnNumber:21},void 0),e.jsxDEV("label",{className:"ma-suno-summary__field",children:[e.jsxDEV("span",{children:"带 Suno 标签的歌词草稿"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:622,columnNumber:23},void 0),e.jsxDEV("textarea",{className:"ma-textarea",rows:12,value:B,onChange:r=>ne(r.target.value),placeholder:"分析阶段整理出的可用歌词草稿"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:623,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:621,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:602,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:600,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:578,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:569,columnNumber:9},void 0),(z||d||w)&&e.jsxDEV("div",{className:"ma-status-stack",children:[z&&e.jsxDEV("div",{className:"ma-error",children:z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:641,columnNumber:21},void 0),d&&e.jsxDEV("div",{className:"ma-progress",children:d},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:642,columnNumber:24},void 0),w&&e.jsxDEV("div",{className:"ma-progress",children:w},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:643,columnNumber:33},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:640,columnNumber:9},void 0),e.jsxDEV("div",{className:"va-page-actions",children:g==="scratch"?e.jsxDEV("button",{className:"va-btn-primary",onClick:de,disabled:!y.trim()||!!D,children:"生成歌词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:649,columnNumber:11},void 0):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("button",{onClick:v,children:"新建"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:658,columnNumber:13},void 0),e.jsxDEV("button",{onClick:xe,disabled:!(a!=null&&a.analysis),children:"插入分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:659,columnNumber:13},void 0),e.jsxDEV("button",{className:"va-btn-primary",onClick:Q,disabled:!p||!!t,children:"开始分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:662,columnNumber:13},void 0),e.jsxDEV("button",{onClick:c,disabled:!a,children:"下一步"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:669,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:657,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:647,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:470,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:453,columnNumber:5},void 0)},ke="music-analyzer:model",Te="gemini-2.5-pro",ya=({record:a,onRecordUpdate:n,onRecordsChange:u,onNext:v})=>{var U,R,K,I;const[c,h]=s.useState(()=>Ve(a)),[g,k]=s.useState(a.lyricsDraft||""),[y,S]=s.useState(a.title||((R=(U=a.analysis)==null?void 0:U.titleSuggestions)==null?void 0:R[0])||""),[D,A]=s.useState((a.styleTags||((K=a.analysis)==null?void 0:K.genreTags)||[]).join(", ")),[w,C]=s.useState(()=>a.pendingRewriteTaskId||null),[p,P]=s.useState(""),[t,N]=s.useState(""),[d,j]=s.useState(()=>a.analysisModel||ue(ke,Te).modelId),[m,f]=s.useState(()=>a.analysisModelRef||ue(ke,Te).modelRef),[F,Z]=s.useState(!1),$=s.useRef(),le=s.useCallback((l,b)=>{j(l),f(b||null),fe(ke,l,b)},[]);s.useEffect(()=>{var l,b,V;h(Ve(a)),k(a.lyricsDraft||""),S(a.title||((b=(l=a.analysis)==null?void 0:l.titleSuggestions)==null?void 0:b[0])||""),A((a.styleTags||((V=a.analysis)==null?void 0:V.genreTags)||[]).join(", ")),C(a.pendingRewriteTaskId||null)},[a]),s.useEffect(()=>(clearTimeout($.current),$.current=setTimeout(async()=>{const l=D.split(",").map(V=>V.trim()).filter(Boolean),b=await se(a.id,{rewritePrompt:c,lyricsDraft:g,title:y,styleTags:l,pendingRewriteTaskId:w});u(b),n({...a,rewritePrompt:c,lyricsDraft:g,title:y,styleTags:l,pendingRewriteTaskId:w})},400),()=>clearTimeout($.current)),[g,n,u,w,a.id,c,D,y]);const B=pe("text"),ne=pe("audio"),re=s.useMemo(()=>$e(B,ne),[B,ne]),M=s.useMemo(()=>_e(d),[d]),J=s.useMemo(()=>{const l=[{id:qe,label:"原始版本"}];for(const b of a.lyricsVersions||[])l.push({id:b.id,label:b.label});return l},[a.lyricsVersions]),z=a.activeVersionId||qe,E=J.length>1,_=String(a.creationPrompt||"").trim(),ce=s.useCallback(async l=>{const b=Je(a,l);if(!b)return;const V=await se(a.id,b);u(V),n({...a,...b}),Z(!1)},[n,u,a]),ee=s.useCallback(async()=>{N(""),P(M?"歌词生成中...":"歌词改写中 0%");try{let l;if(M){const W=[c.trim()?`本轮改写要求:
|
|
1
|
+
import{y as e,aI as Be,at as Le,r as s,n7 as ue,n8 as fe,n9 as se,na as $e,nb as Ue,g$ as L,lr as Ke,h1 as O,lI as Ye,nc as _e,nd as He,ne as We,nf as Qe,hf as Ne,ng as Ve,nh as qe,ni as Je,nj as Re,hz as Xe,ib as Ze,nk as be,nl as ea,nm as aa,nn as sa,j0 as ia,fP as na,h0 as ie,bV as ra,no as ua}from"./tool-windows-BTXOQvEU.js";import{M as ge}from"./ModelDropdown-iU3c5Z_N.js";import{u as pe}from"./use-runtime-models-C_YMetmY.js";import{a as ye}from"./model-selection-Da4xzp54.js";import{quickInsert as Oe}from"./canvas-insertion-BZAyMFnR.js";import{s as Pe,i as la,g as ta,a as ca}from"./MusicAnalyzer-D9rIcu4x.js";/* empty css */import"./model-benchmark-service-C3taFBGp.js";const Se=[{id:"create",label:"创作"},{id:"lyrics",label:"歌词"},{id:"generate",label:"生成"}],da=({current:a,onNavigate:n,hasRecord:u})=>{const v=Se.findIndex(c=>c.id===a);return e.jsxDEV("div",{className:"va-step-bar",children:Se.map((c,h)=>{const g=c.id===a,k=h<v,y=!u&&h>0;return e.jsxDEV(Be.Fragment,{children:[h>0&&e.jsxDEV("span",{className:"va-step-arrow",children:"→"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/components/StepBar.tsx",lineNumber:32,columnNumber:27},void 0),e.jsxDEV("button",{className:`va-step ${g?"active":""} ${k?"past":""}`,onClick:()=>!y&&n(c.id),disabled:y,children:[e.jsxDEV("span",{className:"va-step-num",children:h+1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/components/StepBar.tsx",lineNumber:38,columnNumber:15},void 0),c.label]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/components/StepBar.tsx",lineNumber:33,columnNumber:13},void 0)]},c.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/components/StepBar.tsx",lineNumber:31,columnNumber:11},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/components/StepBar.tsx",lineNumber:24,columnNumber:5},void 0)};function Ce(a){return(a||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"")||"mp3"}function ma(a){const n=a.name.split(".").pop();return n&&n.length<=8?Ce(n):Ce(a.type.split("/")[1])}async function oa(a,n){const u=ma(a),c=`/__aitu_cache__/audio/${`music-analyzer-source-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}.${u}`;return await Le.cacheMediaFromBlob(c,a,"audio",{metadata:{source:"music-analyzer-input",fileName:a.name,mimeType:a.type||"audio/mpeg",size:a.size}}),{type:"upload",cacheUrl:c,fileName:a.name||`music-source.${u}`,mimeType:a.type||"audio/mpeg",size:a.size}}async function pa(a){if(!a||a.type!=="upload")return null;const n=await Le.getCachedBlob(a.cacheUrl);return n?new File([n],a.fileName||"music-source.mp3",{type:a.mimeType||n.type||"audio/mpeg",lastModified:Date.now()}):null}const he="gemini-2.5-pro",je="music-analyzer:model",ve="music-analyzer:lyrics-model",Ee="music-analyzer:creation-prompt";function fa(a){return`${(a/1024/1024).toFixed(1)}MB`}function Na(){try{return sessionStorage.getItem(Ee)||""}catch{return""}}function Ie(a){try{if(a){sessionStorage.setItem(Ee,a);return}sessionStorage.removeItem(Ee)}catch{}}const ga=({existingRecord:a,onComplete:n,onRecordsChange:u,onCreateNew:v,onNext:c,onLyricsReady:h})=>{const[g,k]=s.useState((a==null?void 0:a.source)==="upload"?"reference":"scratch"),[y,S]=s.useState(()=>(a==null?void 0:a.creationPrompt)||Na()),[D,A]=s.useState(()=>(a==null?void 0:a.pendingLyricsGenTaskId)||null),[w,C]=s.useState(""),[p,P]=s.useState(null),[t,N]=s.useState(null),[d,j]=s.useState(""),[m,f]=s.useState(!0),[F,Z]=s.useState(""),[$,le]=s.useState(""),[B,ne]=s.useState(""),re=s.useRef(null),M=s.useRef(null),J=s.useRef(),[z,E]=s.useState(""),[_,ce]=s.useState(()=>(a==null?void 0:a.analysisModel)||ue(je,he).modelId),[ee,te]=s.useState(()=>(a==null?void 0:a.analysisModelRef)||ue(je,he).modelRef),[U,R]=s.useState(()=>ue(ve,Ne()).modelId),[K,I]=s.useState(()=>ue(ve,Ne()).modelRef),l=s.useCallback((r,x)=>{ce(r),te(x||null),fe(je,r,x)},[]),b=s.useCallback((r,x)=>{R(r),I(x||null),fe(ve,r,x)},[]),V=s.useMemo(()=>{if(M.current&&URL.revokeObjectURL(M.current),!p)return M.current=null,null;const r=URL.createObjectURL(p);return M.current=r,r},[p]);s.useEffect(()=>()=>{M.current&&URL.revokeObjectURL(M.current)},[]),s.useEffect(()=>{let r=!1;return(async()=>{if(!a){!t&&!D&&(P(null),E(""));return}ce(a.analysisModel||he),te(a.analysisModelRef||null),S(a.creationPrompt||"");const o=a.analysis?Ue(a.analysis):null;if(Z(a.title||(o==null?void 0:o.sunoTitle)||""),le((a.styleTags||(o==null?void 0:o.sunoStyleTags)||(o==null?void 0:o.genreTags)||[]).join(", ")),ne(a.lyricsDraft||(o==null?void 0:o.sunoLyricsDraft)||""),E(""),a.source==="upload"){const T=await pa(a.sourceSnapshot);if(r)return;P(T),T||E("原上传音频缓存已失效,无法自动回填音频")}})(),()=>{r=!0}},[a,t,D]),s.useEffect(()=>{if((a==null?void 0:a.source)==="scratch"){Ie(a.creationPrompt||"");return}a||Ie(y)},[y,a]),s.useEffect(()=>{if(!(!a||g!=="reference"))return clearTimeout(J.current),J.current=setTimeout(async()=>{const r=$.split(",").map(T=>T.trim()).filter(Boolean),x=await se(a.id,{title:F.trim(),styleTags:r,lyricsDraft:B});u(x);const o=x.find(T=>T.id===a.id);o&&n(o)},400),()=>clearTimeout(J.current)},[B,$,F,a,g,n,u]);const W=pe("text"),H=s.useMemo(()=>W.filter(r=>/^gemini/i.test(r.id)),[W]),i=pe("audio"),G=s.useMemo(()=>$e(W,i),[W,i]),q=s.useMemo(()=>a!=null&&a.analysis?Ue(a.analysis):null,[a==null?void 0:a.analysis]),ae=s.useCallback(r=>{var o;const x=(o=r.target.files)==null?void 0:o[0];x!=null&&x.type.startsWith("audio/")?(P(x),E("")):E("请选择音频文件")},[]),Y=s.useCallback(r=>{r.preventDefault();const x=r.dataTransfer.files[0];x!=null&&x.type.startsWith("audio/")?(P(x),E("")):E("请选择音频文件")},[]),Q=s.useCallback(async()=>{if(!p){E("请先上传音频");return}E(""),j("缓存音频...");try{const r=await oa(p),x=L.createTask({prompt:`分析音频:${p.name||"本地音频"}`,model:_,modelRef:ee,mimeType:r.mimeType,audioCacheUrl:r.cacheUrl,musicAnalyzerAction:"analyze",musicAnalyzerPrompt:Ke,musicAnalyzerSource:"upload",musicAnalyzerSourceLabel:r.fileName,musicAnalyzerSourceSnapshot:r,autoInsertToCanvas:!1},O.CHAT);N(x.id),j("音频分析中 0%")}catch(r){E(r.message||"音频分析失败")}},[p,_,ee]),de=s.useCallback(async()=>{if(!y.trim()){E("请先描述你想创作的歌曲");return}const r=_e(U);E(""),C(r?"歌词生成中...":"歌词草稿生成中 0%");try{const x={id:Ye(),createdAt:Date.now(),source:"scratch",sourceLabel:y.slice(0,30)||"从零创作",creationPrompt:y,starred:!1},o=r?L.createTask({prompt:y,model:U,modelRef:K,sunoAction:"lyrics",musicAnalyzerAction:"lyrics-gen",musicAnalyzerRecordId:x.id,autoInsertToCanvas:!1},O.AUDIO):L.createTask({prompt:`从零创作歌词:${x.sourceLabel}`,model:U,modelRef:K,musicAnalyzerAction:"lyrics-gen",musicAnalyzerPrompt:He({userPrompt:y,mode:"create"}),musicAnalyzerRecordId:x.id,autoInsertToCanvas:!1},O.CHAT);x.pendingLyricsGenTaskId=o.id;const T=await We(x);u(T),n(x),A(o.id)}catch(x){E(x.message||"歌词生成失败"),C("")}},[y,n,u,U,K]);s.useEffect(()=>{if(!t)return;const r=L.getTask(t);typeof(r==null?void 0:r.progress)=="number"&&j(`音频分析中 ${Math.round(r.progress)}%`);const x=L.observeTaskUpdates().subscribe(o=>{var T;if(o.task.id===t){if(o.task.status==="failed"){N(null),j(""),E(((T=o.task.error)==null?void 0:T.message)||"音频分析失败");return}if(o.task.status==="completed"){Pe(o.task).then(X=>{X&&(u(X.records),n(X.record))}).catch(X=>E(X.message||"分析结果同步失败")).finally(()=>{N(null),j("")});return}typeof o.task.progress=="number"&&j(`音频分析中 ${Math.round(o.task.progress)}%`)}});return()=>x.unsubscribe()},[t,n,u]),s.useEffect(()=>{if(!D)return;const r=L.getTask(D);if(typeof(r==null?void 0:r.progress)=="number"){const o=r.type===O.CHAT?"歌词草稿生成中":"歌词生成中";C(`${o} ${Math.round(r.progress)}%`)}const x=L.observeTaskUpdates().subscribe(o=>{var T;if(o.task.id===D){if(o.task.status==="failed"){const X=String(o.task.params.musicAnalyzerRecordId||"").trim();A(null),C(""),E(((T=o.task.error)==null?void 0:T.message)||"歌词生成失败"),X&&se(X,{pendingLyricsGenTaskId:null}).then(u);return}if(o.task.status==="completed"){A(null),C(""),h==null||h();return}if(typeof o.task.progress=="number"){const X=o.task.type===O.CHAT?"歌词草稿生成中":"歌词生成中";C(`${X} ${Math.round(o.task.progress)}%`)}}});return()=>x.unsubscribe()},[h,u,D]);const xe=s.useCallback(async()=>{q&&await Oe("text",Qe(q))},[q]);return e.jsxDEV("div",{className:"ma-create-page",children:[e.jsxDEV("div",{className:"ma-mode-toggle",children:[e.jsxDEV("button",{className:`ma-mode-btn ${g==="scratch"?"active":""}`,onClick:()=>k("scratch"),children:"从零创作"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:456,columnNumber:9},void 0),e.jsxDEV("button",{className:`ma-mode-btn ${g==="reference"?"active":""}`,onClick:()=>k("reference"),children:"参考音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:462,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:455,columnNumber:7},void 0),e.jsxDEV("div",{className:"va-page",children:[g==="scratch"?e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"ma-card",children:[e.jsxDEV("div",{className:"ma-card-header",children:[e.jsxDEV("span",{children:"歌词草稿模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:476,columnNumber:15},void 0),e.jsxDEV("span",{className:"ma-muted",children:"文本模型会补齐 Suno 所需标题/标签/歌词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:477,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:475,columnNumber:13},void 0),e.jsxDEV(ge,{selectedModel:U,selectedSelectionKey:ye(U,K),onSelect:b,models:G,variant:"form",placement:"down",placeholder:"选择歌词草稿模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:479,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:474,columnNumber:11},void 0),e.jsxDEV("div",{className:"ma-card",children:[e.jsxDEV("div",{className:"ma-card-header",children:e.jsxDEV("span",{children:"描述你想创作的歌曲"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:492,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:491,columnNumber:13},void 0),e.jsxDEV("textarea",{className:"ma-textarea",value:y,onChange:r=>S(r.target.value),rows:6,placeholder:"例如:一首关于夏天海边的轻快流行歌,女声,带有吉他和电子节拍"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:494,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:490,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:473,columnNumber:9},void 0):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"ma-card",children:[e.jsxDEV("div",{className:"ma-card-header",children:[e.jsxDEV("span",{children:"上传音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:507,columnNumber:15},void 0),p&&e.jsxDEV("span",{className:"ma-muted",children:fa(p.size)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:508,columnNumber:29},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:506,columnNumber:13},void 0),e.jsxDEV("div",{className:"va-dropzone ma-dropzone",onClick:()=>{var r;return(r=re.current)==null?void 0:r.click()},onDragOver:r=>r.preventDefault(),onDrop:Y,children:p?e.jsxDEV("div",{className:"ma-audio-preview",children:[e.jsxDEV("div",{className:"ma-audio-preview__meta",children:[e.jsxDEV("strong",{children:p.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:519,columnNumber:21},void 0),e.jsxDEV("button",{className:"va-nav-btn",onClick:r=>{r.stopPropagation(),P(null),E(""),re.current&&(re.current.value="")},children:"清空"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:520,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:518,columnNumber:19},void 0),V&&e.jsxDEV("audio",{controls:!0,src:V},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:532,columnNumber:39},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:517,columnNumber:17},void 0):e.jsxDEV("div",{className:"ma-dropzone__placeholder",children:[e.jsxDEV("span",{children:"点击或拖拽上传本地音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:536,columnNumber:19},void 0),e.jsxDEV("small",{children:"支持 mp3、wav、m4a 等常见格式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:537,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:535,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:510,columnNumber:13},void 0),e.jsxDEV("input",{ref:re,type:"file",accept:"audio/*",hidden:!0,onChange:ae},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:541,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:505,columnNumber:11},void 0),e.jsxDEV("div",{className:"ma-card",children:[e.jsxDEV("div",{className:"ma-card-header",children:e.jsxDEV("span",{children:"分析模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:552,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:551,columnNumber:13},void 0),e.jsxDEV(ge,{selectedModel:_,selectedSelectionKey:ye(_,ee),onSelect:l,models:H,variant:"form",placement:"down",placeholder:"选择 Gemini 分析模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:554,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:550,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:504,columnNumber:9},void 0),q&&g==="reference"&&e.jsxDEV("div",{className:"ma-card",children:[e.jsxDEV("button",{className:"ma-section-toggle",onClick:()=>f(r=>!r),children:[e.jsxDEV("span",{children:"分析摘要"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:574,columnNumber:13},void 0),e.jsxDEV("span",{children:m?"收起":"展开"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:575,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:570,columnNumber:11},void 0),m&&e.jsxDEV("div",{className:"ma-analysis-summary",children:[e.jsxDEV("p",{children:q.summary},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:579,columnNumber:15},void 0),e.jsxDEV("div",{className:"ma-chip-row",children:[e.jsxDEV("span",{className:"ma-chip",children:q.language||"未知语言"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:581,columnNumber:17},void 0),e.jsxDEV("span",{className:"ma-chip",children:q.mood||"未知情绪"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:582,columnNumber:17},void 0),q.genreTags.map(r=>e.jsxDEV("span",{className:"ma-chip ma-chip--accent",children:r},r,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:584,columnNumber:19},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:580,columnNumber:15},void 0),e.jsxDEV("div",{className:"ma-tag-row",children:q.structure.map(r=>e.jsxDEV("code",{children:r},r,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:589,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:587,columnNumber:15},void 0),q.titleSuggestions.length>0&&e.jsxDEV("div",{className:"ma-suggestions",children:["推荐标题:",q.titleSuggestions.join(" / ")]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:593,columnNumber:17},void 0),(q.sunoTitle||q.sunoStyleTags.length>0||q.sunoLyricsDraft)&&e.jsxDEV("div",{className:"ma-suno-summary",children:[e.jsxDEV("div",{className:"ma-suno-summary__title",children:"Suno 生成草稿"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:601,columnNumber:19},void 0),e.jsxDEV("div",{className:"ma-suno-summary__form",children:[e.jsxDEV("label",{className:"ma-suno-summary__field",children:[e.jsxDEV("span",{children:"歌曲标题"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:604,columnNumber:23},void 0),e.jsxDEV("input",{className:"ma-input",value:F,onChange:r=>Z(r.target.value),placeholder:"可直接用于 Suno 的标题"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:605,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:603,columnNumber:21},void 0),e.jsxDEV("label",{className:"ma-suno-summary__field",children:[e.jsxDEV("span",{children:"Suno 风格标签"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:613,columnNumber:23},void 0),e.jsxDEV("input",{className:"ma-input",value:$,onChange:r=>le(r.target.value),placeholder:"逗号分隔的风格标签"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:614,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:612,columnNumber:21},void 0),e.jsxDEV("label",{className:"ma-suno-summary__field",children:[e.jsxDEV("span",{children:"带 Suno 标签的歌词草稿"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:622,columnNumber:23},void 0),e.jsxDEV("textarea",{className:"ma-textarea",rows:12,value:B,onChange:r=>ne(r.target.value),placeholder:"分析阶段整理出的可用歌词草稿"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:623,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:621,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:602,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:600,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:578,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:569,columnNumber:9},void 0),(z||d||w)&&e.jsxDEV("div",{className:"ma-status-stack",children:[z&&e.jsxDEV("div",{className:"ma-error",children:z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:641,columnNumber:21},void 0),d&&e.jsxDEV("div",{className:"ma-progress",children:d},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:642,columnNumber:24},void 0),w&&e.jsxDEV("div",{className:"ma-progress",children:w},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:643,columnNumber:33},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:640,columnNumber:9},void 0),e.jsxDEV("div",{className:"va-page-actions",children:g==="scratch"?e.jsxDEV("button",{className:"va-btn-primary",onClick:de,disabled:!y.trim()||!!D,children:"生成歌词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:649,columnNumber:11},void 0):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("button",{onClick:v,children:"新建"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:658,columnNumber:13},void 0),e.jsxDEV("button",{onClick:xe,disabled:!(a!=null&&a.analysis),children:"插入分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:659,columnNumber:13},void 0),e.jsxDEV("button",{className:"va-btn-primary",onClick:Q,disabled:!p||!!t,children:"开始分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:662,columnNumber:13},void 0),e.jsxDEV("button",{onClick:c,disabled:!a,children:"下一步"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:669,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:657,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:647,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:470,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/music-analyzer/pages/CreatePage.tsx",lineNumber:453,columnNumber:5},void 0)},ke="music-analyzer:model",Te="gemini-2.5-pro",ya=({record:a,onRecordUpdate:n,onRecordsChange:u,onNext:v})=>{var U,R,K,I;const[c,h]=s.useState(()=>Ve(a)),[g,k]=s.useState(a.lyricsDraft||""),[y,S]=s.useState(a.title||((R=(U=a.analysis)==null?void 0:U.titleSuggestions)==null?void 0:R[0])||""),[D,A]=s.useState((a.styleTags||((K=a.analysis)==null?void 0:K.genreTags)||[]).join(", ")),[w,C]=s.useState(()=>a.pendingRewriteTaskId||null),[p,P]=s.useState(""),[t,N]=s.useState(""),[d,j]=s.useState(()=>a.analysisModel||ue(ke,Te).modelId),[m,f]=s.useState(()=>a.analysisModelRef||ue(ke,Te).modelRef),[F,Z]=s.useState(!1),$=s.useRef(),le=s.useCallback((l,b)=>{j(l),f(b||null),fe(ke,l,b)},[]);s.useEffect(()=>{var l,b,V;h(Ve(a)),k(a.lyricsDraft||""),S(a.title||((b=(l=a.analysis)==null?void 0:l.titleSuggestions)==null?void 0:b[0])||""),A((a.styleTags||((V=a.analysis)==null?void 0:V.genreTags)||[]).join(", ")),C(a.pendingRewriteTaskId||null)},[a]),s.useEffect(()=>(clearTimeout($.current),$.current=setTimeout(async()=>{const l=D.split(",").map(V=>V.trim()).filter(Boolean),b=await se(a.id,{rewritePrompt:c,lyricsDraft:g,title:y,styleTags:l,pendingRewriteTaskId:w});u(b),n({...a,rewritePrompt:c,lyricsDraft:g,title:y,styleTags:l,pendingRewriteTaskId:w})},400),()=>clearTimeout($.current)),[g,n,u,w,a.id,c,D,y]);const B=pe("text"),ne=pe("audio"),re=s.useMemo(()=>$e(B,ne),[B,ne]),M=s.useMemo(()=>_e(d),[d]),J=s.useMemo(()=>{const l=[{id:qe,label:"原始版本"}];for(const b of a.lyricsVersions||[])l.push({id:b.id,label:b.label});return l},[a.lyricsVersions]),z=a.activeVersionId||qe,E=J.length>1,_=String(a.creationPrompt||"").trim(),ce=s.useCallback(async l=>{const b=Je(a,l);if(!b)return;const V=await se(a.id,b);u(V),n({...a,...b}),Z(!1)},[n,u,a]),ee=s.useCallback(async()=>{N(""),P(M?"歌词生成中...":"歌词改写中 0%");try{let l;if(M){const W=[c.trim()?`本轮改写要求:
|
|
2
2
|
${c.trim()}`:"",_&&_!==c.trim()?`第一步创作提示词:
|
|
3
3
|
${_}`:"",g.trim()?`当前歌词草稿:
|
|
4
4
|
${g.trim()}`:""].filter(Boolean).join(`
|