313 lines
7.7 KiB
JavaScript
313 lines
7.7 KiB
JavaScript
|
|
function loadNodes() {
|
|
let Elements = {
|
|
prompt: getEle('#oldsix-prompt1'),
|
|
prompt2: getEle('#oldsix-prompt2'),
|
|
txt2img: getEle("#txt2img_prompt_container"),
|
|
img2img: getEle("#img2img_prompt_container"),
|
|
|
|
txtpromt: document.querySelector('#txt2img_prompt textarea'),
|
|
txtnpromt: document.querySelector('#txt2img_neg_prompt textarea'),
|
|
|
|
imgpromt: document.querySelector('#img2img_prompt textarea'),
|
|
imgnpromt: document.querySelector('#img2img_neg_prompt textarea'),
|
|
|
|
btnReload:[],
|
|
btnClearP:[],
|
|
btnClearNP:[]
|
|
|
|
|
|
}
|
|
return Elements
|
|
}
|
|
|
|
function getEle(key) {
|
|
return gradioApp().querySelector(key)
|
|
}
|
|
|
|
function CreateEle(type,parentDom,css,html){
|
|
let dom= document.createElement(type)
|
|
setCss(dom, css)
|
|
dom.innerHTML=html
|
|
parentDom.appendChild(dom)
|
|
return dom
|
|
}
|
|
|
|
function addNPrompt(e) {
|
|
let elementprompt = e.target.dataset.pageindex==1 ? Elements.imgnpromt : Elements.txtnpromt
|
|
elementprompt.focus();
|
|
document.execCommand('insertText', false, e.target.dataset.sixoldtit + ',')
|
|
|
|
}
|
|
|
|
function toggleNavCss(dom){
|
|
let tabrow=dom.parentNode.parentNode.parentNode;
|
|
let tabnav=tabrow.parentNode.previousSibling;
|
|
let activebtns=tabrow.querySelectorAll(".oldsix-btn.active")
|
|
let target= tabnav.children[tabrow.dataset.tabitem]
|
|
|
|
if(activebtns.length){
|
|
target.classList.add("active")
|
|
}
|
|
else{
|
|
target.classList.remove("active")
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
function addPrompt(e) {
|
|
let dom=e.target;
|
|
let str= e.target.dataset.sixoldtit + ','
|
|
let elementprompt =e.target.dataset.pageindex==1 ? Elements.imgpromt : Elements.txtpromt
|
|
dom.classList.toggle("active")
|
|
toggleNavCss(dom)
|
|
ishas=false;
|
|
for (const item of dom.classList) {
|
|
if(item=='active'){
|
|
ishas=true
|
|
}
|
|
}
|
|
if(!ishas){
|
|
elementprompt.focus();
|
|
elementprompt.value= elementprompt.value.replace(new RegExp(`(${str})`, 'g'), '');
|
|
return
|
|
}
|
|
|
|
elementprompt.focus();
|
|
document.execCommand('insertText', false,str)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function getJsonStr() {
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 1500));
|
|
|
|
let val1 = document.querySelector("#oldsix-area1 textarea").value
|
|
let val2 = document.querySelector("#oldsix-area2 textarea").value
|
|
return val1||val2
|
|
}
|
|
|
|
function clearTextarea(){
|
|
document.querySelector("#oldsix-area1 textarea").value='area1'
|
|
document.querySelector("#oldsix-area2 textarea").value='area2'
|
|
}
|
|
|
|
function createBtnTitle(name,parent){
|
|
let div=document.createElement('div')
|
|
let btn=document.createElement('button')
|
|
setCss(div,'oldsix-row ')
|
|
setCss(btn,'oldsix-btn-tit sm primary gradio-button svelte-1ipelgc')
|
|
btn.innerHTML=name
|
|
|
|
div.appendChild(btn)
|
|
parent.appendChild(div)
|
|
return div
|
|
}
|
|
|
|
function createBtnPrompt(key,val,parent,pageindex){
|
|
let btn=document.createElement('button')
|
|
setCss(btn,'sm secondary gradio-button svelte-1ipelgc oldsix-btn')
|
|
btn.innerHTML=key
|
|
btn.dataset.sixoldtit=val
|
|
btn.dataset.pageindex=pageindex
|
|
parent.appendChild(btn)
|
|
btn.addEventListener('click',function(e){
|
|
|
|
addPrompt(e)
|
|
})
|
|
btn.addEventListener('contextmenu', function (e) {
|
|
e.preventDefault();
|
|
addNPrompt(e)
|
|
})
|
|
|
|
return btn
|
|
}
|
|
|
|
|
|
function traverse(obj,parent,pageindex) {
|
|
for (var key in obj) {
|
|
if (obj.hasOwnProperty(key)) {
|
|
if (typeof obj[key] === 'object' && obj[key] !== null) {
|
|
let resdom= createBtnTitle(key,parent)
|
|
traverse(obj[key],resdom,pageindex);
|
|
} else {
|
|
createBtnPrompt(key,obj[key],parent,pageindex)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function setCss(dom, css) {
|
|
dom.setAttribute("class", css)
|
|
}
|
|
|
|
function tabClick(self){
|
|
let selfdivs=self.parentNode.children
|
|
let contents=self.parentNode.nextSibling.children
|
|
let index=self.dataset.tabitem
|
|
|
|
for (let i = 0; i < selfdivs.length; i++) {
|
|
|
|
if(i==index){
|
|
contents[i].classList.remove('six-hide')
|
|
selfdivs[i].classList.add('selected')
|
|
}
|
|
else{
|
|
contents[i].classList.add('six-hide')
|
|
selfdivs[i].classList.remove('selected')
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
function reloadNodes(jsonstring, btnreloadDom) {
|
|
let jsonObj = JSON.parse(jsonstring)
|
|
let tabs = document.createElement('div')
|
|
let tabnav = document.createElement('div')
|
|
let contentContainer=document.createElement('div')
|
|
let count=0
|
|
Object.keys(jsonObj).forEach(function (key) {
|
|
let tabbtn=CreateEle('button',tabnav,'svelte-1g805jl',key)
|
|
tabbtn.dataset.tabitem=count
|
|
tabbtn.addEventListener('click',()=>{
|
|
tabClick(tabbtn)
|
|
})
|
|
let tabitem=CreateEle('div',contentContainer,'tab-item six-hide','')
|
|
tabitem.dataset.tabitem=count
|
|
let content=CreateEle('div',tabitem,'oldsix-content','')
|
|
if(count==0){
|
|
tabbtn.classList.add('selected')
|
|
tabitem.classList.remove('six-hide')
|
|
}
|
|
traverse(jsonObj[key],content,btnreloadDom.dataset.page)
|
|
count++
|
|
});
|
|
|
|
setCss(tabs, 'oldsix-tabs gradio-tabs svelte-1g805jl')
|
|
setCss(tabnav, 'oldsix-tab-nav scroll-hide svelte-1g805jl')
|
|
setCss(contentContainer, 'tab-container')
|
|
|
|
tabs.appendChild(tabnav)
|
|
tabs.appendChild(contentContainer)
|
|
btnreloadDom.parentNode.parentNode.appendChild(tabs)
|
|
}
|
|
|
|
|
|
async function loadCustomUI(){
|
|
let jsonstr= await getJsonStr()
|
|
if (jsonstr) {
|
|
|
|
reloadNodes(jsonstr, Elements.btnReload[0])
|
|
reloadNodes(jsonstr, Elements.btnReload[1])
|
|
|
|
}
|
|
|
|
}
|
|
function reloadUI(){
|
|
|
|
divs= document.querySelectorAll('.oldsix-tabs')
|
|
divs.forEach(item=>{
|
|
item.remove()
|
|
})
|
|
loadCustomUI()
|
|
}
|
|
|
|
function move(){
|
|
Elements = loadNodes()
|
|
Elements.txt2img.appendChild(Elements.prompt)
|
|
Elements.img2img.appendChild(Elements.prompt2)
|
|
|
|
}
|
|
|
|
function clearPrompt(pageindex){
|
|
|
|
let textarea, container;
|
|
if(pageindex==0){
|
|
textarea=Elements.txtpromt;
|
|
container=Elements.prompt
|
|
}else{
|
|
textarea=Elements.imgpromt;
|
|
container=Elements.prompt2
|
|
}
|
|
textarea.value='';
|
|
let tabs=container.querySelector(".oldsix-tab-nav").children
|
|
let btns=container.querySelectorAll(".oldsix-btn.active")
|
|
|
|
for (const item of tabs) {
|
|
item.classList.remove('active')
|
|
}
|
|
|
|
btns.forEach(btn=>{
|
|
btn.classList.remove('active')
|
|
})
|
|
|
|
}
|
|
|
|
function clearNPrompt(pageindex){
|
|
|
|
let textarea=pageindex=='1'?Elements.imgnpromt:Elements.txtnpromt;
|
|
textarea.value='';
|
|
}
|
|
|
|
function loadClearbtn(){
|
|
let btns1= Elements.prompt.querySelectorAll('.oldsix-clear')
|
|
let btns2= Elements.prompt2.querySelectorAll('.oldsix-clear')
|
|
btns1.forEach(item=>item.dataset.page='0')
|
|
btns2.forEach(item=>item.dataset.page='1')
|
|
Elements.btnClearP.push(btns1[0])
|
|
Elements.btnClearP.push(btns2[0])
|
|
Elements.btnClearNP.push(btns1[1])
|
|
Elements.btnClearNP.push(btns2[1])
|
|
|
|
Elements.btnClearP.forEach(item=>{
|
|
item.addEventListener('click',function(e){
|
|
clearPrompt(item.dataset.page)
|
|
})
|
|
});
|
|
Elements.btnClearNP.forEach(item=>{
|
|
item.addEventListener('click',function(e){
|
|
clearNPrompt(item.dataset.page)
|
|
})
|
|
})
|
|
}
|
|
|
|
|
|
onUiLoaded(async => {
|
|
move()
|
|
|
|
loadClearbtn()
|
|
|
|
|
|
|
|
Elements.btnReload= document.querySelectorAll('.oldsix-reload');
|
|
Elements.btnReload.forEach((item,index) => {
|
|
item.dataset.page=index
|
|
item.addEventListener('click', () => {
|
|
reloadUI()
|
|
})
|
|
})
|
|
|
|
loadCustomUI()
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|