Spaces:
Sleeping
Sleeping
| async () => { | |
| // Get the username from the URL itself | |
| const gradioEl = document.querySelector('gradio-app'); | |
| const imgEls = gradioEl.querySelectorAll('#gallery img'); | |
| // Get the necessary fields | |
| const promptTxt = gradioEl.querySelector('#prompt-text-input textarea').value; | |
| const negativePromptTxt = gradioEl.querySelector('#negative-prompt-text-input textarea').value; | |
| // Get values from the sliders | |
| const modelGuidanceScale = parseFloat(gradioEl.querySelector('#guidance-scale-slider input').value); | |
| const numSteps = parseInt(gradioEl.querySelector('#num-inference-step-slider input').value); | |
| const imageSize = parseInt(gradioEl.querySelector('#image-size-slider input').value); | |
| const seed = parseInt(gradioEl.querySelector('#seed-slider input').value); | |
| // Get the values from dropdowns | |
| const modelName = gradioEl.querySelector('#model-dropdown input').value; | |
| const schedulerName = gradioEl.querySelector('#scheduler-dropdown input').value; | |
| const shareBtnEl = gradioEl.querySelector('#share-btn'); | |
| const shareIconEl = gradioEl.querySelector('#share-btn-share-icon'); | |
| const loadingIconEl = gradioEl.querySelector('#share-btn-loading-icon'); | |
| if(!imgEls.length){ | |
| return; | |
| }; | |
| shareBtnEl.style.pointerEvents = 'none'; | |
| shareIconEl.style.display = 'none'; | |
| loadingIconEl.style.removeProperty('display'); | |
| const files = await Promise.all( | |
| [...imgEls].map(async (imgEl) => { | |
| const res = await fetch(imgEl.src); | |
| const blob = await res.blob(); | |
| const fileSrc = imgEl.src.split('/').pop(); // Get the file name from the img src path | |
| const imgId = Date.now(); | |
| const fileName = `${fileSrc}-${imgId}.jpg`; // Fixed fileName construction | |
| return new File([blob], fileName, { type: 'image/jpeg' }); | |
| }) | |
| ); | |
| // Ensure that only one image is uploaded by taking the first element if there are multiple | |
| if (files.length > 1) { | |
| files.splice(1, files.length - 1); | |
| } | |
| const urls = await Promise.all(files.map((f) => uploadFile( | |
| f, | |
| promptTxt, | |
| negativePromptTxt, | |
| modelName, | |
| schedulerName, | |
| modelGuidanceScale, | |
| numSteps, | |
| imageSize, | |
| seed, | |
| ))); | |
| shareBtnEl.style.removeProperty('pointer-events'); | |
| shareIconEl.style.removeProperty('display'); | |
| loadingIconEl.style.display = 'none'; | |
| } |