Add support for authentication

pull/185/head
zanllp 2023-05-24 03:11:09 +08:00
parent bbe3828ada
commit 7e65738b21
26 changed files with 162 additions and 84 deletions

1
.env.example Normal file
View File

@ -0,0 +1 @@
IIB_SECRET_KEY=

1
.gitignore vendored
View File

@ -6,3 +6,4 @@ tags-translate.csv
launch.sh
conf.json
iib.db-journal
.env

20
install.py Normal file
View File

@ -0,0 +1,20 @@
import launch
import os
import pkg_resources
req_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), "requirements.txt")
# copy form controlnet, thanks
with open(req_file) as file:
for package in file:
try:
package = package.strip()
if '==' in package:
package_name, package_version = package.split('==')
installed_version = pkg_resources.get_distribution(package_name).version
if installed_version != package_version:
launch.run_pip(f"install {package}", f"sd-webui-infinite-image-browsing requirement: changing {package_name} version from {installed_version} to {package_version}")
elif not launch.is_installed(package):
launch.run_pip(f"install {package}", f"sd-webui-infinite-image-browsing requirement: {package}")
except Exception as e:
print(e)
print(f'Warning: Failed to install {package}, some preprocessors may not work.')

View File

@ -12,7 +12,7 @@
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite App</title>
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-b3bde319.js"></script>
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-66a3e480.js"></script>
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-050489b7.css">
</head>

View File

@ -1,3 +1,4 @@
fastapi
uvicorn
piexif
python-dotenv

View File

@ -15,7 +15,7 @@ from scripts.tool import (
get_sd_webui_conf,
get_valid_img_dirs,
get_created_date,
open_folder
open_folder,
)
from fastapi import FastAPI, HTTPException
from fastapi.staticfiles import StaticFiles
@ -24,6 +24,7 @@ from typing import Any, List, Literal, Optional
from pydantic import BaseModel
from fastapi.responses import FileResponse, RedirectResponse
from PIL import Image
from fastapi import Depends, FastAPI, HTTPException, Request
import hashlib
from urllib.parse import urlencode
from scripts.db.datamodel import (
@ -38,8 +39,36 @@ from scripts.db.update_image_data import update_image_data
from scripts.logger import logger
send_img_path = {"value": ""}
options = {"IIB_SECRET_KEY": ""}
mem = {
"IIB_SECRET_KEY_HASH" : None
}
try:
from dotenv import load_dotenv
load_dotenv(os.path.join(cwd, ".env"))
secret_key = os.getenv("IIB_SECRET_KEY")
if secret_key:
options["IIB_SECRET_KEY"] = secret_key
print(f"Secret key loaded successfully. ")
except BaseException as e:
print(e)
async def get_token(request: Request):
secert = options["IIB_SECRET_KEY"]
if not secert:
return
token = request.cookies.get("IIB_S")
if not token:
raise HTTPException(status_code=401, detail="Unauthorized")
if not mem["IIB_SECRET_KEY_HASH"]:
mem["IIB_SECRET_KEY_HASH"] = hashlib.sha256((secert+"_ciallo").encode("utf-8")).hexdigest()
if mem["IIB_SECRET_KEY_HASH"] != token:
raise HTTPException(status_code=401, detail="Unauthorized")
def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
pre = "/infinite_image_browsing"
@ -53,7 +82,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
async def greeting():
return "hello"
@app.get(f"{pre}/global_setting")
@app.get(f"{pre}/global_setting", dependencies=[Depends(get_token)])
async def global_setting():
all_custom_tags = []
@ -71,13 +100,13 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
"home": os.environ.get("USERPROFILE") if is_win else os.environ.get("HOME"),
"sd_cwd": os.getcwd(),
"all_custom_tags": all_custom_tags,
"extra_paths": extra_paths
"extra_paths": extra_paths,
}
class DeleteFilesReq(BaseModel):
file_paths: List[str]
@app.post(pre + "/delete_files")
@app.post(pre + "/delete_files", dependencies=[Depends(get_token)])
async def delete_files(req: DeleteFilesReq):
conn = DataBase.get_conn()
for path in req.file_paths:
@ -112,7 +141,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
file_paths: List[str]
dest: str
@app.post(pre + "/move_files")
@app.post(pre + "/move_files", dependencies=[Depends(get_token)])
async def move_files(req: MoveFilesReq):
conn = DataBase.get_conn()
for path in req.file_paths:
@ -129,7 +158,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
)
raise HTTPException(400, detail=error_msg)
@app.get(pre + "/files")
@app.get(pre + "/files", dependencies=[Depends(get_token)])
async def get_target_floder_files(folder_path: str):
files = []
try:
@ -182,7 +211,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
return {"files": files}
@app.get(pre + "/image-thumbnail")
@app.get(pre + "/image-thumbnail", dependencies=[Depends(get_token)])
async def thumbnail(path: str, t: str, size: str = "256x256"):
if not temp_path:
return
@ -235,7 +264,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
pass
return False
@app.get(pre + "/file")
@app.get(pre + "/file", dependencies=[Depends(get_token)])
async def get_file(path: str, t: str, disposition: Optional[str] = None):
filename = path
import mimetypes
@ -263,12 +292,12 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
headers=headers,
)
@app.post(pre + "/send_img_path")
@app.post(pre + "/send_img_path", dependencies=[Depends(get_token)])
async def api_set_send_img_path(path: str):
send_img_path["value"] = path
# 等待图片信息生成完成
@app.get(pre + "/gen_info_completed")
@app.get(pre + "/gen_info_completed", dependencies=[Depends(get_token)])
async def api_set_send_img_path():
for _ in range(120): # 等待12s
if send_img_path["value"] == "": # 等待setup里面生成完成
@ -278,7 +307,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
await asyncio.sleep(0.1)
return send_img_path["value"] == ""
@app.get(pre + "/image_geninfo")
@app.get(pre + "/image_geninfo", dependencies=[Depends(get_token)])
async def image_geninfo(path: str):
with Image.open(path) as img:
return read_info_from_image(img)
@ -286,7 +315,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
class CheckPathExistsReq(BaseModel):
paths: List[str]
@app.post(pre + "/check_path_exists")
@app.post(pre + "/check_path_exists", dependencies=[Depends(get_token)])
async def check_path_exists(req: CheckPathExistsReq):
res = {}
for path in req.paths:
@ -297,17 +326,16 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
def index_bd():
return FileResponse(os.path.join(cwd, "vue/dist/index.html"))
class OpenFolderReq(BaseModel):
path: str
@app.post(pre + "/open_folder")
@app.post(pre + "/open_folder", dependencies=[Depends(get_token)])
def open_folder_using_explore(req: OpenFolderReq):
open_folder(*os.path.split(req.path))
db_pre = pre + "/db"
@app.get(db_pre + "/basic_info")
@app.get(db_pre + "/basic_info", dependencies=[Depends(get_token)])
async def get_db_basic_info():
conn = DataBase.get_conn()
img_count = DbImg.count(conn)
@ -320,7 +348,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
"expired_dirs": expired_dirs,
}
@app.get(db_pre + "/expired_dirs")
@app.get(db_pre + "/expired_dirs", dependencies=[Depends(get_token)])
async def get_db_expired():
conn = DataBase.get_conn()
expired_dirs = Floder.get_expired_dirs(conn)
@ -333,7 +361,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
r = ExtraPath.get_extra_paths(conn, "scanned")
return [x.path for x in r]
@app.post(db_pre + "/update_image_data")
@app.post(db_pre + "/update_image_data", dependencies=[Depends(get_token)])
async def update_image_db_data():
try:
DataBase._initing = True
@ -351,7 +379,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
or_tags: List[int]
not_tags: List[int]
@app.post(db_pre + "/match_images_by_tags")
@app.post(db_pre + "/match_images_by_tags", dependencies=[Depends(get_token)])
async def match_image_by_tags(req: MatchImagesByTagsReq):
conn = DataBase.get_conn()
return [
@ -361,7 +389,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
)
]
@app.get(db_pre + "/img_selected_custom_tag")
@app.get(db_pre + "/img_selected_custom_tag", dependencies=[Depends(get_token)])
async def get_img_selected_custom_tag(path: str):
path = os.path.normpath(path)
conn = DataBase.get_conn()
@ -381,7 +409,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
img_path: str
tag_id: int
@app.post(db_pre + "/toggle_custom_tag_to_img")
@app.post(db_pre + "/toggle_custom_tag_to_img", dependencies=[Depends(get_token)])
async def toggle_custom_tag_to_img(req: ToggleCustomTagToImgReq):
conn = DataBase.get_conn()
path = os.path.normpath(req.img_path)
@ -414,7 +442,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
class AddCustomTagReq(BaseModel):
tag_name: str
@app.post(db_pre + "/add_custom_tag")
@app.post(db_pre + "/add_custom_tag", dependencies=[Depends(get_token)])
async def add_custom_tag(req: AddCustomTagReq):
conn = DataBase.get_conn()
tag = Tag.get_or_create(conn, name=req.tag_name, type="custom")
@ -424,7 +452,7 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
class RemoveCustomTagReq(BaseModel):
tag_id: str
@app.post(db_pre + "/remove_custom_tag")
@app.post(db_pre + "/remove_custom_tag", dependencies=[Depends(get_token)])
async def remove_custom_tag(req: RemoveCustomTagReq):
conn = DataBase.get_conn()
ImageTag.remove(conn, tag_id=req.tag_id)
@ -434,12 +462,12 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
img_id: int
tag_id: str
@app.post(db_pre + "/remove_custom_tag_from_img")
@app.post(db_pre + "/remove_custom_tag_from_img", dependencies=[Depends(get_token)])
async def remove_custom_tag_from_img(req: RemoveCustomTagFromReq):
conn = DataBase.get_conn()
ImageTag.remove(conn, image_id=req.img_id, tag_id=req.tag_id)
@app.get(db_pre + "/search_by_substr")
@app.get(db_pre + "/search_by_substr", dependencies=[Depends(get_token)])
async def search_by_substr(substr: str):
conn = DataBase.get_conn()
imgs = DbImg.find_by_substring(conn=conn, substring=substr)
@ -448,7 +476,9 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
class ScannedPathModel(BaseModel):
path: str
@app.post(f"{db_pre}/scanned_paths", status_code=201)
@app.post(
f"{db_pre}/scanned_paths", status_code=201, dependencies=[Depends(get_token)]
)
async def create_scanned_path(scanned_path: ScannedPathModel):
conn = DataBase.get_conn()
path = ExtraPath(scanned_path.path)
@ -457,13 +487,17 @@ def infinite_image_browsing_api(_: Any, app: FastAPI, **kwargs):
finally:
conn.commit()
@app.get(f"{db_pre}/scanned_paths", response_model=List[ScannedPathModel])
@app.get(
f"{db_pre}/scanned_paths",
response_model=List[ScannedPathModel],
dependencies=[Depends(get_token)],
)
async def read_scanned_paths():
conn = DataBase.get_conn()
paths = ExtraPath.get_extra_paths(conn, "scanned")
return [{"path": path.path} for path in paths]
@app.delete(f"{db_pre}/scanned_paths")
@app.delete(f"{db_pre}/scanned_paths", dependencies=[Depends(get_token)])
async def delete_scanned_path(scanned_path: ScannedPathModel):
conn = DataBase.get_conn()
ExtraPath.remove(conn, scanned_path.path)

