aboutsummaryrefslogtreecommitdiff
path: root/javascript/extraNetworks.js
diff options
context:
space:
mode:
Diffstat (limited to 'javascript/extraNetworks.js')
-rw-r--r--javascript/extraNetworks.js64
1 files changed, 56 insertions, 8 deletions
diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js
index b87bca3e..e453094a 100644
--- a/javascript/extraNetworks.js
+++ b/javascript/extraNetworks.js
@@ -113,7 +113,7 @@ function setupExtraNetworks() {
onUiLoaded(setupExtraNetworks);
-var re_extranet = /<([^:]+:[^:]+):[\d.]+>/;
+var re_extranet = /<([^:]+:[^:]+):[\d.]+>(.*)/;
var re_extranet_g = /\s+<([^:]+:[^:]+):[\d.]+>/g;
function tryToRemoveExtraNetworkFromPrompt(textarea, text) {
@@ -121,15 +121,22 @@ function tryToRemoveExtraNetworkFromPrompt(textarea, text) {
var replaced = false;
var newTextareaText;
if (m) {
+ var extraTextAfterNet = m[2];
var partToSearch = m[1];
- newTextareaText = textarea.value.replaceAll(re_extranet_g, function(found) {
+ var foundAtPosition = -1;
+ newTextareaText = textarea.value.replaceAll(re_extranet_g, function(found, net, pos) {
m = found.match(re_extranet);
if (m[1] == partToSearch) {
replaced = true;
+ foundAtPosition = pos;
return "";
}
return found;
});
+
+ if (foundAtPosition >= 0 && newTextareaText.substr(foundAtPosition, extraTextAfterNet.length) == extraTextAfterNet) {
+ newTextareaText = newTextareaText.substr(0, foundAtPosition) + newTextareaText.substr(foundAtPosition + extraTextAfterNet.length);
+ }
} else {
newTextareaText = textarea.value.replaceAll(new RegExp(text, "g"), function(found) {
if (found == text) {
@@ -182,19 +189,20 @@ function extraNetworksSearchButton(tabs_id, event) {
var globalPopup = null;
var globalPopupInner = null;
+function closePopup() {
+ if (!globalPopup) return;
+
+ globalPopup.style.display = "none";
+}
function popup(contents) {
if (!globalPopup) {
globalPopup = document.createElement('div');
- globalPopup.onclick = function() {
- globalPopup.style.display = "none";
- };
+ globalPopup.onclick = closePopup;
globalPopup.classList.add('global-popup');
var close = document.createElement('div');
close.classList.add('global-popup-close');
- close.onclick = function() {
- globalPopup.style.display = "none";
- };
+ close.onclick = closePopup;
close.title = "Close";
globalPopup.appendChild(close);
@@ -263,3 +271,43 @@ function extraNetworksRequestMetadata(event, extraPage, cardName) {
event.stopPropagation();
}
+
+var extraPageUserMetadataEditors = {};
+
+function extraNetworksEditUserMetadata(event, tabname, extraPage, cardName) {
+ var id = tabname + '_' + extraPage + '_edit_user_metadata';
+
+ var editor = extraPageUserMetadataEditors[id];
+ if (!editor) {
+ editor = {};
+ editor.page = gradioApp().getElementById(id);
+ editor.nameTextarea = gradioApp().querySelector("#" + id + "_name" + ' textarea');
+ editor.button = gradioApp().querySelector("#" + id + "_button");
+ extraPageUserMetadataEditors[id] = editor;
+ }
+
+ editor.nameTextarea.value = cardName;
+ updateInput(editor.nameTextarea);
+
+ editor.button.click();
+
+ popup(editor.page);
+
+ event.stopPropagation();
+}
+
+function extraNetworksRefreshSingleCard(page, tabname, name) {
+ requestGet("./sd_extra_networks/get-single-card", {page: page, tabname: tabname, name: name}, function(data) {
+ if (data && data.html) {
+ var card = gradioApp().querySelector('.card[data-name=' + JSON.stringify(name) + ']'); // likely using the wrong stringify function
+
+ var newDiv = document.createElement('DIV');
+ newDiv.innerHTML = data.html;
+ var newCard = newDiv.firstElementChild;
+
+ newCard.style = '';
+ card.parentElement.insertBefore(newCard, card);
+ card.parentElement.removeChild(card);
+ }
+ });
+}