Files
joreyaesh-comfyui_scroll_ov…/web/js/example.js
T
2025-03-09 14:02:05 -04:00

58 lines
1.4 KiB
JavaScript

import { app } from '../../../scripts/app.js';
app.registerExtension({
name: 'Scroll Over Textarea',
settings: [
{
id: 'scroll_over_textarea.enable',
name: 'Prevent Scrolling Within Textareas',
type: 'boolean',
defaultValue: true,
onChange: (newVal, oldVal) => {
updateTextareaScrollListener(newVal);
},
},
],
async setup() {
console.log('Scroll Over Textarea Extension Loaded');
const cb = (event) => {
app.canvas.processMouseWheel(event);
event.preventDefault();
};
app.canvas['_ignore_textarea_scroll_callback'] = cb;
updateTextareaScrollListener();
},
async nodeCreated(node) {
const enabled = app.extensionManager.setting.get(
'scroll_over_textarea.enable'
);
setTimeout(() => {
updateTextareaScrollListener(enabled);
}, 50);
},
});
function updateTextareaScrollListener(
ignoreTextareaScroll = app.extensionManager.setting.get(
'scroll_over_textarea.enable'
)
) {
const textareas = document.querySelectorAll('textarea.comfy-multiline-input');
textareas.forEach((textarea) => {
if (app.canvas) {
if (ignoreTextareaScroll) {
textarea.addEventListener(
'mousewheel',
app.canvas['_ignore_textarea_scroll_callback']
);
} else {
textarea.removeEventListener(
'mousewheel',
app.canvas['_ignore_textarea_scroll_callback']
);
}
}
});
}