import './awb-fallback';
import { createHigherOrderComponent } from '@wordpress/compose';
import { addFilter } from '@wordpress/hooks';
import getIcon from '../../utils/get-icon';
import metadata from './block.json';
import edit from './edit';
import getBackgroundStyles from './get-background-styles';
import save from './save';
import transforms from './transforms';
const { name } = metadata;
export { metadata, name };
export const settings = {
icon: getIcon('block-grid', true),
ghostkit: {
previewUrl: 'https://www.ghostkit.io/docs/blocks/advanced-columns/',
customStylesCallback(attributes) {
const { gap, gapCustom, gapVerticalCustom } = attributes;
const styles = {
'--gkt-grid__gap': undefined,
'--gkt-grid__gap-vertical': undefined,
...getBackgroundStyles(attributes),
};
// Custom Gap.
if (gap === 'custom') {
if (typeof gapCustom !== 'undefined' && gapCustom !== '') {
// we need to use `%` unit because of conflict with complex calc() and 0 value.
const unit = gapCustom ? 'px' : '%';
styles['--gkt-grid__gap'] = `${gapCustom}${unit}`;
}
if (
typeof gapVerticalCustom !== 'undefined' &&
gapVerticalCustom !== ''
) {
// we need to use `%` unit because of conflict with complex calc() and 0 value.
const unit = gapVerticalCustom ? 'px' : '%';
styles['--gkt-grid__gap-vertical'] =
`${gapVerticalCustom}${unit}`;
}
}
return styles;
},
customStylesFilter(styles, data, isEditor, attributes) {
// change custom styles in Editor.
if (isEditor && attributes?.ghostkit?.id) {
// background.
styles = styles.replace(
new RegExp('> .nk-awb .jarallax-img', 'g'),
'> .awb-gutenberg-preview-block .jarallax-img'
);
}
return styles;
},
},
example: {
attributes: {
columns: 2,
},
innerBlocks: [
{
name: 'ghostkit/grid-column',
innerBlocks: [
{
name: 'core/paragraph',
attributes: {
content:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent et eros eu felis.',
},
},
],
},
{
name: 'ghostkit/grid-column',
innerBlocks: [
{
name: 'core/paragraph',
attributes: {
content:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent et eros eu felis.',
},
},
],
},
],
},
edit,
save,
transforms,
};
/**
* Add data attribute to hide block from editor when inserting templates.
*
* @param {Function} BlockListBlock Original component
* @return {Function} Wrapped component
*/
export const withClasses = createHigherOrderComponent(
(BlockListBlock) =>
function (props) {
const { name: blockName } = props;
if (
blockName === 'ghostkit/grid' &&
props.attributes.isTemplatesModalOnly
) {
return (
);
}
return ;
}
);
addFilter('editor.BlockListBlock', 'ghostkit/grid/with-classes', withClasses);