diff --git a/change.log.md b/CHANGELOG.md
similarity index 96%
rename from change.log.md
rename to CHANGELOG.md
index 9500fc3..51ee21f 100644
--- a/change.log.md
+++ b/CHANGELOG.md
@@ -1,6 +1,28 @@
[跳到中文](#中文)
# English
+## 2026-03-19
+### ⚙️ Customizable Panel Settings
+Added the ability to customize which feature blocks are displayed in the full-screen info panel.
+
+**Features:**
+- **Panel Settings**: Click the settings icon to toggle visibility of individual feature blocks
+- **Flexible Display**: Show/hide action buttons, file info tags, custom tags, layout controls, draggable image, and prompt tabs
+- **Persistent Storage**: Settings are automatically saved to the backend and restored on next visit
+
+**How to use:**
+1. Open the full-screen info panel for any image
+2. Click the settings icon (⚙️) in the top-right corner
+3. Toggle the switches to show/hide different feature blocks
+4. Settings are automatically saved and applied
+
+**Use Case:**
+Perfect for users who want a cleaner interface or only use specific features. Each user can customize their panel to match their workflow, showing only the blocks they need and hiding unused sections to reduce visual clutter.
+
+**Note:** Settings are stored per-user in the backend, so your custom layout will be preserved across sessions and devices.
+
+
+
## 2026-03-17
### 🖼️ ComfyUI-Ready Image Dragging
Added drag-to-transfer functionality specifically designed for ComfyUI workflow integration.
@@ -38,7 +60,6 @@ Added the ability to edit image generation prompts and metadata directly in the
- **Smart Caching**: EXIF data is now cached in the database for faster subsequent retrieval
- **Edit Tracking**: Manually edited prompts are marked and preserved separately from original file metadata
- **Validation**: Built-in validation for required fields and unique key constraints
-- **Multi-language Support**: Full internationalization for all editing features (English, Chinese, German)
**How to use:**
1. Click the "Edit" button on any image's generation info panel
@@ -59,7 +80,6 @@ Added inline video playback feature for video items wider than 400px.
- **Play Here Button**: Hover over a video to see the "Play Here" button in the bottom-left corner
- **Inline Playback**: Click to play the video directly in the grid item without opening a modal
- **Auto-Stop Others**: Automatically stops any other playing videos when starting a new one
-- **Multi-language Support**: Button text is fully internationalized (English, Chinese, German)
- **Smart Reset**: Automatically stops playback when the list is reordered or refreshed
**How to use:**
@@ -777,6 +797,28 @@ Triggered under the same circumstances as above, there will be a button to updat
# 中文
+## 2026-03-19
+### ⚙️ 自定义面板设置
+新增了自定义全屏信息面板功能区块显示的功能。
+
+**功能特性:**
+- **面板设置**:点击设置图标即可开关各个功能区块的显示
+- **灵活显示**:可显示/隐藏操作按钮、文件信息标签、自定义标签、布局控制、可拖拽图片、提示词标签页
+- **持久化存储**:设置自动保存到后端,下次访问时恢复
+
+**使用方法:**
+1. 打开任意图片的全屏信息面板
+2. 点击右上角的设置图标(⚙️)
+3. 切换开关来显示/隐藏不同的功能区块
+4. 设置会自动保存并生效
+
+**使用场景:**
+非常适合需要简洁界面或只使用特定功能的用户。每个用户都可以根据自己的工作流程自定义面板,只显示需要的区块,隐藏不使用的部分以减少视觉干扰。
+
+**注意:** 设置按用户存储在后端,因此您的自定义布局将在不同会话和设备间保持。
+
+
+
## 2026-03-17
### 🖼️ 专为ComfyUI设计的图片拖拽功能
新增了专为ComfyUI工作流还原设计的图片拖拽传输功能。
@@ -813,7 +855,6 @@ Triggered under the same circumstances as above, there will be a button to updat
- **智能缓存**:EXIF数据现在会被缓存到数据库中,以便更快地后续检索
- **编辑标记**:手动编辑的提示词会被标记,并与原始文件元数据分开保存
- **数据验证**:对必填字段和唯一键约束进行内置验证
-- **多语言支持**:所有编辑功能都完全国际化(英文、中文、德语)
**使用方法:**
1. 点击任意图片生成信息面板上的"编辑"按钮
@@ -834,7 +875,6 @@ Triggered under the same circumstances as above, there will be a button to updat
- **"在此播放"按钮**:鼠标悬停在视频上时,左下角会显示播放按钮
- **原地播放**:点击按钮直接在网格 item 内播放视频,无需打开弹窗
- **自动停止其他视频**:播放新视频时,会自动停止其他正在播放的视频
-- **多语言支持**:按钮文字支持多语言(英文、简体中文、繁体中文、德语)
- **智能重置**:列表重新排序或刷新时,自动停止播放
**使用方法:**
diff --git a/docs/imgs/panel-settings.png b/docs/imgs/panel-settings.png
new file mode 100644
index 0000000..88709d5
Binary files /dev/null and b/docs/imgs/panel-settings.png differ
diff --git a/javascript/index.js b/javascript/index.js
index 5ece3f8..5d8b671 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?><=) ${O}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*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.
+*/let cn=19968,wa=(40896-cn)/2,ct="",Fe=",",ka=(()=>{let e=[];for(let t=33;t<127;t++)t!=34&&t!=92&&t!=45&&e.push(String.fromCharCode(t));return e.join(ct)})(),Et={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*ka.indexOf(e.charAt(i)),n*=91;return t},un=(e,t)=>{let n,i,r,y,o;for(n in e)if(e.hasOwnProperty(n))for(i=e[n].match(Oa),r=0;r
');continue}const q=j[O];C||(C=q.includes("("));const b=["tag"];C&&b.push("has-parentheses"),q.length<32&&b.push("short-tag"),U.push(`${q}`),C&&(C=!q.includes(")"))}return U.join(i.showCommaInInfoPanel?",":" ")}Lt("load",a=>{const g=a.target;g.className==="ant-image-preview-img"&&(l.value=`${g.naturalWidth} x ${g.naturalHeight}`)},{capture:!0});const m=ce(()=>{const a=[{name:oe("fileSize"),val:n.file.size}];return l.value&&a.push({name:oe("resolution"),val:l.value}),a}),T=()=>{const a="Negative prompt:",g=S.value.includes(a)?S.value.split(a)[0]:Q.value[0]??"";Ne(at(g.trim()))},P=()=>document.body.requestFullscreen(),F=a=>{Ne(typeof a=="object"?JSON.stringify(a,null,4):a)},le=a=>{a.key.startsWith("Arrow")?(a.stopPropagation(),a.preventDefault(),document.dispatchEvent(new KeyboardEvent("keydown",a))):a.key==="Escape"&&document.fullscreenElement&&document.exitFullscreen()};Lt("dblclick",a=>{var g;((g=a.target)==null?void 0:g.className)==="ant-image-preview-img"&&Mt()});const re=ce(()=>te.value||L.value.expanded),ve=Pe(rt+"contextShowFullPath",!1),K=ce(()=>ve.value?n.file.fullpath:n.file.name),ne=Pe(rt+"tagA2ZClassify",!1),Re=ce(()=>{var j;const a=(j=i.conf)==null?void 0:j.all_custom_tags.map(U=>{var O,q;return{char:((O=U.display_name)==null?void 0:O[0])||((q=U.name)==null?void 0:q[0]),...U}}).reduce((U,C)=>{var q;let O="#";if(/[a-z]/i.test(C.char))O=C.char.toUpperCase();else if(/[\u4e00-\u9fa5]/.test(C.char))try{O=((q=/^\[?(\w)/.exec(Ca(C.char)+""))==null?void 0:q[1])??"#"}catch(b){console.log("err",b)}return O=O.toUpperCase(),U[O]||(U[O]=[]),U[O].push(C),U},{});return Object.entries(a??{}).sort((U,C)=>U[0].charCodeAt(0)-C[0].charCodeAt(0))}),Oe=()=>{Mt(),t("contextMenuClick",{key:"tiktokView"},n.file,n.idx)},Me=fe(!1),et=async()=>{var a,g;if(!x.value.prompt){$e.warning(oe("aiAnalyzeTagsNoPrompt"));return}if(!((g=(a=i.conf)==null?void 0:a.all_custom_tags)!=null&&g.length)){$e.warning(oe("aiAnalyzeTagsNoCustomTags"));return}Me.value=!0;try{const j=x.value.prompt,C=`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
@@ -14,6 +14,6 @@ Your task is:
4. If no tags match, return an empty string
5. Tag matching should be based on semantic similarity and thematic relevance
-Available tags: ${i.conf.all_custom_tags.map(H=>H.name).join(", ")}
+Available tags: ${i.conf.all_custom_tags.map(W=>W.name).join(", ")}
-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};
+Please return only tag names, do not include any other content.`,q=(await xn({messages:[{role:"system",content:C},{role:"user",content:`Please analyze this prompt and return matching tags: ${j}`}],temperature:.3,max_tokens:200})).choices[0].message.content.trim();if(!q){$e.info(oe("aiAnalyzeTagsNoMatchedTags"));return}const b=q.split(",").map(W=>W.trim()).filter(W=>W),be=i.conf.all_custom_tags.filter(W=>b.some(ie=>W.name.toLowerCase()===ie.toLowerCase()||W.name.toLowerCase().includes(ie.toLowerCase())||ie.toLowerCase().includes(W.name.toLowerCase()))),V=new Set(o.value.map(W=>W.id)),D=be.filter(W=>!V.has(W.id));if(D.length===0){be.length>0?$e.info(oe("aiAnalyzeTagsAllTagsAlreadyAdded")):$e.info(oe("aiAnalyzeTagsNoValidTags"));return}for(const W of D)t("contextMenuClick",{key:`toggle-tag-${W.id}`},n.file,n.idx);$e.success(oe("aiAnalyzeTagsSuccess",[D.length.toString(),D.map(W=>W.name).join(", ")]))}catch(j){console.error("AI分析标签失败:",j),$e.error(oe("aiAnalyzeTagsFailed"))}finally{Me.value=!1}},ye=async()=>{var g;await Sn(n.file);const a=(g=n.file)==null?void 0:g.fullpath;a&&(u.tasks.forEach(j=>j.cancel()),u.pushAction(()=>Ot(a)).res.then(j=>{S.value=j}))};return(a,g)=>{var p,M,I;const j=Tn,U=Rn,C=Xe,O=Cn,q=Ln,b=An,be=zn,V=Xe,D=Dn,W=Nn,ie=In,ze=Pn,De=jn,c=Bn;return v(),k("div",{ref_key:"el",ref:y,class:it(["full-screen-menu",{"unset-size":!d(L).expanded,lr:d(te),"always-on":d(he),"mouse-in":Le.value}]),onWheelCapture:g[13]||(g[13]=St(()=>{},["stop"])),onKeydownCapture:le},[d(te)?(v(),k("div",La)):R("",!0),_("div",Aa,[_("div",za,[d(te)?R("",!0):(v(),k("div",{key:0,ref_key:"dragHandle",ref:$,class:"icon",style:{cursor:"grab"},title:d(oe)("dragToMovePanel")},[h(d(Ct))],8,Da)),d(te)?R("",!0):(v(),k("div",{key:1,class:"icon",style:{cursor:"pointer"},onClick:g[0]||(g[0]=f=>d(L).expanded=!d(L).expanded),title:d(oe)("clickToToggleMaximizeMinimize")},[re.value?(v(),ue(d(wn),{key:0})):(v(),ue(d(kn),{key:1}))],8,Na)),h(U,{"get-popup-container":Ae,trigger:"click"},{overlay:w(()=>[_("div",Pa,[_("div",ja,E(a.$t("blockVisibilitySettings")),1),_("div",Ba,[(v(!0),k(G,null,de(d(i).fullscreenMenuBlockVisibility,(f,z)=>(v(),k("div",{class:"settings-item",key:z},[h(j,{checked:d(i).fullscreenMenuBlockVisibility[z],"onUpdate:checked":se=>d(i).fullscreenMenuBlockVisibility[z]=se,size:"small"},null,8,["checked","onUpdate:checked"]),_("span",Ra,E(a.$t(`blockName_${z}`)),1)]))),128))])])]),default:w(()=>[_("div",Ia,[h(d(oi))])]),_:1}),_("div",{style:{display:"flex","flex-direction":"column","align-items":"center",cursor:"grab"},class:"icon",title:d(oe)("fullscreenview"),onClick:P},[_("img",{src:d(di),style:{width:"21px",height:"21px","padding-bottom":"2px"},alt:""},null,8,Ha)],8,Ua),h(U,{"get-popup-container":Ae},{overlay:w(()=>[h(Un,{file:a.file,idx:a.idx,"selected-tag":o.value,onContextMenuClick:g[1]||(g[1]=(f,z,se)=>t("contextMenuClick",f,z,se))},null,8,["file","idx","selected-tag"])]),default:w(()=>[d(L).expanded?R("",!0):(v(),k("div",Wa,[h(d(xt))]))]),_:1}),re.value?(v(),k("div",Fa)):R("",!0),re.value&&d(i).fullscreenMenuBlockVisibility.actionBar?(v(),k("div",Xa,[h(U,{trigger:["hover"],"get-popup-container":Ae},{overlay:w(()=>[h(be,{onClick:g[2]||(g[2]=f=>t("contextMenuClick",f,a.file,a.idx))},{default:w(()=>{var f;return[((f=d(i).conf)==null?void 0:f.launch_mode)!=="server"?(v(),k(G,{key:0},[h(O,{key:"send2txt2img"},{default:w(()=>[N(E(a.$t("sendToTxt2img")),1)]),_:1}),h(O,{key:"send2img2img"},{default:w(()=>[N(E(a.$t("sendToImg2img")),1)]),_:1}),h(O,{key:"send2inpaint"},{default:w(()=>[N(E(a.$t("sendToInpaint")),1)]),_:1}),h(O,{key:"send2extras"},{default:w(()=>[N(E(a.$t("sendToExtraFeatures")),1)]),_:1}),h(q,{key:"sendToThirdPartyExtension",title:a.$t("sendToThirdPartyExtension")},{default:w(()=>[h(O,{key:"send2controlnet-txt2img"},{default:w(()=>[N("ControlNet - "+E(a.$t("t2i")),1)]),_:1}),h(O,{key:"send2controlnet-img2img"},{default:w(()=>[N("ControlNet - "+E(a.$t("i2i")),1)]),_:1}),h(O,{key:"send2outpaint"},{default:w(()=>[N("openOutpaint")]),_:1})]),_:1},8,["title"])],64)):R("",!0),h(O,{key:"send2BatchDownload"},{default:w(()=>[N(E(a.$t("sendToBatchDownload")),1)]),_:1}),h(q,{key:"copy2target",title:a.$t("copyTo")},{default:w(()=>[(v(!0),k(G,null,de(d(i).quickMovePaths,z=>(v(),ue(O,{key:`copy-to-${z.dir}`},{default:w(()=>[N(E(z.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),h(q,{key:"move2target",title:a.$t("moveTo")},{default:w(()=>[(v(!0),k(G,null,de(d(i).quickMovePaths,z=>(v(),ue(O,{key:`move-to-${z.dir}`},{default:w(()=>[N(E(z.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),h(b),h(O,{key:"deleteFiles"},{default:w(()=>[N(E(a.$t("deleteSelected")),1)]),_:1}),h(O,{key:"openWithDefaultApp"},{default:w(()=>[N(E(a.$t("openWithDefaultApp")),1)]),_:1}),h(O,{key:"previewInNewWindow"},{default:w(()=>[N(E(a.$t("previewInNewWindow")),1)]),_:1}),h(O,{key:"copyPreviewUrl"},{default:w(()=>[N(E(a.$t("copySourceFilePreviewLink")),1)]),_:1}),h(O,{key:"copyFilePath"},{default:w(()=>[N(E(a.$t("copyFilePath")),1)]),_:1}),h(b),h(O,{key:"tiktokView",onClick:Oe},{default:w(()=>[N(E(a.$t("tiktokView")),1)]),_:1})]}),_:1})]),default:w(()=>[h(C,null,{default:w(()=>[N(E(d(oe)("openContextMenu")),1)]),_:1})]),_:1}),h(V,{onClick:g[3]||(g[3]=f=>t("contextMenuClick",{key:"download"},n.file,n.idx))},{default:w(()=>[N(E(a.$t("download")),1)]),_:1}),S.value?(v(),ue(C,{key:0,onClick:g[4]||(g[4]=f=>d(Ne)(S.value))},{default:w(()=>[N(E(a.$t("copyPrompt")),1)]),_:1})):R("",!0),S.value?(v(),ue(C,{key:1,onClick:T},{default:w(()=>[N(E(a.$t("copyPositivePrompt")),1)]),_:1})):R("",!0),S.value&&((M=(p=d(i).conf)==null?void 0:p.all_custom_tags)!=null&&M.length)?(v(),ue(C,{key:2,onClick:et,loading:Me.value},{default:w(()=>[N(E(a.$t("aiAnalyzeTags")),1)]),_:1},8,["loading"])):R("",!0),h(C,{onClick:Oe,onTouchstart:St(Oe,["prevent"]),type:"default"},{default:w(()=>[N(E(a.$t("tiktokView")),1)]),_:1},8,["onTouchstart"]),N(),h(C,{onClick:ye},{icon:w(()=>[h(d(Ie))]),default:w(()=>[N(" "+E(a.$t("editPrompt")),1)]),_:1})])):R("",!0)]),re.value?(v(),k("div",qa,[d(i).fullscreenMenuBlockVisibility.infoTags?(v(),k("div",Va,[_("span",Ja,[_("span",Ga,E(a.$t("fileName")),1),_("span",{class:"value",title:K.value,onDblclick:g[5]||(g[5]=f=>d(Ne)(K.value))},E(K.value),41,Ya),_("span",{style:{margin:"0 8px",cursor:"pointer"},title:"Click to expand full path",onClick:g[6]||(g[6]=f=>ve.value=!d(ve))},[h(d(xt))])]),(v(!0),k(G,null,de(m.value,f=>(v(),k("span",{class:"info-tag",key:f.name},[_("span",Ka,E(f.name),1),_("span",{class:"value",title:f.val,onDblclick:z=>d(Ne)(f.val)},E(f.val),41,Za)]))),128))])):R("",!0),(I=d(i).conf)!=null&&I.all_custom_tags&&d(i).fullscreenMenuBlockVisibility.tagsContainer?(v(),k("div",Qa,[_("div",{class:"sort-tag-switch",onClick:g[7]||(g[7]=f=>ne.value=!d(ne))},[d(ne)?(v(),ue(d(On),{key:1})):(v(),ue(d(ui),{key:0}))]),_("div",{class:"tag",onClick:g[8]||(g[8]=(...f)=>d(Tt)&&d(Tt)(...f)),style:nt({"--tag-color":"var(--zp-luminous)"})},"+ "+E(a.$t("add")),5),d(ne)?(v(!0),k(G,{key:0},de(Re.value,([f,z])=>(v(),k("div",{key:f,class:"tag-alpha-item"},[_("h4",es,E(f)+" : ",1),_("div",null,[(v(!0),k(G,null,de(z,se=>(v(),k("div",{class:it(["tag",{selected:o.value.some(Ue=>Ue.id===se.id)}]),onClick:Ue=>t("contextMenuClick",{key:`toggle-tag-${se.id}`},a.file,a.idx),key:se.id,style:nt({"--tag-color":d(r).getColor(se)})},E(se.name),15,ts))),128))])]))),128)):(v(!0),k(G,{key:1},de(d(i).conf.all_custom_tags,f=>(v(),k("div",{class:it(["tag",{selected:o.value.some(z=>z.id===f.id)}]),onClick:z=>t("contextMenuClick",{key:`toggle-tag-${f.id}`},a.file,a.idx),key:f.id,style:nt({"--tag-color":d(r).getColor(f)})},E(f.name),15,ns))),128))])):R("",!0),d(i).fullscreenMenuBlockVisibility.lrLayoutControl?(v(),k("div",is,[_("div",as,[N(E(a.$t("experimentalLRLayout"))+": ",1),h(j,{checked:d(te),"onUpdate:checked":g[9]||(g[9]=f=>He(te)?te.value=f:null),size:"small"},null,8,["checked"])]),d(te)?(v(),k(G,{key:0},[_("div",ss,[N(E(a.$t("width"))+": ",1),h(D,{value:d(ae),"onUpdate:value":g[10]||(g[10]=f=>He(ae)?ae.value=f:null),style:{width:"64px"},step:16,min:128,max:1024},null,8,["value"])]),h(W,{title:a.$t("alwaysOnTooltipInfo")},{default:w(()=>[_("div",os,[N(E(a.$t("alwaysOn"))+": ",1),h(j,{checked:d(he),"onUpdate:checked":g[11]||(g[11]=f=>He(he)?he.value=f:null),size:"small"},null,8,["checked"])])]),_:1},8,["title"])],64)):R("",!0)])):R("",!0),d(i).fullscreenMenuBlockVisibility.draggableImage?(v(),ue(Hn,{key:3,block:"",file:a.file},{default:w(()=>[_("div",ls,[h(d(Ct),{class:"trigger-icon"}),_("span",rs,E(a.$t("dragImageToTransfer")),1)])]),_:1},8,["file"])):R("",!0),d(i).fullscreenMenuBlockVisibility.tabs?(v(),ue(c,{key:4,block:"",activeKey:d(J),"onUpdate:activeKey":g[12]||(g[12]=f=>He(J)?J.value=f:null)},{default:w(()=>[h(ie,{key:"structedData",tab:a.$t("structuredData")},{default:w(()=>[_("div",null,[x.value.prompt?(v(),k(G,{key:0},[cs,_("div",us,[ds,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(d(Ie))],8,gs)]),_("code",{innerHTML:s(x.value.prompt??"")},null,8,fs)],64)):R("",!0),x.value.negativePrompt?(v(),k(G,{key:1},[hs,_("div",ps,[vs,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(d(Ie))],8,_s)]),_("code",{innerHTML:s(x.value.negativePrompt??"")},null,8,ms)],64)):R("",!0)]),Object.keys(B.value).length?(v(),k(G,{key:0},[ys,_("div",bs,[$s,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(d(Ie))],8,Es)]),_("table",null,[(v(!0),k(G,null,de(B.value,(f,z)=>(v(),k("tr",{key:z,class:"gen-info-frag"},[_("td",ws,E(z),1),typeof f=="object"?(v(),k("td",{key:0,style:{cursor:"pointer"},onDblclick:se=>F(f)},[_("code",null,E(f),1)],40,ks)):(v(),k("td",{key:1,style:{cursor:"pointer"},onDblclick:se=>F(d(at)(f))},E(d(at)(f)),41,Os))]))),128))])],64)):R("",!0),X.value&&Object.keys(X.value).length?(v(),k(G,{key:1},[Ms,_("div",xs,[Ss,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(d(Ie))],8,Ts)]),_("table",Cs,[(v(!0),k(G,null,de(X.value,(f,z)=>(v(),k("tr",{key:z,class:"gen-info-frag"},[_("td",Ls,E(z),1),_("td",{style:{cursor:"pointer"},onDblclick:se=>F(f)},[_("code",zs,E(typeof f=="string"?f:JSON.stringify(f,null,2)),1)],40,As)]))),128))])],64)):R("",!0)]),_:1},8,["tab"]),h(ie,{key:"sourceText",tab:a.$t("sourceText")},{default:w(()=>[_("code",null,E(S.value),1)]),_:1},8,["tab"]),h(ie,{key:"exif",tab:"EXIF"},{default:w(()=>[h(De,{spinning:Z.value},{default:w(()=>[A.value&&Object.keys(A.value).length?(v(),k("div",Ds,[h(ya,{data:A.value},null,8,["data"])])):Z.value?R("",!0):(v(),k("div",Ns,[h(ze,{description:"No EXIF data available"})]))]),_:1},8,["spinning"])]),_:1})]),_:1},8,["activeKey"])):R("",!0)])):R("",!0)]),d(L).expanded&&!d(te)?(v(),k("div",{key:1,class:"mouse-sensor",ref_key:"resizeHandle",ref:ge,title:d(oe)("dragToResizePanel")},[h(d(Yn))],8,Is)):R("",!0)],34)}}});const Js=dt(Ps,[["__scopeId","data-v-3eca06cd"]]),js={key:0,class:"float-panel"},Bs={key:0,class:"select-actions"},Rs={key:1},Us=ut({__name:"MultiSelectKeep",props:{show:{type:Boolean}},emits:["selectAll","reverseSelect","clearAllSelected"],setup(e,{emit:t}){const n=Ge(),i=()=>{t("clearAllSelected"),n.keepMultiSelect=!1},r=()=>{n.keepMultiSelect=!0};return(y,o)=>{const l=Xe;return y.show?(v(),k("div",js,[d(n).keepMultiSelect?(v(),k("div",Bs,[h(l,{size:"small",onClick:o[0]||(o[0]=u=>t("selectAll"))},{default:w(()=>[N(E(y.$t("select-all")),1)]),_:1}),h(l,{size:"small",onClick:o[1]||(o[1]=u=>t("reverseSelect"))},{default:w(()=>[N(E(y.$t("rerverse-select")),1)]),_:1}),h(l,{size:"small",onClick:o[2]||(o[2]=u=>t("clearAllSelected"))},{default:w(()=>[N(E(y.$t("clear-all-selected")),1)]),_:1}),h(l,{size:"small",onClick:i},{default:w(()=>[N(E(y.$t("exit")),1)]),_:1})])):(v(),k("div",Rs,[h(l,{size:"small",type:"primary",onClick:r},{default:w(()=>[N(E(y.$t("keep-multi-selected")),1)]),_:1})]))])):R("",!0)}}});const Gs=dt(Us,[["__scopeId","data-v-b04c3508"]]);export{qs as L,Gs as M,Vs as R,Js as f};
diff --git a/vue/dist/assets/SubstrSearch-95d756e3.js b/vue/dist/assets/SubstrSearch-c929db3d.js
similarity index 96%
rename from vue/dist/assets/SubstrSearch-95d756e3.js
rename to vue/dist/assets/SubstrSearch-c929db3d.js
index aa0fcc0..02929e1 100644
--- a/vue/dist/assets/SubstrSearch-95d756e3.js
+++ b/vue/dist/assets/SubstrSearch-c929db3d.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-0236195f.js";import{s as ct,F as ft}from"./FileItem-0178f9f2.js";import{M as vt,L as gt,R as mt,f as _t}from"./MultiSelectKeep-beba09aa.js";import{c as ht,u as yt}from"./hook-3cb368d4.js";import{g as bt,o as kt}from"./index-1b3df0c9.js";import{f as F,H as de,T as wt,_ as St,a as Ct}from"./TipsCarousel-dc03f138.js";import"./index-bb784bbb.js";import"./shortcut-feec8cda.js";import"./_isIterateeCall-a5c9e9ee.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;re(o,s,void 0,i&&i[s]));else{const o=Object.keys(t);a=new Array(o.length);for(let s=0,l=o.length;s