import './deprecated';
import './attributes';
import './styles';
import './effects';
import './position';
import './spacings';
import './frame';
import './transform';
import './custom-css';
import './display';
import './toc-headings';
import './toolbar-templates';
import './block-actions-copy-paste';
import { hasBlockSupport } from '@wordpress/blocks';
import { createHigherOrderComponent } from '@wordpress/compose';
import { addFilter } from '@wordpress/hooks';
import ApplyFilters from '../components/apply-filters';
/**
* Override the default edit UI to include GhostKit extensions
*
* @param {Function | Component} BlockEdit Original component.
*
* @return {string} Wrapped component.
*/
const withGhostKitExtensions = createHigherOrderComponent(
(OriginalComponent) => {
function GhostKitExtensionsWrapper(props) {
const hasExtensionsSupport = hasBlockSupport(props.name, [
'ghostkit',
]);
if (!hasExtensionsSupport) {
return ;
}
return (
<>
{/*
* Used priorities:
* 11 - Effects
* 12 - Position
* 13 - Spacings
* 14 - Frame
* 15 - Transform
* 16 - Custom CSS
* 17 - Display Conditions
*/}
>
);
}
return GhostKitExtensionsWrapper;
},
'withGhostKitExtensions'
);
/**
* Add `ghostkit` attribute to deprecated blocks settings.
*
* @param {Object} blockSettings Original block settings.
*
* @return {Object} Filtered block settings.
*/
function addAttribute(blockSettings) {
// Add attribute to All blocks.
// Previously we used hasBlockSupport function, but it's not working correctly for all blocks
// and leads to issues with blocks that are not registered yet (probably in deprecated block variations).
if (blockSettings.attributes && !blockSettings.attributes.ghostkit) {
blockSettings.attributes.ghostkit = {
type: 'object',
};
}
return blockSettings;
}
addFilter('editor.BlockEdit', 'ghostkit/extensions', withGhostKitExtensions);
addFilter(
'blocks.registerBlockType',
'ghostkit/extensions/additional-attributes',
addAttribute
);