text: /**
   * some of the code is based on the Admin Addon Media Rename by Dávid Szabó
   *     see https://github.com/david-szabo97/grav-plugin-admin-addon-media-rename
   */
  $(function() {
  
  	adminAddonMediaMetadata.metadata = {};
  
  	var clickedElement;
  	var fileName;
  	var $elementName;
  	var modal;
  	var $modal;
  	var isPageMedia = false;
  
  	// Append modal
  	$('body').append(adminAddonMediaMetadata.MODAL);
  
  	$(document).off('click', '[data-dz-name], .dz-metadata-edit');
  	$(document).on('click', '[data-dz-name], .dz-metadata-edit', function(e) {
  		clickedElement = $(this);
  		modal = $.remodal.lookup[$('[data-remodal-id=modal-admin-addon-media-metadata]').data('remodal')];
  		$modal = modal.$modal;
  		modal.open();
  
  		// Populate fields
  		elementName = clickedElement.closest('.dz-preview').find('[data-dz-name]')
  		fileName = elementName.text();
  		$('[name=filename]', $modal).val(fileName);
  		if (mediaListOnLoad[fileName] !== undefined) {
  			for (var i = 0; i < metadataFormFields.length; i++) {
  				$('[name=' + metadataFormFields[i] + ']', $modal).val(mediaListOnLoad[fileName][metadataFormFields[i]]);
  			}
  		} else {
  			for (var i = 0; i < metadataFormFields.length; i++) {
  				$('[name=' + metadataFormFields[i] + ']', $modal).val('');
  			}
  		}
  		$modal.find('form span.filename').text(fileName);
  
  		// Reset loading state
  		$('.loading', $modal).addClass('hidden');
  //		$('.button', $modal).removeClass('hidden').css('visibility', 'hidden');
  		$('.button', $modal).removeClass('hidden');
  
  		isPageMedia = !clickedElement.closest('.dz-preview').hasClass('dz-no-editor');
  		$modal.find('.block-toggle').toggleClass('hidden', !isPageMedia);
  		$modal.find('.page-media-info').toggleClass('hidden', !isPageMedia);
  		$modal.find('.non-page-media-info').toggleClass('hidden', isPageMedia);
  	});
  
  	/**
  	 * add the new data dynamically to mediaListOnLoad JSON object
  	 * for newly uploaded media files as well as for “older” files, overwriting the data already in that JSON object
  	 * and save it in the YAML file
  	 * Variables from above ($(document).on), like fileName and $modal are still available
  	 */
  	$(document).on('click', '[data-remodal-id=modal-admin-addon-media-metadata] .button', function(e) {
  		// hiding the button and showing the loading icon
  		$('.loading', $modal).removeClass('hidden');
  		$('.button', $modal).addClass('hidden');
  
  		// create the file object for newly uploaded files
  		if (mediaListOnLoad[fileName] === undefined) {
  			mediaListOnLoad[fileName] = new Object();
  			mediaListOnLoad[fileName]['filename'] = fileName;
  		}
  
  		// Do request with JS Fetch API: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
  		var data = new FormData();
  		data.append('filename', fileName);
  		data.append('admin-nonce', GravAdmin.config.admin_nonce);
  
  		// add the new values to mediaListOnLoad (for later updates before page reload)
  		// append the new values to the FormData (data.append)
  		for (var i = 0; i < metadataFormFields.length; i++) {
  			var newVal = $('[name=' + metadataFormFields[i] + ']', $modal).val();
  			mediaListOnLoad[fileName][metadataFormFields[i]] = newVal;
  			data.append(metadataFormFields[i], newVal);
  		}
  
  		fetch(adminAddonMediaMetadata.PATH, { method: 'POST', body: data, credentials: 'same-origin' })
  			//.then(res => res.json())
  			.then(result => {
  				if (result.error) {
  					var alertModal = $.remodal.lookup[$('[data-remodal-id=modal-admin-addon-media-metadata-alert]').data('remodal')];
  					alertModal.open();
  					$('p', alertModal.$modal).html(result.error.msg);
  					return;
  				}
  
  				modal.close();
  			});
  	});
  
  	// adding the “edit metadata” button next to all media files
  	setInterval(function addMetadataButton() {
  		$('.dz-preview').each(function(i, dz) {
  			if ($(this).find('.dz-metadata-edit').length == 0) {
  				var editButton = document.createElement('a');
  				//editButton.href = 'javascript:undefined;';
  				editButton.title = adminAddonMediaMetadataButton;
  				editButton.className = 'dz-metadata-edit';
  				editButton.innerText = adminAddonMediaMetadataButton;
  				var fileName = $(this).find('[data-dz-name]').text();
  				editButton.setAttribute('data-filename', fileName);
  				$(this).append(editButton);
  			}
  			$(this).find('.dz-metadata').remove();
  		});
  	}, 1000);
  });
  
  