114 lines
2.9 KiB
JavaScript
114 lines
2.9 KiB
JavaScript
|
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,
|
||
|
});
|
||
|
},
|
||
|
},
|
||
|
],
|
||
|
};
|