Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Overbill1683
Stable Diffusion Webui
提交
d295e97a
S
Stable Diffusion Webui
项目概览
Overbill1683
/
Stable Diffusion Webui
11 个月 前同步成功
通知
1770
Star
81
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
分析
仓库
DevOps
项目成员
Pages
S
Stable Diffusion Webui
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Pages
分析
分析
仓库分析
DevOps
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
提交
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
d295e97a
编写于
10月 15, 2023
作者:
K
Khachatur Avanesian
提交者:
GitHub
10月 15, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update script.js
LF instead CRLF
上级
77bd953d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
68 addition
and
62 deletion
+68
-62
script.js
script.js
+68
-62
未找到文件。
script.js
浏览文件 @
d295e97a
function
gradioApp
()
{
const
elems
=
document
.
getElementsByTagName
(
'
gradio-app
'
)
;
const
elem
=
elems
.
length
==
0
?
document
:
elems
[
0
]
;
const
elems
=
document
.
getElementsByTagName
(
'
gradio-app
'
)
const
elem
=
elems
.
length
==
0
?
document
:
elems
[
0
]
if
(
elem
!==
document
)
{
elem
.
getElementById
=
function
(
id
)
{
return
document
.
getElementById
(
id
)
;
}
;
elem
.
getElementById
=
function
(
id
)
{
return
document
.
getElementById
(
id
)
}
}
return
elem
.
shadowRoot
?
elem
.
shadowRoot
:
elem
;
return
elem
.
shadowRoot
?
elem
.
shadowRoot
:
elem
}
/**
* Get the currently selected top-level UI tab button (e.g. the button that says "Extras").
*/
function
get_uiCurrentTab
()
{
return
gradioApp
().
querySelector
(
'
#tabs > .tab-nav > button.selected
'
)
;
return
gradioApp
().
querySelector
(
'
#tabs > .tab-nav > button.selected
'
)
}
/**
* Get the first currently visible top-level UI tab content (e.g. the div hosting the "txt2img" UI).
*/
function
get_uiCurrentTabContent
()
{
return
gradioApp
().
querySelector
(
'
#tabs > .tabitem[id^=tab_]:not([style*="display: none"])
'
);
return
gradioApp
().
querySelector
(
'
#tabs > .tabitem[id^=tab_]:not([style*="display: none"])
'
)
}
var
uiUpdateCallbacks
=
[]
;
var
uiAfterUpdateCallbacks
=
[]
;
var
uiLoadedCallbacks
=
[]
;
var
uiTabChangeCallbacks
=
[]
;
var
optionsChangedCallbacks
=
[]
;
var
uiAfterUpdateTimeout
=
null
;
var
uiCurrentTab
=
null
;
var
uiUpdateCallbacks
=
[]
var
uiAfterUpdateCallbacks
=
[]
var
uiLoadedCallbacks
=
[]
var
uiTabChangeCallbacks
=
[]
var
optionsChangedCallbacks
=
[]
var
uiAfterUpdateTimeout
=
null
var
uiCurrentTab
=
null
/**
* Register callback to be called at each UI update.
* The callback receives an array of MutationRecords as an argument.
*/
function
onUiUpdate
(
callback
)
{
uiUpdateCallbacks
.
push
(
callback
)
;
uiUpdateCallbacks
.
push
(
callback
)
}
/**
...
...
@@ -49,7 +51,7 @@ function onUiUpdate(callback) {
* not be called quite as often.
*/
function
onAfterUiUpdate
(
callback
)
{
uiAfterUpdateCallbacks
.
push
(
callback
)
;
uiAfterUpdateCallbacks
.
push
(
callback
)
}
/**
...
...
@@ -57,7 +59,7 @@ function onAfterUiUpdate(callback) {
* The callback receives no arguments.
*/
function
onUiLoaded
(
callback
)
{
uiLoadedCallbacks
.
push
(
callback
)
;
uiLoadedCallbacks
.
push
(
callback
)
}
/**
...
...
@@ -65,7 +67,7 @@ function onUiLoaded(callback) {
* The callback receives no arguments.
*/
function
onUiTabChange
(
callback
)
{
uiTabChangeCallbacks
.
push
(
callback
)
;
uiTabChangeCallbacks
.
push
(
callback
)
}
/**
...
...
@@ -74,15 +76,15 @@ function onUiTabChange(callback) {
* @param callback
*/
function
onOptionsChanged
(
callback
)
{
optionsChangedCallbacks
.
push
(
callback
)
;
optionsChangedCallbacks
.
push
(
callback
)
}
function
executeCallbacks
(
queue
,
arg
)
{
for
(
const
callback
of
queue
)
{
try
{
callback
(
arg
)
;
callback
(
arg
)
}
catch
(
e
)
{
console
.
error
(
"
error running callback
"
,
callback
,
"
:
"
,
e
);
console
.
error
(
'
error running callback
'
,
callback
,
'
:
'
,
e
)
}
}
}
...
...
@@ -94,74 +96,78 @@ function executeCallbacks(queue, arg) {
* when there are multiple mutations observed.
*/
function
scheduleAfterUiUpdateCallbacks
()
{
clearTimeout
(
uiAfterUpdateTimeout
)
;
uiAfterUpdateTimeout
=
setTimeout
(
function
()
{
executeCallbacks
(
uiAfterUpdateCallbacks
)
;
},
200
)
;
clearTimeout
(
uiAfterUpdateTimeout
)
uiAfterUpdateTimeout
=
setTimeout
(
function
()
{
executeCallbacks
(
uiAfterUpdateCallbacks
)
},
200
)
}
var
executedOnLoaded
=
false
;
var
executedOnLoaded
=
false
document
.
addEventListener
(
"
DOMContentLoaded
"
,
function
()
{
var
mutationObserver
=
new
MutationObserver
(
function
(
m
)
{
document
.
addEventListener
(
'
DOMContentLoaded
'
,
function
()
{
var
mutationObserver
=
new
MutationObserver
(
function
(
m
)
{
if
(
!
executedOnLoaded
&&
gradioApp
().
querySelector
(
'
#txt2img_prompt
'
))
{
executedOnLoaded
=
true
;
executeCallbacks
(
uiLoadedCallbacks
)
;
executedOnLoaded
=
true
executeCallbacks
(
uiLoadedCallbacks
)
}
executeCallbacks
(
uiUpdateCallbacks
,
m
)
;
scheduleAfterUiUpdateCallbacks
()
;
const
newTab
=
get_uiCurrentTab
()
;
if
(
newTab
&&
(
newTab
!==
uiCurrentTab
)
)
{
uiCurrentTab
=
newTab
;
executeCallbacks
(
uiTabChangeCallbacks
)
;
executeCallbacks
(
uiUpdateCallbacks
,
m
)
scheduleAfterUiUpdateCallbacks
()
const
newTab
=
get_uiCurrentTab
()
if
(
newTab
&&
newTab
!==
uiCurrentTab
)
{
uiCurrentTab
=
newTab
executeCallbacks
(
uiTabChangeCallbacks
)
}
})
;
mutationObserver
.
observe
(
gradioApp
(),
{
childList
:
true
,
subtree
:
true
})
;
})
;
})
mutationObserver
.
observe
(
gradioApp
(),
{
childList
:
true
,
subtree
:
true
})
})
/**
* Add a
Ctrl (Alt) + Enter as a shortcut to start / re
start a generation
* Add a
ctrl+enter as a shortcut to
start a generation
*/
document
.
addEventListener
(
'
keydown
'
,
function
(
e
)
{
const
isEnter
=
e
.
key
===
'
Enter
'
||
e
.
keyCode
===
13
;
const
isModifierKey
=
e
.
metaKey
||
e
.
ctrlKey
||
e
.
altKey
;
document
.
addEventListener
(
'
keydown
'
,
function
(
e
)
{
const
isEnter
=
e
.
key
===
'
Enter
'
||
e
.
keyCode
===
13
const
isModifierKey
=
e
.
metaKey
||
e
.
ctrlKey
||
e
.
altKey
const
interruptButton
=
get_uiCurrentTabContent
().
querySelector
(
'
button[id$=_interrupt]
'
);
const
generateButton
=
get_uiCurrentTabContent
().
querySelector
(
'
button[id$=_generate]
'
);
const
interruptButton
=
get_uiCurrentTabContent
().
querySelector
(
'
button[id$=_interrupt]
'
)
const
generateButton
=
get_uiCurrentTabContent
().
querySelector
(
'
button[id$=_generate]
'
)
if
(
isEnter
&&
isModifierKey
)
{
if
(
interruptButton
.
style
.
display
===
'
block
'
)
{
interruptButton
.
click
()
;
setTimeout
(
function
()
{
generateButton
.
click
()
;
},
500
)
;
interruptButton
.
click
()
setTimeout
(
function
()
{
generateButton
.
click
()
},
500
)
}
else
{
generateButton
.
click
()
;
generateButton
.
click
()
}
e
.
preventDefault
()
;
e
.
preventDefault
()
}
})
;
})
/**
* checks that a UI element is not in another hidden element or tab content
*/
function
uiElementIsVisible
(
el
)
{
if
(
el
===
document
)
{
return
true
;
return
true
}
const
computedStyle
=
getComputedStyle
(
el
)
;
const
isVisible
=
computedStyle
.
display
!==
'
none
'
;
const
computedStyle
=
getComputedStyle
(
el
)
const
isVisible
=
computedStyle
.
display
!==
'
none
'
if
(
!
isVisible
)
return
false
;
return
uiElementIsVisible
(
el
.
parentNode
)
;
if
(
!
isVisible
)
return
false
return
uiElementIsVisible
(
el
.
parentNode
)
}
function
uiElementInSight
(
el
)
{
const
clRect
=
el
.
getBoundingClientRect
()
;
const
windowHeight
=
window
.
innerHeight
;
const
isOnScreen
=
clRect
.
bottom
>
0
&&
clRect
.
top
<
windowHeight
;
const
clRect
=
el
.
getBoundingClientRect
()
const
windowHeight
=
window
.
innerHeight
const
isOnScreen
=
clRect
.
bottom
>
0
&&
clRect
.
top
<
windowHeight
return
isOnScreen
;
return
isOnScreen
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录