/** * Block registration entry point. * * @package SoloFiltersImageEnhancements */ import { registerBlockType } from '@wordpress/blocks'; import { addFilter } from '@wordpress/hooks'; import './styles/style.scss'; import './styles/editor.scss'; import metadata from './block.json'; import edit from './edit'; import save from './save'; import { PRESETS, DEFAULT_PRESET, isValidPresetSlug } from './presets'; import { transforms } from './transforms'; registerBlockType( metadata.name, { ...metadata, edit, save, transforms, } ); /** * Normalise the filter attribute on save. If the saved slug is unknown * (e.g. the post was edited by hand), fall back to DEFAULT_PRESET so the * block still renders without errors. */ function ensureValidFilter( settings, name ) { if ( name !== 'ksolo/image-filter' ) { return settings; } const originalSave = settings.save; settings.save = ( props ) => { if ( ! isValidPresetSlug( props.attributes.filter ) ) { props.attributes.filter = DEFAULT_PRESET; } return originalSave( props ); }; return settings; } addFilter( 'blocks.registerBlockType', 'solofilters-image-enhancements/ensure-valid-filter', ensureValidFilter ); // Re-export PRESETS so the consuming downstream code (e.g. a future // design-tool integration) can grab them from this module. export { PRESETS };