Add post-processing zoom for generated tags, generate records for images without exif data, and remove Lora from the quick move.
parent
2a335f7d22
commit
eb1dd6208b
|
|
@ -5,3 +5,4 @@ iib.db
|
|||
tags-translate.csv
|
||||
launch.sh
|
||||
conf.json
|
||||
iib.db-journal
|
||||
|
|
|
|||
|
|
@ -8,7 +8,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-a52af617.js"></script>
|
||||
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-1bf3235b.js"></script>
|
||||
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-29c71e71.css">
|
||||
</head>
|
||||
|
||||
|
|
|
|||
|
|
@ -15,13 +15,16 @@ from scripts.logger import logger
|
|||
|
||||
# 定义一个函数来获取图片文件的EXIF数据
|
||||
def get_exif_data(file_path):
|
||||
info = ''
|
||||
params = None
|
||||
try:
|
||||
with Image.open(file_path) as img:
|
||||
info = read_info_from_image(img)
|
||||
return parse_generation_parameters(info), info
|
||||
params = parse_generation_parameters(info)
|
||||
except Exception as e:
|
||||
if is_dev:
|
||||
logger.error("get_exif_data %s", e)
|
||||
return params, info
|
||||
|
||||
|
||||
def update_image_data(search_dirs: List[str]):
|
||||
|
|
@ -48,18 +51,18 @@ def update_image_data(search_dirs: List[str]):
|
|||
elif is_valid_image_path(file_path):
|
||||
if DbImg.get(conn, file_path): # 已存在的跳过
|
||||
continue
|
||||
exif_data = get_exif_data(file_path)
|
||||
if not exif_data:
|
||||
continue
|
||||
exif, lora, pos, _ = exif_data[0]
|
||||
parsed_params, info = get_exif_data(file_path)
|
||||
img = DbImg(
|
||||
file_path,
|
||||
exif_data[1],
|
||||
info,
|
||||
os.path.getsize(file_path),
|
||||
get_modified_date(file_path),
|
||||
)
|
||||
img.save(conn)
|
||||
|
||||
if not parsed_params:
|
||||
continue
|
||||
exif, lora, pos, _ = parsed_params
|
||||
size_tag = Tag.get_or_create(
|
||||
conn,
|
||||
str(exif.get("Size-1", 0)) + " * " + str(exif.get("Size-2", 0)),
|
||||
|
|
@ -67,11 +70,16 @@ def update_image_data(search_dirs: List[str]):
|
|||
)
|
||||
safe_save_img_tag(ImageTag(img.id, size_tag.id))
|
||||
|
||||
for k in ["Model", "Sampler"]:
|
||||
for k in [
|
||||
"Model",
|
||||
"Sampler",
|
||||
"Postprocess upscale by",
|
||||
"Postprocess upscaler",
|
||||
]:
|
||||
v = exif.get(k)
|
||||
if not v:
|
||||
continue
|
||||
tag = Tag.get_or_create(conn, str(v), k)
|
||||
tag = Tag.get_or_create(conn, str(v), k)
|
||||
safe_save_img_tag(ImageTag(img.id, tag.id))
|
||||
for i in lora:
|
||||
tag = Tag.get_or_create(conn, i["name"], "lora")
|
||||
|
|
|
|||
109
scripts/tool.py
109
scripts/tool.py
|
|
@ -14,27 +14,31 @@ def human_readable_size(size_bytes):
|
|||
Converts bytes to a human-readable format.
|
||||
"""
|
||||
# define the size units
|
||||
units = ('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')
|
||||
units = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
|
||||
# calculate the logarithm of the input value with base 1024
|
||||
size = int(size_bytes)
|
||||
if size == 0:
|
||||
return '0B'
|
||||
return "0B"
|
||||
i = 0
|
||||
while size >= 1024 and i < len(units) - 1:
|
||||
size /= 1024
|
||||
i += 1
|
||||
# round the result to two decimal points and return as a string
|
||||
return '{:.2f} {}'.format(size, units[i])
|
||||
return "{:.2f} {}".format(size, units[i])
|
||||
|
||||
|
||||
def get_windows_drives():
|
||||
drives = []
|
||||
for drive in range(ord('A'), ord('Z')+1):
|
||||
drive_name = chr(drive) + ':/'
|
||||
for drive in range(ord("A"), ord("Z") + 1):
|
||||
drive_name = chr(drive) + ":/"
|
||||
if os.path.exists(drive_name):
|
||||
drives.append(drive_name)
|
||||
return drives
|
||||
|
||||
pattern = re.compile(r'(\d+\.?\d*)([KMGT]?B)', re.IGNORECASE)
|
||||
|
||||
pattern = re.compile(r"(\d+\.?\d*)([KMGT]?B)", re.IGNORECASE)
|
||||
|
||||
|
||||
def convert_to_bytes(file_size_str):
|
||||
match = re.match(pattern, file_size_str)
|
||||
if match:
|
||||
|
|
@ -52,16 +56,17 @@ def convert_to_bytes(file_size_str):
|
|||
return int(size)
|
||||
else:
|
||||
raise ValueError(f"Invalid file size string '{file_size_str}'")
|
||||
|
||||
|
||||
|
||||
import asyncio
|
||||
|
||||
|
||||
def debounce(delay):
|
||||
"""用于优化高频事件的装饰器"""
|
||||
|
||||
|
||||
def decorator(func):
|
||||
from typing import Union
|
||||
|
||||
task: Union[None, asyncio.Task] = None
|
||||
|
||||
async def debounced(*args, **kwargs):
|
||||
|
|
@ -101,7 +106,9 @@ def get_temp_path():
|
|||
temp_path = None
|
||||
try:
|
||||
# 尝试获取系统环境变量中的临时文件目录路径
|
||||
temp_path = os.environ.get('TMPDIR') or os.environ.get('TMP') or os.environ.get('TEMP')
|
||||
temp_path = (
|
||||
os.environ.get("TMPDIR") or os.environ.get("TMP") or os.environ.get("TEMP")
|
||||
)
|
||||
except Exception as e:
|
||||
print("获取系统环境变量临时文件目录路径失败,错误信息:", e)
|
||||
|
||||
|
|
@ -121,87 +128,106 @@ def get_temp_path():
|
|||
|
||||
return temp_path
|
||||
|
||||
|
||||
temp_path = get_temp_path()
|
||||
|
||||
|
||||
def get_locale():
|
||||
import locale
|
||||
|
||||
lang, _ = locale.getdefaultlocale()
|
||||
return 'zh' if lang and lang.startswith('zh') else 'en'
|
||||
return "zh" if lang and lang.startswith("zh") else "en"
|
||||
|
||||
|
||||
locale = get_locale()
|
||||
|
||||
|
||||
def get_modified_date(folder_path: str):
|
||||
return datetime.fromtimestamp(os.path.getmtime(folder_path)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
return datetime.fromtimestamp(os.path.getmtime(folder_path)).strftime(
|
||||
"%Y-%m-%d %H:%M:%S"
|
||||
)
|
||||
|
||||
|
||||
def unique_by(seq, key_func):
|
||||
seen = set()
|
||||
return [x for x in seq if not (key := key_func(x)) in seen and not seen.add(key)]
|
||||
|
||||
def read_info_from_image(image) -> str:
|
||||
|
||||
def read_info_from_image(image) -> str:
|
||||
items = image.info or {}
|
||||
geninfo = items.pop('parameters', None)
|
||||
geninfo = items.pop("parameters", None)
|
||||
if "exif" in items:
|
||||
exif = piexif.load(items["exif"])
|
||||
exif_comment = (exif or {}).get("Exif", {}).get(piexif.ExifIFD.UserComment, b'')
|
||||
exif_comment = (exif or {}).get("Exif", {}).get(piexif.ExifIFD.UserComment, b"")
|
||||
try:
|
||||
exif_comment = piexif.helper.UserComment.load(exif_comment)
|
||||
except ValueError:
|
||||
exif_comment = exif_comment.decode('utf8', errors="ignore")
|
||||
exif_comment = exif_comment.decode("utf8", errors="ignore")
|
||||
|
||||
if exif_comment:
|
||||
items['exif comment'] = exif_comment
|
||||
items["exif comment"] = exif_comment
|
||||
geninfo = exif_comment
|
||||
return geninfo
|
||||
|
||||
|
||||
re_param_code = r'\s*([\w ]+):\s*("(?:\\"[^,]|\\"|\\|[^\"])+"|[^,]*)(?:,|$)'
|
||||
re_param = re.compile(re_param_code)
|
||||
re_imagesize = re.compile(r"^(\d+)x(\d+)$")
|
||||
re_lora_prompt = re.compile("<lora:([\w_\s]+):([\d.]+)>")
|
||||
re_parens = re.compile(r'[\\/\[\](){}]+')
|
||||
re_parens = re.compile(r"[\\/\[\](){}]+")
|
||||
re_lora_extract = re.compile(r"([\w_\s]+)(?:\d+)?")
|
||||
|
||||
def lora_extract(lora:str):
|
||||
|
||||
def lora_extract(lora: str):
|
||||
"""
|
||||
提取yoshino yoshino(2a79aa5adc4a)
|
||||
"""
|
||||
res = re_lora_extract.match(lora)
|
||||
return res.group(1) if res else lora
|
||||
return res.group(1) if res else lora
|
||||
|
||||
def parse_prompt(x:str):
|
||||
x = re.sub(re_parens, '', x.lower().replace(',',',').replace('-',' ').replace('_', ' '))
|
||||
tag_list = [x.strip() for x in x.split(',')]
|
||||
|
||||
def parse_prompt(x: str):
|
||||
x = re.sub(
|
||||
re_parens, "", x.lower().replace(",", ",").replace("-", " ").replace("_", " ")
|
||||
)
|
||||
tag_list = [x.strip() for x in x.split(",")]
|
||||
res = []
|
||||
lora_list = []
|
||||
for tag in tag_list:
|
||||
if len(tag) == 0:
|
||||
continue
|
||||
idx_colon = tag.find(':')
|
||||
idx_colon = tag.find(":")
|
||||
if idx_colon != -1:
|
||||
lora_res = re.match(re_lora_prompt, tag)
|
||||
if lora_res:
|
||||
lora_list.append({ "name": lora_res.group(1), "value": float(lora_res.group(2))})
|
||||
lora_list.append(
|
||||
{"name": lora_res.group(1), "value": float(lora_res.group(2))}
|
||||
)
|
||||
else:
|
||||
tag = tag[0:idx_colon]
|
||||
if len(tag):
|
||||
res.append(tag)
|
||||
tag = tag[0:idx_colon]
|
||||
if len(tag):
|
||||
res.append(tag)
|
||||
else:
|
||||
res.append(tag)
|
||||
return res, lora_list
|
||||
|
||||
|
||||
def parse_generation_parameters(x: str):
|
||||
res = {}
|
||||
prompt = ""
|
||||
negative_prompt = ""
|
||||
done_with_prompt = False
|
||||
if not x:
|
||||
return {},[],[],[]
|
||||
return {}, [], [], []
|
||||
*lines, lastline = x.strip().split("\n")
|
||||
if len(re_param.findall(lastline)) < 3:
|
||||
lines.append(lastline)
|
||||
lastline = ''
|
||||
|
||||
lastline = ""
|
||||
if len(lines) == 1 and lines[0].startswith("Postprocess"): # 把上面改成<2应该也可以,当时不敢动
|
||||
lastline = lines[
|
||||
0
|
||||
] # 把Postprocess upscale by: 4, Postprocess upscaler: R-ESRGAN 4x+ Anime6B 推到res解析
|
||||
lines = []
|
||||
for i, line in enumerate(lines):
|
||||
line = line.strip()
|
||||
if line.startswith("Negative prompt:"):
|
||||
|
|
@ -213,35 +239,38 @@ def parse_generation_parameters(x: str):
|
|||
else:
|
||||
prompt += ("" if prompt == "" else "\n") + line
|
||||
|
||||
#res["pos_prompt"] = prompt
|
||||
#res["neg_prompt"] = negative_prompt
|
||||
|
||||
for k, v in re_param.findall(lastline):
|
||||
v = v[1:-1] if v[0] == '"' and v[-1] == '"' else v
|
||||
m = re_imagesize.match(v)
|
||||
if m is not None:
|
||||
res[k+"-1"] = m.group(1)
|
||||
res[k+"-2"] = m.group(2)
|
||||
res[k + "-1"] = m.group(1)
|
||||
res[k + "-2"] = m.group(2)
|
||||
else:
|
||||
res[k] = v
|
||||
pos_prompt, lora = parse_prompt(prompt)
|
||||
neg_prompt = [] # parse_prompt(negative_prompt)[0]
|
||||
for k in res:
|
||||
k_s = str(k)
|
||||
if k_s.startswith("AddNet Module") and str(res[k]).lower() == "lora":
|
||||
model = res[k_s.replace("Module", "Model")]
|
||||
value = res.get(k_s.replace("Module", "Weight A"), "1")
|
||||
lora.append({ "name": lora_extract(model), "value": float(value) })
|
||||
return res, unique_by(lora, lambda x:x['name']), unique_by(pos_prompt, lambda x:x), unique_by(neg_prompt, lambda x:x)
|
||||
lora.append({"name": lora_extract(model), "value": float(value)})
|
||||
|
||||
return (
|
||||
res,
|
||||
unique_by(lora, lambda x: x["name"]),
|
||||
unique_by(pos_prompt, lambda x: x),
|
||||
[],
|
||||
)
|
||||
|
||||
|
||||
tags_translate: Dict[str, str] = {}
|
||||
try:
|
||||
import codecs
|
||||
with codecs.open(os.path.join(cwd, 'tags-translate.csv'), "r", "utf-8") as tag:
|
||||
|
||||
with codecs.open(os.path.join(cwd, "tags-translate.csv"), "r", "utf-8") as tag:
|
||||
tags_translate_str = tag.read()
|
||||
for line in tags_translate_str.splitlines():
|
||||
en,mapping = line.split(',')
|
||||
en, mapping = line.split(",")
|
||||
tags_translate[en.strip()] = mapping.strip()
|
||||
except Exception as e:
|
||||
pass
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{d as A,r as k,B,C as F,y as G,o as N,l as U,c as l,m as o,n as s,p as w,q as x,t as y,I as $,aQ as q,a0 as D,V as E}from"./index-a52af617.js";import{u as Q,b as R,g as O,e as j,c as H,j as J,k as K,t as L,S as P}from"./FileItem-1685864d.js";import{g as W,M as X}from"./db-86011ee4.js";import"./index-f3d83b70.js";import"./_baseIteratee-4a6b4f10.js";import"./button-4d75a231.js";const Y={class:"hint"},Z=A({__name:"MatchedImageGrid",props:{tabIdx:null,paneIdx:null,selectedTagIds:null,id:null},setup(h){const u=h,n=k(),m=B(new F(-1,0,-1,"throw"));G(()=>u.selectedTagIds,async()=>{var e;const{res:a}=m.pushAction(()=>W(u.selectedTagIds));n.value=await a,(e=p.value)==null||e.scrollToItem(0)},{immediate:!0});const p=k(),f={tabIdx:-1,target:"local",paneIdx:-1},{stackViewEl:b,multiSelectedIdxs:g}=Q().toRefs(),{itemSize:v,gridItems:M}=R(f),{showMenuIdx:c}=O(),{showGenInfo:d,imageGenInfo:I,q:C,onContextMenuClick:S}=j(f,{openNext:q}),T=async(a,e,i)=>{if(await S(a,e,i),a.key==="deleteFiles"){const r=g.value.includes(i)?g.value:[i];n.value=n.value.filter((_,t)=>!r.includes(t))}};return(a,e)=>{const i=D,r=X,_=P;return N(),U("div",{class:"container",ref_key:"stackViewEl",ref:b},[l(_,{size:"large",spinning:!m.isIdle},{default:o(()=>[l(r,{visible:s(d),"onUpdate:visible":e[1]||(e[1]=t=>w(d)?d.value=t:null),width:"70vw","mask-closable":"",onOk:e[2]||(e[2]=t=>d.value=!1)},{cancelText:o(()=>[]),default:o(()=>[l(i,{active:"",loading:!s(C).isIdle},{default:o(()=>[x("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:e[0]||(e[0]=t=>s(H)(s(I),"copied"))},[x("div",Y,y(a.$t("doubleClickToCopy")),1),$(" "+y(s(I)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),l(s(J),{ref_key:"scroller",ref:p,class:"file-list",items:n.value||[],"item-size":s(v).first,"key-field":"fullpath","item-secondary-size":s(v).second,gridItems:s(M)},{default:o(({item:t,index:z})=>[l(K,{idx:z,file:t,"show-menu-idx":s(c),"onUpdate:showMenuIdx":e[3]||(e[3]=V=>w(c)?c.value=V:null),"full-screen-preview-image-url":s(L)(t),onContextMenuClick:T},null,8,["idx","file","show-menu-idx","full-screen-preview-image-url"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])]),_:1},8,["spinning"])],512)}}});const oe=E(Z,[["__scopeId","data-v-e4f22d78"]]);export{oe as default};
|
||||
import{d as A,r as k,B,C as F,y as G,o as N,l as U,c as l,m as o,n as s,p as w,q as x,t as y,J as $,aQ as q,a0 as D,V as E}from"./index-1bf3235b.js";import{u as Q,b as R,g as O,e as j,c as H,j as J,k as K,t as L,S as P}from"./FileItem-d840d6c4.js";import{g as W,M as X}from"./db-85f44d87.js";import"./index-b86708ae.js";import"./_baseIteratee-f82bf799.js";import"./button-142d9500.js";const Y={class:"hint"},Z=A({__name:"MatchedImageGrid",props:{tabIdx:null,paneIdx:null,selectedTagIds:null,id:null},setup(h){const u=h,n=k(),m=B(new F(-1,0,-1,"throw"));G(()=>u.selectedTagIds,async()=>{var e;const{res:a}=m.pushAction(()=>W(u.selectedTagIds));n.value=await a,(e=p.value)==null||e.scrollToItem(0)},{immediate:!0});const p=k(),f={tabIdx:-1,target:"local",paneIdx:-1},{stackViewEl:b,multiSelectedIdxs:g}=Q().toRefs(),{itemSize:v,gridItems:M}=R(f),{showMenuIdx:c}=O(),{showGenInfo:d,imageGenInfo:I,q:C,onContextMenuClick:S}=j(f,{openNext:q}),T=async(a,e,i)=>{if(await S(a,e,i),a.key==="deleteFiles"){const r=g.value.includes(i)?g.value:[i];n.value=n.value.filter((_,t)=>!r.includes(t))}};return(a,e)=>{const i=D,r=X,_=P;return N(),U("div",{class:"container",ref_key:"stackViewEl",ref:b},[l(_,{size:"large",spinning:!m.isIdle},{default:o(()=>[l(r,{visible:s(d),"onUpdate:visible":e[1]||(e[1]=t=>w(d)?d.value=t:null),width:"70vw","mask-closable":"",onOk:e[2]||(e[2]=t=>d.value=!1)},{cancelText:o(()=>[]),default:o(()=>[l(i,{active:"",loading:!s(C).isIdle},{default:o(()=>[x("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:e[0]||(e[0]=t=>s(H)(s(I),"copied"))},[x("div",Y,y(a.$t("doubleClickToCopy")),1),$(" "+y(s(I)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),l(s(J),{ref_key:"scroller",ref:p,class:"file-list",items:n.value||[],"item-size":s(v).first,"key-field":"fullpath","item-secondary-size":s(v).second,gridItems:s(M)},{default:o(({item:t,index:z})=>[l(K,{idx:z,file:t,"show-menu-idx":s(c),"onUpdate:showMenuIdx":e[3]||(e[3]=V=>w(c)?c.value=V:null),"full-screen-preview-image-url":s(L)(t),onContextMenuClick:T},null,8,["idx","file","show-menu-idx","full-screen-preview-image-url"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])]),_:1},8,["spinning"])],512)}}});const oe=E(Z,[["__scopeId","data-v-e4f22d78"]]);export{oe as default};
|
||||
|
|
@ -0,0 +1 @@
|
|||
.container[data-v-03eeaa14]{height:var(--pane-max-height);overflow:auto;display:flex;flex-direction:column;align-items:stretch}.container .generate-idx-hint[data-v-03eeaa14]{margin:64px;padding:64px;font-size:2em;text-align:center;background-color:var(--zp-secondary-background);white-space:pre-line;line-height:2.5em;border-radius:16px}.container .remove[data-v-03eeaa14]{padding:4px;position:cursor;border-radius:2px}.container .remove[data-v-03eeaa14]:hover{background-color:var(--zp-secondary-background)}.container .select[data-v-03eeaa14]{padding:8px}.container .search-bar[data-v-03eeaa14]{padding:8px;display:flex}.container .list-container[data-v-03eeaa14]{background-color:var(--zp-secondary-background);overflow:scroll}.container .tag-list[data-v-03eeaa14]{list-style:none;margin:16px;border-radius:16px;background:var(--zp-primary-background);padding:8px}.container .tag-list .cat-name[data-v-03eeaa14]{position:sticky;top:0;padding:4px 16px;background:var(--zp-primary-background);border-left:4px solid var(--primary-color);margin:4px}.container .tag-list .tag[data-v-03eeaa14]{border:2px solid var(--zp-secondary);color:var(--zp-primary);border-radius:999px;padding:4px 16px;margin:4px;display:inline-block;cursor:pointer;max-width:256px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.container .tag-list .tag.selected[data-v-03eeaa14]{color:var(--primary-color);border:2px solid var(--primary-color)}
|
||||
|
|
@ -0,0 +1 @@
|
|||
import{at as K,as as R,b$ as Y,bO as W,d as X,z as Z,B as ee,C as ae,a1 as A,r as w,a2 as te,v as se,o as u,l as g,N as y,s as $,q as x,c as k,n as m,Y as ne,I as B,m as O,J as C,t as f,K as M,O as oe,c3 as re,Q as P,b6 as le,c4 as ie,bo as V,L as N,V as ue}from"./index-1bf3235b.js";import{I as ce,_ as de}from"./index-e56328e2.js";import"./index-f4a81223.js";import{c as z,u as pe,e as ge,M as me,r as ve}from"./db-85f44d87.js";import{b as fe}from"./_baseIteratee-f82bf799.js";import{B as D}from"./button-142d9500.js";function _e(s,n,t,l){for(var i=-1,a=s==null?0:s.length;++i<a;){var o=s[i];n(l,o,t(o),s)}return l}function he(s){return function(n,t,l){for(var i=-1,a=Object(n),o=l(n),v=o.length;v--;){var b=o[s?v:++i];if(t(a[b],b,a)===!1)break}return n}}var ye=he();const be=ye;function ke(s,n){return s&&be(s,n,K)}function Ce(s,n){return function(t,l){if(t==null)return t;if(!R(t))return s(t,l);for(var i=t.length,a=n?i:-1,o=Object(t);(n?a--:++a<i)&&l(o[a],a,o)!==!1;);return t}}var Ie=Ce(ke);const we=Ie;function $e(s,n,t,l){return we(s,function(i,a,o){n(l,i,t(i),o)}),l}function xe(s,n){return function(t,l){var i=Y(t)?_e:$e,a=n?n():{};return i(t,s,fe(l),a)}}var Be=Object.prototype,Oe=Be.hasOwnProperty,Se=xe(function(s,n,t){Oe.call(s,t)?s[t].push(n):W(s,t,[n])});const Te=Se,Ae={class:"container"},Ne={class:"search-bar"},Fe={key:0,class:"generate-idx-hint"},Me={class:"list-container"},Pe={class:"cat-name"},Ve=["onClick"],ze=["onClickCapture"],De=X({__name:"TagSearch",props:{tabIdx:null,paneIdx:null},setup(s){const n=s,t=Z(),l=ee(new ae(-1,0,-1,"throw")),i=A(()=>!l.isIdle),a=w(),o=w(new Set),v=A(()=>a.value?a.value.tags.slice().sort((e,r)=>r.count-e.count):[]),b=["custom","Model","lora","pos","size","Postprocess upscaler","Postprocess upscale by","Sampler"].reduce((e,r,p)=>(e[r]=p,e),{}),E=A(()=>Object.entries(Te(v.value,e=>e.type)).sort((e,r)=>b[e[0]]-b[r[0]])),q=te();se(async()=>{a.value=await z(),a.value.img_count&&a.value.expired&&F()});const F=async()=>{l.pushAction(async()=>{await pe(),a.value=await z()})},U=()=>{t.openTagSearchMatchedImageGridInRight(n.tabIdx,q,Array.from(o.value))},S=(e,r=!1)=>(r?`[${e.type}] `:"")+(e.display_name?`${e.display_name} : ${e.name}`:e.name),I=w(!1),_=w(""),G=async()=>{var r,p;if(!_.value){I.value=!1;return}const e=await l.pushAction(()=>ge({tag_name:_.value})).res;e.type!=="custom"&&V.error(N("existInOtherType")),(r=a.value)!=null&&r.tags.find(h=>h.id===e.id)?V.error(N("alreadyExists")):(p=a.value)==null||p.tags.push(e),_.value="",I.value=!1},L=e=>{me.confirm({title:N("confirmDelete"),async onOk(){var p,h;await ve({tag_id:e});const r=((p=a.value)==null?void 0:p.tags.findIndex(T=>T.id===e))??-1;(h=a.value)==null||h.tags.splice(r,1)}})};return(e,r)=>{const p=D,h=ce,T=D,j=de;return u(),g("div",Ae,[y("",!0),a.value?(u(),g($,{key:1},[x("div",null,[x("div",Ne,[k(m(ne),{conv:{value:c=>c.id,text:S,optionText:c=>S(c,!0)},mode:"multiple",style:{width:"100%"},options:m(v),value:Array.from(o.value),disabled:!m(v).length,placeholder:"Select tags to match images","onUpdate:value":r[0]||(r[0]=c=>o.value=new Set(c))},null,8,["conv","options","value","disabled"]),a.value.expired||!a.value.img_count?(u(),B(p,{key:0,onClick:F,loading:!l.isIdle,type:"primary"},{default:O(()=>[C(f(a.value.img_count===0?e.$t("generateIndexHint"):e.$t("UpdateIndex")),1)]),_:1},8,["loading"])):(u(),B(p,{key:1,type:"primary",onClick:U,loading:!l.isIdle,disabled:!o.value.size},{default:O(()=>[C(f(e.$t("search")),1)]),_:1},8,["loading","disabled"]))])]),m(v).filter(c=>c.type!=="custom").length?y("",!0):(u(),g("p",Fe,f(e.$t("needGenerateIdx")),1)),x("div",Me,[(u(!0),g($,null,M(m(E),([c,Q])=>(u(),g("ul",{class:"tag-list",key:c},[x("h3",Pe,f(e.$t(c)),1),(u(!0),g($,null,M(Q,(d,H)=>(u(),g("li",{key:d.id,class:oe(["tag",{selected:o.value.has(d.id)}]),onClick:J=>o.value.has(d.id)?o.value.delete(d.id):o.value.add(d.id)},[o.value.has(d.id)?(u(),B(m(re),{key:0})):y("",!0),C(" "+f(S(d))+" ",1),c==="custom"&&H!==0?(u(),g("span",{key:1,class:"remove",onClickCapture:P(J=>L(d.id),["stop"])},[k(m(le))],40,ze)):y("",!0)],10,Ve))),128)),c==="custom"?(u(),g("li",{key:0,class:"tag",onClick:r[2]||(r[2]=d=>I.value=!0)},[I.value?(u(),B(j,{key:0,compact:""},{default:O(()=>[k(h,{value:_.value,"onUpdate:value":r[1]||(r[1]=d=>_.value=d),style:{width:"128px"},loading:m(i),"allow-clear":"",size:"small"},null,8,["value","loading"]),k(T,{size:"small",type:"primary",onClickCapture:P(G,["stop"]),loading:m(i)},{default:O(()=>[C(f(_.value?e.$t("submit"):e.$t("cancel")),1)]),_:1},8,["onClickCapture","loading"])]),_:1})):(u(),g($,{key:1},[k(m(ie)),C(" "+f(e.$t("add")),1)],64))])):y("",!0)]))),128))])],64)):y("",!0)])}}});const Qe=ue(De,[["__scopeId","data-v-03eeaa14"]]);export{Qe as default};
|
||||
|
|
@ -1 +0,0 @@
|
|||
.container[data-v-f84fa742]{height:var(--pane-max-height);overflow:auto;display:flex;flex-direction:column;align-items:stretch}.container .generate-idx-hint[data-v-f84fa742]{margin:64px;padding:64px;font-size:2em;text-align:center;background-color:var(--zp-secondary-background);white-space:pre-line;line-height:2.5em;border-radius:16px}.container .remove[data-v-f84fa742]{padding:4px;position:cursor;border-radius:2px}.container .remove[data-v-f84fa742]:hover{background-color:var(--zp-secondary-background)}.container .select[data-v-f84fa742]{padding:8px}.container .search-bar[data-v-f84fa742]{padding:8px;display:flex}.container .list-container[data-v-f84fa742]{background-color:var(--zp-secondary-background);overflow:scroll}.container .tag-list[data-v-f84fa742]{list-style:none;margin:16px;border-radius:16px;background:var(--zp-primary-background);padding:8px}.container .tag-list .cat-name[data-v-f84fa742]{position:sticky;top:0;padding:4px 16px;background:var(--zp-primary-background);border-left:4px solid var(--primary-color);margin:4px}.container .tag-list .tag[data-v-f84fa742]{border:2px solid var(--zp-secondary);color:var(--zp-primary);border-radius:999px;padding:4px 16px;margin:4px;display:inline-block;cursor:pointer;max-width:256px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.container .tag-list .tag.selected[data-v-f84fa742]{color:var(--primary-color);border:2px solid var(--primary-color)}
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{at as K,as as R,b$ as Y,bO as W,d as X,z as Z,B as ee,C as ae,a1 as A,r as w,a2 as te,v as se,o as u,l as g,N as y,s as $,q as x,c as k,n as m,Y as ne,K as B,m as O,I as C,t as f,J as M,O as oe,c3 as re,Q as V,b6 as le,c4 as ie,bo as z,L as N,V as ue}from"./index-a52af617.js";import{I as ce,_ as de}from"./index-3d756f88.js";import"./index-17b18069.js";import{c as D,u as pe,e as ge,M as me,r as ve}from"./db-86011ee4.js";import{b as fe}from"./_baseIteratee-4a6b4f10.js";import{B as E}from"./button-4d75a231.js";function _e(s,n,t,l){for(var i=-1,a=s==null?0:s.length;++i<a;){var o=s[i];n(l,o,t(o),s)}return l}function he(s){return function(n,t,l){for(var i=-1,a=Object(n),o=l(n),v=o.length;v--;){var b=o[s?v:++i];if(t(a[b],b,a)===!1)break}return n}}var ye=he();const be=ye;function ke(s,n){return s&&be(s,n,K)}function Ce(s,n){return function(t,l){if(t==null)return t;if(!R(t))return s(t,l);for(var i=t.length,a=n?i:-1,o=Object(t);(n?a--:++a<i)&&l(o[a],a,o)!==!1;);return t}}var Ie=Ce(ke);const we=Ie;function $e(s,n,t,l){return we(s,function(i,a,o){n(l,i,t(i),o)}),l}function xe(s,n){return function(t,l){var i=Y(t)?_e:$e,a=n?n():{};return i(t,s,fe(l),a)}}var Be=Object.prototype,Oe=Be.hasOwnProperty,Se=xe(function(s,n,t){Oe.call(s,t)?s[t].push(n):W(s,t,[n])});const Te=Se,Ae={class:"container"},Ne={class:"search-bar"},Fe={key:0,class:"generate-idx-hint"},Me={class:"list-container"},Ve={class:"cat-name"},ze=["onClick"],De=["onClickCapture"],Ee=X({__name:"TagSearch",props:{tabIdx:null,paneIdx:null},setup(s){const n=s,t=Z(),l=ee(new ae(-1,0,-1,"throw")),i=A(()=>!l.isIdle),a=w(),o=w(new Set),v=A(()=>a.value?a.value.tags.slice().sort((e,r)=>r.count-e.count):[]),b=["custom","Model","lora","pos","size","Sampler"].reduce((e,r,p)=>(e[r]=p,e),{}),q=A(()=>Object.entries(Te(v.value,e=>e.type)).sort((e,r)=>b[e[0]]-b[r[0]])),P=te();se(async()=>{a.value=await D(),a.value.img_count&&a.value.expired&&F()});const F=async()=>{l.pushAction(async()=>{await pe(),a.value=await D()})},U=()=>{t.openTagSearchMatchedImageGridInRight(n.tabIdx,P,Array.from(o.value))},S=(e,r=!1)=>(r?`[${e.type}] `:"")+(e.display_name?`${e.display_name} : ${e.name}`:e.name),I=w(!1),_=w(""),G=async()=>{var r,p;if(!_.value){I.value=!1;return}const e=await l.pushAction(()=>ge({tag_name:_.value})).res;e.type!=="custom"&&z.error(N("existInOtherType")),(r=a.value)!=null&&r.tags.find(h=>h.id===e.id)?z.error(N("alreadyExists")):(p=a.value)==null||p.tags.push(e),_.value="",I.value=!1},L=e=>{me.confirm({title:N("confirmDelete"),async onOk(){var p,h;await ve({tag_id:e});const r=((p=a.value)==null?void 0:p.tags.findIndex(T=>T.id===e))??-1;(h=a.value)==null||h.tags.splice(r,1)}})};return(e,r)=>{const p=E,h=ce,T=E,j=de;return u(),g("div",Ae,[y("",!0),a.value?(u(),g($,{key:1},[x("div",null,[x("div",Ne,[k(m(ne),{conv:{value:c=>c.id,text:S,optionText:c=>S(c,!0)},mode:"multiple",style:{width:"100%"},options:m(v),value:Array.from(o.value),disabled:!m(v).length,placeholder:"Select tags to match images","onUpdate:value":r[0]||(r[0]=c=>o.value=new Set(c))},null,8,["conv","options","value","disabled"]),a.value.expired||!a.value.img_count?(u(),B(p,{key:0,onClick:F,loading:!l.isIdle,type:"primary"},{default:O(()=>[C(f(a.value.img_count===0?e.$t("generateIndexHint"):e.$t("UpdateIndex")),1)]),_:1},8,["loading"])):(u(),B(p,{key:1,type:"primary",onClick:U,loading:!l.isIdle,disabled:!o.value.size},{default:O(()=>[C(f(e.$t("search")),1)]),_:1},8,["loading","disabled"]))])]),m(v).filter(c=>c.type!=="custom").length?y("",!0):(u(),g("p",Fe,f(e.$t("needGenerateIdx")),1)),x("div",Me,[(u(!0),g($,null,M(m(q),([c,Q])=>(u(),g("ul",{class:"tag-list",key:c},[x("h3",Ve,f(e.$t(c)),1),(u(!0),g($,null,M(Q,(d,H)=>(u(),g("li",{key:d.id,class:oe(["tag",{selected:o.value.has(d.id)}]),onClick:J=>o.value.has(d.id)?o.value.delete(d.id):o.value.add(d.id)},[o.value.has(d.id)?(u(),B(m(re),{key:0})):y("",!0),C(" "+f(S(d))+" ",1),c==="custom"&&H!==0?(u(),g("span",{key:1,class:"remove",onClickCapture:V(J=>L(d.id),["stop"])},[k(m(le))],40,De)):y("",!0)],10,ze))),128)),c==="custom"?(u(),g("li",{key:0,class:"tag",onClick:r[2]||(r[2]=d=>I.value=!0)},[I.value?(u(),B(j,{key:0,compact:""},{default:O(()=>[k(h,{value:_.value,"onUpdate:value":r[1]||(r[1]=d=>_.value=d),style:{width:"128px"},loading:m(i),"allow-clear":"",size:"small"},null,8,["value","loading"]),k(T,{size:"small",type:"primary",onClickCapture:V(G,["stop"]),loading:m(i)},{default:O(()=>[C(f(_.value?e.$t("submit"):e.$t("cancel")),1)]),_:1},8,["onClickCapture","loading"])]),_:1})):(u(),g($,{key:1},[k(m(ie)),C(" "+f(e.$t("add")),1)],64))])):y("",!0)]))),128))])],64)):y("",!0)])}}});const Qe=ue(Ee,[["__scopeId","data-v-f84fa742"]]);export{Qe as default};
|
||||
|
|
@ -1 +1 @@
|
|||
import{ci as A,cj as O,cb as P,c1 as _,ck as m,bk as C,at as w,aS as h,cl as E,aU as g,cm as R,aQ as x,b$ as D}from"./index-a52af617.js";var G=A(Object.getPrototypeOf,Object);const B=G;function y(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,O(t.key),t)}}function J(e,n,r){return n&&y(e.prototype,n),r&&y(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function W(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function M(e){return function(n){return n==null?void 0:n[e]}}var S=function(){return P()&&window.document.documentElement},a,X=function(){if(!S())return!1;if(a!==void 0)return a;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),a=n.scrollHeight===1,document.body.removeChild(n),a},F=1,I=2;function L(e,n,r,t){var i=r.length,o=i,s=!t;if(e==null)return!o;for(e=Object(e);i--;){var f=r[i];if(s&&f[2]?f[1]!==e[f[0]]:!(f[0]in e))return!1}for(;++i<o;){f=r[i];var u=f[0],l=e[u],c=f[1];if(s&&f[2]){if(l===void 0&&!(u in e))return!1}else{var d=new _;if(t)var p=t(l,c,u,e,n,d);if(!(p===void 0?m(c,l,F|I,t,d):p))return!1}}return!0}function b(e){return e===e&&!C(e)}function U(e){for(var n=w(e),r=n.length;r--;){var t=n[r],i=e[t];n[r]=[t,i,b(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 $(e){var n=U(e);return n.length==1&&n[0][2]?v(n[0][0],n[0][1]):function(r){return r===e||L(r,e,n)}}function K(e,n,r){var t=e==null?void 0:h(e,n);return t===void 0?r:t}var T=1,N=2;function k(e,n){return E(e)&&b(n)?v(g(e),n):function(r){var t=K(r,e);return t===void 0&&t===n?R(r,e):m(n,t,T|N)}}function q(e){return function(n){return h(n,e)}}function H(e){return E(e)?M(g(e)):q(e)}function Y(e){return typeof e=="function"?e:e==null?x:typeof e=="object"?D(e)?k(e[0],e[1]):$(e):H(e)}export{J as _,W as a,Y as b,S as c,X as d,B as g};
|
||||
import{ci as A,cj as O,cb as P,c1 as _,ck as m,bk as C,at as w,aS as h,cl as E,aU as g,cm as R,aQ as x,b$ as D}from"./index-1bf3235b.js";var G=A(Object.getPrototypeOf,Object);const B=G;function y(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,O(t.key),t)}}function J(e,n,r){return n&&y(e.prototype,n),r&&y(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function W(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function M(e){return function(n){return n==null?void 0:n[e]}}var S=function(){return P()&&window.document.documentElement},a,X=function(){if(!S())return!1;if(a!==void 0)return a;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),a=n.scrollHeight===1,document.body.removeChild(n),a},F=1,I=2;function L(e,n,r,t){var i=r.length,o=i,s=!t;if(e==null)return!o;for(e=Object(e);i--;){var f=r[i];if(s&&f[2]?f[1]!==e[f[0]]:!(f[0]in e))return!1}for(;++i<o;){f=r[i];var u=f[0],l=e[u],c=f[1];if(s&&f[2]){if(l===void 0&&!(u in e))return!1}else{var d=new _;if(t)var p=t(l,c,u,e,n,d);if(!(p===void 0?m(c,l,F|I,t,d):p))return!1}}return!0}function b(e){return e===e&&!C(e)}function U(e){for(var n=w(e),r=n.length;r--;){var t=n[r],i=e[t];n[r]=[t,i,b(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 $(e){var n=U(e);return n.length==1&&n[0][2]?v(n[0][0],n[0][1]):function(r){return r===e||L(r,e,n)}}function K(e,n,r){var t=e==null?void 0:h(e,n);return t===void 0?r:t}var T=1,N=2;function k(e,n){return E(e)&&b(n)?v(g(e),n):function(r){var t=K(r,e);return t===void 0&&t===n?R(r,e):m(n,t,T|N)}}function q(e){return function(n){return h(n,e)}}function H(e){return E(e)?M(g(e)):q(e)}function Y(e){return typeof e=="function"?e:e==null?x:typeof e=="object"?D(e)?k(e[0],e[1]):$(e):H(e)}export{J as _,W as a,Y as b,S as c,X as d,B as g};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{aR as n,c8 as c}from"./index-a52af617.js";import{g as a}from"./_baseIteratee-4a6b4f10.js";var i="[object Object]",s=Function.prototype,p=Object.prototype,e=s.toString,f=p.hasOwnProperty,b=e.call(Object);function l(o){if(!n(o)||c(o)!=i)return!1;var r=a(o);if(r===null)return!0;var t=f.call(r,"constructor")&&r.constructor;return typeof t=="function"&&t instanceof t&&e.call(t)==b}export{l as i};
|
||||
import{aR as n,c8 as c}from"./index-1bf3235b.js";import{g as a}from"./_baseIteratee-f82bf799.js";var i="[object Object]",s=Function.prototype,p=Object.prototype,e=s.toString,f=p.hasOwnProperty,b=e.call(Object);function l(o){if(!n(o)||c(o)!=i)return!1;var r=a(o);if(r===null)return!0;var t=f.call(r,"constructor")&&r.constructor;return typeof t=="function"&&t instanceof t&&e.call(t)==b}export{l as i};
|
||||
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)}}.full-screen-menu[data-v-ea83da82]{position:fixed;z-index:99999;background:var(--zp-primary-background);padding:16px;box-shadow:0 0 4px var(--zp-secondary);border-radius:4px}.full-screen-menu .container[data-v-ea83da82]{height:100%;display:flex;flex-direction:column}.full-screen-menu .gen-info[data-v-ea83da82]{padding-top:8px;flex:1;word-break:break-all;white-space:pre-line;overflow:auto;z-index:1;position:relative}.full-screen-menu.unset-size[data-v-ea83da82]{width:unset!important;height:unset!important}.full-screen-menu .mouse-sensor[data-v-ea83da82]{position:absolute;bottom:0;right:0;width:10px;height:10px;background-color:var(--zp-secondary);cursor:se-resize}.full-screen-menu .actoion-bar[data-v-ea83da82]{display:flex;align-items:center}.full-screen-menu .actoion-bar .icon[data-v-ea83da82]{font-size:1.5em}.full-screen-menu .actoion-bar>*[data-v-ea83da82]{margin-right:8px}.uninstalled-hint[data-v-3722ac77]{margin:256px auto;display:flex;flex-flow:column;justify-content:center;align-items:center}.uninstalled-hint>*[data-v-3722ac77]{margin:16px;text-align:center}.preview-switch[data-v-3722ac77]{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-3722ac77]{margin:16px;font-size:4em;pointer-events:all;cursor:pointer}.preview-switch>*.disable[data-v-3722ac77]{opacity:0;pointer-events:none;cursor:none}.container[data-v-3722ac77]{height:100%;background:var(--zp-secondary-background)}.location-bar[data-v-3722ac77]{padding:4px 16px;background:var(--zp-primary-background);border-bottom:1px solid var(--zp-border);display:flex;align-items:center;justify-content:space-between}.location-bar .actions[data-v-3722ac77]{display:flex;align-items:center;flex-shrink:0}.location-bar a.opt[data-v-3722ac77]{margin-left:8px}.view[data-v-3722ac77]{padding:8px;height:calc(100vh - 96px)}.view .file-list[data-v-3722ac77]{list-style:none;padding:8px;height:100%;overflow:auto}.hint[data-v-3722ac77]{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)}}.full-screen-menu[data-v-5b19760d]{position:fixed;z-index:99999;background:var(--zp-primary-background);padding:16px;box-shadow:0 0 4px var(--zp-secondary);border-radius:4px}.full-screen-menu .container[data-v-5b19760d]{height:100%;display:flex;flex-direction:column}.full-screen-menu .gen-info[data-v-5b19760d]{padding-top:8px;flex:1;word-break:break-all;white-space:pre-line;overflow:auto;z-index:1;position:relative}.full-screen-menu.unset-size[data-v-5b19760d]{width:unset!important;height:unset!important}.full-screen-menu .mouse-sensor[data-v-5b19760d]{position:absolute;bottom:0;right:0;width:10px;height:10px;background-color:var(--zp-secondary);cursor:se-resize}.full-screen-menu .actoion-bar[data-v-5b19760d]{display:flex;align-items:center}.full-screen-menu .actoion-bar .icon[data-v-5b19760d]{font-size:1.5em}.full-screen-menu .actoion-bar>*[data-v-5b19760d]{margin-right:8px}.uninstalled-hint[data-v-3722ac77]{margin:256px auto;display:flex;flex-flow:column;justify-content:center;align-items:center}.uninstalled-hint>*[data-v-3722ac77]{margin:16px;text-align:center}.preview-switch[data-v-3722ac77]{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-3722ac77]{margin:16px;font-size:4em;pointer-events:all;cursor:pointer}.preview-switch>*.disable[data-v-3722ac77]{opacity:0;pointer-events:none;cursor:none}.container[data-v-3722ac77]{height:100%;background:var(--zp-secondary-background)}.location-bar[data-v-3722ac77]{padding:4px 16px;background:var(--zp-primary-background);border-bottom:1px solid var(--zp-border);display:flex;align-items:center;justify-content:space-between}.location-bar .actions[data-v-3722ac77]{display:flex;align-items:center;flex-shrink:0}.location-bar a.opt[data-v-3722ac77]{margin-left:8px}.view[data-v-3722ac77]{padding:8px;height:calc(100vh - 96px)}.view .file-list[data-v-3722ac77]{list-style:none;padding:8px;height:100%;overflow:auto}.hint[data-v-3722ac77]{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>Vite App</title>
|
||||
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-a52af617.js"></script>
|
||||
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-1bf3235b.js"></script>
|
||||
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-29c71e71.css">
|
||||
</head>
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ const loading = computed(() => !queue.isIdle)
|
|||
const info = ref<DataBaseBasicInfo>()
|
||||
const selectedId = ref(new Set<number>())
|
||||
const tags = computed(() => info.value ? info.value.tags.slice().sort((a, b) => b.count - a.count) : [])
|
||||
const classSort = (["custom", "Model", "lora", "pos", "size", "Sampler"]).reduce((p, c, i) => {
|
||||
const classSort = (["custom", "Model", "lora", "pos", "size", "Postprocess upscaler", "Postprocess upscale by", "Sampler", ]).reduce((p, c, i) => {
|
||||
p[c] = i
|
||||
return p
|
||||
}, {} as Dict<number>)
|
||||
|
|
|
|||
|
|
@ -51,44 +51,46 @@ useResizeAndDrag(el, resizeHandle, dragHandle, {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div ref="el" class="full-screen-menu" @wheel.capture.stop :class="{ 'unset-size': !state.expanded }">
|
||||
<div ref="el" class="full-screen-menu" @wheel.capture.stop :class="{ 'unset-size': !state.expanded }">
|
||||
<div class="container">
|
||||
<div class="actoion-bar">
|
||||
<template v-if="state.expanded">
|
||||
<a-dropdown :trigger="['hover']" style="z-index: 99999;" :get-popup-container="p => p.parentNode as HTMLDivElement">
|
||||
<a-button>{{ t('openContextMenu') }}</a-button>
|
||||
<template #overlay>
|
||||
<a-menu @click="emit('contextMenuClick', $event, file, idx)" style="z-index: 99999;">
|
||||
<a-menu-item key="send2txt2img">{{ $t('sendToTxt2img') }}</a-menu-item>
|
||||
<a-menu-item key="send2img2img">{{ $t('sendToImg2img') }}</a-menu-item>
|
||||
<a-menu-item key="send2inpaint">{{ $t('sendToInpaint') }}</a-menu-item>
|
||||
<a-menu-item key="send2extras">{{ $t('sendToExtraFeatures') }}</a-menu-item>
|
||||
<a-menu-item key="send2savedDir">{{ $t('send2savedDir') }}</a-menu-item>
|
||||
<a-sub-menu key="add-custom-tag" :title="$t('addCustomTag')">
|
||||
<a-menu-item v-for="tag in global.conf?.all_custom_tags ?? []" :key="tag.id">{{
|
||||
tag.name
|
||||
}}</a-menu-item>
|
||||
</a-sub-menu>
|
||||
</a-menu>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
<a-button @click="copy2clipboard(imageGenInfo, 'copied')">{{ $t('copyPrompt') }}</a-button>
|
||||
<div flex-placeholder></div>
|
||||
</template>
|
||||
<div class="icon" style="cursor: pointer; " @click="state.expanded = !state.expanded">
|
||||
<FullscreenExitOutlined v-if="state.expanded"/>
|
||||
<FullscreenOutlined v-else/>
|
||||
</div>
|
||||
<div ref="dragHandle" class="icon" style="cursor: grab;" >
|
||||
<div ref="dragHandle" class="icon" style="cursor: grab;">
|
||||
<DragOutlined />
|
||||
</div>
|
||||
<div class="icon" style="cursor: pointer; " @click="state.expanded = !state.expanded">
|
||||
<FullscreenExitOutlined v-if="state.expanded" />
|
||||
<FullscreenOutlined v-else />
|
||||
</div>
|
||||
<template v-if="state.expanded">
|
||||
<div flex-placeholder></div>
|
||||
<a-dropdown :trigger="['hover']" style="z-index: 99999;"
|
||||
:get-popup-container="p => p.parentNode as HTMLDivElement">
|
||||
<a-button>{{ t('openContextMenu') }}</a-button>
|
||||
<template #overlay>
|
||||
<a-menu @click="emit('contextMenuClick', $event, file, idx)" style="z-index: 99999;">
|
||||
<a-menu-item key="send2txt2img">{{ $t('sendToTxt2img') }}</a-menu-item>
|
||||
<a-menu-item key="send2img2img">{{ $t('sendToImg2img') }}</a-menu-item>
|
||||
<a-menu-item key="send2inpaint">{{ $t('sendToInpaint') }}</a-menu-item>
|
||||
<a-menu-item key="send2extras">{{ $t('sendToExtraFeatures') }}</a-menu-item>
|
||||
<a-menu-item key="send2savedDir">{{ $t('send2savedDir') }}</a-menu-item>
|
||||
<a-sub-menu key="add-custom-tag" :title="$t('addCustomTag')">
|
||||
<a-menu-item v-for="tag in global.conf?.all_custom_tags ?? []" :key="tag.id">{{
|
||||
tag.name
|
||||
}}</a-menu-item>
|
||||
</a-sub-menu>
|
||||
</a-menu>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
<a-button @click="copy2clipboard(imageGenInfo, 'copied')">{{ $t('copyPrompt') }}</a-button>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
<div class="gen-info" v-if="state.expanded">
|
||||
{{ imageGenInfo }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mouse-sensor" ref="resizeHandle" v-if="state.expanded"/>
|
||||
<div class="mouse-sensor" ref="resizeHandle" v-if="state.expanded" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ export const getAutoCompletedTagList = async ({
|
|||
}: ReturnTypeAsync<typeof getGlobalSetting>) => {
|
||||
const picked = pick(
|
||||
global_setting,
|
||||
'additional_networks_extra_lora_path',
|
||||
// 'additional_networks_extra_lora_path',
|
||||
'outdir_grids',
|
||||
'outdir_extras_samples',
|
||||
'outdir_img2img_grids',
|
||||
|
|
@ -35,7 +35,7 @@ export const getAutoCompletedTagList = async ({
|
|||
outdir_img2img_samples: t('i2i'),
|
||||
outdir_save: t('saveButtonSavesTo'),
|
||||
outdir_extras_samples: t('extra'),
|
||||
additional_networks_extra_lora_path: 'LoRA',
|
||||
// additional_networks_extra_lora_path: 'LoRA',
|
||||
outdir_grids: t('gridImage'),
|
||||
outdir_img2img_grids: t('i2i-grid'),
|
||||
outdir_samples: t('image'),
|
||||
|
|
|
|||
Loading…
Reference in New Issue