UNPKG

@gravityforms/utils

Version:
65 lines (59 loc) 1.93 kB
/** * @module getAttachmentImageUrl * @description Get an image URL from a WordPress attachment object for a specific size. * * @since 4.0.3 * * @param {object} attachment - The WordPress attachment object * @param {string} size - The desired image size (e.g., 'thumbnail', 'medium', 'full') * @param {string} [fallbackSize] - The fallback size if the requested size isn't available * * @return {string} The URL of the requested image size, or the fallback size, or the base URL. * @example * import { getAttachmentImageUrl } from '@gravityforms/utils'; * * const attachment = { * id: 123, * url: 'https://example.com/image.jpg', * sizes: { * thumbnail: { * url: 'https://example.com/image-thumbnail.jpg', * }, * medium: { * url: 'https://example.com/image-medium.jpg', * }, * }, * }; * * const imageUrl = getAttachmentImageUrl( attachment, 'thumbnail' ); * console.log( imageUrl ); // 'https://example.com/image-thumbnail.jpg' */ export const getAttachmentImageUrl = ( attachment, size, fallbackSize = 'full' ) => { // Guard clauses for invalid inputs if ( ! attachment || typeof attachment !== 'object' ) { console.warn( 'Invalid attachment object provided' ); return ''; } // If no size specified, use fallbackSize const requestedSize = size || fallbackSize; // Check if the requested size exists in sizes object if ( attachment.sizes && attachment.sizes[ requestedSize ] && attachment.sizes[ requestedSize ].url ) { return attachment.sizes[ requestedSize ].url; } // Fallback to specified fallbackSize if different from requested size if ( requestedSize !== fallbackSize && attachment.sizes && attachment.sizes[ fallbackSize ] && attachment.sizes[ fallbackSize ].url ) { return attachment.sizes[ fallbackSize ].url; } // Final fallback to base url return attachment.url || ''; }; export default getAttachmentImageUrl;