yijin928's picture
Upload 140 files
1b80e0f verified
import { app } from "/scripts/app.js";
import { api } from "/scripts/api.js"
const MultilineSymbol = Symbol();
const MultilineResizeSymbol = Symbol();
function getStyles(name) {
//console.log("getStyles called " + name);
return api.fetchApi('/nsuite/styles')
.then(response => response.json())
.then(data => {
// Eseguire l'elaborazione dei dati
const styles = data.styles;
//console.log('Styles:', styles);
let positive_prompt = "";
let negative_prompt = "";
// Funzione per ottenere positive_prompt e negative_prompt dato il name
for (let i = 0; i < styles[0].length; i++) {
const style = styles[0][i];
if (style.name === name) {
positive_prompt = style.prompt;
negative_prompt = style.negative_prompt;
//console.log('Style:', style.name);
break;
}
}
if (positive_prompt !== "") {
//console.log("Positive prompt:", positive_prompt);
//console.log("Negative prompt:", negative_prompt);
return { positive_prompt: positive_prompt, negative_prompt: negative_prompt };
} else {
return { positive_prompt: "", negative_prompt: "" };
}
})
.catch(error => {
console.error('Error:', error);
throw error; // Rilancia l'errore per consentire al chiamante di gestirlo
});
}
function addStyles(name, positive_prompt, negative_prompt) {
return api.fetchApi('/nsuite/styles/add', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: name,
positive_prompt: positive_prompt,
negative_prompt: negative_prompt
}),
})
}
function updateStyles(name, positive_prompt, negative_prompt) {
return api.fetchApi('/nsuite/styles/update', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: name,
positive_prompt: positive_prompt,
negative_prompt: negative_prompt
}),
})
}
function removeStyles(name) {
//confirmation
let ok = confirm("Are you sure you want to remove this style?");
if (!ok) {
return;
}
return api.fetchApi('/nsuite/styles/remove', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: name
}),
})
}
app.registerExtension({
name: "n.CLIPTextEncodeAdvancedNSuite",
async beforeRegisterNodeDef(nodeType, nodeData, app) {
const onAdded = nodeType.prototype.onAdded;
if (nodeData.name === "CLIPTextEncodeAdvancedNSuite [n-suite]") {
nodeType.prototype.onAdded = function () {
onAdded?.apply(this, arguments);
const styles = this.widgets.find((w) => w.name === "styles");
const p_prompt = this.widgets.find((w) => w.name === "positive_prompt");
const n_prompt = this.widgets.find((w) => w.name === "negative_prompt");
const cb = nodeData.callback;
let addedd_positive_prompt = "";
let addedd_negative_prompt = "";
styles.callback = function () {
let index = styles.options.values.indexOf(styles.value);
if (addedd_positive_prompt == "" && addedd_negative_prompt == "") {
getStyles(styles.options.values[index-1]).then(style_prompts => {
//wait 4 seconds
console.log(style_prompts);
addedd_positive_prompt = style_prompts.positive_prompt;
addedd_negative_prompt = style_prompts.negative_prompt;
//alert("Addedd positive prompt: " + addedd_positive_prompt + "\nAddedd negative prompt: " + addedd_negative_prompt);
})
}
let current_positive_prompt = p_prompt.value;
let current_negative_prompt = n_prompt.value;
getStyles(styles.value).then(style_prompts => {
//console.log(style_prompts)
if ((current_positive_prompt.trim() != addedd_positive_prompt.trim() || current_negative_prompt.trim() != addedd_negative_prompt.trim())) {
let ok = confirm("Style has been changed. Do you want to change style without saving?");
if (!ok) {
if (styles.value === styles.options.values[0]) {
value = styles.options.values[0];
}
styles.value = styles.options.values[index-1];
return;
}
}
// add the addedd prompt to the current prompt
p_prompt.value = style_prompts.positive_prompt;
n_prompt.value = style_prompts.negative_prompt;
addedd_positive_prompt = style_prompts.positive_prompt;
addedd_negative_prompt = style_prompts.negative_prompt;
if (cb) {
return cb.apply(this, arguments);
}
})
.catch(error => {
console.error('Error:', error);
});
};
let savestyle;
let replacestyle;
let deletestyle;
// Create the button widget for selecting the files
savestyle = this.addWidget("button", "New", "image", () => {
////console.log("Save called");
//ask input name style
let inputName = prompt("Enter a name for the style:", styles.value);
if (inputName === null) {
return;
}
addStyles(inputName, p_prompt.value, n_prompt.value);
// Add the file to the dropdown list and update the widget value
if (!styles.options.values.includes(inputName)) {
styles.options.values.push(inputName);
}
},{
cursor: "grab",
},);
replacestyle = this.addWidget("button", "Replace", "image", () => {
//console.log("Replace called");
updateStyles(styles.value, p_prompt.value, n_prompt.value);
},{
cursor: "grab",
},);
deletestyle = this.addWidget("button", "Delete", "image", () => {
//console.log("Delete called");
removeStyles(styles.value);
// Remove the file from the dropdown list
styles.options.values = styles.options.values.filter((value) => value !== styles.value);
},{
cursor: "grab",
},);
savestyle.serialize = false;
}
};
},
});