(function( $ ) { 'use strict'; // Tags name var tagAttachmentId = 'input[name="' + sua_obj.input_name + '"]'; var tagAttachmentAvatar = '.sua-attachment-avatar'; var tagAttachmentDesc = '#sua-attachment-description'; var tagButtonAdd = '#btn-media-add'; var tagButtonRemove = '#btn-media-remove'; // jQuery elements by tags var elAttachmentId = $( tagAttachmentId ); var elAttachmentAvatar = $( tagAttachmentAvatar) ; var elAttachmentDesc = $( tagAttachmentDesc ); var elButtonAdd = $( tagButtonAdd ); var elButtonRemove = $( tagButtonRemove ); // WordPress default media sizes var WPMediaSizes = [ 'full', 'large', 'medium', 'thumbnail' ]; // Get default Src and default SrcSet var defaultSrc = sua_obj.default_avatar_src; var defaultSrcSet = sua_obj.default_avatar_srcset; /* * Update attachment * * @since 3.6 * @return void */ function updateAttachment( attachmentSrc = '', attachmentSrcSet = '', attachmentId = null ) { // Change the image attributes elAttachmentAvatar.attr({ 'src': attachmentSrc, 'srcset': attachmentSrcSet }); // Set attachment ID value elAttachmentId.val( attachmentId === null ? '' : parseInt( attachmentId ) ); // Toggle class hidden elAttachmentDesc.toggleClass( 'hidden' ); elButtonRemove.toggleClass( 'hidden' ); } /* * Init functions * * @since 2.8 */ $(function() { // Set click functions $(document) .on( 'click', tagButtonAdd, function() { // Open WordPress Media Library wp.media.editor.open(); // WP Media Editor function wp.media.editor.send.attachment = function( props, attachment ) { // Set attachment Src to default URL var attachmentSrc = attachment.url; // If there is a smaller version I use it for ( const WPMediaSize of WPMediaSizes ) { if ( typeof attachment.sizes[WPMediaSize] !== 'undefined' && typeof attachment.sizes[WPMediaSize].url !== 'undefined' ) { attachmentSrc = attachment.sizes[WPMediaSize].url; } } // Update Attachment updateAttachment( attachmentSrc, attachmentSrc, attachment.id ); } }) .on( 'click', tagButtonRemove, function() { // Update Attachment updateAttachment( defaultSrc, defaultSrcSet ); }) .on( 'click', tagAttachmentAvatar, function() { // Trigger to add button elButtonAdd.trigger( 'click' ); }); }); })( jQuery );