@wordpress/block-library
Version:
Block library for the WordPress editor.
120 lines (109 loc) • 3.29 kB
JavaScript
import { createElement } from "@wordpress/element";
/**
* External dependencies
*/
import classNames from 'classnames';
/**
* WordPress dependencies
*/
import { InnerBlocks, useBlockProps } from '@wordpress/block-editor';
/**
* The specific handling by `className` below is needed because `itemsJustification`
* was introduced in https://github.com/WordPress/gutenberg/pull/28980/files and wasn't
* declared in block.json.
*
* @param {Object} attributes Block's attributes.
*/
const migrateWithLayout = attributes => {
var _className$match, _className$match$;
if (!!attributes.layout) {
return attributes;
}
const {
className
} = attributes; // Matches classes with `items-justified-` prefix.
const prefix = `items-justified-`;
const justifiedItemsRegex = new RegExp(`\\b${prefix}[^ ]*[ ]?\\b`, 'g');
const newAttributes = { ...attributes,
className: className === null || className === void 0 ? void 0 : className.replace(justifiedItemsRegex, '').trim()
};
/**
* Add `layout` prop only if `justifyContent` is defined, for backwards
* compatibility. In other cases the block's default layout will be used.
* Also noting that due to the missing attribute, it's possible for a block
* to have more than one of `justified` classes.
*/
const justifyContent = className === null || className === void 0 ? void 0 : (_className$match = className.match(justifiedItemsRegex)) === null || _className$match === void 0 ? void 0 : (_className$match$ = _className$match[0]) === null || _className$match$ === void 0 ? void 0 : _className$match$.trim();
if (justifyContent) {
Object.assign(newAttributes, {
layout: {
type: 'flex',
justifyContent: justifyContent.slice(prefix.length)
}
});
}
return newAttributes;
}; // Social Links block deprecations.
const deprecated = [// V1. Remove CSS variable use for colors.
{
attributes: {
iconColor: {
type: 'string'
},
customIconColor: {
type: 'string'
},
iconColorValue: {
type: 'string'
},
iconBackgroundColor: {
type: 'string'
},
customIconBackgroundColor: {
type: 'string'
},
iconBackgroundColorValue: {
type: 'string'
},
openInNewTab: {
type: 'boolean',
default: false
},
size: {
type: 'string'
}
},
providesContext: {
openInNewTab: 'openInNewTab'
},
supports: {
align: ['left', 'center', 'right'],
anchor: true
},
migrate: migrateWithLayout,
save: props => {
const {
attributes: {
iconBackgroundColorValue,
iconColorValue,
itemsJustification,
size
}
} = props;
const className = classNames(size, {
'has-icon-color': iconColorValue,
'has-icon-background-color': iconBackgroundColorValue,
[`items-justified-${itemsJustification}`]: itemsJustification
});
const style = {
'--wp--social-links--icon-color': iconColorValue,
'--wp--social-links--icon-background-color': iconBackgroundColorValue
};
return createElement("ul", useBlockProps.save({
className,
style
}), createElement(InnerBlocks.Content, null));
}
}];
export default deprecated;
//# sourceMappingURL=deprecated.js.map