33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								(function (Drupal, once) {
							 | 
						||
| 
								 | 
							
								  Drupal.behaviors.autoAltBehavior = {
							 | 
						||
| 
								 | 
							
								    attach: function (context, settings) {
							 | 
						||
| 
								 | 
							
								      once('autoAltBehavior', '#edit-field-media-image-0-alt', context).forEach(function (element) {
							 | 
						||
| 
								 | 
							
								        // Move the wand to where it should be.
							 | 
						||
| 
								 | 
							
								        let wand = context.getElementById("autoalt");
							 | 
						||
| 
								 | 
							
								        let mediaMeta = context.querySelector('.form-managed-file__meta-items');
							 | 
						||
| 
								 | 
							
								        mediaMeta.append(wand);
							 | 
						||
| 
								 | 
							
								        wand.addEventListener('click', generateAltText);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      async function generateAltText() {
							 | 
						||
| 
								 | 
							
								        let imageUrl = document.querySelector('.image-preview__img-wrapper img').src;
							 | 
						||
| 
								 | 
							
								        const url = "/ai/alt-text-generator?";
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								          const response = await fetch(url + new URLSearchParams({
							 | 
						||
| 
								 | 
							
								            image: imageUrl,
							 | 
						||
| 
								 | 
							
								          }).toString());
							 | 
						||
| 
								 | 
							
								          if (!response.ok) {
							 | 
						||
| 
								 | 
							
								            throw new Error(`Response status: ${response.status}`);
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          const json = await response.json();
							 | 
						||
| 
								 | 
							
								          let altInput = document.getElementById('edit-field-media-image-0-alt');
							 | 
						||
| 
								 | 
							
								          altInput.value = json;
							 | 
						||
| 
								 | 
							
								        } catch (error) {
							 | 
						||
| 
								 | 
							
								          console.error(error.message);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								})(Drupal, once);
							 |