Commit 7b61acbd authored by Thottyottyotty's avatar Thottyottyotty

split visibility method and sort instead

split out the visibility method for pasting and use a sort inside the paste handler to prioritize on-screen fields rather than targeting ONLY on screen fields
parent e373fd0c
...@@ -81,7 +81,10 @@ window.addEventListener('paste', e => { ...@@ -81,7 +81,10 @@ window.addEventListener('paste', e => {
} }
const visibleImageFields = [...gradioApp().querySelectorAll('[data-testid="image"]')] const visibleImageFields = [...gradioApp().querySelectorAll('[data-testid="image"]')]
.filter(el => uiElementIsVisible(el)); .filter(el => uiElementIsVisible(el))
.sort((a,b) => uiElementInSight(b) - uiElementInSight(a));
if (!visibleImageFields.length) { if (!visibleImageFields.length) {
return; return;
} }
......
...@@ -99,10 +99,14 @@ function uiElementIsVisible(el) { ...@@ -99,10 +99,14 @@ function uiElementIsVisible(el) {
const computedStyle = getComputedStyle(el); const computedStyle = getComputedStyle(el);
const isVisible = computedStyle.display !== 'none'; const isVisible = computedStyle.display !== 'none';
if (!isVisible) return false;
return uiElementIsVisible(el.parentNode);
}
function uiElementInSight(el) {
const clRect = el.getBoundingClientRect(); const clRect = el.getBoundingClientRect();
const windowHeight = window.innerHeight; const windowHeight = window.innerHeight;
const onScreen = clRect.bottom > 0 && clRect.top < windowHeight; const isOnScreen = clRect.bottom > 0 && clRect.top < windowHeight;
if (!isVisible || !onScreen) return false; return isOnScreen;
return uiElementIsVisible(el.parentNode);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment