|
|
|
@ -68,13 +68,19 @@ window.addEventListener('paste', e => {
|
|
|
|
if ( ! isValidImageList( files ) ) {
|
|
|
|
if ( ! isValidImageList( files ) ) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
[...gradioApp().querySelectorAll('input[type=file][accept="image/x-png,image/gif,image/jpeg"]')]
|
|
|
|
|
|
|
|
.filter(input => !input.matches('.\\!hidden input[type=file]'))
|
|
|
|
const visibleImageFields = [...gradioApp().querySelectorAll('[data-testid="image"]')]
|
|
|
|
.forEach(input => {
|
|
|
|
.filter(el => uiElementIsVisible(el));
|
|
|
|
input.files = files;
|
|
|
|
if ( ! visibleImageFields.length ) {
|
|
|
|
input.dispatchEvent(new Event('change'))
|
|
|
|
return;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
[...gradioApp().querySelectorAll('[data-testid="image"]')]
|
|
|
|
|
|
|
|
.filter(imgWrap => !imgWrap.closest('.\\!hidden'))
|
|
|
|
const firstFreeImageField = visibleImageFields
|
|
|
|
.forEach(imgWrap => dropReplaceImage( imgWrap, files ));
|
|
|
|
.filter(el => el.querySelector('input[type=file]'))?.[0];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dropReplaceImage(
|
|
|
|
|
|
|
|
firstFreeImageField ?
|
|
|
|
|
|
|
|
firstFreeImageField :
|
|
|
|
|
|
|
|
visibleImageFields[visibleImageFields.length - 1]
|
|
|
|
|
|
|
|
, files );
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|