: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
const getInserterId = controlId => `widgets-inserter-${controlId}`;
function getSidebarControl() {
return class SidebarControl extends customize.Control {
this.subscribers = new Set();
const InserterOuterSection = getInserterOuterSection();
this.inserter = new InserterOuterSection(getInserterId(this.id), {});
customize.section.add(this.inserter);
this.sectionInstance = customize.section(this.section());
this.inspector = this.sectionInstance.inspector;
this.sidebarAdapter = new SidebarAdapter(this.setting, customize);
this.subscribers.add(callback);
this.subscribers.delete(callback);
onChangeSectionExpanded(expanded, args) {
// Close the inserter when the section collapses.
(0,external_wp_data_namespaceObject.dispatch)(store).setIsInserterOpened(false);
this.subscribers.forEach(subscriber => subscriber(expanded, args));
;// CONCATENATED MODULE: ./node_modules/@wordpress/customize-widgets/build-module/filters/move-to-sidebar.js
const withMoveToSidebarToolbarItem = (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(BlockEdit => props => {
let widgetId = (0,external_wp_widgets_namespaceObject.getWidgetIdFromBlock)(props);
const sidebarControls = useSidebarControls();
const activeSidebarControl = useActiveSidebarControl();
const hasMultipleSidebars = sidebarControls?.length > 1;
const blockName = props.name;
const clientId = props.clientId;
const canInsertBlockInSidebar = (0,external_wp_data_namespaceObject.useSelect)(select => {
// Use an empty string to represent the root block list, which
// in the customizer editor represents a sidebar/widget area.
return select(external_wp_blockEditor_namespaceObject.store).canInsertBlockType(blockName, '');
const block = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getBlock(clientId), [clientId]);
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
const [, focusWidget] = useFocusControl();
function moveToSidebar(sidebarControlId) {
const newSidebarControl = sidebarControls.find(sidebarControl => sidebarControl.id === sidebarControlId);
* If there's a widgetId, move it to the other sidebar.
const oldSetting = activeSidebarControl.setting;
const newSetting = newSidebarControl.setting;
oldSetting(oldSetting().filter(id => id !== widgetId));
newSetting([...newSetting(), widgetId]);
* If there isn't a widgetId, it's most likely a inner block.
* First, remove the block in the original sidebar,
* then, create a new widget in the new sidebar and get back its widgetId.
const sidebarAdapter = newSidebarControl.sidebarAdapter;
const addedWidgetIds = sidebarAdapter.setWidgets([...sidebarAdapter.getWidgets(), blockToWidget(block)]);
// The last non-null id is the added widget's id.
widgetId = addedWidgetIds.reverse().find(id => !!id);
// Move focus to the moved widget and expand the sidebar.
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockEdit, {
}), hasMultipleSidebars && canInsertBlockInSidebar && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_widgets_namespaceObject.MoveToWidgetArea, {
widgetAreas: sidebarControls.map(sidebarControl => ({
name: sidebarControl.params.label,
description: sidebarControl.params.description
currentWidgetAreaId: activeSidebarControl?.id,
}, 'withMoveToSidebarToolbarItem');
(0,external_wp_hooks_namespaceObject.addFilter)('editor.BlockEdit', 'core/customize-widgets/block-edit', withMoveToSidebarToolbarItem);
;// CONCATENATED MODULE: ./node_modules/@wordpress/customize-widgets/build-module/filters/replace-media-upload.js
const replaceMediaUpload = () => external_wp_mediaUtils_namespaceObject.MediaUpload;
(0,external_wp_hooks_namespaceObject.addFilter)('editor.MediaUpload', 'core/edit-widgets/replace-media-upload', replaceMediaUpload);
;// CONCATENATED MODULE: ./node_modules/@wordpress/customize-widgets/build-module/filters/wide-widget-display.js
wp: wide_widget_display_wp
const withWideWidgetDisplay = (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(BlockEdit => props => {
var _wp$customize$Widgets;
const isWide = (_wp$customize$Widgets = wide_widget_display_wp.customize.Widgets.data.availableWidgets.find(widget => widget.id_base === idBase)?.is_wide) !== null && _wp$customize$Widgets !== void 0 ? _wp$customize$Widgets : false;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockEdit, {
}, 'withWideWidgetDisplay');
(0,external_wp_hooks_namespaceObject.addFilter)('editor.BlockEdit', 'core/customize-widgets/wide-widget-display', withWideWidgetDisplay);
;// CONCATENATED MODULE: ./node_modules/@wordpress/customize-widgets/build-module/filters/index.js
;// CONCATENATED MODULE: ./node_modules/@wordpress/customize-widgets/build-module/index.js
const DISABLED_BLOCKS = ['core/more', 'core/block', 'core/freeform', 'core/template-part'];
const ENABLE_EXPERIMENTAL_FSE_BLOCKS = false;
* Initializes the widgets block editor in the customizer.
* @param {string} editorName The editor name.
* @param {Object} blockEditorSettings Block editor settings.
function initialize(editorName, blockEditorSettings) {
(0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core/customize-widgets', {
(0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).reapplyBlockTypeFilters();
const coreBlocks = (0,external_wp_blockLibrary_namespaceObject.__experimentalGetCoreBlocks)().filter(block => {
return !(DISABLED_BLOCKS.includes(block.name) || block.name.startsWith('core/post') || block.name.startsWith('core/query') || block.name.startsWith('core/site') || block.name.startsWith('core/navigation'));
(0,external_wp_blockLibrary_namespaceObject.registerCoreBlocks)(coreBlocks);
(0,external_wp_widgets_namespaceObject.registerLegacyWidgetBlock)();
(0,external_wp_widgets_namespaceObject.registerLegacyWidgetVariations)(blockEditorSettings);
(0,external_wp_widgets_namespaceObject.registerWidgetGroupBlock)();
// As we are unregistering `core/freeform` to avoid the Classic block, we must
// replace it with something as the default freeform content handler. Failure to
// do this will result in errors in the default block parser.
// see: https://github.com/WordPress/gutenberg/issues/33097
(0,external_wp_blocks_namespaceObject.setFreeformContentHandlerName)('core/html');
const SidebarControl = getSidebarControl(blockEditorSettings);
build_module_wp.customize.sectionConstructor.sidebar = getSidebarSection();
build_module_wp.customize.controlConstructor.sidebar_block_editor = SidebarControl;
const container = document.createElement('div');
document.body.appendChild(container);
build_module_wp.customize.bind('ready', () => {
const sidebarControls = [];
build_module_wp.customize.control.each(control => {
if (control instanceof SidebarControl) {
sidebarControls.push(control);
(0,external_wp_element_namespaceObject.createRoot)(container).render( /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CustomizeWidgets, {
api: build_module_wp.customize,
sidebarControls: sidebarControls,
blockEditorSettings: blockEditorSettings
(window.wp = window.wp || {}).customizeWidgets = __webpack_exports__;