aboutsummaryrefslogtreecommitdiff
path: root/script.js
diff options
context:
space:
mode:
Diffstat (limited to 'script.js')
-rw-r--r--script.js33
1 files changed, 23 insertions, 10 deletions
diff --git a/script.js b/script.js
index 34cca765..c0e678ea 100644
--- a/script.js
+++ b/script.js
@@ -124,16 +124,29 @@ document.addEventListener("DOMContentLoaded", function() {
* Add a ctrl+enter as a shortcut to start a generation
*/
document.addEventListener('keydown', function(e) {
- var handled = false;
- if (e.key !== undefined) {
- if ((e.key == "Enter" && (e.metaKey || e.ctrlKey || e.altKey))) handled = true;
- } else if (e.keyCode !== undefined) {
- if ((e.keyCode == 13 && (e.metaKey || e.ctrlKey || e.altKey))) handled = true;
- }
- if (handled) {
- var button = get_uiCurrentTabContent().querySelector('button[id$=_generate]');
- if (button) {
- button.click();
+ 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]');
+
+ if (isEnter && isModifierKey) {
+ if (interruptButton.style.display === 'block') {
+ interruptButton.click();
+ const callback = (mutationList) => {
+ for (const mutation of mutationList) {
+ if (mutation.type === 'attributes' && mutation.attributeName === 'style') {
+ if (interruptButton.style.display === 'none') {
+ generateButton.click();
+ observer.disconnect();
+ }
+ }
+ }
+ };
+ const observer = new MutationObserver(callback);
+ observer.observe(interruptButton, {attributes: true});
+ } else {
+ generateButton.click();
}
e.preventDefault();
}