diff --git a/lib/widgets-page.php b/lib/widgets-page.php
index cc63e767cea90..858866c02f175 100644
--- a/lib/widgets-page.php
+++ b/lib/widgets-page.php
@@ -29,9 +29,38 @@ function gutenberg_widgets_init( $hook ) {
return;
}
+ // Media settings.
+ $max_upload_size = wp_max_upload_size();
+ if ( ! $max_upload_size ) {
+ $max_upload_size = 0;
+ }
+
+ $settings = array_merge(
+ array(
+ 'disableCustomColors' => get_theme_support( 'disable-custom-colors' ),
+ 'disableCustomFontSizes' => get_theme_support( 'disable-custom-font-sizes' ),
+ 'maxUploadFileSize' => $max_upload_size,
+ ),
+ gutenberg_get_legacy_widget_settings()
+ );
+
+ list( $color_palette, ) = (array) get_theme_support( 'editor-color-palette' );
+ list( $font_sizes, ) = (array) get_theme_support( 'editor-font-sizes' );
+
+ if ( false !== $color_palette ) {
+ $settings['colors'] = $color_palette;
+ }
+
+ if ( false !== $font_sizes ) {
+ $settings['fontSizes'] = $font_sizes;
+ }
+
wp_add_inline_script(
'wp-edit-widgets',
- 'wp.editWidgets.initialize( "widgets-editor" );'
+ sprintf(
+ 'wp.editWidgets.initialize( "widgets-editor", %s );',
+ wp_json_encode( $settings )
+ )
);
// Preload server-registered block schemas.
wp_add_inline_script(
diff --git a/lib/widgets.php b/lib/widgets.php
index e32a78847f087..1bce902fe5624 100644
--- a/lib/widgets.php
+++ b/lib/widgets.php
@@ -65,14 +65,14 @@ function gutenberg_block_editor_admin_footer() {
}
add_action( 'admin_footer', 'gutenberg_block_editor_admin_footer' );
+
/**
- * Extends default editor settings with values supporting legacy widgets.
- *
- * @param array $settings Default editor settings.
+ * Returns the settings required by legacy widgets blocks.
*
- * @return array Filtered editor settings.
+ * @return array Legacy widget settings.
*/
-function gutenberg_legacy_widget_settings( $settings ) {
+function gutenberg_get_legacy_widget_settings() {
+ $settings = array();
/**
* TODO: The hardcoded array should be replaced with a mechanism to allow
* core and third party blocks to specify they already have equivalent
@@ -135,6 +135,17 @@ function gutenberg_legacy_widget_settings( $settings ) {
return $settings;
}
+
+/**
+ * Extends default editor settings with values supporting legacy widgets.
+ *
+ * @param array $settings Default editor settings.
+ *
+ * @return array Filtered editor settings.
+ */
+function gutenberg_legacy_widget_settings( $settings ) {
+ return array_merge( $settings, gutenberg_get_legacy_widget_settings() );
+}
add_filter( 'block_editor_settings', 'gutenberg_legacy_widget_settings' );
/**
diff --git a/packages/edit-widgets/src/components/edit-widgets-initializer/index.js b/packages/edit-widgets/src/components/edit-widgets-initializer/index.js
index 025488a050299..41e15dc5b4110 100644
--- a/packages/edit-widgets/src/components/edit-widgets-initializer/index.js
+++ b/packages/edit-widgets/src/components/edit-widgets-initializer/index.js
@@ -10,11 +10,15 @@ import { withDispatch } from '@wordpress/data';
*/
import Layout from '../layout';
-function EditWidgetsInitializer( { setupWidgetAreas } ) {
+function EditWidgetsInitializer( { setupWidgetAreas, settings } ) {
useEffect( () => {
setupWidgetAreas();
}, [] );
- return ;
+ return (
+
+ );
}
export default compose( [
diff --git a/packages/edit-widgets/src/components/layout/index.js b/packages/edit-widgets/src/components/layout/index.js
index 06ed92455fc6e..4a9a985e89e47 100644
--- a/packages/edit-widgets/src/components/layout/index.js
+++ b/packages/edit-widgets/src/components/layout/index.js
@@ -11,7 +11,7 @@ import Header from '../header';
import Sidebar from '../sidebar';
import WidgetAreas from '../widget-areas';
-function Layout() {
+function Layout( { blockEditorSettings } ) {
return (
<>
@@ -22,7 +22,9 @@ function Layout() {
aria-label={ __( 'Widgets screen content' ) }
tabIndex="-1"
>
-
+
>
);
diff --git a/packages/edit-widgets/src/components/widget-area/index.js b/packages/edit-widgets/src/components/widget-area/index.js
index 7914a4b6ea13a..4825a45cefc6e 100644
--- a/packages/edit-widgets/src/components/widget-area/index.js
+++ b/packages/edit-widgets/src/components/widget-area/index.js
@@ -10,6 +10,7 @@ import {
import { withDispatch, withSelect } from '@wordpress/data';
function WidgetArea( {
+ blockEditorSettings,
blocks,
initialOpen,
updateBlocks,
@@ -25,6 +26,7 @@ function WidgetArea( {
value={ blocks }
onInput={ updateBlocks }
onChange={ updateBlocks }
+ settings={ blockEditorSettings }
>
diff --git a/packages/edit-widgets/src/components/widget-areas/index.js b/packages/edit-widgets/src/components/widget-areas/index.js
index 99a3f1e8689fa..53eea964ec65a 100644
--- a/packages/edit-widgets/src/components/widget-areas/index.js
+++ b/packages/edit-widgets/src/components/widget-areas/index.js
@@ -9,9 +9,10 @@ import { withSelect } from '@wordpress/data';
*/
import WidgetArea from '../widget-area';
-function WidgetAreas( { areas } ) {
+function WidgetAreas( { areas, blockEditorSettings } ) {
return areas.map( ( { id }, index ) => (
,
+ ,
document.getElementById( id )
);
}