Hide unnecessary features based on server type

pull/307/head
zanllp 2023-07-12 05:20:38 +08:00
parent 275b4850af
commit 195b701ccf
36 changed files with 74 additions and 59 deletions

17
app.py
View File

@ -93,9 +93,9 @@ class AppUtils:
update_image_index: bool = False,
extra_paths: List[str] = [],
sd_webui_path_relative_to_config=False,
allow_cors = False,
enable_shutdown = False,
sd_webui_dir: Optional[str] = None
allow_cors=False,
enable_shutdown=False,
sd_webui_dir: Optional[str] = None,
):
"""
Parameter definitions can be found by running the `python app.py -h `command or by examining the setup_parser() function.
@ -108,8 +108,10 @@ class AppUtils:
self.enable_shutdown = enable_shutdown
self.sd_webui_dir = sd_webui_dir
if sd_webui_dir:
DataBase.path = os.path.join(sd_webui_dir, 'extensions/sd-webui-infinite-image-browsing/iib.db')
self.sd_webui_config = os.path.join(sd_webui_dir, 'config.json')
DataBase.path = os.path.join(
sd_webui_dir, "extensions/sd-webui-infinite-image-browsing/iib.db"
)
self.sd_webui_config = os.path.join(sd_webui_dir, "config.json")
self.sd_webui_path_relative_to_config = True
def set_params(self, *args, **kwargs) -> None:
@ -149,7 +151,8 @@ class AppUtils:
extra_paths_cli=normalize_paths(extra_paths),
sd_webui_path_relative_to_config=self.sd_webui_path_relative_to_config,
allow_cors=self.allow_cors,
enable_shutdown=self.enable_shutdown
enable_shutdown=self.enable_shutdown,
launch_mode="server",
)
def get_root_browser_app(self) -> FastAPI:
@ -200,7 +203,7 @@ def setup_parser() -> argparse.ArgumentParser:
"--enable_shutdown",
action="store_true",
help="Enable the shutdown endpoint.",
)
)
parser.add_argument(
"--sd_webui_dir",
type=str,

View File

@ -15,7 +15,7 @@
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Infinite Image Browsing</title>
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-0ff6a040.js"></script>
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-2ba197f6.js"></script>
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-4ed7d1e3.css">
</head>

View File

@ -173,6 +173,7 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs):
"all_custom_tags": all_custom_tags,
"extra_paths": extra_paths,
"enable_access_control": enable_access_control,
"launch_mode": kwargs.get("launch_mode", "sd"),
}
class DeleteFilesReq(BaseModel):
@ -229,7 +230,7 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs):
else f"目标文件夹 {req.dest} 不存在。"
)
raise HTTPException(400, detail=error_msg)
conn = DataBase.get_conn()
for path in req.file_paths:
check_path_trust(path)
@ -417,12 +418,10 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs):
raise HTTPException(status_code=403)
open_folder(*os.path.split(req.path))
@app.post(pre + "/shutdown")
async def shutdown_app():
# This API endpoint is mainly used as a sidecar in Tauri applications to shut down the application
if not kwargs.get('enable_shutdown'):
if not kwargs.get("enable_shutdown"):
raise HTTPException(status_code=403, detail="Shutdown is disabled.")
os.kill(os.getpid(), 9)
return {"message": "Application is shutting down."}

View File

@ -1 +1 @@
import{d as t,o as a,m as r,cy as n}from"./index-0ff6a040.js";const p=t({__name:"ImgSliPagePane",props:{paneIdx:{},tabIdx:{},left:{},right:{}},setup(o){return(e,s)=>(a(),r(n,{left:e.left,right:e.right},null,8,["left","right"]))}});export{p as default};
import{d as t,o as a,m as r,cz as n}from"./index-2ba197f6.js";const p=t({__name:"ImgSliPagePane",props:{paneIdx:{},tabIdx:{},left:{},right:{}},setup(o){return(e,s)=>(a(),r(n,{left:e.left,right:e.right},null,8,["left","right"]))}});export{p as default};

View File

@ -1 +0,0 @@
import{d as R,l as U,o as r,y as _,c as n,n as a,r as e,s as y,p as b,t as L,v as h,x as q,m as M,K as Q,H as u,L as S,O as H,Q as K,W}from"./index-0ff6a040.js";import{a as j,f as J,L as X,R as Y,b as Z,S as ee}from"./fullScreenContextMenu-b552e684.js";import"./hook-aa833af6.js";import{g as te}from"./db-d4ebc7b6.js";import{u as se}from"./hook-5f30fa96.js";import"./_baseIteratee-d9d0859b.js";const ie={class:"hint"},ne={key:1,class:"preview-switch"},le=R({__name:"MatchedImageGrid",props:{tabIdx:{},paneIdx:{},selectedTagIds:{},id:{}},setup(V){const m=V,{queue:p,images:s,onContextMenuClickU:g,stackViewEl:D,previewIdx:l,previewing:v,onPreviewVisibleChange:T,previewImgMove:f,canPreview:I,itemSize:k,gridItems:z,showGenInfo:o,imageGenInfo:w,q:F,multiSelectedIdxs:$,onFileItemClick:B,scroller:C,showMenuIdx:d,onFileDragStart:G,onFileDragEnd:A}=se();return U(()=>m.selectedTagIds,async()=>{var t;const{res:c}=p.pushAction(()=>te(m.selectedTagIds));s.value=await c,(t=C.value)==null||t.scrollToItem(0)},{immediate:!0}),(c,t)=>{const E=H,N=K,O=ee;return r(),_("div",{class:"container",ref_key:"stackViewEl",ref:D},[n(O,{size:"large",spinning:!e(p).isIdle},{default:a(()=>[n(N,{visible:e(o),"onUpdate:visible":t[1]||(t[1]=i=>y(o)?o.value=i:null),width:"70vw","mask-closable":"",onOk:t[2]||(t[2]=i=>o.value=!1)},{cancelText:a(()=>[]),default:a(()=>[n(E,{active:"",loading:!e(F).isIdle},{default:a(()=>[b("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:t[0]||(t[0]=i=>e(L)(e(w)))},[b("div",ie,h(c.$t("doubleClickToCopy")),1),q(" "+h(e(w)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),e(s)?(r(),M(e(j),{key:0,ref_key:"scroller",ref:C,class:"file-list",items:e(s),"item-size":e(k).first,"key-field":"fullpath","item-secondary-size":e(k).second,gridItems:e(z)},{default:a(({item:i,index:x})=>[n(J,{idx:x,file:i,"show-menu-idx":e(d),"onUpdate:showMenuIdx":t[3]||(t[3]=P=>y(d)?d.value=P:null),onDragstart:e(G),onDragend:e(A),onFileItemClick:e(B),"full-screen-preview-image-url":e(s)[e(l)]?e(Q)(e(s)[e(l)]):"",selected:e($).includes(x),onContextMenuClick:e(g),onPreviewVisibleChange:e(T)},null,8,["idx","file","show-menu-idx","onDragstart","onDragend","onFileItemClick","full-screen-preview-image-url","selected","onContextMenuClick","onPreviewVisibleChange"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])):u("",!0),e(v)?(r(),_("div",ne,[n(e(X),{onClick:t[4]||(t[4]=i=>e(f)("prev")),class:S({disable:!e(I)("prev")})},null,8,["class"]),n(e(Y),{onClick:t[5]||(t[5]=i=>e(f)("next")),class:S({disable:!e(I)("next")})},null,8,["class"])])):u("",!0)]),_:1},8,["spinning"]),e(v)&&e(s)&&e(s)[e(l)]?(r(),M(Z,{key:0,file:e(s)[e(l)],idx:e(l),onContextMenuClick:e(g)},null,8,["file","idx","onContextMenuClick"])):u("",!0)],512)}}});const me=W(le,[["__scopeId","data-v-2cae0a95"]]);export{me as default};

View File

@ -0,0 +1 @@
import{d as U,l as L,o as r,y as _,c as n,n as a,r as e,s as y,p as b,t as O,v as h,x as q,m as M,L as Q,E as u,N as S,Q as X,R as j,X as H}from"./index-2ba197f6.js";import{a as J,f as K,L as W,R as Y,b as Z,S as ee}from"./fullScreenContextMenu-6932e224.js";import"./hook-09a5b85c.js";import{g as te}from"./db-b666a3f9.js";import{u as se}from"./hook-081e5d6e.js";import"./_baseIteratee-398c7299.js";const ie={class:"hint"},ne={key:1,class:"preview-switch"},le=U({__name:"MatchedImageGrid",props:{tabIdx:{},paneIdx:{},selectedTagIds:{},id:{}},setup(V){const m=V,{queue:p,images:s,onContextMenuClickU:g,stackViewEl:D,previewIdx:l,previewing:v,onPreviewVisibleChange:T,previewImgMove:f,canPreview:I,itemSize:k,gridItems:z,showGenInfo:o,imageGenInfo:w,q:F,multiSelectedIdxs:$,onFileItemClick:B,scroller:C,showMenuIdx:d,onFileDragStart:E,onFileDragEnd:G}=se();return L(()=>m.selectedTagIds,async()=>{var t;const{res:c}=p.pushAction(()=>te(m.selectedTagIds));s.value=await c,(t=C.value)==null||t.scrollToItem(0)},{immediate:!0}),(c,t)=>{const N=X,R=j,A=ee;return r(),_("div",{class:"container",ref_key:"stackViewEl",ref:D},[n(A,{size:"large",spinning:!e(p).isIdle},{default:a(()=>[n(R,{visible:e(o),"onUpdate:visible":t[1]||(t[1]=i=>y(o)?o.value=i:null),width:"70vw","mask-closable":"",onOk:t[2]||(t[2]=i=>o.value=!1)},{cancelText:a(()=>[]),default:a(()=>[n(N,{active:"",loading:!e(F).isIdle},{default:a(()=>[b("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:t[0]||(t[0]=i=>e(O)(e(w)))},[b("div",ie,h(c.$t("doubleClickToCopy")),1),q(" "+h(e(w)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),e(s)?(r(),M(e(J),{key:0,ref_key:"scroller",ref:C,class:"file-list",items:e(s),"item-size":e(k).first,"key-field":"fullpath","item-secondary-size":e(k).second,gridItems:e(z)},{default:a(({item:i,index:x})=>[n(K,{idx:x,file:i,"show-menu-idx":e(d),"onUpdate:showMenuIdx":t[3]||(t[3]=P=>y(d)?d.value=P:null),onDragstart:e(E),onDragend:e(G),onFileItemClick:e(B),"full-screen-preview-image-url":e(s)[e(l)]?e(Q)(e(s)[e(l)]):"",selected:e($).includes(x),onContextMenuClick:e(g),onPreviewVisibleChange:e(T)},null,8,["idx","file","show-menu-idx","onDragstart","onDragend","onFileItemClick","full-screen-preview-image-url","selected","onContextMenuClick","onPreviewVisibleChange"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])):u("",!0),e(v)?(r(),_("div",ne,[n(e(W),{onClick:t[4]||(t[4]=i=>e(f)("prev")),class:S({disable:!e(I)("prev")})},null,8,["class"]),n(e(Y),{onClick:t[5]||(t[5]=i=>e(f)("next")),class:S({disable:!e(I)("next")})},null,8,["class"])])):u("",!0)]),_:1},8,["spinning"]),e(v)&&e(s)&&e(s)[e(l)]?(r(),M(Z,{key:0,file:e(s)[e(l)],idx:e(l),onContextMenuClick:e(g)},null,8,["file","idx","onContextMenuClick"])):u("",!0)],512)}}});const me=H(le,[["__scopeId","data-v-2cae0a95"]]);export{me as default};

View File

@ -1 +0,0 @@
import{d as Z,Z as B,aF as j,bD as J,bC as $,o,y as k,c as r,r as e,bG as X,m,n as u,x as w,v,H as f,s as V,p as A,t as Y,K as ee,L as F,aq as ae,ah as ne,T as se,U as te,O as ie,Q as le,W as oe}from"./index-0ff6a040.js";import{a as re,f as ue,L as de,R as ce,b as pe,S as me}from"./fullScreenContextMenu-b552e684.js";/* empty css */import"./hook-aa833af6.js";import{b as U,c as ve,e as fe,u as ge}from"./db-d4ebc7b6.js";import{u as ke}from"./hook-5f30fa96.js";import"./_baseIteratee-d9d0859b.js";const we={key:0,class:"search-bar"},ye={class:"hint"},Ce={key:1,class:"preview-switch"},Ie=Z({__name:"SubstrSearch",setup(be){const{queue:l,images:t,onContextMenuClickU:y,stackViewEl:E,previewIdx:d,previewing:C,onPreviewVisibleChange:T,previewImgMove:I,canPreview:b,itemSize:x,gridItems:R,showGenInfo:c,imageGenInfo:_,q,multiSelectedIdxs:G,onFileItemClick:K,scroller:h,showMenuIdx:g,onFileDragStart:L,onFileDragEnd:N}=ke(),p=B(""),n=B();j(async()=>{n.value=await U(),n.value.img_count&&n.value.expired&&S()});const S=J(()=>l.pushAction(async()=>(await ge(),n.value=await U(),n.value)).res),D=async()=>{var s;t.value=await l.pushAction(()=>fe(p.value)).res,(s=h.value)==null||s.scrollToItem(0),t.value.length||ae.info(ne("fuzzy-search-noResults"))};return $("returnToIIB",async()=>{const s=await l.pushAction(ve).res;n.value.expired=s.expired}),$("searchIndexExpired",()=>n.value&&(n.value.expired=!0)),(s,a)=>{const O=se,M=te,P=ie,H=le,Q=me;return o(),k("div",{class:"container",ref_key:"stackViewEl",ref:E},[n.value?(o(),k("div",we,[r(O,{value:p.value,"onUpdate:value":a[0]||(a[0]=i=>p.value=i),placeholder:s.$t("fuzzy-search-placeholder"),disabled:!e(l).isIdle,onKeydown:X(D,["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),n.value.expired||!n.value.img_count?(o(),m(M,{key:0,onClick:e(S),loading:!e(l).isIdle,type:"primary"},{default:u(()=>[w(v(n.value.img_count===0?s.$t("generateIndexHint"):s.$t("UpdateIndex")),1)]),_:1},8,["onClick","loading"])):(o(),m(M,{key:1,type:"primary",onClick:D,loading:!e(l).isIdle,disabled:!p.value},{default:u(()=>[w(v(s.$t("search")),1)]),_:1},8,["loading","disabled"]))])):f("",!0),r(Q,{size:"large",spinning:!e(l).isIdle},{default:u(()=>[r(H,{visible:e(c),"onUpdate:visible":a[2]||(a[2]=i=>V(c)?c.value=i:null),width:"70vw","mask-closable":"",onOk:a[3]||(a[3]=i=>c.value=!1)},{cancelText:u(()=>[]),default:u(()=>[r(P,{active:"",loading:!e(q).isIdle},{default:u(()=>[A("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:a[1]||(a[1]=i=>e(Y)(e(_)))},[A("div",ye,v(s.$t("doubleClickToCopy")),1),w(" "+v(e(_)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),e(t)?(o(),m(e(re),{key:0,ref_key:"scroller",ref:h,class:"file-list",items:e(t),"item-size":e(x).first,"key-field":"fullpath","item-secondary-size":e(x).second,gridItems:e(R)},{default:u(({item:i,index:z})=>[r(ue,{idx:z,file:i,"show-menu-idx":e(g),"onUpdate:showMenuIdx":a[4]||(a[4]=W=>V(g)?g.value=W:null),onFileItemClick:e(K),"full-screen-preview-image-url":e(t)[e(d)]?e(ee)(e(t)[e(d)]):"",selected:e(G).includes(z),onContextMenuClick:e(y),onDragstart:e(L),onDragend:e(N),onPreviewVisibleChange:e(T)},null,8,["idx","file","show-menu-idx","onFileItemClick","full-screen-preview-image-url","selected","onContextMenuClick","onDragstart","onDragend","onPreviewVisibleChange"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])):f("",!0),e(C)?(o(),k("div",Ce,[r(e(de),{onClick:a[5]||(a[5]=i=>e(I)("prev")),class:F({disable:!e(b)("prev")})},null,8,["class"]),r(e(ce),{onClick:a[6]||(a[6]=i=>e(I)("next")),class:F({disable:!e(b)("next")})},null,8,["class"])])):f("",!0)]),_:1},8,["spinning"]),e(C)&&e(t)&&e(t)[e(d)]?(o(),m(pe,{key:1,file:e(t)[e(d)],idx:e(d),onContextMenuClick:e(y)},null,8,["file","idx","onContextMenuClick"])):f("",!0)],512)}}});const Be=oe(Ie,[["__scopeId","data-v-56ea21ae"]]);export{Be as default};

View File

@ -0,0 +1 @@
import{d as j,$,aG as J,bE as W,bD as B,o,y as k,c as r,r as e,bH as Y,m,n as u,x as w,v,E as f,s as V,p as E,t as Z,L as ee,N as A,ar as ae,ai as ne,U as se,V as te,Q as ie,R as le,X as oe}from"./index-2ba197f6.js";import{a as re,f as ue,L as de,R as ce,b as pe,S as me}from"./fullScreenContextMenu-6932e224.js";/* empty css */import"./hook-09a5b85c.js";import{b as U,c as ve,e as fe,u as ge}from"./db-b666a3f9.js";import{u as ke}from"./hook-081e5d6e.js";import"./_baseIteratee-398c7299.js";const we={key:0,class:"search-bar"},ye={class:"hint"},Ie={key:1,class:"preview-switch"},Ce=j({__name:"SubstrSearch",setup(be){const{queue:l,images:t,onContextMenuClickU:y,stackViewEl:F,previewIdx:d,previewing:I,onPreviewVisibleChange:R,previewImgMove:C,canPreview:b,itemSize:x,gridItems:N,showGenInfo:c,imageGenInfo:_,q:T,multiSelectedIdxs:G,onFileItemClick:L,scroller:h,showMenuIdx:g,onFileDragStart:P,onFileDragEnd:q}=ke(),p=$(""),n=$();J(async()=>{n.value=await U(),n.value.img_count&&n.value.expired&&S()});const S=W(()=>l.pushAction(async()=>(await ge(),n.value=await U(),n.value)).res),D=async()=>{var s;t.value=await l.pushAction(()=>fe(p.value)).res,(s=h.value)==null||s.scrollToItem(0),t.value.length||ae.info(ne("fuzzy-search-noResults"))};return B("returnToIIB",async()=>{const s=await l.pushAction(ve).res;n.value.expired=s.expired}),B("searchIndexExpired",()=>n.value&&(n.value.expired=!0)),(s,a)=>{const K=se,M=te,O=ie,H=le,Q=me;return o(),k("div",{class:"container",ref_key:"stackViewEl",ref:F},[n.value?(o(),k("div",we,[r(K,{value:p.value,"onUpdate:value":a[0]||(a[0]=i=>p.value=i),placeholder:s.$t("fuzzy-search-placeholder"),disabled:!e(l).isIdle,onKeydown:Y(D,["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),n.value.expired||!n.value.img_count?(o(),m(M,{key:0,onClick:e(S),loading:!e(l).isIdle,type:"primary"},{default:u(()=>[w(v(n.value.img_count===0?s.$t("generateIndexHint"):s.$t("UpdateIndex")),1)]),_:1},8,["onClick","loading"])):(o(),m(M,{key:1,type:"primary",onClick:D,loading:!e(l).isIdle,disabled:!p.value},{default:u(()=>[w(v(s.$t("search")),1)]),_:1},8,["loading","disabled"]))])):f("",!0),r(Q,{size:"large",spinning:!e(l).isIdle},{default:u(()=>[r(H,{visible:e(c),"onUpdate:visible":a[2]||(a[2]=i=>V(c)?c.value=i:null),width:"70vw","mask-closable":"",onOk:a[3]||(a[3]=i=>c.value=!1)},{cancelText:u(()=>[]),default:u(()=>[r(O,{active:"",loading:!e(T).isIdle},{default:u(()=>[E("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:a[1]||(a[1]=i=>e(Z)(e(_)))},[E("div",ye,v(s.$t("doubleClickToCopy")),1),w(" "+v(e(_)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),e(t)?(o(),m(e(re),{key:0,ref_key:"scroller",ref:h,class:"file-list",items:e(t),"item-size":e(x).first,"key-field":"fullpath","item-secondary-size":e(x).second,gridItems:e(N)},{default:u(({item:i,index:z})=>[r(ue,{idx:z,file:i,"show-menu-idx":e(g),"onUpdate:showMenuIdx":a[4]||(a[4]=X=>V(g)?g.value=X:null),onFileItemClick:e(L),"full-screen-preview-image-url":e(t)[e(d)]?e(ee)(e(t)[e(d)]):"",selected:e(G).includes(z),onContextMenuClick:e(y),onDragstart:e(P),onDragend:e(q),onPreviewVisibleChange:e(R)},null,8,["idx","file","show-menu-idx","onFileItemClick","full-screen-preview-image-url","selected","onContextMenuClick","onDragstart","onDragend","onPreviewVisibleChange"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])):f("",!0),e(I)?(o(),k("div",Ie,[r(e(de),{onClick:a[5]||(a[5]=i=>e(C)("prev")),class:A({disable:!e(b)("prev")})},null,8,["class"]),r(e(ce),{onClick:a[6]||(a[6]=i=>e(C)("next")),class:A({disable:!e(b)("next")})},null,8,["class"])])):f("",!0)]),_:1},8,["spinning"]),e(I)&&e(t)&&e(t)[e(d)]?(o(),m(pe,{key:1,file:e(t)[e(d)],idx:e(d),onContextMenuClick:e(y)},null,8,["file","idx","onContextMenuClick"])):f("",!0)],512)}}});const $e=oe(Ce,[["__scopeId","data-v-56ea21ae"]]);export{$e as default};

File diff suppressed because one or more lines are too long

1
vue/dist/assets/TagSearch-deb87b54.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{cv as h,cw as d,c5 as y,aY as M,bi as E,cx as O,bk as P,cy as _,bg as p,bA as C}from"./index-2ba197f6.js";function I(n){return function(r){return r==null?void 0:r[n]}}var L=1,w=2;function D(n,r,e,i){var t=e.length,A=t,a=!i;if(n==null)return!A;for(n=Object(n);t--;){var f=e[t];if(a&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++t<A;){f=e[t];var u=f[0],s=n[u],o=f[1];if(a&&f[2]){if(s===void 0&&!(u in n))return!1}else{var l=new h;if(i)var R=i(s,o,u,n,r,l);if(!(R===void 0?d(o,s,L|w,i,l):R))return!1}}return!0}function c(n){return n===n&&!y(n)}function G(n){for(var r=M(n),e=r.length;e--;){var i=r[e],t=n[i];r[e]=[i,t,c(t)]}return r}function g(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function b(n){var r=G(n);return r.length==1&&r[0][2]?g(r[0][0],r[0][1]):function(e){return e===n||D(e,n,r)}}function F(n,r,e){var i=n==null?void 0:E(n,r);return i===void 0?e:i}var x=1,S=2;function m(n,r){return O(n)&&c(r)?g(P(n),r):function(e){var i=F(e,n);return i===void 0&&i===r?_(e,n):d(r,i,x|S)}}function v(n){return function(r){return E(r,n)}}function K(n){return O(n)?I(P(n)):v(n)}function T(n){return typeof n=="function"?n:n==null?p:typeof n=="object"?C(n)?m(n[0],n[1]):b(n):K(n)}export{T as b};

View File

@ -1 +0,0 @@
import{cu as M,cv as d,c4 as _,aX as g,bh as h,cw as E,bj as O,cx as p,bf as y,bz as C}from"./index-0ff6a040.js";function I(n){return function(r){return r==null?void 0:r[n]}}var L=1,w=2;function D(n,r,e,i){var t=e.length,A=t,a=!i;if(n==null)return!A;for(n=Object(n);t--;){var f=e[t];if(a&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++t<A;){f=e[t];var u=f[0],s=n[u],o=f[1];if(a&&f[2]){if(s===void 0&&!(u in n))return!1}else{var l=new M;if(i)var R=i(s,o,u,n,r,l);if(!(R===void 0?d(o,s,L|w,i,l):R))return!1}}return!0}function P(n){return n===n&&!_(n)}function G(n){for(var r=g(n),e=r.length;e--;){var i=r[e],t=n[i];r[e]=[i,t,P(t)]}return r}function c(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function b(n){var r=G(n);return r.length==1&&r[0][2]?c(r[0][0],r[0][1]):function(e){return e===n||D(e,n,r)}}function F(n,r,e){var i=n==null?void 0:h(n,r);return i===void 0?e:i}var x=1,S=2;function m(n,r){return E(n)&&P(r)?c(O(n),r):function(e){var i=F(e,n);return i===void 0&&i===r?p(e,n):d(r,i,x|S)}}function v(n){return function(r){return h(r,n)}}function K(n){return E(n)?I(O(n)):v(n)}function T(n){return typeof n=="function"?n:n==null?y:typeof n=="object"?C(n)?m(n[0],n[1]):b(n):K(n)}export{T as b};

View File

@ -1 +1 @@
import{ca as t}from"./index-0ff6a040.js";const o=async()=>(await t.value.get("/db/basic_info")).data,c=async()=>(await t.value.get("/db/expired_dirs")).data,r=async()=>{await t.value.post("/db/update_image_data",{},{timeout:1/0})},d=async a=>(await t.value.post("/db/match_images_by_tags",a)).data,g=async a=>(await t.value.post("/db/add_custom_tag",a)).data,u=async a=>(await t.value.post("/db/toggle_custom_tag_to_img",a)).data,p=async a=>{await t.value.post("/db/remove_custom_tag",a)},i=async a=>(await t.value.get("/db/img_selected_custom_tag",{params:{path:a}})).data,m=async a=>(await t.value.get("/db/search_by_substr",{params:{substr:a}})).data,e="/db/scanned_paths",_=async a=>{await t.value.post(e,{path:a})},b=async a=>{await t.value.delete(e,{data:{path:a}})};export{_ as a,o as b,c,g as d,m as e,i as f,d as g,b as h,p as r,u as t,r as u};
import{cb as t}from"./index-2ba197f6.js";const o=async()=>(await t.value.get("/db/basic_info")).data,c=async()=>(await t.value.get("/db/expired_dirs")).data,r=async()=>{await t.value.post("/db/update_image_data",{},{timeout:1/0})},d=async a=>(await t.value.post("/db/match_images_by_tags",a)).data,g=async a=>(await t.value.post("/db/add_custom_tag",a)).data,u=async a=>(await t.value.post("/db/toggle_custom_tag_to_img",a)).data,p=async a=>{await t.value.post("/db/remove_custom_tag",a)},i=async a=>(await t.value.get("/db/img_selected_custom_tag",{params:{path:a}})).data,m=async a=>(await t.value.get("/db/search_by_substr",{params:{substr:a}})).data,e="/db/scanned_paths",_=async a=>{await t.value.post(e,{path:a})},b=async a=>{await t.value.delete(e,{data:{path:a}})};export{_ as a,o as b,c,g as d,m as e,i as f,d as g,b as h,p as r,u as t,r as u};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
import{Z as c,bB as y,bf as q}from"./index-0ff6a040.js";import{u as D,b as E,f as P,a as z,c as G,d as L,e as Q,h as R}from"./hook-aa833af6.js";const B=()=>{const e=c(),l=y(),o=c(),s={tabIdx:-1,target:"local",paneIdx:-1,walkMode:!1},{stackViewEl:r,multiSelectedIdxs:u,stack:m}=D({images:e}).toRefs(),{itemSize:f,gridItems:v}=E(s),{showMenuIdx:p}=P();z(s);const{onFileDragStart:I,onFileDragEnd:d}=G(),{showGenInfo:g,imageGenInfo:w,q:x,onContextMenuClick:i,onFileItemClick:k}=L(s,{openNext:q}),{previewIdx:h,previewing:F,onPreviewVisibleChange:M,previewImgMove:b,canPreview:C}=Q(s,{scroller:o}),S=async(a,t,n)=>{m.value=[{curr:"",files:e.value}],await i(a,t,n)};return R("removeFiles",async({paths:a})=>{var t;e.value=(t=e.value)==null?void 0:t.filter(n=>!a.includes(n.fullpath))}),{scroller:o,queue:l,images:e,onContextMenuClickU:S,stackViewEl:r,previewIdx:h,previewing:F,onPreviewVisibleChange:M,previewImgMove:b,canPreview:C,itemSize:f,gridItems:v,showGenInfo:g,imageGenInfo:w,q:x,onContextMenuClick:i,onFileItemClick:k,showMenuIdx:p,multiSelectedIdxs:u,onFileDragStart:I,onFileDragEnd:d}};export{B as u};
import{$ as c,bC as y,bg as q}from"./index-2ba197f6.js";import{u as D,b as E,f as P,a as z,c as G,d as L,e as Q,h as R}from"./hook-09a5b85c.js";const H=()=>{const e=c(),l=y(),o=c(),s={tabIdx:-1,target:"local",paneIdx:-1,walkMode:!1},{stackViewEl:r,multiSelectedIdxs:u,stack:m}=D({images:e}).toRefs(),{itemSize:v,gridItems:f}=E(s),{showMenuIdx:p}=P();z(s);const{onFileDragStart:I,onFileDragEnd:d}=G(),{showGenInfo:g,imageGenInfo:w,q:x,onContextMenuClick:i,onFileItemClick:k}=L(s,{openNext:q}),{previewIdx:h,previewing:C,onPreviewVisibleChange:F,previewImgMove:M,canPreview:b}=Q(s,{scroller:o}),S=async(a,t,n)=>{m.value=[{curr:"",files:e.value}],await i(a,t,n)};return R("removeFiles",async({paths:a})=>{var t;e.value=(t=e.value)==null?void 0:t.filter(n=>!a.includes(n.fullpath))}),{scroller:o,queue:l,images:e,onContextMenuClickU:S,stackViewEl:r,previewIdx:h,previewing:C,onPreviewVisibleChange:F,previewImgMove:M,canPreview:b,itemSize:v,gridItems:f,showGenInfo:g,imageGenInfo:w,q:x,onContextMenuClick:i,onFileItemClick:k,showMenuIdx:p,multiSelectedIdxs:u,onFileDragStart:I,onFileDragEnd:d}};export{H as u};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
.ant-breadcrumb{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";color:#00000073;font-size:14px}.ant-breadcrumb .anticon{font-size:14px}.ant-breadcrumb a{color:#00000073;transition:color .3s}.ant-breadcrumb a:hover{color:#de632f}.ant-breadcrumb>span:last-child{color:#000000d9}.ant-breadcrumb>span:last-child a{color:#000000d9}.ant-breadcrumb>span:last-child .ant-breadcrumb-separator{display:none}.ant-breadcrumb-separator{margin:0 8px;color:#00000073}.ant-breadcrumb-link>.anticon+span,.ant-breadcrumb-link>.anticon+a{margin-left:4px}.ant-breadcrumb-overlay-link>.anticon{margin-left:4px}.ant-breadcrumb-rtl{direction:rtl}.ant-breadcrumb-rtl:before{display:table;content:""}.ant-breadcrumb-rtl:after{display:table;clear:both;content:""}.ant-breadcrumb-rtl>span{float:right}.ant-breadcrumb-rtl .ant-breadcrumb-link>.anticon+span,.ant-breadcrumb-rtl .ant-breadcrumb-link>.anticon+a{margin-right:4px;margin-left:0}.ant-breadcrumb-rtl .ant-breadcrumb-overlay-link>.anticon{margin-right:4px;margin-left:0}.nprogress{pointer-events:none}.nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}.nprogress .peg{display:block;position:absolute;right:0px;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translateY(-4px)}.nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}.nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent .nprogress .spinner,.nprogress-custom-parent .nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preview-switch[data-v-893d9b97]{position:fixed;top:0;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;z-index:11111;pointer-events:none}.preview-switch>*[data-v-893d9b97]{color:#fff;margin:16px;font-size:4em;pointer-events:all;cursor:pointer}.preview-switch>*.disable[data-v-893d9b97]{opacity:0;pointer-events:none;cursor:none}.breadcrumb[data-v-893d9b97]{display:flex;align-items:center}.breadcrumb>*[data-v-893d9b97]{margin-right:4px}.container[data-v-893d9b97]{background:var(--zp-secondary-background);height:var(--pane-max-height)}.location-bar[data-v-893d9b97]{padding:4px 16px;background:var(--zp-primary-background);border-bottom:1px solid var(--zp-border);display:flex;align-items:center;justify-content:space-between}.location-bar .actions[data-v-893d9b97]{display:flex;align-items:center;flex-shrink:0}.location-bar a.opt[data-v-893d9b97]{margin-left:8px}.view[data-v-893d9b97]{padding:8px;height:calc(100vh - 48px)}.view .file-list[data-v-893d9b97]{list-style:none;padding:8px;height:100%;overflow:auto}.hint[data-v-893d9b97]{padding:4px;border:4px;background:var(--zp-secondary-background);border:1px solid var(--zp-border)}
.ant-breadcrumb{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";color:#00000073;font-size:14px}.ant-breadcrumb .anticon{font-size:14px}.ant-breadcrumb a{color:#00000073;transition:color .3s}.ant-breadcrumb a:hover{color:#de632f}.ant-breadcrumb>span:last-child{color:#000000d9}.ant-breadcrumb>span:last-child a{color:#000000d9}.ant-breadcrumb>span:last-child .ant-breadcrumb-separator{display:none}.ant-breadcrumb-separator{margin:0 8px;color:#00000073}.ant-breadcrumb-link>.anticon+span,.ant-breadcrumb-link>.anticon+a{margin-left:4px}.ant-breadcrumb-overlay-link>.anticon{margin-left:4px}.ant-breadcrumb-rtl{direction:rtl}.ant-breadcrumb-rtl:before{display:table;content:""}.ant-breadcrumb-rtl:after{display:table;clear:both;content:""}.ant-breadcrumb-rtl>span{float:right}.ant-breadcrumb-rtl .ant-breadcrumb-link>.anticon+span,.ant-breadcrumb-rtl .ant-breadcrumb-link>.anticon+a{margin-right:4px;margin-left:0}.ant-breadcrumb-rtl .ant-breadcrumb-overlay-link>.anticon{margin-right:4px;margin-left:0}.nprogress{pointer-events:none}.nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}.nprogress .peg{display:block;position:absolute;right:0px;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translateY(-4px)}.nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}.nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent .nprogress .spinner,.nprogress-custom-parent .nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preview-switch[data-v-5a65a789]{position:fixed;top:0;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;z-index:11111;pointer-events:none}.preview-switch>*[data-v-5a65a789]{color:#fff;margin:16px;font-size:4em;pointer-events:all;cursor:pointer}.preview-switch>*.disable[data-v-5a65a789]{opacity:0;pointer-events:none;cursor:none}.breadcrumb[data-v-5a65a789]{display:flex;align-items:center}.breadcrumb>*[data-v-5a65a789]{margin-right:4px}.container[data-v-5a65a789]{background:var(--zp-secondary-background);height:var(--pane-max-height)}.location-bar[data-v-5a65a789]{padding:4px 16px;background:var(--zp-primary-background);border-bottom:1px solid var(--zp-border);display:flex;align-items:center;justify-content:space-between}.location-bar .actions[data-v-5a65a789]{display:flex;align-items:center;flex-shrink:0}.location-bar a.opt[data-v-5a65a789]{margin-left:8px}.view[data-v-5a65a789]{padding:8px;height:calc(100vh - 48px)}.view .file-list[data-v-5a65a789]{list-style:none;padding:8px;height:100%;overflow:auto}.hint[data-v-5a65a789]{padding:4px;border:4px;background:var(--zp-secondary-background);border:1px solid var(--zp-border)}

1
vue/dist/assets/stackView-d3da188b.js vendored Normal file

File diff suppressed because one or more lines are too long

2
vue/dist/index.html vendored
View File

@ -7,7 +7,7 @@
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Infinite Image Browsing</title>
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-0ff6a040.js"></script>
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-2ba197f6.js"></script>
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-4ed7d1e3.css">
</head>

View File

@ -8,6 +8,7 @@ import { createReactiveQueue, globalEvents, useGlobalEventListen } from './util'
import { resolveQueryActions } from './queryActions'
import { refreshTauriConf, tauriConf } from './util/tauriAppConf'
import { openModal } from './taurilaunchModal'
import { isTauri } from './util/env'
const globalStore = useGlobalStore()
const queue = createReactiveQueue()
@ -23,7 +24,7 @@ useGlobalEventListen('updateGlobalSetting', async () => {
resolveQueryActions(globalStore)
})
onMounted(async () => {
if (import.meta.env.TAURI_ARCH) {
if (isTauri) {
openModal()
}
globalEvents.emit('updateGlobalSetting')

View File

@ -79,6 +79,7 @@ export interface GlobalConf {
sd_cwd: string
extra_paths: { path: string }[]
enable_access_control: boolean
launch_mode: 'server' | 'sd'
}
export const getGlobalSetting = async () => {

View File

@ -35,19 +35,21 @@ const tags = computed(() => {
<template v-if="isImageFile(file.name)">
<a-menu-item key="viewGenInfo">{{ $t('viewGenerationInfo') }}</a-menu-item>
<a-menu-divider />
<a-menu-item key="send2txt2img">{{ $t('sendToTxt2img') }}</a-menu-item>
<a-menu-item key="send2img2img">{{ $t('sendToImg2img') }}</a-menu-item>
<a-menu-item key="send2inpaint">{{ $t('sendToInpaint') }}</a-menu-item>
<a-menu-item key="send2extras">{{ $t('sendToExtraFeatures') }}</a-menu-item>
<a-sub-menu key="send2controlnet" :title="$t('sendToControlNet')">
<a-menu-item key="send2controlnet-txt2img">{{ $t('t2i') }}</a-menu-item>
<a-menu-item key="send2controlnet-img2img">{{ $t('i2i') }}</a-menu-item>
</a-sub-menu>
<template v-if="global.conf?.launch_mode !== 'server'">
<a-menu-item key="send2txt2img">{{ $t('sendToTxt2img') }}</a-menu-item>
<a-menu-item key="send2img2img">{{ $t('sendToImg2img') }}</a-menu-item>
<a-menu-item key="send2inpaint">{{ $t('sendToInpaint') }}</a-menu-item>
<a-menu-item key="send2extras">{{ $t('sendToExtraFeatures') }}</a-menu-item>
<a-sub-menu key="send2controlnet" :title="$t('sendToControlNet')">
<a-menu-item key="send2controlnet-txt2img">{{ $t('t2i') }}</a-menu-item>
<a-menu-item key="send2controlnet-img2img">{{ $t('i2i') }}</a-menu-item>
</a-sub-menu>
</template>
<a-menu-item key="send2savedDir">{{ $t('send2savedDir') }}</a-menu-item>
<a-menu-divider />
<a-sub-menu key="toggle-tag" :title="$t('toggleTag')">
<a-menu-item v-for="tag in tags" :key="`toggle-tag-${tag.id}`">{{ tag.name }} <star-filled v-if="tag.selected" /><star-outlined
v-else />
<a-menu-item v-for="tag in tags" :key="`toggle-tag-${tag.id}`">{{ tag.name }} <star-filled
v-if="tag.selected" /><star-outlined v-else />
</a-menu-item>
</a-sub-menu>
<a-menu-item key="openWithLocalFileBrowser">{{ $t('openWithLocalFileBrowser') }}</a-menu-item>

View File

@ -150,13 +150,20 @@ const baseInfoTags = computed(() => {
<a-button>{{ t('openContextMenu') }}</a-button>
<template #overlay>
<a-menu @click="emit('contextMenuClick', $event, file, idx)">
<a-menu-item key="send2txt2img">{{ $t('sendToTxt2img') }}</a-menu-item>
<a-menu-item key="send2img2img">{{ $t('sendToImg2img') }}</a-menu-item>
<a-menu-item key="send2inpaint">{{ $t('sendToInpaint') }}</a-menu-item>
<a-menu-item key="send2extras">{{ $t('sendToExtraFeatures') }}</a-menu-item>
<template v-if="global.conf?.launch_mode !== 'server'">
<a-menu-item key="send2txt2img">{{ $t('sendToTxt2img') }}</a-menu-item>
<a-menu-item key="send2img2img">{{ $t('sendToImg2img') }}</a-menu-item>
<a-menu-item key="send2inpaint">{{ $t('sendToInpaint') }}</a-menu-item>
<a-menu-item key="send2extras">{{ $t('sendToExtraFeatures') }}</a-menu-item>
<a-sub-menu key="send2controlnet" :title="$t('sendToControlNet')">
<a-menu-item key="send2controlnet-txt2img">{{ $t('t2i') }}</a-menu-item>
<a-menu-item key="send2controlnet-img2img">{{ $t('i2i') }}</a-menu-item>
</a-sub-menu>
</template>
<a-menu-item key="send2savedDir">{{ $t('send2savedDir') }}</a-menu-item>
<a-menu-item key="deleteFiles" :disabled="toRawFileUrl(file) === global.fullscreenPreviewInitialUrl">{{
$t('deleteSelected') }}</a-menu-item>
<a-menu-item key="deleteFiles" :disabled="toRawFileUrl(file) === global.fullscreenPreviewInitialUrl">
{{ $t('deleteSelected') }}
</a-menu-item>
<a-menu-item key="previewInNewWindow">{{ $t('previewInNewWindow') }}</a-menu-item>
<a-menu-item key="download">{{ $t('download') }}</a-menu-item>
<a-menu-item key="copyPreviewUrl">{{ $t('copySourceFilePreviewLink') }}</a-menu-item>

View File

@ -25,6 +25,7 @@ import fullScreenContextMenu from './fullScreenContextMenu.vue'
import { copy2clipboardI18n } from '@/util'
import { openFolder } from '@/api'
import { sortMethods } from './fileSort'
import { isTauri } from '@/util/env'
const global = useGlobalStore()
const props = defineProps<{
@ -138,7 +139,7 @@ watch(
<div class="actions">
<a class="opt" @click.prevent="refresh"> {{ $t('refresh') }} </a>
<a class="opt" @click.prevent.stop="selectAll"> {{ $t('selectAll') }} </a>
<a class="opt" @click.prevent="share"> {{ $t('share') }} </a>
<a class="opt" @click.prevent="share" v-if="!isTauri"> {{ $t('share') }} </a>
<a-dropdown>
<a class="opt" @click.prevent>
{{ $t('quickMove') }}

View File

@ -9,6 +9,7 @@ import { relaunch } from '@tauri-apps/api/process'
import { appConfFilename } from '@/taurilaunchModal'
import { fs, invoke } from '@tauri-apps/api'
import { getShortcutStrFromEvent } from '@/util/shortcut'
import { isTauri } from '@/util/env'
const globalStore = useGlobalStore()
@ -23,7 +24,6 @@ const onShortcutKeyDown = (e: KeyboardEvent, key: keyof Shortcut) => {
globalStore.shortcut[key] = keysStr
}
}
const isTauri = !!import.meta.env.TAURI_ARCH
const oninitTauriLaunchConf = async () => {
await invoke('shutdown_api_server_command')

1
vue/src/util/env.ts Normal file
View File

@ -0,0 +1 @@
export const isTauri = !!import.meta.env.TAURI_ARCH