diff --git a/change.log.md b/change.log.md index d96740f..364ea59 100644 --- a/change.log.md +++ b/change.log.md @@ -1,6 +1,31 @@ [跳到中文](#中文) # English +## 2026-03-17 +### 🖼️ ComfyUI-Ready Image Dragging +Added drag-to-transfer functionality specifically designed for ComfyUI workflow integration. + +**Features:** +- **One-Click Image Access**: Click to display original images ready for dragging +- **ComfyUI Integration**: Drag images directly into ComfyUI to restore complete workflows +- **Dual Placement**: Available in both full-screen info panel and file grid overlays + + +**How to use:** +1. Click the "Click to get original image, grab and drag to other apps" button +2. The original image appears instantly +3. Drag the image directly into ComfyUI +4. ComfyUI will automatically extract metadata and reconstruct the workflow + +**Use Case:** +Perfect for moving images from IIB to ComfyUI. When you drag an image into ComfyUI: +- The original image is loaded +- Generation parameters are extracted from metadata +- The complete workflow is reconstructed automatically +- No manual parameter input required + +**Note:** This feature preserves all generation metadata in the image, enabling seamless workflow transfer to ComfyUI and other compatible tools. + ## 2026-03-15 ### 📝 Editable Generation Information Added the ability to edit image generation prompts and metadata directly in the UI. @@ -750,6 +775,30 @@ Triggered under the same circumstances as above, there will be a button to updat # 中文 +## 2026-03-17 +### 🖼️ 专为ComfyUI设计的图片拖拽功能 +新增了专为ComfyUI工作流还原设计的图片拖拽传输功能。 + +**功能特性:** +- **一键获取原图**:点击即可显示原始图片,随时准备拖拽 +- **ComfyUI集成**:可直接将图片拖拽到ComfyUI中,自动还原完整工作流 +- **双重入口**:在全屏信息面板和文件网格中均可使用) + +**使用方法:** +1. 点击"点击获取原图,抓取拖拽至其他应用"按钮 +2. 原始图片立即显示 +3. 将图片直接拖拽到ComfyUI界面中 +4. ComfyUI会自动提取元数据并重建工作流 + +**使用场景:** +完美支持从IIB到ComfyUI的图片转移。当您将图片拖拽到ComfyUI时: +- 原始图片被加载 +- 从元数据中提取生成参数 +- 自动重建完整工作流 +- 无需手动输入参数 + +**注意:** 此功能保留图片中的所有生成元数据,实现与ComfyUI及其他兼容工具的无缝工作流传输。 + ## 2026-03-15 ### 📝 可编辑的生成信息 新增了在界面中直接编辑图片生成提示词和元数据的功能。 diff --git a/javascript/index.js b/javascript/index.js index be04e29..5ece3f8 100644 --- a/javascript/index.js +++ b/javascript/index.js @@ -13,7 +13,7 @@ Promise.resolve().then(async () => {
MFrGXJqNrOUPCPqPrQ|]@`+`2h1lBlZnXp*r;rWrkz9{4{B}x-#c-#y-$;-$l-$y-%Q-%n-(i-(x-)i-/!-3*-5B-9V",wan:"#=$0&o.]0F4@5X5b6*628u9p -+b-+(-(_-(.-&h-#%{@wGuWs}s|rJrDlaWTV}V+NAMvKfIgGKFX9a7c,7&]&+%~",bie:"-/A-/;fGe2`#M'M!$!#I",pao:"-/>-+i-'^~o|2w=hA]$[P?.4J4H3d06.M'^%A!S",geng:"-/7-&A{TzHlrh=ZIOlK4IX=X2p&M",shua:"-//-%j",cuo:"-.y-.p-*5wukWkSh!ZKY&WuV4(o$j$'",kei:"-.woU",la:"-.v-%3-$n~L|8[RXFXEWnUEU2R`MOI6DT:T0['o$A",pou:"-.l-'_-&[{]twtO]+]&Z+YGJS/<",tuan:"-.I~!}~}K}HyPy&f7`>[}XIVmGLE;;.:m8t2[,F%v%p",zuan:"-.)XOTt",keng:"-,x-([|t|kvIZCXlVgBF/C",gao:"-,Z-(I-(>wRlpWjNHGxGwGdG>E~E3Dm,)!y!t",lang:"-,V-&J-$~{Jy[r{llgiSeOIOHO;KRHHG4Cp=[3Y,z*%(s",weng:"-,@-#oyxv{kfU!Pd9o'N'&",tao:"-+m-)E-'+-%DwPwMw*r}i/fl`j[oYBWXL,JkGtE?><=) ${A} MFrGXJqNrOUPCPqPrQ|]@`+`2h1lBlZnXp*r;rWrkz9{4{B}x-#c-#y-$;-$l-$y-%Q-%n-(i-(x-)i-/!-3*-5B-9V",wan:"#=$0&o.]0F4@5X5b6*628u9p -+b-+(-(_-(.-&h-#%{@wGuWs}s|rJrDlaWTV}V+NAMvKfIgGKFX9a7c,7&]&+%~",bie:"-/A-/;fGe2`#M'M!$!#I",pao:"-/>-+i-'^~o|2w=hA]$[P?.4J4H3d06.M'^%A!S",geng:"-/7-&A{TzHlrh=ZIOlK4IX=X2p&M",shua:"-//-%j",cuo:"-.y-.p-*5wukWkSh!ZKY&WuV4(o$j$'",kei:"-.woU",la:"-.v-%3-$n~L|8[RXFXEWnUEU2R`MOI6DT:T0['o$A",pou:"-.l-'_-&[{]twtO]+]&Z+YGJS/<",tuan:"-.I~!}~}K}HyPy&f7`>[}XIVmGLE;;.:m8t2[,F%v%p",zuan:"-.)XOTt",keng:"-,x-([|t|kvIZCXlVgBF/C",gao:"-,Z-(I-(>wRlpWjNHGxGwGdG>E~E3Dm,)!y!t",lang:"-,V-&J-$~{Jy[r{llgiSeOIOHO;KRHHG4Cp=[3Y,z*%(s",weng:"-,@-#oyxv{kfU!Pd9o'N'&",tao:"-+m-)E-'+-%DwPwMw*r}i/fl`j[oYBWXL,JkGtE?><=) ${A} ${x} ${nt} ${nt}ZYZZ]U_6_9d9fYj6j~lWm)mep)rQrbrctvwkxc{y|U}6~?~C~`~m-!Z-*'-+R-/j-0j-3i-4/-4@-5,-5f-6j-6s-7)-9G-9W-9X",tuo:"%U%V&z0L2J4v?{@$F_H6MUTbT~Y'Yc^QdHdQnVq+r`x1{{|;|<-&d-(.-(z-({-)1-)J-)K-*:-*e-*p-+$-+3-.b-/%-/[-0b-3O-4,-6_-8}-9$-9?",zhe:"#'%+%E'P2f2|
}I-*S-+S-0~-2b-5X-8{",cou:"@ThJiK",chuang:"'_,H,L,q{+{E",piao:"$+).1D7a:;
lMi@i$fDf@b1`Y_4XyW6TMMzJ$I:GOD{=#
{let t=0,n=1;for(let i=e.length;i--;)t+=n*Ea.indexOf(e.charAt(i)),n*=91;return t},cn=(e,t)=>{let n,i,l,m,o;for(n in e)if(e.hasOwnProperty(n))for(i=e[n].match(wa),l=0;l
');continue}const J=R[A];E||(E=J.includes("("));const b=["tag"];E&&b.push("has-parentheses"),J.length<32&&b.push("short-tag"),j.push(`${J}`),E&&(E=!J.includes(")"))}return j.join(i.showCommaInInfoPanel?",":" ")}Ct("load",a=>{const d=a.target;d.className==="ant-image-preview-img"&&(r.value=`${d.naturalWidth} x ${d.naturalHeight}`)},{capture:!0});const v=le(()=>{const a=[{name:se("fileSize"),val:n.file.size}];return r.value&&a.push({name:se("resolution"),val:r.value}),a}),T=()=>{const a="Negative prompt:",d=S.value.includes(a)?S.value.split(a)[0]:Q.value[0]??"";De(at(d.trim()))},P=()=>document.body.requestFullscreen(),W=a=>{De(typeof a=="object"?JSON.stringify(a,null,4):a)},oe=a=>{a.key.startsWith("Arrow")?(a.stopPropagation(),a.preventDefault(),document.dispatchEvent(new KeyboardEvent("keydown",a))):a.key==="Escape"&&document.fullscreenElement&&document.exitFullscreen()};Ct("dblclick",a=>{var d;((d=a.target)==null?void 0:d.className)==="ant-image-preview-img"&&Mt()});const re=le(()=>te.value||C.value.expanded),ve=Ie(lt+"contextShowFullPath",!1),Y=le(()=>ve.value?n.file.fullpath:n.file.name),ne=Ie(lt+"tagA2ZClassify",!1),Re=le(()=>{var R;const a=(R=i.conf)==null?void 0:R.all_custom_tags.map(j=>{var A,J;return{char:((A=j.display_name)==null?void 0:A[0])||((J=j.name)==null?void 0:J[0]),...j}}).reduce((j,E)=>{var J;let A="#";if(/[a-z]/i.test(E.char))A=E.char.toUpperCase();else if(/[\u4e00-\u9fa5]/.test(E.char))try{A=((J=/^\[?(\w)/.exec(Sa(E.char)+""))==null?void 0:J[1])??"#"}catch(b){console.log("err",b)}return A=A.toUpperCase(),j[A]||(j[A]=[]),j[A].push(E),j},{});return Object.entries(a??{}).sort((j,E)=>j[0].charCodeAt(0)-E[0].charCodeAt(0))}),Oe=()=>{Mt(),t("contextMenuClick",{key:"tiktokView"},n.file,n.idx)},Me=de(!1),et=async()=>{var a,d;if(!x.value.prompt){$e.warning(se("aiAnalyzeTagsNoPrompt"));return}if(!((d=(a=i.conf)==null?void 0:a.all_custom_tags)!=null&&d.length)){$e.warning(se("aiAnalyzeTagsNoCustomTags"));return}Me.value=!0;try{const R=x.value.prompt,E=`You are a professional AI assistant responsible for analyzing Stable Diffusion prompts and categorizing them into appropriate tags.
+*/let rn=19968,_a=(40896-rn)/2,ct="",Fe=",",ma=(()=>{let e=[];for(let t=33;t<127;t++)t!=34&&t!=92&&t!=45&&e.push(String.fromCharCode(t));return e.join(ct)})(),$t={a:{yi:"!]#R$!$q(3(p)[*2*g+6+d.C.q0[0w1L2<717l8B8E9?:8;V;[;e;{<)<+.>4??@~A`BbC:CGC^CiDMDjDkF!H/H;JaL?M.M2MoNCN|OgO|P$P)PBPyQ~R%R.S.T;TZYZZ]U_6_9d9fYj6j~lWm)mep)rQrbrctvwkxc{y|U}6~?~C~`~m-!Z-*'-+R-/j-0j-3i-4/-4@-5,-5f-6j-6s-7)-9G-9W-9X",tuo:"%U%V&z0L2J4v?{@$F_H6MUTbT~Y'Yc^QdHdQnVq+r`x1{{|;|<-&d-(.-(z-({-)1-)J-)K-*:-*e-*p-+$-+3-.b-/%-/[-0b-3O-4,-6_-8}-9$-9?",zhe:"#'%+%E'P2f2|
}I-*S-+S-0~-2b-5X-8{",cou:"@ThJiK",chuang:"'_,H,L,q{+{E",piao:"$+).1D7a:;
lMi@i$fDf@b1`Y_4XyW6TMMzJ$I:GOD{=#
{let t=0,n=1;for(let i=e.length;i--;)t+=n*ma.indexOf(e.charAt(i)),n*=91;return t},ln=(e,t)=>{let n,i,l,m,o;for(n in e)if(e.hasOwnProperty(n))for(i=e[n].match(ya),l=0;l
');continue}const J=R[A];w||(w=J.includes("("));const b=["tag"];w&&b.push("has-parentheses"),J.length<32&&b.push("short-tag"),j.push(`${J}`),w&&(w=!J.includes(")"))}return j.join(i.showCommaInInfoPanel?",":" ")}Ct("load",a=>{const d=a.target;d.className==="ant-image-preview-img"&&(r.value=`${d.naturalWidth} x ${d.naturalHeight}`)},{capture:!0});const _=le(()=>{const a=[{name:se("fileSize"),val:n.file.size}];return r.value&&a.push({name:se("resolution"),val:r.value}),a}),S=()=>{const a="Negative prompt:",d=T.value.includes(a)?T.value.split(a)[0]:Q.value[0]??"";ze(at(d.trim()))},P=()=>document.body.requestFullscreen(),W=a=>{ze(typeof a=="object"?JSON.stringify(a,null,4):a)},oe=a=>{a.key.startsWith("Arrow")?(a.stopPropagation(),a.preventDefault(),document.dispatchEvent(new KeyboardEvent("keydown",a))):a.key==="Escape"&&document.fullscreenElement&&document.exitFullscreen()};Ct("dblclick",a=>{var d;((d=a.target)==null?void 0:d.className)==="ant-image-preview-img"&&Ot()});const re=le(()=>te.value||C.value.expanded),ve=Ne(lt+"contextShowFullPath",!1),Y=le(()=>ve.value?n.file.fullpath:n.file.name),ne=Ne(lt+"tagA2ZClassify",!1),Re=le(()=>{var R;const a=(R=i.conf)==null?void 0:R.all_custom_tags.map(j=>{var A,J;return{char:((A=j.display_name)==null?void 0:A[0])||((J=j.name)==null?void 0:J[0]),...j}}).reduce((j,w)=>{var J;let A="#";if(/[a-z]/i.test(w.char))A=w.char.toUpperCase();else if(/[\u4e00-\u9fa5]/.test(w.char))try{A=((J=/^\[?(\w)/.exec(ka(w.char)+""))==null?void 0:J[1])??"#"}catch(b){console.log("err",b)}return A=A.toUpperCase(),j[A]||(j[A]=[]),j[A].push(w),j},{});return Object.entries(a??{}).sort((j,w)=>j[0].charCodeAt(0)-w[0].charCodeAt(0))}),Oe=()=>{Ot(),t("contextMenuClick",{key:"tiktokView"},n.file,n.idx)},Me=de(!1),et=async()=>{var a,d;if(!x.value.prompt){$e.warning(se("aiAnalyzeTagsNoPrompt"));return}if(!((d=(a=i.conf)==null?void 0:a.all_custom_tags)!=null&&d.length)){$e.warning(se("aiAnalyzeTagsNoCustomTags"));return}Me.value=!0;try{const R=x.value.prompt,w=`You are a professional AI assistant responsible for analyzing Stable Diffusion prompts and categorizing them into appropriate tags.
Your task is:
1. Analyze the given prompt
@@ -16,4 +16,4 @@ Your task is:
Available tags: ${i.conf.all_custom_tags.map(H=>H.name).join(", ")}
-Please return only tag names, do not include any other content.`,J=(await Mn({messages:[{role:"system",content:E},{role:"user",content:`Please analyze this prompt and return matching tags: ${R}`}],temperature:.3,max_tokens:200})).choices[0].message.content.trim();if(!J){$e.info(se("aiAnalyzeTagsNoMatchedTags"));return}const b=J.split(",").map(H=>H.trim()).filter(H=>H),be=i.conf.all_custom_tags.filter(H=>b.some(ie=>H.name.toLowerCase()===ie.toLowerCase()||H.name.toLowerCase().includes(ie.toLowerCase())||ie.toLowerCase().includes(H.name.toLowerCase()))),F=new Set(o.value.map(H=>H.id)),z=be.filter(H=>!F.has(H.id));if(z.length===0){be.length>0?$e.info(se("aiAnalyzeTagsAllTagsAlreadyAdded")):$e.info(se("aiAnalyzeTagsNoValidTags"));return}for(const H of z)t("contextMenuClick",{key:`toggle-tag-${H.id}`},n.file,n.idx);$e.success(se("aiAnalyzeTagsSuccess",[z.length.toString(),z.map(H=>H.name).join(", ")]))}catch(R){console.error("AI分析标签失败:",R),$e.error(se("aiAnalyzeTagsFailed"))}finally{Me.value=!1}},ye=async()=>{var d;await xn(n.file);const a=(d=n.file)==null?void 0:d.fullpath;a&&(u.tasks.forEach(R=>R.cancel()),u.pushAction(()=>Ot(a)).res.then(R=>{S.value=R}))};return(a,d)=>{var f,M,N;const R=Bn,j=Xe,E=Sn,A=Tn,J=Cn,b=Ln,be=Xe,F=An,z=zn,H=Dn,ie=Nn,Ae=In,ze=Pn,c=jn;return y(),O("div",{ref_key:"el",ref:m,class:it(["full-screen-menu",{"unset-size":!p(C).expanded,lr:p(te),"always-on":p(he),"mouse-in":Le.value}]),onWheelCapture:d[13]||(d[13]=St(()=>{},["stop"])),onKeydownCapture:oe},[p(te)?(y(),O("div",Ta)):X("",!0),_("div",Ca,[_("div",La,[p(te)?X("",!0):(y(),O("div",{key:0,ref_key:"dragHandle",ref:$,class:"icon",style:{cursor:"grab"},title:p(se)("dragToMovePanel")},[h(p(Zn))],8,Aa)),p(te)?X("",!0):(y(),O("div",{key:1,class:"icon",style:{cursor:"pointer"},onClick:d[0]||(d[0]=g=>p(C).expanded=!p(C).expanded),title:p(se)("clickToToggleMaximizeMinimize")},[re.value?(y(),ge(p(En),{key:0})):(y(),ge(p(wn),{key:1}))],8,za)),_("div",{style:{display:"flex","flex-direction":"column","align-items":"center",cursor:"grab"},class:"icon",title:p(se)("fullscreenview"),onClick:P},[_("img",{src:p(ci),style:{width:"21px",height:"21px","padding-bottom":"2px"},alt:""},null,8,Na)],8,Da),h(R,{"get-popup-container":Be},{overlay:k(()=>[h(Rn,{file:a.file,idx:a.idx,"selected-tag":o.value,onContextMenuClick:d[1]||(d[1]=(g,I,ce)=>t("contextMenuClick",g,I,ce))},null,8,["file","idx","selected-tag"])]),default:k(()=>[p(C).expanded?X("",!0):(y(),O("div",Ia,[h(p(xt))]))]),_:1}),re.value?(y(),O("div",Pa)):X("",!0),re.value?(y(),O("div",ja,[h(R,{trigger:["hover"],"get-popup-container":Be},{overlay:k(()=>[h(b,{onClick:d[2]||(d[2]=g=>t("contextMenuClick",g,a.file,a.idx))},{default:k(()=>{var g;return[((g=p(i).conf)==null?void 0:g.launch_mode)!=="server"?(y(),O(K,{key:0},[h(E,{key:"send2txt2img"},{default:k(()=>[D(w(a.$t("sendToTxt2img")),1)]),_:1}),h(E,{key:"send2img2img"},{default:k(()=>[D(w(a.$t("sendToImg2img")),1)]),_:1}),h(E,{key:"send2inpaint"},{default:k(()=>[D(w(a.$t("sendToInpaint")),1)]),_:1}),h(E,{key:"send2extras"},{default:k(()=>[D(w(a.$t("sendToExtraFeatures")),1)]),_:1}),h(A,{key:"sendToThirdPartyExtension",title:a.$t("sendToThirdPartyExtension")},{default:k(()=>[h(E,{key:"send2controlnet-txt2img"},{default:k(()=>[D("ControlNet - "+w(a.$t("t2i")),1)]),_:1}),h(E,{key:"send2controlnet-img2img"},{default:k(()=>[D("ControlNet - "+w(a.$t("i2i")),1)]),_:1}),h(E,{key:"send2outpaint"},{default:k(()=>[D("openOutpaint")]),_:1})]),_:1},8,["title"])],64)):X("",!0),h(E,{key:"send2BatchDownload"},{default:k(()=>[D(w(a.$t("sendToBatchDownload")),1)]),_:1}),h(A,{key:"copy2target",title:a.$t("copyTo")},{default:k(()=>[(y(!0),O(K,null,fe(p(i).quickMovePaths,I=>(y(),ge(E,{key:`copy-to-${I.dir}`},{default:k(()=>[D(w(I.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),h(A,{key:"move2target",title:a.$t("moveTo")},{default:k(()=>[(y(!0),O(K,null,fe(p(i).quickMovePaths,I=>(y(),ge(E,{key:`move-to-${I.dir}`},{default:k(()=>[D(w(I.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),h(J),h(E,{key:"deleteFiles"},{default:k(()=>[D(w(a.$t("deleteSelected")),1)]),_:1}),h(E,{key:"openWithDefaultApp"},{default:k(()=>[D(w(a.$t("openWithDefaultApp")),1)]),_:1}),h(E,{key:"previewInNewWindow"},{default:k(()=>[D(w(a.$t("previewInNewWindow")),1)]),_:1}),h(E,{key:"copyPreviewUrl"},{default:k(()=>[D(w(a.$t("copySourceFilePreviewLink")),1)]),_:1}),h(E,{key:"copyFilePath"},{default:k(()=>[D(w(a.$t("copyFilePath")),1)]),_:1}),h(J),h(E,{key:"tiktokView",onClick:Oe},{default:k(()=>[D(w(a.$t("tiktokView")),1)]),_:1})]}),_:1})]),default:k(()=>[h(j,null,{default:k(()=>[D(w(p(se)("openContextMenu")),1)]),_:1})]),_:1}),h(be,{onClick:d[3]||(d[3]=g=>t("contextMenuClick",{key:"download"},n.file,n.idx))},{default:k(()=>[D(w(a.$t("download")),1)]),_:1}),S.value?(y(),ge(j,{key:0,onClick:d[4]||(d[4]=g=>p(De)(S.value))},{default:k(()=>[D(w(a.$t("copyPrompt")),1)]),_:1})):X("",!0),S.value?(y(),ge(j,{key:1,onClick:T},{default:k(()=>[D(w(a.$t("copyPositivePrompt")),1)]),_:1})):X("",!0),S.value&&((M=(f=p(i).conf)==null?void 0:f.all_custom_tags)!=null&&M.length)?(y(),ge(j,{key:2,onClick:et,loading:Me.value},{default:k(()=>[D(w(a.$t("aiAnalyzeTags")),1)]),_:1},8,["loading"])):X("",!0),h(j,{onClick:Oe,onTouchstart:St(Oe,["prevent"]),type:"default"},{default:k(()=>[D(w(a.$t("tiktokView")),1)]),_:1},8,["onTouchstart"]),D(),h(j,{onClick:ye},{icon:k(()=>[h(p(Ne))]),default:k(()=>[D(" "+w(a.$t("editPrompt")),1)]),_:1})])):X("",!0)]),re.value?(y(),O("div",Ba,[_("div",Ra,[_("span",Ua,[_("span",Ha,w(a.$t("fileName")),1),_("span",{class:"value",title:Y.value,onDblclick:d[5]||(d[5]=g=>p(De)(Y.value))},w(Y.value),41,Wa),_("span",{style:{margin:"0 8px",cursor:"pointer"},title:"Click to expand full path",onClick:d[6]||(d[6]=g=>ve.value=!p(ve))},[h(p(xt))])]),(y(!0),O(K,null,fe(v.value,g=>(y(),O("span",{class:"info-tag",key:g.name},[_("span",Fa,w(g.name),1),_("span",{class:"value",title:g.val,onDblclick:I=>p(De)(g.val)},w(g.val),41,Xa)]))),128))]),(N=p(i).conf)!=null&&N.all_custom_tags?(y(),O("div",qa,[_("div",{class:"sort-tag-switch",onClick:d[7]||(d[7]=g=>ne.value=!p(ne))},[p(ne)?(y(),ge(p(kn),{key:1})):(y(),ge(p(li),{key:0}))]),_("div",{class:"tag",onClick:d[8]||(d[8]=(...g)=>p(Tt)&&p(Tt)(...g)),style:nt({"--tag-color":"var(--zp-luminous)"})},"+ "+w(a.$t("add")),5),p(ne)?(y(!0),O(K,{key:0},fe(Re.value,([g,I])=>(y(),O("div",{key:g,class:"tag-alpha-item"},[_("h4",Ja,w(g)+" : ",1),_("div",null,[(y(!0),O(K,null,fe(I,ce=>(y(),O("div",{class:it(["tag",{selected:o.value.some(Ue=>Ue.id===ce.id)}]),onClick:Ue=>t("contextMenuClick",{key:`toggle-tag-${ce.id}`},a.file,a.idx),key:ce.id,style:nt({"--tag-color":p(l).getColor(ce)})},w(ce.name),15,Ga))),128))])]))),128)):(y(!0),O(K,{key:1},fe(p(i).conf.all_custom_tags,g=>(y(),O("div",{class:it(["tag",{selected:o.value.some(I=>I.id===g.id)}]),onClick:I=>t("contextMenuClick",{key:`toggle-tag-${g.id}`},a.file,a.idx),key:g.id,style:nt({"--tag-color":p(l).getColor(g)})},w(g.name),15,Va))),128))])):X("",!0),_("div",Ya,[_("div",Ka,[D(w(a.$t("experimentalLRLayout"))+": ",1),h(F,{checked:p(te),"onUpdate:checked":d[9]||(d[9]=g=>He(te)?te.value=g:null),size:"small"},null,8,["checked"])]),p(te)?(y(),O(K,{key:0},[_("div",Za,[D(w(a.$t("width"))+": ",1),h(z,{value:p(ae),"onUpdate:value":d[10]||(d[10]=g=>He(ae)?ae.value=g:null),style:{width:"64px"},step:16,min:128,max:1024},null,8,["value"])]),h(H,{title:a.$t("alwaysOnTooltipInfo")},{default:k(()=>[_("div",Qa,[D(w(a.$t("alwaysOn"))+": ",1),h(F,{checked:p(he),"onUpdate:checked":d[11]||(d[11]=g=>He(he)?he.value=g:null),size:"small"},null,8,["checked"])])]),_:1},8,["title"])],64)):X("",!0)]),h(c,{activeKey:p(G),"onUpdate:activeKey":d[12]||(d[12]=g=>He(G)?G.value=g:null)},{default:k(()=>[h(ie,{key:"structedData",tab:a.$t("structuredData")},{default:k(()=>[_("div",null,[x.value.prompt?(y(),O(K,{key:0},[es,_("div",ts,[ns,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(p(Ne))],8,is)]),_("code",{innerHTML:s(x.value.prompt??"")},null,8,as)],64)):X("",!0),x.value.negativePrompt?(y(),O(K,{key:1},[ss,_("div",os,[rs,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(p(Ne))],8,ls)]),_("code",{innerHTML:s(x.value.negativePrompt??"")},null,8,cs)],64)):X("",!0)]),Object.keys(B.value).length?(y(),O(K,{key:0},[us,_("div",ds,[gs,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(p(Ne))],8,fs)]),_("table",null,[(y(!0),O(K,null,fe(B.value,(g,I)=>(y(),O("tr",{key:I,class:"gen-info-frag"},[_("td",hs,w(I),1),typeof g=="object"?(y(),O("td",{key:0,style:{cursor:"pointer"},onDblclick:ce=>W(g)},[_("code",null,w(g),1)],40,ps)):(y(),O("td",{key:1,style:{cursor:"pointer"},onDblclick:ce=>W(p(at)(g))},w(p(at)(g)),41,vs))]))),128))])],64)):X("",!0),q.value&&Object.keys(q.value).length?(y(),O(K,{key:1},[_s,_("div",ms,[ys,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(p(Ne))],8,bs)]),_("table",$s,[(y(!0),O(K,null,fe(q.value,(g,I)=>(y(),O("tr",{key:I,class:"gen-info-frag"},[_("td",Es,w(I),1),_("td",{style:{cursor:"pointer"},onDblclick:ce=>W(g)},[_("code",ks,w(typeof g=="string"?g:JSON.stringify(g,null,2)),1)],40,ws)]))),128))])],64)):X("",!0)]),_:1},8,["tab"]),h(ie,{key:"sourceText",tab:a.$t("sourceText")},{default:k(()=>[_("code",null,w(S.value),1)]),_:1},8,["tab"]),h(ie,{key:"exif",tab:"EXIF"},{default:k(()=>[h(ze,{spinning:Z.value},{default:k(()=>[L.value&&Object.keys(L.value).length?(y(),O("div",Os,[h(_a,{data:L.value},null,8,["data"])])):Z.value?X("",!0):(y(),O("div",Ms,[h(Ae,{description:"No EXIF data available"})]))]),_:1},8,["spinning"])]),_:1})]),_:1},8,["activeKey"])])):X("",!0)]),p(C).expanded&&!p(te)?(y(),O("div",{key:1,class:"mouse-sensor",ref_key:"resizeHandle",ref:ue,title:p(se)("dragToResizePanel")},[h(p(Gn))],8,xs)):X("",!0)],34)}}});const Bs=dt(Ss,[["__scopeId","data-v-77ce3e37"]]),Ts={key:0,class:"float-panel"},Cs={key:0,class:"select-actions"},Ls={key:1},As=ut({__name:"MultiSelectKeep",props:{show:{type:Boolean}},emits:["selectAll","reverseSelect","clearAllSelected"],setup(e,{emit:t}){const n=Ve(),i=()=>{t("clearAllSelected"),n.keepMultiSelect=!1},l=()=>{n.keepMultiSelect=!0};return(m,o)=>{const r=Xe;return m.show?(y(),O("div",Ts,[p(n).keepMultiSelect?(y(),O("div",Cs,[h(r,{size:"small",onClick:o[0]||(o[0]=u=>t("selectAll"))},{default:k(()=>[D(w(m.$t("select-all")),1)]),_:1}),h(r,{size:"small",onClick:o[1]||(o[1]=u=>t("reverseSelect"))},{default:k(()=>[D(w(m.$t("rerverse-select")),1)]),_:1}),h(r,{size:"small",onClick:o[2]||(o[2]=u=>t("clearAllSelected"))},{default:k(()=>[D(w(m.$t("clear-all-selected")),1)]),_:1}),h(r,{size:"small",onClick:i},{default:k(()=>[D(w(m.$t("exit")),1)]),_:1})])):(y(),O("div",Ls,[h(r,{size:"small",type:"primary",onClick:l},{default:k(()=>[D(w(m.$t("keep-multi-selected")),1)]),_:1})]))])):X("",!0)}}});const Rs=dt(As,[["__scopeId","data-v-b04c3508"]]);export{Ps as L,Rs as M,js as R,Bs as f};
+Please return only tag names, do not include any other content.`,J=(await On({messages:[{role:"system",content:w},{role:"user",content:`Please analyze this prompt and return matching tags: ${R}`}],temperature:.3,max_tokens:200})).choices[0].message.content.trim();if(!J){$e.info(se("aiAnalyzeTagsNoMatchedTags"));return}const b=J.split(",").map(H=>H.trim()).filter(H=>H),be=i.conf.all_custom_tags.filter(H=>b.some(ie=>H.name.toLowerCase()===ie.toLowerCase()||H.name.toLowerCase().includes(ie.toLowerCase())||ie.toLowerCase().includes(H.name.toLowerCase()))),F=new Set(o.value.map(H=>H.id)),z=be.filter(H=>!F.has(H.id));if(z.length===0){be.length>0?$e.info(se("aiAnalyzeTagsAllTagsAlreadyAdded")):$e.info(se("aiAnalyzeTagsNoValidTags"));return}for(const H of z)t("contextMenuClick",{key:`toggle-tag-${H.id}`},n.file,n.idx);$e.success(se("aiAnalyzeTagsSuccess",[z.length.toString(),z.map(H=>H.name).join(", ")]))}catch(R){console.error("AI分析标签失败:",R),$e.error(se("aiAnalyzeTagsFailed"))}finally{Me.value=!1}},ye=async()=>{var d;await Mn(n.file);const a=(d=n.file)==null?void 0:d.fullpath;a&&(u.tasks.forEach(R=>R.cancel()),u.pushAction(()=>kt(a)).res.then(R=>{T.value=R}))};return(a,d)=>{var h,M,N;const R=jn,j=Xe,w=xn,A=Tn,J=Sn,b=Cn,be=Xe,F=Ln,z=An,H=zn,ie=Dn,Le=Nn,Ae=In,c=Pn;return y(),O("div",{ref_key:"el",ref:m,class:it(["full-screen-menu",{"unset-size":!p(C).expanded,lr:p(te),"always-on":p(he),"mouse-in":Ce.value}]),onWheelCapture:d[13]||(d[13]=xt(()=>{},["stop"])),onKeydownCapture:oe},[p(te)?(y(),O("div",Oa)):X("",!0),v("div",Ma,[v("div",xa,[p(te)?X("",!0):(y(),O("div",{key:0,ref_key:"dragHandle",ref:$,class:"icon",style:{cursor:"grab"},title:p(se)("dragToMovePanel")},[f(p(St))],8,Ta)),p(te)?X("",!0):(y(),O("div",{key:1,class:"icon",style:{cursor:"pointer"},onClick:d[0]||(d[0]=g=>p(C).expanded=!p(C).expanded),title:p(se)("clickToToggleMaximizeMinimize")},[re.value?(y(),ge(p($n),{key:0})):(y(),ge(p(En),{key:1}))],8,Sa)),v("div",{style:{display:"flex","flex-direction":"column","align-items":"center",cursor:"grab"},class:"icon",title:p(se)("fullscreenview"),onClick:P},[v("img",{src:p(si),style:{width:"21px",height:"21px","padding-bottom":"2px"},alt:""},null,8,La)],8,Ca),f(R,{"get-popup-container":Be},{overlay:k(()=>[f(Bn,{file:a.file,idx:a.idx,"selected-tag":o.value,onContextMenuClick:d[1]||(d[1]=(g,I,ce)=>t("contextMenuClick",g,I,ce))},null,8,["file","idx","selected-tag"])]),default:k(()=>[p(C).expanded?X("",!0):(y(),O("div",Aa,[f(p(Mt))]))]),_:1}),re.value?(y(),O("div",za)):X("",!0),re.value?(y(),O("div",Da,[f(R,{trigger:["hover"],"get-popup-container":Be},{overlay:k(()=>[f(b,{onClick:d[2]||(d[2]=g=>t("contextMenuClick",g,a.file,a.idx))},{default:k(()=>{var g;return[((g=p(i).conf)==null?void 0:g.launch_mode)!=="server"?(y(),O(K,{key:0},[f(w,{key:"send2txt2img"},{default:k(()=>[D(E(a.$t("sendToTxt2img")),1)]),_:1}),f(w,{key:"send2img2img"},{default:k(()=>[D(E(a.$t("sendToImg2img")),1)]),_:1}),f(w,{key:"send2inpaint"},{default:k(()=>[D(E(a.$t("sendToInpaint")),1)]),_:1}),f(w,{key:"send2extras"},{default:k(()=>[D(E(a.$t("sendToExtraFeatures")),1)]),_:1}),f(A,{key:"sendToThirdPartyExtension",title:a.$t("sendToThirdPartyExtension")},{default:k(()=>[f(w,{key:"send2controlnet-txt2img"},{default:k(()=>[D("ControlNet - "+E(a.$t("t2i")),1)]),_:1}),f(w,{key:"send2controlnet-img2img"},{default:k(()=>[D("ControlNet - "+E(a.$t("i2i")),1)]),_:1}),f(w,{key:"send2outpaint"},{default:k(()=>[D("openOutpaint")]),_:1})]),_:1},8,["title"])],64)):X("",!0),f(w,{key:"send2BatchDownload"},{default:k(()=>[D(E(a.$t("sendToBatchDownload")),1)]),_:1}),f(A,{key:"copy2target",title:a.$t("copyTo")},{default:k(()=>[(y(!0),O(K,null,fe(p(i).quickMovePaths,I=>(y(),ge(w,{key:`copy-to-${I.dir}`},{default:k(()=>[D(E(I.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),f(A,{key:"move2target",title:a.$t("moveTo")},{default:k(()=>[(y(!0),O(K,null,fe(p(i).quickMovePaths,I=>(y(),ge(w,{key:`move-to-${I.dir}`},{default:k(()=>[D(E(I.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),f(J),f(w,{key:"deleteFiles"},{default:k(()=>[D(E(a.$t("deleteSelected")),1)]),_:1}),f(w,{key:"openWithDefaultApp"},{default:k(()=>[D(E(a.$t("openWithDefaultApp")),1)]),_:1}),f(w,{key:"previewInNewWindow"},{default:k(()=>[D(E(a.$t("previewInNewWindow")),1)]),_:1}),f(w,{key:"copyPreviewUrl"},{default:k(()=>[D(E(a.$t("copySourceFilePreviewLink")),1)]),_:1}),f(w,{key:"copyFilePath"},{default:k(()=>[D(E(a.$t("copyFilePath")),1)]),_:1}),f(J),f(w,{key:"tiktokView",onClick:Oe},{default:k(()=>[D(E(a.$t("tiktokView")),1)]),_:1})]}),_:1})]),default:k(()=>[f(j,null,{default:k(()=>[D(E(p(se)("openContextMenu")),1)]),_:1})]),_:1}),f(be,{onClick:d[3]||(d[3]=g=>t("contextMenuClick",{key:"download"},n.file,n.idx))},{default:k(()=>[D(E(a.$t("download")),1)]),_:1}),T.value?(y(),ge(j,{key:0,onClick:d[4]||(d[4]=g=>p(ze)(T.value))},{default:k(()=>[D(E(a.$t("copyPrompt")),1)]),_:1})):X("",!0),T.value?(y(),ge(j,{key:1,onClick:S},{default:k(()=>[D(E(a.$t("copyPositivePrompt")),1)]),_:1})):X("",!0),T.value&&((M=(h=p(i).conf)==null?void 0:h.all_custom_tags)!=null&&M.length)?(y(),ge(j,{key:2,onClick:et,loading:Me.value},{default:k(()=>[D(E(a.$t("aiAnalyzeTags")),1)]),_:1},8,["loading"])):X("",!0),f(j,{onClick:Oe,onTouchstart:xt(Oe,["prevent"]),type:"default"},{default:k(()=>[D(E(a.$t("tiktokView")),1)]),_:1},8,["onTouchstart"]),D(),f(j,{onClick:ye},{icon:k(()=>[f(p(De))]),default:k(()=>[D(" "+E(a.$t("editPrompt")),1)]),_:1})])):X("",!0)]),re.value?(y(),O("div",Na,[v("div",Ia,[v("span",Pa,[v("span",ja,E(a.$t("fileName")),1),v("span",{class:"value",title:Y.value,onDblclick:d[5]||(d[5]=g=>p(ze)(Y.value))},E(Y.value),41,Ba),v("span",{style:{margin:"0 8px",cursor:"pointer"},title:"Click to expand full path",onClick:d[6]||(d[6]=g=>ve.value=!p(ve))},[f(p(Mt))])]),(y(!0),O(K,null,fe(_.value,g=>(y(),O("span",{class:"info-tag",key:g.name},[v("span",Ra,E(g.name),1),v("span",{class:"value",title:g.val,onDblclick:I=>p(ze)(g.val)},E(g.val),41,Ua)]))),128))]),(N=p(i).conf)!=null&&N.all_custom_tags?(y(),O("div",Ha,[v("div",{class:"sort-tag-switch",onClick:d[7]||(d[7]=g=>ne.value=!p(ne))},[p(ne)?(y(),ge(p(wn),{key:1})):(y(),ge(p(ai),{key:0}))]),v("div",{class:"tag",onClick:d[8]||(d[8]=(...g)=>p(Tt)&&p(Tt)(...g)),style:nt({"--tag-color":"var(--zp-luminous)"})},"+ "+E(a.$t("add")),5),p(ne)?(y(!0),O(K,{key:0},fe(Re.value,([g,I])=>(y(),O("div",{key:g,class:"tag-alpha-item"},[v("h4",Wa,E(g)+" : ",1),v("div",null,[(y(!0),O(K,null,fe(I,ce=>(y(),O("div",{class:it(["tag",{selected:o.value.some(Ue=>Ue.id===ce.id)}]),onClick:Ue=>t("contextMenuClick",{key:`toggle-tag-${ce.id}`},a.file,a.idx),key:ce.id,style:nt({"--tag-color":p(l).getColor(ce)})},E(ce.name),15,Fa))),128))])]))),128)):(y(!0),O(K,{key:1},fe(p(i).conf.all_custom_tags,g=>(y(),O("div",{class:it(["tag",{selected:o.value.some(I=>I.id===g.id)}]),onClick:I=>t("contextMenuClick",{key:`toggle-tag-${g.id}`},a.file,a.idx),key:g.id,style:nt({"--tag-color":p(l).getColor(g)})},E(g.name),15,Xa))),128))])):X("",!0),v("div",qa,[v("div",Ja,[D(E(a.$t("experimentalLRLayout"))+": ",1),f(F,{checked:p(te),"onUpdate:checked":d[9]||(d[9]=g=>He(te)?te.value=g:null),size:"small"},null,8,["checked"])]),p(te)?(y(),O(K,{key:0},[v("div",Ga,[D(E(a.$t("width"))+": ",1),f(z,{value:p(ae),"onUpdate:value":d[10]||(d[10]=g=>He(ae)?ae.value=g:null),style:{width:"64px"},step:16,min:128,max:1024},null,8,["value"])]),f(H,{title:a.$t("alwaysOnTooltipInfo")},{default:k(()=>[v("div",Va,[D(E(a.$t("alwaysOn"))+": ",1),f(F,{checked:p(he),"onUpdate:checked":d[11]||(d[11]=g=>He(he)?he.value=g:null),size:"small"},null,8,["checked"])])]),_:1},8,["title"])],64)):X("",!0)]),f(Rn,{file:a.file},{default:k(()=>[v("div",Ya,[f(p(St),{class:"trigger-icon"}),v("span",Ka,E(a.$t("dragImageToTransfer")),1)])]),_:1},8,["file"]),f(c,{activeKey:p(G),"onUpdate:activeKey":d[12]||(d[12]=g=>He(G)?G.value=g:null)},{default:k(()=>[f(ie,{key:"structedData",tab:a.$t("structuredData")},{default:k(()=>[v("div",null,[x.value.prompt?(y(),O(K,{key:0},[Za,v("div",Qa,[es,v("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[f(p(De))],8,ts)]),v("code",{innerHTML:s(x.value.prompt??"")},null,8,ns)],64)):X("",!0),x.value.negativePrompt?(y(),O(K,{key:1},[is,v("div",as,[ss,v("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[f(p(De))],8,os)]),v("code",{innerHTML:s(x.value.negativePrompt??"")},null,8,rs)],64)):X("",!0)]),Object.keys(B.value).length?(y(),O(K,{key:0},[ls,v("div",cs,[us,v("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[f(p(De))],8,ds)]),v("table",null,[(y(!0),O(K,null,fe(B.value,(g,I)=>(y(),O("tr",{key:I,class:"gen-info-frag"},[v("td",gs,E(I),1),typeof g=="object"?(y(),O("td",{key:0,style:{cursor:"pointer"},onDblclick:ce=>W(g)},[v("code",null,E(g),1)],40,fs)):(y(),O("td",{key:1,style:{cursor:"pointer"},onDblclick:ce=>W(p(at)(g))},E(p(at)(g)),41,hs))]))),128))])],64)):X("",!0),q.value&&Object.keys(q.value).length?(y(),O(K,{key:1},[ps,v("div",vs,[_s,v("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[f(p(De))],8,ms)]),v("table",ys,[(y(!0),O(K,null,fe(q.value,(g,I)=>(y(),O("tr",{key:I,class:"gen-info-frag"},[v("td",bs,E(I),1),v("td",{style:{cursor:"pointer"},onDblclick:ce=>W(g)},[v("code",Es,E(typeof g=="string"?g:JSON.stringify(g,null,2)),1)],40,$s)]))),128))])],64)):X("",!0)]),_:1},8,["tab"]),f(ie,{key:"sourceText",tab:a.$t("sourceText")},{default:k(()=>[v("code",null,E(T.value),1)]),_:1},8,["tab"]),f(ie,{key:"exif",tab:"EXIF"},{default:k(()=>[f(Ae,{spinning:Z.value},{default:k(()=>[L.value&&Object.keys(L.value).length?(y(),O("div",ws,[f(fa,{data:L.value},null,8,["data"])])):Z.value?X("",!0):(y(),O("div",ks,[f(Le,{description:"No EXIF data available"})]))]),_:1},8,["spinning"])]),_:1})]),_:1},8,["activeKey"])])):X("",!0)]),p(C).expanded&&!p(te)?(y(),O("div",{key:1,class:"mouse-sensor",ref_key:"resizeHandle",ref:ue,title:p(se)("dragToResizePanel")},[f(p(Gn))],8,Os)):X("",!0)],34)}}});const Ps=dt(Ms,[["__scopeId","data-v-49abc687"]]),xs={key:0,class:"float-panel"},Ts={key:0,class:"select-actions"},Ss={key:1},Cs=ut({__name:"MultiSelectKeep",props:{show:{type:Boolean}},emits:["selectAll","reverseSelect","clearAllSelected"],setup(e,{emit:t}){const n=Ve(),i=()=>{t("clearAllSelected"),n.keepMultiSelect=!1},l=()=>{n.keepMultiSelect=!0};return(m,o)=>{const r=Xe;return m.show?(y(),O("div",xs,[p(n).keepMultiSelect?(y(),O("div",Ts,[f(r,{size:"small",onClick:o[0]||(o[0]=u=>t("selectAll"))},{default:k(()=>[D(E(m.$t("select-all")),1)]),_:1}),f(r,{size:"small",onClick:o[1]||(o[1]=u=>t("reverseSelect"))},{default:k(()=>[D(E(m.$t("rerverse-select")),1)]),_:1}),f(r,{size:"small",onClick:o[2]||(o[2]=u=>t("clearAllSelected"))},{default:k(()=>[D(E(m.$t("clear-all-selected")),1)]),_:1}),f(r,{size:"small",onClick:i},{default:k(()=>[D(E(m.$t("exit")),1)]),_:1})])):(y(),O("div",Ss,[f(r,{size:"small",type:"primary",onClick:l},{default:k(()=>[D(E(m.$t("keep-multi-selected")),1)]),_:1})]))])):X("",!0)}}});const js=dt(Cs,[["__scopeId","data-v-b04c3508"]]);export{Ns as L,js as M,Is as R,Ps as f};
diff --git a/vue/dist/assets/SubstrSearch-3027c28e.js b/vue/dist/assets/SubstrSearch-95d756e3.js
similarity index 96%
rename from vue/dist/assets/SubstrSearch-3027c28e.js
rename to vue/dist/assets/SubstrSearch-95d756e3.js
index 05a7f99..aa0fcc0 100644
--- a/vue/dist/assets/SubstrSearch-3027c28e.js
+++ b/vue/dist/assets/SubstrSearch-95d756e3.js
@@ -1 +1 @@
-import{c as a,A as Ee,d as Pe,bm as He,aC as Ge,r as w,v as Ke,bq as se,s as Le,bs as je,bt as qe,x as Ne,W as Je,X as We,br as ne,bu as Qe,p as Xe,o as p,j as z,C as t,E as e,k as d,l as o,t as i,B as _,m as g,G,bC as Ze,V as U,F as ie,H as oe,I as Ye,U as et,Z as re,a3 as ue,av as tt,a2 as at,bD as lt,a0 as st,by as nt,a1 as it,a8 as ot,aw as rt,ax as ut,bE as dt,n as pt}from"./index-ac2041d9.js";import{s as ct,F as ft}from"./FileItem-b13cf2ec.js";import{M as vt,L as gt,R as mt,f as _t}from"./MultiSelectKeep-964aa0b8.js";import{c as ht,u as yt}from"./hook-aaf791cf.js";import{g as bt,o as kt}from"./index-087e0eb8.js";import{f as F,H as de,T as wt,_ as St,a as Ct}from"./TipsCarousel-be9bd830.js";import"./index-e0feaff2.js";import"./shortcut-7567da19.js";import"./_isIterateeCall-43a7a0bb.js";var xt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M952 474H829.8C812.5 327.6 696.4 211.5 550 194.2V72c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v122.2C327.6 211.5 211.5 327.6 194.2 474H72c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h122.2C211.5 696.4 327.6 812.5 474 829.8V952c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V829.8C696.4 812.5 812.5 696.4 829.8 550H952c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM512 756c-134.8 0-244-109.2-244-244s109.2-244 244-244 244 109.2 244 244-109.2 244-244 244z"}},{tag:"path",attrs:{d:"M512 392c-32.1 0-62.1 12.4-84.8 35.2-22.7 22.7-35.2 52.7-35.2 84.8s12.5 62.1 35.2 84.8C449.9 619.4 480 632 512 632s62.1-12.5 84.8-35.2C619.4 574.1 632 544 632 512s-12.5-62.1-35.2-84.8A118.57 118.57 0 00512 392z"}}]},name:"aim",theme:"outlined"};const It=xt;function pe(c){for(var r=1;r
');continue}const O=w[x];C||(C=O.includes("("));const P=["background: var(--zp-secondary-variant-background)","color: var(--zp-primary)","padding: 2px 6px","border-radius: 4px","margin-right: 6px","margin-top: 4px","display: inline-block"];C&&P.push("border: 1px solid var(--zp-secondary)"),g(O)<32&&P.push("font-size: 0.9em"),S.push(`${O}`),C&&(C=!O.includes(")"))}return S.join(" ")};c();const m=()=>{n==null||n(),TY(),h.destroy()},h=Pt.confirm({width:r==="video"?"80vw":"70vw",title:t.name,icon:null,content:()=>_("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column"}},[r==="video"?_("video",{ref:s,style:{maxHeight:hq?"80vh":"60vh",maxWidth:"100%",minWidth:"70%"},src:gq(t),controls:!0,autoplay:!0},null):_(Ae,null,[_("div",{style:{fontSize:"80px",marginBottom:"16px"}},[Ye("🎵")]),_("audio",{style:{width:"100%",maxWidth:"500px"},src:bq(t),controls:!0,autoplay:!0},null)]),_("div",{style:{marginTop:"16px"}},[_("div",{onClick:Av,style:{background:"var(--zp-primary-background)",color:"var(--zp-luminous)",border:"2px solid var(--zp-luminous)",...f}},[fe("addNewCustomTag")]),i.conf.all_custom_tags.map(y=>_("div",{key:y.id,onClick:()=>e==null?void 0:e(y.id),style:{background:o(y.id)?a.getColor(y):"var(--zp-primary-background)",color:o(y.id)?"white":a.getColor(y),border:`2px solid ${a.getColor(y)}`,...f}},[y.name]))]),_("div",{class:"actions",style:{marginTop:"16px"}},[_(Wt,{onClick:()=>wq([Ta(t,!0)])},{icon:_(z9,null,null),default:fe("download")}),n&&_(Wt,{onClick:m,type:"primary"},{default:fe("tiktokView")}),r==="video"&&_(Wt,{onClick:async()=>{if(!s.value)return;const y=s.value;y.pause();const b=OY(y);await Mq({path:t.fullpath,base64_img:b,updated_time:t.date}),t.cover_url=URL.createObjectURL(await PY(b,"cover")),mt.success(fe("success")+"! "+fe("clearCacheIfNotTakeEffect"))}},{default:fe("setCurrFrameAsVideoPoster")}),_(Wt,{onClick:async()=>{await NT(t),await c()},icon:_(LP,null,null)},{default:fe("editPrompt")})]),u.value?_("div",{style:{marginTop:"24px",width:"100%",textAlign:"center"}},[_(ei,null,null)]):l.value?_("div",{style:{marginTop:"24px",width:"100%",maxWidth:r==="video"?"1000px":"900px",alignSelf:"flex-start"}},[_("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"12px",color:"var(--zp-primary)",fontSize:"14px",fontWeight:500}},[_(IT,null,null),_("span",null,[Ye("Prompt")])]),p().prompt&&_("div",{style:{marginBottom:"12px"}},[_("div",{style:{fontSize:"12px",color:"var(--zp-primary)",marginBottom:"6px"}},[Ye("Positive")]),_("code",{style:{fontSize:"13px",display:"block",padding:"10px 12px",background:"var(--zp-primary-background)",borderRadius:"8px",whiteSpace:"pre-wrap",wordBreak:"break-word",lineHeight:"1.6em"},innerHTML:v(p().prompt??"")},null)]),p().negativePrompt&&_("div",{style:{marginBottom:"12px"}},[_("div",{style:{fontSize:"12px",color:"var(--zp-primary)",marginBottom:"6px"}},[Ye("Negative")]),_("code",{style:{fontSize:"13px",display:"block",padding:"10px 12px",background:"var(--zp-primary-background)",borderRadius:"8px",whiteSpace:"pre-wrap",wordBreak:"break-word",lineHeight:"1.6em"},innerHTML:v(p().negativePrompt??"")},null)]),Object.entries(p()).filter(([y])=>y!=="prompt"&&y!=="negativePrompt").length>0&&_("div",null,[_("div",{style:{fontSize:"12px",color:"var(--zp-primary)",marginBottom:"6px"}},[Ye("Meta")]),_("code",{style:{fontSize:"12px",display:"block",padding:"8px 12px",background:"var(--zp-secondary-background)",borderRadius:"6px",whiteSpace:"pre-wrap",wordBreak:"break-word",lineHeight:"1.5em",color:"var(--zp-primary)",opacity:.7}},[Object.entries(p()).filter(([y])=>y!=="prompt"&&y!=="negativePrompt").map(([y,b])=>`${y.charAt(0).toUpperCase()+y.slice(1)}: ${b}`).join(`
`)])])]):null]),maskClosable:!0,wrapClassName:"hidden-antd-btns-modal"})},dre=(t,e,n)=>MT(t,e,n,"video"),vre=(t,e,n)=>MT(t,e,n,"audio"),pre=()=>{Pt.confirm({title:fe("confirmRebuildImageIndex"),onOk:async()=>{await cY(),gr.emit("searchIndexExpired"),mt.success(fe("rebuildComplete"))}})},hre=t=>{const e=L(t.split(/[\\/]/).pop()??"");return new Promise(n=>{Pt.confirm({title:fe("rename"),content:()=>_(At,{value:e.value,"onUpdate:value":r=>e.value=r},null),async onOk(){if(!e.value)return;const r=await fY({path:t,name:e.value});n(r.new_path)}})})},Av=()=>{const t=L(""),e=dn();return new Promise(n=>{Pt.confirm({title:fe("addNewCustomTag"),content:()=>_(At,{value:t.value,"onUpdate:value":r=>t.value=r},null),async onOk(){var i;if(!t.value)return;const r=await oY(),a=await sY({tag_name:t.value});if(a.type!=="custom")throw mt.error(fe("existInOtherType")),new Error(fe("existInOtherType"));if(r.tags.find(o=>o.id===a.id))throw mt.error(fe("alreadyExists")),new Error(fe("alreadyExists"));(i=e.conf)==null||i.all_custom_tags.push(a),mt.success(fe("success")),n(t.value)}})})},NT=async t=>(gr.off("promptEditorUpdated"),new Promise(e=>{const n=()=>{gr.off("promptEditorUpdated",n),e()};gr.on("promptEditorUpdated",n),gr.emit("openPromptEditor",{file:t})})),qc=t=>(fo("data-v-0bff9ae5"),t=t(),vo(),t),kY={key:0,class:"debug-info"},IY={class:"debug-label"},AY={key:0,class:"media-content"},MY=["src","controls","loop"],NY={key:1,class:"tiktok-media tiktok-audio-container"},$Y=qc(()=>ye("div",{class:"audio-icon"},"🎵",-1)),FY={class:"audio-filename"},RY=["src","controls","loop"],DY=["src"],LY={class:"tiktok-controls"},zY=["title"],BY=["title"],jY=["title"],VY=["title"],WY=["title"],HY={class:"autoplay-label"},UY=["title"],KY={key:1,class:"tiktok-navigation"},GY={class:"tiktok-bottom-overlay"},qY={key:0,class:"filename-display"},JY={class:"tiktok-progress"},YY={class:"progress-bar-row"},XY={class:"progress-bar"},ZY={class:"progress-text"},QY={class:"panel-header"},eX={class:"panel-title"},tX={class:"panel-section panel-actions"},nX=["title"],rX=["title"],aX=["title"],iX=["title"],oX=["title"],sX={class:"panel-section"},lX={class:"section-title"},uX={class:"tags-content"},cX=["onClick"],fX={class:"panel-section prompt-section"},dX={class:"section-title"},vX=qc(()=>ye("span",null,"Prompt",-1)),pX=["title"],hX={class:"prompt-content"},gX={key:0,class:"prompt-empty"},mX={key:0,class:"prompt-block"},yX=qc(()=>ye("div",{class:"prompt-label"},"Positive",-1)),bX=["innerHTML"],wX={key:1,class:"prompt-block"},SX=qc(()=>ye("div",{class:"prompt-label"},"Negative",-1)),_X=["innerHTML"],CX={key:2,class:"prompt-empty"},xX=ve({__name:"TiktokViewer",setup(t){const n=iY(),r=wg(),a=dn(),i=dn(),o=B(()=>({isAnimating:S.value,isDragging:O.value,bufferTransform:w.value,dragOffset:P.value,autoPlayMode:l.value,isMuted:s.value,currentIndex:n.currentIndex})),s=fT("tiktok-viewer-muted",!0),l=L("off"),u=L(null),c=["off","5s","10s","20s"],f=B(()=>({off:fe("autoPlayOff"),"5s":fe("autoPlay5s"),"10s":fe("autoPlay10s"),"20s":fe("autoPlay20s")})),p=ae=>{switch(ae){case"5s":return 5e3;case"10s":return 1e4;case"20s":return 2e4;default:return 0}},g=B(()=>/Mac|iPhone|iPad|iPod/.test(navigator.userAgent)||navigator.platform.toUpperCase().indexOf("MAC")>=0),d=ae=>g.value&&!ae?700:300,v=L(),m=L(),h=L([null,null,null]),y=L([null,null,null]),b=L([null,null,null]),w=L(0),S=L(!1),C=L(0),x=L(0),O=L(!1),P=L(0),N=L(!1),D=L(""),F=L(!1);let R=0;const j=L(!0),z=()=>{j.value=!j.value},k=B(()=>b.value[1]),T=B(()=>({"tiktok-viewer":!0,"tiktok-viewer--fullscreen":n.isFullscreen,"tiktok-viewer--floating":!n.isFullscreen,"tiktok-viewer--mobile":n.isMobile})),A=ae=>{const de=(ae-1)*100,Re=w.value+P.value;return{transform:`translateY(${de+Re}%)`,transition:S.value&&!O.value?"transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94)":"none"}},$=()=>{u.value&&(clearTimeout(u.value),u.value=null)},W=()=>{if($(),l.value==="off")return;const ae=b.value[1];if(!ae||ou(ae.url))return;const de=p(l.value);de>0&&(u.value=window.setTimeout(()=>{!S.value&&!O.value&&(n.hasNext?ce():ue())},de))},G=ae=>{ae===1&&l.value!=="off"&&!S.value&&setTimeout(()=>{n.hasNext?ce():ue()},500)},q=ae=>{ae===1&&l.value!=="off"&&!S.value&&setTimeout(()=>{n.hasNext?ce():ue()},500)},Y=async()=>{await oi(30);for(let ae=0;ae
');continue}const Ft=Re[nt];Le||(Le=Ft.includes("("));const Kt=["tag"];Le&&Kt.push("has-parentheses"),Ft.length<32&&Kt.push("short-tag"),Me.push(`${Ft}`),Le&&(Le=!Ft.includes(")"))}return Me.join(i.showCommaInInfoPanel?",":" ")}const ee=()=>{const de=(c.indexOf(l.value)+1)%c.length;l.value=c[de],W(),mt.success(fe("autoPlayStatus",{mode:f.value[l.value]}))},Q=(ae=!1)=>{S.value||!n.hasPrev||($(),S.value=!0,P.value=0,w.value=100,setTimeout(()=>{n.prev(),U(),w.value=0,setTimeout(()=>{S.value=!1},d(ae))},200))},ce=(ae=!1)=>{S.value||!n.hasNext||($(),S.value=!0,P.value=0,w.value=-100,setTimeout(()=>{n.next(),U(),w.value=0,setTimeout(()=>{S.value=!1},d(ae))},200))},ue=(ae=!1)=>{S.value||($(),S.value=!0,P.value=0,w.value=100,setTimeout(()=>{n.currentIndex=0,U(),w.value=0,setTimeout(()=>{S.value=!1},d(ae))},200))},oe=ae=>{if(S.value){ae.preventDefault();return}$(),C.value=ae.touches[0].clientY,x.value=ae.touches[0].clientY,O.value=!0,P.value=0,w.value!==0&&(w.value=0)},re=ae=>{if(S.value){ae.preventDefault();return}if(!O.value)return;x.value=ae.touches[0].clientY;const de=x.value-C.value,Re=window.innerHeight,Me=de/Re*100;P.value=Me,ae.preventDefault()},X=()=>{if(!O.value)return;const ae=x.value-C.value,de=window.innerHeight,Re=ae/de*100;if(O.value=!1,S.value){P.value=0;return}Math.abs(Re)>30?Re>0&&n.hasPrev?Q(!0):Re<0&&n.hasNext?ce(!0):pe():pe()},te=()=>{O.value&&(O.value=!1,S.value||pe())},pe=()=>{S.value||(S.value=!0,P.value=0,w.value=0,setTimeout(()=>{S.value=!1,W()},300))},le=aU(ae=>{S.value||(ae.preventDefault(),$(),ae.deltaY>0&&n.hasNext?ce():ae.deltaY<0&&n.hasPrev&&Q())},500),be=ae=>{if(!(!n.visible||S.value))switch(ae.key){case"ArrowUp":ae.preventDefault(),n.hasPrev&&Q();break;case"ArrowDown":ae.preventDefault(),n.hasNext&&ce();break;case"Escape":ae.preventDefault(),n.closeView();break}},Oe=async()=>{n.isFullscreen?await Ne():await ke()},ke=async()=>{if(v.value&&!document.fullscreenElement)try{await v.value.requestFullscreen(),n.isFullscreen=!0}catch(ae){console.warn("无法进入全屏模式:",ae)}},Ne=async()=>{if(document.fullscreenElement)try{await document.exitFullscreen(),n.isFullscreen=!1}catch(ae){console.warn("无法退出全屏模式:",ae)}},lt=()=>{s.value=!s.value;const ae=h.value[1];ae&&(ae.muted=s.value);const de=y.value[1];de&&(de.muted=s.value)},Yt=()=>{n.isFullscreen=!!document.fullscreenElement},rn=L([]),$t=L([]),Ut=ae=>{ae&&(ae.pause(),ae.src="",ae.muted=!0,ae.load(),ae.parentNode&&ae.parentNode.removeChild(ae))},wt=ae=>{ae&&(ae.pause(),ae.src="",ae.muted=!0,ae.load(),ae.parentNode&&ae.parentNode.removeChild(ae))};me(rn,ae=>{for(;ae.length>5;){const de=ae.shift();de&&Ut(de)}},{deep:!0}),me($t,ae=>{for(;ae.length>5;){const de=ae.shift();de&&wt(de)}},{deep:!0}),me(()=>n.visible===!1||n.mediaList.length===0,ae=>{ae||(rn.value.forEach(Ut),rn.value=[],$t.value.forEach(wt),$t.value=[],l.value="off")},{immediate:!0});const Xt=()=>{b.value.forEach(ae=>{if(ae)if(ou(ae.url)){const de=document.createElement("video");de.preload="metadata",de.src=ae.url,rn.value.push(de)}else if(Ov(ae.url)){const de=document.createElement("audio");de.preload="metadata",de.src=ae.url,$t.value.push(de)}else{const de=new Image;de.src=ae.url}})},fr=async()=>{const ae=n.currentItem;if(!ae)return;const de=(ae==null?void 0:ae.fullpath)||ae.id;de&&await r.fetchImageTags([de])},oa=async()=>{const ae=n.currentItem;if(!ae){D.value="";return}const de=(ae==null?void 0:ae.fullpath)||ae.id;if(!de){D.value="";return}const Re=++R;F.value=!0;try{const Me=await Bs(de);if(Re!==R)return;D.value=Me}catch(Me){if(console.error("Load prompt error:",Me),Re!==R)return;D.value=""}finally{Re===R&&(F.value=!1)}},Zt=()=>{var ae,de;return((ae=k.value)==null?void 0:ae.fullpath)||((de=k.value)==null?void 0:de.id)||""},yi=()=>{var ae;return((ae=k.value)==null?void 0:ae.name)||Zt().split(/[/\\]/).pop()||""},bi=()=>{const ae=n.currentIndex;if(!(ae<0||ae>=n.mediaList.length)){if(n.mediaList.splice(ae,1),n.mediaList.length===0){n.closeView();return}ae>=n.mediaList.length&&(n.currentIndex=n.mediaList.length-1)}},Ma=async()=>{const ae=Zt();ae&&await new Promise(de=>{Pt.confirm({title:fe("confirmDelete"),maskClosable:!0,content:yi(),async onOk(){const{events:Re}=await wn(()=>import("./index-087e0eb8.js").then(Me=>Me.l),["assets/index-087e0eb8.js","assets/shortcut-7567da19.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-43a7a0bb.js"]);await pY([ae]),mt.success(fe("deleteSuccess")),Re.emit("removeFiles",{paths:[ae],loc:xT(ae)}),bi(),N.value=!1,de()},onCancel(){de()}})})},at=async()=>{const ae=Zt();ae&&await Iq(ae)},ht=async()=>{const ae=Zt();ae&&await Aq(ae)},rt=()=>{const ae=Zt();ae&&Q1(ae)},Tt=()=>{var Re,Me;const ae=(Re=k.value)==null?void 0:Re.originalFile,de=ae?Ta(ae):(Me=k.value)==null?void 0:Me.url;de&&Q1(de)};return qG(m,z,{delay:500}),He(()=>{document.addEventListener("keydown",be),document.addEventListener("fullscreenchange",Yt),U()}),gn(()=>{document.removeEventListener("keydown",be),document.removeEventListener("fullscreenchange",Yt),$(),h.value.forEach(ae=>{Ut(ae)}),y.value.forEach(ae=>{wt(ae)}),rn.value.forEach(Ut),rn.value=[],$t.value.forEach(wt),$t.value=[]}),me(()=>n.currentIndex,()=>{N.value=!1,U(),qe(()=>{Xt(),fr(),oa()})},{immediate:!0}),me(()=>n.mediaList,()=>{U(),qe(()=>{fr(),oa()})},{deep:!0}),me(()=>n.visible,ae=>{ae?(j.value=!0,qe(()=>{U()})):(N.value=!1,D.value="",F.value=!1,R++,h.value.forEach(de=>{de&&(de.pause(),de.src="",de.load())}),h.value=[null,null,null],y.value.forEach(de=>{de&&(de.pause(),de.src="",de.load())}),y.value=[null,null,null],b.value=[null,null,null],$(),document.fullscreenElement&&Ne())}),me(()=>s.value,ae=>{h.value.forEach(de=>{de&&(de.muted=ae)}),y.value.forEach(de=>{de&&(de.muted=ae)})}),me(()=>l.value,()=>{W()}),(ae,de)=>{var Re;return Ce(),gt(ac,{to:"body"},[se(n).visible?(Ce(),Ee("div",{key:0,ref_key:"containerRef",ref:v,class:sn(T.value),onTouchstart:oe,onTouchmove:re,onTouchend:X,onTouchcancel:te,onWheel:de[13]||(de[13]=(...Me)=>se(le)&&se(le)(...Me))},[se(!1)?(Ce(),Ee("div",kY,[(Ce(!0),Ee(Ae,null,yr(o.value,(Me,Le)=>(Ce(),Ee("div",{key:Le,class:"debug-item"},[ye("span",IY,Te(Le)+":",1),ye("span",{class:sn(["debug-value",{"is-true":Me===!0,"is-false":Me===!1}])},Te(Me),3)]))),128))])):et("",!0),ye("div",{ref_key:"viewportRef",ref:m,class:"tiktok-viewport"},[(Ce(!0),Ee(Ae,null,yr(b.value,(Me,Le)=>(Ce(),Ee("div",{key:(Me==null?void 0:Me.id)||`empty-${Le}`,class:"tiktok-media-item",style:Fn(A(Le))},[Me?(Ce(),Ee("div",AY,[se(ou)(Me.url)&&se(n).visible?(Ce(),Ee("video",{class:"tiktok-media tiktok-video",src:Me.url,controls:Le===1,loop:Le===1&&l.value==="off",playsinline:"",preload:"metadata",key:Me.url,ref_for:!0,ref:nt=>{nt&&(h.value[Le]=nt)}},null,8,MY)):se(Ov)(Me.url)&&se(n).visible?(Ce(),Ee("div",NY,[$Y,ye("div",FY,Te(Me.name||Me.url.split("/").pop()),1),(Ce(),Ee("audio",{class:"tiktok-audio",src:Me.url,controls:Le===1,loop:Le===1&&l.value==="off",preload:"metadata",key:Me.url,ref_for:!0,ref:nt=>{nt&&(y.value[Le]=nt)}},null,8,RY))])):(Ce(),Ee("img",{key:2,class:"tiktok-media",src:Me.url},null,8,DY))])):et("",!0)],4))),128))],512),cn(ye("div",LY,[ye("button",{class:"control-btn close-btn",onClick:de[0]||(de[0]=(...Me)=>se(n).closeView&&se(n).closeView(...Me)),title:ae.$t("close")},[_(se(Sr))],8,zY),ye("button",{class:"control-btn fullscreen-btn",onClick:Oe,title:se(n).isFullscreen?ae.$t("exitFullscreen"):ae.$t("fullscreen")},[se(n).isFullscreen?(Ce(),gt(se(pJ),{key:0})):(Ce(),gt(se(yJ),{key:1}))],8,BY),ye("button",{class:"control-btn sound-btn",onClick:lt,title:se(s)?ae.$t("soundOn"):ae.$t("soundOff")},[se(s)?(Ce(),gt(se(VJ),{key:1})):(Ce(),gt(se(LJ),{key:0}))],8,jY),ne.value?(Ce(),Ee("button",{key:0,class:sn(["control-btn like-btn",{"like-active":ie.value}]),onClick:we,title:ie.value?ae.$t("unlike"):ae.$t("like")},[ie.value?(Ce(),gt(se(_J),{key:0})):(Ce(),gt(se(OJ),{key:1}))],10,VY)):et("",!0),ye("button",{class:sn(["control-btn autoplay-btn",{"autoplay-active":l.value!=="off"}]),onClick:ee,title:ae.$t("autoPlayTooltip",{mode:f.value[l.value]})},[_(se($J)),ye("span",HY,Te(f.value[l.value]),1)],10,WY),ye("button",{class:"control-btn tags-btn",onClick:de[1]||(de[1]=Me=>N.value=!N.value),title:ae.$t("info")},[_(se(Cs))],8,UY)],512),[[hr,j.value]]),se(a).showTiktokNavigator?cn((Ce(),Ee("div",KY,[se(n).hasPrev?(Ce(),Ee("div",{key:0,class:"nav-indicator nav-prev",onTouchstart:de[2]||(de[2]=Rt(Me=>Q(!1),["prevent"])),onClick:de[3]||(de[3]=Me=>Q(!1))},[_(se(EP))],32)):et("",!0),se(n).hasNext?(Ce(),Ee("div",{key:1,class:"nav-indicator nav-next",onTouchstart:de[4]||(de[4]=Rt(Me=>ce(!1),["prevent"])),onClick:de[5]||(de[5]=Me=>ce(!1))},[_(se(Yp))],32)):et("",!0)],512)),[[hr,j.value]]):et("",!0),cn(ye("div",GY,[(Re=k.value)!=null&&Re.name?(Ce(),Ee("div",qY,Te(k.value.name),1)):et("",!0)],512),[[hr,j.value]]),cn(ye("div",JY,[ye("div",YY,[ye("div",XY,[ye("div",{class:"progress-fill",style:Fn({width:`${(se(n).currentIndex+1)/se(n).mediaList.length*100}%`})},null,4)]),ye("span",ZY,Te(se(n).currentIndex+1)+" / "+Te(se(n).mediaList.length),1)])],512),[[hr,j.value]]),_(In,{name:"fade"},{default:Fe(()=>[N.value?(Ce(),Ee("div",{key:0,class:"tiktok-panel-backdrop",onClick:de[6]||(de[6]=Me=>N.value=!1)})):et("",!0)]),_:1}),_(In,{name:"slide-up"},{default:Fe(()=>{var Me;return[N.value?(Ce(),Ee("div",{key:0,class:"tiktok-tags-panel",onClick:de[12]||(de[12]=Rt(()=>{},["stop"]))},[ye("div",QY,[ye("div",eX,[_(se(Cs)),ye("span",null,Te(ae.$t("details")),1)]),ye("button",{onClick:de[7]||(de[7]=Le=>N.value=!1),class:"close-tags"},[_(se(Sr))])]),ye("div",{class:"panel-body",onWheel:de[10]||(de[10]=Rt(()=>{},["stop"])),onTouchmove:de[11]||(de[11]=Rt(()=>{},["stop"]))},[ye("div",tX,[ye("button",{class:"panel-action-btn danger",onClick:Ma,title:ae.$t("deleteSelected")},[_(se(E9))],8,nX),ye("button",{class:"panel-action-btn",onClick:at,title:ae.$t("openWithLocalFileBrowser")},[_(se(x9))],8,rX),ye("button",{class:"panel-action-btn",onClick:ht,title:ae.$t("openWithDefaultApp")},[_(se(rJ))],8,aX),ye("button",{class:"panel-action-btn",onClick:rt,title:ae.$t("copyFilePath")},[_(se(M9))],8,iX),ye("button",{class:"panel-action-btn",onClick:Tt,title:ae.$t("copySourceFilePreviewLink")},[_(se(IJ))],8,oX)]),ye("div",sX,[ye("div",lX,[_(se(KJ)),Ye(),ye("span",null,Te(ae.$t("tags")),1)]),ye("div",uX,[ye("div",{onClick:de[8]||(de[8]=(...Le)=>se(Av)&&se(Av)(...Le)),style:Fn({background:"rgba(255, 255, 255, 0.05)",color:"var(--zp-luminous)",border:"1px solid var(--zp-luminous)",..._e})},Te(ae.$t("addNewCustomTag")),5),(Ce(!0),Ee(Ae,null,yr(((Me=se(i).conf)==null?void 0:Me.all_custom_tags)||[],Le=>(Ce(),Ee("div",{key:Le.id,onClick:nt=>he(Le.id),style:Fn({background:K(Le.id)?se(r).getColor(Le):"rgba(255, 255, 255, 0.05)",color:K(Le.id)?"white":se(r).getColor(Le),border:`1px solid ${se(r).getColor(Le)}`,..._e})},Te(Le.name),13,cX))),128))])]),ye("div",fX,[ye("div",dX,[_(se(IT)),Ye(),vX,F.value?et("",!0):(Ce(),Ee("button",{key:0,onClick:de[9]||(de[9]=async()=>{await se(NT)(se(n).currentItem),await oa()}),class:"edit-prompt-btn",title:se(fe)("editPrompt")},[_(se(LP))],8,pX))]),ye("div",hX,[F.value?(Ce(),Ee("div",gX,"...")):(Ce(),Ee(Ae,{key:1},[V.value.prompt?(Ce(),Ee("div",mX,[yX,ye("code",{innerHTML:J(V.value.prompt??"")},null,8,bX)])):et("",!0),V.value.negativePrompt?(Ce(),Ee("div",wX,[SX,ye("code",{innerHTML:J(V.value.negativePrompt??"")},null,8,_X)])):et("",!0),!V.value.prompt&&!V.value.negativePrompt?(Ce(),Ee("div",CX,"—")):et("",!0)],64))])])],32)])):et("",!0)]}),_:1})],34)):et("",!0)])}}});const PX=Cr(xX,[["__scopeId","data-v-0bff9ae5"]]),OX={class:"container"},TX=["src"],EX=ve({__name:"ImgSliSide",props:{side:{},containerWidth:{},img:{},maxEdge:{},percent:{}},setup(t){const e=t,n=Pv(async()=>hT(await Tv(Ta(e.img)),"width","height")),r=B(()=>{let a="";const o=e.containerWidth;if(e.side==="left"?a=`calc(50% - ${(e.percent-50)/100*o}px)`:a=`calc(-50% - ${(e.percent-50)/100*o+4}px)`,e.maxEdge==="height")return`height:100%;transform: translate(${a}, -50%)`;{const s=n.value;return s?`height:${o/s.width*s.height}px;transform: translate(${a}, -50%)`:void 0}});return(a,i)=>(Ce(),Ee("div",OX,[ye("img",{class:sn(["img",[a.side]]),style:Fn(r.value),src:se(Ta)(a.img),onDragstart:i[0]||(i[0]=Rt(()=>{},["prevent","stop"]))},null,46,TX)]))}});const Cw=Cr(EX,[["__scopeId","data-v-c9b1d83c"]]),kX=ve({__name:"PromptCompare",props:{lImg:{},rImg:{}},setup(t){const e=t,n=gT(),r=dn(),a=L(""),i=L("");function o(s){var c;let l="",u=Gc(s);l+=`--- PROMPT --- \r
+`).map(nt=>nt.trim()).filter(nt=>nt).map(nt=>`
');continue}const Ft=Re[nt];Le||(Le=Ft.includes("("));const Kt=["tag"];Le&&Kt.push("has-parentheses"),Ft.length<32&&Kt.push("short-tag"),Me.push(`${Ft}`),Le&&(Le=!Ft.includes(")"))}return Me.join(i.showCommaInInfoPanel?",":" ")}const ee=()=>{const de=(c.indexOf(l.value)+1)%c.length;l.value=c[de],W(),mt.success(fe("autoPlayStatus",{mode:f.value[l.value]}))},Q=(ae=!1)=>{S.value||!n.hasPrev||($(),S.value=!0,P.value=0,w.value=100,setTimeout(()=>{n.prev(),U(),w.value=0,setTimeout(()=>{S.value=!1},d(ae))},200))},ce=(ae=!1)=>{S.value||!n.hasNext||($(),S.value=!0,P.value=0,w.value=-100,setTimeout(()=>{n.next(),U(),w.value=0,setTimeout(()=>{S.value=!1},d(ae))},200))},ue=(ae=!1)=>{S.value||($(),S.value=!0,P.value=0,w.value=100,setTimeout(()=>{n.currentIndex=0,U(),w.value=0,setTimeout(()=>{S.value=!1},d(ae))},200))},oe=ae=>{if(S.value){ae.preventDefault();return}$(),C.value=ae.touches[0].clientY,x.value=ae.touches[0].clientY,O.value=!0,P.value=0,w.value!==0&&(w.value=0)},re=ae=>{if(S.value){ae.preventDefault();return}if(!O.value)return;x.value=ae.touches[0].clientY;const de=x.value-C.value,Re=window.innerHeight,Me=de/Re*100;P.value=Me,ae.preventDefault()},X=()=>{if(!O.value)return;const ae=x.value-C.value,de=window.innerHeight,Re=ae/de*100;if(O.value=!1,S.value){P.value=0;return}Math.abs(Re)>30?Re>0&&n.hasPrev?Q(!0):Re<0&&n.hasNext?ce(!0):pe():pe()},te=()=>{O.value&&(O.value=!1,S.value||pe())},pe=()=>{S.value||(S.value=!0,P.value=0,w.value=0,setTimeout(()=>{S.value=!1,W()},300))},le=aU(ae=>{S.value||(ae.preventDefault(),$(),ae.deltaY>0&&n.hasNext?ce():ae.deltaY<0&&n.hasPrev&&Q())},500),be=ae=>{if(!(!n.visible||S.value))switch(ae.key){case"ArrowUp":ae.preventDefault(),n.hasPrev&&Q();break;case"ArrowDown":ae.preventDefault(),n.hasNext&&ce();break;case"Escape":ae.preventDefault(),n.closeView();break}},Oe=async()=>{n.isFullscreen?await Ne():await ke()},ke=async()=>{if(v.value&&!document.fullscreenElement)try{await v.value.requestFullscreen(),n.isFullscreen=!0}catch(ae){console.warn("无法进入全屏模式:",ae)}},Ne=async()=>{if(document.fullscreenElement)try{await document.exitFullscreen(),n.isFullscreen=!1}catch(ae){console.warn("无法退出全屏模式:",ae)}},lt=()=>{s.value=!s.value;const ae=h.value[1];ae&&(ae.muted=s.value);const de=y.value[1];de&&(de.muted=s.value)},Yt=()=>{n.isFullscreen=!!document.fullscreenElement},rn=L([]),$t=L([]),Ut=ae=>{ae&&(ae.pause(),ae.src="",ae.muted=!0,ae.load(),ae.parentNode&&ae.parentNode.removeChild(ae))},wt=ae=>{ae&&(ae.pause(),ae.src="",ae.muted=!0,ae.load(),ae.parentNode&&ae.parentNode.removeChild(ae))};me(rn,ae=>{for(;ae.length>5;){const de=ae.shift();de&&Ut(de)}},{deep:!0}),me($t,ae=>{for(;ae.length>5;){const de=ae.shift();de&&wt(de)}},{deep:!0}),me(()=>n.visible===!1||n.mediaList.length===0,ae=>{ae||(rn.value.forEach(Ut),rn.value=[],$t.value.forEach(wt),$t.value=[],l.value="off")},{immediate:!0});const Xt=()=>{b.value.forEach(ae=>{if(ae)if(ou(ae.url)){const de=document.createElement("video");de.preload="metadata",de.src=ae.url,rn.value.push(de)}else if(Ov(ae.url)){const de=document.createElement("audio");de.preload="metadata",de.src=ae.url,$t.value.push(de)}else{const de=new Image;de.src=ae.url}})},fr=async()=>{const ae=n.currentItem;if(!ae)return;const de=(ae==null?void 0:ae.fullpath)||ae.id;de&&await r.fetchImageTags([de])},oa=async()=>{const ae=n.currentItem;if(!ae){D.value="";return}const de=(ae==null?void 0:ae.fullpath)||ae.id;if(!de){D.value="";return}const Re=++R;F.value=!0;try{const Me=await Bs(de);if(Re!==R)return;D.value=Me}catch(Me){if(console.error("Load prompt error:",Me),Re!==R)return;D.value=""}finally{Re===R&&(F.value=!1)}},Zt=()=>{var ae,de;return((ae=k.value)==null?void 0:ae.fullpath)||((de=k.value)==null?void 0:de.id)||""},yi=()=>{var ae;return((ae=k.value)==null?void 0:ae.name)||Zt().split(/[/\\]/).pop()||""},bi=()=>{const ae=n.currentIndex;if(!(ae<0||ae>=n.mediaList.length)){if(n.mediaList.splice(ae,1),n.mediaList.length===0){n.closeView();return}ae>=n.mediaList.length&&(n.currentIndex=n.mediaList.length-1)}},Ma=async()=>{const ae=Zt();ae&&await new Promise(de=>{Pt.confirm({title:fe("confirmDelete"),maskClosable:!0,content:yi(),async onOk(){const{events:Re}=await wn(()=>import("./index-1b3df0c9.js").then(Me=>Me.l),["assets/index-1b3df0c9.js","assets/shortcut-feec8cda.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-a5c9e9ee.js"]);await pY([ae]),mt.success(fe("deleteSuccess")),Re.emit("removeFiles",{paths:[ae],loc:xT(ae)}),bi(),N.value=!1,de()},onCancel(){de()}})})},at=async()=>{const ae=Zt();ae&&await Iq(ae)},ht=async()=>{const ae=Zt();ae&&await Aq(ae)},rt=()=>{const ae=Zt();ae&&Q1(ae)},Tt=()=>{var Re,Me;const ae=(Re=k.value)==null?void 0:Re.originalFile,de=ae?Ta(ae):(Me=k.value)==null?void 0:Me.url;de&&Q1(de)};return qG(m,z,{delay:500}),He(()=>{document.addEventListener("keydown",be),document.addEventListener("fullscreenchange",Yt),U()}),gn(()=>{document.removeEventListener("keydown",be),document.removeEventListener("fullscreenchange",Yt),$(),h.value.forEach(ae=>{Ut(ae)}),y.value.forEach(ae=>{wt(ae)}),rn.value.forEach(Ut),rn.value=[],$t.value.forEach(wt),$t.value=[]}),me(()=>n.currentIndex,()=>{N.value=!1,U(),qe(()=>{Xt(),fr(),oa()})},{immediate:!0}),me(()=>n.mediaList,()=>{U(),qe(()=>{fr(),oa()})},{deep:!0}),me(()=>n.visible,ae=>{ae?(j.value=!0,qe(()=>{U()})):(N.value=!1,D.value="",F.value=!1,R++,h.value.forEach(de=>{de&&(de.pause(),de.src="",de.load())}),h.value=[null,null,null],y.value.forEach(de=>{de&&(de.pause(),de.src="",de.load())}),y.value=[null,null,null],b.value=[null,null,null],$(),document.fullscreenElement&&Ne())}),me(()=>s.value,ae=>{h.value.forEach(de=>{de&&(de.muted=ae)}),y.value.forEach(de=>{de&&(de.muted=ae)})}),me(()=>l.value,()=>{W()}),(ae,de)=>{var Re;return Ce(),gt(ac,{to:"body"},[se(n).visible?(Ce(),Ee("div",{key:0,ref_key:"containerRef",ref:v,class:sn(T.value),onTouchstart:oe,onTouchmove:re,onTouchend:X,onTouchcancel:te,onWheel:de[13]||(de[13]=(...Me)=>se(le)&&se(le)(...Me))},[se(!1)?(Ce(),Ee("div",kY,[(Ce(!0),Ee(Ae,null,yr(o.value,(Me,Le)=>(Ce(),Ee("div",{key:Le,class:"debug-item"},[ye("span",IY,Te(Le)+":",1),ye("span",{class:sn(["debug-value",{"is-true":Me===!0,"is-false":Me===!1}])},Te(Me),3)]))),128))])):et("",!0),ye("div",{ref_key:"viewportRef",ref:m,class:"tiktok-viewport"},[(Ce(!0),Ee(Ae,null,yr(b.value,(Me,Le)=>(Ce(),Ee("div",{key:(Me==null?void 0:Me.id)||`empty-${Le}`,class:"tiktok-media-item",style:Fn(A(Le))},[Me?(Ce(),Ee("div",AY,[se(ou)(Me.url)&&se(n).visible?(Ce(),Ee("video",{class:"tiktok-media tiktok-video",src:Me.url,controls:Le===1,loop:Le===1&&l.value==="off",playsinline:"",preload:"metadata",key:Me.url,ref_for:!0,ref:nt=>{nt&&(h.value[Le]=nt)}},null,8,MY)):se(Ov)(Me.url)&&se(n).visible?(Ce(),Ee("div",NY,[$Y,ye("div",FY,Te(Me.name||Me.url.split("/").pop()),1),(Ce(),Ee("audio",{class:"tiktok-audio",src:Me.url,controls:Le===1,loop:Le===1&&l.value==="off",preload:"metadata",key:Me.url,ref_for:!0,ref:nt=>{nt&&(y.value[Le]=nt)}},null,8,RY))])):(Ce(),Ee("img",{key:2,class:"tiktok-media",src:Me.url},null,8,DY))])):et("",!0)],4))),128))],512),cn(ye("div",LY,[ye("button",{class:"control-btn close-btn",onClick:de[0]||(de[0]=(...Me)=>se(n).closeView&&se(n).closeView(...Me)),title:ae.$t("close")},[_(se(Sr))],8,zY),ye("button",{class:"control-btn fullscreen-btn",onClick:Oe,title:se(n).isFullscreen?ae.$t("exitFullscreen"):ae.$t("fullscreen")},[se(n).isFullscreen?(Ce(),gt(se(pJ),{key:0})):(Ce(),gt(se(yJ),{key:1}))],8,BY),ye("button",{class:"control-btn sound-btn",onClick:lt,title:se(s)?ae.$t("soundOn"):ae.$t("soundOff")},[se(s)?(Ce(),gt(se(VJ),{key:1})):(Ce(),gt(se(LJ),{key:0}))],8,jY),ne.value?(Ce(),Ee("button",{key:0,class:sn(["control-btn like-btn",{"like-active":ie.value}]),onClick:we,title:ie.value?ae.$t("unlike"):ae.$t("like")},[ie.value?(Ce(),gt(se(_J),{key:0})):(Ce(),gt(se(OJ),{key:1}))],10,VY)):et("",!0),ye("button",{class:sn(["control-btn autoplay-btn",{"autoplay-active":l.value!=="off"}]),onClick:ee,title:ae.$t("autoPlayTooltip",{mode:f.value[l.value]})},[_(se($J)),ye("span",HY,Te(f.value[l.value]),1)],10,WY),ye("button",{class:"control-btn tags-btn",onClick:de[1]||(de[1]=Me=>N.value=!N.value),title:ae.$t("info")},[_(se(Cs))],8,UY)],512),[[hr,j.value]]),se(a).showTiktokNavigator?cn((Ce(),Ee("div",KY,[se(n).hasPrev?(Ce(),Ee("div",{key:0,class:"nav-indicator nav-prev",onTouchstart:de[2]||(de[2]=Rt(Me=>Q(!1),["prevent"])),onClick:de[3]||(de[3]=Me=>Q(!1))},[_(se(EP))],32)):et("",!0),se(n).hasNext?(Ce(),Ee("div",{key:1,class:"nav-indicator nav-next",onTouchstart:de[4]||(de[4]=Rt(Me=>ce(!1),["prevent"])),onClick:de[5]||(de[5]=Me=>ce(!1))},[_(se(Yp))],32)):et("",!0)],512)),[[hr,j.value]]):et("",!0),cn(ye("div",GY,[(Re=k.value)!=null&&Re.name?(Ce(),Ee("div",qY,Te(k.value.name),1)):et("",!0)],512),[[hr,j.value]]),cn(ye("div",JY,[ye("div",YY,[ye("div",XY,[ye("div",{class:"progress-fill",style:Fn({width:`${(se(n).currentIndex+1)/se(n).mediaList.length*100}%`})},null,4)]),ye("span",ZY,Te(se(n).currentIndex+1)+" / "+Te(se(n).mediaList.length),1)])],512),[[hr,j.value]]),_(In,{name:"fade"},{default:Fe(()=>[N.value?(Ce(),Ee("div",{key:0,class:"tiktok-panel-backdrop",onClick:de[6]||(de[6]=Me=>N.value=!1)})):et("",!0)]),_:1}),_(In,{name:"slide-up"},{default:Fe(()=>{var Me;return[N.value?(Ce(),Ee("div",{key:0,class:"tiktok-tags-panel",onClick:de[12]||(de[12]=Rt(()=>{},["stop"]))},[ye("div",QY,[ye("div",eX,[_(se(Cs)),ye("span",null,Te(ae.$t("details")),1)]),ye("button",{onClick:de[7]||(de[7]=Le=>N.value=!1),class:"close-tags"},[_(se(Sr))])]),ye("div",{class:"panel-body",onWheel:de[10]||(de[10]=Rt(()=>{},["stop"])),onTouchmove:de[11]||(de[11]=Rt(()=>{},["stop"]))},[ye("div",tX,[ye("button",{class:"panel-action-btn danger",onClick:Ma,title:ae.$t("deleteSelected")},[_(se(E9))],8,nX),ye("button",{class:"panel-action-btn",onClick:at,title:ae.$t("openWithLocalFileBrowser")},[_(se(x9))],8,rX),ye("button",{class:"panel-action-btn",onClick:ht,title:ae.$t("openWithDefaultApp")},[_(se(rJ))],8,aX),ye("button",{class:"panel-action-btn",onClick:rt,title:ae.$t("copyFilePath")},[_(se(M9))],8,iX),ye("button",{class:"panel-action-btn",onClick:Tt,title:ae.$t("copySourceFilePreviewLink")},[_(se(IJ))],8,oX)]),ye("div",sX,[ye("div",lX,[_(se(KJ)),Ye(),ye("span",null,Te(ae.$t("tags")),1)]),ye("div",uX,[ye("div",{onClick:de[8]||(de[8]=(...Le)=>se(Av)&&se(Av)(...Le)),style:Fn({background:"rgba(255, 255, 255, 0.05)",color:"var(--zp-luminous)",border:"1px solid var(--zp-luminous)",..._e})},Te(ae.$t("addNewCustomTag")),5),(Ce(!0),Ee(Ae,null,yr(((Me=se(i).conf)==null?void 0:Me.all_custom_tags)||[],Le=>(Ce(),Ee("div",{key:Le.id,onClick:nt=>he(Le.id),style:Fn({background:K(Le.id)?se(r).getColor(Le):"rgba(255, 255, 255, 0.05)",color:K(Le.id)?"white":se(r).getColor(Le),border:`1px solid ${se(r).getColor(Le)}`,..._e})},Te(Le.name),13,cX))),128))])]),ye("div",fX,[ye("div",dX,[_(se(IT)),Ye(),vX,F.value?et("",!0):(Ce(),Ee("button",{key:0,onClick:de[9]||(de[9]=async()=>{await se(NT)(se(n).currentItem),await oa()}),class:"edit-prompt-btn",title:se(fe)("editPrompt")},[_(se(LP))],8,pX))]),ye("div",hX,[F.value?(Ce(),Ee("div",gX,"...")):(Ce(),Ee(Ae,{key:1},[V.value.prompt?(Ce(),Ee("div",mX,[yX,ye("code",{innerHTML:J(V.value.prompt??"")},null,8,bX)])):et("",!0),V.value.negativePrompt?(Ce(),Ee("div",wX,[SX,ye("code",{innerHTML:J(V.value.negativePrompt??"")},null,8,_X)])):et("",!0),!V.value.prompt&&!V.value.negativePrompt?(Ce(),Ee("div",CX,"—")):et("",!0)],64))])])],32)])):et("",!0)]}),_:1})],34)):et("",!0)])}}});const PX=Cr(xX,[["__scopeId","data-v-0bff9ae5"]]),OX={class:"container"},TX=["src"],EX=ve({__name:"ImgSliSide",props:{side:{},containerWidth:{},img:{},maxEdge:{},percent:{}},setup(t){const e=t,n=Pv(async()=>hT(await Tv(Ta(e.img)),"width","height")),r=B(()=>{let a="";const o=e.containerWidth;if(e.side==="left"?a=`calc(50% - ${(e.percent-50)/100*o}px)`:a=`calc(-50% - ${(e.percent-50)/100*o+4}px)`,e.maxEdge==="height")return`height:100%;transform: translate(${a}, -50%)`;{const s=n.value;return s?`height:${o/s.width*s.height}px;transform: translate(${a}, -50%)`:void 0}});return(a,i)=>(Ce(),Ee("div",OX,[ye("img",{class:sn(["img",[a.side]]),style:Fn(r.value),src:se(Ta)(a.img),onDragstart:i[0]||(i[0]=Rt(()=>{},["prevent","stop"]))},null,46,TX)]))}});const Cw=Cr(EX,[["__scopeId","data-v-c9b1d83c"]]),kX=ve({__name:"PromptCompare",props:{lImg:{},rImg:{}},setup(t){const e=t,n=gT(),r=dn(),a=L(""),i=L("");function o(s){var c;let l="",u=Gc(s);l+=`--- PROMPT --- \r
`,l+=((c=u.prompt)==null?void 0:c.replace(/\r\n/g,""))+`\r
\r
`,l+=`--- NEGATIVE PROMPT --- \r
@@ -301,7 +301,7 @@ Note that this is not an issue if running this frontend on a browser instead of
\r
`,l+=`--- PARAMS ---\r
`;for(const[f,p]of Object.entries(u))f=="prompt"||f=="negativePrompt"||(l+=f+": "+p+`\r
-`);return l}return me(()=>{var s;return(s=e==null?void 0:e.lImg)==null?void 0:s.fullpath},async s=>{s&&(n.tasks.forEach(l=>l.cancel()),n.pushAction(()=>Bs(s)).res.then(l=>{a.value=o(l)}),n.pushAction(()=>Bs(e.rImg.fullpath)).res.then(l=>{i.value=o(l)}))},{immediate:!0}),(s,l)=>{const u=Gs("VueDiff");return Ce(),gt(u,{class:"diff",mode:"split",theme:se(r).computedTheme,language:"plaintext",prev:a.value,current:i.value},null,8,["theme","prev","current"])}}});const IX={key:0,class:"hint"},AX={class:"hint-inline"},MX=ve({__name:"ImgSliComparePane",props:{left:{},right:{},container:{}},setup(t,{expose:e}){const n=t,r=L(50),a=([{size:c}])=>{r.value=c},i=L(),{width:o}=dq(i);e({requestFullScreen:()=>{var c;(c=i.value)==null||c.requestFullscreen()}});const l=Pv(async()=>{if(!n.left||!n.right)return{width:0,height:0};const[c,f]=await Promise.all([Tv(Ta(n.left)),Tv(Ta(n.right))]);return{width:Math.max(c.width,f.width),height:Math.max(f.height,c.height)}}),u=Pv(async()=>{const c=l.value;if(!c)return"width";const{height:f,width:p}=c,g=p/f,d=document.body.clientWidth/document.body.clientHeight;return g>d?"width":"height"});return(c,f)=>(Ce(),Ee(Ae,null,[ye("div",{ref_key:"wrapperEl",ref:i,style:{height:"100%"}},[_(se(ET),{class:"default-theme",onResize:a},{default:Fe(()=>[c.left?(Ce(),gt(se(Iv),{key:0},{default:Fe(()=>[_(Cw,{side:"left","max-edge":se(u),"container-width":se(o),percent:r.value,img:c.left},null,8,["max-edge","container-width","percent","img"])]),_:1})):et("",!0),c.right?(Ce(),gt(se(Iv),{key:1},{default:Fe(()=>[_(Cw,{"max-edge":se(u),percent:r.value,img:c.right,side:"right","container-width":se(o)},null,8,["max-edge","percent","img","container-width"])]),_:1})):et("",!0)]),_:1})],512),c.container!=="drawer"?(Ce(),Ee("div",IX,[ye("div",AX,[_(se(sJ)),Ye(" "+Te(c.$t("scrollDownToComparePrompt")),1)])])):et("",!0),_(kX,{lImg:c.left,rImg:c.right},null,8,["lImg","rImg"])],64))}});const NX={class:"actions"},$X=ve({__name:"ImgSliDrawer",setup(t){const e=kT(),n=L();return(r,a)=>{const i=Wt,o=J4,s=OB;return Ce(),Ee(Ae,null,[_(s,{width:"100vw",visible:se(e).drawerVisible,"onUpdate:visible":a[2]||(a[2]=l=>se(e).drawerVisible=l),"destroy-on-close":"",class:"img-sli","close-icon":null},{footer:Fe(()=>[ye("div",NX,[_(i,{onClick:a[0]||(a[0]=l=>se(e).drawerVisible=!1)},{default:Fe(()=>[Ye(Te(r.$t("close")),1)]),_:1}),_(i,{onClick:a[1]||(a[1]=l=>{var u;return(u=n.value)==null?void 0:u.requestFullScreen()})},{default:Fe(()=>[Ye(Te(r.$t("fullscreenview")),1)]),_:1}),_(o,{banner:"",style:{height:"32px"},message:"👇 "+r.$t("scrollDownToComparePrompt"),type:"info","show-icon":""},null,8,["message"])])]),default:Fe(()=>[se(e).left&&se(e).right?(Ce(),gt(MX,{key:0,ref_key:"splitpane",ref:n,container:"drawer",left:se(e).left,right:se(e).right},null,8,["left","right"])):et("",!0)]),_:1},8,["visible"]),_(aY),_(PX)],64)}}});const FX=Cr($X,[["__scopeId","data-v-d6c97117"]]),RX=ve({__name:"SplitViewTab",setup(t){const e=dn(),n={local:zn(()=>wn(()=>import("./stackView-4f669f56.js"),["assets/stackView-4f669f56.js","assets/shortcut-7567da19.js","assets/shortcut-2acaf603.css","assets/index-e0feaff2.js","assets/index-80432a0c.css","assets/index-087e0eb8.js","assets/_isIterateeCall-43a7a0bb.js","assets/FileItem-b13cf2ec.js","assets/FileItem-b2f0fcbe.css","assets/MultiSelectKeep-964aa0b8.js","assets/MultiSelectKeep-9ed57c84.css","assets/stackView-714f932f.css"])),empty:zn(()=>wn(()=>import("./emptyStartup-15accc92.js"),["assets/emptyStartup-15accc92.js","assets/index-e0feaff2.js","assets/index-80432a0c.css","assets/emptyStartup-2ab553ed.css"])),"global-setting":zn(()=>wn(()=>import("./globalSetting-281f7958.js"),["assets/globalSetting-281f7958.js","assets/shortcut-7567da19.js","assets/shortcut-2acaf603.css","assets/globalSetting-e0e78319.css"])),"tag-search-matched-image-grid":zn(()=>wn(()=>import("./MatchedImageGrid-c6f7f823.js"),["assets/MatchedImageGrid-c6f7f823.js","assets/MultiSelectKeep-964aa0b8.js","assets/index-e0feaff2.js","assets/index-80432a0c.css","assets/FileItem-b13cf2ec.js","assets/FileItem-b2f0fcbe.css","assets/index-087e0eb8.js","assets/shortcut-7567da19.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-43a7a0bb.js","assets/MultiSelectKeep-9ed57c84.css","assets/hook-aaf791cf.js","assets/MatchedImageGrid-c716d973.css"])),"topic-search-matched-image-grid":zn(()=>wn(()=>import("./MatchedImageGrid-5963e6c7.js"),["assets/MatchedImageGrid-5963e6c7.js","assets/MultiSelectKeep-964aa0b8.js","assets/index-e0feaff2.js","assets/index-80432a0c.css","assets/FileItem-b13cf2ec.js","assets/FileItem-b2f0fcbe.css","assets/index-087e0eb8.js","assets/shortcut-7567da19.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-43a7a0bb.js","assets/MultiSelectKeep-9ed57c84.css","assets/hook-aaf791cf.js","assets/MatchedImageGrid-e9e22234.css"])),"tag-search":zn(()=>wn(()=>import("./TagSearch-e5ca3c3e.js"),["assets/TagSearch-e5ca3c3e.js","assets/TipsCarousel-be9bd830.js","assets/TipsCarousel-23a4bc9c.css","assets/_isIterateeCall-43a7a0bb.js","assets/TagSearch-936bbb36.css"])),"fuzzy-search":zn(()=>wn(()=>import("./SubstrSearch-3027c28e.js"),["assets/SubstrSearch-3027c28e.js","assets/FileItem-b13cf2ec.js","assets/index-e0feaff2.js","assets/index-80432a0c.css","assets/FileItem-b2f0fcbe.css","assets/MultiSelectKeep-964aa0b8.js","assets/index-087e0eb8.js","assets/shortcut-7567da19.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-43a7a0bb.js","assets/MultiSelectKeep-9ed57c84.css","assets/hook-aaf791cf.js","assets/TipsCarousel-be9bd830.js","assets/TipsCarousel-23a4bc9c.css","assets/SubstrSearch-7eea79b7.css"])),"topic-search":zn(()=>wn(()=>import("./TopicSearch-df3484ec.js"),["assets/TopicSearch-df3484ec.js","assets/TopicSearch-43737bca.css"])),"img-sli":zn(()=>wn(()=>import("./ImgSliPagePane-c2b6587c.js"),["assets/ImgSliPagePane-c2b6587c.js","assets/ImgSliPagePane-868b21f8.css"])),"batch-download":zn(()=>wn(()=>import("./batchDownload-bbe635b0.js"),["assets/batchDownload-bbe635b0.js","assets/FileItem-b13cf2ec.js","assets/index-e0feaff2.js","assets/index-80432a0c.css","assets/FileItem-b2f0fcbe.css","assets/index-087e0eb8.js","assets/shortcut-7567da19.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-43a7a0bb.js","assets/batchDownload-57f1d54b.css"])),"grid-view":zn(()=>wn(()=>import("./gridView-ecd7d2b5.js"),["assets/gridView-ecd7d2b5.js","assets/FileItem-b13cf2ec.js","assets/index-e0feaff2.js","assets/index-80432a0c.css","assets/FileItem-b2f0fcbe.css","assets/index-087e0eb8.js","assets/shortcut-7567da19.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-43a7a0bb.js","assets/gridView-eef9ac55.css"])),"workspace-snapshot":zn(()=>wn(()=>import("./index-bd4c5aee.js"),["assets/index-bd4c5aee.js","assets/index-bd568ec0.css"])),"random-image":zn(()=>wn(()=>import("./randomImage-19f5d043.js"),["assets/randomImage-19f5d043.js","assets/FileItem-b13cf2ec.js","assets/index-e0feaff2.js","assets/index-80432a0c.css","assets/FileItem-b2f0fcbe.css","assets/index-087e0eb8.js","assets/shortcut-7567da19.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-43a7a0bb.js","assets/MultiSelectKeep-964aa0b8.js","assets/MultiSelectKeep-9ed57c84.css","assets/randomImage-4d1c5076.css"]))},r=(o,s,l)=>{var c,f;const u=e.tabList[o];if(l==="add"){const p={type:"empty",key:Rn(),name:fe("emptyStartPage")};u.panes.push(p),u.key=p.key}else{const p=u.panes.findIndex(g=>g.key===s);if(u.key===s&&(u.key=((c=u.panes[p-1])==null?void 0:c.key)??((f=u.panes[1])==null?void 0:f.key)),u.panes.splice(p,1),u.panes.length===0&&e.tabList.splice(o,1),e.tabList.length===0){const g=e.createEmptyPane();e.tabList.push({panes:[g],key:g.key,id:Rn()})}}};ju("closeTabPane",(o,s)=>r(o,s,"del"));const a=L();me(()=>e.tabList,async()=>{var o;await qe(),e.saveRecord(),Array.from(((o=a.value)==null?void 0:o.querySelectorAll(".splitpanes__pane"))??[]).forEach((s,l)=>{Array.from(s.querySelectorAll(".ant-tabs-tab")??[]).forEach((u,c)=>{const f=u;f.setAttribute("draggable","true"),f.setAttribute("tabIdx",l.toString()),f.setAttribute("paneIdx",c.toString()),f.ondragend=()=>{e.dragingTab=void 0},f.ondragstart=p=>{e.dragingTab={tabIdx:l,paneIdx:c},p.dataTransfer.setData("text/plain",JSON.stringify({tabIdx:l,paneIdx:c,from:"tab-drag"}))}})})},{immediate:!0,deep:!0});const i=ii(()=>gr.emit("returnToIIB"),100);return MG(async()=>{const o=window.parent;if(!await _q(()=>o==null?void 0:o.onUiTabChange,200,3e4)){console.log("watch tab change failed");return}o.onUiTabChange(()=>{const s=o.get_uiCurrentTabContent();s!=null&&s.id.includes("infinite-image-browsing")&&i()})}),me(sq(),o=>o&&i()),(o,s)=>{const l=Au,u=ts;return Ce(),Ee("div",{ref_key:"container",ref:a},[_(se(ET),{class:"default-theme"},{default:Fe(()=>[(Ce(!0),Ee(Ae,null,yr(se(e).tabList,(c,f)=>(Ce(),gt(se(Iv),{key:c.id},{default:Fe(()=>[_(Qq,{tabIdx:f},{default:Fe(()=>[_(u,{type:"editable-card",activeKey:c.key,"onUpdate:activeKey":p=>c.key=p,onEdit:(p,g)=>r(f,p,g)},{default:Fe(()=>[(Ce(!0),Ee(Ae,null,yr(c.panes,(p,g)=>(Ce(),gt(l,{key:p.key,tab:p.name,class:"pane"},{default:Fe(()=>[(Ce(),gt(Fk(n[p.type]),ap({tabIdx:f,paneKey:p.key,paneIdx:g},p),null,16,["tabIdx","paneKey","paneIdx"]))]),_:2},1032,["tab"]))),128))]),_:2},1032,["activeKey","onUpdate:activeKey","onEdit"])]),_:2},1032,["tabIdx"])]),_:2},1024))),128))]),_:1}),_(FX)],512)}}});const DX=Cr(RX,[["__scopeId","data-v-76f3eb81"]]);const $T=t=>(fo("data-v-0a74f0db"),t=t(),vo(),t),LX={class:"organize-jobs-wrapper"},zX=$T(()=>ye("span",{class:"fab-icon"},"📁",-1)),BX={key:1,class:"organize-jobs-panel"},jX={class:"panel-header"},VX={class:"panel-title"},WX={class:"panel-header-right"},HX={class:"job-header"},UX=$T(()=>ye("span",{class:"job-icon"},"📁",-1)),KX={class:"job-folders"},GX={class:"job-progress"},qX={class:"stage-label"},JX={class:"preview-ready-hint"},YX={class:"stage-label"},XX={key:0,class:"current-file"},ZX={class:"result-summary success"},QX={class:"result-summary error"},eZ=ve({__name:"OrganizeJobsPanel",emits:["open-preview"],setup(t,{emit:e}){const n=dn(),r=p=>!p||p.length===0?"":p.length===1?p[0].split(/[/\\]/).pop()||p[0]:`${p.length} ${fe("folders")}`,a=p=>({queued:"default",running:"processing",preview_ready:"warning",moving:"processing",done:"success",error:"error"})[p]||"default",i=p=>({queued:fe("queued"),running:fe("analyzing"),preview_ready:fe("waitingConfirm"),moving:fe("moving"),done:fe("completed"),error:fe("error")})[p]||p,o=p=>p?{embedding:fe("generatingEmbeddings"),clustering:fe("clusteringAnalysis"),titling:fe("generatingTitles"),preview_ready:fe("previewReady"),moving:fe("movingFiles"),done:fe("completed")}[p]||p:"",s=p=>{var g;return["queued","running"].includes(p.status)&&["embedding","clustering","titling"].includes(((g=p.progress)==null?void 0:g.stage)||"")},l=p=>{if(!p)return 0;const{stage:g,embedded_done:d,to_embed:v,clusters_done:m,clusters_total:h}=p;return g==="embedding"&&v>0?Math.round(d/v*40):g==="clustering"?50:g==="titling"&&h>0?60+Math.round(m/h*40):0},u=p=>{if(!p)return 0;const{moved_done:g,moved_total:d}=p;return d>0?Math.round(g/d*100):0},c=p=>{const g=JSON.parse(JSON.stringify(p));console.log("openPreview called","job_id:",g.job_id,"status:",g.status,"preview:",g.preview?`has preview (${g.preview.total_files} files)`:"no preview"),e("open-preview",g)},f=p=>{n.removeOrganizeJob(p)};return(p,g)=>{const d=Xl,v=Wt,m=sP,h=a9;return Ce(),Ee("div",LX,[se(n).activeOrganizeJobs.length&&!se(n).showOrganizePanel?(Ce(),Ee("div",{key:0,class:"organize-jobs-fab",onClick:g[0]||(g[0]=y=>se(n).showOrganizePanel=!0)},[zX,_(d,{count:se(n).activeOrganizeJobs.length,offset:[-2,2]},null,8,["count"])])):et("",!0),se(n).activeOrganizeJobs.length&&se(n).showOrganizePanel?(Ce(),Ee("div",BX,[ye("div",jX,[ye("span",VX,Te(se(fe)("organizeJobs")),1),ye("div",WX,[_(d,{count:se(n).activeOrganizeJobs.length},null,8,["count"]),_(v,{type:"text",size:"small",class:"close-btn",onClick:g[1]||(g[1]=y=>se(n).showOrganizePanel=!1)},{default:Fe(()=>[Ye("✕")]),_:1})])]),(Ce(!0),Ee(Ae,null,yr(se(n).activeOrganizeJobs,y=>{var b,w,S,C,x,O,P,N;return Ce(),Ee("div",{key:y.job_id,class:"job-item"},[ye("div",HX,[UX,ye("span",KX,Te(r(y.folder_paths)),1),_(m,{color:a(y.status)},{default:Fe(()=>[Ye(Te(i(y.status)),1)]),_:2},1032,["color"])]),ye("div",GX,[s(y)?(Ce(),Ee(Ae,{key:0},[ye("div",qX,Te(o((b=y.progress)==null?void 0:b.stage)),1),_(h,{percent:l(y.progress),status:y.status==="error"?"exception":"active",size:"small"},null,8,["percent","status"])],64)):et("",!0),y.status==="preview_ready"?(Ce(),Ee(Ae,{key:1},[ye("div",JX,Te(se(fe)("organizePreviewReady",{files:((w=y.preview)==null?void 0:w.total_files)??0,clusters:((C=(S=y.preview)==null?void 0:S.clusters)==null?void 0:C.length)??0})),1),_(v,{type:"primary",size:"small",onClick:D=>c(y)},{default:Fe(()=>[Ye(Te(se(fe)("viewPreview")),1)]),_:2},1032,["onClick"])],64)):et("",!0),((x=y.progress)==null?void 0:x.stage)==="moving"?(Ce(),Ee(Ae,{key:2},[ye("div",YX,Te(se(fe)("movingFiles")),1),_(h,{percent:u(y.progress),size:"small",status:"active"},null,8,["percent"]),y.progress.current_file?(Ce(),Ee("div",XX,Te(y.progress.current_file),1)):et("",!0)],64)):et("",!0),y.status==="done"?(Ce(),Ee(Ae,{key:3},[ye("div",ZX,Te(se(fe)("organizeComplete",{moved:((O=y.progress)==null?void 0:O.moved_done)??0,folders:((N=(P=y.progress)==null?void 0:P.created_folders)==null?void 0:N.length)??0})),1),_(v,{size:"small",onClick:D=>f(y.job_id)},{default:Fe(()=>[Ye(Te(se(fe)("close")),1)]),_:2},1032,["onClick"])],64)):et("",!0),y.status==="error"?(Ce(),Ee(Ae,{key:4},[ye("div",QX,Te(se(fe)("organizeFailed")),1),_(v,{size:"small",onClick:D=>f(y.job_id)},{default:Fe(()=>[Ye(Te(se(fe)("close")),1)]),_:2},1032,["onClick"])],64)):et("",!0)])])}),128))])):et("",!0)])}}});const tZ=Cr(eZ,[["__scopeId","data-v-0a74f0db"]]);const nZ=async t=>(await Be.value.post("/db/organize_files_start",t)).data,FT=async t=>(await Be.value.get("/db/organize_files_status",{params:{job_id:t}})).data,rZ=async t=>(await Be.value.post("/db/organize_files_confirm",t)).data,RT=t=>(fo("data-v-b7f18d8d"),t=t(),vo(),t),aZ={class:"organize-preview"},iZ=["src"],oZ={class:"preview-header"},sZ={class:"summary"},lZ={class:"dest-folder"},uZ={class:"cluster-header"},cZ=RT(()=>ye("span",{class:"folder-icon"},"📁",-1)),fZ={key:0,class:"folder-name"},dZ={class:"file-count"},vZ={class:"file-mappings"},pZ=["onMouseenter"],hZ=RT(()=>ye("span",{class:"arrow"},"→",-1)),gZ=["title"],mZ=["onClick"],yZ={class:"preview-actions"},bZ={class:"action-summary"},wZ={key:0},SZ=ve({__name:"OrganizePreview",props:{preview:{}},emits:["cancel","confirmed"],setup(t,{emit:e}){const n=t,r=L([]),a=ut(new Set),i=ut(new Map),o=ut(new Set),s=L(null),l=L(""),u=L(!1),c=L(""),f=ut({x:0,y:0});let p=null;const g=B(()=>{const F=[...n.preview.clusters];return n.preview.noise.size>0&&F.push(n.preview.noise),F}),d=F=>i.get(F.cluster_id)||F.suggested_folder_name,v=F=>F.split(/[/\\]/).pop()||F,m=F=>`${gi.value}/image-thumbnail?path=${encodeURIComponent(F)}&t=${Date.now()}&size=512x512`,h=(F,R)=>{var k;const j=((k=R.split(".").pop())==null?void 0:k.toLowerCase())||"";["jpg","jpeg","png","gif","webp","bmp","ico","svg"].includes(j)&&(p&&clearTimeout(p),p=setTimeout(()=>{c.value=m(R),b(F)},300))},y=()=>{p&&(clearTimeout(p),p=null),c.value=""},b=F=>{f.x=F.clientX+20,f.y=F.clientY-100,f.y<10&&(f.y=10)},w=F=>o.has(F.cluster_id)?F.file_mappings:F.file_mappings.slice(0,10),S=B(()=>g.value.filter(F=>!a.has(F.cluster_id)).reduce((F,R)=>F+R.file_mappings.filter(j=>j.dest_path!==j.src_path).length,0)),C=B(()=>g.value.filter(F=>a.has(F.cluster_id)).reduce((F,R)=>F+R.size,0)),x=F=>{s.value=F.cluster_id,l.value=d(F)},O=()=>{s.value&&l.value.trim()&&i.set(s.value,l.value.trim()),s.value=null,l.value=""},P=F=>{a.has(F)?a.delete(F):a.add(F)},N=()=>{e("cancel")},D=async()=>{u.value=!0;try{const F=[];i.forEach((R,j)=>{F.push({cluster_id:j,new_folder_name:R})}),await rZ({job_id:n.preview.job_id,folder_edits:F.length>0?F:void 0,skip_cluster_ids:a.size>0?Array.from(a):void 0}),mt.success(fe("startMovingFiles")),e("confirmed")}catch(F){mt.error(`${fe("confirmFailed")}: ${F.message||F}`)}finally{u.value=!1}};return(F,R)=>{const j=At,z=sP,k=Wt,T=g9,A=Mu,$=ns;return Ce(),Ee("div",aZ,[c.value?(Ce(),Ee("div",{key:0,class:"image-preview-tooltip",style:Fn({top:f.y+"px",left:f.x+"px"})},[ye("img",{src:c.value,onError:R[0]||(R[0]=W=>c.value="")},null,40,iZ)],4)):et("",!0),ye("div",oZ,[ye("h3",null,Te(se(fe)("smartOrganizePreview")),1),ye("div",sZ,Te(se(fe)("organizePreviewSummary",{files:F.preview.total_files,folders:F.preview.clusters.length+(F.preview.noise.size>0?1:0)})),1),ye("div",lZ,[Ye(Te(se(fe)("destFolder"))+": ",1),ye("code",null,Te(F.preview.dest_folder),1)])]),_($,{activeKey:r.value,"onUpdate:activeKey":R[5]||(R[5]=W=>r.value=W),class:"cluster-list"},{default:Fe(()=>[(Ce(!0),Ee(Ae,null,yr(g.value,W=>(Ce(),gt(A,{key:W.cluster_id,class:sn({skipped:a.has(W.cluster_id)})},{header:Fe(()=>[ye("div",uZ,[cZ,s.value!==W.cluster_id?(Ce(),Ee("span",fZ,Te(d(W)),1)):(Ce(),gt(j,{key:1,value:l.value,"onUpdate:value":R[1]||(R[1]=G=>l.value=G),size:"small",style:{width:"200px"},onPressEnter:O,onBlur:O,onClick:R[2]||(R[2]=Rt(()=>{},["stop"]))},null,8,["value"])),ye("span",dZ,"("+Te(W.size)+" "+Te(se(fe)("files"))+")",1),W.cluster_id==="__noise__"?(Ce(),gt(z,{key:2,color:"orange"},{default:Fe(()=>[Ye(Te(se(fe)("unsorted")),1)]),_:1})):et("",!0)])]),extra:Fe(()=>[_(T,{onClick:R[3]||(R[3]=Rt(()=>{},["stop"]))},{default:Fe(()=>[_(k,{size:"small",onClick:G=>x(W)},{default:Fe(()=>[Ye(Te(se(fe)("rename")),1)]),_:2},1032,["onClick"]),_(k,{size:"small",type:a.has(W.cluster_id)?"primary":"default",onClick:G=>P(W.cluster_id)},{default:Fe(()=>[Ye(Te(a.has(W.cluster_id)?se(fe)("cancelSkip"):se(fe)("skip")),1)]),_:2},1032,["type","onClick"])]),_:2},1024)]),default:Fe(()=>[ye("div",vZ,[(Ce(!0),Ee(Ae,null,yr(w(W),G=>(Ce(),Ee("div",{key:G.src_path,class:"file-mapping"},[ye("span",{class:"src-path",onMouseenter:q=>h(q,G.src_path),onMouseleave:y,onMousemove:R[4]||(R[4]=q=>b(q))},Te(v(G.src_path)),41,pZ),hZ,ye("span",{class:"dest-path",title:G.dest_path},Te(d(W))+"/"+Te(v(G.src_path)),9,gZ)]))),128)),W.file_mappings.length>10&&!o.has(W.cluster_id)?(Ce(),Ee("div",{key:0,class:"show-more",onClick:G=>o.add(W.cluster_id)},Te(se(fe)("showMore",{count:W.file_mappings.length-10})),9,mZ)):et("",!0)])]),_:2},1032,["class"]))),128))]),_:1},8,["activeKey"]),ye("div",yZ,[ye("div",bZ,[Ye(Te(se(fe)("willMove",{count:S.value}))+" ",1),a.size?(Ce(),Ee("span",wZ,"("+Te(se(fe)("skipped",{count:C.value}))+")",1)):et("",!0)]),_(T,null,{default:Fe(()=>[_(k,{onClick:N},{default:Fe(()=>[Ye(Te(se(fe)("cancel")),1)]),_:1}),_(k,{type:"primary",loading:u.value,onClick:D},{default:Fe(()=>[Ye(Te(se(fe)("confirmOrganize")),1)]),_:1},8,["loading"])]),_:1})])])}}});const _Z=Cr(SZ,[["__scopeId","data-v-b7f18d8d"]]);function gre(t){const e=dn();e.smartOrganizeConfigPath=t,e.showSmartOrganizeConfig=!0}async function CZ(t,e){const n=dn();try{const r={folder_paths:t,lang:n.lang,dest_folder:e.destFolder||void 0,min_cluster_size:e.minClusterSize,action:e.action,recursive:e.recursive},{job_id:a}=await nZ(r);return n.addOrganizeJob({job_id:a,status:"queued",progress:{stage:"embedding",embedded_done:0,to_embed:0,clusters_done:0,clusters_total:0,moved_done:0,moved_total:0,current_file:"",created_folders:[],errors:[]},startedAt:Date.now(),folder_paths:t}),mt.success(fe("organizeJobStarted")),xZ(a,t),a}catch(r){throw mt.error(`${fe("error")}: ${r.message||r}`),r}}async function xZ(t,e){const n=dn(),r=2e3,a=async()=>{var i,o;try{const s=await FT(t);console.log("Poll response:","status:",s.status,"stage:",(i=s.progress)==null?void 0:i.stage,"preview:",s.preview?`yes (${s.preview.total_files} files, ${(o=s.preview.clusters)==null?void 0:o.length} clusters)`:"no");const l={status:s.status,progress:s.progress};s.preview&&(l.preview=s.preview,console.log("Preview data received from API:",s.preview.total_files,"files")),n.updateOrganizeJob(t,l),["done","error","preview_ready"].includes(s.status)?(console.log("Poll stopped at status:",s.status),s.status==="error"?console.error("Organize job failed:",s.error):s.status==="preview_ready"?console.log("Preview ready - user can now view and confirm"):s.status==="done"&&(console.log("Organize done, emitting refresh event"),gr.emit("refreshFileView",{paths:e}))):setTimeout(a,r)}catch(s){console.error("Poll organize status error:",s),setTimeout(a,r*2)}};a()}const DT=t=>(fo("data-v-5d792d0e"),t=t(),vo(),t),PZ={class:"info-panel"},OZ={class:"info-row"},TZ={class:"info-label"},EZ={class:"info-path"},kZ={class:"info-tips"},IZ=DT(()=>ye("span",{class:"separator"},"|",-1)),AZ=DT(()=>ye("span",{class:"separator"},"|",-1)),MZ={class:"form-item-hint"},NZ={class:"form-item-hint"},$Z={class:"form-item-hint"},FZ={key:0,class:"loading-status"},RZ={style:{"margin-left":"8px"}},DZ=ve({__name:"SmartOrganizeConfigModal",setup(t){const e=dn(),n=L(!1),r=L(""),a=ut({destFolder:"",recursive:!1,minClusterSize:3,action:"move"});me(()=>e.showSmartOrganizeConfig,s=>{s&&(a.destFolder="",a.recursive=!1,a.minClusterSize=3,a.action="move",n.value=!1,r.value="")});const i=async()=>{const s=e.smartOrganizeConfigPath;try{n.value=!0,r.value=fe("updatingIndex"),await dY({folder:s,recursive:a.recursive}),r.value=fe("startingOrganizeJob"),await CZ([s],{...a,destFolder:a.destFolder||s}),e.showSmartOrganizeConfig=!1}catch(l){console.error("Smart organize failed:",l)}finally{n.value=!1,r.value=""}},o=()=>{n.value||(e.showSmartOrganizeConfig=!1)};return(s,l)=>{const u=At,c=rP,f=w9,p=Gj,g=Hn,d=Sx,v=ha,m=ei,h=Wt,y=Pt;return Ce(),gt(y,{visible:se(e).showSmartOrganizeConfig,"onUpdate:visible":l[4]||(l[4]=b=>se(e).showSmartOrganizeConfig=b),title:se(fe)("smartOrganizeConfig"),width:"70vw",onOk:i,onCancel:o,confirmLoading:n.value},{footer:Fe(()=>[_(h,{onClick:o,disabled:n.value},{default:Fe(()=>[Ye(Te(se(fe)("organizeCancel")),1)]),_:1},8,["disabled"]),_(h,{type:"primary",onClick:i,loading:n.value},{default:Fe(()=>[Ye(Te(se(fe)("organizeStartTask")),1)]),_:1},8,["loading"])]),default:Fe(()=>[ye("div",PZ,[ye("div",OZ,[ye("span",TZ,Te(se(fe)("organizeSourceFolder"))+":",1),ye("code",EZ,Te(se(e).smartOrganizeConfigPath),1)]),ye("div",kZ,[ye("span",null,Te(se(fe)("smartOrganizeNotice")),1),IZ,ye("span",null,Te(se(fe)("topicSearchRequirementsOpenai")),1),AZ,ye("span",null,Te(se(fe)("topicSearchRequirementsDepsPython")),1)])]),_(v,{"label-col":{span:8},"wrapper-col":{span:16}},{default:Fe(()=>[_(c,{label:se(fe)("organizeTargetFolder")},{default:Fe(()=>[_(u,{value:a.destFolder,"onUpdate:value":l[0]||(l[0]=b=>a.destFolder=b),placeholder:se(e).smartOrganizeConfigPath,disabled:n.value},null,8,["value","placeholder","disabled"]),ye("div",MZ,Te(se(fe)("organizeTargetFolderDesc")),1)]),_:1},8,["label"]),_(c,{label:se(fe)("organizeRecursive")},{default:Fe(()=>[_(f,{checked:a.recursive,"onUpdate:checked":l[1]||(l[1]=b=>a.recursive=b),disabled:n.value},null,8,["checked","disabled"]),ye("div",NZ,Te(se(fe)("organizeRecursiveDesc")),1)]),_:1},8,["label"]),_(c,{label:se(fe)("organizeMinClusterSize")},{default:Fe(()=>[_(p,{value:a.minClusterSize,"onUpdate:value":l[2]||(l[2]=b=>a.minClusterSize=b),min:2,max:20,style:{width:"100px"},disabled:n.value},null,8,["value","disabled"]),ye("div",$Z,Te(se(fe)("organizeMinClusterSizeDesc")),1)]),_:1},8,["label"]),_(c,{label:se(fe)("organizeAction")},{default:Fe(()=>[_(d,{value:a.action,"onUpdate:value":l[3]||(l[3]=b=>a.action=b),disabled:n.value},{default:Fe(()=>[_(g,{value:"move"},{default:Fe(()=>[Ye(Te(se(fe)("organizeActionMove")),1)]),_:1}),_(g,{value:"copy"},{default:Fe(()=>[Ye(Te(se(fe)("organizeActionCopy")),1)]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"])]),_:1}),n.value?(Ce(),Ee("div",FZ,[_(m,{size:"small"}),ye("span",RZ,Te(r.value),1)])):et("",!0)]),_:1},8,["visible","title","confirmLoading"])}}});const LZ=Cr(DZ,[["__scopeId","data-v-5d792d0e"]]);const zZ={class:"kv-pair-editor"},BZ={class:"kv-key-wrapper"},jZ={key:0,class:"key-error-hint"},VZ={key:0,class:"kv-value-wrapper"},WZ={key:0,class:"json-error-hint"},HZ=ve({__name:"KvPairEditor",props:{modelValue:{},allKeys:{}},emits:["update:modelValue","remove"],setup(t,{expose:e,emit:n}){const r=t,a=L(""),i=h=>h.trim()?r.allKeys&&r.allKeys.includes(h.trim())?(a.value=fe("keyMustBeUnique"),!1):(a.value="",!0):(a.value=fe("keyRequired"),!1),o=()=>{const h=l.value.value;if(!h)return"str";try{return typeof JSON.parse(h)!="string"?"json":"str"}catch{return"str"}},s=L("str"),l=NO({get(){const h=r.modelValue.value,y=typeof h=="string"&&s.value!=="json";return{...r.modelValue,value:y?h:JSON.stringify(r.modelValue.value,null,2)}},set(h){if(!i(h.key))return;const y=h.value,b={...h,value:s.value==="json"?JSON.parse(y):y};n("update:modelValue",b)}});s.value=o();const u=L(!0),c=L("{}");me([()=>l.value.value,()=>s.value],()=>{if(s.value==="json")try{const h=JSON.parse(l.value.value);c.value=JSON.stringify(h,null,2)}catch{console.warn("Invalid JSON, resetting jsonInput to empty object",l.value.value),c.value="{}"}},{immediate:!0});const f=()=>{const h=c.value;g(h)?(l.value.value=h,u.value=!0):u.value=!1},p=B({get(){return l.value.value},set(h){l.value.value=h}}),g=h=>{try{return JSON.parse(h),!0}catch{return!1}},d=h=>{const y=l.value.value;if(!y){s.value=h;return}if(h==="json"&&y){mt.warning(fe("clearBeforeSwitchToJson"));return}if(h==="str"&&c.value.trim()){mt.warning(fe("clearBeforeSwitchToString")),console.warn("Switching to string mode requires empty value",{val:c.value});return}l.value.value="",s.value=h},v=()=>{n("remove")};return e({validate:()=>{const h=i(l.value.key),y=s.value==="json"?u.value:!0;return h&&y},keyError:a,isValidJson:u}),(h,y)=>{const b=At,w=bh,S=W4,C=As,x=Wt;return Ce(),Ee("div",zZ,[ye("div",BZ,[_(b,{value:se(l).key,"onUpdate:value":y[0]||(y[0]=O=>se(l).key=O),placeholder:se(fe)("keyPlaceholder"),class:"kv-input kv-key"},null,8,["value","placeholder"]),a.value?(Ce(),Ee("div",jZ,Te(a.value),1)):et("",!0)]),s.value==="json"?(Ce(),Ee("div",VZ,[_(w,{value:c.value,"onUpdate:value":y[1]||(y[1]=O=>c.value=O),onBlur:f,placeholder:se(fe)("jsonValuePlaceholder"),"auto-size":{maxRows:8},class:"kv-input kv-value"},null,8,["value","placeholder"]),u.value?et("",!0):(Ce(),Ee("div",WZ,Te(se(fe)("jsonFormatError")),1))])):(Ce(),gt(w,{key:1,"auto-size":{maxRows:8},value:p.value,"onUpdate:value":y[2]||(y[2]=O=>p.value=O),placeholder:se(fe)("stringValuePlaceholder"),class:"kv-input kv-value"},null,8,["value","placeholder"])),_(C,{value:s.value,size:"small",class:"mode-selector",getPopupContainer:O=>O.parentNode,"onUpdate:value":d,style:{width:"80px"}},{default:Fe(()=>[_(S,{value:"str"},{default:Fe(()=>[Ye(Te(se(fe)("stringMode")),1)]),_:1}),_(S,{value:"json"},{default:Fe(()=>[Ye(Te(se(fe)("jsonMode")),1)]),_:1})]),_:1},8,["value","getPopupContainer"]),_(x,{size:"small",danger:"",onClick:v,class:"delete-btn"},{default:Fe(()=>[Ye(Te(se(fe)("delete")),1)]),_:1})])}}});const UZ=Cr(HZ,[["__scopeId","data-v-e97b6b39"]]),KZ={class:"editor-section"},GZ={class:"section-label"},qZ={class:"editor-section"},JZ={class:"section-label"},YZ={class:"editor-section"},XZ={class:"section-label"},ZZ={class:"section-hint"},QZ={class:"editor-section kv-editor-section"},eQ={class:"kv-header"},tQ={class:"section-label"},nQ={class:"section-hint"},rQ={key:0,class:"empty-state"},aQ={key:1,class:"kv-list"},iQ={class:"modal-footer"},zl="Steps: 20",oQ=ve({__name:"PromptEditorModal",setup(t){const e=L(!1),n=L(null),r=L("");ju("openPromptEditor",async y=>{n.value=y.file,console.log("Received openPromptEditor event for file:",y.file);try{const b=await Bs(y.file.fullpath);r.value=b}catch(b){console.error("Failed to fetch latest prompt:",b),r.value=""}g(),e.value=!0});const a=["hashes","resources"],i=y=>{const b=Gc(y),w=Object.entries(b).filter(([x])=>x!=="prompt"&&x!=="negativePrompt"&&!a.includes(x)&&x!=="extraJsonMetaInfo").map(([x,O])=>`${x.charAt(0).toUpperCase()+x.slice(1)}: ${O}`).join(`
+`);return l}return me(()=>{var s;return(s=e==null?void 0:e.lImg)==null?void 0:s.fullpath},async s=>{s&&(n.tasks.forEach(l=>l.cancel()),n.pushAction(()=>Bs(s)).res.then(l=>{a.value=o(l)}),n.pushAction(()=>Bs(e.rImg.fullpath)).res.then(l=>{i.value=o(l)}))},{immediate:!0}),(s,l)=>{const u=Gs("VueDiff");return Ce(),gt(u,{class:"diff",mode:"split",theme:se(r).computedTheme,language:"plaintext",prev:a.value,current:i.value},null,8,["theme","prev","current"])}}});const IX={key:0,class:"hint"},AX={class:"hint-inline"},MX=ve({__name:"ImgSliComparePane",props:{left:{},right:{},container:{}},setup(t,{expose:e}){const n=t,r=L(50),a=([{size:c}])=>{r.value=c},i=L(),{width:o}=dq(i);e({requestFullScreen:()=>{var c;(c=i.value)==null||c.requestFullscreen()}});const l=Pv(async()=>{if(!n.left||!n.right)return{width:0,height:0};const[c,f]=await Promise.all([Tv(Ta(n.left)),Tv(Ta(n.right))]);return{width:Math.max(c.width,f.width),height:Math.max(f.height,c.height)}}),u=Pv(async()=>{const c=l.value;if(!c)return"width";const{height:f,width:p}=c,g=p/f,d=document.body.clientWidth/document.body.clientHeight;return g>d?"width":"height"});return(c,f)=>(Ce(),Ee(Ae,null,[ye("div",{ref_key:"wrapperEl",ref:i,style:{height:"100%"}},[_(se(ET),{class:"default-theme",onResize:a},{default:Fe(()=>[c.left?(Ce(),gt(se(Iv),{key:0},{default:Fe(()=>[_(Cw,{side:"left","max-edge":se(u),"container-width":se(o),percent:r.value,img:c.left},null,8,["max-edge","container-width","percent","img"])]),_:1})):et("",!0),c.right?(Ce(),gt(se(Iv),{key:1},{default:Fe(()=>[_(Cw,{"max-edge":se(u),percent:r.value,img:c.right,side:"right","container-width":se(o)},null,8,["max-edge","percent","img","container-width"])]),_:1})):et("",!0)]),_:1})],512),c.container!=="drawer"?(Ce(),Ee("div",IX,[ye("div",AX,[_(se(sJ)),Ye(" "+Te(c.$t("scrollDownToComparePrompt")),1)])])):et("",!0),_(kX,{lImg:c.left,rImg:c.right},null,8,["lImg","rImg"])],64))}});const NX={class:"actions"},$X=ve({__name:"ImgSliDrawer",setup(t){const e=kT(),n=L();return(r,a)=>{const i=Wt,o=J4,s=OB;return Ce(),Ee(Ae,null,[_(s,{width:"100vw",visible:se(e).drawerVisible,"onUpdate:visible":a[2]||(a[2]=l=>se(e).drawerVisible=l),"destroy-on-close":"",class:"img-sli","close-icon":null},{footer:Fe(()=>[ye("div",NX,[_(i,{onClick:a[0]||(a[0]=l=>se(e).drawerVisible=!1)},{default:Fe(()=>[Ye(Te(r.$t("close")),1)]),_:1}),_(i,{onClick:a[1]||(a[1]=l=>{var u;return(u=n.value)==null?void 0:u.requestFullScreen()})},{default:Fe(()=>[Ye(Te(r.$t("fullscreenview")),1)]),_:1}),_(o,{banner:"",style:{height:"32px"},message:"👇 "+r.$t("scrollDownToComparePrompt"),type:"info","show-icon":""},null,8,["message"])])]),default:Fe(()=>[se(e).left&&se(e).right?(Ce(),gt(MX,{key:0,ref_key:"splitpane",ref:n,container:"drawer",left:se(e).left,right:se(e).right},null,8,["left","right"])):et("",!0)]),_:1},8,["visible"]),_(aY),_(PX)],64)}}});const FX=Cr($X,[["__scopeId","data-v-d6c97117"]]),RX=ve({__name:"SplitViewTab",setup(t){const e=dn(),n={local:zn(()=>wn(()=>import("./stackView-f26b8c66.js"),["assets/stackView-f26b8c66.js","assets/shortcut-feec8cda.js","assets/shortcut-2acaf603.css","assets/index-bb784bbb.js","assets/index-80432a0c.css","assets/index-1b3df0c9.js","assets/_isIterateeCall-a5c9e9ee.js","assets/FileItem-0178f9f2.js","assets/FileItem-f935dd79.css","assets/MultiSelectKeep-beba09aa.js","assets/MultiSelectKeep-88e5d21e.css","assets/stackView-714f932f.css"])),empty:zn(()=>wn(()=>import("./emptyStartup-9dc41526.js"),["assets/emptyStartup-9dc41526.js","assets/index-bb784bbb.js","assets/index-80432a0c.css","assets/emptyStartup-2ab553ed.css"])),"global-setting":zn(()=>wn(()=>import("./globalSetting-f4492b67.js"),["assets/globalSetting-f4492b67.js","assets/shortcut-feec8cda.js","assets/shortcut-2acaf603.css","assets/globalSetting-e0e78319.css"])),"tag-search-matched-image-grid":zn(()=>wn(()=>import("./MatchedImageGrid-57a03cf6.js"),["assets/MatchedImageGrid-57a03cf6.js","assets/MultiSelectKeep-beba09aa.js","assets/index-bb784bbb.js","assets/index-80432a0c.css","assets/FileItem-0178f9f2.js","assets/FileItem-f935dd79.css","assets/index-1b3df0c9.js","assets/shortcut-feec8cda.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-a5c9e9ee.js","assets/MultiSelectKeep-88e5d21e.css","assets/hook-3cb368d4.js","assets/MatchedImageGrid-c716d973.css"])),"topic-search-matched-image-grid":zn(()=>wn(()=>import("./MatchedImageGrid-dee48863.js"),["assets/MatchedImageGrid-dee48863.js","assets/MultiSelectKeep-beba09aa.js","assets/index-bb784bbb.js","assets/index-80432a0c.css","assets/FileItem-0178f9f2.js","assets/FileItem-f935dd79.css","assets/index-1b3df0c9.js","assets/shortcut-feec8cda.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-a5c9e9ee.js","assets/MultiSelectKeep-88e5d21e.css","assets/hook-3cb368d4.js","assets/MatchedImageGrid-e9e22234.css"])),"tag-search":zn(()=>wn(()=>import("./TagSearch-0db75588.js"),["assets/TagSearch-0db75588.js","assets/TipsCarousel-dc03f138.js","assets/TipsCarousel-23a4bc9c.css","assets/_isIterateeCall-a5c9e9ee.js","assets/TagSearch-936bbb36.css"])),"fuzzy-search":zn(()=>wn(()=>import("./SubstrSearch-95d756e3.js"),["assets/SubstrSearch-95d756e3.js","assets/FileItem-0178f9f2.js","assets/index-bb784bbb.js","assets/index-80432a0c.css","assets/FileItem-f935dd79.css","assets/MultiSelectKeep-beba09aa.js","assets/index-1b3df0c9.js","assets/shortcut-feec8cda.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-a5c9e9ee.js","assets/MultiSelectKeep-88e5d21e.css","assets/hook-3cb368d4.js","assets/TipsCarousel-dc03f138.js","assets/TipsCarousel-23a4bc9c.css","assets/SubstrSearch-7eea79b7.css"])),"topic-search":zn(()=>wn(()=>import("./TopicSearch-74f28ec5.js"),["assets/TopicSearch-74f28ec5.js","assets/TopicSearch-43737bca.css"])),"img-sli":zn(()=>wn(()=>import("./ImgSliPagePane-7368738c.js"),["assets/ImgSliPagePane-7368738c.js","assets/ImgSliPagePane-868b21f8.css"])),"batch-download":zn(()=>wn(()=>import("./batchDownload-f49cefa3.js"),["assets/batchDownload-f49cefa3.js","assets/FileItem-0178f9f2.js","assets/index-bb784bbb.js","assets/index-80432a0c.css","assets/FileItem-f935dd79.css","assets/index-1b3df0c9.js","assets/shortcut-feec8cda.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-a5c9e9ee.js","assets/batchDownload-57f1d54b.css"])),"grid-view":zn(()=>wn(()=>import("./gridView-8beb3b24.js"),["assets/gridView-8beb3b24.js","assets/FileItem-0178f9f2.js","assets/index-bb784bbb.js","assets/index-80432a0c.css","assets/FileItem-f935dd79.css","assets/index-1b3df0c9.js","assets/shortcut-feec8cda.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-a5c9e9ee.js","assets/gridView-eef9ac55.css"])),"workspace-snapshot":zn(()=>wn(()=>import("./index-5087ab29.js"),["assets/index-5087ab29.js","assets/index-bd568ec0.css"])),"random-image":zn(()=>wn(()=>import("./randomImage-7d255c6d.js"),["assets/randomImage-7d255c6d.js","assets/FileItem-0178f9f2.js","assets/index-bb784bbb.js","assets/index-80432a0c.css","assets/FileItem-f935dd79.css","assets/index-1b3df0c9.js","assets/shortcut-feec8cda.js","assets/shortcut-2acaf603.css","assets/_isIterateeCall-a5c9e9ee.js","assets/MultiSelectKeep-beba09aa.js","assets/MultiSelectKeep-88e5d21e.css","assets/randomImage-4d1c5076.css"]))},r=(o,s,l)=>{var c,f;const u=e.tabList[o];if(l==="add"){const p={type:"empty",key:Rn(),name:fe("emptyStartPage")};u.panes.push(p),u.key=p.key}else{const p=u.panes.findIndex(g=>g.key===s);if(u.key===s&&(u.key=((c=u.panes[p-1])==null?void 0:c.key)??((f=u.panes[1])==null?void 0:f.key)),u.panes.splice(p,1),u.panes.length===0&&e.tabList.splice(o,1),e.tabList.length===0){const g=e.createEmptyPane();e.tabList.push({panes:[g],key:g.key,id:Rn()})}}};ju("closeTabPane",(o,s)=>r(o,s,"del"));const a=L();me(()=>e.tabList,async()=>{var o;await qe(),e.saveRecord(),Array.from(((o=a.value)==null?void 0:o.querySelectorAll(".splitpanes__pane"))??[]).forEach((s,l)=>{Array.from(s.querySelectorAll(".ant-tabs-tab")??[]).forEach((u,c)=>{const f=u;f.setAttribute("draggable","true"),f.setAttribute("tabIdx",l.toString()),f.setAttribute("paneIdx",c.toString()),f.ondragend=()=>{e.dragingTab=void 0},f.ondragstart=p=>{e.dragingTab={tabIdx:l,paneIdx:c},p.dataTransfer.setData("text/plain",JSON.stringify({tabIdx:l,paneIdx:c,from:"tab-drag"}))}})})},{immediate:!0,deep:!0});const i=ii(()=>gr.emit("returnToIIB"),100);return MG(async()=>{const o=window.parent;if(!await _q(()=>o==null?void 0:o.onUiTabChange,200,3e4)){console.log("watch tab change failed");return}o.onUiTabChange(()=>{const s=o.get_uiCurrentTabContent();s!=null&&s.id.includes("infinite-image-browsing")&&i()})}),me(sq(),o=>o&&i()),(o,s)=>{const l=Au,u=ts;return Ce(),Ee("div",{ref_key:"container",ref:a},[_(se(ET),{class:"default-theme"},{default:Fe(()=>[(Ce(!0),Ee(Ae,null,yr(se(e).tabList,(c,f)=>(Ce(),gt(se(Iv),{key:c.id},{default:Fe(()=>[_(Qq,{tabIdx:f},{default:Fe(()=>[_(u,{type:"editable-card",activeKey:c.key,"onUpdate:activeKey":p=>c.key=p,onEdit:(p,g)=>r(f,p,g)},{default:Fe(()=>[(Ce(!0),Ee(Ae,null,yr(c.panes,(p,g)=>(Ce(),gt(l,{key:p.key,tab:p.name,class:"pane"},{default:Fe(()=>[(Ce(),gt(Fk(n[p.type]),ap({tabIdx:f,paneKey:p.key,paneIdx:g},p),null,16,["tabIdx","paneKey","paneIdx"]))]),_:2},1032,["tab"]))),128))]),_:2},1032,["activeKey","onUpdate:activeKey","onEdit"])]),_:2},1032,["tabIdx"])]),_:2},1024))),128))]),_:1}),_(FX)],512)}}});const DX=Cr(RX,[["__scopeId","data-v-76f3eb81"]]);const $T=t=>(fo("data-v-0a74f0db"),t=t(),vo(),t),LX={class:"organize-jobs-wrapper"},zX=$T(()=>ye("span",{class:"fab-icon"},"📁",-1)),BX={key:1,class:"organize-jobs-panel"},jX={class:"panel-header"},VX={class:"panel-title"},WX={class:"panel-header-right"},HX={class:"job-header"},UX=$T(()=>ye("span",{class:"job-icon"},"📁",-1)),KX={class:"job-folders"},GX={class:"job-progress"},qX={class:"stage-label"},JX={class:"preview-ready-hint"},YX={class:"stage-label"},XX={key:0,class:"current-file"},ZX={class:"result-summary success"},QX={class:"result-summary error"},eZ=ve({__name:"OrganizeJobsPanel",emits:["open-preview"],setup(t,{emit:e}){const n=dn(),r=p=>!p||p.length===0?"":p.length===1?p[0].split(/[/\\]/).pop()||p[0]:`${p.length} ${fe("folders")}`,a=p=>({queued:"default",running:"processing",preview_ready:"warning",moving:"processing",done:"success",error:"error"})[p]||"default",i=p=>({queued:fe("queued"),running:fe("analyzing"),preview_ready:fe("waitingConfirm"),moving:fe("moving"),done:fe("completed"),error:fe("error")})[p]||p,o=p=>p?{embedding:fe("generatingEmbeddings"),clustering:fe("clusteringAnalysis"),titling:fe("generatingTitles"),preview_ready:fe("previewReady"),moving:fe("movingFiles"),done:fe("completed")}[p]||p:"",s=p=>{var g;return["queued","running"].includes(p.status)&&["embedding","clustering","titling"].includes(((g=p.progress)==null?void 0:g.stage)||"")},l=p=>{if(!p)return 0;const{stage:g,embedded_done:d,to_embed:v,clusters_done:m,clusters_total:h}=p;return g==="embedding"&&v>0?Math.round(d/v*40):g==="clustering"?50:g==="titling"&&h>0?60+Math.round(m/h*40):0},u=p=>{if(!p)return 0;const{moved_done:g,moved_total:d}=p;return d>0?Math.round(g/d*100):0},c=p=>{const g=JSON.parse(JSON.stringify(p));console.log("openPreview called","job_id:",g.job_id,"status:",g.status,"preview:",g.preview?`has preview (${g.preview.total_files} files)`:"no preview"),e("open-preview",g)},f=p=>{n.removeOrganizeJob(p)};return(p,g)=>{const d=Xl,v=Wt,m=sP,h=a9;return Ce(),Ee("div",LX,[se(n).activeOrganizeJobs.length&&!se(n).showOrganizePanel?(Ce(),Ee("div",{key:0,class:"organize-jobs-fab",onClick:g[0]||(g[0]=y=>se(n).showOrganizePanel=!0)},[zX,_(d,{count:se(n).activeOrganizeJobs.length,offset:[-2,2]},null,8,["count"])])):et("",!0),se(n).activeOrganizeJobs.length&&se(n).showOrganizePanel?(Ce(),Ee("div",BX,[ye("div",jX,[ye("span",VX,Te(se(fe)("organizeJobs")),1),ye("div",WX,[_(d,{count:se(n).activeOrganizeJobs.length},null,8,["count"]),_(v,{type:"text",size:"small",class:"close-btn",onClick:g[1]||(g[1]=y=>se(n).showOrganizePanel=!1)},{default:Fe(()=>[Ye("✕")]),_:1})])]),(Ce(!0),Ee(Ae,null,yr(se(n).activeOrganizeJobs,y=>{var b,w,S,C,x,O,P,N;return Ce(),Ee("div",{key:y.job_id,class:"job-item"},[ye("div",HX,[UX,ye("span",KX,Te(r(y.folder_paths)),1),_(m,{color:a(y.status)},{default:Fe(()=>[Ye(Te(i(y.status)),1)]),_:2},1032,["color"])]),ye("div",GX,[s(y)?(Ce(),Ee(Ae,{key:0},[ye("div",qX,Te(o((b=y.progress)==null?void 0:b.stage)),1),_(h,{percent:l(y.progress),status:y.status==="error"?"exception":"active",size:"small"},null,8,["percent","status"])],64)):et("",!0),y.status==="preview_ready"?(Ce(),Ee(Ae,{key:1},[ye("div",JX,Te(se(fe)("organizePreviewReady",{files:((w=y.preview)==null?void 0:w.total_files)??0,clusters:((C=(S=y.preview)==null?void 0:S.clusters)==null?void 0:C.length)??0})),1),_(v,{type:"primary",size:"small",onClick:D=>c(y)},{default:Fe(()=>[Ye(Te(se(fe)("viewPreview")),1)]),_:2},1032,["onClick"])],64)):et("",!0),((x=y.progress)==null?void 0:x.stage)==="moving"?(Ce(),Ee(Ae,{key:2},[ye("div",YX,Te(se(fe)("movingFiles")),1),_(h,{percent:u(y.progress),size:"small",status:"active"},null,8,["percent"]),y.progress.current_file?(Ce(),Ee("div",XX,Te(y.progress.current_file),1)):et("",!0)],64)):et("",!0),y.status==="done"?(Ce(),Ee(Ae,{key:3},[ye("div",ZX,Te(se(fe)("organizeComplete",{moved:((O=y.progress)==null?void 0:O.moved_done)??0,folders:((N=(P=y.progress)==null?void 0:P.created_folders)==null?void 0:N.length)??0})),1),_(v,{size:"small",onClick:D=>f(y.job_id)},{default:Fe(()=>[Ye(Te(se(fe)("close")),1)]),_:2},1032,["onClick"])],64)):et("",!0),y.status==="error"?(Ce(),Ee(Ae,{key:4},[ye("div",QX,Te(se(fe)("organizeFailed")),1),_(v,{size:"small",onClick:D=>f(y.job_id)},{default:Fe(()=>[Ye(Te(se(fe)("close")),1)]),_:2},1032,["onClick"])],64)):et("",!0)])])}),128))])):et("",!0)])}}});const tZ=Cr(eZ,[["__scopeId","data-v-0a74f0db"]]);const nZ=async t=>(await Be.value.post("/db/organize_files_start",t)).data,FT=async t=>(await Be.value.get("/db/organize_files_status",{params:{job_id:t}})).data,rZ=async t=>(await Be.value.post("/db/organize_files_confirm",t)).data,RT=t=>(fo("data-v-b7f18d8d"),t=t(),vo(),t),aZ={class:"organize-preview"},iZ=["src"],oZ={class:"preview-header"},sZ={class:"summary"},lZ={class:"dest-folder"},uZ={class:"cluster-header"},cZ=RT(()=>ye("span",{class:"folder-icon"},"📁",-1)),fZ={key:0,class:"folder-name"},dZ={class:"file-count"},vZ={class:"file-mappings"},pZ=["onMouseenter"],hZ=RT(()=>ye("span",{class:"arrow"},"→",-1)),gZ=["title"],mZ=["onClick"],yZ={class:"preview-actions"},bZ={class:"action-summary"},wZ={key:0},SZ=ve({__name:"OrganizePreview",props:{preview:{}},emits:["cancel","confirmed"],setup(t,{emit:e}){const n=t,r=L([]),a=ut(new Set),i=ut(new Map),o=ut(new Set),s=L(null),l=L(""),u=L(!1),c=L(""),f=ut({x:0,y:0});let p=null;const g=B(()=>{const F=[...n.preview.clusters];return n.preview.noise.size>0&&F.push(n.preview.noise),F}),d=F=>i.get(F.cluster_id)||F.suggested_folder_name,v=F=>F.split(/[/\\]/).pop()||F,m=F=>`${gi.value}/image-thumbnail?path=${encodeURIComponent(F)}&t=${Date.now()}&size=512x512`,h=(F,R)=>{var k;const j=((k=R.split(".").pop())==null?void 0:k.toLowerCase())||"";["jpg","jpeg","png","gif","webp","bmp","ico","svg"].includes(j)&&(p&&clearTimeout(p),p=setTimeout(()=>{c.value=m(R),b(F)},300))},y=()=>{p&&(clearTimeout(p),p=null),c.value=""},b=F=>{f.x=F.clientX+20,f.y=F.clientY-100,f.y<10&&(f.y=10)},w=F=>o.has(F.cluster_id)?F.file_mappings:F.file_mappings.slice(0,10),S=B(()=>g.value.filter(F=>!a.has(F.cluster_id)).reduce((F,R)=>F+R.file_mappings.filter(j=>j.dest_path!==j.src_path).length,0)),C=B(()=>g.value.filter(F=>a.has(F.cluster_id)).reduce((F,R)=>F+R.size,0)),x=F=>{s.value=F.cluster_id,l.value=d(F)},O=()=>{s.value&&l.value.trim()&&i.set(s.value,l.value.trim()),s.value=null,l.value=""},P=F=>{a.has(F)?a.delete(F):a.add(F)},N=()=>{e("cancel")},D=async()=>{u.value=!0;try{const F=[];i.forEach((R,j)=>{F.push({cluster_id:j,new_folder_name:R})}),await rZ({job_id:n.preview.job_id,folder_edits:F.length>0?F:void 0,skip_cluster_ids:a.size>0?Array.from(a):void 0}),mt.success(fe("startMovingFiles")),e("confirmed")}catch(F){mt.error(`${fe("confirmFailed")}: ${F.message||F}`)}finally{u.value=!1}};return(F,R)=>{const j=At,z=sP,k=Wt,T=g9,A=Mu,$=ns;return Ce(),Ee("div",aZ,[c.value?(Ce(),Ee("div",{key:0,class:"image-preview-tooltip",style:Fn({top:f.y+"px",left:f.x+"px"})},[ye("img",{src:c.value,onError:R[0]||(R[0]=W=>c.value="")},null,40,iZ)],4)):et("",!0),ye("div",oZ,[ye("h3",null,Te(se(fe)("smartOrganizePreview")),1),ye("div",sZ,Te(se(fe)("organizePreviewSummary",{files:F.preview.total_files,folders:F.preview.clusters.length+(F.preview.noise.size>0?1:0)})),1),ye("div",lZ,[Ye(Te(se(fe)("destFolder"))+": ",1),ye("code",null,Te(F.preview.dest_folder),1)])]),_($,{activeKey:r.value,"onUpdate:activeKey":R[5]||(R[5]=W=>r.value=W),class:"cluster-list"},{default:Fe(()=>[(Ce(!0),Ee(Ae,null,yr(g.value,W=>(Ce(),gt(A,{key:W.cluster_id,class:sn({skipped:a.has(W.cluster_id)})},{header:Fe(()=>[ye("div",uZ,[cZ,s.value!==W.cluster_id?(Ce(),Ee("span",fZ,Te(d(W)),1)):(Ce(),gt(j,{key:1,value:l.value,"onUpdate:value":R[1]||(R[1]=G=>l.value=G),size:"small",style:{width:"200px"},onPressEnter:O,onBlur:O,onClick:R[2]||(R[2]=Rt(()=>{},["stop"]))},null,8,["value"])),ye("span",dZ,"("+Te(W.size)+" "+Te(se(fe)("files"))+")",1),W.cluster_id==="__noise__"?(Ce(),gt(z,{key:2,color:"orange"},{default:Fe(()=>[Ye(Te(se(fe)("unsorted")),1)]),_:1})):et("",!0)])]),extra:Fe(()=>[_(T,{onClick:R[3]||(R[3]=Rt(()=>{},["stop"]))},{default:Fe(()=>[_(k,{size:"small",onClick:G=>x(W)},{default:Fe(()=>[Ye(Te(se(fe)("rename")),1)]),_:2},1032,["onClick"]),_(k,{size:"small",type:a.has(W.cluster_id)?"primary":"default",onClick:G=>P(W.cluster_id)},{default:Fe(()=>[Ye(Te(a.has(W.cluster_id)?se(fe)("cancelSkip"):se(fe)("skip")),1)]),_:2},1032,["type","onClick"])]),_:2},1024)]),default:Fe(()=>[ye("div",vZ,[(Ce(!0),Ee(Ae,null,yr(w(W),G=>(Ce(),Ee("div",{key:G.src_path,class:"file-mapping"},[ye("span",{class:"src-path",onMouseenter:q=>h(q,G.src_path),onMouseleave:y,onMousemove:R[4]||(R[4]=q=>b(q))},Te(v(G.src_path)),41,pZ),hZ,ye("span",{class:"dest-path",title:G.dest_path},Te(d(W))+"/"+Te(v(G.src_path)),9,gZ)]))),128)),W.file_mappings.length>10&&!o.has(W.cluster_id)?(Ce(),Ee("div",{key:0,class:"show-more",onClick:G=>o.add(W.cluster_id)},Te(se(fe)("showMore",{count:W.file_mappings.length-10})),9,mZ)):et("",!0)])]),_:2},1032,["class"]))),128))]),_:1},8,["activeKey"]),ye("div",yZ,[ye("div",bZ,[Ye(Te(se(fe)("willMove",{count:S.value}))+" ",1),a.size?(Ce(),Ee("span",wZ,"("+Te(se(fe)("skipped",{count:C.value}))+")",1)):et("",!0)]),_(T,null,{default:Fe(()=>[_(k,{onClick:N},{default:Fe(()=>[Ye(Te(se(fe)("cancel")),1)]),_:1}),_(k,{type:"primary",loading:u.value,onClick:D},{default:Fe(()=>[Ye(Te(se(fe)("confirmOrganize")),1)]),_:1},8,["loading"])]),_:1})])])}}});const _Z=Cr(SZ,[["__scopeId","data-v-b7f18d8d"]]);function gre(t){const e=dn();e.smartOrganizeConfigPath=t,e.showSmartOrganizeConfig=!0}async function CZ(t,e){const n=dn();try{const r={folder_paths:t,lang:n.lang,dest_folder:e.destFolder||void 0,min_cluster_size:e.minClusterSize,action:e.action,recursive:e.recursive},{job_id:a}=await nZ(r);return n.addOrganizeJob({job_id:a,status:"queued",progress:{stage:"embedding",embedded_done:0,to_embed:0,clusters_done:0,clusters_total:0,moved_done:0,moved_total:0,current_file:"",created_folders:[],errors:[]},startedAt:Date.now(),folder_paths:t}),mt.success(fe("organizeJobStarted")),xZ(a,t),a}catch(r){throw mt.error(`${fe("error")}: ${r.message||r}`),r}}async function xZ(t,e){const n=dn(),r=2e3,a=async()=>{var i,o;try{const s=await FT(t);console.log("Poll response:","status:",s.status,"stage:",(i=s.progress)==null?void 0:i.stage,"preview:",s.preview?`yes (${s.preview.total_files} files, ${(o=s.preview.clusters)==null?void 0:o.length} clusters)`:"no");const l={status:s.status,progress:s.progress};s.preview&&(l.preview=s.preview,console.log("Preview data received from API:",s.preview.total_files,"files")),n.updateOrganizeJob(t,l),["done","error","preview_ready"].includes(s.status)?(console.log("Poll stopped at status:",s.status),s.status==="error"?console.error("Organize job failed:",s.error):s.status==="preview_ready"?console.log("Preview ready - user can now view and confirm"):s.status==="done"&&(console.log("Organize done, emitting refresh event"),gr.emit("refreshFileView",{paths:e}))):setTimeout(a,r)}catch(s){console.error("Poll organize status error:",s),setTimeout(a,r*2)}};a()}const DT=t=>(fo("data-v-5d792d0e"),t=t(),vo(),t),PZ={class:"info-panel"},OZ={class:"info-row"},TZ={class:"info-label"},EZ={class:"info-path"},kZ={class:"info-tips"},IZ=DT(()=>ye("span",{class:"separator"},"|",-1)),AZ=DT(()=>ye("span",{class:"separator"},"|",-1)),MZ={class:"form-item-hint"},NZ={class:"form-item-hint"},$Z={class:"form-item-hint"},FZ={key:0,class:"loading-status"},RZ={style:{"margin-left":"8px"}},DZ=ve({__name:"SmartOrganizeConfigModal",setup(t){const e=dn(),n=L(!1),r=L(""),a=ut({destFolder:"",recursive:!1,minClusterSize:3,action:"move"});me(()=>e.showSmartOrganizeConfig,s=>{s&&(a.destFolder="",a.recursive=!1,a.minClusterSize=3,a.action="move",n.value=!1,r.value="")});const i=async()=>{const s=e.smartOrganizeConfigPath;try{n.value=!0,r.value=fe("updatingIndex"),await dY({folder:s,recursive:a.recursive}),r.value=fe("startingOrganizeJob"),await CZ([s],{...a,destFolder:a.destFolder||s}),e.showSmartOrganizeConfig=!1}catch(l){console.error("Smart organize failed:",l)}finally{n.value=!1,r.value=""}},o=()=>{n.value||(e.showSmartOrganizeConfig=!1)};return(s,l)=>{const u=At,c=rP,f=w9,p=Gj,g=Hn,d=Sx,v=ha,m=ei,h=Wt,y=Pt;return Ce(),gt(y,{visible:se(e).showSmartOrganizeConfig,"onUpdate:visible":l[4]||(l[4]=b=>se(e).showSmartOrganizeConfig=b),title:se(fe)("smartOrganizeConfig"),width:"70vw",onOk:i,onCancel:o,confirmLoading:n.value},{footer:Fe(()=>[_(h,{onClick:o,disabled:n.value},{default:Fe(()=>[Ye(Te(se(fe)("organizeCancel")),1)]),_:1},8,["disabled"]),_(h,{type:"primary",onClick:i,loading:n.value},{default:Fe(()=>[Ye(Te(se(fe)("organizeStartTask")),1)]),_:1},8,["loading"])]),default:Fe(()=>[ye("div",PZ,[ye("div",OZ,[ye("span",TZ,Te(se(fe)("organizeSourceFolder"))+":",1),ye("code",EZ,Te(se(e).smartOrganizeConfigPath),1)]),ye("div",kZ,[ye("span",null,Te(se(fe)("smartOrganizeNotice")),1),IZ,ye("span",null,Te(se(fe)("topicSearchRequirementsOpenai")),1),AZ,ye("span",null,Te(se(fe)("topicSearchRequirementsDepsPython")),1)])]),_(v,{"label-col":{span:8},"wrapper-col":{span:16}},{default:Fe(()=>[_(c,{label:se(fe)("organizeTargetFolder")},{default:Fe(()=>[_(u,{value:a.destFolder,"onUpdate:value":l[0]||(l[0]=b=>a.destFolder=b),placeholder:se(e).smartOrganizeConfigPath,disabled:n.value},null,8,["value","placeholder","disabled"]),ye("div",MZ,Te(se(fe)("organizeTargetFolderDesc")),1)]),_:1},8,["label"]),_(c,{label:se(fe)("organizeRecursive")},{default:Fe(()=>[_(f,{checked:a.recursive,"onUpdate:checked":l[1]||(l[1]=b=>a.recursive=b),disabled:n.value},null,8,["checked","disabled"]),ye("div",NZ,Te(se(fe)("organizeRecursiveDesc")),1)]),_:1},8,["label"]),_(c,{label:se(fe)("organizeMinClusterSize")},{default:Fe(()=>[_(p,{value:a.minClusterSize,"onUpdate:value":l[2]||(l[2]=b=>a.minClusterSize=b),min:2,max:20,style:{width:"100px"},disabled:n.value},null,8,["value","disabled"]),ye("div",$Z,Te(se(fe)("organizeMinClusterSizeDesc")),1)]),_:1},8,["label"]),_(c,{label:se(fe)("organizeAction")},{default:Fe(()=>[_(d,{value:a.action,"onUpdate:value":l[3]||(l[3]=b=>a.action=b),disabled:n.value},{default:Fe(()=>[_(g,{value:"move"},{default:Fe(()=>[Ye(Te(se(fe)("organizeActionMove")),1)]),_:1}),_(g,{value:"copy"},{default:Fe(()=>[Ye(Te(se(fe)("organizeActionCopy")),1)]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"])]),_:1}),n.value?(Ce(),Ee("div",FZ,[_(m,{size:"small"}),ye("span",RZ,Te(r.value),1)])):et("",!0)]),_:1},8,["visible","title","confirmLoading"])}}});const LZ=Cr(DZ,[["__scopeId","data-v-5d792d0e"]]);const zZ={class:"kv-pair-editor"},BZ={class:"kv-key-wrapper"},jZ={key:0,class:"key-error-hint"},VZ={key:0,class:"kv-value-wrapper"},WZ={key:0,class:"json-error-hint"},HZ=ve({__name:"KvPairEditor",props:{modelValue:{},allKeys:{}},emits:["update:modelValue","remove"],setup(t,{expose:e,emit:n}){const r=t,a=L(""),i=h=>h.trim()?r.allKeys&&r.allKeys.includes(h.trim())?(a.value=fe("keyMustBeUnique"),!1):(a.value="",!0):(a.value=fe("keyRequired"),!1),o=()=>{const h=l.value.value;if(!h)return"str";try{return typeof JSON.parse(h)!="string"?"json":"str"}catch{return"str"}},s=L("str"),l=NO({get(){const h=r.modelValue.value,y=typeof h=="string"&&s.value!=="json";return{...r.modelValue,value:y?h:JSON.stringify(r.modelValue.value,null,2)}},set(h){if(!i(h.key))return;const y=h.value,b={...h,value:s.value==="json"?JSON.parse(y):y};n("update:modelValue",b)}});s.value=o();const u=L(!0),c=L("{}");me([()=>l.value.value,()=>s.value],()=>{if(s.value==="json")try{const h=JSON.parse(l.value.value);c.value=JSON.stringify(h,null,2)}catch{console.warn("Invalid JSON, resetting jsonInput to empty object",l.value.value),c.value="{}"}},{immediate:!0});const f=()=>{const h=c.value;g(h)?(l.value.value=h,u.value=!0):u.value=!1},p=B({get(){return l.value.value},set(h){l.value.value=h}}),g=h=>{try{return JSON.parse(h),!0}catch{return!1}},d=h=>{const y=l.value.value;if(!y){s.value=h;return}if(h==="json"&&y){mt.warning(fe("clearBeforeSwitchToJson"));return}if(h==="str"&&c.value.trim()){mt.warning(fe("clearBeforeSwitchToString")),console.warn("Switching to string mode requires empty value",{val:c.value});return}l.value.value="",s.value=h},v=()=>{n("remove")};return e({validate:()=>{const h=i(l.value.key),y=s.value==="json"?u.value:!0;return h&&y},keyError:a,isValidJson:u}),(h,y)=>{const b=At,w=bh,S=W4,C=As,x=Wt;return Ce(),Ee("div",zZ,[ye("div",BZ,[_(b,{value:se(l).key,"onUpdate:value":y[0]||(y[0]=O=>se(l).key=O),placeholder:se(fe)("keyPlaceholder"),class:"kv-input kv-key"},null,8,["value","placeholder"]),a.value?(Ce(),Ee("div",jZ,Te(a.value),1)):et("",!0)]),s.value==="json"?(Ce(),Ee("div",VZ,[_(w,{value:c.value,"onUpdate:value":y[1]||(y[1]=O=>c.value=O),onBlur:f,placeholder:se(fe)("jsonValuePlaceholder"),"auto-size":{maxRows:8},class:"kv-input kv-value"},null,8,["value","placeholder"]),u.value?et("",!0):(Ce(),Ee("div",WZ,Te(se(fe)("jsonFormatError")),1))])):(Ce(),gt(w,{key:1,"auto-size":{maxRows:8},value:p.value,"onUpdate:value":y[2]||(y[2]=O=>p.value=O),placeholder:se(fe)("stringValuePlaceholder"),class:"kv-input kv-value"},null,8,["value","placeholder"])),_(C,{value:s.value,size:"small",class:"mode-selector",getPopupContainer:O=>O.parentNode,"onUpdate:value":d,style:{width:"80px"}},{default:Fe(()=>[_(S,{value:"str"},{default:Fe(()=>[Ye(Te(se(fe)("stringMode")),1)]),_:1}),_(S,{value:"json"},{default:Fe(()=>[Ye(Te(se(fe)("jsonMode")),1)]),_:1})]),_:1},8,["value","getPopupContainer"]),_(x,{size:"small",danger:"",onClick:v,class:"delete-btn"},{default:Fe(()=>[Ye(Te(se(fe)("delete")),1)]),_:1})])}}});const UZ=Cr(HZ,[["__scopeId","data-v-e97b6b39"]]),KZ={class:"editor-section"},GZ={class:"section-label"},qZ={class:"editor-section"},JZ={class:"section-label"},YZ={class:"editor-section"},XZ={class:"section-label"},ZZ={class:"section-hint"},QZ={class:"editor-section kv-editor-section"},eQ={class:"kv-header"},tQ={class:"section-label"},nQ={class:"section-hint"},rQ={key:0,class:"empty-state"},aQ={key:1,class:"kv-list"},iQ={class:"modal-footer"},zl="Steps: 20",oQ=ve({__name:"PromptEditorModal",setup(t){const e=L(!1),n=L(null),r=L("");ju("openPromptEditor",async y=>{n.value=y.file,console.log("Received openPromptEditor event for file:",y.file);try{const b=await Bs(y.file.fullpath);r.value=b}catch(b){console.error("Failed to fetch latest prompt:",b),r.value=""}g(),e.value=!0});const a=["hashes","resources"],i=y=>{const b=Gc(y),w=Object.entries(b).filter(([x])=>x!=="prompt"&&x!=="negativePrompt"&&!a.includes(x)&&x!=="extraJsonMetaInfo").map(([x,O])=>`${x.charAt(0).toUpperCase()+x.slice(1)}: ${O}`).join(`
`),S=b.extraJsonMetaInfo,C=[];return S&&Object.entries(S).forEach(([x,O])=>{C.push({key:x,value:O})}),{prompt:b.prompt||"",negativePrompt:b.negativePrompt||"",otherInfo:w||zl,kvPairs:C}},o=(y,b,w,S)=>{let C="";if(y&&(C+=y),C+=`
Negative prompt: ${b||""}`,w?C+=`
${w.split(`
diff --git a/vue/dist/assets/index-087e0eb8.js b/vue/dist/assets/index-1b3df0c9.js
similarity index 99%
rename from vue/dist/assets/index-087e0eb8.js
rename to vue/dist/assets/index-1b3df0c9.js
index 78d46f9..10146c8 100644
--- a/vue/dist/assets/index-087e0eb8.js
+++ b/vue/dist/assets/index-1b3df0c9.js
@@ -1,3 +1,3 @@
-var ot=Object.defineProperty;var rt=(l,a,e)=>a in l?ot(l,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[a]=e;var fe=(l,a,e)=>(rt(l,typeof a!="symbol"?a+"":a,e),e);import{d0 as xe,bG as Ie,bF as lt,bV as ze,ar as Pe,aL as De,cd as it,ba as ct,c as q,A as ut,d1 as dt,r as N,c7 as ft,aM as Ne,d2 as pt,d3 as ie,d4 as Be,d5 as vt,cC as qe,d6 as ht,ai as mt,s as le,ay as he,ci as ne,ak as te,v as gt,d7 as Se,$ as X,d8 as yt,d9 as Ge,as as He,W as K,X as E,bs as Ke,br as Re,aj as Q,y as ee,bM as wt,aC as kt,aD as bt,I as me,da as Ce,aq as se,db as xt,Z as re,cj as Te,cJ as H,dc as It,dd as St,aF as Ft,de as We,c3 as $e,bp as Qe,df as Je,a3 as Fe,dg as _t,dh as Xe,di as Ee,q as Pt,cK as Ae,cM as Le,dj as Ct,dk as Tt,U as ae,ch as Et,dl as Mt,cn as Dt,dm as At,l as Ue,R as Lt,cg as Ve,dn as Ot,dp as Nt,dq as Rt,dr as Wt,bI as $t,ds as Ut,dt as Vt,du as jt,z as zt,dv as Bt,cf as qt,p as Gt,bm as Ht,am as Kt,cD as Ze,dw as Qt}from"./index-ac2041d9.js";import{_ as Jt,C as Ye,g as Xt}from"./shortcut-7567da19.js";import{i as Zt}from"./_isIterateeCall-43a7a0bb.js";function Yt(l){return l&&l.length?l[0]:void 0}var ea=Math.ceil,ta=Math.max;function aa(l,a,e,t){for(var i=-1,s=ta(ea((a-l)/(e||1)),0),_=Array(s);s--;)_[t?s:++i]=l,l+=e;return _}function na(l){return function(a,e,t){return t&&typeof t!="number"&&Zt(a,e,t)&&(e=t=void 0),a=xe(a),e===void 0?(e=a,a=0):e=xe(e),t=t===void 0?a (e.target as HTMLImageElement).style.display = 'none'"
+ @click.stop
+ />
+