Add support for multiple view types for the same path
parent
623451d32b
commit
2d096ba2ff
|
|
@ -13,7 +13,7 @@ Promise.resolve().then(async () => {
|
|||
<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-1489ccf0.js"></script>
|
||||
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-c4181c0f.js"></script>
|
||||
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-f6de8b10.css">
|
||||
</head>
|
||||
|
||||
|
|
|
|||
|
|
@ -257,7 +257,7 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs):
|
|||
conn = DataBase.get_conn()
|
||||
all_custom_tags = Tag.get_all_custom_tag(conn)
|
||||
extra_paths = ExtraPath.get_extra_paths(conn) + [
|
||||
ExtraPath(path, ExtraPathType.cli_only)
|
||||
ExtraPath(path, ExtraPathType.cli_only.value)
|
||||
for path in kwargs.get("extra_paths_cli", [])
|
||||
]
|
||||
update_extra_paths(conn)
|
||||
|
|
@ -928,7 +928,7 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs):
|
|||
|
||||
class ExtraPathModel(BaseModel):
|
||||
path: str
|
||||
type: Optional[ExtraPathType]
|
||||
types: List[str]
|
||||
|
||||
@app.post(
|
||||
f"{db_api_base}/extra_paths",
|
||||
|
|
@ -939,7 +939,13 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs):
|
|||
if not is_path_under_parents(extra_path.path):
|
||||
raise HTTPException(status_code=403)
|
||||
conn = DataBase.get_conn()
|
||||
path = ExtraPath(extra_path.path, extra_path.type)
|
||||
path = ExtraPath.get_target_path(conn, extra_path.path)
|
||||
if path:
|
||||
for t in extra_path.types:
|
||||
path.types.append(t)
|
||||
path.types = unique_by(path.types)
|
||||
else:
|
||||
path = ExtraPath(extra_path.path, extra_path.types)
|
||||
try:
|
||||
path.save(conn)
|
||||
finally:
|
||||
|
|
@ -960,7 +966,7 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs):
|
|||
async def delete_extra_path(extra_path: ExtraPathModel):
|
||||
path = to_abs_path(extra_path.path)
|
||||
conn = DataBase.get_conn()
|
||||
ExtraPath.remove(conn, path, extra_path.type, img_search_dirs=get_img_search_dirs())
|
||||
ExtraPath.remove(conn, path, extra_path.types, img_search_dirs=get_img_search_dirs())
|
||||
|
||||
|
||||
@app.post(
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from sqlite3 import Connection, connect
|
||||
from enum import Enum
|
||||
from typing import Dict, List, Optional, TypedDict
|
||||
from typing import Dict, List, Optional, TypedDict, Union
|
||||
from scripts.iib.tool import (
|
||||
cwd,
|
||||
get_modified_date,
|
||||
|
|
@ -626,28 +626,25 @@ class ExtraPathType(Enum):
|
|||
|
||||
|
||||
class ExtraPath:
|
||||
def __init__(self, path: str, type: Optional[ExtraPathType] = None):
|
||||
assert type
|
||||
def __init__(self, path: str, types: Union[str, List[str]]):
|
||||
self.path = os.path.normpath(path)
|
||||
self.type = type
|
||||
self.types = types.split('+') if isinstance(types, str) else types
|
||||
|
||||
def save(self, conn):
|
||||
assert self.type in [ExtraPathType.walk, ExtraPathType.scanned]
|
||||
type_str = '+'.join(self.types)
|
||||
for type in self.types:
|
||||
assert type in [ExtraPathType.walk.value, ExtraPathType.scanned.value]
|
||||
with closing(conn.cursor()) as cur:
|
||||
cur.execute(
|
||||
"INSERT INTO extra_path (path, type) VALUES (?, ?) ON CONFLICT (path) DO UPDATE SET type = ?",
|
||||
(self.path, self.type.value, self.type.value),
|
||||
(self.path, type_str, type_str),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_extra_paths(
|
||||
cls, conn, type: Optional[ExtraPathType] = None
|
||||
) -> List["ExtraPath"]:
|
||||
query = "SELECT * FROM extra_path"
|
||||
params = ()
|
||||
if type:
|
||||
query += " WHERE type = ?"
|
||||
params = (type.value,)
|
||||
def get_target_path(cls, conn, path) -> Optional['ExtraPath']:
|
||||
path = os.path.normpath(path)
|
||||
query = f"SELECT * FROM extra_path where path = ?"
|
||||
params = (path,)
|
||||
with closing(conn.cursor()) as cur:
|
||||
cur.execute(query, params)
|
||||
rows = cur.fetchall()
|
||||
|
|
@ -655,7 +652,22 @@ class ExtraPath:
|
|||
for row in rows:
|
||||
path = row[0]
|
||||
if os.path.exists(path):
|
||||
paths.append(ExtraPath(path, ExtraPathType(row[1])))
|
||||
paths.append(ExtraPath(path, row[1]))
|
||||
else:
|
||||
cls.remove(conn, path)
|
||||
return paths[0] if paths else None
|
||||
|
||||
@classmethod
|
||||
def get_extra_paths(cls, conn) -> List["ExtraPath"]:
|
||||
query = "SELECT * FROM extra_path"
|
||||
with closing(conn.cursor()) as cur:
|
||||
cur.execute(query)
|
||||
rows = cur.fetchall()
|
||||
paths: List[ExtraPath] = []
|
||||
for row in rows:
|
||||
path = row[0]
|
||||
if os.path.exists(path):
|
||||
paths.append(ExtraPath(path, row[1]))
|
||||
else:
|
||||
cls.remove(conn, path)
|
||||
return paths
|
||||
|
|
@ -665,13 +677,25 @@ class ExtraPath:
|
|||
cls,
|
||||
conn,
|
||||
path: str,
|
||||
type: Optional[ExtraPathType] = None,
|
||||
types: List[str] = None,
|
||||
img_search_dirs: Optional[List[str]] = [],
|
||||
):
|
||||
with closing(conn.cursor()) as cur:
|
||||
sql = "DELETE FROM extra_path WHERE path = ?"
|
||||
path = os.path.normpath(path)
|
||||
cur.execute(sql, (path,))
|
||||
target = cls.get_target_path(conn, path)
|
||||
if not target:
|
||||
return
|
||||
new_types = []
|
||||
for type in target.types:
|
||||
if type not in types:
|
||||
new_types.append(type)
|
||||
if new_types:
|
||||
target.types = new_types
|
||||
target.save(conn)
|
||||
else:
|
||||
sql = "DELETE FROM extra_path WHERE path = ?"
|
||||
cur.execute(sql, (path,))
|
||||
|
||||
if path not in img_search_dirs:
|
||||
Folder.remove_folder(conn, path)
|
||||
conn.commit()
|
||||
|
|
|
|||
|
|
@ -49,6 +49,8 @@ def backup_db_file(db_file_path):
|
|||
if not os.path.exists(db_file_path):
|
||||
return
|
||||
max_backup_count = int(os.environ.get('IIB_DB_FILE_BACKUP_MAX', '20'))
|
||||
if max_backup_count <= 1:
|
||||
return
|
||||
backup_folder = os.path.join(cwd,'iib_db_backup')
|
||||
current_time = datetime.now()
|
||||
timestamp = current_time.strftime('%Y-%m-%d %H-%M-%S')
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ declare module '@vue/runtime-core' {
|
|||
ATabs: typeof import('ant-design-vue/es')['Tabs']
|
||||
ATag: typeof import('ant-design-vue/es')['Tag']
|
||||
ATextarea: typeof import('ant-design-vue/es')['Textarea']
|
||||
ATooltip: typeof import('ant-design-vue/es')['Tooltip']
|
||||
BaseFileListInfo: typeof import('./src/components/BaseFileListInfo.vue')['default']
|
||||
ChangeIndicator: typeof import('./src/components/ChangeIndicator.vue')['default']
|
||||
ContextMenu: typeof import('./src/components/ContextMenu.vue')['default']
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{d as a,o as t,k as s,c as n,cc as _,q as o}from"./index-1489ccf0.js";const c={class:"img-sli-container"},i=a({__name:"ImgSliPagePane",props:{paneIdx:{},tabIdx:{},left:{},right:{}},setup(l){return(e,r)=>(t(),s("div",c,[n(_,{left:e.left,right:e.right},null,8,["left","right"])]))}});const d=o(i,[["__scopeId","data-v-ae3fb9a8"]]);export{d as default};
|
||||
import{d as a,o as t,k as s,c as n,cc as _,q as o}from"./index-c4181c0f.js";const c={class:"img-sli-container"},i=a({__name:"ImgSliPagePane",props:{paneIdx:{},tabIdx:{},left:{},right:{}},setup(l){return(e,r)=>(t(),s("div",c,[n(_,{left:e.left,right:e.right},null,8,["left","right"])]))}});const d=o(i,[["__scopeId","data-v-ae3fb9a8"]]);export{d as default};
|
||||
|
|
@ -1 +1 @@
|
|||
import{d as se,s as ne,a4 as oe,r as ie,o as u,k as I,c as s,B as e,A as n,E as R,l as d,G as ae,t as a,m as p,z as V,Q as de,p as k,R as z,U as re,V as ce,Y as B,am as ue,an as me,bC as pe,q as ge}from"./index-1489ccf0.js";import{L as ve,R as fe,f as Ie,M as ke,S as _e}from"./MultiSelectKeep-8cc6a9d3.js";import{g as Ce,h as he,F as we}from"./FileItem-5a479398.js";import{c as Se,u as xe}from"./hook-f26e01fd.js";import{o as be}from"./functionalCallableComp-215f3be5.js";import"./index-efa83f46.js";import"./index-fbf51be6.js";const Me=r=>(ue("data-v-479efe51"),r=r(),me(),r),ye={class:"hint"},Ae={class:"action-bar"},Te=Me(()=>d("div",{style:{padding:"16px 0 512px"}},null,-1)),$e={key:1},Fe={class:"no-res-hint"},Re={class:"hint"},Ve={key:2,class:"preview-switch"},ze=se({__name:"MatchedImageGrid",props:{tabIdx:{},paneIdx:{},selectedTagIds:{},id:{}},setup(r){const _=r,g=Se(l=>pe(_.selectedTagIds,l)),{queue:D,images:i,onContextMenuClickU:C,stackViewEl:G,previewIdx:c,previewing:h,onPreviewVisibleChange:E,previewImgMove:w,canPreview:S,itemSize:x,gridItems:N,showGenInfo:m,imageGenInfo:b,q:U,multiSelectedIdxs:v,onFileItemClick:J,scroller:M,showMenuIdx:f,onFileDragStart:L,onFileDragEnd:P,cellWidth:q,onScroll:y,saveAllFileAsJson:K,saveLoadedFileAsJson:O}=xe(g);ne(()=>_.selectedTagIds,async()=>{var l;await g.reset(),await oe(),(l=M.value)==null||l.scrollToItem(0),y()},{immediate:!0});const Q=ie(),{onClearAllSelected:W,onSelectAll:Y,onReverseSelect:j}=Ce();return(l,t)=>{const H=ke,X=re,Z=ce,A=B,ee=B,te=_e;return u(),I("div",{class:"container",ref_key:"stackViewEl",ref:G},[s(H,{show:!!e(v).length||e(Q).keepMultiSelect,onClearAllSelected:e(W),onSelectAll:e(Y),onReverseSelect:e(j)},null,8,["show","onClearAllSelected","onSelectAll","onReverseSelect"]),s(te,{size:"large",spinning:!e(D).isIdle},{default:n(()=>{var T,$;return[s(Z,{visible:e(m),"onUpdate:visible":t[1]||(t[1]=o=>R(m)?m.value=o:null),width:"70vw","mask-closable":"",onOk:t[2]||(t[2]=o=>m.value=!1)},{cancelText:n(()=>[]),default:n(()=>[s(X,{active:"",loading:!e(U).isIdle},{default:n(()=>[d("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:t[0]||(t[0]=o=>e(ae)(e(b)))},[d("div",ye,a(l.$t("doubleClickToCopy")),1),p(" "+a(e(b)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),d("div",Ae,[s(A,{onClick:e(O)},{default:n(()=>[p(a(l.$t("saveLoadedImageAsJson")),1)]),_:1},8,["onClick"]),s(A,{onClick:e(K)},{default:n(()=>[p(a(l.$t("saveAllAsJson")),1)]),_:1},8,["onClick"])]),(T=e(i))!=null&&T.length?(u(),V(e(he),{key:0,ref_key:"scroller",ref:M,class:"file-list",items:e(i),"item-size":e(x).first,"key-field":"fullpath","item-secondary-size":e(x).second,gridItems:e(N),onScroll:e(y)},{after:n(()=>[Te]),default:n(({item:o,index:F})=>[s(we,{idx:F,file:o,"cell-width":e(q),"show-menu-idx":e(f),"onUpdate:showMenuIdx":t[3]||(t[3]=le=>R(f)?f.value=le:null),onDragstart:e(L),onDragend:e(P),onFileItemClick:e(J),"full-screen-preview-image-url":e(i)[e(c)]?e(de)(e(i)[e(c)]):"",selected:e(v).includes(F),onContextMenuClick:e(C),onPreviewVisibleChange:e(E),"is-selected-mutil-files":e(v).length>1},null,8,["idx","file","cell-width","show-menu-idx","onDragstart","onDragend","onFileItemClick","full-screen-preview-image-url","selected","onContextMenuClick","onPreviewVisibleChange","is-selected-mutil-files"])]),_:1},8,["items","item-size","item-secondary-size","gridItems","onScroll"])):e(g).load&&l.selectedTagIds.and_tags.length===1&&!(($=l.selectedTagIds.folder_paths_str)!=null&&$.trim())?(u(),I("div",$e,[d("div",Fe,[d("p",Re,a(l.$t("tagSearchNoResultsMessage")),1),s(ee,{onClick:t[4]||(t[4]=o=>e(be)()),type:"primary"},{default:n(()=>[p(a(l.$t("rebuildImageIndex")),1)]),_:1})])])):k("",!0),e(h)?(u(),I("div",Ve,[s(e(ve),{onClick:t[5]||(t[5]=o=>e(w)("prev")),class:z({disable:!e(S)("prev")})},null,8,["class"]),s(e(fe),{onClick:t[6]||(t[6]=o=>e(w)("next")),class:z({disable:!e(S)("next")})},null,8,["class"])])):k("",!0)]}),_:1},8,["spinning"]),e(h)&&e(i)&&e(i)[e(c)]?(u(),V(Ie,{key:0,file:e(i)[e(c)],idx:e(c),onContextMenuClick:e(C)},null,8,["file","idx","onContextMenuClick"])):k("",!0)],512)}}});const Le=ge(ze,[["__scopeId","data-v-479efe51"]]);export{Le as default};
|
||||
import{d as se,s as ne,a3 as oe,r as ie,o as u,k as I,c as s,B as e,A as n,E as R,l as d,G as ae,t as a,m as p,z as V,Q as de,p as k,R as z,U as re,V as ce,X as B,al as ue,am as me,bC as pe,q as ge}from"./index-c4181c0f.js";import{L as ve,R as fe,f as Ie,M as ke,S as _e}from"./MultiSelectKeep-0e1cecb1.js";import{g as Ce,h as he,F as we}from"./FileItem-fc7e9818.js";import{c as Se,u as xe}from"./hook-5cbaf7d6.js";import{o as be}from"./functionalCallableComp-16169d47.js";import"./index-41b95b36.js";import"./index-a5bd3ccb.js";const Me=r=>(ue("data-v-479efe51"),r=r(),me(),r),ye={class:"hint"},Ae={class:"action-bar"},Te=Me(()=>d("div",{style:{padding:"16px 0 512px"}},null,-1)),$e={key:1},Fe={class:"no-res-hint"},Re={class:"hint"},Ve={key:2,class:"preview-switch"},ze=se({__name:"MatchedImageGrid",props:{tabIdx:{},paneIdx:{},selectedTagIds:{},id:{}},setup(r){const _=r,g=Se(l=>pe(_.selectedTagIds,l)),{queue:D,images:i,onContextMenuClickU:C,stackViewEl:G,previewIdx:c,previewing:h,onPreviewVisibleChange:E,previewImgMove:w,canPreview:S,itemSize:x,gridItems:N,showGenInfo:m,imageGenInfo:b,q:U,multiSelectedIdxs:v,onFileItemClick:J,scroller:M,showMenuIdx:f,onFileDragStart:L,onFileDragEnd:P,cellWidth:q,onScroll:y,saveAllFileAsJson:K,saveLoadedFileAsJson:O}=xe(g);ne(()=>_.selectedTagIds,async()=>{var l;await g.reset(),await oe(),(l=M.value)==null||l.scrollToItem(0),y()},{immediate:!0});const Q=ie(),{onClearAllSelected:W,onSelectAll:X,onReverseSelect:j}=Ce();return(l,t)=>{const H=ke,Y=re,Z=ce,A=B,ee=B,te=_e;return u(),I("div",{class:"container",ref_key:"stackViewEl",ref:G},[s(H,{show:!!e(v).length||e(Q).keepMultiSelect,onClearAllSelected:e(W),onSelectAll:e(X),onReverseSelect:e(j)},null,8,["show","onClearAllSelected","onSelectAll","onReverseSelect"]),s(te,{size:"large",spinning:!e(D).isIdle},{default:n(()=>{var T,$;return[s(Z,{visible:e(m),"onUpdate:visible":t[1]||(t[1]=o=>R(m)?m.value=o:null),width:"70vw","mask-closable":"",onOk:t[2]||(t[2]=o=>m.value=!1)},{cancelText:n(()=>[]),default:n(()=>[s(Y,{active:"",loading:!e(U).isIdle},{default:n(()=>[d("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:t[0]||(t[0]=o=>e(ae)(e(b)))},[d("div",ye,a(l.$t("doubleClickToCopy")),1),p(" "+a(e(b)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),d("div",Ae,[s(A,{onClick:e(O)},{default:n(()=>[p(a(l.$t("saveLoadedImageAsJson")),1)]),_:1},8,["onClick"]),s(A,{onClick:e(K)},{default:n(()=>[p(a(l.$t("saveAllAsJson")),1)]),_:1},8,["onClick"])]),(T=e(i))!=null&&T.length?(u(),V(e(he),{key:0,ref_key:"scroller",ref:M,class:"file-list",items:e(i),"item-size":e(x).first,"key-field":"fullpath","item-secondary-size":e(x).second,gridItems:e(N),onScroll:e(y)},{after:n(()=>[Te]),default:n(({item:o,index:F})=>[s(we,{idx:F,file:o,"cell-width":e(q),"show-menu-idx":e(f),"onUpdate:showMenuIdx":t[3]||(t[3]=le=>R(f)?f.value=le:null),onDragstart:e(L),onDragend:e(P),onFileItemClick:e(J),"full-screen-preview-image-url":e(i)[e(c)]?e(de)(e(i)[e(c)]):"",selected:e(v).includes(F),onContextMenuClick:e(C),onPreviewVisibleChange:e(E),"is-selected-mutil-files":e(v).length>1},null,8,["idx","file","cell-width","show-menu-idx","onDragstart","onDragend","onFileItemClick","full-screen-preview-image-url","selected","onContextMenuClick","onPreviewVisibleChange","is-selected-mutil-files"])]),_:1},8,["items","item-size","item-secondary-size","gridItems","onScroll"])):e(g).load&&l.selectedTagIds.and_tags.length===1&&!(($=l.selectedTagIds.folder_paths_str)!=null&&$.trim())?(u(),I("div",$e,[d("div",Fe,[d("p",Re,a(l.$t("tagSearchNoResultsMessage")),1),s(ee,{onClick:t[4]||(t[4]=o=>e(be)()),type:"primary"},{default:n(()=>[p(a(l.$t("rebuildImageIndex")),1)]),_:1})])])):k("",!0),e(h)?(u(),I("div",Ve,[s(e(ve),{onClick:t[5]||(t[5]=o=>e(w)("prev")),class:z({disable:!e(S)("prev")})},null,8,["class"]),s(e(fe),{onClick:t[6]||(t[6]=o=>e(w)("next")),class:z({disable:!e(S)("next")})},null,8,["class"])])):k("",!0)]}),_:1},8,["spinning"]),e(h)&&e(i)&&e(i)[e(c)]?(u(),V(Ie,{key:0,file:e(i)[e(c)],idx:e(c),onContextMenuClick:e(C)},null,8,["file","idx","onContextMenuClick"])):k("",!0)],512)}}});const Le=ge(ze,[["__scopeId","data-v-479efe51"]]);export{Le as default};
|
||||
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
|
|
@ -1 +1 @@
|
|||
import{d as v,cd as C,bN as I,o as i,k as _,l as f,c,A as r,m as h,t as d,B as e,z,Q as B,ce as F,cf as x,Y as $,q as R}from"./index-1489ccf0.js";import{u as S,b as A,k as E,F as V,h as N}from"./FileItem-5a479398.js";import"./functionalCallableComp-215f3be5.js";import"./index-fbf51be6.js";import"./index-efa83f46.js";const T={class:"actions-panel actions"},L={key:0,class:"file-list"},U={class:"hint"},q=v({__name:"batchDownload",props:{tabIdx:{},paneIdx:{},id:{}},setup(H){const{stackViewEl:k}=S().toRefs(),{itemSize:p,gridItems:w,cellWidth:b}=A(),n=E(),{selectdFiles:l}=C(n),m=I(),y=async t=>{const s=F(t);s&&n.addFiles(s.nodes)},D=async()=>{m.pushAction(async()=>{const t=await x.value.post("/zip",{paths:l.value.map(o=>o.fullpath)},{responseType:"blob"}),s=window.URL.createObjectURL(new Blob([t.data])),a=document.createElement("a");a.href=s,a.setAttribute("download",`iib_${new Date().toLocaleString()}.zip`),document.body.appendChild(a),a.click()})},g=t=>{l.value.splice(t,1)};return(t,s)=>{const a=$;return i(),_("div",{class:"container",ref_key:"stackViewEl",ref:k,onDrop:y},[f("div",T,[c(a,{onClick:s[0]||(s[0]=o=>e(n).selectdFiles=[])},{default:r(()=>[h(d(t.$t("clear")),1)]),_:1}),c(a,{onClick:D,type:"primary",loading:!e(m).isIdle},{default:r(()=>[h(d(t.$t("zipDownload")),1)]),_:1},8,["loading"])]),e(l).length?(i(),z(e(N),{key:1,ref:"scroller",class:"file-list",items:e(l).slice(),"item-size":e(p).first,"key-field":"fullpath","item-secondary-size":e(p).second,gridItems:e(w)},{default:r(({item:o,index:u})=>[c(V,{idx:u,file:o,"cell-width":e(b),"enable-close-icon":"",onCloseIconClick:Q=>g(u),"full-screen-preview-image-url":e(B)(o),"enable-right-click-menu":!1},null,8,["idx","file","cell-width","onCloseIconClick","full-screen-preview-image-url"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])):(i(),_("div",L,[f("p",U,d(t.$t("batchDownloaDDragAndDropHint")),1)]))],544)}}});const J=R(q,[["__scopeId","data-v-aab31da2"]]);export{J as default};
|
||||
import{d as v,cd as C,bN as I,o as i,k as _,l as f,c,A as r,m as h,t as d,B as e,z,Q as B,ce as F,cf as x,X as $,q as R}from"./index-c4181c0f.js";import{u as S,b as A,k as E,F as V,h as N}from"./FileItem-fc7e9818.js";import"./functionalCallableComp-16169d47.js";import"./index-a5bd3ccb.js";import"./index-41b95b36.js";const T={class:"actions-panel actions"},L={key:0,class:"file-list"},U={class:"hint"},q=v({__name:"batchDownload",props:{tabIdx:{},paneIdx:{},id:{}},setup(H){const{stackViewEl:k}=S().toRefs(),{itemSize:p,gridItems:w,cellWidth:b}=A(),n=E(),{selectdFiles:l}=C(n),m=I(),y=async t=>{const s=F(t);s&&n.addFiles(s.nodes)},D=async()=>{m.pushAction(async()=>{const t=await x.value.post("/zip",{paths:l.value.map(o=>o.fullpath)},{responseType:"blob"}),s=window.URL.createObjectURL(new Blob([t.data])),a=document.createElement("a");a.href=s,a.setAttribute("download",`iib_${new Date().toLocaleString()}.zip`),document.body.appendChild(a),a.click()})},g=t=>{l.value.splice(t,1)};return(t,s)=>{const a=$;return i(),_("div",{class:"container",ref_key:"stackViewEl",ref:k,onDrop:y},[f("div",T,[c(a,{onClick:s[0]||(s[0]=o=>e(n).selectdFiles=[])},{default:r(()=>[h(d(t.$t("clear")),1)]),_:1}),c(a,{onClick:D,type:"primary",loading:!e(m).isIdle},{default:r(()=>[h(d(t.$t("zipDownload")),1)]),_:1},8,["loading"])]),e(l).length?(i(),z(e(N),{key:1,ref:"scroller",class:"file-list",items:e(l).slice(),"item-size":e(p).first,"key-field":"fullpath","item-secondary-size":e(p).second,gridItems:e(w)},{default:r(({item:o,index:u})=>[c(V,{idx:u,file:o,"cell-width":e(b),"enable-close-icon":"",onCloseIconClick:Q=>g(u),"full-screen-preview-image-url":e(B)(o),"enable-right-click-menu":!1},null,8,["idx","file","cell-width","onCloseIconClick","full-screen-preview-image-url"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])):(i(),_("div",L,[f("p",U,d(t.$t("batchDownloaDDragAndDropHint")),1)]))],544)}}});const J=R(q,[["__scopeId","data-v-aab31da2"]]);export{J as default};
|
||||
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
|
|
@ -1 +1 @@
|
|||
import{u as w,b as k,F as y,h as x}from"./FileItem-5a479398.js";import{d as h,r as F,c5 as D,v as I,aS as b,aW as C,o as E,k as S,c,A as V,B as e,Q as z,ce as B,cg as A,q as R}from"./index-1489ccf0.js";import"./functionalCallableComp-215f3be5.js";import"./index-fbf51be6.js";import"./index-efa83f46.js";const q=h({__name:"gridView",props:{tabIdx:{},paneIdx:{},id:{},removable:{type:Boolean},allowDragAndDrop:{type:Boolean},files:{},paneKey:{}},setup(p){const o=p,d=F(),{stackViewEl:m}=w().toRefs(),{itemSize:i,gridItems:u,cellWidth:f}=k(),g=D(),s=I(o.files??[]),_=async a=>{const l=B(a);o.allowDragAndDrop&&l&&(s.value=A([...s.value,...l.nodes]))},v=a=>{s.value.splice(a,1)};return b(()=>{d.pageFuncExportMap.set(o.paneKey,{getFiles:()=>C(s.value),setFiles:a=>s.value=a})}),(a,l)=>(E(),S("div",{class:"container",ref_key:"stackViewEl",ref:m,onDrop:_},[c(e(x),{ref:"scroller",class:"file-list",items:s.value.slice(),"item-size":e(i).first,"key-field":"fullpath","item-secondary-size":e(i).second,gridItems:e(u)},{default:V(({item:t,index:r})=>{var n;return[c(y,{idx:r,file:t,"cell-width":e(f),"enable-close-icon":o.removable,onCloseIconClick:K=>v(r),"full-screen-preview-image-url":e(z)(t),"extra-tags":(n=t==null?void 0:t.tags)==null?void 0:n.map(e(g).tagConvert),"enable-right-click-menu":!1},null,8,["idx","file","cell-width","enable-close-icon","onCloseIconClick","full-screen-preview-image-url","extra-tags"])]}),_:1},8,["items","item-size","item-secondary-size","gridItems"])],544))}});const M=R(q,[["__scopeId","data-v-f35f4802"]]);export{M as default};
|
||||
import{u as w,b as k,F as y,h as x}from"./FileItem-fc7e9818.js";import{d as h,r as F,c5 as D,v as I,aR as b,aV as C,o as V,k as E,c,A as z,B as e,Q as B,ce as S,cg as R,q as A}from"./index-c4181c0f.js";import"./functionalCallableComp-16169d47.js";import"./index-a5bd3ccb.js";import"./index-41b95b36.js";const q=h({__name:"gridView",props:{tabIdx:{},paneIdx:{},id:{},removable:{type:Boolean},allowDragAndDrop:{type:Boolean},files:{},paneKey:{}},setup(p){const o=p,d=F(),{stackViewEl:m}=w().toRefs(),{itemSize:i,gridItems:u,cellWidth:f}=k(),g=D(),s=I(o.files??[]),_=async a=>{const l=S(a);o.allowDragAndDrop&&l&&(s.value=R([...s.value,...l.nodes]))},v=a=>{s.value.splice(a,1)};return b(()=>{d.pageFuncExportMap.set(o.paneKey,{getFiles:()=>C(s.value),setFiles:a=>s.value=a})}),(a,l)=>(V(),E("div",{class:"container",ref_key:"stackViewEl",ref:m,onDrop:_},[c(e(x),{ref:"scroller",class:"file-list",items:s.value.slice(),"item-size":e(i).first,"key-field":"fullpath","item-secondary-size":e(i).second,gridItems:e(u)},{default:z(({item:t,index:r})=>{var n;return[c(y,{idx:r,file:t,"cell-width":e(f),"enable-close-icon":o.removable,onCloseIconClick:K=>v(r),"full-screen-preview-image-url":e(B)(t),"extra-tags":(n=t==null?void 0:t.tags)==null?void 0:n.map(e(g).tagConvert),"enable-right-click-menu":!1},null,8,["idx","file","cell-width","enable-close-icon","onCloseIconClick","full-screen-preview-image-url","extra-tags"])]}),_:1},8,["items","item-size","item-secondary-size","gridItems"])],544))}});const N=A(q,[["__scopeId","data-v-f35f4802"]]);export{N as default};
|
||||
|
|
@ -1 +1 @@
|
|||
import{bd as F,v as g,b$ as R,c0 as x,aj as A,ag as q,bN as D,b3 as j,c1 as z}from"./index-1489ccf0.js";import{u as G,b as L,f as O,c as Q,d as H,e as T,i as U}from"./FileItem-5a479398.js";let W=0;const $=()=>++W,B=(o,c,{dataUpdateStrategy:l="replace"}={})=>{const n=F([""]),u=g(!1),t=g(),a=g(!1);let f=g(-1);const v=new Set,w=e=>{var s;l==="replace"?t.value=e:l==="merge"&&(A((Array.isArray(t.value)||typeof t.value>"u")&&Array.isArray(e),"数据更新策略为合并时仅可用于值为数组的情况"),t.value=[...(s=t==null?void 0:t.value)!==null&&s!==void 0?s:[],...e])},d=e=>x(void 0,void 0,void 0,function*(){if(a.value||u.value&&typeof e>"u")return!1;a.value=!0;const s=$();f.value=s;try{let r;if(typeof e=="number"){if(r=n[e],typeof r!="string")return!1}else r=n[n.length-1];const m=yield o(r);if(v.has(s))return v.delete(s),!1;w(c(m));const i=m.cursor;if((e===n.length-1||typeof e!="number")&&(u.value=!i.has_next,i.has_next)){const p=i.next_cursor||i.next;A(typeof p=="string"),n.push(p)}}finally{f.value===s&&(a.value=!1)}return!0}),h=()=>{v.add(f.value),a.value=!1},S=(e=!1)=>x(void 0,void 0,void 0,function*(){const{refetch:s,force:r}=typeof e=="object"?e:{refetch:e};r&&h(),A(!a.value),n.splice(0,n.length,""),a.value=!1,t.value=void 0,u.value=!1,s&&(yield d())}),I=()=>({next:()=>x(void 0,void 0,void 0,function*(){if(a.value)throw new Error("不允许同时迭代");return{done:!(yield d()),value:t.value}})});return R({abort:h,load:u,next:d,res:t,loading:a,cursorStack:n,reset:S,[Symbol.asyncIterator]:I,iter:{[Symbol.asyncIterator]:I}})},Y=o=>F(B(o,c=>c.files,{dataUpdateStrategy:"merge"})),Z=o=>{const c=F(new Set),l=q(()=>(o.res??[]).filter(y=>!c.has(y.fullpath))),n=D(),{stackViewEl:u,multiSelectedIdxs:t,stack:a,scroller:f}=G({images:l}).toRefs(),{itemSize:v,gridItems:w,cellWidth:d,onScroll:h}=L({fetchNext:()=>o.next()}),{showMenuIdx:S}=O(),{onFileDragStart:I,onFileDragEnd:e}=Q(),{showGenInfo:s,imageGenInfo:r,q:m,onContextMenuClick:i,onFileItemClick:p}=H({openNext:j}),{previewIdx:C,previewing:_,onPreviewVisibleChange:E,previewImgMove:M,canPreview:J}=T(),N=async(y,b,P)=>{a.value=[{curr:"",files:l.value}],await i(y,b,P)};U("removeFiles",async({paths:y})=>{y.forEach(b=>c.add(b))});const k=()=>{z(l.value)};return{images:l,scroller:f,queue:n,iter:o,onContextMenuClickU:N,stackViewEl:u,previewIdx:C,previewing:_,onPreviewVisibleChange:E,previewImgMove:M,canPreview:J,itemSize:v,gridItems:w,showGenInfo:s,imageGenInfo:r,q:m,onContextMenuClick:i,onFileItemClick:p,showMenuIdx:S,multiSelectedIdxs:t,onFileDragStart:I,onFileDragEnd:e,cellWidth:d,onScroll:h,saveLoadedFileAsJson:k,saveAllFileAsJson:async()=>{for(;!o.load;)await o.next();k()}}};export{Y as c,Z as u};
|
||||
import{bc as F,v as g,b$ as R,c0 as x,ai as A,af as q,bN as D,b2 as z,c1 as G}from"./index-c4181c0f.js";import{u as L,b as O,f as Q,c as j,d as H,e as T,i as U}from"./FileItem-fc7e9818.js";let W=0;const $=()=>++W,B=(o,c,{dataUpdateStrategy:l="replace"}={})=>{const n=F([""]),u=g(!1),t=g(),a=g(!1);let f=g(-1);const v=new Set,w=e=>{var s;l==="replace"?t.value=e:l==="merge"&&(A((Array.isArray(t.value)||typeof t.value>"u")&&Array.isArray(e),"数据更新策略为合并时仅可用于值为数组的情况"),t.value=[...(s=t==null?void 0:t.value)!==null&&s!==void 0?s:[],...e])},d=e=>x(void 0,void 0,void 0,function*(){if(a.value||u.value&&typeof e>"u")return!1;a.value=!0;const s=$();f.value=s;try{let r;if(typeof e=="number"){if(r=n[e],typeof r!="string")return!1}else r=n[n.length-1];const m=yield o(r);if(v.has(s))return v.delete(s),!1;w(c(m));const i=m.cursor;if((e===n.length-1||typeof e!="number")&&(u.value=!i.has_next,i.has_next)){const p=i.next_cursor||i.next;A(typeof p=="string"),n.push(p)}}finally{f.value===s&&(a.value=!1)}return!0}),h=()=>{v.add(f.value),a.value=!1},S=(e=!1)=>x(void 0,void 0,void 0,function*(){const{refetch:s,force:r}=typeof e=="object"?e:{refetch:e};r&&h(),A(!a.value),n.splice(0,n.length,""),a.value=!1,t.value=void 0,u.value=!1,s&&(yield d())}),I=()=>({next:()=>x(void 0,void 0,void 0,function*(){if(a.value)throw new Error("不允许同时迭代");return{done:!(yield d()),value:t.value}})});return R({abort:h,load:u,next:d,res:t,loading:a,cursorStack:n,reset:S,[Symbol.asyncIterator]:I,iter:{[Symbol.asyncIterator]:I}})},Y=o=>F(B(o,c=>c.files,{dataUpdateStrategy:"merge"})),Z=o=>{const c=F(new Set),l=q(()=>(o.res??[]).filter(y=>!c.has(y.fullpath))),n=D(),{stackViewEl:u,multiSelectedIdxs:t,stack:a,scroller:f}=L({images:l}).toRefs(),{itemSize:v,gridItems:w,cellWidth:d,onScroll:h}=O({fetchNext:()=>o.next()}),{showMenuIdx:S}=Q(),{onFileDragStart:I,onFileDragEnd:e}=j(),{showGenInfo:s,imageGenInfo:r,q:m,onContextMenuClick:i,onFileItemClick:p}=H({openNext:z}),{previewIdx:C,previewing:_,onPreviewVisibleChange:E,previewImgMove:M,canPreview:J}=T(),N=async(y,b,P)=>{a.value=[{curr:"",files:l.value}],await i(y,b,P)};U("removeFiles",async({paths:y})=>{y.forEach(b=>c.add(b))});const k=()=>{G(l.value)};return{images:l,scroller:f,queue:n,iter:o,onContextMenuClickU:N,stackViewEl:u,previewIdx:C,previewing:_,onPreviewVisibleChange:E,previewImgMove:M,canPreview:J,itemSize:v,gridItems:w,showGenInfo:s,imageGenInfo:r,q:m,onContextMenuClick:i,onFileItemClick:p,showMenuIdx:S,multiSelectedIdxs:t,onFileDragStart:I,onFileDragEnd:e,cellWidth:d,onScroll:h,saveLoadedFileAsJson:k,saveAllFileAsJson:async()=>{for(;!o.load;)await o.next();k()}}};export{Y as c,Z as u};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{d as E,bg as $,v as f,s as M,_ as T,a as c,a1 as W,h as g,c as v,P as z}from"./index-1489ccf0.js";var G=["prefixCls","name","id","type","disabled","readonly","tabindex","autofocus","value","required"],H={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:z.any,required:Boolean};const L=E({compatConfig:{MODE:3},name:"Checkbox",inheritAttrs:!1,props:$(H,{prefixCls:"rc-checkbox",type:"checkbox",defaultChecked:!1}),emits:["click","change"],setup:function(a,d){var t=d.attrs,h=d.emit,x=d.expose,o=f(a.checked===void 0?a.defaultChecked:a.checked),i=f();M(function(){return a.checked},function(){o.value=a.checked}),x({focus:function(){var e;(e=i.value)===null||e===void 0||e.focus()},blur:function(){var e;(e=i.value)===null||e===void 0||e.blur()}});var l=f(),m=function(e){if(!a.disabled){a.checked===void 0&&(o.value=e.target.checked),e.shiftKey=l.value;var r={target:c(c({},a),{},{checked:e.target.checked}),stopPropagation:function(){e.stopPropagation()},preventDefault:function(){e.preventDefault()},nativeEvent:e};a.checked!==void 0&&(i.value.checked=!!a.checked),h("change",r),l.value=!1}},C=function(e){h("click",e),l.value=e.shiftKey};return function(){var n,e=a.prefixCls,r=a.name,s=a.id,p=a.type,b=a.disabled,K=a.readonly,P=a.tabindex,B=a.autofocus,S=a.value,N=a.required,_=T(a,G),q=t.class,D=t.onFocus,j=t.onBlur,w=t.onKeydown,A=t.onKeypress,F=t.onKeyup,y=c(c({},_),t),O=Object.keys(y).reduce(function(k,u){return(u.substr(0,5)==="aria-"||u.substr(0,5)==="data-"||u==="role")&&(k[u]=y[u]),k},{}),R=W(e,q,(n={},g(n,"".concat(e,"-checked"),o.value),g(n,"".concat(e,"-disabled"),b),n)),V=c(c({name:r,id:s,type:p,readonly:K,disabled:b,tabindex:P,class:"".concat(e,"-input"),checked:!!o.value,autofocus:B,value:S},O),{},{onChange:m,onClick:C,onFocus:D,onBlur:j,onKeydown:w,onKeypress:A,onKeyup:F,required:N});return v("span",{class:R},[v("input",c({ref:i},V),null),v("span",{class:"".concat(e,"-inner")},null)])}}});export{L as V};
|
||||
import{d as E,bf as $,v as f,s as M,_ as T,a as c,a0 as W,h as x,c as v,P as z}from"./index-c4181c0f.js";var G=["prefixCls","name","id","type","disabled","readonly","tabindex","autofocus","value","required"],H={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:z.any,required:Boolean};const L=E({compatConfig:{MODE:3},name:"Checkbox",inheritAttrs:!1,props:$(H,{prefixCls:"rc-checkbox",type:"checkbox",defaultChecked:!1}),emits:["click","change"],setup:function(a,d){var t=d.attrs,h=d.emit,g=d.expose,o=f(a.checked===void 0?a.defaultChecked:a.checked),i=f();M(function(){return a.checked},function(){o.value=a.checked}),g({focus:function(){var e;(e=i.value)===null||e===void 0||e.focus()},blur:function(){var e;(e=i.value)===null||e===void 0||e.blur()}});var l=f(),m=function(e){if(!a.disabled){a.checked===void 0&&(o.value=e.target.checked),e.shiftKey=l.value;var r={target:c(c({},a),{},{checked:e.target.checked}),stopPropagation:function(){e.stopPropagation()},preventDefault:function(){e.preventDefault()},nativeEvent:e};a.checked!==void 0&&(i.value.checked=!!a.checked),h("change",r),l.value=!1}},C=function(e){h("click",e),l.value=e.shiftKey};return function(){var n,e=a.prefixCls,r=a.name,s=a.id,p=a.type,b=a.disabled,K=a.readonly,P=a.tabindex,B=a.autofocus,S=a.value,N=a.required,_=T(a,G),q=t.class,D=t.onFocus,j=t.onBlur,w=t.onKeydown,A=t.onKeypress,F=t.onKeyup,y=c(c({},_),t),O=Object.keys(y).reduce(function(k,u){return(u.substr(0,5)==="aria-"||u.substr(0,5)==="data-"||u==="role")&&(k[u]=y[u]),k},{}),R=W(e,q,(n={},x(n,"".concat(e,"-checked"),o.value),x(n,"".concat(e,"-disabled"),b),n)),V=c(c({name:r,id:s,type:p,readonly:K,disabled:b,tabindex:P,class:"".concat(e,"-input"),checked:!!o.value,autofocus:B,value:S},O),{},{onChange:m,onClick:C,onFocus:D,onBlur:j,onKeydown:w,onKeypress:A,onKeyup:F,required:N});return v("span",{class:R},[v("input",c({ref:i},V),null),v("span",{class:"".concat(e,"-inner")},null)])}}});export{L as V};
|
||||
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
|
|
@ -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)}}.base-info[data-v-afd25667]{position:absolute;padding:4px;font-size:.8em;background:var(--zp-primary-background);color:var(--zp-primary);left:0;bottom:0;border-top-right-radius:4px}.preview-switch[data-v-2df904bd]{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-2df904bd]{color:#fff;margin:16px;font-size:4em;pointer-events:all;cursor:pointer}.preview-switch>*.disable[data-v-2df904bd]{opacity:0;pointer-events:none;cursor:none}.location-act[data-v-2df904bd]{margin-left:8px}.location-act .copy[data-v-2df904bd]{margin-right:4px}@media (max-width: 768px){.location-act[data-v-2df904bd]{display:flex;flex-direction:column}.location-act>*[data-v-2df904bd],.location-act .copy[data-v-2df904bd]{margin:2px}}.breadcrumb[data-v-2df904bd]{display:flex;align-items:center}.breadcrumb>*[data-v-2df904bd]{margin-right:4px}@media (max-width: 768px){.breadcrumb[data-v-2df904bd]{width:100%}.breadcrumb .ant-breadcrumb>*[data-v-2df904bd]{display:inline-block}}.container[data-v-2df904bd]{background:var(--zp-secondary-background);height:var(--pane-max-height)}.location-bar[data-v-2df904bd]{padding:4px 16px;background:var(--zp-primary-background);border-bottom:1px solid var(--zp-border);display:flex;align-items:center;justify-content:space-between}@media (max-width: 768px){.location-bar[data-v-2df904bd]{flex-direction:column}.location-bar[data-v-2df904bd] ::-webkit-scrollbar{height:2px;background-color:var(--zp-secondary-variant-background)}.location-bar .actions[data-v-2df904bd]{padding:4px 0;width:100%;overflow:auto;display:flex;align-items:center}.location-bar .actions>*[data-v-2df904bd]{flex-shrink:0}}.location-bar .actions[data-v-2df904bd]{display:flex;align-items:center;flex-shrink:0}.location-bar a.opt[data-v-2df904bd]{margin-left:8px}.view[data-v-2df904bd]{padding:8px;height:calc(100vh - 48px)}.view .file-list[data-v-2df904bd]{list-style:none;padding:8px;height:100%;overflow:auto}.hint[data-v-2df904bd]{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)}}.base-info[data-v-afd25667]{position:absolute;padding:4px;font-size:.8em;background:var(--zp-primary-background);color:var(--zp-primary);left:0;bottom:0;border-top-right-radius:4px}.preview-switch[data-v-fea150fb]{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-fea150fb]{color:#fff;margin:16px;font-size:4em;pointer-events:all;cursor:pointer}.preview-switch>*.disable[data-v-fea150fb]{opacity:0;pointer-events:none;cursor:none}.location-act[data-v-fea150fb]{margin-left:8px}.location-act .copy[data-v-fea150fb]{margin-right:4px}@media (max-width: 768px){.location-act[data-v-fea150fb]{display:flex;flex-direction:column}.location-act>*[data-v-fea150fb],.location-act .copy[data-v-fea150fb]{margin:2px}}.breadcrumb[data-v-fea150fb]{display:flex;align-items:center}.breadcrumb>*[data-v-fea150fb]{margin-right:4px}@media (max-width: 768px){.breadcrumb[data-v-fea150fb]{width:100%}.breadcrumb .ant-breadcrumb>*[data-v-fea150fb]{display:inline-block}}.container[data-v-fea150fb]{background:var(--zp-secondary-background);height:var(--pane-max-height)}.location-bar[data-v-fea150fb]{padding:4px 16px;background:var(--zp-primary-background);border-bottom:1px solid var(--zp-border);display:flex;align-items:center;justify-content:space-between}@media (max-width: 768px){.location-bar[data-v-fea150fb]{flex-direction:column}.location-bar[data-v-fea150fb] ::-webkit-scrollbar{height:2px;background-color:var(--zp-secondary-variant-background)}.location-bar .actions[data-v-fea150fb]{padding:4px 0;width:100%;overflow:auto;display:flex;align-items:center}.location-bar .actions>*[data-v-fea150fb]{flex-shrink:0}}.location-bar .actions[data-v-fea150fb]{display:flex;align-items:center;flex-shrink:0}.location-bar a.opt[data-v-fea150fb]{margin-left:8px}.view[data-v-fea150fb]{padding:8px;height:calc(100vh - 48px)}.view .file-list[data-v-fea150fb]{list-style:none;padding:8px;height:100%;overflow:auto}.hint[data-v-fea150fb]{padding:4px;border:4px;background:var(--zp-secondary-background);border:1px solid var(--zp-border)}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -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-1489ccf0.js"></script>
|
||||
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-c4181c0f.js"></script>
|
||||
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-f6de8b10.css">
|
||||
</head>
|
||||
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ export type ExtraPathType = 'scanned' | 'walk' | 'cli_access_only' | ''
|
|||
|
||||
export interface ExtraPathModel {
|
||||
path: string
|
||||
type: ExtraPathType
|
||||
types: ExtraPathType[]
|
||||
}
|
||||
|
||||
export const getExtraPath = async () => {
|
||||
|
|
|
|||
|
|
@ -78,12 +78,12 @@ const lastRecord = computed(() => global.tabListHistoryRecord?.[1])
|
|||
|
||||
const walkModeSupportedDir = computed(() =>
|
||||
global.quickMovePaths.filter(
|
||||
({ key: k, type }) =>
|
||||
({ key: k, types }) =>
|
||||
k === 'outdir_txt2img_samples' ||
|
||||
k === 'outdir_img2img_samples' ||
|
||||
k === 'outdir_txt2img_grids' ||
|
||||
k === 'outdir_img2img_grids' ||
|
||||
type === 'walk'
|
||||
types.includes('walk')
|
||||
)
|
||||
)
|
||||
const canpreviewInNewWindow = window.parent !== window
|
||||
|
|
@ -147,7 +147,7 @@ const restoreRecord = () => {
|
|||
<div class="feature-item">
|
||||
<h2>{{ $t('walkMode') }}</h2>
|
||||
<ul>
|
||||
<li @click="addToExtraPath('walk')" class="item" style="text-align: ;">
|
||||
<li @click="addToExtraPath('walk')" class="item" >
|
||||
<span class="text line-clamp-1">
|
||||
<PlusOutlined /> {{ $t('add') }}
|
||||
</span>
|
||||
|
|
@ -167,16 +167,16 @@ const restoreRecord = () => {
|
|||
<div class="feature-item" v-if="global.quickMovePaths.length">
|
||||
<h2>{{ $t('launchFromQuickMove') }}</h2>
|
||||
<ul>
|
||||
<li @click="addToExtraPath('scanned')" class="item" style="text-align: ;">
|
||||
<li @click="addToExtraPath('scanned')" class="item" >
|
||||
<span class="text line-clamp-1">
|
||||
<PlusOutlined /> {{ $t('add') }}
|
||||
</span>
|
||||
</li>
|
||||
<actionContextMenu v-for="dir in global.quickMovePaths.filter(v => v.type !== 'walk')" :key="dir.key"
|
||||
<actionContextMenu v-for="dir in global.quickMovePaths.filter(({ types: ts }) => ts.includes('cli_access_only') || ts.includes('preset') || ts.includes('scanned'))" :key="dir.key"
|
||||
@open-in-new-tab="openInNewTab('local', dir.dir)" @open-on-the-right="openOnTheRight('local', dir.dir)">
|
||||
<li class="item rem" @click.prevent="openInCurrentTab('local', dir.dir)">
|
||||
<span class="text line-clamp-2">{{ dir.zh }}</span>
|
||||
<AButton v-if="dir.can_delete && dir.type == 'scanned'" type="link"
|
||||
<AButton v-if="dir.can_delete && dir.types.includes('scanned')" type="link"
|
||||
@click.stop="onRemoveExtraPathClick(dir.dir, 'scanned')">{{ $t('remove') }}
|
||||
</AButton>
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ export const addToExtraPath = async (type: ExtraPathType) => {
|
|||
Modal.confirm({
|
||||
content: t('confirmToAddToExtraPath'),
|
||||
async onOk () {
|
||||
await addExtraPath({ type, path })
|
||||
await addExtraPath({ types: [type], path })
|
||||
message.success(t('addCompleted'))
|
||||
globalEvents.emit('searchIndexExpired')
|
||||
globalEvents.emit('updateGlobalSetting')
|
||||
|
|
@ -57,7 +57,7 @@ export const onRemoveExtraPathClick = (path: string, type: ExtraPathType) => {
|
|||
content: t('confirmDelete'),
|
||||
closable: true,
|
||||
async onOk () {
|
||||
await removeExtraPath({ type, path })
|
||||
await removeExtraPath({ types: [type], path })
|
||||
message.success(t('removeCompleted'))
|
||||
globalEvents.emit('searchIndexExpired')
|
||||
globalEvents.emit('updateGlobalSetting')
|
||||
|
|
|
|||
|
|
@ -518,10 +518,10 @@ export function useLocation () {
|
|||
if (!path.can_delete) {
|
||||
return
|
||||
}
|
||||
await removeExtraPath({ path: currLocation.value, type: 'scanned' })
|
||||
await removeExtraPath({ path: currLocation.value, types: ['scanned'] })
|
||||
message.success(t('removeCompleted'))
|
||||
} else {
|
||||
await addExtraPath({ path: currLocation.value, type: 'scanned' })
|
||||
await addExtraPath({ path: currLocation.value, types: ['scanned'] })
|
||||
message.success(t('addCompleted'))
|
||||
}
|
||||
globalEvents.emit('searchIndexExpired')
|
||||
|
|
|
|||
|
|
@ -219,16 +219,7 @@ function getGenDiff (ownGenInfo: any, idx: any, increment: any, ownFile: FileNod
|
|||
</ASkeleton>
|
||||
</AModal>
|
||||
<div class="location-bar">
|
||||
<div v-if="props.walkModePath" class="breadcrumb">
|
||||
<a-tooltip>
|
||||
<template #title>{{ $t('walk-mode-move-message') }}</template><a-breadcrumb style="flex: 1">
|
||||
<a-breadcrumb-item v-for="(item, idx) in stack" :key="idx">
|
||||
<span>{{ item.curr === '/' ? $t('root') : item.curr.replace(/:\/$/, $t('drive')) }}</span>
|
||||
</a-breadcrumb-item>
|
||||
</a-breadcrumb>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div class="breadcrumb" :style="{ flex: isLocationEditing ? 1 : '' }" v-else>
|
||||
<div class="breadcrumb" :style="{ flex: isLocationEditing ? 1 : '' }" >
|
||||
<AInput v-if="isLocationEditing" style="flex: 1" v-model:value="locInputValue" @click.stop @keydown.stop
|
||||
@press-enter="onLocEditEnter" allow-clear></AInput>
|
||||
<a-breadcrumb style="flex: 1" v-else>
|
||||
|
|
|
|||
|
|
@ -82,8 +82,8 @@ export const getQuickMovePaths = async ({
|
|||
zh: cnMap[key],
|
||||
dir: pathMap[key],
|
||||
can_delete: false,
|
||||
type: 'preset' as 'preset' | ExtraPathType
|
||||
types: ['preset' as 'preset' | ExtraPathType]
|
||||
}
|
||||
}).concat(extra_paths.map(v => ({ key: v.path, zh: findshortest(v.path), dir: v.path, can_delete: true, type: v.type })) as any[])
|
||||
return uniqBy(res, v => v.key + v.type)
|
||||
}).concat(extra_paths.map(v => ({ key: v.path, zh: findshortest(v.path), dir: v.path, can_delete: true, types: v.types })) as any[])
|
||||
return uniqBy(res, v => v.key + v.types.join())
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue