import { createBlock } from '@wordpress/blocks'; export default { from: [ // Transform from default Gallery block. { type: 'block', blocks: ['core/gallery'], isMatch(attributes, blockData) { return ( (blockData && blockData.innerBlocks && blockData.innerBlocks.length) || (attributes && attributes.images && attributes.images.length) ); }, transform(attributes, innerBlocks) { const { className } = attributes; // New gallery since WordPress 5.9 const isNewGallery = innerBlocks && innerBlocks.length; let images = []; if (isNewGallery) { images = innerBlocks.map((img) => ({ id: parseInt(img.attributes.id, 10), imgUrl: img.attributes.url, imgThumbnailUrl: img.attributes.url, title: img.attributes.caption, url: (img.attributes.linkDestination === 'custom' || img.attributes.linkDestination === 'attachment') && img.attributes.href ? img.attributes.href : '', })); } else { images = attributes.images.map((img) => ({ id: parseInt(img.id, 10), imgUrl: img.fullUrl, imgThumbnailUrl: img.url, title: img.caption, })); } return createBlock('visual-portfolio/block', { setup_wizard: 'false', content_source: 'images', items_count: -1, layout: 'masonry', items_style_fly__align: 'bottom-center', masonry_columns: parseInt(attributes.columns, 10) || 3, items_click_action: attributes.linkTo === 'none' && !isNewGallery ? 'false' : 'url', images, className, }); }, }, // Transform from default Latest Posts block. { type: 'block', blocks: ['core/latest-posts'], transform(attributes) { const { className, postLayout, columns = 3, postsToShow = 6, displayPostContent, displayPostContentRadio, excerptLength, displayPostDate, orderBy = 'date', order = 'desc', categories, } = attributes; return createBlock('visual-portfolio/block', { content_source: 'post-based', posts_source: 'post', posts_order_by: orderBy, posts_order_direction: order, posts_taxonomies: categories ? [categories] : false, items_count: postsToShow, layout: 'grid', grid_columns: postLayout === 'grid' ? columns : 1, items_style: 'default', items_style_default__show_categories: false, items_style_default__show_date: displayPostDate ? 'true' : 'false', items_style_default__show_excerpt: displayPostContent, items_style_default__excerpt_words_count: displayPostContentRadio === 'full_post' ? 100 : excerptLength, items_style_default__align: 'left', items_style_default__show_read_more: displayPostContent ? 'true' : 'false', className, }); }, }, ], };