View File

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

View File

@ -1 +1 @@
import{d as j,r as B,ad as K,bb as Q,bc as J,o as a,l as k,c as o,y as m,m as r,B as b,t as v,n as e,H as f,p as $,q as A,A as W,K as V,bg as X,U as Y,N as Z,R as ee}from"./index-b3bde319.js";import{i as te,j as se,t as ie,L as ne,R as le,k as ae,S as oe}from"./fullScreenContextMenu-5fd8e001.js";import{I as re}from"./index-1b0cc4aa.js";import{a as U,b as ue,d as de,M as ce,u as pe}from"./db-11105a55.js";import{u as me}from"./hook-e64b9aff.js";import{B as ve}from"./button-620860e4.js";import"./index-d9425b05.js";import"./_baseIteratee-f1fd45bd.js";const fe={key:0,class:"search-bar"},ge={class:"hint"},ke={key:1,class:"preview-switch"},be=j({__name:"SubstrSearch",setup(Ce){const{queue:u,images:n,onContextMenuClickU:C,stackViewEl:R,previewIdx:d,previewing:w,onPreviewVisibleChange:D,previewImgMove:y,canPreview:I,itemSize:_,gridItems:E,showGenInfo:c,imageGenInfo:x,q:F,multiSelectedIdxs:N,onFileItemClick:q,scroller:h,showMenuIdx:g}=me(),p=B(""),s=B();K(async()=>{s.value=await U(),s.value.img_count&&s.value.expired&&S()});const S=Q(()=>u.pushAction(async()=>(await pe(),s.value=await U(),s.value)).res),P=async()=>{var i;n.value=await u.pushAction(()=>de(p.value)).res,(i=h.value)==null||i.scrollToItem(0),n.value.length||X.info(Y("fuzzy-search-noResults"))};return J("return-to-iib",async()=>{const i=await u.pushAction(ue).res;s.value.expired=i.expired}),(i,t)=>{const T=re,M=ve,G=Z,L=ce,O=oe;return a(),k("div",{class:"container",ref_key:"stackViewEl",ref:R},[s.value?(a(),k("div",fe,[o(T,{value:p.value,"onUpdate:value":t[0]||(t[0]=l=>p.value=l),placeholder:i.$t("fuzzy-search-placeholder")},null,8,["value","placeholder"]),s.value.expired||!s.value.img_count?(a(),m(M,{key:0,onClick:e(S),loading:!e(u).isIdle,type:"primary"},{default:r(()=>[b(v(s.value.img_count===0?i.$t("generateIndexHint"):i.$t("UpdateIndex")),1)]),_:1},8,["onClick","loading"])):(a(),m(M,{key:1,type:"primary",onClick:P,loading:!e(u).isIdle,disabled:!p.value},{default:r(()=>[b(v(i.$t("search")),1)]),_:1},8,["loading","disabled"]))])):f("",!0),o(O,{size:"large",spinning:!e(u).isIdle},{default:r(()=>[o(L,{visible:e(c),"onUpdate:visible":t[2]||(t[2]=l=>$(c)?c.value=l:null),width:"70vw","mask-closable":"",onOk:t[3]||(t[3]=l=>c.value=!1)},{cancelText:r(()=>[]),default:r(()=>[o(G,{active:"",loading:!e(F).isIdle},{default:r(()=>[A("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:t[1]||(t[1]=l=>e(W)(e(x)))},[A("div",ge,v(i.$t("doubleClickToCopy")),1),b(" "+v(e(x)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),e(n)?(a(),m(e(te),{key:0,ref_key:"scroller",ref:h,class:"file-list",items:e(n),"item-size":e(_).first,"key-field":"fullpath","item-secondary-size":e(_).second,gridItems:e(E)},{default:r(({item:l,index:z})=>[o(se,{idx:z,file:l,"show-menu-idx":e(g),"onUpdate:showMenuIdx":t[4]||(t[4]=H=>$(g)?g.value=H:null),onFileItemClick:e(q),"full-screen-preview-image-url":e(n)[e(d)]?e(ie)(e(n)[e(d)]):"",selected:e(N).includes(z),onContextMenuClick:e(C),onPreviewVisibleChange:e(D)},null,8,["idx","file","show-menu-idx","onFileItemClick","full-screen-preview-image-url","selected","onContextMenuClick","onPreviewVisibleChange"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])):f("",!0),e(w)?(a(),k("div",ke,[o(e(ne),{onClick:t[5]||(t[5]=l=>e(y)("prev")),class:V({disable:!e(I)("prev")})},null,8,["class"]),o(e(le),{onClick:t[6]||(t[6]=l=>e(y)("next")),class:V({disable:!e(I)("next")})},null,8,["class"])])):f("",!0)]),_:1},8,["spinning"]),e(w)&&e(n)&&e(n)[e(d)]?(a(),m(ae,{key:1,file:e(n)[e(d)],idx:e(d),onContextMenuClick:e(C)},null,8,["file","idx","onContextMenuClick"])):f("",!0)],512)}}});const ze=ee(be,[["__scopeId","data-v-2feb1838"]]);export{ze as default};
import{d as j,r as B,ad as K,bb as Q,bc as J,o as a,l as k,c as o,y as m,m as r,B as b,t as v,n as e,H as f,p as $,q as A,A as W,K as V,bg as X,U as Y,N as Z,R as ee}from"./index-66a3e480.js";import{i as te,j as se,t as ie,L as ne,R as le,k as ae,S as oe}from"./fullScreenContextMenu-7ddf5342.js";import{I as re}from"./index-8b5bf348.js";import{a as U,b as ue,d as de,M as ce,u as pe}from"./db-e470e247.js";import{u as me}from"./hook-6dd184c3.js";import{B as ve}from"./button-aed742e0.js";import"./index-27030971.js";import"./_baseIteratee-882722a7.js";const fe={key:0,class:"search-bar"},ge={class:"hint"},ke={key:1,class:"preview-switch"},be=j({__name:"SubstrSearch",setup(Ce){const{queue:u,images:n,onContextMenuClickU:C,stackViewEl:R,previewIdx:d,previewing:w,onPreviewVisibleChange:D,previewImgMove:y,canPreview:I,itemSize:_,gridItems:E,showGenInfo:c,imageGenInfo:x,q:F,multiSelectedIdxs:N,onFileItemClick:q,scroller:h,showMenuIdx:g}=me(),p=B(""),s=B();K(async()=>{s.value=await U(),s.value.img_count&&s.value.expired&&S()});const S=Q(()=>u.pushAction(async()=>(await pe(),s.value=await U(),s.value)).res),P=async()=>{var i;n.value=await u.pushAction(()=>de(p.value)).res,(i=h.value)==null||i.scrollToItem(0),n.value.length||X.info(Y("fuzzy-search-noResults"))};return J("return-to-iib",async()=>{const i=await u.pushAction(ue).res;s.value.expired=i.expired}),(i,t)=>{const T=re,M=ve,G=Z,L=ce,O=oe;return a(),k("div",{class:"container",ref_key:"stackViewEl",ref:R},[s.value?(a(),k("div",fe,[o(T,{value:p.value,"onUpdate:value":t[0]||(t[0]=l=>p.value=l),placeholder:i.$t("fuzzy-search-placeholder")},null,8,["value","placeholder"]),s.value.expired||!s.value.img_count?(a(),m(M,{key:0,onClick:e(S),loading:!e(u).isIdle,type:"primary"},{default:r(()=>[b(v(s.value.img_count===0?i.$t("generateIndexHint"):i.$t("UpdateIndex")),1)]),_:1},8,["onClick","loading"])):(a(),m(M,{key:1,type:"primary",onClick:P,loading:!e(u).isIdle,disabled:!p.value},{default:r(()=>[b(v(i.$t("search")),1)]),_:1},8,["loading","disabled"]))])):f("",!0),o(O,{size:"large",spinning:!e(u).isIdle},{default:r(()=>[o(L,{visible:e(c),"onUpdate:visible":t[2]||(t[2]=l=>$(c)?c.value=l:null),width:"70vw","mask-closable":"",onOk:t[3]||(t[3]=l=>c.value=!1)},{cancelText:r(()=>[]),default:r(()=>[o(G,{active:"",loading:!e(F).isIdle},{default:r(()=>[A("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:t[1]||(t[1]=l=>e(W)(e(x)))},[A("div",ge,v(i.$t("doubleClickToCopy")),1),b(" "+v(e(x)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),e(n)?(a(),m(e(te),{key:0,ref_key:"scroller",ref:h,class:"file-list",items:e(n),"item-size":e(_).first,"key-field":"fullpath","item-secondary-size":e(_).second,gridItems:e(E)},{default:r(({item:l,index:z})=>[o(se,{idx:z,file:l,"show-menu-idx":e(g),"onUpdate:showMenuIdx":t[4]||(t[4]=H=>$(g)?g.value=H:null),onFileItemClick:e(q),"full-screen-preview-image-url":e(n)[e(d)]?e(ie)(e(n)[e(d)]):"",selected:e(N).includes(z),onContextMenuClick:e(C),onPreviewVisibleChange:e(D)},null,8,["idx","file","show-menu-idx","onFileItemClick","full-screen-preview-image-url","selected","onContextMenuClick","onPreviewVisibleChange"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])):f("",!0),e(w)?(a(),k("div",ke,[o(e(ne),{onClick:t[5]||(t[5]=l=>e(y)("prev")),class:V({disable:!e(I)("prev")})},null,8,["class"]),o(e(le),{onClick:t[6]||(t[6]=l=>e(y)("next")),class:V({disable:!e(I)("next")})},null,8,["class"])])):f("",!0)]),_:1},8,["spinning"]),e(w)&&e(n)&&e(n)[e(d)]?(a(),m(ae,{key:1,file:e(n)[e(d)],idx:e(d),onContextMenuClick:e(C)},null,8,["file","idx","onContextMenuClick"])):f("",!0)],512)}}});const ze=ee(be,[["__scopeId","data-v-2feb1838"]]);export{ze as default};

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
import{cl as C,cg as O,cm as b,cn as y,bH as g,aq as w,aQ as h,co as E,aS as A,cp as P,aO as R,b8 as x}from"./index-b3bde319.js";function m(e,n){for(var r=0;r<n.length;r++){var t=n[r];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,C(t.key),t)}}function Q(e,n,r){return n&&m(e.prototype,n),r&&m(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function B(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function D(e){return function(n){return n==null?void 0:n[e]}}var G=function(){return O()&&window.document.documentElement},u,J=function(){if(!G())return!1;if(u!==void 0)return u;var n=document.createElement("div");return n.style.display="flex",n.style.flexDirection="column",n.style.rowGap="1px",n.appendChild(document.createElement("div")),n.appendChild(document.createElement("div")),document.body.appendChild(n),u=n.scrollHeight===1,document.body.removeChild(n),u},M=1,S=2;function F(e,n,r,t){var i=r.length,s=i,o=!t;if(e==null)return!s;for(e=Object(e);i--;){var f=r[i];if(o&&f[2]?f[1]!==e[f[0]]:!(f[0]in e))return!1}for(;++i<s;){f=r[i];var a=f[0],l=e[a],c=f[1];if(o&&f[2]){if(l===void 0&&!(a in e))return!1}else{var d=new b;if(t)var p=t(l,c,a,e,n,d);if(!(p===void 0?y(c,l,M|S,t,d):p))return!1}}return!0}function _(e){return e===e&&!g(e)}function I(e){for(var n=w(e),r=n.length;r--;){var t=n[r],i=e[t];n[r]=[t,i,_(i)]}return n}function v(e,n){return function(r){return r==null?!1:r[e]===n&&(n!==void 0||e in Object(r))}}function L(e){var n=I(e);return n.length==1&&n[0][2]?v(n[0][0],n[0][1]):function(r){return r===e||F(r,e,n)}}function U(e,n,r){var t=e==null?void 0:h(e,n);return t===void 0?r:t}var K=1,T=2;function q(e,n){return E(e)&&_(n)?v(A(e),n):function(r){var t=U(r,e);return t===void 0&&t===n?P(r,e):y(n,t,K|T)}}function H(e){return function(n){return h(n,e)}}function N(e){return E(e)?D(A(e)):H(e)}function W(e){return typeof e=="function"?e:e==null?R:typeof e=="object"?x(e)?q(e[0],e[1]):L(e):N(e)}export{Q as _,B as a,W as b,G as c,J as d};
import{cl as C,cg as O,cm as b,cn as y,bH as g,aq as w,aQ as h,co as E,aS as A,cp as P,aO as R,b8 as x}from"./index-66a3e480.js";function m(e,n){for(var r=0;r<n.length;r++){var t=n[r];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,C(t.key),t)}}function Q(e,n,r){return n&&m(e.prototype,n),r&&m(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function B(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function D(e){return function(n){return n==null?void 0:n[e]}}var G=function(){return O()&&window.document.documentElement},u,J=function(){if(!G())return!1;if(u!==void 0)return u;var n=document.createElement("div");return n.style.display="flex",n.style.flexDirection="column",n.style.rowGap="1px",n.appendChild(document.createElement("div")),n.appendChild(document.createElement("div")),document.body.appendChild(n),u=n.scrollHeight===1,document.body.removeChild(n),u},M=1,S=2;function F(e,n,r,t){var i=r.length,s=i,o=!t;if(e==null)return!s;for(e=Object(e);i--;){var f=r[i];if(o&&f[2]?f[1]!==e[f[0]]:!(f[0]in e))return!1}for(;++i<s;){f=r[i];var a=f[0],l=e[a],c=f[1];if(o&&f[2]){if(l===void 0&&!(a in e))return!1}else{var d=new b;if(t)var p=t(l,c,a,e,n,d);if(!(p===void 0?y(c,l,M|S,t,d):p))return!1}}return!0}function _(e){return e===e&&!g(e)}function I(e){for(var n=w(e),r=n.length;r--;){var t=n[r],i=e[t];n[r]=[t,i,_(i)]}return n}function v(e,n){return function(r){return r==null?!1:r[e]===n&&(n!==void 0||e in Object(r))}}function L(e){var n=I(e);return n.length==1&&n[0][2]?v(n[0][0],n[0][1]):function(r){return r===e||F(r,e,n)}}function U(e,n,r){var t=e==null?void 0:h(e,n);return t===void 0?r:t}var K=1,T=2;function q(e,n){return E(e)&&_(n)?v(A(e),n):function(r){var t=U(r,e);return t===void 0&&t===n?P(r,e):y(n,t,K|T)}}function H(e){return function(n){return h(n,e)}}function N(e){return E(e)?D(A(e)):H(e)}function W(e){return typeof e=="function"?e:e==null?R:typeof e=="object"?x(e)?q(e[0],e[1]):L(e):N(e)}export{Q as _,B as a,W as b,G as c,J as d};

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{c as w,T as L,d as x,v as B,U as f,V as O,o,l as c,q as s,t as r,H as h,n as d,z as k,s as v,C as g,m as F,B as M,W as q,X as N,Y as V,Z as H,$ as j,R as P}from"./index-b3bde319.js";import{B as R}from"./button-620860e4.js";var E={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM761 656h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-23.1-31.9a7.92 7.92 0 00-6.5-3.3H573c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.9-5.3.1-12.7-6.4-12.7zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z"}}]},name:"file-done",theme:"outlined"};const T=E;function D(a){for(var l=1;l<arguments.length;l++){var t=arguments[l]!=null?Object(arguments[l]):{},i=Object.keys(t);typeof Object.getOwnPropertySymbols=="function"&&(i=i.concat(Object.getOwnPropertySymbols(t).filter(function(u){return Object.getOwnPropertyDescriptor(t,u).enumerable}))),i.forEach(function(u){W(a,u,t[u])})}return a}function W(a,l,t){return l in a?Object.defineProperty(a,l,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[l]=t,a}var C=function(l,t){var i=D({},l,t.attrs);return w(L,D({},i,{icon:T}),null)};C.displayName="FileDoneOutlined";C.inheritAttrs=!1;const A=C,G=a=>(H("data-v-4cfb5adf"),a=a(),j(),a),Q={class:"container"},U={class:"header"},X=G(()=>s("div",{"flex-placeholder":""},null,-1)),Y={class:"last-record"},Z=["onClick"],J={href:"https://github.com/zanllp/sd-webui-infinite-image-browsing/issues/90",target:"_blank",class:"last-record"},K={class:"content"},ee={key:0,class:"quick-start"},te={key:1,class:"quick-start"},se=["onClick"],ne={class:"quick-start__text line-clamp-1"},ae={class:"quick-start"},oe=["onClick"],ce={class:"quick-start__text line-clamp-1"},le={key:2,class:"quick-start"},re=["onClick"],ie={class:"quick-start__text line-clamp-1"},ue=x({__name:"emptyStartup",props:{tabIdx:null,paneIdx:null},setup(a){const l=a,t=B(),i={local:f("local"),"tag-search":f("imgSearch"),"fuzzy-search":f("fuzzy-search"),"global-setting":f("globalSettings")},u=(e,_,b=!1)=>{let p;switch(e){case"tag-search-matched-image-grid":return;case"global-setting":case"tag-search":case"fuzzy-search":case"empty":p={type:e,name:i[e],key:Date.now()+q()};break;case"local":p={type:e,name:i[e],key:Date.now()+q(),path:_,walkMode:b}}const n=t.tabList[l.tabIdx];n.panes.splice(l.paneIdx,1,p),n.key=p.key},m=O(()=>{var e;return(e=t.lastTabListRecord)==null?void 0:e[1]});console.log(m.value);const z=O(()=>t.autoCompletedDirList.filter(({key:e})=>e==="outdir_txt2img_samples"||e==="outdir_img2img_samples")),I=window.parent!==window,S=()=>window.parent.open("/infinite_image_browsing"),$=()=>{N(m.value),t.tabList=m.value.tabs.map(e=>V(e,!0)),t.tabList.forEach(e=>{e.panes.forEach(_=>{typeof _.name!="string"&&(_.name="")})})};return(e,_)=>{var p;const b=R;return o(),c("div",Q,[s("div",U,[s("h1",null,r(e.$t("welcome")),1),X,I?(o(),c("div",{key:0,class:"last-record",onClick:S},[s("a",null,r(e.$t("openInNewWindow")),1)])):h("",!0),s("div",Y,[(p=d(m))!=null&&p.tabs.length?(o(),c("a",{key:0,onClick:k($,["prevent"])},r(e.$t("restoreLastRecord")),9,Z)):h("",!0)]),s("a",J,r(e.$t("faq")),1)]),s("div",K,[d(z).length?(o(),c("div",ee,[s("h2",null,r(e.$t("walkMode")),1),s("ul",null,[(o(!0),c(v,null,g(d(z),n=>(o(),c("li",{key:n.dir,class:"quick-start__item"},[w(b,{onClick:y=>u("local",n.dir,!0),ghost:"",type:"primary",block:""},{default:F(()=>[M(r(n.zh),1)]),_:2},1032,["onClick"])]))),128))])])):h("",!0),d(t).autoCompletedDirList.length?(o(),c("div",te,[s("h2",null,r(e.$t("launchFromQuickMove")),1),s("ul",null,[(o(!0),c(v,null,g(d(t).autoCompletedDirList,n=>(o(),c("li",{key:n.key,class:"quick-start__item",onClick:k(y=>u("local",n.dir),["prevent"])},[s("span",ne,r(n.zh),1)],8,se))),128))])])):h("",!0),s("div",ae,[s("h2",null,r(e.$t("launch")),1),s("ul",null,[(o(!0),c(v,null,g(Object.keys(i),n=>(o(),c("li",{key:n,class:"quick-start__item",onClick:k(y=>u(n),["prevent"])},[s("span",ce,r(i[n]),1)],8,oe))),128))])]),d(t).recent.length?(o(),c("div",le,[s("h2",null,r(e.$t("recent")),1),s("ul",null,[(o(!0),c(v,null,g(d(t).recent,n=>(o(),c("li",{key:n.key,class:"quick-start__item",onClick:k(y=>u("local",n.path),["prevent"])},[w(d(A),{class:"quick-start__icon"}),s("span",ie,r(n.path),1)],8,re))),128))])])):h("",!0)])])}}});const _e=P(ue,[["__scopeId","data-v-4cfb5adf"]]);export{_e as default};
import{c as w,T as L,d as x,v as B,U as f,V as O,o,l as c,q as s,t as r,H as h,n as d,z as k,s as v,C as g,m as F,B as M,W as q,X as N,Y as V,Z as H,$ as j,R as P}from"./index-66a3e480.js";import{B as R}from"./button-aed742e0.js";var E={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM761 656h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-23.1-31.9a7.92 7.92 0 00-6.5-3.3H573c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.9-5.3.1-12.7-6.4-12.7zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z"}}]},name:"file-done",theme:"outlined"};const T=E;function D(a){for(var l=1;l<arguments.length;l++){var t=arguments[l]!=null?Object(arguments[l]):{},i=Object.keys(t);typeof Object.getOwnPropertySymbols=="function"&&(i=i.concat(Object.getOwnPropertySymbols(t).filter(function(u){return Object.getOwnPropertyDescriptor(t,u).enumerable}))),i.forEach(function(u){W(a,u,t[u])})}return a}function W(a,l,t){return l in a?Object.defineProperty(a,l,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[l]=t,a}var C=function(l,t){var i=D({},l,t.attrs);return w(L,D({},i,{icon:T}),null)};C.displayName="FileDoneOutlined";C.inheritAttrs=!1;const A=C,G=a=>(H("data-v-4cfb5adf"),a=a(),j(),a),Q={class:"container"},U={class:"header"},X=G(()=>s("div",{"flex-placeholder":""},null,-1)),Y={class:"last-record"},Z=["onClick"],J={href:"https://github.com/zanllp/sd-webui-infinite-image-browsing/issues/90",target:"_blank",class:"last-record"},K={class:"content"},ee={key:0,class:"quick-start"},te={key:1,class:"quick-start"},se=["onClick"],ne={class:"quick-start__text line-clamp-1"},ae={class:"quick-start"},oe=["onClick"],ce={class:"quick-start__text line-clamp-1"},le={key:2,class:"quick-start"},re=["onClick"],ie={class:"quick-start__text line-clamp-1"},ue=x({__name:"emptyStartup",props:{tabIdx:null,paneIdx:null},setup(a){const l=a,t=B(),i={local:f("local"),"tag-search":f("imgSearch"),"fuzzy-search":f("fuzzy-search"),"global-setting":f("globalSettings")},u=(e,_,b=!1)=>{let p;switch(e){case"tag-search-matched-image-grid":return;case"global-setting":case"tag-search":case"fuzzy-search":case"empty":p={type:e,name:i[e],key:Date.now()+q()};break;case"local":p={type:e,name:i[e],key:Date.now()+q(),path:_,walkMode:b}}const n=t.tabList[l.tabIdx];n.panes.splice(l.paneIdx,1,p),n.key=p.key},m=O(()=>{var e;return(e=t.lastTabListRecord)==null?void 0:e[1]});console.log(m.value);const z=O(()=>t.autoCompletedDirList.filter(({key:e})=>e==="outdir_txt2img_samples"||e==="outdir_img2img_samples")),I=window.parent!==window,S=()=>window.parent.open("/infinite_image_browsing"),$=()=>{N(m.value),t.tabList=m.value.tabs.map(e=>V(e,!0)),t.tabList.forEach(e=>{e.panes.forEach(_=>{typeof _.name!="string"&&(_.name="")})})};return(e,_)=>{var p;const b=R;return o(),c("div",Q,[s("div",U,[s("h1",null,r(e.$t("welcome")),1),X,I?(o(),c("div",{key:0,class:"last-record",onClick:S},[s("a",null,r(e.$t("openInNewWindow")),1)])):h("",!0),s("div",Y,[(p=d(m))!=null&&p.tabs.length?(o(),c("a",{key:0,onClick:k($,["prevent"])},r(e.$t("restoreLastRecord")),9,Z)):h("",!0)]),s("a",J,r(e.$t("faq")),1)]),s("div",K,[d(z).length?(o(),c("div",ee,[s("h2",null,r(e.$t("walkMode")),1),s("ul",null,[(o(!0),c(v,null,g(d(z),n=>(o(),c("li",{key:n.dir,class:"quick-start__item"},[w(b,{onClick:y=>u("local",n.dir,!0),ghost:"",type:"primary",block:""},{default:F(()=>[M(r(n.zh),1)]),_:2},1032,["onClick"])]))),128))])])):h("",!0),d(t).autoCompletedDirList.length?(o(),c("div",te,[s("h2",null,r(e.$t("launchFromQuickMove")),1),s("ul",null,[(o(!0),c(v,null,g(d(t).autoCompletedDirList,n=>(o(),c("li",{key:n.key,class:"quick-start__item",onClick:k(y=>u("local",n.dir),["prevent"])},[s("span",ne,r(n.zh),1)],8,se))),128))])])):h("",!0),s("div",ae,[s("h2",null,r(e.$t("launch")),1),s("ul",null,[(o(!0),c(v,null,g(Object.keys(i),n=>(o(),c("li",{key:n,class:"quick-start__item",onClick:k(y=>u(n),["prevent"])},[s("span",ce,r(i[n]),1)],8,oe))),128))])]),d(t).recent.length?(o(),c("div",le,[s("h2",null,r(e.$t("recent")),1),s("ul",null,[(o(!0),c(v,null,g(d(t).recent,n=>(o(),c("li",{key:n.key,class:"quick-start__item",onClick:k(y=>u("local",n.path),["prevent"])},[w(d(A),{class:"quick-start__icon"}),s("span",ie,r(n.path),1)],8,re))),128))])])):h("",!0)])])}}});const _e=P(ue,[["__scopeId","data-v-4cfb5adf"]]);export{_e as default};

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
import{r as l,ba as F,aO as S}from"./index-b3bde319.js";import{u as y,b as q,f as P,c as z,d as E,e as G,l as O}from"./fullScreenContextMenu-5fd8e001.js";const V=()=>{const e=l(),c=F(),n=l(),t={tabIdx:-1,target:"local",paneIdx:-1,walkMode:!1},{stackViewEl:r,multiSelectedIdxs:u,stack:m}=y().toRefs(),{itemSize:f,gridItems:v}=q(t),{showMenuIdx:p}=P();z();const{showGenInfo:I,imageGenInfo:d,q:w,onContextMenuClick:o,onFileItemClick:g}=E(t,{openNext:S}),{previewIdx:x,previewing:k,onPreviewVisibleChange:M,previewImgMove:h,canPreview:C}=G(t,{scroller:n,files:e}),b=async(a,s,i)=>{m.value=[{curr:"",files:e.value}],await o(a,s,i)};return O("removeFiles",async({paths:a})=>{var s;e.value=(s=e.value)==null?void 0:s.filter(i=>!a.includes(i.fullpath))}),{scroller:n,queue:c,images:e,onContextMenuClickU:b,stackViewEl:r,previewIdx:x,previewing:k,onPreviewVisibleChange:M,previewImgMove:h,canPreview:C,itemSize:f,gridItems:v,showGenInfo:I,imageGenInfo:d,q:w,onContextMenuClick:o,onFileItemClick:g,showMenuIdx:p,multiSelectedIdxs:u}};export{V as u};
import{r as l,ba as F,aO as S}from"./index-66a3e480.js";import{u as y,b as q,f as P,c as z,d as E,e as G,l as O}from"./fullScreenContextMenu-7ddf5342.js";const V=()=>{const e=l(),c=F(),n=l(),t={tabIdx:-1,target:"local",paneIdx:-1,walkMode:!1},{stackViewEl:r,multiSelectedIdxs:u,stack:m}=y().toRefs(),{itemSize:f,gridItems:v}=q(t),{showMenuIdx:p}=P();z();const{showGenInfo:I,imageGenInfo:d,q:w,onContextMenuClick:o,onFileItemClick:g}=E(t,{openNext:S}),{previewIdx:x,previewing:k,onPreviewVisibleChange:M,previewImgMove:h,canPreview:C}=G(t,{scroller:n,files:e}),b=async(a,s,i)=>{m.value=[{curr:"",files:e.value}],await o(a,s,i)};return O("removeFiles",async({paths:a})=>{var s;e.value=(s=e.value)==null?void 0:s.filter(i=>!a.includes(i.fullpath))}),{scroller:n,queue:c,images:e,onContextMenuClickU:b,stackViewEl:r,previewIdx:x,previewing:k,onPreviewVisibleChange:M,previewImgMove:h,canPreview:C,itemSize:f,gridItems:v,showGenInfo:I,imageGenInfo:d,q:w,onContextMenuClick:o,onFileItemClick:g,showMenuIdx:p,multiSelectedIdxs:u}};export{V as u};

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
import{cd as i}from"./index-b3bde319.js";var r=1/0,o=17976931348623157e292;function s(n){if(!n)return n===0?n:0;if(n=i(n),n===r||n===-r){var t=n<0?-1:1;return t*o}return n===n?n:0}function c(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}export{c as l,s as t};
import{cd as i}from"./index-66a3e480.js";var r=1/0,o=17976931348623157e292;function s(n){if(!n)return n===0?n:0;if(n=i(n),n===r||n===-r){var t=n<0?-1:1;return t*o}return n===n?n:0}function c(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}export{c as l,s as t};

View File

@ -1,4 +1,4 @@
import{i as Pe,I as P,t as Ie,f as Be,C as Oe,a as Fe,r as ie}from"./index-1b0cc4aa.js";import{d as Q,u as te,V as q,h as S,c as R,a as f,a5 as ce,P as Ne,r as F,_ as Ee,bh as $e,a9 as Te,a2 as ne,a8 as ae,a0 as je,a4 as U,w as Ve,x as _e,ae as J,ad as ke,b5 as De,bi as Le,bj as Ge,bk as Re,j as He,aB as Ue,i as ee,b as de,T as Ze,ao as Ye}from"./index-b3bde319.js";import{E as qe}from"./db-11105a55.js";import{i as Qe}from"./index-4de7cca2.js";import{B as We}from"./button-620860e4.js";const Xe=Q({compatConfig:{MODE:3},name:"AInputGroup",props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0},onMouseenter:{type:Function},onMouseleave:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},setup:function(e,n){var a=n.slots,c=te("input-group",e),b=c.prefixCls,m=c.direction,i=q(function(){var l,d=b.value;return l={},S(l,"".concat(d),!0),S(l,"".concat(d,"-lg"),e.size==="large"),S(l,"".concat(d,"-sm"),e.size==="small"),S(l,"".concat(d,"-compact"),e.compact),S(l,"".concat(d,"-rtl"),m.value==="rtl"),l});return function(){var l;return R("span",{class:i.value,onMouseenter:e.onMouseenter,onMouseleave:e.onMouseleave,onFocus:e.onFocus,onBlur:e.onBlur},[(l=a.default)===null||l===void 0?void 0:l.call(a)])}}});var oe=/iPhone/i,fe=/iPod/i,ge=/iPad/i,le=/\bAndroid(?:.+)Mobile\b/i,me=/Android/i,Z=/\bAndroid(?:.+)SD4930UR\b/i,K=/\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i,k=/Windows Phone/i,be=/\bWindows(?:.+)ARM\b/i,pe=/BlackBerry/i,he=/BB10/i,xe=/Opera Mini/i,ye=/\b(CriOS|Chrome)(?:.+)Mobile/i,Ce=/Mobile(?:.+)Firefox\b/i;function r(o,e){return o.test(e)}function ze(o){var e=o||(typeof navigator<"u"?navigator.userAgent:""),n=e.split("[FBAN");if(typeof n[1]<"u"){var a=n,c=ce(a,1);e=c[0]}if(n=e.split("Twitter"),typeof n[1]<"u"){var b=n,m=ce(b,1);e=m[0]}var i={apple:{phone:r(oe,e)&&!r(k,e),ipod:r(fe,e),tablet:!r(oe,e)&&r(ge,e)&&!r(k,e),device:(r(oe,e)||r(fe,e)||r(ge,e))&&!r(k,e)},amazon:{phone:r(Z,e),tablet:!r(Z,e)&&r(K,e),device:r(Z,e)||r(K,e)},android:{phone:!r(k,e)&&r(Z,e)||!r(k,e)&&r(le,e),tablet:!r(k,e)&&!r(Z,e)&&!r(le,e)&&(r(K,e)||r(me,e)),device:!r(k,e)&&(r(Z,e)||r(K,e)||r(le,e)||r(me,e))||r(/\bokhttp\b/i,e)},windows:{phone:r(k,e),tablet:r(be,e),device:r(k,e)||r(be,e)},other:{blackberry:r(pe,e),blackberry10:r(he,e),opera:r(xe,e),firefox:r(Ce,e),chrome:r(ye,e),device:r(pe,e)||r(he,e)||r(xe,e)||r(Ce,e)||r(ye,e)},any:null,phone:null,tablet:null};return i.any=i.apple.device||i.android.device||i.windows.device||i.other.device,i.phone=i.apple.phone||i.android.phone||i.windows.phone,i.tablet=i.apple.tablet||i.android.tablet||i.windows.tablet,i}var Ke=f(f({},ze()),{},{isMobile:ze});const Je=Ke;var et=["disabled","loading","addonAfter","suffix"];const tt=Q({compatConfig:{MODE:3},name:"AInputSearch",inheritAttrs:!1,props:f(f({},Pe()),{},{inputPrefixCls:String,enterButton:Ne.any,onSearch:{type:Function}}),setup:function(e,n){var a=n.slots,c=n.attrs,b=n.expose,m=n.emit,i=F(),l=function(){var u;(u=i.value)===null||u===void 0||u.focus()},d=function(){var u;(u=i.value)===null||u===void 0||u.blur()};b({focus:l,blur:d});var y=function(u){m("update:value",u.target.value),u&&u.target&&u.type==="click"&&m("search",u.target.value,u),m("change",u)},p=function(u){var C;document.activeElement===((C=i.value)===null||C===void 0?void 0:C.input)&&u.preventDefault()},A=function(u){var C;m("search",(C=i.value)===null||C===void 0?void 0:C.stateValue,u),Je.tablet||i.value.focus()},I=te("input-search",e),E=I.prefixCls,j=I.getPrefixCls,N=I.direction,w=I.size,s=q(function(){return j("input",e.inputPrefixCls)});return function(){var g,u,C,M,_,B=e.disabled,$=e.loading,G=e.addonAfter,V=G===void 0?(g=a.addonAfter)===null||g===void 0?void 0:g.call(a):G,W=e.suffix,X=W===void 0?(u=a.suffix)===null||u===void 0?void 0:u.call(a):W,re=Ee(e,et),h=e.enterButton,t=h===void 0?(C=(M=a.enterButton)===null||M===void 0?void 0:M.call(a))!==null&&C!==void 0?C:!1:h;t=t||t==="";var v=typeof t=="boolean"?R($e,null,null):null,x="".concat(E.value,"-button"),z=Array.isArray(t)?t[0]:t,T,H=z.type&&Qe(z.type)&&z.type.__ANT_BUTTON;if(H||z.tagName==="button")T=Te(z,f({onMousedown:p,onClick:A,key:"enterButton"},H?{class:x,size:w.value}:{}),!1);else{var D=v&&!t;T=R(We,{class:x,type:t?"primary":void 0,size:w.value,disabled:B,key:"enterButton",onMousedown:p,onClick:A,loading:$,icon:D?v:null},{default:function(){return[D?null:v||t]}})}V&&(T=[T,V]);var L=ne(E.value,(_={},S(_,"".concat(E.value,"-rtl"),N.value==="rtl"),S(_,"".concat(E.value,"-").concat(w.value),!!w.value),S(_,"".concat(E.value,"-with-button"),!!t),_),c.class);return R(P,f(f(f({ref:i},ae(re,["onUpdate:value","onSearch","enterButton"])),c),{},{onPressEnter:A,size:w.value,prefixCls:s.value,addonAfter:T,suffix:X,onChange:y,class:L,disabled:B}),a)}}});var nt=`
import{i as Pe,I as P,t as Ie,f as Be,C as Oe,a as Fe,r as ie}from"./index-8b5bf348.js";import{d as Q,u as te,V as q,h as S,c as R,a as f,a5 as ce,P as Ne,r as F,_ as Ee,bh as $e,a9 as Te,a2 as ne,a8 as ae,a0 as je,a4 as U,w as Ve,x as _e,ae as J,ad as ke,b5 as De,bi as Le,bj as Ge,bk as Re,j as He,aB as Ue,i as ee,b as de,T as Ze,ao as Ye}from"./index-66a3e480.js";import{E as qe}from"./db-e470e247.js";import{i as Qe}from"./index-ba7adffa.js";import{B as We}from"./button-aed742e0.js";const Xe=Q({compatConfig:{MODE:3},name:"AInputGroup",props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0},onMouseenter:{type:Function},onMouseleave:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},setup:function(e,n){var a=n.slots,c=te("input-group",e),b=c.prefixCls,m=c.direction,i=q(function(){var l,d=b.value;return l={},S(l,"".concat(d),!0),S(l,"".concat(d,"-lg"),e.size==="large"),S(l,"".concat(d,"-sm"),e.size==="small"),S(l,"".concat(d,"-compact"),e.compact),S(l,"".concat(d,"-rtl"),m.value==="rtl"),l});return function(){var l;return R("span",{class:i.value,onMouseenter:e.onMouseenter,onMouseleave:e.onMouseleave,onFocus:e.onFocus,onBlur:e.onBlur},[(l=a.default)===null||l===void 0?void 0:l.call(a)])}}});var oe=/iPhone/i,fe=/iPod/i,ge=/iPad/i,le=/\bAndroid(?:.+)Mobile\b/i,me=/Android/i,Z=/\bAndroid(?:.+)SD4930UR\b/i,K=/\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i,k=/Windows Phone/i,be=/\bWindows(?:.+)ARM\b/i,pe=/BlackBerry/i,he=/BB10/i,xe=/Opera Mini/i,ye=/\b(CriOS|Chrome)(?:.+)Mobile/i,Ce=/Mobile(?:.+)Firefox\b/i;function r(o,e){return o.test(e)}function ze(o){var e=o||(typeof navigator<"u"?navigator.userAgent:""),n=e.split("[FBAN");if(typeof n[1]<"u"){var a=n,c=ce(a,1);e=c[0]}if(n=e.split("Twitter"),typeof n[1]<"u"){var b=n,m=ce(b,1);e=m[0]}var i={apple:{phone:r(oe,e)&&!r(k,e),ipod:r(fe,e),tablet:!r(oe,e)&&r(ge,e)&&!r(k,e),device:(r(oe,e)||r(fe,e)||r(ge,e))&&!r(k,e)},amazon:{phone:r(Z,e),tablet:!r(Z,e)&&r(K,e),device:r(Z,e)||r(K,e)},android:{phone:!r(k,e)&&r(Z,e)||!r(k,e)&&r(le,e),tablet:!r(k,e)&&!r(Z,e)&&!r(le,e)&&(r(K,e)||r(me,e)),device:!r(k,e)&&(r(Z,e)||r(K,e)||r(le,e)||r(me,e))||r(/\bokhttp\b/i,e)},windows:{phone:r(k,e),tablet:r(be,e),device:r(k,e)||r(be,e)},other:{blackberry:r(pe,e),blackberry10:r(he,e),opera:r(xe,e),firefox:r(Ce,e),chrome:r(ye,e),device:r(pe,e)||r(he,e)||r(xe,e)||r(Ce,e)||r(ye,e)},any:null,phone:null,tablet:null};return i.any=i.apple.device||i.android.device||i.windows.device||i.other.device,i.phone=i.apple.phone||i.android.phone||i.windows.phone,i.tablet=i.apple.tablet||i.android.tablet||i.windows.tablet,i}var Ke=f(f({},ze()),{},{isMobile:ze});const Je=Ke;var et=["disabled","loading","addonAfter","suffix"];const tt=Q({compatConfig:{MODE:3},name:"AInputSearch",inheritAttrs:!1,props:f(f({},Pe()),{},{inputPrefixCls:String,enterButton:Ne.any,onSearch:{type:Function}}),setup:function(e,n){var a=n.slots,c=n.attrs,b=n.expose,m=n.emit,i=F(),l=function(){var u;(u=i.value)===null||u===void 0||u.focus()},d=function(){var u;(u=i.value)===null||u===void 0||u.blur()};b({focus:l,blur:d});var y=function(u){m("update:value",u.target.value),u&&u.target&&u.type==="click"&&m("search",u.target.value,u),m("change",u)},p=function(u){var C;document.activeElement===((C=i.value)===null||C===void 0?void 0:C.input)&&u.preventDefault()},A=function(u){var C;m("search",(C=i.value)===null||C===void 0?void 0:C.stateValue,u),Je.tablet||i.value.focus()},I=te("input-search",e),E=I.prefixCls,j=I.getPrefixCls,N=I.direction,w=I.size,s=q(function(){return j("input",e.inputPrefixCls)});return function(){var g,u,C,M,_,B=e.disabled,$=e.loading,G=e.addonAfter,V=G===void 0?(g=a.addonAfter)===null||g===void 0?void 0:g.call(a):G,W=e.suffix,X=W===void 0?(u=a.suffix)===null||u===void 0?void 0:u.call(a):W,re=Ee(e,et),h=e.enterButton,t=h===void 0?(C=(M=a.enterButton)===null||M===void 0?void 0:M.call(a))!==null&&C!==void 0?C:!1:h;t=t||t==="";var v=typeof t=="boolean"?R($e,null,null):null,x="".concat(E.value,"-button"),z=Array.isArray(t)?t[0]:t,T,H=z.type&&Qe(z.type)&&z.type.__ANT_BUTTON;if(H||z.tagName==="button")T=Te(z,f({onMousedown:p,onClick:A,key:"enterButton"},H?{class:x,size:w.value}:{}),!1);else{var D=v&&!t;T=R(We,{class:x,type:t?"primary":void 0,size:w.value,disabled:B,key:"enterButton",onMousedown:p,onClick:A,loading:$,icon:D?v:null},{default:function(){return[D?null:v||t]}})}V&&(T=[T,V]);var L=ne(E.value,(_={},S(_,"".concat(E.value,"-rtl"),N.value==="rtl"),S(_,"".concat(E.value,"-").concat(w.value),!!w.value),S(_,"".concat(E.value,"-with-button"),!!t),_),c.class);return R(P,f(f(f({ref:i},ae(re,["onUpdate:value","onSearch","enterButton"])),c),{},{onPressEnter:A,size:w.value,prefixCls:s.value,addonAfter:T,suffix:X,onChange:y,class:L,disabled:B}),a)}}});var nt=`
min-height:0 !important;
max-height:none !important;
height:0 !important;

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{aP as n,bl as c,bm as a}from"./index-b3bde319.js";var i="[object Object]",s=Function.prototype,b=Object.prototype,e=s.toString,p=b.hasOwnProperty,f=e.call(Object);function j(o){if(!n(o)||c(o)!=i)return!1;var r=a(o);if(r===null)return!0;var t=p.call(r,"constructor")&&r.constructor;return typeof t=="function"&&t instanceof t&&e.call(t)==f}export{j as i};
import{aP as n,bl as c,bm as a}from"./index-66a3e480.js";var i="[object Object]",s=Function.prototype,b=Object.prototype,e=s.toString,p=b.hasOwnProperty,f=e.call(Object);function j(o){if(!n(o)||c(o)!=i)return!1;var r=a(o);if(r===null)return!0;var t=p.call(r,"constructor")&&r.constructor;return typeof t=="function"&&t instanceof t&&e.call(t)==f}export{j as i};

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>Vite App</title>
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-b3bde319.js"></script>
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-66a3e480.js"></script>
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-050489b7.css">
</head>

View File

@ -3,13 +3,33 @@ import axios, { isAxiosError } from 'axios'
import type { GlobalSettingPart } from './type'
import { t } from '@/i18n'
import type { Tag } from './db'
import cookie from 'js-cookie'
import { delay } from 'vue3-ts-util'
export const axiosInst = axios.create({
baseURL: '/infinite_image_browsing'
})
async function hash(data: string) {
const digest = await window.crypto.subtle.digest('SHA-256', new TextEncoder().encode(data))
const hashHex = Array.prototype.map
.call(new Uint8Array(digest), (x) => ('00' + x.toString(16)).slice(-2))
.join('')
return hashHex
}
axiosInst.interceptors.response.use(
(resp) => resp,
(err) => {
async (err) => {
if (isAxiosError(err)) {
if (err.response?.status === 401) {
const key = prompt(t('serverKeyRequired'))
if (!key) {
return
}
cookie.set('IIB_S', await hash(key + '_ciallo'))
await delay(100)
location.reload()
}
const errmsg = err.response?.data?.detail ?? t('errorOccurred')
message.error(errmsg)
throw new Error(errmsg)
@ -54,7 +74,6 @@ export const getImageGenerationInfo = async (path: string) => {
return (await axiosInst.get(`/image_geninfo?path=${encodeURIComponent(path)}`)).data as string
}
export const openFolder = async (path: string) => {
await axiosInst.post('/open_folder', { path })
}
}

View File

@ -130,8 +130,10 @@ const zh = {
"openWithLocalFileBrowser": "使用本地文件浏览器打开",
addToSearchScanPathAndQuickMove: '添加到搜索扫描路径和快速移动',
removeFromSearchScanPathAndQuickMove: '从搜索扫描路径和快速移动中移除',
serverKeyRequired: "服务器配置了密匙,你必须提供相同的密匙才能继续使用"
}
const en: Record<keyof typeof zh, string> = {
serverKeyRequired: "The server has configured a key. You must provide the same key to continue using it.",
removeFromSearchScanPathAndQuickMove: 'Remove from Search Scan Path and Quick Move',
addToSearchScanPathAndQuickMove: 'Add to Search Scan Path and Quick Move',
"openWithLocalFileBrowser": "Open with Local File Browser",
@ -268,7 +270,7 @@ const en: Record<keyof typeof zh, string> = {
}
const de: Record<keyof typeof zh, string> = {
const de: Partial<Record<keyof typeof zh, string>> = {
removeFromSearchScanPathAndQuickMove: "Schnellzugriff entfernen",
addToSearchScanPathAndQuickMove: "Schnellzugriff hinzufügen",
"openWithLocalFileBrowser": "Im lokalen Dateimanager öffnen",