import PostsConfigurator from './configurators/PostsConfigurator'; import UsersConfigurator from './configurators/UsersConfigurator'; import SiteInfoConfigurator from './configurators/SiteInfoConfigurator'; import CommentsConfigurator from './configurators/CommentsConfigurator'; import GenericConfigurator from './configurators/GenericConfigurator'; const CORE_CONFIGURATORS = { posts: PostsConfigurator, users: UsersConfigurator, site_info: SiteInfoConfigurator, comments: CommentsConfigurator, }; // Add-on registration APIs on window.wlconduitData. window.wlconduitData = window.wlconduitData || {}; window.wlconduitData.configurators = window.wlconduitData.configurators || {}; /** * Advanced: Register a full custom React component as configurator. * Core block types cannot be overridden. */ window.wlconduitData.registerConfigurator = function ( blockType, component ) { if ( CORE_CONFIGURATORS[ blockType ] ) { return; } window.wlconduitData.configurators[ blockType ] = component; }; /** * Simple: Create a configurator from a config object. * No React knowledge needed — just describe the tabs. * * Example: * window.wlconduitData.createConfigurator('wc_orders', { * tabs: [ * { key: 'fields', label: 'Fields', type: 'field-selector' }, * { key: 'meta', label: 'Custom Fields', type: 'meta-selector', endpoint: 'order-meta-keys' }, * { key: 'filters', label: 'Filters', type: 'filter-selector' }, * ] * }); */ window.wlconduitData.createConfigurator = function ( blockType, config ) { if ( CORE_CONFIGURATORS[ blockType ] ) { return; } const tabs = config.tabs || []; window.wlconduitData.configurators[ blockType ] = function ( props ) { return ; }; }; export default function BlockConfigurator( { block, definition, dispatch } ) { const Configurator = CORE_CONFIGURATORS[ block.block_type ] || window.wlconduitData.configurators[ block.block_type ]; if ( ! Configurator ) { return

No configurator available for block type: { block.block_type }

; } return ; }