Skip to content

Commit

Permalink
add onEdit function for js and rework token-counter.js to use it
Browse files Browse the repository at this point in the history
  • Loading branch information
AUTOMATIC1111 committed Oct 1, 2023
1 parent 7026b96 commit c7e810a
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 17 deletions.
1 change: 1 addition & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ module.exports = {
create_submit_args: "readonly",
restart_reload: "readonly",
updateInput: "readonly",
onEdit: "readonly",
//extraNetworks.js
requestGet: "readonly",
popup: "readonly",
Expand Down
26 changes: 9 additions & 17 deletions javascript/token-counters.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
let promptTokenCountDebounceTime = 800;
let promptTokenCountTimeouts = {};
var promptTokenCountUpdateFunctions = {};
let promptTokenCountUpdateFunctions = {};

function update_txt2img_tokens(...args) {
// Called from Gradio
update_token_counter("txt2img_token_button");
update_token_counter("txt2img_negative_token_button");
if (args.length == 2) {
return args[0];
}
Expand All @@ -14,23 +13,15 @@ function update_txt2img_tokens(...args) {
function update_img2img_tokens(...args) {
// Called from Gradio
update_token_counter("img2img_token_button");
update_token_counter("img2img_negative_token_button");
if (args.length == 2) {
return args[0];
}
return args;
}

function update_token_counter(button_id) {
if (opts.disable_token_counters) {
return;
}
if (promptTokenCountTimeouts[button_id]) {
clearTimeout(promptTokenCountTimeouts[button_id]);
}
promptTokenCountTimeouts[button_id] = setTimeout(
() => gradioApp().getElementById(button_id)?.click(),
promptTokenCountDebounceTime,
);
promptTokenCountUpdateFunctions[button_id]?.();
}


Expand Down Expand Up @@ -69,10 +60,11 @@ function setupTokenCounting(id, id_counter, id_button) {
prompt.parentElement.insertBefore(counter, prompt);
prompt.parentElement.style.position = "relative";

promptTokenCountUpdateFunctions[id] = function() {
update_token_counter(id_button);
};
textarea.addEventListener("input", promptTokenCountUpdateFunctions[id]);
func = onEdit(id, textarea, 800, function() {
gradioApp().getElementById(id_button)?.click();
});
promptTokenCountUpdateFunctions[id] = func;
promptTokenCountUpdateFunctions[id_button] = func;
}

function setupTokenCounters() {
Expand Down
17 changes: 17 additions & 0 deletions javascript/ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -366,3 +366,20 @@ function switchWidthHeight(tabname) {
updateInput(height);
return [];
}


var onEditTimers = {};

// calls func after afterMs milliseconds has passed since the input elem has beed enited by user
function onEdit(editId, elem, afterMs, func) {
var edited = function() {
var existingTimer = onEditTimers[editId];
if (existingTimer) clearTimeout(existingTimer);

onEditTimers[editId] = setTimeout(func, afterMs);
};

elem.addEventListener("input", edited);

return edited;
}

0 comments on commit c7e810a

Please sign in to comment.