From 400a7ac31b79411ed69751810d35a4391cd6e132 Mon Sep 17 00:00:00 2001 From: Jorge Costa Date: Sat, 27 Jan 2024 00:05:24 +0000 Subject: [PATCH 01/20] Editor: Add original_source and author_text to the templates REST API. For the new "All templates" UI to work properly we need the REST API to provide to additional fields original_source, and author_text. Props ntsekouras, get_dave. Fixes #60358. git-svn-id: https://develop.svn.wordpress.org/trunk@57366 602fd350-edb4-49c9-b593-d223f7449a82 --- .../class-wp-rest-templates-controller.php | 133 ++++++++-- .../wpRestTemplateAutosavesController.php | 4 +- .../wpRestTemplateRevisionsController.php | 4 +- .../rest-api/wpRestTemplatesController.php | 232 ++++++++++-------- 4 files changed, 254 insertions(+), 119 deletions(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-templates-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-templates-controller.php index 53f8faa75595b..ab2fdce15b719 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-templates-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-templates-controller.php @@ -726,6 +726,14 @@ public function prepare_item_for_response( $item, $request ) { $data['modified'] = mysql_to_rfc3339( $template->modified ); } + if ( rest_is_field_included( 'author_text', $fields ) ) { + $data['author_text'] = self::get_wp_templates_author_text_field( $template ); + } + + if ( rest_is_field_included( 'original_source', $fields ) ) { + $data['original_source'] = self::get_wp_templates_original_source_field( $template ); + } + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object( $data, $request ); $data = $this->filter_response_by_context( $data, $context ); @@ -748,6 +756,85 @@ public function prepare_item_for_response( $item, $request ) { return $response; } + /** + * Returns the source from where the template originally comes from. + * + * @access private + * @internal + * + * @param WP_Block_Template $template_object Template instance. + * @return string Original source of the template one of theme, plugin, site, or user. + */ + private static function get_wp_templates_original_source_field( $template_object ) { + if ( 'wp_template' === $template_object->type || 'wp_template_part' === $template_object->type ) { + // Added by theme. + // Template originally provided by a theme, but customized by a user. + // Templates originally didn't have the 'origin' field so identify + // older customized templates by checking for no origin and a 'theme' + // or 'custom' source. + if ( $template_object->has_theme_file && + ( 'theme' === $template_object->origin || ( + empty( $template_object->origin ) && in_array( + $template_object->source, + array( + 'theme', + 'custom', + ), + true + ) ) + ) + ) { + return 'theme'; + } + + // Added by plugin. + if ( $template_object->has_theme_file && 'plugin' === $template_object->origin ) { + return 'plugin'; + } + + // Added by site. + // Template was created from scratch, but has no author. Author support + // was only added to templates in WordPress 5.9. Fallback to showing the + // site logo and title. + if ( empty( $template_object->has_theme_file ) && 'custom' === $template_object->source && empty( $template_object->author ) ) { + return 'site'; + } + } + + // Added by user. + return 'user'; + } + + /** + * Returns a human readable text for the author of the template. + * + * @access private + * @internal + * + * @param WP_Block_Template $template_object Template instance. + * @return string Human readable text for the author. + */ + private static function get_wp_templates_author_text_field( $template_object ) { + $original_source = self::get_wp_templates_original_source_field( $template_object ); + switch ( $original_source ) { + case 'theme': + $theme_name = wp_get_theme( $template_object->theme )->get( 'Name' ); + return empty( $theme_name ) ? $template_object->theme : $theme_name; + case 'plugin': + $plugins = get_plugins(); + $plugin = $plugins[ plugin_basename( sanitize_text_field( $template_object->theme . '.php' ) ) ]; + return empty( $plugin['Name'] ) ? $template_object->theme : $plugin['Name']; + case 'site': + return get_bloginfo( 'name' ); + case 'user': + $author = get_user_by( 'id', $template_object->author ); + if ( ! $author ) { + return __( 'Unknown author' ); + } + return $author->get( 'display_name' ); + } + } + /** * Prepares links for the request. @@ -861,13 +948,13 @@ public function get_item_schema() { 'title' => $this->post_type, 'type' => 'object', 'properties' => array( - 'id' => array( + 'id' => array( 'description' => __( 'ID of template.' ), 'type' => 'string', 'context' => array( 'embed', 'view', 'edit' ), 'readonly' => true, ), - 'slug' => array( + 'slug' => array( 'description' => __( 'Unique slug identifying the template.' ), 'type' => 'string', 'context' => array( 'embed', 'view', 'edit' ), @@ -875,29 +962,29 @@ public function get_item_schema() { 'minLength' => 1, 'pattern' => '[a-zA-Z0-9_\%-]+', ), - 'theme' => array( + 'theme' => array( 'description' => __( 'Theme identifier for the template.' ), 'type' => 'string', 'context' => array( 'embed', 'view', 'edit' ), ), - 'type' => array( + 'type' => array( 'description' => __( 'Type of template.' ), 'type' => 'string', 'context' => array( 'embed', 'view', 'edit' ), ), - 'source' => array( + 'source' => array( 'description' => __( 'Source of template' ), 'type' => 'string', 'context' => array( 'embed', 'view', 'edit' ), 'readonly' => true, ), - 'origin' => array( + 'origin' => array( 'description' => __( 'Source of a customized template' ), 'type' => 'string', 'context' => array( 'embed', 'view', 'edit' ), 'readonly' => true, ), - 'content' => array( + 'content' => array( 'description' => __( 'Content of template.' ), 'type' => array( 'object', 'string' ), 'default' => '', @@ -916,7 +1003,7 @@ public function get_item_schema() { ), ), ), - 'title' => array( + 'title' => array( 'description' => __( 'Title of template.' ), 'type' => array( 'object', 'string' ), 'default' => '', @@ -935,43 +1022,61 @@ public function get_item_schema() { ), ), ), - 'description' => array( + 'description' => array( 'description' => __( 'Description of template.' ), 'type' => 'string', 'default' => '', 'context' => array( 'embed', 'view', 'edit' ), ), - 'status' => array( + 'status' => array( 'description' => __( 'Status of template.' ), 'type' => 'string', 'enum' => array_keys( get_post_stati( array( 'internal' => false ) ) ), 'default' => 'publish', 'context' => array( 'embed', 'view', 'edit' ), ), - 'wp_id' => array( + 'wp_id' => array( 'description' => __( 'Post ID.' ), 'type' => 'integer', 'context' => array( 'embed', 'view', 'edit' ), 'readonly' => true, ), - 'has_theme_file' => array( + 'has_theme_file' => array( 'description' => __( 'Theme file exists.' ), 'type' => 'bool', 'context' => array( 'embed', 'view', 'edit' ), 'readonly' => true, ), - 'author' => array( + 'author' => array( 'description' => __( 'The ID for the author of the template.' ), 'type' => 'integer', 'context' => array( 'view', 'edit', 'embed' ), ), - 'modified' => array( + 'modified' => array( 'description' => __( "The date the template was last modified, in the site's timezone." ), 'type' => 'string', 'format' => 'date-time', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), + 'author_text' => array( + 'type' => 'string', + 'description' => __( 'Human readable text for the author.' ), + 'readonly' => true, + 'context' => array( 'view', 'edit', 'embed' ), + ), + 'original_source' => array( + 'description' => __( 'Where the template originally comes from e.g. \'theme\'' ), + 'type' => 'string', + 'readonly' => true, + 'context' => array( 'view', 'edit', 'embed' ), + 'enum' => array( + 'theme', + 'plugin', + 'site', + 'user', + ), + ), ), ); diff --git a/tests/phpunit/tests/rest-api/wpRestTemplateAutosavesController.php b/tests/phpunit/tests/rest-api/wpRestTemplateAutosavesController.php index 9452a188433be..bb6824d67914d 100644 --- a/tests/phpunit/tests/rest-api/wpRestTemplateAutosavesController.php +++ b/tests/phpunit/tests/rest-api/wpRestTemplateAutosavesController.php @@ -310,7 +310,7 @@ public function test_get_item_schema() { $properties = $data['schema']['properties']; - $this->assertCount( 16, $properties ); + $this->assertCount( 18, $properties ); $this->assertArrayHasKey( 'id', $properties, 'ID key should exist in properties.' ); $this->assertArrayHasKey( 'slug', $properties, 'Slug key should exist in properties.' ); $this->assertArrayHasKey( 'theme', $properties, 'Theme key should exist in properties.' ); @@ -326,6 +326,8 @@ public function test_get_item_schema() { $this->assertArrayHasKey( 'modified', $properties, 'modified key should exist in properties.' ); $this->assertArrayHasKey( 'is_custom', $properties, 'is_custom key should exist in properties.' ); $this->assertArrayHasKey( 'parent', $properties, 'Parent key should exist in properties.' ); + $this->assertArrayHasKey( 'author_text', $properties, 'Parent key should exist in properties.' ); + $this->assertArrayHasKey( 'original_source', $properties, 'Parent key should exist in properties.' ); } /** diff --git a/tests/phpunit/tests/rest-api/wpRestTemplateRevisionsController.php b/tests/phpunit/tests/rest-api/wpRestTemplateRevisionsController.php index fdd3570ebdcfe..954e4977d3249 100644 --- a/tests/phpunit/tests/rest-api/wpRestTemplateRevisionsController.php +++ b/tests/phpunit/tests/rest-api/wpRestTemplateRevisionsController.php @@ -449,7 +449,7 @@ public function test_get_item_schema() { $data = $response->get_data(); $properties = $data['schema']['properties']; - $this->assertCount( 16, $properties ); + $this->assertCount( 18, $properties ); $this->assertArrayHasKey( 'id', $properties, 'ID key should exist in properties.' ); $this->assertArrayHasKey( 'slug', $properties, 'Slug key should exist in properties.' ); $this->assertArrayHasKey( 'theme', $properties, 'Theme key should exist in properties.' ); @@ -465,6 +465,8 @@ public function test_get_item_schema() { $this->assertArrayHasKey( 'modified', $properties, 'modified key should exist in properties.' ); $this->assertArrayHasKey( 'is_custom', $properties, 'is_custom key should exist in properties.' ); $this->assertArrayHasKey( 'parent', $properties, 'Parent key should exist in properties.' ); + $this->assertArrayHasKey( 'author_text', $properties, 'Parent key should exist in properties.' ); + $this->assertArrayHasKey( 'original_source', $properties, 'Parent key should exist in properties.' ); } /** diff --git a/tests/phpunit/tests/rest-api/wpRestTemplatesController.php b/tests/phpunit/tests/rest-api/wpRestTemplatesController.php index 266ca89a332ad..046f358ba3428 100644 --- a/tests/phpunit/tests/rest-api/wpRestTemplatesController.php +++ b/tests/phpunit/tests/rest-api/wpRestTemplatesController.php @@ -102,23 +102,25 @@ public function test_get_items() { $this->assertSame( array( - 'id' => 'default//my_template', - 'theme' => 'default', - 'slug' => 'my_template', - 'source' => 'custom', - 'origin' => null, - 'type' => 'wp_template', - 'description' => 'Description of my template.', - 'title' => array( + 'id' => 'default//my_template', + 'theme' => 'default', + 'slug' => 'my_template', + 'source' => 'custom', + 'origin' => null, + 'type' => 'wp_template', + 'description' => 'Description of my template.', + 'title' => array( 'raw' => 'My Template', 'rendered' => 'My Template', ), - 'status' => 'publish', - 'wp_id' => self::$post->ID, - 'has_theme_file' => false, - 'is_custom' => true, - 'author' => 0, - 'modified' => mysql_to_rfc3339( self::$post->post_modified ), + 'status' => 'publish', + 'wp_id' => self::$post->ID, + 'has_theme_file' => false, + 'is_custom' => true, + 'author' => 0, + 'modified' => mysql_to_rfc3339( self::$post->post_modified ), + 'author_text' => 'Test Blog', + 'original_source' => 'site', ), $this->find_and_normalize_template_by_id( $data, 'default//my_template' ) ); @@ -147,23 +149,25 @@ public function test_get_item() { $this->assertSame( array( - 'id' => 'default//my_template', - 'theme' => 'default', - 'slug' => 'my_template', - 'source' => 'custom', - 'origin' => null, - 'type' => 'wp_template', - 'description' => 'Description of my template.', - 'title' => array( + 'id' => 'default//my_template', + 'theme' => 'default', + 'slug' => 'my_template', + 'source' => 'custom', + 'origin' => null, + 'type' => 'wp_template', + 'description' => 'Description of my template.', + 'title' => array( 'raw' => 'My Template', 'rendered' => 'My Template', ), - 'status' => 'publish', - 'wp_id' => self::$post->ID, - 'has_theme_file' => false, - 'is_custom' => true, - 'author' => 0, - 'modified' => mysql_to_rfc3339( self::$post->post_modified ), + 'status' => 'publish', + 'wp_id' => self::$post->ID, + 'has_theme_file' => false, + 'is_custom' => true, + 'author' => 0, + 'modified' => mysql_to_rfc3339( self::$post->post_modified ), + 'author_text' => 'Test Blog', + 'original_source' => 'site', ), $data ); @@ -184,23 +188,25 @@ public function test_get_item_works_with_a_single_slash( $endpoint_url ) { $this->assertSame( array( - 'id' => 'default//my_template', - 'theme' => 'default', - 'slug' => 'my_template', - 'source' => 'custom', - 'origin' => null, - 'type' => 'wp_template', - 'description' => 'Description of my template.', - 'title' => array( + 'id' => 'default//my_template', + 'theme' => 'default', + 'slug' => 'my_template', + 'source' => 'custom', + 'origin' => null, + 'type' => 'wp_template', + 'description' => 'Description of my template.', + 'title' => array( 'raw' => 'My Template', 'rendered' => 'My Template', ), - 'status' => 'publish', - 'wp_id' => self::$post->ID, - 'has_theme_file' => false, - 'is_custom' => true, - 'author' => 0, - 'modified' => mysql_to_rfc3339( self::$post->post_modified ), + 'status' => 'publish', + 'wp_id' => self::$post->ID, + 'has_theme_file' => false, + 'is_custom' => true, + 'author' => 0, + 'modified' => mysql_to_rfc3339( self::$post->post_modified ), + 'author_text' => 'Test Blog', + 'original_source' => 'site', ), $data ); @@ -241,26 +247,29 @@ public function test_get_item_with_valid_theme_dirname( $theme_dir, $template, a $data = $response->get_data(); unset( $data['content'] ); unset( $data['_links'] ); + $author_name = get_user_by( 'id', self::$admin_id )->get( 'display_name' ); $this->assertSameSetsWithIndex( array( - 'id' => "{$theme_dir}//{$template}", - 'theme' => $theme_dir, - 'slug' => $template, - 'source' => 'custom', - 'origin' => null, - 'type' => 'wp_template', - 'description' => $args['post_excerpt'], - 'title' => array( + 'id' => "{$theme_dir}//{$template}", + 'theme' => $theme_dir, + 'slug' => $template, + 'source' => 'custom', + 'origin' => null, + 'type' => 'wp_template', + 'description' => $args['post_excerpt'], + 'title' => array( 'raw' => $args['post_title'], 'rendered' => $args['post_title'], ), - 'status' => 'publish', - 'wp_id' => $post->ID, - 'has_theme_file' => false, - 'is_custom' => true, - 'author' => self::$admin_id, - 'modified' => mysql_to_rfc3339( $post->post_modified ), + 'status' => 'publish', + 'wp_id' => $post->ID, + 'has_theme_file' => false, + 'is_custom' => true, + 'author' => self::$admin_id, + 'modified' => mysql_to_rfc3339( $post->post_modified ), + 'author_text' => $author_name, + 'original_source' => 'user', ), $data ); @@ -421,27 +430,31 @@ public function test_create_item() { unset( $data['_links'] ); unset( $data['wp_id'] ); + $author_name = get_user_by( 'id', self::$admin_id )->get( 'display_name' ); + $this->assertSame( array( - 'id' => 'default//my_custom_template', - 'theme' => 'default', - 'content' => array( + 'id' => 'default//my_custom_template', + 'theme' => 'default', + 'content' => array( 'raw' => 'Content', ), - 'slug' => 'my_custom_template', - 'source' => 'custom', - 'origin' => null, - 'type' => 'wp_template', - 'description' => 'Just a description', - 'title' => array( + 'slug' => 'my_custom_template', + 'source' => 'custom', + 'origin' => null, + 'type' => 'wp_template', + 'description' => 'Just a description', + 'title' => array( 'raw' => 'My Template', 'rendered' => 'My Template', ), - 'status' => 'publish', - 'has_theme_file' => false, - 'is_custom' => true, - 'author' => self::$admin_id, - 'modified' => mysql_to_rfc3339( $modified ), + 'status' => 'publish', + 'has_theme_file' => false, + 'is_custom' => true, + 'author' => self::$admin_id, + 'modified' => mysql_to_rfc3339( $modified ), + 'author_text' => $author_name, + 'original_source' => 'user', ), $data ); @@ -469,27 +482,31 @@ public function test_create_item_with_numeric_slug() { unset( $data['_links'] ); unset( $data['wp_id'] ); + $author_name = get_user_by( 'id', self::$admin_id )->get( 'display_name' ); + $this->assertSame( array( - 'id' => 'default//404', - 'theme' => 'default', - 'content' => array( + 'id' => 'default//404', + 'theme' => 'default', + 'content' => array( 'raw' => '', ), - 'slug' => '404', - 'source' => 'custom', - 'origin' => null, - 'type' => 'wp_template', - 'description' => 'Template shown when no content is found.', - 'title' => array( + 'slug' => '404', + 'source' => 'custom', + 'origin' => null, + 'type' => 'wp_template', + 'description' => 'Template shown when no content is found.', + 'title' => array( 'raw' => '404', 'rendered' => '404', ), - 'status' => 'publish', - 'has_theme_file' => false, - 'is_custom' => false, - 'author' => self::$admin_id, - 'modified' => mysql_to_rfc3339( $modified ), + 'status' => 'publish', + 'has_theme_file' => false, + 'is_custom' => false, + 'author' => self::$admin_id, + 'modified' => mysql_to_rfc3339( $modified ), + 'author_text' => $author_name, + 'original_source' => 'user', ), $data ); @@ -521,27 +538,31 @@ public function test_create_item_raw() { unset( $data['_links'] ); unset( $data['wp_id'] ); + $author_name = get_user_by( 'id', self::$admin_id )->get( 'display_name' ); + $this->assertSame( array( - 'id' => 'default//my_custom_template_raw', - 'theme' => 'default', - 'content' => array( + 'id' => 'default//my_custom_template_raw', + 'theme' => 'default', + 'content' => array( 'raw' => 'Content', ), - 'slug' => 'my_custom_template_raw', - 'source' => 'custom', - 'origin' => null, - 'type' => 'wp_template', - 'description' => 'Just a description', - 'title' => array( + 'slug' => 'my_custom_template_raw', + 'source' => 'custom', + 'origin' => null, + 'type' => 'wp_template', + 'description' => 'Just a description', + 'title' => array( 'raw' => 'My Template', 'rendered' => 'My Template', ), - 'status' => 'publish', - 'has_theme_file' => false, - 'is_custom' => true, - 'author' => self::$admin_id, - 'modified' => mysql_to_rfc3339( $modified ), + 'status' => 'publish', + 'has_theme_file' => false, + 'is_custom' => true, + 'author' => self::$admin_id, + 'modified' => mysql_to_rfc3339( $modified ), + 'author_text' => $author_name, + 'original_source' => 'user', ), $data ); @@ -700,7 +721,7 @@ public function test_get_item_schema() { $response = rest_get_server()->dispatch( $request ); $data = $response->get_data(); $properties = $data['schema']['properties']; - $this->assertCount( 15, $properties ); + $this->assertCount( 17, $properties ); $this->assertArrayHasKey( 'id', $properties ); $this->assertArrayHasKey( 'description', $properties ); $this->assertArrayHasKey( 'slug', $properties ); @@ -717,6 +738,8 @@ public function test_get_item_schema() { $this->assertArrayHasKey( 'is_custom', $properties ); $this->assertArrayHasKey( 'author', $properties ); $this->assertArrayHasKey( 'modified', $properties ); + $this->assertArrayHasKey( 'author_text', $properties ); + $this->assertArrayHasKey( 'original_source', $properties ); } protected function find_and_normalize_template_by_id( $templates, $id ) { @@ -747,10 +770,13 @@ public function test_create_item_with_is_wp_suggestion( array $body_params, arra $request = new WP_REST_Request( 'POST', '/wp/v2/templates' ); $request->set_body_params( $body_params ); - $response = rest_get_server()->dispatch( $request ); - $data = $response->get_data(); - $modified = get_post( $data['wp_id'] )->post_modified; - $expected['modified'] = mysql_to_rfc3339( $modified ); + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + $modified = get_post( $data['wp_id'] )->post_modified; + $expected['modified'] = mysql_to_rfc3339( $modified ); + $expected['author_text'] = get_user_by( 'id', self::$admin_id )->get( 'display_name' ); + $expected['original_source'] = 'user'; + unset( $data['_links'] ); unset( $data['wp_id'] ); From 5c4b4887bf088b91df4f5e467b8982fa3b5441ec Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Sat, 27 Jan 2024 01:02:35 +0000 Subject: [PATCH 02/20] Script Loader: Clarify in docs that `wp_get_inline_script_tag()` and `wp_print_inline_script_tag()` can take non-JS data. Props vladimiraus. Fixes #60331. git-svn-id: https://develop.svn.wordpress.org/trunk@57367 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/script-loader.php | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php index a04c580274857..a63fa2485018e 100644 --- a/src/wp-includes/script-loader.php +++ b/src/wp-includes/script-loader.php @@ -2834,18 +2834,18 @@ function wp_print_script_tag( $attributes ) { } /** - * Wraps inline JavaScript in `\n", wp_sanitize_script_attributes( $attributes ), $javascript ); + return sprintf( "%s\n", wp_sanitize_script_attributes( $attributes ), $data ); } /** - * Prints inline JavaScript wrapped in ` ', '' ), '', ob_get_clean() ) ); } /** diff --git a/src/wp-includes/blocks/code/block.json b/src/wp-includes/blocks/code/block.json index 80df74b5062b5..bd5db3c918b96 100644 --- a/src/wp-includes/blocks/code/block.json +++ b/src/wp-includes/blocks/code/block.json @@ -8,8 +8,8 @@ "textdomain": "default", "attributes": { "content": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "code", "__unstablePreserveWhiteSpace": true } diff --git a/src/wp-includes/blocks/comments-title/block.json b/src/wp-includes/blocks/comments-title/block.json index 12b105afe9a31..4107f5d590cde 100644 --- a/src/wp-includes/blocks/comments-title/block.json +++ b/src/wp-includes/blocks/comments-title/block.json @@ -5,7 +5,7 @@ "title": "Comments Title", "category": "theme", "ancestor": [ "core/comments" ], - "description": "Displays a title with the number of comments", + "description": "Displays a title with the number of comments.", "textdomain": "default", "usesContext": [ "postId", "postType" ], "attributes": { diff --git a/src/wp-includes/blocks/cover/block.json b/src/wp-includes/blocks/cover/block.json index e88dd2d65a372..d2c55dd26b4d7 100644 --- a/src/wp-includes/blocks/cover/block.json +++ b/src/wp-includes/blocks/cover/block.json @@ -19,9 +19,6 @@ }, "alt": { "type": "string", - "source": "attribute", - "selector": "img", - "attribute": "alt", "default": "" }, "hasParallax": { @@ -42,6 +39,9 @@ "customOverlayColor": { "type": "string" }, + "isUserOverlayColor": { + "type": "boolean" + }, "backgroundType": { "type": "string", "default": "image" diff --git a/src/wp-includes/blocks/details/block.json b/src/wp-includes/blocks/details/block.json index d449d42e1e10c..a71d3af2a5ed3 100644 --- a/src/wp-includes/blocks/details/block.json +++ b/src/wp-includes/blocks/details/block.json @@ -13,8 +13,8 @@ "default": false }, "summary": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "summary" } }, diff --git a/src/wp-includes/blocks/embed/block.json b/src/wp-includes/blocks/embed/block.json index 9ca54db871db1..5aac8bbd6b8ca 100644 --- a/src/wp-includes/blocks/embed/block.json +++ b/src/wp-includes/blocks/embed/block.json @@ -12,8 +12,8 @@ "__experimentalRole": "content" }, "caption": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "figcaption", "__experimentalRole": "content" }, diff --git a/src/wp-includes/blocks/file.php b/src/wp-includes/blocks/file.php index 042ea89970736..5910a63e6cf18 100644 --- a/src/wp-includes/blocks/file.php +++ b/src/wp-includes/blocks/file.php @@ -15,19 +15,29 @@ * @return string Returns the block content. */ function render_block_core_file( $attributes, $content, $block ) { + $is_gutenberg_plugin = defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN; $should_load_view_script = ! empty( $attributes['displayPreview'] ); $view_js_file = 'wp-block-file-view'; - // If the script already exists, there is no point in removing it from viewScript. - if ( ! wp_script_is( $view_js_file ) ) { - $script_handles = $block->block_type->view_script_handles; + $script_handles = $block->block_type->view_script_handles; - // If the script is not needed, and it is still in the `view_script_handles`, remove it. - if ( ! $should_load_view_script && in_array( $view_js_file, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); + if ( $is_gutenberg_plugin ) { + if ( $should_load_view_script ) { + gutenberg_enqueue_module( '@wordpress/block-library/file-block' ); } - // If the script is needed, but it was previously removed, add it again. - if ( $should_load_view_script && ! in_array( $view_js_file, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); + // Remove the view script because we are using the module. + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); + } else { + // If the script already exists, there is no point in removing it from viewScript. + if ( ! wp_script_is( $view_js_file ) ) { + + // If the script is not needed, and it is still in the `view_script_handles`, remove it. + if ( ! $should_load_view_script && in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); + } + // If the script is needed, but it was previously removed, add it again. + if ( $should_load_view_script && ! in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); + } } } @@ -57,9 +67,9 @@ static function ( $matches ) { if ( $should_load_view_script ) { $processor = new WP_HTML_Tag_Processor( $content ); $processor->next_tag(); - $processor->set_attribute( 'data-wp-interactive', '' ); + $processor->set_attribute( 'data-wp-interactive', '{"namespace":"core/file"}' ); $processor->next_tag( 'object' ); - $processor->set_attribute( 'data-wp-bind--hidden', '!selectors.core.file.hasPdfPreview' ); + $processor->set_attribute( 'data-wp-bind--hidden', '!state.hasPdfPreview' ); $processor->set_attribute( 'hidden', true ); return $processor->get_updated_html(); } @@ -96,5 +106,14 @@ function register_block_core_file() { 'render_callback' => 'render_block_core_file', ) ); + + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + gutenberg_register_module( + '@wordpress/block-library/file-block', + gutenberg_url( '/build/interactivity/file.min.js' ), + array( '@wordpress/interactivity' ), + defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) + ); + } } add_action( 'init', 'register_block_core_file' ); diff --git a/src/wp-includes/blocks/file/block.json b/src/wp-includes/blocks/file/block.json index 0cc20b3f501e9..9dc6677e4adce 100644 --- a/src/wp-includes/blocks/file/block.json +++ b/src/wp-includes/blocks/file/block.json @@ -21,8 +21,8 @@ "attribute": "id" }, "fileName": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "a:not([download])" }, "textLinkHref": { @@ -42,8 +42,8 @@ "default": true }, "downloadButtonText": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "a[download]" }, "displayPreview": { diff --git a/src/wp-includes/blocks/footnotes/block.json b/src/wp-includes/blocks/footnotes/block.json index 28b094f24f916..3192df7796978 100644 --- a/src/wp-includes/blocks/footnotes/block.json +++ b/src/wp-includes/blocks/footnotes/block.json @@ -4,7 +4,7 @@ "name": "core/footnotes", "title": "Footnotes", "category": "text", - "description": "", + "description": "Display footnotes added to the page.", "keywords": [ "references" ], "textdomain": "default", "usesContext": [ "postId", "postType" ], @@ -33,6 +33,7 @@ "html": false, "multiple": false, "reusable": false, + "inserter": false, "spacing": { "margin": true, "padding": true, diff --git a/src/wp-includes/blocks/gallery.php b/src/wp-includes/blocks/gallery.php index edde9b4da101a..97877141ef333 100644 --- a/src/wp-includes/blocks/gallery.php +++ b/src/wp-includes/blocks/gallery.php @@ -32,6 +32,24 @@ function block_core_gallery_data_id_backcompatibility( $parsed_block ) { add_filter( 'render_block_data', 'block_core_gallery_data_id_backcompatibility' ); +/** + * Filter to randomize the order of image blocks. + * + * @param array $parsed_block The block being rendered. + * @return array The block object with randomized order of image blocks. + */ +function block_core_gallery_random_order( $parsed_block ) { + if ( 'core/gallery' === $parsed_block['blockName'] && ! empty( $parsed_block['attrs']['randomOrder'] ) ) { + shuffle( $parsed_block['innerBlocks'] ); + } + + return $parsed_block; + + return $parsed_block; +} + +add_filter( 'render_block_data', 'block_core_gallery_random_order' ); + /** * Adds a style tag for the --wp--style--unstable-gallery-gap var. * diff --git a/src/wp-includes/blocks/gallery/block.json b/src/wp-includes/blocks/gallery/block.json index 0867989af4ec7..a5425c55381f9 100644 --- a/src/wp-includes/blocks/gallery/block.json +++ b/src/wp-includes/blocks/gallery/block.json @@ -46,8 +46,8 @@ "attribute": "data-id" }, "caption": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": ".blocks-gallery-item__caption" } } @@ -72,14 +72,18 @@ "maximum": 8 }, "caption": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": ".blocks-gallery-caption" }, "imageCrop": { "type": "boolean", "default": true }, + "randomOrder": { + "type": "boolean", + "default": false + }, "fixedHeight": { "type": "boolean", "default": true diff --git a/src/wp-includes/blocks/group/block.json b/src/wp-includes/blocks/group/block.json index 4b89d86539117..df59c25a7751f 100644 --- a/src/wp-includes/blocks/group/block.json +++ b/src/wp-includes/blocks/group/block.json @@ -24,13 +24,16 @@ "__experimentalOnEnter": true, "__experimentalOnMerge": true, "__experimentalSettings": true, - "__experimentalMetadata": true, "align": [ "wide", "full" ], "anchor": true, "ariaLabel": true, "html": false, "background": { - "backgroundImage": true + "backgroundImage": true, + "backgroundSize": true, + "__experimentalDefaultControls": { + "backgroundImage": true + } }, "color": { "gradients": true, diff --git a/src/wp-includes/blocks/heading/block.json b/src/wp-includes/blocks/heading/block.json index 7c018f8472cb4..72cc67caddd9e 100644 --- a/src/wp-includes/blocks/heading/block.json +++ b/src/wp-includes/blocks/heading/block.json @@ -12,10 +12,9 @@ "type": "string" }, "content": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "h1,h2,h3,h4,h5,h6", - "default": "", "__experimentalRole": "content" }, "level": { @@ -57,9 +56,7 @@ "__experimentalTextDecoration": true, "__experimentalWritingMode": true, "__experimentalDefaultControls": { - "fontSize": true, - "fontAppearance": true, - "textTransform": true + "fontSize": true } }, "__unstablePasteTextInline": true, diff --git a/src/wp-includes/blocks/image.php b/src/wp-includes/blocks/image.php index acefd5714bbd4..add8e5989ab7d 100644 --- a/src/wp-includes/blocks/image.php +++ b/src/wp-includes/blocks/image.php @@ -37,6 +37,7 @@ function render_block_core_image( $attributes, $content, $block ) { $link_destination = isset( $attributes['linkDestination'] ) ? $attributes['linkDestination'] : 'none'; $lightbox_settings = block_core_image_get_lightbox_settings( $block->parsed_block ); + $is_gutenberg_plugin = defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN; $view_js_file_handle = 'wp-block-image-view'; $script_handles = $block->block_type->view_script_handles; @@ -50,9 +51,11 @@ function render_block_core_image( $attributes, $content, $block ) { isset( $lightbox_settings['enabled'] ) && true === $lightbox_settings['enabled'] ) { - $block->block_type->supports['interactivity'] = true; - - if ( ! in_array( $view_js_file_handle, $script_handles, true ) ) { + if ( $is_gutenberg_plugin ) { + gutenberg_enqueue_module( '@wordpress/block-library/image' ); + // Remove the view script because we are using the module. + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file_handle ) ); + } elseif ( ! in_array( $view_js_file_handle, $script_handles, true ) ) { $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file_handle ) ); } @@ -71,6 +74,7 @@ function render_block_core_image( $attributes, $content, $block ) { * other Image blocks. */ remove_filter( 'render_block_core/image', 'block_core_image_render_lightbox', 15 ); + // If the script is not needed, and it is still in the `view_script_handles`, remove it. if ( in_array( $view_js_file_handle, $script_handles, true ) ) { $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file_handle ) ); @@ -93,12 +97,6 @@ function block_core_image_get_lightbox_settings( $block ) { // Get the lightbox setting from the block attributes. if ( isset( $block['attrs']['lightbox'] ) ) { $lightbox_settings = $block['attrs']['lightbox']; - // If the lightbox setting is not set in the block attributes, - // check the legacy lightbox settings that are set using the - // `gutenberg_should_render_lightbox` filter. - // We can remove this elseif statement when the legacy lightbox settings are removed. - } elseif ( isset( $block['legacyLightboxSettings'] ) ) { - $lightbox_settings = $block['legacyLightboxSettings']; } if ( ! isset( $lightbox_settings ) ) { @@ -187,27 +185,23 @@ function block_core_image_render_lightbox( $block_content, $block ) { $w = new WP_HTML_Tag_Processor( $block_content ); $w->next_tag( 'figure' ); $w->add_class( 'wp-lightbox-container' ); - $w->set_attribute( 'data-wp-interactive', true ); + $w->set_attribute( 'data-wp-interactive', '{"namespace":"core/image"}' ); $w->set_attribute( 'data-wp-context', sprintf( - '{ "core": - { "image": - { "imageLoaded": false, - "initialized": false, - "lightboxEnabled": false, - "hideAnimationEnabled": false, - "preloadInitialized": false, - "lightboxAnimation": "%s", - "imageUploadedSrc": "%s", - "imageCurrentSrc": "", - "targetWidth": "%s", - "targetHeight": "%s", - "scaleAttr": "%s", - "dialogLabel": "%s" - } - } + '{ "imageLoaded": false, + "initialized": false, + "lightboxEnabled": false, + "hideAnimationEnabled": false, + "preloadInitialized": false, + "lightboxAnimation": "%s", + "imageUploadedSrc": "%s", + "imageCurrentSrc": "", + "targetWidth": "%s", + "targetHeight": "%s", + "scaleAttr": "%s", + "dialogLabel": "%s" }', $lightbox_animation, $img_uploaded_src, @@ -218,14 +212,14 @@ function block_core_image_render_lightbox( $block_content, $block ) { ) ); $w->next_tag( 'img' ); - $w->set_attribute( 'data-wp-init', 'effects.core.image.initOriginImage' ); - $w->set_attribute( 'data-wp-on--load', 'actions.core.image.handleLoad' ); - $w->set_attribute( 'data-wp-effect', 'effects.core.image.setButtonStyles' ); + $w->set_attribute( 'data-wp-init', 'callbacks.initOriginImage' ); + $w->set_attribute( 'data-wp-on--load', 'actions.handleLoad' ); + $w->set_attribute( 'data-wp-watch', 'callbacks.setButtonStyles' ); // We need to set an event callback on the `img` specifically // because the `figure` element can also contain a caption, and // we don't want to trigger the lightbox when the caption is clicked. - $w->set_attribute( 'data-wp-on--click', 'actions.core.image.showLightbox' ); - $w->set_attribute( 'data-wp-effect--setStylesOnResize', 'effects.core.image.setStylesOnResize' ); + $w->set_attribute( 'data-wp-on--click', 'actions.showLightbox' ); + $w->set_attribute( 'data-wp-watch--setStylesOnResize', 'callbacks.setStylesOnResize' ); $body_content = $w->get_updated_html(); // Add a button alongside image in the body content. @@ -239,9 +233,10 @@ class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="' . esc_attr( $aria_label ) . '" - data-wp-on--click="actions.core.image.showLightbox" - data-wp-style--right="context.core.image.imageButtonRight" - data-wp-style--top="context.core.image.imageButtonTop" + data-wp-init="callbacks.initTriggerButton" + data-wp-on--click="actions.showLightbox" + data-wp-style--right="context.imageButtonRight" + data-wp-style--top="context.imageButtonTop" > @@ -267,8 +262,8 @@ class="lightbox-trigger" // use the exact same image as in the content when the lightbox is first opened while // we wait for the larger image to load. $m->set_attribute( 'src', '' ); - $m->set_attribute( 'data-wp-bind--src', 'context.core.image.imageCurrentSrc' ); - $m->set_attribute( 'data-wp-style--object-fit', 'selectors.core.image.lightboxObjectFit' ); + $m->set_attribute( 'data-wp-bind--src', 'context.imageCurrentSrc' ); + $m->set_attribute( 'data-wp-style--object-fit', 'state.lightboxObjectFit' ); $initial_image_content = $m->get_updated_html(); $q = new WP_HTML_Tag_Processor( $block_content ); @@ -283,8 +278,8 @@ class="lightbox-trigger" // and Chrome (see https://github.com/WordPress/gutenberg/pull/52765#issuecomment-1674008151). Until that // is resolved, manually setting the 'src' seems to be the best solution to load the large image on demand. $q->set_attribute( 'src', '' ); - $q->set_attribute( 'data-wp-bind--src', 'selectors.core.image.enlargedImgSrc' ); - $q->set_attribute( 'data-wp-style--object-fit', 'selectors.core.image.lightboxObjectFit' ); + $q->set_attribute( 'data-wp-bind--src', 'state.enlargedImgSrc' ); + $q->set_attribute( 'data-wp-style--object-fit', 'state.lightboxObjectFit' ); $enlarged_image_content = $q->get_updated_html(); // If the current theme does NOT have a `theme.json`, or the colors are not defined, @@ -307,21 +302,21 @@ class="lightbox-trigger" $lightbox_html = << - @@ -362,5 +357,14 @@ function register_block_core_image() { 'render_callback' => 'render_block_core_image', ) ); + + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + gutenberg_register_module( + '@wordpress/block-library/image', + gutenberg_url( '/build/interactivity/image.min.js' ), + array( '@wordpress/interactivity' ), + defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) + ); + } } add_action( 'init', 'register_block_core_image' ); diff --git a/src/wp-includes/blocks/image/block.json b/src/wp-includes/blocks/image/block.json index d665a8a8f7708..c5191e3dd8654 100644 --- a/src/wp-includes/blocks/image/block.json +++ b/src/wp-includes/blocks/image/block.json @@ -9,9 +9,6 @@ "keywords": [ "img", "photo", "picture" ], "textdomain": "default", "attributes": { - "align": { - "type": "string" - }, "url": { "type": "string", "source": "attribute", @@ -28,8 +25,8 @@ "__experimentalRole": "content" }, "caption": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "figcaption", "__experimentalRole": "content" }, @@ -95,6 +92,8 @@ } }, "supports": { + "interactivity": true, + "align": [ "left", "center", "right", "wide", "full" ], "anchor": true, "color": { "text": false, diff --git a/src/wp-includes/blocks/legacy-widget/block.json b/src/wp-includes/blocks/legacy-widget/block.json index 6b0c1e2a916fd..a03eb090633fc 100644 --- a/src/wp-includes/blocks/legacy-widget/block.json +++ b/src/wp-includes/blocks/legacy-widget/block.json @@ -1,4 +1,5 @@ { + "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 3, "name": "core/legacy-widget", "title": "Legacy Widget", diff --git a/src/wp-includes/blocks/list-item/block.json b/src/wp-includes/blocks/list-item/block.json index 41221f1c31772..06997c2ac23f8 100644 --- a/src/wp-includes/blocks/list-item/block.json +++ b/src/wp-includes/blocks/list-item/block.json @@ -12,16 +12,23 @@ "type": "string" }, "content": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "li", - "default": "", "__experimentalRole": "content" } }, "supports": { "className": false, "__experimentalSelector": "li", + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, "typography": { "fontSize": true, "lineHeight": true, diff --git a/src/wp-includes/blocks/loginout/block.json b/src/wp-includes/blocks/loginout/block.json index 3593961c09cfd..59fceec596e37 100644 --- a/src/wp-includes/blocks/loginout/block.json +++ b/src/wp-includes/blocks/loginout/block.json @@ -19,6 +19,14 @@ }, "supports": { "className": true, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, "typography": { "fontSize": true, "lineHeight": true, diff --git a/src/wp-includes/blocks/missing/block.json b/src/wp-includes/blocks/missing/block.json index 0bc512bbbf709..242a1d2c6b21a 100644 --- a/src/wp-includes/blocks/missing/block.json +++ b/src/wp-includes/blocks/missing/block.json @@ -15,7 +15,7 @@ }, "originalContent": { "type": "string", - "source": "html" + "source": "raw" } }, "supports": { diff --git a/src/wp-includes/blocks/navigation-link.php b/src/wp-includes/blocks/navigation-link.php index 5333ab6ea3dc9..1165ce94b5921 100644 --- a/src/wp-includes/blocks/navigation-link.php +++ b/src/wp-includes/blocks/navigation-link.php @@ -322,6 +322,25 @@ function build_variation_for_navigation_link( $entity, $kind ) { return $variation; } +/** + * Register a variation for a post type / taxonomy for the navigation link block + * + * @param array $variation Variation array from build_variation_for_navigation_link. + * @return void + */ +function register_block_core_navigation_link_variation( $variation ) { + // Directly set the variations on the registered block type + // because there's no server side registration for variations (see #47170). + $navigation_block_type = WP_Block_Type_Registry::get_instance()->get_registered( 'core/navigation-link' ); + // If the block is not registered yet, bail early. + // Variation will be registered in register_block_core_navigation_link then. + if ( ! $navigation_block_type ) { + return; + } + + $navigation_block_type->variations[] = $variation; +} + /** * Register the navigation link block. * @@ -329,6 +348,9 @@ function build_variation_for_navigation_link( $entity, $kind ) { * @throws WP_Error An WP_Error exception parsing the block definition. */ function register_block_core_navigation_link() { + // This will only handle post types and taxonomies registered until this point (init on priority 9). + // See action hooks below for other post types and taxonomies. + // See https://github.com/WordPress/gutenberg/issues/53826 for details. $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'objects' ); $taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'objects' ); @@ -369,3 +391,38 @@ function register_block_core_navigation_link() { ); } add_action( 'init', 'register_block_core_navigation_link' ); +// Register actions for all post types and taxonomies, to add variations when they are registered. +// All post types/taxonomies registered before register_block_core_navigation_link, will be handled by that function. +add_action( 'registered_post_type', 'register_block_core_navigation_link_post_type_variation', 10, 2 ); +add_action( 'registered_taxonomy', 'register_block_core_navigation_link_taxonomy_variation', 10, 3 ); + +/** + * Register custom post type variations for navigation link on post type registration + * Handles all post types registered after the block is registered in register_navigation_link_post_type_variations + * + * @param string $post_type The post type name passed from registered_post_type filter. + * @param WP_Post_Type $post_type_object The post type object passed from registered_post_type. + * @return void + */ +function register_block_core_navigation_link_post_type_variation( $post_type, $post_type_object ) { + if ( $post_type_object->show_in_nav_menus ) { + $variation = build_variation_for_navigation_link( $post_type_object, 'post-type' ); + register_block_core_navigation_link_variation( $variation ); + } +} + +/** + * Register a custom taxonomy variation for navigation link on taxonomy registration + * Handles all taxonomies registered after the block is registered in register_navigation_link_post_type_variations + * + * @param string $taxonomy Taxonomy slug. + * @param array|string $object_type Object type or array of object types. + * @param array $args Array of taxonomy registration arguments. + * @return void + */ +function register_block_core_navigation_link_taxonomy_variation( $taxonomy, $object_type, $args ) { + if ( isset( $args['show_in_nav_menus'] ) && $args['show_in_nav_menus'] ) { + $variation = build_variation_for_navigation_link( (object) $args, 'post-type' ); + register_block_core_navigation_link_variation( $variation ); + } +} diff --git a/src/wp-includes/blocks/navigation-link/block.json b/src/wp-includes/blocks/navigation-link/block.json index b2cbeaed63d3e..d8f2fe31aef9d 100644 --- a/src/wp-includes/blocks/navigation-link/block.json +++ b/src/wp-includes/blocks/navigation-link/block.json @@ -71,7 +71,8 @@ "__experimentalDefaultControls": { "fontSize": true } - } + }, + "renaming": false }, "editorStyle": "wp-block-navigation-link-editor", "style": "wp-block-navigation-link" diff --git a/src/wp-includes/blocks/navigation.php b/src/wp-includes/blocks/navigation.php index 4d9fe4a08c6bf..3af85afd92522 100644 --- a/src/wp-includes/blocks/navigation.php +++ b/src/wp-includes/blocks/navigation.php @@ -65,68 +65,84 @@ function block_core_navigation_sort_menu_items_by_parent_id( $menu_items ) { return $menu_items_by_parent_id; } -} + /** + * Gets the inner blocks for the navigation block from the unstable location attribute. + * + * @param array $attributes The block attributes. + * @return WP_Block_List Returns the inner blocks for the navigation block. + */ + function block_core_navigation_get_inner_blocks_from_unstable_location( $attributes ) { + $menu_items = block_core_navigation_get_menu_items_at_location( $attributes['__unstableLocation'] ); + if ( empty( $menu_items ) ) { + return new WP_Block_List( array(), $attributes ); + } + + $menu_items_by_parent_id = block_core_navigation_sort_menu_items_by_parent_id( $menu_items ); + $parsed_blocks = block_core_navigation_parse_blocks_from_menu_items( $menu_items_by_parent_id[0], $menu_items_by_parent_id ); + return new WP_Block_List( $parsed_blocks, $attributes ); + } +} /** * Add Interactivity API directives to the navigation-submenu and page-list * blocks markup using the Tag Processor. * - * @param string $w Markup of the navigation block. - * @param array $block_attributes Block attributes. + * @param WP_HTML_Tag_Processor $tags Markup of the navigation block. + * @param array $block_attributes Block attributes. * * @return string Submenu markup with the directives injected. */ -function block_core_navigation_add_directives_to_submenu( $w, $block_attributes ) { - while ( $w->next_tag( +function block_core_navigation_add_directives_to_submenu( $tags, $block_attributes ) { + while ( $tags->next_tag( array( 'tag_name' => 'LI', 'class_name' => 'has-child', ) ) ) { // Add directives to the parent `
  • `. - $w->set_attribute( 'data-wp-interactive', true ); - $w->set_attribute( 'data-wp-context', '{ "core": { "navigation": { "submenuOpenedBy": {}, "type": "submenu" } } }' ); - $w->set_attribute( 'data-wp-effect', 'effects.core.navigation.initMenu' ); - $w->set_attribute( 'data-wp-on--focusout', 'actions.core.navigation.handleMenuFocusout' ); - $w->set_attribute( 'data-wp-on--keydown', 'actions.core.navigation.handleMenuKeydown' ); + $tags->set_attribute( 'data-wp-interactive', '{ "namespace": "core/navigation" }' ); + $tags->set_attribute( 'data-wp-context', '{ "submenuOpenedBy": {}, "type": "submenu" }' ); + $tags->set_attribute( 'data-wp-watch', 'callbacks.initMenu' ); + $tags->set_attribute( 'data-wp-on--focusout', 'actions.handleMenuFocusout' ); + $tags->set_attribute( 'data-wp-on--keydown', 'actions.handleMenuKeydown' ); // This is a fix for Safari. Without it, Safari doesn't change the active // element when the user clicks on a button. It can be removed once we add // an overlay to capture the clicks, instead of relying on the focusout // event. - $w->set_attribute( 'tabindex', '-1' ); + $tags->set_attribute( 'tabindex', '-1' ); if ( ! isset( $block_attributes['openSubmenusOnClick'] ) || false === $block_attributes['openSubmenusOnClick'] ) { - $w->set_attribute( 'data-wp-on--mouseenter', 'actions.core.navigation.openMenuOnHover' ); - $w->set_attribute( 'data-wp-on--mouseleave', 'actions.core.navigation.closeMenuOnHover' ); + $tags->set_attribute( 'data-wp-on--mouseenter', 'actions.openMenuOnHover' ); + $tags->set_attribute( 'data-wp-on--mouseleave', 'actions.closeMenuOnHover' ); } // Add directives to the toggle submenu button. - if ( $w->next_tag( + if ( $tags->next_tag( array( 'tag_name' => 'BUTTON', 'class_name' => 'wp-block-navigation-submenu__toggle', ) ) ) { - $w->set_attribute( 'data-wp-on--click', 'actions.core.navigation.toggleMenuOnClick' ); - $w->set_attribute( 'data-wp-bind--aria-expanded', 'selectors.core.navigation.isMenuOpen' ); + $tags->set_attribute( 'data-wp-on--click', 'actions.toggleMenuOnClick' ); + $tags->set_attribute( 'data-wp-bind--aria-expanded', 'state.isMenuOpen' ); // The `aria-expanded` attribute for SSR is already added in the submenu block. } // Add directives to the submenu. - if ( $w->next_tag( + if ( $tags->next_tag( array( 'tag_name' => 'UL', 'class_name' => 'wp-block-navigation__submenu-container', ) ) ) { - $w->set_attribute( 'data-wp-on--focus', 'actions.core.navigation.openMenuOnFocus' ); + $tags->set_attribute( 'data-wp-on--focus', 'actions.openMenuOnFocus' ); } // Iterate through subitems if exist. - block_core_navigation_add_directives_to_submenu( $w, $block_attributes ); + block_core_navigation_add_directives_to_submenu( $tags, $block_attributes ); } - return $w->get_updated_html(); + return $tags->get_updated_html(); } /** @@ -391,391 +407,10 @@ function block_core_navigation_from_block_get_post_ids( $block ) { * @param string $content The saved content. * @param WP_Block $block The parsed block. * - * @return string Returns the post content with the legacy widget added. + * @return string Returns the navigation block markup. */ function render_block_core_navigation( $attributes, $content, $block ) { - static $seen_menu_names = array(); - - // Flag used to indicate whether the rendered output is considered to be - // a fallback (i.e. the block has no menu associated with it). - $is_fallback = false; - - $nav_menu_name = $attributes['ariaLabel'] ?? ''; - - /** - * Deprecated: - * The rgbTextColor and rgbBackgroundColor attributes - * have been deprecated in favor of - * customTextColor and customBackgroundColor ones. - * Move the values from old attrs to the new ones. - */ - if ( isset( $attributes['rgbTextColor'] ) && empty( $attributes['textColor'] ) ) { - $attributes['customTextColor'] = $attributes['rgbTextColor']; - } - - if ( isset( $attributes['rgbBackgroundColor'] ) && empty( $attributes['backgroundColor'] ) ) { - $attributes['customBackgroundColor'] = $attributes['rgbBackgroundColor']; - } - - unset( $attributes['rgbTextColor'], $attributes['rgbBackgroundColor'] ); - - /** - * This is for backwards compatibility after `isResponsive` attribute has been removed. - */ - $has_old_responsive_attribute = ! empty( $attributes['isResponsive'] ) && $attributes['isResponsive']; - $is_responsive_menu = isset( $attributes['overlayMenu'] ) && 'never' !== $attributes['overlayMenu'] || $has_old_responsive_attribute; - - $inner_blocks = $block->inner_blocks; - - // Ensure that blocks saved with the legacy ref attribute name (navigationMenuId) continue to render. - if ( array_key_exists( 'navigationMenuId', $attributes ) ) { - $attributes['ref'] = $attributes['navigationMenuId']; - } - - // If: - // - the gutenberg plugin is active - // - `__unstableLocation` is defined - // - we have menu items at the defined location - // - we don't have a relationship to a `wp_navigation` Post (via `ref`). - // ...then create inner blocks from the classic menu assigned to that location. - if ( - defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN && - array_key_exists( '__unstableLocation', $attributes ) && - ! array_key_exists( 'ref', $attributes ) && - ! empty( block_core_navigation_get_menu_items_at_location( $attributes['__unstableLocation'] ) ) - ) { - $menu_items = block_core_navigation_get_menu_items_at_location( $attributes['__unstableLocation'] ); - if ( empty( $menu_items ) ) { - return ''; - } - - $menu_items_by_parent_id = block_core_navigation_sort_menu_items_by_parent_id( $menu_items ); - $parsed_blocks = block_core_navigation_parse_blocks_from_menu_items( $menu_items_by_parent_id[0], $menu_items_by_parent_id ); - $inner_blocks = new WP_Block_List( $parsed_blocks, $attributes ); - } - - // Load inner blocks from the navigation post. - if ( array_key_exists( 'ref', $attributes ) ) { - $navigation_post = get_post( $attributes['ref'] ); - if ( ! isset( $navigation_post ) ) { - return ''; - } - - // Only published posts are valid. If this is changed then a corresponding change - // must also be implemented in `use-navigation-menu.js`. - if ( 'publish' === $navigation_post->post_status ) { - $nav_menu_name = $navigation_post->post_title; - - if ( isset( $seen_menu_names[ $nav_menu_name ] ) ) { - ++$seen_menu_names[ $nav_menu_name ]; - } else { - $seen_menu_names[ $nav_menu_name ] = 1; - } - - $parsed_blocks = parse_blocks( $navigation_post->post_content ); - - // 'parse_blocks' includes a null block with '\n\n' as the content when - // it encounters whitespace. This code strips it. - $compacted_blocks = block_core_navigation_filter_out_empty_blocks( $parsed_blocks ); - - // TODO - this uses the full navigation block attributes for the - // context which could be refined. - $inner_blocks = new WP_Block_List( $compacted_blocks, $attributes ); - } - } - - // If there are no inner blocks then fallback to rendering an appropriate fallback. - if ( empty( $inner_blocks ) ) { - $is_fallback = true; // indicate we are rendering the fallback. - - $fallback_blocks = block_core_navigation_get_fallback_blocks(); - - // Fallback my have been filtered so do basic test for validity. - if ( empty( $fallback_blocks ) || ! is_array( $fallback_blocks ) ) { - return ''; - } - - $inner_blocks = new WP_Block_List( $fallback_blocks, $attributes ); - } - - if ( block_core_navigation_block_contains_core_navigation( $inner_blocks ) ) { - return ''; - } - - /** - * Filter navigation block $inner_blocks. - * Allows modification of a navigation block menu items. - * - * @since 6.1.0 - * - * @param \WP_Block_List $inner_blocks - */ - $inner_blocks = apply_filters( 'block_core_navigation_render_inner_blocks', $inner_blocks ); - - $layout_justification = array( - 'left' => 'items-justified-left', - 'right' => 'items-justified-right', - 'center' => 'items-justified-center', - 'space-between' => 'items-justified-space-between', - ); - - // Restore legacy classnames for submenu positioning. - $layout_class = ''; - if ( - isset( $attributes['layout']['justifyContent'] ) && - isset( $layout_justification[ $attributes['layout']['justifyContent'] ] ) - ) { - $layout_class .= $layout_justification[ $attributes['layout']['justifyContent'] ]; - } - if ( isset( $attributes['layout']['orientation'] ) && 'vertical' === $attributes['layout']['orientation'] ) { - $layout_class .= ' is-vertical'; - } - - if ( isset( $attributes['layout']['flexWrap'] ) && 'nowrap' === $attributes['layout']['flexWrap'] ) { - $layout_class .= ' no-wrap'; - } - - // Manually add block support text decoration as CSS class. - $text_decoration = $attributes['style']['typography']['textDecoration'] ?? null; - $text_decoration_class = sprintf( 'has-text-decoration-%s', $text_decoration ); - - $colors = block_core_navigation_build_css_colors( $attributes ); - $font_sizes = block_core_navigation_build_css_font_sizes( $attributes ); - $classes = array_merge( - $colors['css_classes'], - $font_sizes['css_classes'], - $is_responsive_menu ? array( 'is-responsive' ) : array(), - $layout_class ? array( $layout_class ) : array(), - $is_fallback ? array( 'is-fallback' ) : array(), - $text_decoration ? array( $text_decoration_class ) : array() - ); - - $post_ids = block_core_navigation_get_post_ids( $inner_blocks ); - if ( $post_ids ) { - _prime_post_caches( $post_ids, false, false ); - } - - $list_item_nav_blocks = array( - 'core/navigation-link', - 'core/home-link', - 'core/site-title', - 'core/site-logo', - 'core/navigation-submenu', - ); - - $needs_list_item_wrapper = array( - 'core/site-title', - 'core/site-logo', - ); - - $block_styles = isset( $attributes['styles'] ) ? $attributes['styles'] : ''; - $style = $block_styles . $colors['inline_styles'] . $font_sizes['inline_styles']; - $class = implode( ' ', $classes ); - - // If the menu name has been used previously then append an ID - // to the name to ensure uniqueness across a given post. - if ( isset( $seen_menu_names[ $nav_menu_name ] ) && $seen_menu_names[ $nav_menu_name ] > 1 ) { - $count = $seen_menu_names[ $nav_menu_name ]; - $nav_menu_name = $nav_menu_name . ' ' . ( $count ); - } - - $wrapper_attributes = get_block_wrapper_attributes( - array( - 'class' => $class, - 'style' => $style, - 'aria-label' => $nav_menu_name, - ) - ); - - $container_attributes = get_block_wrapper_attributes( - array( - 'class' => 'wp-block-navigation__container ' . $class, - 'style' => $style, - ) - ); - - $inner_blocks_html = ''; - $is_list_open = false; - $has_submenus = false; - foreach ( $inner_blocks as $inner_block ) { - $is_list_item = in_array( $inner_block->name, $list_item_nav_blocks, true ); - - if ( $is_list_item && ! $is_list_open ) { - $is_list_open = true; - $inner_blocks_html .= sprintf( - '
      ', - $container_attributes - ); - } - - if ( ! $is_list_item && $is_list_open ) { - $is_list_open = false; - $inner_blocks_html .= '
    '; - } - - $inner_block_content = $inner_block->render(); - $p = new WP_HTML_Tag_Processor( $inner_block_content ); - if ( $p->next_tag( - array( - 'name' => 'LI', - 'class_name' => 'has-child', - ) - ) ) { - $has_submenus = true; - } - if ( ! empty( $inner_block_content ) ) { - if ( in_array( $inner_block->name, $needs_list_item_wrapper, true ) ) { - $inner_blocks_html .= '
  • ' . $inner_block_content . '
  • '; - } else { - $inner_blocks_html .= $inner_block_content; - } - } - } - - if ( $is_list_open ) { - $inner_blocks_html .= ''; - } - - $should_load_view_script = ( $has_submenus && ( $attributes['openSubmenusOnClick'] || $attributes['showSubmenuIcon'] ) ) || $is_responsive_menu; - $view_js_file = 'wp-block-navigation-view'; - - // If the script already exists, there is no point in removing it from viewScript. - if ( ! wp_script_is( $view_js_file ) ) { - $script_handles = $block->block_type->view_script_handles; - - // If the script is not needed, and it is still in the `view_script_handles`, remove it. - if ( ! $should_load_view_script && in_array( $view_js_file, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); - } - // If the script is needed, but it was previously removed, add it again. - if ( $should_load_view_script && ! in_array( $view_js_file, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); - } - } - - // Add directives to the submenu if needed. - if ( $has_submenus && $should_load_view_script ) { - $w = new WP_HTML_Tag_Processor( $inner_blocks_html ); - $inner_blocks_html = block_core_navigation_add_directives_to_submenu( $w, $attributes ); - } - - $modal_unique_id = wp_unique_id( 'modal-' ); - - // Determine whether or not navigation elements should be wrapped in the markup required to make it responsive, - // return early if they don't. - if ( ! $is_responsive_menu ) { - return sprintf( - '', - $wrapper_attributes, - $inner_blocks_html - ); - } - - $is_hidden_by_default = isset( $attributes['overlayMenu'] ) && 'always' === $attributes['overlayMenu']; - - $responsive_container_classes = array( - 'wp-block-navigation__responsive-container', - $is_hidden_by_default ? 'hidden-by-default' : '', - implode( ' ', $colors['overlay_css_classes'] ), - ); - $open_button_classes = array( - 'wp-block-navigation__responsive-container-open', - $is_hidden_by_default ? 'always-shown' : '', - ); - - $should_display_icon_label = isset( $attributes['hasIcon'] ) && true === $attributes['hasIcon']; - $toggle_button_icon = ''; - if ( isset( $attributes['icon'] ) ) { - if ( 'menu' === $attributes['icon'] ) { - $toggle_button_icon = ''; - } - } - $toggle_button_content = $should_display_icon_label ? $toggle_button_icon : __( 'Menu' ); - $toggle_close_button_icon = ''; - $toggle_close_button_content = $should_display_icon_label ? $toggle_close_button_icon : __( 'Close' ); - $toggle_aria_label_open = $should_display_icon_label ? 'aria-label="' . __( 'Open menu' ) . '"' : ''; // Open button label. - $toggle_aria_label_close = $should_display_icon_label ? 'aria-label="' . __( 'Close menu' ) . '"' : ''; // Close button label. - - // Add Interactivity API directives to the markup if needed. - $nav_element_directives = ''; - $open_button_directives = ''; - $responsive_container_directives = ''; - $responsive_dialog_directives = ''; - $close_button_directives = ''; - if ( $should_load_view_script ) { - $nav_element_context = wp_json_encode( - array( - 'core' => array( - 'navigation' => array( - 'overlayOpenedBy' => array(), - 'type' => 'overlay', - 'roleAttribute' => '', - 'ariaLabel' => __( 'Menu' ), - ), - ), - ), - JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP - ); - $nav_element_directives = ' - data-wp-interactive - data-wp-context=\'' . $nav_element_context . '\' - '; - $open_button_directives = ' - data-wp-on--click="actions.core.navigation.openMenuOnClick" - data-wp-on--keydown="actions.core.navigation.handleMenuKeydown" - '; - $responsive_container_directives = ' - data-wp-class--has-modal-open="selectors.core.navigation.isMenuOpen" - data-wp-class--is-menu-open="selectors.core.navigation.isMenuOpen" - data-wp-effect="effects.core.navigation.initMenu" - data-wp-on--keydown="actions.core.navigation.handleMenuKeydown" - data-wp-on--focusout="actions.core.navigation.handleMenuFocusout" - tabindex="-1" - '; - $responsive_dialog_directives = ' - data-wp-bind--aria-modal="selectors.core.navigation.ariaModal" - data-wp-bind--aria-label="selectors.core.navigation.ariaLabel" - data-wp-bind--role="selectors.core.navigation.roleAttribute" - data-wp-effect="effects.core.navigation.focusFirstElement" - '; - $close_button_directives = ' - data-wp-on--click="actions.core.navigation.closeMenuOnClick" - '; - } - - $responsive_container_markup = sprintf( - ' -
    -
    -
    - -
    - %2$s -
    -
    -
    -
    ', - esc_attr( $modal_unique_id ), - $inner_blocks_html, - $toggle_aria_label_open, - $toggle_aria_label_close, - esc_attr( implode( ' ', $responsive_container_classes ) ), - esc_attr( implode( ' ', $open_button_classes ) ), - esc_attr( safecss_filter_attr( $colors['overlay_inline_styles'] ) ), - $toggle_button_content, - $toggle_close_button_content, - $open_button_directives, - $responsive_container_directives, - $responsive_dialog_directives, - $close_button_directives - ); - - return sprintf( - '', - $wrapper_attributes, - $responsive_container_markup, - $nav_element_directives - ); + return WP_Navigation_Block_Renderer::render( $attributes, $content, $block ); } /** @@ -791,6 +426,15 @@ function register_block_core_navigation() { 'render_callback' => 'render_block_core_navigation', ) ); + + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + gutenberg_register_module( + '@wordpress/block-library/navigation-block', + gutenberg_url( '/build/interactivity/navigation.min.js' ), + array( '@wordpress/interactivity' ), + defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) + ); + } } add_action( 'init', 'register_block_core_navigation' ); diff --git a/src/wp-includes/blocks/navigation/block.json b/src/wp-includes/blocks/navigation/block.json index cb5ca4fec1b90..9ec919ae38d1f 100644 --- a/src/wp-includes/blocks/navigation/block.json +++ b/src/wp-includes/blocks/navigation/block.json @@ -133,7 +133,8 @@ } } }, - "interactivity": true + "interactivity": true, + "renaming": false }, "viewScript": "file:./view.min.js", "editorStyle": "wp-block-navigation-editor", diff --git a/src/wp-includes/blocks/paragraph/block.json b/src/wp-includes/blocks/paragraph/block.json index 85f56f4a838f5..3fe4fbb34e102 100644 --- a/src/wp-includes/blocks/paragraph/block.json +++ b/src/wp-includes/blocks/paragraph/block.json @@ -13,10 +13,9 @@ "type": "string" }, "content": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "p", - "default": "", "__experimentalRole": "content" }, "dropCap": { diff --git a/src/wp-includes/blocks/pattern.php b/src/wp-includes/blocks/pattern.php index f05bb333bd186..70c389e4ec8db 100644 --- a/src/wp-includes/blocks/pattern.php +++ b/src/wp-includes/blocks/pattern.php @@ -27,6 +27,8 @@ function register_block_core_pattern() { * @return string Returns the output of the pattern. */ function render_block_core_pattern( $attributes ) { + static $seen_refs = array(); + if ( empty( $attributes['slug'] ) ) { return ''; } @@ -38,6 +40,17 @@ function render_block_core_pattern( $attributes ) { return ''; } + if ( isset( $seen_refs[ $attributes['slug'] ] ) ) { + // WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent + // is set in `wp_debug_mode()`. + $is_debug = WP_DEBUG && WP_DEBUG_DISPLAY; + + return $is_debug ? + // translators: Visible only in the front end, this warning takes the place of a faulty block. %s represents a pattern's slug. + sprintf( __( '[block rendering halted for pattern "%s"]' ), $slug ) : + ''; + } + $pattern = $registry->get_registered( $slug ); $content = $pattern['content']; @@ -48,7 +61,15 @@ function render_block_core_pattern( $attributes ) { $content = gutenberg_serialize_blocks( $blocks ); } - return do_blocks( $content ); + $seen_refs[ $attributes['slug'] ] = true; + + $content = do_blocks( $content ); + + global $wp_embed; + $content = $wp_embed->autoembed( $content ); + + unset( $seen_refs[ $attributes['slug'] ] ); + return $content; } add_action( 'init', 'register_block_core_pattern' ); diff --git a/src/wp-includes/blocks/pattern/block.json b/src/wp-includes/blocks/pattern/block.json index e9a85a9b2f84f..da02f7b72747e 100644 --- a/src/wp-includes/blocks/pattern/block.json +++ b/src/wp-includes/blocks/pattern/block.json @@ -7,7 +7,8 @@ "description": "Show a block pattern.", "supports": { "html": false, - "inserter": false + "inserter": false, + "renaming": false }, "textdomain": "default", "attributes": { diff --git a/src/wp-includes/blocks/post-featured-image.php b/src/wp-includes/blocks/post-featured-image.php index 4a7aa2f3d8ab9..9a1fd315bb952 100644 --- a/src/wp-includes/blocks/post-featured-image.php +++ b/src/wp-includes/blocks/post-featured-image.php @@ -54,9 +54,40 @@ function render_block_core_post_featured_image( $attributes, $content, $block ) } $featured_image = get_the_post_thumbnail( $post_ID, $size_slug, $attr ); + + // Get the first image from the post. + if ( $attributes['useFirstImageFromPost'] && ! $featured_image ) { + $content_post = get_post( $post_ID ); + $content = $content_post->post_content; + $processor = new WP_HTML_Tag_Processor( $content ); + + /* + * Transfer the image tag from the post into a new text snippet. + * Because the HTML API doesn't currently expose a way to extract + * HTML substrings this is necessary as a workaround. Of note, this + * is different than directly extracting the IMG tag: + * - If there are duplicate attributes in the source there will only be one in the output. + * - If there are single-quoted or unquoted attributes they will be double-quoted in the output. + * - If there are named character references in the attribute values they may be replaced with their direct code points. E.g. `…` becomes `…`. + * In the future there will likely be a mechanism to copy snippets of HTML from + * one document into another, via the HTML Processor's `get_outer_html()` or + * equivalent. When that happens it would be appropriate to replace this custom + * code with that canonical code. + */ + if ( $processor->next_tag( 'img' ) ) { + $tag_html = new WP_HTML_Tag_Processor( '' ); + $tag_html->next_tag(); + foreach ( $processor->get_attribute_names_with_prefix( '' ) as $name ) { + $tag_html->set_attribute( $name, $processor->get_attribute( $name ) ); + } + $featured_image = $tag_html->get_updated_html(); + } + } + if ( ! $featured_image ) { return ''; } + if ( $is_link ) { $link_target = $attributes['linkTarget']; $rel = ! empty( $attributes['rel'] ) ? 'rel="' . esc_attr( $attributes['rel'] ) . '"' : ''; diff --git a/src/wp-includes/blocks/post-featured-image/block.json b/src/wp-includes/blocks/post-featured-image/block.json index 34e3bd6b2325f..4c4ba6919eaff 100644 --- a/src/wp-includes/blocks/post-featured-image/block.json +++ b/src/wp-includes/blocks/post-featured-image/block.json @@ -51,6 +51,10 @@ }, "customGradient": { "type": "string" + }, + "useFirstImageFromPost": { + "type": "boolean", + "default": false } }, "usesContext": [ "postId", "postType", "queryId" ], diff --git a/src/wp-includes/blocks/post-template/block.json b/src/wp-includes/blocks/post-template/block.json index 48804de75d2ca..d2f7c09693121 100644 --- a/src/wp-includes/blocks/post-template/block.json +++ b/src/wp-includes/blocks/post-template/block.json @@ -10,7 +10,6 @@ "usesContext": [ "queryId", "query", - "queryContext", "displayLayout", "templateSlug", "previewPostType", diff --git a/src/wp-includes/blocks/post-title.php b/src/wp-includes/blocks/post-title.php index 8b0e431b3a8be..d0eef8572ba13 100644 --- a/src/wp-includes/blocks/post-title.php +++ b/src/wp-includes/blocks/post-title.php @@ -38,7 +38,7 @@ function render_block_core_post_title( $attributes, $content, $block ) { if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { $rel = ! empty( $attributes['rel'] ) ? 'rel="' . esc_attr( $attributes['rel'] ) . '"' : ''; - $title = sprintf( '%4$s', get_the_permalink( $block->context['postId'] ), esc_attr( $attributes['linkTarget'] ), $rel, $title ); + $title = sprintf( '%4$s', esc_url( get_the_permalink( $block->context['postId'] ) ), esc_attr( $attributes['linkTarget'] ), $rel, $title ); } $classes = array(); diff --git a/src/wp-includes/blocks/post-title/block.json b/src/wp-includes/blocks/post-title/block.json index eda5332f24022..75a4fa3c3a60f 100644 --- a/src/wp-includes/blocks/post-title/block.json +++ b/src/wp-includes/blocks/post-title/block.json @@ -55,9 +55,7 @@ "__experimentalTextDecoration": true, "__experimentalLetterSpacing": true, "__experimentalDefaultControls": { - "fontSize": true, - "fontAppearance": true, - "textTransform": true + "fontSize": true } } }, diff --git a/src/wp-includes/blocks/preformatted/block.json b/src/wp-includes/blocks/preformatted/block.json index ec6ea839385eb..def870e7ad2fb 100644 --- a/src/wp-includes/blocks/preformatted/block.json +++ b/src/wp-includes/blocks/preformatted/block.json @@ -8,10 +8,9 @@ "textdomain": "default", "attributes": { "content": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "pre", - "default": "", "__unstablePreserveWhiteSpace": true, "__experimentalRole": "content" } diff --git a/src/wp-includes/blocks/pullquote/block.json b/src/wp-includes/blocks/pullquote/block.json index 54c4175d3161b..7fc81d5683bd1 100644 --- a/src/wp-includes/blocks/pullquote/block.json +++ b/src/wp-includes/blocks/pullquote/block.json @@ -8,16 +8,15 @@ "textdomain": "default", "attributes": { "value": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "p", "__experimentalRole": "content" }, "citation": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "cite", - "default": "", "__experimentalRole": "content" }, "textAlign": { @@ -46,8 +45,7 @@ "__experimentalTextDecoration": true, "__experimentalLetterSpacing": true, "__experimentalDefaultControls": { - "fontSize": true, - "fontAppearance": true + "fontSize": true } }, "__experimentalBorder": { diff --git a/src/wp-includes/blocks/query-pagination-next.php b/src/wp-includes/blocks/query-pagination-next.php index 768fde56ff06f..ca134f62192f9 100644 --- a/src/wp-includes/blocks/query-pagination-next.php +++ b/src/wp-includes/blocks/query-pagination-next.php @@ -72,9 +72,9 @@ function render_block_core_query_pagination_next( $attributes, $content, $block ) ) ) { $p->set_attribute( 'data-wp-key', 'query-pagination-next' ); - $p->set_attribute( 'data-wp-on--click', 'actions.core.query.navigate' ); - $p->set_attribute( 'data-wp-on--mouseenter', 'actions.core.query.prefetch' ); - $p->set_attribute( 'data-wp-effect', 'effects.core.query.prefetch' ); + $p->set_attribute( 'data-wp-on--click', 'core/query::actions.navigate' ); + $p->set_attribute( 'data-wp-on--mouseenter', 'core/query::actions.prefetch' ); + $p->set_attribute( 'data-wp-watch', 'core/query::callbacks.prefetch' ); $content = $p->get_updated_html(); } } diff --git a/src/wp-includes/blocks/query-pagination-numbers.php b/src/wp-includes/blocks/query-pagination-numbers.php index 98098533adac7..2f9370751f6d2 100644 --- a/src/wp-includes/blocks/query-pagination-numbers.php +++ b/src/wp-includes/blocks/query-pagination-numbers.php @@ -98,7 +98,7 @@ function render_block_core_query_pagination_numbers( $attributes, $content, $blo 'class_name' => 'page-numbers', ) ) ) { - $p->set_attribute( 'data-wp-on--click', 'actions.core.query.navigate' ); + $p->set_attribute( 'data-wp-on--click', 'core/query::actions.navigate' ); } $content = $p->get_updated_html(); } diff --git a/src/wp-includes/blocks/query-pagination-numbers/block.json b/src/wp-includes/blocks/query-pagination-numbers/block.json index f05e269d2ece2..f22d88115d68c 100644 --- a/src/wp-includes/blocks/query-pagination-numbers/block.json +++ b/src/wp-includes/blocks/query-pagination-numbers/block.json @@ -5,7 +5,7 @@ "title": "Page Numbers", "category": "theme", "parent": [ "core/query-pagination" ], - "description": "Displays a list of page numbers for pagination", + "description": "Displays a list of page numbers for pagination.", "textdomain": "default", "attributes": { "midSize": { diff --git a/src/wp-includes/blocks/query-pagination-previous.php b/src/wp-includes/blocks/query-pagination-previous.php index fc1fee08e8214..b49130a44d8dd 100644 --- a/src/wp-includes/blocks/query-pagination-previous.php +++ b/src/wp-includes/blocks/query-pagination-previous.php @@ -60,9 +60,9 @@ function render_block_core_query_pagination_previous( $attributes, $content, $bl ) ) ) { $p->set_attribute( 'data-wp-key', 'query-pagination-previous' ); - $p->set_attribute( 'data-wp-on--click', 'actions.core.query.navigate' ); - $p->set_attribute( 'data-wp-on--mouseenter', 'actions.core.query.prefetch' ); - $p->set_attribute( 'data-wp-effect', 'effects.core.query.prefetch' ); + $p->set_attribute( 'data-wp-on--click', 'core/query::actions.navigate' ); + $p->set_attribute( 'data-wp-on--mouseenter', 'core/query::actions.prefetch' ); + $p->set_attribute( 'data-wp-watch', 'core/query::callbacks.prefetch' ); $content = $p->get_updated_html(); } } diff --git a/src/wp-includes/blocks/query-title/block.json b/src/wp-includes/blocks/query-title/block.json index 2db349e55db90..65eb03d310c12 100644 --- a/src/wp-includes/blocks/query-title/block.json +++ b/src/wp-includes/blocks/query-title/block.json @@ -50,9 +50,7 @@ "__experimentalTextTransform": true, "__experimentalTextDecoration": true, "__experimentalDefaultControls": { - "fontSize": true, - "fontAppearance": true, - "textTransform": true + "fontSize": true } } }, diff --git a/src/wp-includes/blocks/query.php b/src/wp-includes/blocks/query.php index b6a5733632ff4..75b5218364d7b 100644 --- a/src/wp-includes/blocks/query.php +++ b/src/wp-includes/blocks/query.php @@ -21,19 +21,15 @@ function render_block_core_query( $attributes, $content, $block ) { $p = new WP_HTML_Tag_Processor( $content ); if ( $p->next_tag() ) { // Add the necessary directives. - $p->set_attribute( 'data-wp-interactive', true ); + $p->set_attribute( 'data-wp-interactive', '{"namespace":"core/query"}' ); $p->set_attribute( 'data-wp-navigation-id', 'query-' . $attributes['queryId'] ); // Use context to send translated strings. $p->set_attribute( 'data-wp-context', wp_json_encode( array( - 'core' => array( - 'query' => array( - 'loadingText' => __( 'Loading page, please wait.' ), - 'loadedText' => __( 'Page Loaded.' ), - ), - ), + 'loadingText' => __( 'Loading page, please wait.' ), + 'loadedText' => __( 'Page Loaded.' ), ), JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP ) @@ -54,12 +50,12 @@ function render_block_core_query( $attributes, $content, $block ) { '
    ', $last_tag_position, 0 @@ -67,19 +63,28 @@ class="wp-block-query__enhanced-pagination-animation" } } - $view_asset = 'wp-block-query-view'; - if ( ! wp_script_is( $view_asset ) ) { - $script_handles = $block->block_type->view_script_handles; - // If the script is not needed, and it is still in the `view_script_handles`, remove it. - if ( - ( ! $attributes['enhancedPagination'] || ! isset( $attributes['queryId'] ) ) - && in_array( $view_asset, $script_handles, true ) - ) { - $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_asset ) ); + $is_gutenberg_plugin = defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN; + $should_load_view_script = $attributes['enhancedPagination'] && isset( $attributes['queryId'] ); + $view_asset = 'wp-block-query-view'; + $script_handles = $block->block_type->view_script_handles; + + if ( $is_gutenberg_plugin ) { + if ( $should_load_view_script ) { + gutenberg_enqueue_module( '@wordpress/block-library/query' ); } - // If the script is needed, but it was previously removed, add it again. - if ( $attributes['enhancedPagination'] && isset( $attributes['queryId'] ) && ! in_array( $view_asset, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_asset ) ); + // Remove the view script because we are using the module. + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_asset ) ); + } else { + if ( ! wp_script_is( $view_asset ) ) { + // If the script is not needed, and it is still in the `view_script_handles`, remove it. + if ( ! $should_load_view_script && in_array( $view_asset, $script_handles, true ) + ) { + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_asset ) ); + } + // If the script is needed, but it was previously removed, add it again. + if ( $should_load_view_script && ! in_array( $view_asset, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_asset ) ); + } } } @@ -131,6 +136,15 @@ function register_block_core_query() { 'render_callback' => 'render_block_core_query', ) ); + + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + gutenberg_register_module( + '@wordpress/block-library/query', + '/wp-content/plugins/gutenberg/build/interactivity/query.min.js', + array( '@wordpress/interactivity' ), + defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) + ); + } } add_action( 'init', 'register_block_core_query' ); diff --git a/src/wp-includes/blocks/quote/block.json b/src/wp-includes/blocks/quote/block.json index eff4649230a58..9deca000efe06 100644 --- a/src/wp-includes/blocks/quote/block.json +++ b/src/wp-includes/blocks/quote/block.json @@ -17,10 +17,9 @@ "__experimentalRole": "content" }, "citation": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "cite", - "default": "", "__experimentalRole": "content" }, "align": { @@ -42,8 +41,7 @@ "__experimentalTextDecoration": true, "__experimentalLetterSpacing": true, "__experimentalDefaultControls": { - "fontSize": true, - "fontAppearance": true + "fontSize": true } }, "color": { @@ -54,6 +52,12 @@ "background": true, "text": true } + }, + "layout": { + "allowEditing": false + }, + "spacing": { + "blockGap": true } }, "styles": [ diff --git a/src/wp-includes/blocks/search.php b/src/wp-includes/blocks/search.php index f00ecfe6abe1c..ae6ddb1c4fb37 100644 --- a/src/wp-includes/blocks/search.php +++ b/src/wp-includes/blocks/search.php @@ -36,7 +36,6 @@ function render_block_core_search( $attributes, $content, $block ) { $show_button = ( ! empty( $attributes['buttonPosition'] ) && 'no-button' === $attributes['buttonPosition'] ) ? false : true; $button_position = $show_button ? $attributes['buttonPosition'] : null; $query_params = ( ! empty( $attributes['query'] ) ) ? $attributes['query'] : array(); - $button_behavior = ( ! empty( $attributes['buttonBehavior'] ) ) ? $attributes['buttonBehavior'] : 'default'; $button = ''; $query_params_markup = ''; $inline_styles = styles_for_block_core_search( $attributes ); @@ -78,27 +77,37 @@ function render_block_core_search( $attributes, $content, $block ) { $input->set_attribute( 'value', get_search_query() ); $input->set_attribute( 'placeholder', $attributes['placeholder'] ); - $is_expandable_searchfield = 'button-only' === $button_position && 'expand-searchfield' === $button_behavior; + $is_expandable_searchfield = 'button-only' === $button_position; if ( $is_expandable_searchfield ) { - $input->set_attribute( 'data-wp-bind--aria-hidden', '!context.core.search.isSearchInputVisible' ); - $input->set_attribute( 'data-wp-bind--tabindex', 'selectors.core.search.tabindex' ); + $input->set_attribute( 'data-wp-bind--aria-hidden', '!context.isSearchInputVisible' ); + $input->set_attribute( 'data-wp-bind--tabindex', 'state.tabindex' ); // Adding these attributes manually is needed until the Interactivity API SSR logic is added to core. $input->set_attribute( 'aria-hidden', 'true' ); $input->set_attribute( 'tabindex', '-1' ); } - // If the script already exists, there is no point in removing it from viewScript. - $view_js_file = 'wp-block-search-view'; - if ( ! wp_script_is( $view_js_file ) ) { - $script_handles = $block->block_type->view_script_handles; + $is_gutenberg_plugin = defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN; + $script_handles = $block->block_type->view_script_handles; + $view_js_file = 'wp-block-search-view'; - // If the script is not needed, and it is still in the `view_script_handles`, remove it. - if ( ! $is_expandable_searchfield && in_array( $view_js_file, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); + if ( $is_gutenberg_plugin ) { + if ( $is_expandable_searchfield ) { + gutenberg_enqueue_module( '@wordpress/block-library/search-block' ); } - // If the script is needed, but it was previously removed, add it again. - if ( $is_expandable_searchfield && ! in_array( $view_js_file, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); + // Remove the view script because we are using the module. + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); + } else { + // If the script already exists, there is no point in removing it from viewScript. + if ( ! wp_script_is( $view_js_file ) ) { + + // If the script is not needed, and it is still in the `view_script_handles`, remove it. + if ( ! $is_expandable_searchfield && in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); + } + // If the script is needed, but it was previously removed, add it again. + if ( $is_expandable_searchfield && ! in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); + } } } } @@ -144,12 +153,12 @@ function render_block_core_search( $attributes, $content, $block ) { if ( $button->next_tag() ) { $button->add_class( implode( ' ', $button_classes ) ); - if ( 'expand-searchfield' === $attributes['buttonBehavior'] && 'button-only' === $attributes['buttonPosition'] ) { - $button->set_attribute( 'data-wp-bind--aria-label', 'selectors.core.search.ariaLabel' ); - $button->set_attribute( 'data-wp-bind--aria-controls', 'selectors.core.search.ariaControls' ); - $button->set_attribute( 'data-wp-bind--aria-expanded', 'context.core.search.isSearchInputVisible' ); - $button->set_attribute( 'data-wp-bind--type', 'selectors.core.search.type' ); - $button->set_attribute( 'data-wp-on--click', 'actions.core.search.openSearchInput' ); + if ( 'button-only' === $attributes['buttonPosition'] ) { + $button->set_attribute( 'data-wp-bind--aria-label', 'state.ariaLabel' ); + $button->set_attribute( 'data-wp-bind--aria-controls', 'state.ariaControls' ); + $button->set_attribute( 'data-wp-bind--aria-expanded', 'context.isSearchInputVisible' ); + $button->set_attribute( 'data-wp-bind--type', 'state.type' ); + $button->set_attribute( 'data-wp-on--click', 'actions.openSearchInput' ); // Adding these attributes manually is needed until the Interactivity API SSR logic is added to core. $button->set_attribute( 'aria-label', __( 'Expand search field' ) ); $button->set_attribute( 'aria-controls', 'wp-block-search__input-' . $input_id ); @@ -176,11 +185,11 @@ function render_block_core_search( $attributes, $content, $block ) { $aria_label_expanded = __( 'Submit Search' ); $aria_label_collapsed = __( 'Expand search field' ); $form_directives = ' - data-wp-interactive - data-wp-context=\'{ "core": { "search": { "isSearchInputVisible": ' . $open_by_default . ', "inputId": "' . $input_id . '", "ariaLabelExpanded": "' . $aria_label_expanded . '", "ariaLabelCollapsed": "' . $aria_label_collapsed . '" } } }\' - data-wp-class--wp-block-search__searchfield-hidden="!context.core.search.isSearchInputVisible" - data-wp-on--keydown="actions.core.search.handleSearchKeydown" - data-wp-on--focusout="actions.core.search.handleSearchFocusout" + data-wp-interactive=\'{ "namespace": "core/search" }\' + data-wp-context=\'{ "isSearchInputVisible": ' . $open_by_default . ', "inputId": "' . $input_id . '", "ariaLabelExpanded": "' . $aria_label_expanded . '", "ariaLabelCollapsed": "' . $aria_label_collapsed . '" }\' + data-wp-class--wp-block-search__searchfield-hidden="!context.isSearchInputVisible" + data-wp-on--keydown="actions.handleSearchKeydown" + data-wp-on--focusout="actions.handleSearchFocusout" '; } @@ -203,27 +212,17 @@ function register_block_core_search() { 'render_callback' => 'render_block_core_search', ) ); -} -add_action( 'init', 'register_block_core_search' ); -/** - * Ensure that the view script has the `wp-interactivity` dependency. - * - * @since 6.4.0 - * - * @global WP_Scripts $wp_scripts - */ -function block_core_search_ensure_interactivity_dependency() { - global $wp_scripts; - if ( - isset( $wp_scripts->registered['wp-block-search-view'] ) && - ! in_array( 'wp-interactivity', $wp_scripts->registered['wp-block-search-view']->deps, true ) - ) { - $wp_scripts->registered['wp-block-search-view']->deps[] = 'wp-interactivity'; + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + gutenberg_register_module( + '@wordpress/block-library/search-block', + gutenberg_url( '/build/interactivity/search.min.js' ), + array( '@wordpress/interactivity' ), + defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) + ); } } - -add_action( 'wp_print_scripts', 'block_core_search_ensure_interactivity_dependency' ); +add_action( 'init', 'register_block_core_search' ); /** * Builds the correct top level classnames for the 'core/search' block. @@ -249,10 +248,7 @@ function classnames_for_block_core_search( $attributes ) { } if ( 'button-only' === $attributes['buttonPosition'] ) { - $classnames[] = 'wp-block-search__button-only'; - if ( ! empty( $attributes['buttonBehavior'] ) && 'expand-searchfield' === $attributes['buttonBehavior'] ) { - $classnames[] = 'wp-block-search__button-behavior-expand wp-block-search__searchfield-hidden'; - } + $classnames[] = 'wp-block-search__button-only wp-block-search__searchfield-hidden'; } } diff --git a/src/wp-includes/blocks/search/block.json b/src/wp-includes/blocks/search/block.json index 5669a9089d0e0..15531475adc9a 100644 --- a/src/wp-includes/blocks/search/block.json +++ b/src/wp-includes/blocks/search/block.json @@ -43,10 +43,6 @@ "type": "object", "default": {} }, - "buttonBehavior": { - "type": "string", - "default": "expand-searchfield" - }, "isSearchFieldHidden": { "type": "boolean", "default": false diff --git a/src/wp-includes/blocks/site-title/block.json b/src/wp-includes/blocks/site-title/block.json index e936bad0e4515..4a2685e6941fc 100644 --- a/src/wp-includes/blocks/site-title/block.json +++ b/src/wp-includes/blocks/site-title/block.json @@ -56,11 +56,7 @@ "__experimentalFontWeight": true, "__experimentalLetterSpacing": true, "__experimentalDefaultControls": { - "fontSize": true, - "lineHeight": true, - "fontAppearance": true, - "letterSpacing": true, - "textTransform": true + "fontSize": true } } }, diff --git a/src/wp-includes/blocks/social-link.php b/src/wp-includes/blocks/social-link.php index cda8e125097a5..fe256879fa4ff 100644 --- a/src/wp-includes/blocks/social-link.php +++ b/src/wp-includes/blocks/social-link.php @@ -33,7 +33,7 @@ function render_block_core_social_link( $attributes, $content, $block ) { * The `is_email` returns false for emails with schema. */ if ( is_email( $url ) ) { - $url = 'mailto:' . $url; + $url = 'mailto:' . antispambot( $url ); } /** @@ -62,10 +62,10 @@ function render_block_core_social_link( $attributes, $content, $block ) { $processor = new WP_HTML_Tag_Processor( $link ); $processor->next_tag( 'a' ); if ( $open_in_new_tab ) { - $processor->set_attribute( 'rel', esc_attr( $rel ) . ' noopener nofollow' ); + $processor->set_attribute( 'rel', trim( $rel . ' noopener nofollow' ) ); $processor->set_attribute( 'target', '_blank' ); } elseif ( '' !== $rel ) { - $processor->set_attribute( 'rel', esc_attr( $rel ) ); + $processor->set_attribute( 'rel', trim( $rel ) ); } return $processor->get_updated_html(); } @@ -194,6 +194,10 @@ function block_core_social_link_services( $service = '', $field = '' ) { 'name' => 'GitHub', 'icon' => '', ), + 'gravatar' => array( + 'name' => 'Gravatar', + 'icon' => '', + ), 'instagram' => array( 'name' => 'Instagram', 'icon' => '', diff --git a/src/wp-includes/blocks/table/block.json b/src/wp-includes/blocks/table/block.json index d1139d6c55add..470886a1247fe 100644 --- a/src/wp-includes/blocks/table/block.json +++ b/src/wp-includes/blocks/table/block.json @@ -12,10 +12,9 @@ "default": false }, "caption": { - "type": "string", - "source": "html", - "selector": "figcaption", - "default": "" + "type": "rich-text", + "source": "rich-text", + "selector": "figcaption" }, "head": { "type": "array", @@ -30,8 +29,8 @@ "selector": "td,th", "query": { "content": { - "type": "string", - "source": "html" + "type": "rich-text", + "source": "rich-text" }, "tag": { "type": "string", @@ -75,8 +74,8 @@ "selector": "td,th", "query": { "content": { - "type": "string", - "source": "html" + "type": "rich-text", + "source": "rich-text" }, "tag": { "type": "string", @@ -120,8 +119,8 @@ "selector": "td,th", "query": { "content": { - "type": "string", - "source": "html" + "type": "rich-text", + "source": "rich-text" }, "tag": { "type": "string", diff --git a/src/wp-includes/blocks/template-part.php b/src/wp-includes/blocks/template-part.php index 3ad400906945b..0c97f88b98e38 100644 --- a/src/wp-includes/blocks/template-part.php +++ b/src/wp-includes/blocks/template-part.php @@ -43,10 +43,10 @@ function render_block_core_template_part( $attributes ) { if ( $template_part_post ) { // A published post might already exist if this template part was customized elsewhere // or if it's part of a customized template. - $content = $template_part_post->post_content; - $area_terms = get_the_terms( $template_part_post, 'wp_template_part_area' ); - if ( ! is_wp_error( $area_terms ) && false !== $area_terms ) { - $area = $area_terms[0]->name; + $block_template = _build_block_template_result_from_post( $template_part_post ); + $content = $block_template->content; + if ( isset( $block_template->area ) ) { + $area = $block_template->area; } /** * Fires when a block template part is loaded from a template post stored in the database. @@ -70,6 +70,12 @@ function render_block_core_template_part( $attributes ) { if ( isset( $block_template->area ) ) { $area = $block_template->area; } + + // Needed for the `render_block_core_template_part_file` and `render_block_core_template_part_none` actions below. + $block_template_file = _get_block_template_file( 'wp_template_part', $attributes['slug'] ); + if ( $block_template_file ) { + $template_part_file_path = $block_template_file['path']; + } } if ( '' !== $content && null !== $content ) { diff --git a/src/wp-includes/blocks/template-part/block.json b/src/wp-includes/blocks/template-part/block.json index 9fe431150ae39..3b0946718bcb9 100644 --- a/src/wp-includes/blocks/template-part/block.json +++ b/src/wp-includes/blocks/template-part/block.json @@ -23,7 +23,8 @@ "supports": { "align": true, "html": false, - "reusable": false + "reusable": false, + "renaming": false }, "editorStyle": "wp-block-template-part-editor" } diff --git a/src/wp-includes/blocks/verse/block.json b/src/wp-includes/blocks/verse/block.json index d0fffc8ae5076..846a1dc99caaf 100644 --- a/src/wp-includes/blocks/verse/block.json +++ b/src/wp-includes/blocks/verse/block.json @@ -9,10 +9,9 @@ "textdomain": "default", "attributes": { "content": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "pre", - "default": "", "__unstablePreserveWhiteSpace": true, "__experimentalRole": "content" }, @@ -40,8 +39,7 @@ "__experimentalTextTransform": true, "__experimentalTextDecoration": true, "__experimentalDefaultControls": { - "fontSize": true, - "fontAppearance": true + "fontSize": true } }, "spacing": { diff --git a/src/wp-includes/blocks/video/block.json b/src/wp-includes/blocks/video/block.json index debe6f20fe53f..5d4680f39e79a 100644 --- a/src/wp-includes/blocks/video/block.json +++ b/src/wp-includes/blocks/video/block.json @@ -15,8 +15,8 @@ "attribute": "autoplay" }, "caption": { - "type": "string", - "source": "html", + "type": "rich-text", + "source": "rich-text", "selector": "figcaption", "__experimentalRole": "content" }, diff --git a/src/wp-includes/blocks/widget-group/block.json b/src/wp-includes/blocks/widget-group/block.json index c29e811554ac1..0e59e58aca224 100644 --- a/src/wp-includes/blocks/widget-group/block.json +++ b/src/wp-includes/blocks/widget-group/block.json @@ -1,4 +1,5 @@ { + "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 3, "name": "core/widget-group", "category": "widgets", diff --git a/tools/webpack/blocks.js b/tools/webpack/blocks.js index 91e2cfafbdf84..c05de01075839 100644 --- a/tools/webpack/blocks.js +++ b/tools/webpack/blocks.js @@ -3,60 +3,90 @@ */ const CopyWebpackPlugin = require( 'copy-webpack-plugin' ); -/** - * WordPress dependencies - */ -const DependencyExtractionPlugin = require( '@wordpress/dependency-extraction-webpack-plugin' ); - /** * Internal dependencies */ -const { baseDir, getBaseConfig, normalizeJoin, stylesTransform } = require( './shared' ); +const { + baseDir, + getBaseConfig, + normalizeJoin, + stylesTransform, +} = require( './shared' ); const { isDynamic, toDirectoryName, getStableBlocksMetadata, } = require( '../release/sync-stable-blocks' ); -module.exports = function( env = { environment: 'production', watch: false, buildTarget: false } ) { +module.exports = function ( + env = { environment: 'production', watch: false, buildTarget: false } +) { const mode = env.environment; const suffix = mode === 'production' ? '.min' : ''; - let buildTarget = env.buildTarget ? env.buildTarget : ( mode === 'production' ? 'build' : 'src' ); + let buildTarget = env.buildTarget + ? env.buildTarget + : mode === 'production' + ? 'build' + : 'src'; buildTarget = buildTarget + '/wp-includes'; const blocks = getStableBlocksMetadata(); - const dynamicBlockFolders = blocks.filter( isDynamic ).map( toDirectoryName ); + const dynamicBlockFolders = blocks + .filter( isDynamic ) + .map( toDirectoryName ); const blockFolders = blocks.map( toDirectoryName ); const blockPHPFiles = { - 'widgets/src/blocks/legacy-widget/index.php': 'wp-includes/blocks/legacy-widget.php', - 'widgets/src/blocks/widget-group/index.php': 'wp-includes/blocks/widget-group.php', + 'widgets/src/blocks/legacy-widget/index.php': + 'wp-includes/blocks/legacy-widget.php', + 'widgets/src/blocks/widget-group/index.php': + 'wp-includes/blocks/widget-group.php', ...dynamicBlockFolders.reduce( ( files, blockName ) => { - files[ `block-library/src/${ blockName }/index.php` ] = `wp-includes/blocks/${ blockName }.php`; + files[ + `block-library/src/${ blockName }/index.php` + ] = `wp-includes/blocks/${ blockName }.php`; return files; }, {} ), }; const blockMetadataFiles = { - 'widgets/src/blocks/legacy-widget/block.json': 'wp-includes/blocks/legacy-widget/block.json', - 'widgets/src/blocks/widget-group/block.json': 'wp-includes/blocks/widget-group/block.json', + 'widgets/src/blocks/legacy-widget/block.json': + 'wp-includes/blocks/legacy-widget/block.json', + 'widgets/src/blocks/widget-group/block.json': + 'wp-includes/blocks/widget-group/block.json', ...blockFolders.reduce( ( files, blockName ) => { - files[ `block-library/src/${ blockName }/block.json` ] = `wp-includes/blocks/${ blockName }/block.json`; + files[ + `block-library/src/${ blockName }/block.json` + ] = `wp-includes/blocks/${ blockName }/block.json`; return files; }, {} ), }; const blockPHPCopies = Object.keys( blockPHPFiles ).map( ( filename ) => ( { - from: normalizeJoin(baseDir, `node_modules/@wordpress/${ filename }` ), - to: normalizeJoin(baseDir, `src/${ blockPHPFiles[ filename ] }` ), + from: normalizeJoin( baseDir, `node_modules/@wordpress/${ filename }` ), + to: normalizeJoin( baseDir, `src/${ blockPHPFiles[ filename ] }` ), } ) ); - const blockMetadataCopies = Object.keys( blockMetadataFiles ).map( ( filename ) => ( { - from: normalizeJoin(baseDir, `node_modules/@wordpress/${ filename }` ), - to: normalizeJoin(baseDir, `src/${ blockMetadataFiles[ filename ] }` ), - } ) ); + const blockMetadataCopies = Object.keys( blockMetadataFiles ).map( + ( filename ) => ( { + from: normalizeJoin( + baseDir, + `node_modules/@wordpress/${ filename }` + ), + to: normalizeJoin( + baseDir, + `src/${ blockMetadataFiles[ filename ] }` + ), + } ) + ); const blockStylesheetCopies = blockFolders.map( ( blockName ) => ( { - from: normalizeJoin(baseDir, `node_modules/@wordpress/block-library/build-style/${ blockName }/*.css` ), - to: normalizeJoin(baseDir, `${ buildTarget }/blocks/${ blockName }/[name]${ suffix }.css` ), + from: normalizeJoin( + baseDir, + `node_modules/@wordpress/block-library/build-style/${ blockName }/*.css` + ), + to: normalizeJoin( + baseDir, + `${ buildTarget }/blocks/${ blockName }/[name]${ suffix }.css` + ), transform: stylesTransform( mode ), noErrorOnMissing: true, } ) ); @@ -64,41 +94,45 @@ module.exports = function( env = { environment: 'production', watch: false, buil const baseConfig = getBaseConfig( env ); const config = { ...baseConfig, + // Todo: This list need of entry points need to be automatically fetched from the package + // We shouldn't have to maintain it manually. entry: { - 'navigation/view': normalizeJoin( baseDir, 'node_modules/@wordpress/block-library/build-module/navigation/view' ), - 'image/view': normalizeJoin( baseDir, 'node_modules/@wordpress/block-library/build-module/image/view' ), - 'query/view': normalizeJoin( baseDir, 'node_modules/@wordpress/block-library/build-module/query/view' ), - 'file/view': normalizeJoin( baseDir, 'node_modules/@wordpress/block-library/build-module/file/view' ), - 'search/view': normalizeJoin( baseDir, 'node_modules/@wordpress/block-library/build-module/search/view' ), + navigation: normalizeJoin( + baseDir, + 'node_modules/@wordpress/block-library/build-module/navigation/view' + ), + image: normalizeJoin( + baseDir, + 'node_modules/@wordpress/block-library/build-module/image/view' + ), + query: normalizeJoin( + baseDir, + 'node_modules/@wordpress/block-library/build-module/query/view' + ), + file: normalizeJoin( + baseDir, + 'node_modules/@wordpress/block-library/build-module/file/view' + ), + search: normalizeJoin( + baseDir, + 'node_modules/@wordpress/block-library/build-module/search/view' + ), + }, + experiments: { + outputModule: true, }, output: { devtoolNamespace: 'wp', filename: `./blocks/[name]${ suffix }.js`, path: normalizeJoin( baseDir, buildTarget ), - chunkLoadingGlobal: `__WordPressPrivateInteractivityAPI__`, - }, - resolve: { - alias: { - '@wordpress/interactivity': normalizeJoin( baseDir, 'node_modules/@wordpress/interactivity/src/index.js' ), + library: { + type: 'module', }, + environment: { module: true }, }, - optimization: { - ...baseConfig.optimization, - runtimeChunk: { - name: 'private-interactivity', - }, - splitChunks: { - cacheGroups: { - interactivity: { - name: 'private-interactivity', - test: /^(?!.*[\\/]block-library[\\/]).*$/, - filename: `./js/dist/interactivity${suffix}.js`, - chunks: 'all', - minSize: 0, - priority: -10, - }, - }, - }, + externalsType: 'module', + externals: { + '@wordpress/interactivity': '@wordpress/interactivity', }, module: { rules: [ @@ -108,7 +142,8 @@ module.exports = function( env = { environment: 'production', watch: false, buil { loader: require.resolve( 'babel-loader' ), options: { - cacheDirectory: process.env.BABEL_CACHE_DIRECTORY || true, + cacheDirectory: + process.env.BABEL_CACHE_DIRECTORY || true, babelrc: false, configFile: false, presets: [ @@ -128,10 +163,6 @@ module.exports = function( env = { environment: 'production', watch: false, buil }, plugins: [ ...baseConfig.plugins, - new DependencyExtractionPlugin( { - injectPolyfill: false, - useDefaults: false, - } ), new CopyWebpackPlugin( { patterns: [ ...blockPHPCopies, diff --git a/tools/webpack/modules.js b/tools/webpack/modules.js new file mode 100644 index 0000000000000..d525f370e5884 --- /dev/null +++ b/tools/webpack/modules.js @@ -0,0 +1,93 @@ +/** + * WordPress dependencies + */ +const DependencyExtractionPlugin = require( '@wordpress/dependency-extraction-webpack-plugin' ); + +/** + * Internal dependencies + */ +const { + baseDir, + getBaseConfig, + normalizeJoin, + MODULES, + WORDPRESS_NAMESPACE, +} = require( './shared' ); + +module.exports = function ( + env = { environment: 'production', watch: false, buildTarget: false } +) { + const mode = env.environment; + const suffix = mode === 'production' ? '.min' : ''; + let buildTarget = env.buildTarget + ? env.buildTarget + : mode === 'production' + ? 'build' + : 'src'; + buildTarget = buildTarget + '/wp-includes'; + + const baseConfig = getBaseConfig( env ); + const config = { + ...baseConfig, + entry: MODULES.map( ( packageName ) => + packageName.replace( WORDPRESS_NAMESPACE, '' ) + ).reduce( ( memo, packageName ) => { + memo[ packageName ] = { + import: normalizeJoin( + baseDir, + `node_modules/@wordpress/${ packageName }` + ), + }; + + return memo; + }, {} ), + experiments: { + outputModule: true, + }, + output: { + devtoolNamespace: 'wp', + filename: `[name]${ suffix }.js`, + path: normalizeJoin( baseDir, `${ buildTarget }/js/dist` ), + library: { + type: 'module', + }, + environment: { module: true }, + }, + module: { + rules: [ + { + test: /\.(j|t)sx?$/, + use: [ + { + loader: require.resolve( 'babel-loader' ), + options: { + cacheDirectory: + process.env.BABEL_CACHE_DIRECTORY || true, + babelrc: false, + configFile: false, + presets: [ + [ + '@babel/preset-react', + { + runtime: 'automatic', + importSource: 'preact', + }, + ], + ], + }, + }, + ], + }, + ], + }, + plugins: [ + ...baseConfig.plugins, + new DependencyExtractionPlugin( { + injectPolyfill: false, + useDefaults: false, + } ), + ], + }; + + return config; +}; diff --git a/tools/webpack/packages.js b/tools/webpack/packages.js index fa72d06982600..6867cbd0936d9 100644 --- a/tools/webpack/packages.js +++ b/tools/webpack/packages.js @@ -16,7 +16,15 @@ const DependencyExtractionPlugin = require( '@wordpress/dependency-extraction-we /** * Internal dependencies */ -const { baseDir, getBaseConfig, normalizeJoin, stylesTransform } = require( './shared' ); +const { + baseDir, + getBaseConfig, + normalizeJoin, + stylesTransform, + BUNDLED_PACKAGES, + MODULES, + WORDPRESS_NAMESPACE, +} = require( './shared' ); const { dependencies } = require( '../../package' ); const exportDefaultPackages = [ @@ -40,36 +48,50 @@ const exportDefaultPackages = [ */ function mapVendorCopies( vendors, buildTarget ) { return Object.keys( vendors ).map( ( filename ) => ( { - from: normalizeJoin(baseDir, `node_modules/${ vendors[ filename ] }` ), - to: normalizeJoin(baseDir, `${ buildTarget }/js/dist/vendor/${ filename }` ), + from: normalizeJoin( baseDir, `node_modules/${ vendors[ filename ] }` ), + to: normalizeJoin( + baseDir, + `${ buildTarget }/js/dist/vendor/${ filename }` + ), } ) ); } -module.exports = function( env = { environment: 'production', watch: false, buildTarget: false } ) { +module.exports = function ( + env = { environment: 'production', watch: false, buildTarget: false } +) { const mode = env.environment; const suffix = mode === 'production' ? '.min' : ''; - let buildTarget = env.buildTarget ? env.buildTarget : ( mode === 'production' ? 'build' : 'src' ); - buildTarget = buildTarget + '/wp-includes'; + let buildTarget = env.buildTarget + ? env.buildTarget + : mode === 'production' + ? 'build' + : 'src'; + buildTarget = buildTarget + '/wp-includes'; - const WORDPRESS_NAMESPACE = '@wordpress/'; - const BUNDLED_PACKAGES = [ '@wordpress/icons', '@wordpress/interface', '@wordpress/interactivity', '@wordpress/sync' ]; const packages = Object.keys( dependencies ) - .filter( ( packageName ) => - ! BUNDLED_PACKAGES.includes( packageName ) && - packageName.startsWith( WORDPRESS_NAMESPACE ) - ) - .map( ( packageName ) => packageName.replace( WORDPRESS_NAMESPACE, '' ) ); + .filter( + ( packageName ) => + ! BUNDLED_PACKAGES.includes( packageName ) && + ! MODULES.includes( packageName ) && + packageName.startsWith( WORDPRESS_NAMESPACE ) + ) + .map( ( packageName ) => + packageName.replace( WORDPRESS_NAMESPACE, '' ) + ); const vendors = { 'lodash.js': 'lodash/lodash.js', 'wp-polyfill.js': '@wordpress/babel-preset-default/build/polyfill.js', 'wp-polyfill-fetch.js': 'whatwg-fetch/dist/fetch.umd.js', 'wp-polyfill-element-closest.js': 'element-closest/browser.js', - 'wp-polyfill-node-contains.js': 'polyfill-library/polyfills/__dist/Node.prototype.contains/raw.js', + 'wp-polyfill-node-contains.js': + 'polyfill-library/polyfills/__dist/Node.prototype.contains/raw.js', 'wp-polyfill-url.js': 'core-js-url-browser/url.js', - 'wp-polyfill-dom-rect.js': 'polyfill-library/polyfills/__dist/DOMRect/raw.js', + 'wp-polyfill-dom-rect.js': + 'polyfill-library/polyfills/__dist/DOMRect/raw.js', 'wp-polyfill-formdata.js': 'formdata-polyfill/FormData.js', - 'wp-polyfill-object-fit.js': 'objectFitPolyfill/src/objectFitPolyfill.js', + 'wp-polyfill-object-fit.js': + 'objectFitPolyfill/src/objectFitPolyfill.js', 'wp-polyfill-inert.js': 'wicg-inert/dist/inert.js', 'moment.js': 'moment/moment.js', 'react.js': 'react/umd/react.development.js', @@ -79,11 +101,13 @@ module.exports = function( env = { environment: 'production', watch: false, buil const minifiedVendors = { 'lodash.min.js': 'lodash/lodash.min.js', - 'wp-polyfill.min.js': '@wordpress/babel-preset-default/build/polyfill.min.js', + 'wp-polyfill.min.js': + '@wordpress/babel-preset-default/build/polyfill.min.js', 'wp-polyfill-element-closest.min.js': 'element-closest/browser.js', 'wp-polyfill-formdata.min.js': 'formdata-polyfill/formdata.min.js', 'wp-polyfill-url.min.js': 'core-js-url-browser/url.min.js', - 'wp-polyfill-object-fit.min.js': 'objectFitPolyfill/dist/objectFitPolyfill.min.js', + 'wp-polyfill-object-fit.min.js': + 'objectFitPolyfill/dist/objectFitPolyfill.min.js', 'wp-polyfill-inert.min.js': 'wicg-inert/dist/inert.min.js', 'moment.min.js': 'moment/min/moment.min.js', 'react.min.js': 'react/umd/react.production.min.js', @@ -93,39 +117,55 @@ module.exports = function( env = { environment: 'production', watch: false, buil const minifyVendors = { 'regenerator-runtime.min.js': 'regenerator-runtime/runtime.js', 'wp-polyfill-fetch.min.js': 'whatwg-fetch/dist/fetch.umd.js', - 'wp-polyfill-node-contains.min.js': 'polyfill-library/polyfills/__dist/Node.prototype.contains/raw.js', - 'wp-polyfill-dom-rect.min.js': 'polyfill-library/polyfills/__dist/DOMRect/raw.js', + 'wp-polyfill-node-contains.min.js': + 'polyfill-library/polyfills/__dist/Node.prototype.contains/raw.js', + 'wp-polyfill-dom-rect.min.js': + 'polyfill-library/polyfills/__dist/DOMRect/raw.js', }; const phpFiles = { - 'block-serialization-default-parser/class-wp-block-parser.php': 'wp-includes/class-wp-block-parser.php', - 'block-serialization-default-parser/class-wp-block-parser-frame.php': 'wp-includes/class-wp-block-parser-frame.php', - 'block-serialization-default-parser/class-wp-block-parser-block.php': 'wp-includes/class-wp-block-parser-block.php', + 'block-serialization-default-parser/class-wp-block-parser.php': + 'wp-includes/class-wp-block-parser.php', + 'block-serialization-default-parser/class-wp-block-parser-frame.php': + 'wp-includes/class-wp-block-parser-frame.php', + 'block-serialization-default-parser/class-wp-block-parser-block.php': + 'wp-includes/class-wp-block-parser-block.php', }; const developmentCopies = mapVendorCopies( vendors, buildTarget ); const minifiedCopies = mapVendorCopies( minifiedVendors, buildTarget ); - const minifyCopies = mapVendorCopies( minifyVendors, buildTarget ).map( ( copyCommand ) => { - return { - ...copyCommand, - transform: ( content ) => { - return UglifyJS.minify( content.toString() ).code; - }, - }; - } ); + const minifyCopies = mapVendorCopies( minifyVendors, buildTarget ).map( + ( copyCommand ) => { + return { + ...copyCommand, + transform: ( content ) => { + return UglifyJS.minify( content.toString() ).code; + }, + }; + } + ); - let vendorCopies = mode === "development" ? developmentCopies : [ ...minifiedCopies, ...minifyCopies ]; + let vendorCopies = + mode === 'development' + ? developmentCopies + : [ ...minifiedCopies, ...minifyCopies ]; let cssCopies = packages.map( ( packageName ) => ( { - from: normalizeJoin(baseDir, `node_modules/@wordpress/${ packageName }/build-style/*.css` ), - to: normalizeJoin(baseDir, `${ buildTarget }/css/dist/${ packageName }/[name]${ suffix }.css` ), + from: normalizeJoin( + baseDir, + `node_modules/@wordpress/${ packageName }/build-style/*.css` + ), + to: normalizeJoin( + baseDir, + `${ buildTarget }/css/dist/${ packageName }/[name]${ suffix }.css` + ), transform: stylesTransform( mode ), noErrorOnMissing: true, } ) ); const phpCopies = Object.keys( phpFiles ).map( ( filename ) => ( { - from: normalizeJoin(baseDir, `node_modules/@wordpress/${ filename }` ), - to: normalizeJoin(baseDir, `src/${ phpFiles[ filename ] }` ), + from: normalizeJoin( baseDir, `node_modules/@wordpress/${ filename }` ), + to: normalizeJoin( baseDir, `src/${ phpFiles[ filename ] }` ), } ) ); const baseConfig = getBaseConfig( env ); @@ -133,7 +173,10 @@ module.exports = function( env = { environment: 'production', watch: false, buil ...baseConfig, entry: packages.reduce( ( memo, packageName ) => { memo[ packageName ] = { - import: normalizeJoin(baseDir, `node_modules/@wordpress/${ packageName }` ), + import: normalizeJoin( + baseDir, + `node_modules/@wordpress/${ packageName }` + ), library: { name: [ 'wp', camelCaseDash( packageName ) ], type: 'window', @@ -148,7 +191,7 @@ module.exports = function( env = { environment: 'production', watch: false, buil output: { devtoolNamespace: 'wp', filename: `[name]${ suffix }.js`, - path: normalizeJoin(baseDir, `${ buildTarget }/js/dist` ), + path: normalizeJoin( baseDir, `${ buildTarget }/js/dist` ), }, plugins: [ ...baseConfig.plugins, @@ -158,17 +201,17 @@ module.exports = function( env = { environment: 'production', watch: false, buil combinedOutputFile: `../../assets/script-loader-packages${ suffix }.php`, } ), new CopyWebpackPlugin( { - patterns: [ - ...vendorCopies, - ...cssCopies, - ...phpCopies, - ], + patterns: [ ...vendorCopies, ...cssCopies, ...phpCopies ], } ), ], }; if ( config.mode === 'development' ) { - config.plugins.push( new LiveReloadPlugin( { port: process.env.WORDPRESS_LIVE_RELOAD_PORT || 35729 } ) ); + config.plugins.push( + new LiveReloadPlugin( { + port: process.env.WORDPRESS_LIVE_RELOAD_PORT || 35729, + } ) + ); } return config; diff --git a/tools/webpack/shared.js b/tools/webpack/shared.js index 5aea4204d31a2..8bed50899002c 100644 --- a/tools/webpack/shared.js +++ b/tools/webpack/shared.js @@ -20,7 +20,7 @@ const getBaseConfig = ( env ) => { new TerserPlugin( { extractComments: false, } ), - ] + ], }, module: { rules: [ @@ -32,10 +32,7 @@ const getBaseConfig = ( env ) => { ], }, resolve: { - modules: [ - baseDir, - 'node_modules', - ], + modules: [ baseDir, 'node_modules' ], alias: { 'lodash-es': 'lodash', }, @@ -70,15 +67,20 @@ const getBaseConfig = ( env ) => { const stylesTransform = ( mode ) => ( content ) => { return postcss( [ require( 'cssnano' )( { - preset: mode === 'production' ? 'default' : [ - 'default', - { - discardComments: { - removeAll: ! content.includes( 'Copyright' ) && ! content.includes( 'License' ), - }, - normalizeWhitespace: false, - }, - ], + preset: + mode === 'production' + ? 'default' + : [ + 'default', + { + discardComments: { + removeAll: + ! content.includes( 'Copyright' ) && + ! content.includes( 'License' ), + }, + normalizeWhitespace: false, + }, + ], } ), ] ) .process( content, { from: 'src/app.css', to: 'dest/app.css' } ) @@ -87,10 +89,22 @@ const stylesTransform = ( mode ) => ( content ) => { const normalizeJoin = ( ...paths ) => join( ...paths ).replace( /\\/g, '/' ); +const BUNDLED_PACKAGES = [ + '@wordpress/dataviews', + '@wordpress/icons', + '@wordpress/interface', + '@wordpress/interactivity', + '@wordpress/sync', +]; +const MODULES = [ '@wordpress/interactivity' ]; +const WORDPRESS_NAMESPACE = '@wordpress/'; module.exports = { baseDir, getBaseConfig, normalizeJoin, stylesTransform, + BUNDLED_PACKAGES, + MODULES, + WORDPRESS_NAMESPACE, }; diff --git a/webpack.config.js b/webpack.config.js index 5e7c88a2cfc60..963117a7a52de 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,6 +2,7 @@ const blocksConfig = require( './tools/webpack/blocks' ); const developmentConfig = require( './tools/webpack/development' ); const mediaConfig = require( './tools/webpack/media' ); const packagesConfig = require( './tools/webpack/packages' ); +const modulesConfig = require( './tools/webpack/modules' ); module.exports = function( env = { environment: "production", watch: false, buildTarget: false } ) { if ( ! env.watch ) { @@ -17,6 +18,7 @@ module.exports = function( env = { environment: "production", watch: false, buil ...developmentConfig( env ), mediaConfig( env ), packagesConfig( env ), + modulesConfig( env ), ]; return config; From 3fdb7d3542adf46eca96d457ef90e7746f178074 Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Wed, 24 Jan 2024 10:51:24 +0100 Subject: [PATCH 09/20] Missing file --- src/wp-includes/blocks/blocks-json.php | 220 ++++++++++++++----------- 1 file changed, 122 insertions(+), 98 deletions(-) diff --git a/src/wp-includes/blocks/blocks-json.php b/src/wp-includes/blocks/blocks-json.php index 85656181b047b..6fe87ba1188f3 100644 --- a/src/wp-includes/blocks/blocks-json.php +++ b/src/wp-includes/blocks/blocks-json.php @@ -75,8 +75,8 @@ '__experimentalRole' => 'content' ), 'caption' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'figcaption', '__experimentalRole' => 'content' ), @@ -154,7 +154,11 @@ 'alignWide' => false, 'spacing' => array( 'margin' => true, - 'padding' => true + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) ), '__experimentalBorder' => array( '__experimentalSkipSerialization' => true, @@ -197,7 +201,8 @@ 'supports' => array( 'customClassName' => false, 'html' => false, - 'inserter' => false + 'inserter' => false, + 'renaming' => false ) ), 'button' => array( @@ -245,8 +250,8 @@ '__experimentalRole' => 'content' ), 'text' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'a,button', '__experimentalRole' => 'content' ), @@ -516,8 +521,8 @@ 'textdomain' => 'default', 'attributes' => array( 'content' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'code', '__unstablePreserveWhiteSpace' => true ) @@ -1314,7 +1319,7 @@ 'ancestor' => array( 'core/comments' ), - 'description' => 'Displays a title with the number of comments', + 'description' => 'Displays a title with the number of comments.', 'textdomain' => 'default', 'usesContext' => array( 'postId', @@ -1397,9 +1402,6 @@ ), 'alt' => array( 'type' => 'string', - 'source' => 'attribute', - 'selector' => 'img', - 'attribute' => 'alt', 'default' => '' ), 'hasParallax' => array( @@ -1420,6 +1422,9 @@ 'customOverlayColor' => array( 'type' => 'string' ), + 'isUserOverlayColor' => array( + 'type' => 'boolean' + ), 'backgroundType' => array( 'type' => 'string', 'default' => 'image' @@ -1548,8 +1553,8 @@ 'default' => false ), 'summary' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'summary' ) ), @@ -1615,8 +1620,8 @@ '__experimentalRole' => 'content' ), 'caption' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'figcaption', '__experimentalRole' => 'content' ), @@ -1679,8 +1684,8 @@ 'attribute' => 'id' ), 'fileName' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'a:not([download])' ), 'textLinkHref' => array( @@ -1700,8 +1705,8 @@ 'default' => true ), 'downloadButtonText' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'a[download]' ), 'displayPreview' => array( @@ -1740,7 +1745,7 @@ 'name' => 'core/footnotes', 'title' => 'Footnotes', 'category' => 'text', - 'description' => '', + 'description' => 'Display footnotes added to the page.', 'keywords' => array( 'references' ), @@ -1774,6 +1779,7 @@ 'html' => false, 'multiple' => false, 'reusable' => false, + 'inserter' => false, 'spacing' => array( 'margin' => true, 'padding' => true, @@ -1873,8 +1879,8 @@ 'attribute' => 'data-id' ), 'caption' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => '.blocks-gallery-item__caption' ) ) @@ -1903,14 +1909,18 @@ 'maximum' => 8 ), 'caption' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => '.blocks-gallery-caption' ), 'imageCrop' => array( 'type' => 'boolean', 'default' => true ), + 'randomOrder' => array( + 'type' => 'boolean', + 'default' => false + ), 'fixedHeight' => array( 'type' => 'boolean', 'default' => true @@ -2018,7 +2028,6 @@ '__experimentalOnEnter' => true, '__experimentalOnMerge' => true, '__experimentalSettings' => true, - '__experimentalMetadata' => true, 'align' => array( 'wide', 'full' @@ -2027,7 +2036,11 @@ 'ariaLabel' => true, 'html' => false, 'background' => array( - 'backgroundImage' => true + 'backgroundImage' => true, + 'backgroundSize' => true, + '__experimentalDefaultControls' => array( + 'backgroundImage' => true + ) ), 'color' => array( 'gradients' => true, @@ -2106,10 +2119,9 @@ 'type' => 'string' ), 'content' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'h1,h2,h3,h4,h5,h6', - 'default' => '', '__experimentalRole' => 'content' ), 'level' => array( @@ -2154,9 +2166,7 @@ '__experimentalTextDecoration' => true, '__experimentalWritingMode' => true, '__experimentalDefaultControls' => array( - 'fontSize' => true, - 'fontAppearance' => true, - 'textTransform' => true + 'fontSize' => true ) ), '__unstablePasteTextInline' => true, @@ -2253,9 +2263,6 @@ ), 'textdomain' => 'default', 'attributes' => array( - 'align' => array( - 'type' => 'string' - ), 'url' => array( 'type' => 'string', 'source' => 'attribute', @@ -2272,8 +2279,8 @@ '__experimentalRole' => 'content' ), 'caption' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'figcaption', '__experimentalRole' => 'content' ), @@ -2339,6 +2346,14 @@ ) ), 'supports' => array( + 'interactivity' => true, + 'align' => array( + 'left', + 'center', + 'right', + 'wide', + 'full' + ), 'anchor' => true, 'color' => array( 'text' => false, @@ -2559,6 +2574,7 @@ 'style' => 'wp-block-latest-posts' ), 'legacy-widget' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 3, 'name' => 'core/legacy-widget', 'title' => 'Legacy Widget', @@ -2686,16 +2702,23 @@ 'type' => 'string' ), 'content' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'li', - 'default' => '', '__experimentalRole' => 'content' ) ), 'supports' => array( 'className' => false, '__experimentalSelector' => 'li', + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), 'typography' => array( 'fontSize' => true, 'lineHeight' => true, @@ -2736,6 +2759,14 @@ ), 'supports' => array( 'className' => true, + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), 'typography' => array( 'fontSize' => true, 'lineHeight' => true, @@ -2904,7 +2935,7 @@ ), 'originalContent' => array( 'type' => 'string', - 'source' => 'html' + 'source' => 'raw' ) ), 'supports' => array( @@ -3101,7 +3132,8 @@ ) ) ), - 'interactivity' => true + 'interactivity' => true, + 'renaming' => false ), 'viewScript' => 'file:./view.min.js', 'editorStyle' => 'wp-block-navigation-editor', @@ -3182,7 +3214,8 @@ '__experimentalDefaultControls' => array( 'fontSize' => true ) - ) + ), + 'renaming' => false ), 'editorStyle' => 'wp-block-navigation-link-editor', 'style' => 'wp-block-navigation-link' @@ -3410,10 +3443,9 @@ 'type' => 'string' ), 'content' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'p', - 'default' => '', '__experimentalRole' => 'content' ), 'dropCap' => array( @@ -3480,7 +3512,8 @@ 'description' => 'Show a block pattern.', 'supports' => array( 'html' => false, - 'inserter' => false + 'inserter' => false, + 'renaming' => false ), 'textdomain' => 'default', 'attributes' => array( @@ -3934,6 +3967,10 @@ ), 'customGradient' => array( 'type' => 'string' + ), + 'useFirstImageFromPost' => array( + 'type' => 'boolean', + 'default' => false ) ), 'usesContext' => array( @@ -4044,7 +4081,6 @@ 'usesContext' => array( 'queryId', 'query', - 'queryContext', 'displayLayout', 'templateSlug', 'previewPostType', @@ -4218,9 +4254,7 @@ '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array( - 'fontSize' => true, - 'fontAppearance' => true, - 'textTransform' => true + 'fontSize' => true ) ) ), @@ -4236,10 +4270,9 @@ 'textdomain' => 'default', 'attributes' => array( 'content' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'pre', - 'default' => '', '__unstablePreserveWhiteSpace' => true, '__experimentalRole' => 'content' ) @@ -4283,16 +4316,15 @@ 'textdomain' => 'default', 'attributes' => array( 'value' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'p', '__experimentalRole' => 'content' ), 'citation' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'cite', - 'default' => '', '__experimentalRole' => 'content' ), 'textAlign' => array( @@ -4326,8 +4358,7 @@ '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array( - 'fontSize' => true, - 'fontAppearance' => true + 'fontSize' => true ) ), '__experimentalBorder' => array( @@ -4577,7 +4608,7 @@ 'parent' => array( 'core/query-pagination' ), - 'description' => 'Displays a list of page numbers for pagination', + 'description' => 'Displays a list of page numbers for pagination.', 'textdomain' => 'default', 'attributes' => array( 'midSize' => array( @@ -4719,9 +4750,7 @@ '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalDefaultControls' => array( - 'fontSize' => true, - 'fontAppearance' => true, - 'textTransform' => true + 'fontSize' => true ) ) ), @@ -4749,10 +4778,9 @@ '__experimentalRole' => 'content' ), 'citation' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'cite', - 'default' => '', '__experimentalRole' => 'content' ), 'align' => array( @@ -4774,8 +4802,7 @@ '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array( - 'fontSize' => true, - 'fontAppearance' => true + 'fontSize' => true ) ), 'color' => array( @@ -4786,6 +4813,12 @@ 'background' => true, 'text' => true ) + ), + 'layout' => array( + 'allowEditing' => false + ), + 'spacing' => array( + 'blockGap' => true ) ), 'styles' => array( @@ -4965,10 +4998,6 @@ ) ), - 'buttonBehavior' => array( - 'type' => 'string', - 'default' => 'expand-searchfield' - ), 'isSearchFieldHidden' => array( 'type' => 'boolean', 'default' => false @@ -5283,11 +5312,7 @@ '__experimentalFontWeight' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array( - 'fontSize' => true, - 'lineHeight' => true, - 'fontAppearance' => true, - 'letterSpacing' => true, - 'textTransform' => true + 'fontSize' => true ) ) ), @@ -5496,10 +5521,9 @@ 'default' => false ), 'caption' => array( - 'type' => 'string', - 'source' => 'html', - 'selector' => 'figcaption', - 'default' => '' + 'type' => 'rich-text', + 'source' => 'rich-text', + 'selector' => 'figcaption' ), 'head' => array( 'type' => 'array', @@ -5518,8 +5542,8 @@ 'selector' => 'td,th', 'query' => array( 'content' => array( - 'type' => 'string', - 'source' => 'html' + 'type' => 'rich-text', + 'source' => 'rich-text' ), 'tag' => array( 'type' => 'string', @@ -5567,8 +5591,8 @@ 'selector' => 'td,th', 'query' => array( 'content' => array( - 'type' => 'string', - 'source' => 'html' + 'type' => 'rich-text', + 'source' => 'rich-text' ), 'tag' => array( 'type' => 'string', @@ -5616,8 +5640,8 @@ 'selector' => 'td,th', 'query' => array( 'content' => array( - 'type' => 'string', - 'source' => 'html' + 'type' => 'rich-text', + 'source' => 'rich-text' ), 'tag' => array( 'type' => 'string', @@ -5794,7 +5818,8 @@ 'supports' => array( 'align' => true, 'html' => false, - 'reusable' => false + 'reusable' => false, + 'renaming' => false ), 'editorStyle' => 'wp-block-template-part-editor' ), @@ -5900,10 +5925,9 @@ 'textdomain' => 'default', 'attributes' => array( 'content' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'pre', - 'default' => '', '__unstablePreserveWhiteSpace' => true, '__experimentalRole' => 'content' ), @@ -5931,8 +5955,7 @@ '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalDefaultControls' => array( - 'fontSize' => true, - 'fontAppearance' => true + 'fontSize' => true ) ), 'spacing' => array( @@ -5972,8 +5995,8 @@ 'attribute' => 'autoplay' ), 'caption' => array( - 'type' => 'string', - 'source' => 'html', + 'type' => 'rich-text', + 'source' => 'rich-text', 'selector' => 'figcaption', '__experimentalRole' => 'content' ), @@ -6053,6 +6076,7 @@ 'style' => 'wp-block-video' ), 'widget-group' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 3, 'name' => 'core/widget-group', 'category' => 'widgets', From 619619c6983cdb7d9c4295688b47277c6ad3da42 Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Wed, 24 Jan 2024 10:57:27 +0100 Subject: [PATCH 10/20] Fix qunit tests --- Gruntfile.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index 06a37e67e0991..43e7bd02efd09 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1566,7 +1566,9 @@ module.exports = function(grunt) { */ grunt.registerTask( 'verify:source-maps', function() { const ignoredFiles = [ - 'build/wp-includes/js/dist/components.js' + 'build/wp-includes/js/dist/components.js', + 'build/wp-includes/js/dist/block-editor.js', + 'build/wp-includes/js/dist/block-editor.min.js' ]; const files = buildFiles.reduce( ( acc, path ) => { // Skip excluded paths and any path that isn't a file. From 9fd979c4d81d74f02ade1f25e99e380375b21288 Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Thu, 25 Jan 2024 14:33:15 +0100 Subject: [PATCH 11/20] Update to Gutenberg 16.7 RC2 packages --- package-lock.json | 3210 +++++++++-------- package.json | 143 +- src/wp-includes/blocks/block.php | 34 +- src/wp-includes/blocks/block/block.json | 3 + src/wp-includes/blocks/blocks-json.php | 43 +- src/wp-includes/blocks/button/block.json | 1 + src/wp-includes/blocks/cover/block.json | 3 + src/wp-includes/blocks/file.php | 68 +- src/wp-includes/blocks/file/block.json | 1 - src/wp-includes/blocks/footnotes.php | 31 +- src/wp-includes/blocks/gallery.php | 3 - src/wp-includes/blocks/group/block.json | 1 + src/wp-includes/blocks/heading/block.json | 1 + src/wp-includes/blocks/image.php | 65 +- src/wp-includes/blocks/image/block.json | 10 +- src/wp-includes/blocks/navigation-link.php | 94 +- src/wp-includes/blocks/navigation.php | 805 ++++- src/wp-includes/blocks/navigation/block.json | 1 - src/wp-includes/blocks/paragraph/block.json | 3 +- .../blocks/post-navigation-link.php | 20 +- .../blocks/post-navigation-link/block.json | 8 + src/wp-includes/blocks/post-terms.php | 17 +- src/wp-includes/blocks/pullquote/block.json | 4 + src/wp-includes/blocks/query.php | 104 +- src/wp-includes/blocks/query/block.json | 3 +- src/wp-includes/blocks/search.php | 54 +- src/wp-includes/blocks/search/block.json | 1 - src/wp-includes/blocks/template-part.php | 4 +- 28 files changed, 2742 insertions(+), 1993 deletions(-) diff --git a/package-lock.json b/package-lock.json index 332c7b662b0dc..8d53eab8e8554 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,71 +11,72 @@ "dependencies": { "@emotion/is-prop-valid": "0.8.8", "@emotion/memoize": "0.7.4", - "@wordpress/a11y": "3.49.0", - "@wordpress/annotations": "2.49.0", - "@wordpress/api-fetch": "6.46.0", - "@wordpress/autop": "3.49.0", - "@wordpress/blob": "3.49.0", - "@wordpress/block-directory": "4.26.0", - "@wordpress/block-editor": "12.17.0", - "@wordpress/block-library": "8.26.0", - "@wordpress/block-serialization-default-parser": "4.49.0", - "@wordpress/blocks": "12.26.0", - "@wordpress/commands": "0.20.0", - "@wordpress/components": "25.15.0", - "@wordpress/compose": "6.26.0", - "@wordpress/core-commands": "0.18.0", - "@wordpress/core-data": "6.26.0", - "@wordpress/customize-widgets": "4.26.0", - "@wordpress/data": "9.19.0", - "@wordpress/data-controls": "3.18.0", - "@wordpress/dataviews": "0.3.0", - "@wordpress/date": "4.49.0", - "@wordpress/deprecated": "3.49.0", - "@wordpress/dom": "3.49.0", - "@wordpress/dom-ready": "3.49.0", - "@wordpress/edit-post": "7.26.0", - "@wordpress/edit-site": "5.26.0", - "@wordpress/edit-widgets": "5.26.0", - "@wordpress/editor": "13.26.0", - "@wordpress/element": "5.26.0", - "@wordpress/escape-html": "2.49.0", - "@wordpress/format-library": "4.26.0", - "@wordpress/hooks": "3.49.0", - "@wordpress/html-entities": "3.49.0", - "@wordpress/i18n": "4.49.0", - "@wordpress/icons": "9.40.0", - "@wordpress/interactivity": "3.2.0", - "@wordpress/interface": "5.26.0", - "@wordpress/is-shallow-equal": "4.49.0", - "@wordpress/keyboard-shortcuts": "4.26.0", - "@wordpress/keycodes": "3.49.0", - "@wordpress/list-reusable-blocks": "4.26.0", - "@wordpress/media-utils": "4.40.0", - "@wordpress/notices": "4.17.0", - "@wordpress/nux": "8.11.0", - "@wordpress/patterns": "1.10.0", - "@wordpress/plugins": "6.17.0", - "@wordpress/preferences": "3.26.0", - "@wordpress/preferences-persistence": "1.41.0", - "@wordpress/primitives": "3.47.0", - "@wordpress/priority-queue": "2.49.0", - "@wordpress/private-apis": "0.31.0", - "@wordpress/redux-routine": "4.49.0", - "@wordpress/reusable-blocks": "4.26.0", - "@wordpress/rich-text": "6.26.0", - "@wordpress/router": "0.18.0", - "@wordpress/server-side-render": "4.26.0", - "@wordpress/shortcode": "3.49.0", - "@wordpress/style-engine": "1.32.0", - "@wordpress/sync": "0.11.0", - "@wordpress/token-list": "2.49.0", - "@wordpress/undo-manager": "0.9.0", - "@wordpress/url": "3.50.0", - "@wordpress/viewport": "5.26.0", - "@wordpress/warning": "2.49.0", - "@wordpress/widgets": "3.26.0", - "@wordpress/wordcount": "3.49.0", + "@wordpress/a11y": "3.50.0", + "@wordpress/annotations": "2.50.0", + "@wordpress/api-fetch": "6.47.0", + "@wordpress/autop": "3.50.0", + "@wordpress/blob": "3.50.0", + "@wordpress/block-directory": "4.27.1", + "@wordpress/block-editor": "12.18.1", + "@wordpress/block-library": "8.27.1", + "@wordpress/block-serialization-default-parser": "4.50.0", + "@wordpress/blocks": "12.27.1", + "@wordpress/commands": "0.21.0", + "@wordpress/components": "25.16.0", + "@wordpress/compose": "6.27.0", + "@wordpress/core-commands": "0.19.1", + "@wordpress/core-data": "6.27.1", + "@wordpress/customize-widgets": "4.27.1", + "@wordpress/data": "9.20.0", + "@wordpress/data-controls": "3.19.0", + "@wordpress/dataviews": "0.4.0", + "@wordpress/date": "4.50.0", + "@wordpress/deprecated": "3.50.0", + "@wordpress/dom": "3.50.0", + "@wordpress/dom-ready": "3.50.0", + "@wordpress/edit-post": "7.27.1", + "@wordpress/edit-site": "5.27.1", + "@wordpress/edit-widgets": "5.27.1", + "@wordpress/editor": "13.27.1", + "@wordpress/element": "5.27.0", + "@wordpress/escape-html": "2.50.0", + "@wordpress/format-library": "4.27.1", + "@wordpress/hooks": "3.50.0", + "@wordpress/html-entities": "3.50.0", + "@wordpress/i18n": "4.50.0", + "@wordpress/icons": "9.41.0", + "@wordpress/interactivity": "4.0.0", + "@wordpress/interactivity-router": "1.0.0", + "@wordpress/interface": "5.27.0", + "@wordpress/is-shallow-equal": "4.50.0", + "@wordpress/keyboard-shortcuts": "4.27.0", + "@wordpress/keycodes": "3.50.0", + "@wordpress/list-reusable-blocks": "4.27.0", + "@wordpress/media-utils": "4.41.0", + "@wordpress/notices": "4.18.0", + "@wordpress/nux": "8.12.0", + "@wordpress/patterns": "1.11.1", + "@wordpress/plugins": "6.18.0", + "@wordpress/preferences": "3.27.0", + "@wordpress/preferences-persistence": "1.42.0", + "@wordpress/primitives": "3.48.0", + "@wordpress/priority-queue": "2.50.0", + "@wordpress/private-apis": "0.32.0", + "@wordpress/redux-routine": "4.50.0", + "@wordpress/reusable-blocks": "4.27.1", + "@wordpress/rich-text": "6.27.0", + "@wordpress/router": "0.19.0", + "@wordpress/server-side-render": "4.27.1", + "@wordpress/shortcode": "3.50.0", + "@wordpress/style-engine": "1.33.1", + "@wordpress/sync": "0.12.0", + "@wordpress/token-list": "2.50.0", + "@wordpress/undo-manager": "0.10.0", + "@wordpress/url": "3.51.0", + "@wordpress/viewport": "5.27.0", + "@wordpress/warning": "2.50.0", + "@wordpress/widgets": "3.27.1", + "@wordpress/wordcount": "3.50.0", "backbone": "1.5.0", "clipboard": "2.0.11", "core-js-url-browser": "3.6.4", @@ -110,12 +111,12 @@ "@lodder/grunt-postcss": "^3.1.1", "@playwright/test": "1.32.0", "@pmmmwh/react-refresh-webpack-plugin": "0.5.5", - "@wordpress/babel-preset-default": "7.33.0", - "@wordpress/dependency-extraction-webpack-plugin": "5.0.0", - "@wordpress/e2e-test-utils": "10.20.0", - "@wordpress/e2e-test-utils-playwright": "0.17.0", - "@wordpress/prettier-config": "3.6.0", - "@wordpress/scripts": "27.0.0", + "@wordpress/babel-preset-default": "7.34.0", + "@wordpress/dependency-extraction-webpack-plugin": "5.1.0", + "@wordpress/e2e-test-utils": "10.21.0", + "@wordpress/e2e-test-utils-playwright": "0.18.0", + "@wordpress/prettier-config": "3.7.0", + "@wordpress/scripts": "27.1.0", "autoprefixer": "10.4.16", "chalk": "5.3.0", "check-node-version": "4.2.1", @@ -5645,16 +5646,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz", - "integrity": "sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz", + "integrity": "sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/type-utils": "6.19.0", - "@typescript-eslint/utils": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/type-utils": "6.19.1", + "@typescript-eslint/utils": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -5680,15 +5681,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.0.tgz", - "integrity": "sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.1.tgz", + "integrity": "sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/typescript-estree": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", "debug": "^4.3.4" }, "engines": { @@ -5708,13 +5709,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz", - "integrity": "sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz", + "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0" + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -5725,13 +5726,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.0.tgz", - "integrity": "sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz", + "integrity": "sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.19.0", - "@typescript-eslint/utils": "6.19.0", + "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/utils": "6.19.1", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -5752,9 +5753,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.0.tgz", - "integrity": "sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", + "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -5765,13 +5766,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz", - "integrity": "sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", + "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5817,17 +5818,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.0.tgz", - "integrity": "sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz", + "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/typescript-estree": "6.19.0", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/typescript-estree": "6.19.1", "semver": "^7.5.4" }, "engines": { @@ -5842,12 +5843,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz", - "integrity": "sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz", + "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/types": "6.19.1", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -6077,28 +6078,28 @@ } }, "node_modules/@wordpress/a11y": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.49.0.tgz", - "integrity": "sha512-R3mv4jiPxYRem3EEQjkI1EZylHruG5NWCqkDKEkBumcrqLfY4ntP4QeSFe36KUaZGqRGSSeaP9hK/0WYehPNsA==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.50.0.tgz", + "integrity": "sha512-eQiPGnxqiL1LgnHztFG0RGSFZ5phwR8B8Fr4lbJsFalsc9R/tOcjewvf2KN0yi2UlRA5ssAeiTP+tYmeAqtOHQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/dom-ready": "^3.49.0", - "@wordpress/i18n": "^4.49.0" + "@wordpress/dom-ready": "^3.50.0", + "@wordpress/i18n": "^4.50.0" }, "engines": { "node": ">=12" } }, "node_modules/@wordpress/annotations": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/annotations/-/annotations-2.49.0.tgz", - "integrity": "sha512-O7ZuidTYc55Rsg8GHMC3AMATBCo7jSzegtYoMFe+STK3SxNWVUZvN+kWTfeeR26kXIF3NKoODpEfNh1GqZ/urA==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/annotations/-/annotations-2.50.0.tgz", + "integrity": "sha512-E9cu8xuGvIRw3LVtuS+XSzAXVBF41sgvxpVJAz/5FEibzxUHPy8flu5tTKf+mi4WGZxC4AJGNP1bhZRj7cynZQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/data": "^9.19.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/rich-text": "^6.26.0", + "@wordpress/data": "^9.20.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/rich-text": "^6.27.0", "rememo": "^4.0.2", "uuid": "^9.0.1" }, @@ -6110,22 +6111,22 @@ } }, "node_modules/@wordpress/api-fetch": { - "version": "6.46.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.46.0.tgz", - "integrity": "sha512-SimHPw57N8LyZpQB6dK5xq1Kn1WtqP/K27GjGwvxvkb+8xbVv0TI67AF9adsN4sZbOHIZJQwqvCTSGKhNttAvQ==", + "version": "6.47.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.47.0.tgz", + "integrity": "sha512-NA/jWDXoVtJmiVBYhlxts2UrgKJpJM+zTGzLCfRQCZUzpJYm3LonB8x+uCQ78nEyxCY397Esod3jnbquYjOr0Q==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/url": "^3.50.0" + "@wordpress/i18n": "^4.50.0", + "@wordpress/url": "^3.51.0" }, "engines": { "node": ">=12" } }, "node_modules/@wordpress/autop": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.49.0.tgz", - "integrity": "sha512-bc0jUu8yOCioNFFgrO++XhdGU6QpL9HF9LeWxzayqp5Br4z9z7Zslp+KH1Gy6H2RNowEr8Fq4hZ7JwQ009EDmw==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.50.0.tgz", + "integrity": "sha512-4E0vq2MvSOVDKXs4OulIbTdKU6S5O9QjT4qc63rAd0uiKGBYV12ViPzmwbJ6k38zOO0PKdcwlVCj55Gq4aoPDw==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -6134,9 +6135,9 @@ } }, "node_modules/@wordpress/babel-plugin-import-jsx-pragma": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-4.32.0.tgz", - "integrity": "sha512-ie6p5VpUxTNMPQrHdCYEPddTzmDeFTQjFi3qq17set9WbRAMaOZ8jqQhSxms0NJi8Xa6wZM9TR2ZABAlg+FTeA==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-4.33.0.tgz", + "integrity": "sha512-CjzruFKWgzU/mO/nnQJ2l9UlzZQpqS60UC6l2vNdJ9oD2nKHR5Oou6kNic3QhWDVJrBf2JUiJJ0TC280bykXmA==", "dev": true, "engines": { "node": ">=14" @@ -6146,9 +6147,9 @@ } }, "node_modules/@wordpress/babel-preset-default": { - "version": "7.33.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-7.33.0.tgz", - "integrity": "sha512-/OonEa67xJdIn0ADWEd7AJtLhIGlYALKyc17RxTmI2Ojs0zLIQNbgAv1D/cuVguo0UKK9zsMZ9MBkhSKLF9A9Q==", + "version": "7.34.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-7.34.0.tgz", + "integrity": "sha512-yjFOllyTktFHtcIEgU3ghXBn8lItzr5mPLf0xdSpe0cHceFYL1hT1oprhgRL+olZweaO96Yfm0qUCCKQfJBWsA==", "dev": true, "dependencies": { "@babel/core": "^7.16.0", @@ -6157,9 +6158,9 @@ "@babel/preset-env": "^7.16.0", "@babel/preset-typescript": "^7.16.0", "@babel/runtime": "^7.16.0", - "@wordpress/babel-plugin-import-jsx-pragma": "^4.32.0", - "@wordpress/browserslist-config": "^5.32.0", - "@wordpress/warning": "^2.49.0", + "@wordpress/babel-plugin-import-jsx-pragma": "^4.33.0", + "@wordpress/browserslist-config": "^5.33.0", + "@wordpress/warning": "^2.50.0", "browserslist": "^4.21.10", "core-js": "^3.31.0", "react": "^18.2.0" @@ -6169,15 +6170,15 @@ } }, "node_modules/@wordpress/base-styles": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.40.0.tgz", - "integrity": "sha512-A+HiyES4YjfbFhJAGrhCLB3QWomgWZR9wkgG7K9l6DD70/9Vd7t+go7jI1HJ1c9qGfBV0rmdQf/qNn89Aai1cg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.41.0.tgz", + "integrity": "sha512-MjPAZeAqvyskDXDp2wGZ0DjtYOQLOydI1WqVIZS4wnIdhsQWQD//VMeXgLrcmCzNyQg+iKTx3o+BzmXVTOD0+w==", "dev": true }, "node_modules/@wordpress/blob": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.49.0.tgz", - "integrity": "sha512-HYPMuXJx35uYlQC6JF9XXvPsOht2X8qJfXzGtxWb51OIC6DSRqh3f6s12fgPaNh9uElcSjQ4+Su286upu7S4vw==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.50.0.tgz", + "integrity": "sha512-QvBhsW9WPdsOJhJ0BxzZ83i+cH/gAdjJ1iHY4Rkb02qbZEz4jhdvucGQf2oVnWwvAsFiFPKWk7CwAM5XjoahCA==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -6186,30 +6187,30 @@ } }, "node_modules/@wordpress/block-directory": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-directory/-/block-directory-4.26.0.tgz", - "integrity": "sha512-gSUA1YHIirtgJzBGi6hTEJpvCTth9JAobLEvjjfUVSka9It06TaxVHycu25Xvd1/fQp2ldPM9Txu/7crw4Bw0Q==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/block-directory/-/block-directory-4.27.1.tgz", + "integrity": "sha512-O1qm9AumFZbEOI41HoUDyAaL+cOwjtzW4/8JADbNVmnKXj9bQE8CKbTvbsjin7BUEvM+IdYWzEXkY3KkgxBmTg==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/edit-post": "^7.26.0", - "@wordpress/editor": "^13.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/plugins": "^6.17.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/url": "^3.50.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/edit-post": "^7.27.1", + "@wordpress/editor": "^13.27.1", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/plugins": "^6.18.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/url": "^3.51.0", "change-case": "^4.1.2" }, "engines": { @@ -6221,43 +6222,43 @@ } }, "node_modules/@wordpress/block-editor": { - "version": "12.17.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-12.17.0.tgz", - "integrity": "sha512-np1ICMmScrSuDOQRYQqlDY35kOoQEHuckSCjJPQpjprutXaqG+Jk+RAeeHVgQ8Ze5B+QgkFLjNvYwRh11kYdqg==", + "version": "12.18.1", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-12.18.1.tgz", + "integrity": "sha512-kZPqOO0ogS3y3HcStGRowLKJk66cv9zzQtLcx7YNokYrceqnOWEYddhv+OWRz7h/qmkEBHgZfUCEgCQm2Dulnw==", "dependencies": { "@babel/runtime": "^7.16.0", "@emotion/react": "^11.7.1", "@emotion/styled": "^11.6.0", "@react-spring/web": "^9.4.5", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/commands": "^0.20.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/date": "^4.49.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/escape-html": "^2.49.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/style-engine": "^1.32.0", - "@wordpress/token-list": "^2.49.0", - "@wordpress/url": "^3.50.0", - "@wordpress/warning": "^2.49.0", - "@wordpress/wordcount": "^3.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/blocks": "^12.27.1", + "@wordpress/commands": "^0.21.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/date": "^4.50.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/escape-html": "^2.50.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/style-engine": "^1.33.1", + "@wordpress/token-list": "^2.50.0", + "@wordpress/url": "^3.51.0", + "@wordpress/warning": "^2.50.0", + "@wordpress/wordcount": "^3.50.0", "change-case": "^4.1.2", "classnames": "^2.3.1", "colord": "^2.7.0", @@ -6283,41 +6284,43 @@ } }, "node_modules/@wordpress/block-library": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-8.26.0.tgz", - "integrity": "sha512-y2Ysqpj/y0KAXU5nFWXrXbrVKLFzQn+azmksin1ot/BF8tlf6mFs/QWW4HyoRZcCd5TEmB/3G3C2CeoDptrKUQ==", + "version": "8.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-8.27.1.tgz", + "integrity": "sha512-dadyMsUM4A1b4FM3qlL9LwToJHYmVCCiL8Ir471C1N8v8LoZJjaGr5GvJTw61rSF6dy9951IvLl4+HxlGQPUew==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/autop": "^3.49.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/date": "^4.49.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/escape-html": "^2.49.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/interactivity": "^3.2.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/primitives": "^3.47.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/reusable-blocks": "^4.26.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/server-side-render": "^4.26.0", - "@wordpress/url": "^3.50.0", - "@wordpress/viewport": "^5.26.0", - "@wordpress/wordcount": "^3.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/autop": "^3.50.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/date": "^4.50.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/escape-html": "^2.50.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/interactivity": "^4.0.0", + "@wordpress/interactivity-router": "^1.0.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/patterns": "^1.11.1", + "@wordpress/primitives": "^3.48.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/reusable-blocks": "^4.27.1", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/server-side-render": "^4.27.1", + "@wordpress/url": "^3.51.0", + "@wordpress/viewport": "^5.27.0", + "@wordpress/wordcount": "^3.50.0", "change-case": "^4.1.2", "classnames": "^2.3.1", "colord": "^2.7.0", @@ -6337,9 +6340,9 @@ } }, "node_modules/@wordpress/block-serialization-default-parser": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.49.0.tgz", - "integrity": "sha512-9pQ6yxOhiFv+47iZWF3Te6N+PK+IFlEWgG3IpSIj3mWV6OI7FoM/+C2ePeR06OxE2cQHRkL9pAsECtK9eDJmCQ==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.50.0.tgz", + "integrity": "sha512-ihf2vr+w2zHBOvYTPQZXDiR2IMvso8yJJtzKIHA2ZEgVQ+VVLb4X86n34hfWXtPA3i2KDW+t1WCtq56aNq3Zag==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -6348,26 +6351,26 @@ } }, "node_modules/@wordpress/blocks": { - "version": "12.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-12.26.0.tgz", - "integrity": "sha512-iIWUJmxGPXymf+X1rlHT0QxHV8+NzLfe96S3oKpX2UyFc/5H+eYWwyhA7u2S3kam/ss1DwAwdS7rRIMUHPU5PQ==", + "version": "12.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-12.27.1.tgz", + "integrity": "sha512-9uZtuTG6+fiFV2bLn8b1gzv4BgMpBu4SDQGnvzc5f9U5GL5oYns3PP8vXDOwM2cK1DEmqPsohQWhRnz8QYZDtw==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/autop": "^3.49.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/block-serialization-default-parser": "^4.49.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/shortcode": "^3.49.0", + "@wordpress/autop": "^3.50.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/block-serialization-default-parser": "^4.50.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/shortcode": "^3.50.0", "change-case": "^4.1.2", "colord": "^2.7.0", "fast-deep-equal": "^3.1.3", @@ -6389,27 +6392,27 @@ } }, "node_modules/@wordpress/browserslist-config": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-5.32.0.tgz", - "integrity": "sha512-LrL4Zg/abXYfVwwbx1caugz4J1GUL+6WNqVF1MZQVDm6CHdlpTEQOvvr/KEi9mN1UY2YoTlxZtUxzvNRTo2Fsg==", + "version": "5.33.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-5.33.0.tgz", + "integrity": "sha512-dv1ZlpqGk8gaSBJPP/Z/1uOuxjtP0EBsHVKInLRu6FWLTJkK8rnCeC3xJT3/2TtJ0rasLC79RoytfhXTOODVwg==", "dev": true, "engines": { "node": ">=14" } }, "node_modules/@wordpress/commands": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@wordpress/commands/-/commands-0.20.0.tgz", - "integrity": "sha512-aQQCr3ViLwPEo/SEeW7FowA4zCfvypkO7eqTuTlcd+1E3ndRzlWA91rneo+l9GBUQ/elZzhc5Z0i2cMxHTMDRQ==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@wordpress/commands/-/commands-0.21.0.tgz", + "integrity": "sha512-MzMUGCT9cQXto1jrA5lHAtnieTyAhcuNIxfyxlcE+316KNQfbyD8bc7KOzSV2sxXD/rfHuCxvHjfomFyyP+4kA==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/components": "^25.15.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/private-apis": "^0.31.0", + "@wordpress/components": "^25.16.0", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/private-apis": "^0.32.0", "classnames": "^2.3.1", "cmdk": "^0.2.0", "rememo": "^4.0.2" @@ -6423,9 +6426,9 @@ } }, "node_modules/@wordpress/components": { - "version": "25.15.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-25.15.0.tgz", - "integrity": "sha512-DMTEoyCugnw05+Srb2FaJ3HTXwAJ+NMlgggwoyW2l2J1LpsmDIALKiWfvd3fyXxks3y4kaiv+adQfhNm50U8mA==", + "version": "25.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-25.16.0.tgz", + "integrity": "sha512-voQuMsO5JbH+JW33TnWurwwvpSb8IQ4XU5wyVMubX4TUwadt+/2ToNJbZIDXoaJPei7vbM81Ft+pH+zGlN8CyA==", "dependencies": { "@ariakit/react": "^0.3.12", "@babel/runtime": "^7.16.0", @@ -6439,23 +6442,23 @@ "@types/gradient-parser": "0.1.3", "@types/highlight-words-core": "1.2.1", "@use-gesture/react": "^10.2.24", - "@wordpress/a11y": "^3.49.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/date": "^4.49.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/escape-html": "^2.49.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/primitives": "^3.47.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/warning": "^2.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/date": "^4.50.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/escape-html": "^2.50.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/primitives": "^3.48.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/warning": "^2.50.0", "change-case": "^4.1.2", "classnames": "^2.3.1", "colord": "^2.7.0", @@ -6487,21 +6490,21 @@ } }, "node_modules/@wordpress/compose": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-6.26.0.tgz", - "integrity": "sha512-ipHKcXY7//Qkto3Gtw8knqhUbjTtKMjTIQENXcVT+SAp5YLpyaJ6OW9R/N59QmXaeF+Lw04LuUaVX3k7yaRFtA==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-6.27.0.tgz", + "integrity": "sha512-jbEQQ2znRyJTwUNR4m5BKaDyIsuK9TMZx0SKqP+FTfGqT3y7scOnQrHpK0kZdPji++/1cBbn3gSPBLCEmtmHRw==", "dependencies": { "@babel/runtime": "^7.16.0", "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/priority-queue": "^2.49.0", - "@wordpress/undo-manager": "^0.9.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/priority-queue": "^2.50.0", + "@wordpress/undo-manager": "^0.10.0", "change-case": "^4.1.2", - "clipboard": "^2.0.8", + "clipboard": "^2.0.11", "mousetrap": "^1.6.5", "use-memo-one": "^1.1.1" }, @@ -6513,21 +6516,21 @@ } }, "node_modules/@wordpress/core-commands": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/core-commands/-/core-commands-0.18.0.tgz", - "integrity": "sha512-fb4YrD3JBNs1BgMmFZdPyLzegjd06zEck6mZreDz7NCXUjJwuqVp6wb0BcirwSC0u22iGkWQTuxP3mOyaLB1kw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@wordpress/core-commands/-/core-commands-0.19.1.tgz", + "integrity": "sha512-gmgiVtb17PEZgyH+UikE0B0Q6n22fXdscnu1lb/fBIKMgK10Jke4edin5qCbBINyqxykthkKvZO6VYpNjgcSHA==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/commands": "^0.20.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/router": "^0.18.0", - "@wordpress/url": "^3.50.0" + "@wordpress/block-editor": "^12.18.1", + "@wordpress/commands": "^0.21.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/router": "^0.19.0", + "@wordpress/url": "^3.51.0" }, "engines": { "node": ">=12" @@ -6538,26 +6541,26 @@ } }, "node_modules/@wordpress/core-data": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-6.26.0.tgz", - "integrity": "sha512-RI3uf3gHnjNyHgMm72IQlk0k83FJAYmLOGUJM01NuMvsVIxDxp03rfvy3lCfNy1+BknknOYFhUaX88NKrizgNA==", + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-6.27.1.tgz", + "integrity": "sha512-Nbm0xkgkkyk67f2GtnlS5udxYqBQcLGoDIhWjNY2m+uguM/Fr4cv6QGIyb1tIcwEBIrZcAaAsS/eA1yro5ygHw==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/sync": "^0.11.0", - "@wordpress/undo-manager": "^0.9.0", - "@wordpress/url": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/sync": "^0.12.0", + "@wordpress/undo-manager": "^0.10.0", + "@wordpress/url": "^3.51.0", "change-case": "^4.1.2", "equivalent-key-map": "^0.2.2", "fast-deep-equal": "^3.1.3", @@ -6574,31 +6577,31 @@ } }, "node_modules/@wordpress/customize-widgets": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/customize-widgets/-/customize-widgets-4.26.0.tgz", - "integrity": "sha512-xxJGoF3PkzqdrdUU/xU6ZDre0BDjPWJSBqLW6lwuDIvcVVxxhTnEAun3I1p6lXaOAOTlVixU6eSy2UY1B3LYLQ==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/customize-widgets/-/customize-widgets-4.27.1.tgz", + "integrity": "sha512-iRKhFIT98NI2p7Ga25YiMI9A0FOm0vWyq2vwd3/Qahm5wOlBmOJHRxAOhnY7MRWhqZQE8a9Mb63o/7Kupct0tw==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/block-library": "^8.26.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/interface": "^5.26.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/media-utils": "^4.40.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/widgets": "^3.26.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/block-library": "^8.27.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/interface": "^5.27.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/media-utils": "^4.41.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/widgets": "^3.27.1", "classnames": "^2.3.1", "fast-deep-equal": "^3.1.3" }, @@ -6611,18 +6614,18 @@ } }, "node_modules/@wordpress/data": { - "version": "9.19.0", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-9.19.0.tgz", - "integrity": "sha512-j+kzP638QQ2t6/4KsIzLTPem+X/oZUkYGGT7boo51Ychs07uLfEdzubwSJVChyBq14zmiAulK7tLWQI52i7jOg==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-9.20.0.tgz", + "integrity": "sha512-3cm2te6NUj/X1zzmRO+WhueCanjocniX6sJFVzkg5mGXme6wFI8iSOnGPKlMkGcZGd0fVei1ydBKaIUMjrPBTQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/priority-queue": "^2.49.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/redux-routine": "^4.49.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/priority-queue": "^2.50.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/redux-routine": "^4.50.0", "deepmerge": "^4.3.0", "equivalent-key-map": "^0.2.2", "is-plain-object": "^5.0.0", @@ -6639,14 +6642,14 @@ } }, "node_modules/@wordpress/data-controls": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-3.18.0.tgz", - "integrity": "sha512-Xmj7KASecmVTp+Jcwi74blF0XcBz8m3hibTVNUcmqudvCPxeBDRv1Dv8jftlQDabQp7TS4Vz+0JFvBln8BV4PA==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-3.19.0.tgz", + "integrity": "sha512-ceUK8kB8r8s8XFYlYWGVLuaoDJx5IAXND6q7B6MX1gKndqnSNi1766Q9iAEwOT9eVMai0lDLNq7mdK2ktVh4bw==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0" + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0" }, "engines": { "node": ">=12" @@ -6656,20 +6659,20 @@ } }, "node_modules/@wordpress/dataviews": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@wordpress/dataviews/-/dataviews-0.3.0.tgz", - "integrity": "sha512-54s6VIgMKIHiAb8+BClIB1mzLBlZ5l3srgZfdneajjnc34yMzrV8eu2TmvBseBT129oLRnCmV5lSD1cfnI6WFw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/dataviews/-/dataviews-0.4.0.tgz", + "integrity": "sha512-fVw+VBntjUMBQKhmJnlajw1jyS572D2VNGhD+TXJKk+fshPwpb8oM4Y71g+2V/f9X/DnIn0VmVKPFt3m/CJxVw==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/primitives": "^3.47.0", - "@wordpress/private-apis": "^0.31.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/primitives": "^3.48.0", + "@wordpress/private-apis": "^0.32.0", "classnames": "^2.3.1", "remove-accents": "^0.5.0" }, @@ -6681,12 +6684,12 @@ } }, "node_modules/@wordpress/date": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.49.0.tgz", - "integrity": "sha512-mU5V8DlnHKa6bxn+90tEmqXdpsOrr5cX2+t6mf8Wp8avhsrxiC7+bVahneFy9xOAlDumhuFTHBJTFx70byIcbQ==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.50.0.tgz", + "integrity": "sha512-FhfaG6YRXWmni66RjwhCB7rQNlLJ05+qTa/jXrj2UNWDNv/sfZ6Ky+b/rKrrUnLaIs9pGiW1195cSxsAS4EY3w==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.49.0", + "@wordpress/deprecated": "^3.50.0", "moment": "^2.29.4", "moment-timezone": "^0.5.40" }, @@ -6695,9 +6698,9 @@ } }, "node_modules/@wordpress/dependency-extraction-webpack-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-5.0.0.tgz", - "integrity": "sha512-b3j4yCB5dR04rIbZ73iHN5hMXL4kMUUoApY36Zs8AAREHpgCDTPp5vNqc67zg2bcnpDEhMUZ28DISwrY4z7weg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-5.1.0.tgz", + "integrity": "sha512-W2W+9JNAaGirAtGDSf83pjEKb63DLhgpJGgvMOpEPoRPtucgO6CCm3uMoNkJTpKoxJQ2tSZEymAhF/YdLm+ScQ==", "dev": true, "dependencies": { "json2php": "^0.0.7" @@ -6710,33 +6713,33 @@ } }, "node_modules/@wordpress/deprecated": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.49.0.tgz", - "integrity": "sha512-NxBJl9IvcEK5U3Z4UB8NpBdAxLlz5L0JEcq8+95DroYYxWmcH5sYtYPgXg2YZ24DP5nSnC12ZqGJ4QPzkMNH/Q==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.50.0.tgz", + "integrity": "sha512-DL01l0Wlo3df9OcSGHP11Ot/nq0HytbdmD+iPkiCCRI6Xctepbs/DzRR2CO3qLrJkWn6RReFwZWZZjzI7lZUqg==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.49.0" + "@wordpress/hooks": "^3.50.0" }, "engines": { "node": ">=12" } }, "node_modules/@wordpress/dom": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.49.0.tgz", - "integrity": "sha512-Amx3xaR+TrQiO0lFlX/TCkHkoKlLjeDgzpGrc9PQ3X3rKyf/yrCFSlOOqAby6m99jdoAD3SF0x+T6u4wR9iaQg==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.50.0.tgz", + "integrity": "sha512-rMnV1ysGOHbKnmjLQYwGkT1co1iEkC3YsKrEObP8mklw1R7rbCy7fc2brIz7kqcHU1DRyg/+7wOCMkg8a/EV/Q==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.49.0" + "@wordpress/deprecated": "^3.50.0" }, "engines": { "node": ">=12" } }, "node_modules/@wordpress/dom-ready": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.49.0.tgz", - "integrity": "sha512-2ZkHU/EzsR5gzTkmnA3QFFxKqXBs2YqWan6Q6eylM8SUG/Iz6r1aUkmV5OiOHJ9Z/TPJQUpPb0L4u+Ur39m7cQ==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.50.0.tgz", + "integrity": "sha512-97tJpat1emXnwfGlJMiG6p37CpHJXDLmM/SIbsGJ0Oj8P4/TXbTuE9DNT1H8B1wKe5zD7kICjp48y91ugmgSrQ==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -6745,15 +6748,15 @@ } }, "node_modules/@wordpress/e2e-test-utils": { - "version": "10.20.0", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-10.20.0.tgz", - "integrity": "sha512-WpXu8h1KpYxwbQ6tV9Ar7TNJPEZAxYhbP5is9bUtuwI8VhRPPWagcljeofsdqSxjLV80E2s8/b/Ll71/t8fZfA==", + "version": "10.21.0", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-10.21.0.tgz", + "integrity": "sha512-Oh62GkqAKBIyD0IO3/Oa0l42yL/jbpTRDyh8H+t6gZbHWYTDvEGEr/LOqI9bk5Lwk7Jt5jpN6136FDwyMzHSXw==", "dev": true, "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/url": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/url": "^3.51.0", "change-case": "^4.1.2", "form-data": "^4.0.0", "node-fetch": "^2.6.0" @@ -6767,14 +6770,14 @@ } }, "node_modules/@wordpress/e2e-test-utils-playwright": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-0.17.0.tgz", - "integrity": "sha512-WuyorK1PL4r0LtxdhwF8u31s/O7+reuU906dnM3pu6SKSPsyfhXi8O1hgQO4/VASooHygUbsn7PW0GaDdCamOA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-0.18.0.tgz", + "integrity": "sha512-Z8uH1dUzy/STQjOU6eb9nquVK4RC1rUx0gXY/GN1IVNDJvGN/yJxT/gNKmfiL7KpmHvNp2Q5M4bnUT9uiNcM+Q==", "dev": true, "dependencies": { - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/url": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/url": "^3.51.0", "change-case": "^4.1.2", "form-data": "^4.0.0", "get-port": "^5.1.1", @@ -6830,41 +6833,41 @@ } }, "node_modules/@wordpress/edit-post": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-7.26.0.tgz", - "integrity": "sha512-/ZY5QBvsIOru1xJn/5jJDXchr/wIinchS0ERcJLgoXAT/i0+z1RjELkWEumsI3tAaBzV5om0AtXB2jRPMGhxAg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-7.27.1.tgz", + "integrity": "sha512-cXwDCU23AbkQhOYueAYN/g5USSX4BBvB2MueAJUc5iusL9boJzowAkkxRoGBBt5KZiSfseTGsHepmtEGG7X0Fg==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/block-library": "^8.26.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/commands": "^0.20.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-commands": "^0.18.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/editor": "^13.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/interface": "^5.26.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/media-utils": "^4.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/plugins": "^6.17.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/url": "^3.50.0", - "@wordpress/viewport": "^5.26.0", - "@wordpress/warning": "^2.49.0", - "@wordpress/widgets": "^3.26.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/block-library": "^8.27.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/commands": "^0.21.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-commands": "^0.19.1", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/editor": "^13.27.1", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/interface": "^5.27.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/media-utils": "^4.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/plugins": "^6.18.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/url": "^3.51.0", + "@wordpress/viewport": "^5.27.0", + "@wordpress/warning": "^2.50.0", + "@wordpress/widgets": "^3.27.1", "classnames": "^2.3.1", "memize": "^2.1.0", "rememo": "^4.0.2" @@ -6878,51 +6881,51 @@ } }, "node_modules/@wordpress/edit-site": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/edit-site/-/edit-site-5.26.0.tgz", - "integrity": "sha512-jiNjBsdfUM+p3vL1q+tH6+igfCIi+Pr42IsYCj10SvAOGiChRKphE46mxsAfPaNiQhc7qQUEczYMNOAphY5I1g==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/edit-site/-/edit-site-5.27.1.tgz", + "integrity": "sha512-jl8nuCP4BwdI2PiYTQHDxUqXRIdDYV8PpMHkPEXPRrLPe/uJ6YnQqFj4zJb+0sGcDSBcUqEjZwfpd0evnqGiQw==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/block-library": "^8.26.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/commands": "^0.20.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-commands": "^0.18.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/dataviews": "^0.3.0", - "@wordpress/date": "^4.49.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/editor": "^13.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/escape-html": "^2.49.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/interface": "^5.26.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/media-utils": "^4.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/patterns": "^1.10.0", - "@wordpress/plugins": "^6.17.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/primitives": "^3.47.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/reusable-blocks": "^4.26.0", - "@wordpress/router": "^0.18.0", - "@wordpress/style-engine": "^1.32.0", - "@wordpress/url": "^3.50.0", - "@wordpress/viewport": "^5.26.0", - "@wordpress/widgets": "^3.26.0", - "@wordpress/wordcount": "^3.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/block-library": "^8.27.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/commands": "^0.21.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-commands": "^0.19.1", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/dataviews": "^0.4.0", + "@wordpress/date": "^4.50.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/editor": "^13.27.1", + "@wordpress/element": "^5.27.0", + "@wordpress/escape-html": "^2.50.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/interface": "^5.27.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/media-utils": "^4.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/patterns": "^1.11.1", + "@wordpress/plugins": "^6.18.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/primitives": "^3.48.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/reusable-blocks": "^4.27.1", + "@wordpress/router": "^0.19.0", + "@wordpress/style-engine": "^1.33.1", + "@wordpress/url": "^3.51.0", + "@wordpress/viewport": "^5.27.0", + "@wordpress/widgets": "^3.27.1", + "@wordpress/wordcount": "^3.50.0", "change-case": "^4.1.2", "classnames": "^2.3.1", "colord": "^2.9.2", @@ -6943,37 +6946,37 @@ } }, "node_modules/@wordpress/edit-widgets": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/edit-widgets/-/edit-widgets-5.26.0.tgz", - "integrity": "sha512-79VEDPhl6l4OVNxJKB2opue5fsWdXfdZzQTf92SBMgdDo7oXKg5dQZWThGIAkC0SQaEmGzfJEk5QQ/1I55RXfw==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/edit-widgets/-/edit-widgets-5.27.1.tgz", + "integrity": "sha512-MTiIujW4KGTbJrlyglzIfm19rIVqK+Ny1rcBV8A1AM2rJc2vOjFyzlkGH+MkesrUHu4R4CUwzFyCRrPC/+VImA==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/block-library": "^8.26.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/interface": "^5.26.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/media-utils": "^4.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/patterns": "^1.10.0", - "@wordpress/plugins": "^6.17.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/reusable-blocks": "^4.26.0", - "@wordpress/url": "^3.50.0", - "@wordpress/widgets": "^3.26.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/block-library": "^8.27.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/interface": "^5.27.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/media-utils": "^4.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/patterns": "^1.11.1", + "@wordpress/plugins": "^6.18.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/reusable-blocks": "^4.27.1", + "@wordpress/url": "^3.51.0", + "@wordpress/widgets": "^3.27.1", "classnames": "^2.3.1", "rememo": "^4.0.2" }, @@ -6986,41 +6989,41 @@ } }, "node_modules/@wordpress/editor": { - "version": "13.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-13.26.0.tgz", - "integrity": "sha512-EeJ8UNTspLdMsh1bYWMsV3ODOSVOsubhyz0SATEKmP3Cqra1hXwgzPdLyZg22cXlu7x3XX7tmu8Se9wV6B3SMg==", + "version": "13.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-13.27.1.tgz", + "integrity": "sha512-n8DwCqEGqXyPg/+2YBsoaUR9rWbXwB/YexbPdmRwCpWPzxPFDOz/nHBZwez1E24ty50YsBW8NTkXUaarpPkHJQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/commands": "^0.20.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/date": "^4.49.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/media-utils": "^4.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/patterns": "^1.10.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/reusable-blocks": "^4.26.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/server-side-render": "^4.26.0", - "@wordpress/url": "^3.50.0", - "@wordpress/wordcount": "^3.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/commands": "^0.21.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/date": "^4.50.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/media-utils": "^4.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/patterns": "^1.11.1", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/reusable-blocks": "^4.27.1", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/server-side-render": "^4.27.1", + "@wordpress/url": "^3.51.0", + "@wordpress/wordcount": "^3.50.0", "classnames": "^2.3.1", "date-fns": "^2.28.0", "memize": "^2.1.0", @@ -7037,14 +7040,14 @@ } }, "node_modules/@wordpress/element": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-5.26.0.tgz", - "integrity": "sha512-pYZ2OsFgDN00amTxPoC7BtlkVtVBeLS/Y1+P1Mlu0CX+gHDP0Il9SUaLVEIAewLnZMN+O3ph3H5nfR0yKkSnAA==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-5.27.0.tgz", + "integrity": "sha512-IA5LTAfx5bDNXULPmctcNb/04i4JcnIReG0RAuPgrZ8lbMZWUxGFymh10PEQjs7ZJ++qGsI6E+6JISpjkRaDQQ==", "dependencies": { "@babel/runtime": "^7.16.0", "@types/react": "^18.0.21", "@types/react-dom": "^18.0.6", - "@wordpress/escape-html": "^2.49.0", + "@wordpress/escape-html": "^2.50.0", "change-case": "^4.1.2", "is-plain-object": "^5.0.0", "react": "^18.2.0", @@ -7055,9 +7058,9 @@ } }, "node_modules/@wordpress/escape-html": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.49.0.tgz", - "integrity": "sha512-JmVm6IWr5EhXU5m7LCwMOiSv90qJU1l8Q2xlBCQ+0bIPcWRjsHX9pFKDOJvQ6D55W/CTGO1GQk50uolktTeTtw==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.50.0.tgz", + "integrity": "sha512-hBvoMCEZocziZDGCmBanSO+uupnd054mxd7FQ6toQ4UnsZ4JwXSmEC72W2Ed+cRGB1DeJDD0dY9iC0b4xkumsQ==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -7066,16 +7069,16 @@ } }, "node_modules/@wordpress/eslint-plugin": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-17.6.0.tgz", - "integrity": "sha512-piANQS5eaSPmpzPXdNZdXbKcHjAyXbuHeUd9ctVA+6sOMVay70+ICQj7Isu4o61Wv43KtxugQoa2PSBqVtrRKA==", + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-17.7.0.tgz", + "integrity": "sha512-JSFaCogE0WlZpl0SV4q8DK8G6jwDjEzXRzOsgesWilea4OuVp1KxCamkddTorRNM3QAbjrGuPJ4NYaGrNG9QsA==", "dev": true, "dependencies": { "@babel/eslint-parser": "^7.16.0", "@typescript-eslint/eslint-plugin": "^6.4.1", "@typescript-eslint/parser": "^6.4.1", - "@wordpress/babel-preset-default": "^7.33.0", - "@wordpress/prettier-config": "^3.6.0", + "@wordpress/babel-preset-default": "^7.34.0", + "@wordpress/prettier-config": "^3.7.0", "cosmiconfig": "^7.0.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.25.2", @@ -7124,23 +7127,23 @@ } }, "node_modules/@wordpress/format-library": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/format-library/-/format-library-4.26.0.tgz", - "integrity": "sha512-ntIyOuctTSPIoAVh3YkLoNHAUTbyYj7P0vtNPAosTvtYYK0bW62K8gOhGeU1ghuTCGnmS7LowsfIUOk7Vab60Q==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/format-library/-/format-library-4.27.1.tgz", + "integrity": "sha512-+jdmGf8cPk6jCZcndI/kqeaf6YYQCIjBYTgBJsUUOP92HTIDq6pAECH8XqBX2n2V+QX4WirXwBvjkZ5IgjPVvg==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/url": "^3.50.0" + "@wordpress/a11y": "^3.50.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/url": "^3.51.0" }, "engines": { "node": ">=12" @@ -7151,9 +7154,9 @@ } }, "node_modules/@wordpress/hooks": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.49.0.tgz", - "integrity": "sha512-GH546Jg8u/rw9I3fsvAhidwt8rUFNmkdXGByIPGsN3R6y+QwWMXPzsnoYdFmFOmDK9gOGCRDe5bXHikoWnaiKA==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.50.0.tgz", + "integrity": "sha512-YIhwT1y0ss7Byfz46NBx08EUmXzWMu+g5DCY7FMuDNhwxSEoZMB8edKMiwNmFk4mFKBCnXM1d5FeONUPIUkJwg==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -7162,9 +7165,9 @@ } }, "node_modules/@wordpress/html-entities": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.49.0.tgz", - "integrity": "sha512-t9/eKhm/JBoRGze9hQOmQPO8TNOjLgIHFGzvca0MSurrR2C0Gy4eVxE/FFHtLBctN8fcgAghhQP06y1lZZ7FfQ==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.50.0.tgz", + "integrity": "sha512-DBRgShv6FLtDpapoTgmEx//6uHeq+mk5zKhAWAAqu6+/6LqOm/TCoUTxb0E2xtHh4oRBgU5nYC92pObRaczFdQ==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -7173,12 +7176,12 @@ } }, "node_modules/@wordpress/i18n": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.49.0.tgz", - "integrity": "sha512-8aZmmRfOHzS/3pMWg+4f6QlPci0wK5V+PDllAwtwFFrXgc0pmk8VXu7Quajh1tiVoIQDCZpK6h1sqa+qrCLpZg==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.50.0.tgz", + "integrity": "sha512-FkA2se6HMQm4eFC+/kTWvWQqs51VxpZuvY2MlWUp/L1r1d/dMBHXu049x86+/+6yk3ZNqiK5h6j6Z76dvPHZ4w==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.49.0", + "@wordpress/hooks": "^3.50.0", "gettext-parser": "^1.3.1", "memize": "^2.1.0", "sprintf-js": "^1.1.1", @@ -7192,48 +7195,60 @@ } }, "node_modules/@wordpress/icons": { - "version": "9.40.0", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.40.0.tgz", - "integrity": "sha512-NSbhur14Ypr+hbgp848430cmk2AHZ7E2e9zvj8917ZjhrVCD7zYT590hOspswJZEaFxJdY3QSnegGiBSI/MacQ==", + "version": "9.41.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.41.0.tgz", + "integrity": "sha512-L4fp9ZdxGBpMk3o2YqABgiPHNoHyu9Enid7JNkCdWP8iUgk7dEiDvo/XoiWPTAeNbF6W8Nqu54635mq01es0NQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/element": "^5.26.0", - "@wordpress/primitives": "^3.47.0" + "@wordpress/element": "^5.27.0", + "@wordpress/primitives": "^3.48.0" }, "engines": { "node": ">=12" } }, "node_modules/@wordpress/interactivity": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/interactivity/-/interactivity-3.2.0.tgz", - "integrity": "sha512-x4YPuBee7uOjwYB5Ncc5zsLKae6PZjN0Dy+DCZ6rMik1lUPTP4XjHrbCj7jx2FoH/5ApgBHnGy2Ql//l64wCuQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/interactivity/-/interactivity-4.0.0.tgz", + "integrity": "sha512-+KIzJVcz5Z0a/CeMBY7DEFsXCeEd+/gDYgQwWY7W7/nUwr5frT4X+i760Yv8J40JN8IMaQeKStcGEcm62C7jjg==", + "dependencies": { + "@preact/signals": "^1.2.2", + "deepsignal": "^1.4.0", + "preact": "^10.19.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/interactivity-router": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/interactivity-router/-/interactivity-router-1.0.0.tgz", + "integrity": "sha512-q+ulJGYFCX+CGTdGHraZvbpB+jsv0tYSEEV6mWsKU7ujj+NelPa5ngL9XbyGTAOEZqOauWQ/4H3SP9k25u6iQg==", "dependencies": { - "@preact/signals": "^1.1.3", - "deepsignal": "^1.3.6", - "preact": "^10.13.2" + "@wordpress/interactivity": "^4.0.0" }, "engines": { "node": ">=12" } }, "node_modules/@wordpress/interface": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-5.26.0.tgz", - "integrity": "sha512-5Zt7e1Y4JYzJaXC8JQlX2RXmZCOUPoe7CamG+MwJDvtLtssL368Ar6aQVVhWB+2MVfl28OH9jQHI/mKCC7GpaA==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-5.27.0.tgz", + "integrity": "sha512-ZybF4tuuuFOgGsB0n9u5ajrWKf/PYaS8d2yu2T+6ukliLnXI6AMMCXvM534H0VZa7DMLjMYKRXtfs7QqR/p95Q==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/plugins": "^6.17.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/viewport": "^5.26.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/plugins": "^6.18.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/viewport": "^5.27.0", "classnames": "^2.3.1" }, "engines": { @@ -7245,9 +7260,9 @@ } }, "node_modules/@wordpress/is-shallow-equal": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.49.0.tgz", - "integrity": "sha512-cEII2Ik+qRNsU1lzGjBo0gtSFCNFlMvauPda4+F4U1H3mBPCq+zLm8vHLHtybwq2Dh32OsA/5NWWTbW8rRrdfg==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.50.0.tgz", + "integrity": "sha512-lX0fMa1f/TwWYYF+Oj0MG2Eze4Bb+vsnhXX6X1l+Ri3PG34wWGonjq729qHbJRDwm8o1y9GeswCgESIpuAm9wg==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -7256,9 +7271,9 @@ } }, "node_modules/@wordpress/jest-console": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-7.20.0.tgz", - "integrity": "sha512-EXexYwBLaJSpSCUwpQeSqjJ9G7KDkzH+oCfiZp4ZYuemmCaJFOn8/HOLwfLU0o7i0bfYFAjt8lSVCr5HiYY0AA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-7.21.0.tgz", + "integrity": "sha512-o2vZRlwwJ6WoxRwnFFT5iZzfdc2d9MZvrtwB093RWPNcyK5qVtApji4VN/ieHijB4bjEHGalm0UKfKpt0EDlUQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.16.0", @@ -7272,12 +7287,12 @@ } }, "node_modules/@wordpress/jest-preset-default": { - "version": "11.20.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-11.20.0.tgz", - "integrity": "sha512-3x2ua/rc0540zfLOrHbfdrEOwS5xWPbX5/f2LUyM2T6zzmhXrnqG2WFdhftFFLAUhC8cbxuy1WNnrzgjUxGeDQ==", + "version": "11.21.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-11.21.0.tgz", + "integrity": "sha512-XAztKOROu02iBsz+Qosv/RYuPWB1XwwlU+FiA5Y68tRztrqFy4b/il+DFg4Jue/zXF7UECWUvosd5ow/GmKa6Q==", "dev": true, "dependencies": { - "@wordpress/jest-console": "^7.20.0", + "@wordpress/jest-console": "^7.21.0", "babel-jest": "^29.6.2" }, "engines": { @@ -7289,14 +7304,14 @@ } }, "node_modules/@wordpress/keyboard-shortcuts": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-4.26.0.tgz", - "integrity": "sha512-ijCDTSKmWUP4sanucgrOqhSaxqBE1nbR2FzBEITSSfh2x1i0IK5rzF5BL3waV4mWKuSe0UmpPz5vnqKvijc+Ug==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-4.27.0.tgz", + "integrity": "sha512-mpYhaSAMHXbRMp9hP08LejX/u1nLQaZONhwGSytqIhN1DQwpBbNbmV8ZNm1dnevUsYqEfPVVov6HFyPxYQ6m4w==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/keycodes": "^3.49.0", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/keycodes": "^3.50.0", "rememo": "^4.0.2" }, "engines": { @@ -7307,29 +7322,29 @@ } }, "node_modules/@wordpress/keycodes": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.49.0.tgz", - "integrity": "sha512-Hg+kUTV/ti+CyG4+D3dmRFMmrE45E2QEv7ZKaeIf+t1wlafekLSDwIpdF7e68HxEMmZSzHmLm7bHqQTNjxAoKQ==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.50.0.tgz", + "integrity": "sha512-ykWpyCbgwcaT8i5kSfotYtd2oOHyMDpWEYR73InYrzEhl7pnS3wD7hi/KfeKLvMfYhbysUXlCVr6q/oH+qK/DQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.49.0" + "@wordpress/i18n": "^4.50.0" }, "engines": { "node": ">=12" } }, "node_modules/@wordpress/list-reusable-blocks": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/list-reusable-blocks/-/list-reusable-blocks-4.26.0.tgz", - "integrity": "sha512-oM58hL3cgHD1jffVI80qrFQP1ATtiarwoNL3GnQ+keqIlP6DLEGvqNFtTzXK68ymywuS1GHG5IkfOfAxzbZbcQ==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/list-reusable-blocks/-/list-reusable-blocks-4.27.0.tgz", + "integrity": "sha512-szDQnIdU34yIvNel+Kk1oBOugiqwXNm4jF77T90kaWB/SIQFW80CFYoIjIYQc63r9v3wi0D483KpXoci1AUSeQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", "change-case": "^4.1.2" }, "engines": { @@ -7341,28 +7356,28 @@ } }, "node_modules/@wordpress/media-utils": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-4.40.0.tgz", - "integrity": "sha512-rr9hRq3dLMpg7QN4jd99i2AEKKD8I0XNx7+RmfHF93zNiaMaIogPaQB+UQBgPpLllptU0e3ZMPWwIINnkJkkuQ==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-4.41.0.tgz", + "integrity": "sha512-wCxk8DAhmZ/3/a+oPRrieGurMOKDrYoDnnA0jhTm2D45kvn9y+NfnNBvLo2q1Is1ZiVTtNq54IRUXcdOjZgR9A==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0" + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0" }, "engines": { "node": ">=12" } }, "node_modules/@wordpress/notices": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-4.17.0.tgz", - "integrity": "sha512-EH7f4YDQUtuY+UlS8OIv0bjXXK+SGMGPQNlecSKFoP3QBoXZy5zhVDAfr4vewPE19t3gWaf22zPtF0NTl06a2g==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-4.18.0.tgz", + "integrity": "sha512-Y2XpY6niJ7NuqPBtGYvDYSPCfw/y4yxv60ahu1kYd8r5BamKSchTYwKSnV0yrx/IUfNO04VAsNq9NCUQG12pRA==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/data": "^9.19.0" + "@wordpress/a11y": "^3.50.0", + "@wordpress/data": "^9.20.0" }, "engines": { "node": ">=12" @@ -7372,9 +7387,9 @@ } }, "node_modules/@wordpress/npm-package-json-lint-config": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.34.0.tgz", - "integrity": "sha512-mknDw+d5HIfx/1DyrhkbLJNu8XsmUEjc1SsYSgF2XCP20/khpO7YOi0LWn9uQ2QXWZrlhMc7JKSSOcTs0aLphQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.35.0.tgz", + "integrity": "sha512-QmkhYM4/s+2r3RuolVRRmoUa5o3lFgcHA6I3A9akaSVGZr//4p2p+iXOGmNub9njgGlj7j8SAPN8GUsCO/VqZQ==", "dev": true, "engines": { "node": ">=14" @@ -7384,18 +7399,18 @@ } }, "node_modules/@wordpress/nux": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wordpress/nux/-/nux-8.11.0.tgz", - "integrity": "sha512-nnfVkn476gn/OQeAydswF5LGqCba262aZxlw6uIDyM0zClCnE13iKVZS68cnTQjHhS0w32jaaf9Lyg3KzZOJPw==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@wordpress/nux/-/nux-8.12.0.tgz", + "integrity": "sha512-fMnm9f+lmaCV5YoRHjqQNVU0P+FxthY8Lt84ZW1owlPjpJqdYZX/bKtp+bfWFgR3/Th26/uO4WxZqQzj8V1Pjg==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", "rememo": "^4.0.2" }, "engines": { @@ -7407,25 +7422,25 @@ } }, "node_modules/@wordpress/patterns": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@wordpress/patterns/-/patterns-1.10.0.tgz", - "integrity": "sha512-TzHTmlbmQPUfrOIWmxKtN7L1Y1M5Qynt9/IRjscWDB9gUEpEiBwVR7mOPMh9kov32MyPIxHy9EnQD112zsaPbA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@wordpress/patterns/-/patterns-1.11.1.tgz", + "integrity": "sha512-fC05YOVXcCJA5iAqxgkoMuDR01TcOCgIBYuQdoLgmYMowaV060CHf4qRh79J7979ed/WHjg2UQR6sA5eJx+Z+Q==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/url": "^3.50.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/url": "^3.51.0", "nanoid": "^3.3.4" }, "engines": { @@ -7437,17 +7452,17 @@ } }, "node_modules/@wordpress/plugins": { - "version": "6.17.0", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-6.17.0.tgz", - "integrity": "sha512-ZwrJ7L0S45SxZmTWvWc+IgSEWj6HqCtVtdg2CRxRGbyfRV1zwqeEtofNQWRE3z1plZqeUOx/+hVjTiGmkUC+Pg==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-6.18.0.tgz", + "integrity": "sha512-m2BRJ5BApIMwT2Ck5E5yD8pS3RiIoOvWhzsYWrRqRfwjRhc6K46BreCbkiHgduBaFgzDIWpujlUHkYtdl27RoQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/is-shallow-equal": "^4.49.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/is-shallow-equal": "^4.50.0", "memize": "^2.0.1" }, "engines": { @@ -7459,12 +7474,12 @@ } }, "node_modules/@wordpress/postcss-plugins-preset": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-4.33.0.tgz", - "integrity": "sha512-RqKNf8XQTdae0cXO11l6mBw+A3IOEO9dd4sD70g15e4IltrbwuxqwOT5k9muNteUszTCOQKgWgD8gp1KM2/lvQ==", + "version": "4.34.0", + "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-4.34.0.tgz", + "integrity": "sha512-OLQBSLE2q11Ik+WdcO2QfGr/O4X/zJYOGXNsychx/EaMamLzJInFcRL6kGbPX41zPINhadq5x2vFIZI2EC+Uyg==", "dev": true, "dependencies": { - "@wordpress/base-styles": "^4.40.0", + "@wordpress/base-styles": "^4.41.0", "autoprefixer": "^10.2.5" }, "engines": { @@ -7475,17 +7490,20 @@ } }, "node_modules/@wordpress/preferences": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/preferences/-/preferences-3.26.0.tgz", - "integrity": "sha512-8fXN9T1sh9g6kl3ta0BWlZKeqlvMGj2VhNd564zZdfOsEojW1Fhq2RoLahcp2BnMmSojdgPCSQQ8O2IdirwDyA==", + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/preferences/-/preferences-3.27.0.tgz", + "integrity": "sha512-LMhOHX5FI4CJHv2YhtpiEtHfLqL/pjKAMja/v7skkHPlrh64Sgzi/gep016/My5SjcR64JUD1Na2U2j/BnrBNQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/components": "^25.15.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/private-apis": "^0.32.0", "classnames": "^2.3.1" }, "engines": { @@ -7497,21 +7515,21 @@ } }, "node_modules/@wordpress/preferences-persistence": { - "version": "1.41.0", - "resolved": "https://registry.npmjs.org/@wordpress/preferences-persistence/-/preferences-persistence-1.41.0.tgz", - "integrity": "sha512-Gg7R6agqW2aIseGEa1diKJLjppPk2w+Sjnsq53vs0PmEjc8vKCSTvCArIQ9RmRQANWdcvJX6FJurQzqpgUo4sw==", + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/@wordpress/preferences-persistence/-/preferences-persistence-1.42.0.tgz", + "integrity": "sha512-n/VBhZHUEXWoBGsvHUf5uq6b872Lzn+cenfB2ex/etcWLXiVUkEl3rlzocyS50g2YoNQg/zQOn1hoSh+AgCm8Q==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0" + "@wordpress/api-fetch": "^6.47.0" }, "engines": { "node": ">=12" } }, "node_modules/@wordpress/prettier-config": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-3.6.0.tgz", - "integrity": "sha512-51GuCeeEGOi4qsMpzGFBmKbqEUKLqWj3eZDIwATymUaHsJPx9oT93dlIP97MqKIaWjxlhxCMt5RjxcCNT7Pckw==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-3.7.0.tgz", + "integrity": "sha512-JRTc5p7UxtcPkqdSDXSFJoJnVuS510uiRVz8anXEl5nuOx5p+SJAzi9QPrxTgOE8bN3wRABH4eIhfOcta4CFdg==", "dev": true, "engines": { "node": ">=14" @@ -7521,12 +7539,12 @@ } }, "node_modules/@wordpress/primitives": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.47.0.tgz", - "integrity": "sha512-ho4XrOI9PTGmQhgEYHuRBfgnPzPuq2zXJpQa2GCrbhm4fojLmZ7oWVBzrL2cGtFGD6dJhY3dbY+l+rNs97A2TA==", + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.48.0.tgz", + "integrity": "sha512-uBoMxpl+FiZF6aRXH/+Hwol4EAL6QqlNSaGF1IzEwklFzdRF1m5wTM4vh21w8Bq7lgxiuAqyueY7X5u32v+zPw==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/element": "^5.26.0", + "@wordpress/element": "^5.27.0", "classnames": "^2.3.1" }, "engines": { @@ -7534,9 +7552,9 @@ } }, "node_modules/@wordpress/priority-queue": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.49.0.tgz", - "integrity": "sha512-KuFKPfjdKJe7VHAuIW7+1FV4nh6NRR97uGxb02unaVKOhVQmYFkCtk02KI6e63sLrqwLAKVt8Dolzd/94oYERg==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.50.0.tgz", + "integrity": "sha512-21E842EVFYUd1ZrNTLAW57IyloDCUZr6h1Te6BgqKoeKOEteoTQwA9BemMzZJUiThUSZymW94ot0Omb+C8VX2g==", "dependencies": { "@babel/runtime": "^7.16.0", "requestidlecallback": "^0.3.0" @@ -7546,9 +7564,9 @@ } }, "node_modules/@wordpress/private-apis": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-0.31.0.tgz", - "integrity": "sha512-Hx2LJfkgbeAixXHDvi/rBly4+mShhrJfYXwyh6uTLnXkjp6OcPuBbCXhIfARw45lNdiqWdHoqXcAl1RTBFFd4g==", + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-0.32.0.tgz", + "integrity": "sha512-P7nxI/bGMDQhtlTfSe1Y2SDfrd20K5UMnTHbq+hmIkzBGRpNPbdGeNu2bZaZtIvmXk1OCR0Fkef+e6QqkOfYPg==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -7557,9 +7575,9 @@ } }, "node_modules/@wordpress/redux-routine": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.49.0.tgz", - "integrity": "sha512-uXsU3ZEJoDkyqGYlMfvjgfZpoVYbOOUJMHTL8EHQ2yC9JwBoyWz9kWXAn4cal2LJY0cifQdFwmGOp4nEidne2g==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.50.0.tgz", + "integrity": "sha512-giHjQYhmFDCpeNEnsZKP0JNPBnpuQwsoxLmHAUUSNFWAmd4rtnNnG6M8HuqOLmgYTvEa8Hlx3Bl+reTGvrtI2g==", "dependencies": { "@babel/runtime": "^7.16.0", "is-plain-object": "^5.0.0", @@ -7574,22 +7592,22 @@ } }, "node_modules/@wordpress/reusable-blocks": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-4.26.0.tgz", - "integrity": "sha512-RTHkbzsOXQdRW59MtMyWZwMc/VpL1gkrpAao1SXr1c+VY1aW7S59mfSLOOkhW71T/8UKOZPRneRSkF6iMn4nKg==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-4.27.1.tgz", + "integrity": "sha512-Q+mzjIZqoSLwFihpQzn4kApxj3/Rp+vLDPc2cUm41+L6belpSqXxvxrcB5gr/wjStTQKCLzZRptgvt/fG90OdQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/url": "^3.50.0" + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/url": "^3.51.0" }, "engines": { "node": ">=12" @@ -7600,19 +7618,19 @@ } }, "node_modules/@wordpress/rich-text": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-6.26.0.tgz", - "integrity": "sha512-qKb4tctDW3akaMuil0Kwlr8E3C6WyltyLXxb4f0Se6Buq+rODa7JeCr2aDtG5LfZh+GFLN8tAZlPgzLIgzDziA==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-6.27.0.tgz", + "integrity": "sha512-B7t++SldcI4nb+lO2m9oEdyD8y2FbH5DKY5F2G3xpcEnw4EKSt4SsTzeclMQ/2zzlEHPRKU/IR29SeOIJ1H8JQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/escape-html": "^2.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/keycodes": "^3.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/escape-html": "^2.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/keycodes": "^3.50.0", "memize": "^2.1.0", "rememo": "^4.0.2" }, @@ -7624,14 +7642,14 @@ } }, "node_modules/@wordpress/router": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/router/-/router-0.18.0.tgz", - "integrity": "sha512-EmPgcihDOhCqXjm7eWb6HTTBQhEL9Y+Hhbfj5gHy9sg7v4fd19nJ09v4Rqmluj2vwxRBz2/ke4jfM3+AxtSmug==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@wordpress/router/-/router-0.19.0.tgz", + "integrity": "sha512-S2z4WrgrfMNAl6amIjekGV1V6XGnjolYmRgUH/VTN45CQUV/o5ABo04xI/L3uvUnaRpH022n/yQX5H1p1kKhdA==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/element": "^5.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/url": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/url": "^3.51.0", "history": "^5.1.0" }, "engines": { @@ -7642,24 +7660,24 @@ } }, "node_modules/@wordpress/scripts": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-27.0.0.tgz", - "integrity": "sha512-WXZPvgOaFCK1ZBov99lOOWE5Nl/eDMGTnx0sTsE1FcgAOVgKwaKvDCsRWYqYmf1O3aAhud0+YPIJyewbIHOQdQ==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-27.1.0.tgz", + "integrity": "sha512-jewyOxqaNrsct5R1NXv2lT8CA70vzrvpdZHYERCcH9LzKuvrcc32Telm9Jqso6ay1ZgHeIbjHSCd2+r2sBG7hw==", "dev": true, "dependencies": { "@babel/core": "^7.16.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", "@svgr/webpack": "^8.0.1", - "@wordpress/babel-preset-default": "^7.33.0", - "@wordpress/browserslist-config": "^5.32.0", - "@wordpress/dependency-extraction-webpack-plugin": "^5.0.0", - "@wordpress/e2e-test-utils-playwright": "^0.17.0", - "@wordpress/eslint-plugin": "^17.6.0", - "@wordpress/jest-preset-default": "^11.20.0", - "@wordpress/npm-package-json-lint-config": "^4.34.0", - "@wordpress/postcss-plugins-preset": "^4.33.0", - "@wordpress/prettier-config": "^3.6.0", - "@wordpress/stylelint-config": "^21.32.0", + "@wordpress/babel-preset-default": "^7.34.0", + "@wordpress/browserslist-config": "^5.33.0", + "@wordpress/dependency-extraction-webpack-plugin": "^5.1.0", + "@wordpress/e2e-test-utils-playwright": "^0.18.0", + "@wordpress/eslint-plugin": "^17.7.0", + "@wordpress/jest-preset-default": "^11.21.0", + "@wordpress/npm-package-json-lint-config": "^4.35.0", + "@wordpress/postcss-plugins-preset": "^4.34.0", + "@wordpress/prettier-config": "^3.7.0", + "@wordpress/stylelint-config": "^21.33.0", "adm-zip": "^0.5.9", "babel-jest": "^29.6.2", "babel-loader": "^8.2.3", @@ -8230,20 +8248,20 @@ } }, "node_modules/@wordpress/server-side-render": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-4.26.0.tgz", - "integrity": "sha512-14b7aB9lc6SAlF+D1v0rR8SCK6PsySSmZcP14hV6HaIITftrlYTtNDWXV0Nq8umw/BVKbyHIY7BD+QmufkEciw==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-4.27.1.tgz", + "integrity": "sha512-hovofyT0z75NSK/CSkkSbbTdkq9Afc1MKbEVGXTGpqq5sKOa7IAcxWjzmh8byTgT8x7GEaAyHZUr31p4l0CGnQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/url": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/url": "^3.51.0", "fast-deep-equal": "^3.1.3" }, "engines": { @@ -8255,9 +8273,9 @@ } }, "node_modules/@wordpress/shortcode": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.49.0.tgz", - "integrity": "sha512-4E+CQTj+MWqmYGqyPGUddKX2JgNpMIA6MrTZOQ4MEJp3VIxkLubzIwORfDZ6rlXD8PJ3kvMMivzB1MZ2svnX3Q==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.50.0.tgz", + "integrity": "sha512-RnlqS2OsNUaI6VOLwyUiaL3trAJcWjtoiW21BjIXODbTkEreRJgBJnch7wdFpGimJmKIWBwRD8jQ4hdTND8xVw==", "dependencies": { "@babel/runtime": "^7.16.0", "memize": "^2.0.1" @@ -8267,9 +8285,9 @@ } }, "node_modules/@wordpress/style-engine": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/@wordpress/style-engine/-/style-engine-1.32.0.tgz", - "integrity": "sha512-0Z3DjiUuwxH9t4P085EFXo+fCT+znOYNwEf59bn6e8jRxlQx7t88ecH8hlzQNswpYj0pKBzXQCUsJsxglZYv3g==", + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/@wordpress/style-engine/-/style-engine-1.33.1.tgz", + "integrity": "sha512-mkur1jw3Trz76iwxU6DalTFsJyF5P/NTdU9xniMT8bo1H9HspgKrzqXAaxkTL9F9BXkyiYs+ctVekJYRUKlgcw==", "dependencies": { "@babel/runtime": "^7.16.0", "change-case": "^4.1.2" @@ -8279,9 +8297,9 @@ } }, "node_modules/@wordpress/stylelint-config": { - "version": "21.32.0", - "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-21.32.0.tgz", - "integrity": "sha512-cmrzU55alv+OZu1fXBC2eZGgJIUwyD47TSDDP7l0o9yF6D/w0am7FxC9ungk/S2uK1oatN05nIPsFSTkuHQSzg==", + "version": "21.33.0", + "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-21.33.0.tgz", + "integrity": "sha512-DwjXrjRBva0tkYILvDV7rjl3VaKXxvchlxnFfFs6l2DWL/Qo31CJ+f2rVw4XSWuuWxY1EsyIn9tOBS9URloWTQ==", "dev": true, "dependencies": { "stylelint-config-recommended": "^6.0.0", @@ -8295,13 +8313,13 @@ } }, "node_modules/@wordpress/sync": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@wordpress/sync/-/sync-0.11.0.tgz", - "integrity": "sha512-690oDaDUYWX3sBeHsOlXyreRFgFzVrb+GO6Vo74lUbx0zdI0sNJeX7blBSn3QvZcysN0cAvCRO1sciJinD4e5A==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@wordpress/sync/-/sync-0.12.0.tgz", + "integrity": "sha512-45gU1Gu/ys3zqYO4dDQf6eG5gGgJK9nXa62IUtUWFXIH4FN29XlvGppMVK/zzhJwejF/XnDuT7mQuVEFCZGswA==", "dependencies": { "@babel/runtime": "^7.16.0", "@types/simple-peer": "^9.11.5", - "@wordpress/url": "^3.50.0", + "@wordpress/url": "^3.51.0", "import-locals": "^2.0.0", "lib0": "^0.2.42", "simple-peer": "^9.11.0", @@ -8315,9 +8333,9 @@ } }, "node_modules/@wordpress/token-list": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.49.0.tgz", - "integrity": "sha512-TwLvEfkGqztps2xl+J57BYeJzG0lCLV418fem2VXdl2E2BCwt+d/kDggBPb4KmSdRvSO05QukZsRzPsfFRUbug==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.50.0.tgz", + "integrity": "sha512-LTjXkoljQpJIHqs0isTUzIc1fMu68y0N9HcDIdsCMGkmKptWUCETtb+DItnraxDDLuyWNuTYf840S83a3XAVRA==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -8326,21 +8344,21 @@ } }, "node_modules/@wordpress/undo-manager": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-0.9.0.tgz", - "integrity": "sha512-ZD6fVOdDhH8NvV/2fqjkI6W3kURzU7grWMBSZLtnSmSSPdT//1VSIxe0gcbmRvVPWLdj+TXbHifIswcJK0bHhQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-0.10.0.tgz", + "integrity": "sha512-ODDqAL6BSvD+J7FV+sQTAaVHiPChh/4KBnKg8pb2ogg+Weq6VynthxDxGpQnN8FcMKB9ZoyS3SNIl8pVXLKIwA==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/is-shallow-equal": "^4.49.0" + "@wordpress/is-shallow-equal": "^4.50.0" }, "engines": { "node": ">=12" } }, "node_modules/@wordpress/url": { - "version": "3.50.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.50.0.tgz", - "integrity": "sha512-+YQzsPim5Zx55o/y9urtd0CKANUgwqZSdUNjDWYZ/1CWxtLLzPgQJOabtl79hG2yjrKvjDe9PrDPff18bCmG5A==", + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.51.0.tgz", + "integrity": "sha512-OjucjlP1763gfKbe8lv/k3RCisyX8AfNBrhASk7JqxAj6rFhb1ZZO7YmAgB2m+WoGB5v7fkOli0FZyDqISdYyg==", "dependencies": { "@babel/runtime": "^7.16.0", "remove-accents": "^0.5.0" @@ -8350,14 +8368,14 @@ } }, "node_modules/@wordpress/viewport": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-5.26.0.tgz", - "integrity": "sha512-BZDegMGSckbAwN6eLb3Whn+UeeX1bbB5x6NteTmo4KOSjxTDAUNilBj+JfKoQowZ2fo2xlzySkkVQ/Oajg2rcA==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-5.27.0.tgz", + "integrity": "sha512-ET8X3Ln0K6wrBba+u0AjBD/mP02SuvwhK/EVaI3uAhNlGnkx+J3PdtShbu63lHmp0SG+J27CDjEqfcZ6CdAnfA==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0" + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0" }, "engines": { "node": ">=12" @@ -8367,30 +8385,30 @@ } }, "node_modules/@wordpress/warning": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.49.0.tgz", - "integrity": "sha512-W2Nj9Nj0o2udPLf8jfGijRff3lzQgPOiLZcN4LFUPT6yyb9MxvNIg7ZVTBJL2TB78+KQKGrIH4ERjV5WyDRoEQ==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.50.0.tgz", + "integrity": "sha512-y7Zf48roDfiPgbRAWGXDwN3C8sfbEdneGq+HvXCW6rIeGYnDLdEkpX9i7RfultkFFPVeSP3FpMKVMkto2nbqzA==", "engines": { "node": ">=12" } }, "node_modules/@wordpress/widgets": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/widgets/-/widgets-3.26.0.tgz", - "integrity": "sha512-6nJcUDit1st7yDRkLGt1bbLE9o094rYPNrIQUSs4qfinem2+KcB057MeoYHRL/bNsMvzXTOXJSpWHTBB5Ljp7g==", + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/widgets/-/widgets-3.27.1.tgz", + "integrity": "sha512-KrN24nN4B5nNnzV572yeEQnvqf2p3rKBjA9mTSK7Ei5nY1yvuFQn/LxiihbqqSJikliEMkh/cZ152JvIx5j6JA==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/notices": "^4.17.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/notices": "^4.18.0", "classnames": "^2.3.1" }, "peerDependencies": { @@ -8399,9 +8417,9 @@ } }, "node_modules/@wordpress/wordcount": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.49.0.tgz", - "integrity": "sha512-zchwRmnGRFhX0DUYXNIx5dDYGQSluVQd7/qxaBoB6zlw+e9Fw5ZISGirZi+0lr8h6DHqvw/bpH4e5GNwqUX/Jw==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.50.0.tgz", + "integrity": "sha512-lRfIX3B9ha//bqsUihym2BnOiAsdDQr22vdy0wZIpm5G2tFvTddCKHy0YClf52IJK0z61WqbNuF9hrvzWWxL+g==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -37440,16 +37458,16 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz", - "integrity": "sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz", + "integrity": "sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/type-utils": "6.19.0", - "@typescript-eslint/utils": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/type-utils": "6.19.1", + "@typescript-eslint/utils": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -37459,54 +37477,54 @@ } }, "@typescript-eslint/parser": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.0.tgz", - "integrity": "sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.1.tgz", + "integrity": "sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/typescript-estree": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz", - "integrity": "sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz", + "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==", "dev": true, "requires": { - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0" + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1" } }, "@typescript-eslint/type-utils": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.0.tgz", - "integrity": "sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz", + "integrity": "sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "6.19.0", - "@typescript-eslint/utils": "6.19.0", + "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/utils": "6.19.1", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/types": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.0.tgz", - "integrity": "sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", + "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz", - "integrity": "sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", + "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", "dev": true, "requires": { - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -37536,27 +37554,27 @@ } }, "@typescript-eslint/utils": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.0.tgz", - "integrity": "sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz", + "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/typescript-estree": "6.19.0", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/typescript-estree": "6.19.1", "semver": "^7.5.4" } }, "@typescript-eslint/visitor-keys": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz", - "integrity": "sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz", + "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==", "dev": true, "requires": { - "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/types": "6.19.1", "eslint-visitor-keys": "^3.4.1" }, "dependencies": { @@ -37746,57 +37764,57 @@ "dev": true }, "@wordpress/a11y": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.49.0.tgz", - "integrity": "sha512-R3mv4jiPxYRem3EEQjkI1EZylHruG5NWCqkDKEkBumcrqLfY4ntP4QeSFe36KUaZGqRGSSeaP9hK/0WYehPNsA==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.50.0.tgz", + "integrity": "sha512-eQiPGnxqiL1LgnHztFG0RGSFZ5phwR8B8Fr4lbJsFalsc9R/tOcjewvf2KN0yi2UlRA5ssAeiTP+tYmeAqtOHQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/dom-ready": "^3.49.0", - "@wordpress/i18n": "^4.49.0" + "@wordpress/dom-ready": "^3.50.0", + "@wordpress/i18n": "^4.50.0" } }, "@wordpress/annotations": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/annotations/-/annotations-2.49.0.tgz", - "integrity": "sha512-O7ZuidTYc55Rsg8GHMC3AMATBCo7jSzegtYoMFe+STK3SxNWVUZvN+kWTfeeR26kXIF3NKoODpEfNh1GqZ/urA==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/annotations/-/annotations-2.50.0.tgz", + "integrity": "sha512-E9cu8xuGvIRw3LVtuS+XSzAXVBF41sgvxpVJAz/5FEibzxUHPy8flu5tTKf+mi4WGZxC4AJGNP1bhZRj7cynZQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/data": "^9.19.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/rich-text": "^6.26.0", + "@wordpress/data": "^9.20.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/rich-text": "^6.27.0", "rememo": "^4.0.2", "uuid": "^9.0.1" } }, "@wordpress/api-fetch": { - "version": "6.46.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.46.0.tgz", - "integrity": "sha512-SimHPw57N8LyZpQB6dK5xq1Kn1WtqP/K27GjGwvxvkb+8xbVv0TI67AF9adsN4sZbOHIZJQwqvCTSGKhNttAvQ==", + "version": "6.47.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.47.0.tgz", + "integrity": "sha512-NA/jWDXoVtJmiVBYhlxts2UrgKJpJM+zTGzLCfRQCZUzpJYm3LonB8x+uCQ78nEyxCY397Esod3jnbquYjOr0Q==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/url": "^3.50.0" + "@wordpress/i18n": "^4.50.0", + "@wordpress/url": "^3.51.0" } }, "@wordpress/autop": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.49.0.tgz", - "integrity": "sha512-bc0jUu8yOCioNFFgrO++XhdGU6QpL9HF9LeWxzayqp5Br4z9z7Zslp+KH1Gy6H2RNowEr8Fq4hZ7JwQ009EDmw==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.50.0.tgz", + "integrity": "sha512-4E0vq2MvSOVDKXs4OulIbTdKU6S5O9QjT4qc63rAd0uiKGBYV12ViPzmwbJ6k38zOO0PKdcwlVCj55Gq4aoPDw==", "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/babel-plugin-import-jsx-pragma": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-4.32.0.tgz", - "integrity": "sha512-ie6p5VpUxTNMPQrHdCYEPddTzmDeFTQjFi3qq17set9WbRAMaOZ8jqQhSxms0NJi8Xa6wZM9TR2ZABAlg+FTeA==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-4.33.0.tgz", + "integrity": "sha512-CjzruFKWgzU/mO/nnQJ2l9UlzZQpqS60UC6l2vNdJ9oD2nKHR5Oou6kNic3QhWDVJrBf2JUiJJ0TC280bykXmA==", "dev": true }, "@wordpress/babel-preset-default": { - "version": "7.33.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-7.33.0.tgz", - "integrity": "sha512-/OonEa67xJdIn0ADWEd7AJtLhIGlYALKyc17RxTmI2Ojs0zLIQNbgAv1D/cuVguo0UKK9zsMZ9MBkhSKLF9A9Q==", + "version": "7.34.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-7.34.0.tgz", + "integrity": "sha512-yjFOllyTktFHtcIEgU3ghXBn8lItzr5mPLf0xdSpe0cHceFYL1hT1oprhgRL+olZweaO96Yfm0qUCCKQfJBWsA==", "dev": true, "requires": { "@babel/core": "^7.16.0", @@ -37805,94 +37823,94 @@ "@babel/preset-env": "^7.16.0", "@babel/preset-typescript": "^7.16.0", "@babel/runtime": "^7.16.0", - "@wordpress/babel-plugin-import-jsx-pragma": "^4.32.0", - "@wordpress/browserslist-config": "^5.32.0", - "@wordpress/warning": "^2.49.0", + "@wordpress/babel-plugin-import-jsx-pragma": "^4.33.0", + "@wordpress/browserslist-config": "^5.33.0", + "@wordpress/warning": "^2.50.0", "browserslist": "^4.21.10", "core-js": "^3.31.0", "react": "^18.2.0" } }, "@wordpress/base-styles": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.40.0.tgz", - "integrity": "sha512-A+HiyES4YjfbFhJAGrhCLB3QWomgWZR9wkgG7K9l6DD70/9Vd7t+go7jI1HJ1c9qGfBV0rmdQf/qNn89Aai1cg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.41.0.tgz", + "integrity": "sha512-MjPAZeAqvyskDXDp2wGZ0DjtYOQLOydI1WqVIZS4wnIdhsQWQD//VMeXgLrcmCzNyQg+iKTx3o+BzmXVTOD0+w==", "dev": true }, "@wordpress/blob": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.49.0.tgz", - "integrity": "sha512-HYPMuXJx35uYlQC6JF9XXvPsOht2X8qJfXzGtxWb51OIC6DSRqh3f6s12fgPaNh9uElcSjQ4+Su286upu7S4vw==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.50.0.tgz", + "integrity": "sha512-QvBhsW9WPdsOJhJ0BxzZ83i+cH/gAdjJ1iHY4Rkb02qbZEz4jhdvucGQf2oVnWwvAsFiFPKWk7CwAM5XjoahCA==", "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/block-directory": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-directory/-/block-directory-4.26.0.tgz", - "integrity": "sha512-gSUA1YHIirtgJzBGi6hTEJpvCTth9JAobLEvjjfUVSka9It06TaxVHycu25Xvd1/fQp2ldPM9Txu/7crw4Bw0Q==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/block-directory/-/block-directory-4.27.1.tgz", + "integrity": "sha512-O1qm9AumFZbEOI41HoUDyAaL+cOwjtzW4/8JADbNVmnKXj9bQE8CKbTvbsjin7BUEvM+IdYWzEXkY3KkgxBmTg==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/edit-post": "^7.26.0", - "@wordpress/editor": "^13.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/plugins": "^6.17.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/url": "^3.50.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/edit-post": "^7.27.1", + "@wordpress/editor": "^13.27.1", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/plugins": "^6.18.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/url": "^3.51.0", "change-case": "^4.1.2" } }, "@wordpress/block-editor": { - "version": "12.17.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-12.17.0.tgz", - "integrity": "sha512-np1ICMmScrSuDOQRYQqlDY35kOoQEHuckSCjJPQpjprutXaqG+Jk+RAeeHVgQ8Ze5B+QgkFLjNvYwRh11kYdqg==", + "version": "12.18.1", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-12.18.1.tgz", + "integrity": "sha512-kZPqOO0ogS3y3HcStGRowLKJk66cv9zzQtLcx7YNokYrceqnOWEYddhv+OWRz7h/qmkEBHgZfUCEgCQm2Dulnw==", "requires": { "@babel/runtime": "^7.16.0", "@emotion/react": "^11.7.1", "@emotion/styled": "^11.6.0", "@react-spring/web": "^9.4.5", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/commands": "^0.20.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/date": "^4.49.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/escape-html": "^2.49.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/style-engine": "^1.32.0", - "@wordpress/token-list": "^2.49.0", - "@wordpress/url": "^3.50.0", - "@wordpress/warning": "^2.49.0", - "@wordpress/wordcount": "^3.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/blocks": "^12.27.1", + "@wordpress/commands": "^0.21.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/date": "^4.50.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/escape-html": "^2.50.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/style-engine": "^1.33.1", + "@wordpress/token-list": "^2.50.0", + "@wordpress/url": "^3.51.0", + "@wordpress/warning": "^2.50.0", + "@wordpress/wordcount": "^3.50.0", "change-case": "^4.1.2", "classnames": "^2.3.1", "colord": "^2.7.0", @@ -37911,41 +37929,43 @@ } }, "@wordpress/block-library": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-8.26.0.tgz", - "integrity": "sha512-y2Ysqpj/y0KAXU5nFWXrXbrVKLFzQn+azmksin1ot/BF8tlf6mFs/QWW4HyoRZcCd5TEmB/3G3C2CeoDptrKUQ==", + "version": "8.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-8.27.1.tgz", + "integrity": "sha512-dadyMsUM4A1b4FM3qlL9LwToJHYmVCCiL8Ir471C1N8v8LoZJjaGr5GvJTw61rSF6dy9951IvLl4+HxlGQPUew==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/autop": "^3.49.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/date": "^4.49.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/escape-html": "^2.49.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/interactivity": "^3.2.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/primitives": "^3.47.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/reusable-blocks": "^4.26.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/server-side-render": "^4.26.0", - "@wordpress/url": "^3.50.0", - "@wordpress/viewport": "^5.26.0", - "@wordpress/wordcount": "^3.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/autop": "^3.50.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/date": "^4.50.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/escape-html": "^2.50.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/interactivity": "^4.0.0", + "@wordpress/interactivity-router": "^1.0.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/patterns": "^1.11.1", + "@wordpress/primitives": "^3.48.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/reusable-blocks": "^4.27.1", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/server-side-render": "^4.27.1", + "@wordpress/url": "^3.51.0", + "@wordpress/viewport": "^5.27.0", + "@wordpress/wordcount": "^3.50.0", "change-case": "^4.1.2", "classnames": "^2.3.1", "colord": "^2.7.0", @@ -37958,34 +37978,34 @@ } }, "@wordpress/block-serialization-default-parser": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.49.0.tgz", - "integrity": "sha512-9pQ6yxOhiFv+47iZWF3Te6N+PK+IFlEWgG3IpSIj3mWV6OI7FoM/+C2ePeR06OxE2cQHRkL9pAsECtK9eDJmCQ==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.50.0.tgz", + "integrity": "sha512-ihf2vr+w2zHBOvYTPQZXDiR2IMvso8yJJtzKIHA2ZEgVQ+VVLb4X86n34hfWXtPA3i2KDW+t1WCtq56aNq3Zag==", "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/blocks": { - "version": "12.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-12.26.0.tgz", - "integrity": "sha512-iIWUJmxGPXymf+X1rlHT0QxHV8+NzLfe96S3oKpX2UyFc/5H+eYWwyhA7u2S3kam/ss1DwAwdS7rRIMUHPU5PQ==", + "version": "12.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-12.27.1.tgz", + "integrity": "sha512-9uZtuTG6+fiFV2bLn8b1gzv4BgMpBu4SDQGnvzc5f9U5GL5oYns3PP8vXDOwM2cK1DEmqPsohQWhRnz8QYZDtw==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/autop": "^3.49.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/block-serialization-default-parser": "^4.49.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/shortcode": "^3.49.0", + "@wordpress/autop": "^3.50.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/block-serialization-default-parser": "^4.50.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/shortcode": "^3.50.0", "change-case": "^4.1.2", "colord": "^2.7.0", "fast-deep-equal": "^3.1.3", @@ -38001,33 +38021,33 @@ } }, "@wordpress/browserslist-config": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-5.32.0.tgz", - "integrity": "sha512-LrL4Zg/abXYfVwwbx1caugz4J1GUL+6WNqVF1MZQVDm6CHdlpTEQOvvr/KEi9mN1UY2YoTlxZtUxzvNRTo2Fsg==", + "version": "5.33.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-5.33.0.tgz", + "integrity": "sha512-dv1ZlpqGk8gaSBJPP/Z/1uOuxjtP0EBsHVKInLRu6FWLTJkK8rnCeC3xJT3/2TtJ0rasLC79RoytfhXTOODVwg==", "dev": true }, "@wordpress/commands": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@wordpress/commands/-/commands-0.20.0.tgz", - "integrity": "sha512-aQQCr3ViLwPEo/SEeW7FowA4zCfvypkO7eqTuTlcd+1E3ndRzlWA91rneo+l9GBUQ/elZzhc5Z0i2cMxHTMDRQ==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@wordpress/commands/-/commands-0.21.0.tgz", + "integrity": "sha512-MzMUGCT9cQXto1jrA5lHAtnieTyAhcuNIxfyxlcE+316KNQfbyD8bc7KOzSV2sxXD/rfHuCxvHjfomFyyP+4kA==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/components": "^25.15.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/private-apis": "^0.31.0", + "@wordpress/components": "^25.16.0", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/private-apis": "^0.32.0", "classnames": "^2.3.1", "cmdk": "^0.2.0", "rememo": "^4.0.2" } }, "@wordpress/components": { - "version": "25.15.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-25.15.0.tgz", - "integrity": "sha512-DMTEoyCugnw05+Srb2FaJ3HTXwAJ+NMlgggwoyW2l2J1LpsmDIALKiWfvd3fyXxks3y4kaiv+adQfhNm50U8mA==", + "version": "25.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-25.16.0.tgz", + "integrity": "sha512-voQuMsO5JbH+JW33TnWurwwvpSb8IQ4XU5wyVMubX4TUwadt+/2ToNJbZIDXoaJPei7vbM81Ft+pH+zGlN8CyA==", "requires": { "@ariakit/react": "^0.3.12", "@babel/runtime": "^7.16.0", @@ -38041,23 +38061,23 @@ "@types/gradient-parser": "0.1.3", "@types/highlight-words-core": "1.2.1", "@use-gesture/react": "^10.2.24", - "@wordpress/a11y": "^3.49.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/date": "^4.49.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/escape-html": "^2.49.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/primitives": "^3.47.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/warning": "^2.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/date": "^4.50.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/escape-html": "^2.50.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/primitives": "^3.48.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/warning": "^2.50.0", "change-case": "^4.1.2", "classnames": "^2.3.1", "colord": "^2.7.0", @@ -38082,64 +38102,64 @@ } }, "@wordpress/compose": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-6.26.0.tgz", - "integrity": "sha512-ipHKcXY7//Qkto3Gtw8knqhUbjTtKMjTIQENXcVT+SAp5YLpyaJ6OW9R/N59QmXaeF+Lw04LuUaVX3k7yaRFtA==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-6.27.0.tgz", + "integrity": "sha512-jbEQQ2znRyJTwUNR4m5BKaDyIsuK9TMZx0SKqP+FTfGqT3y7scOnQrHpK0kZdPji++/1cBbn3gSPBLCEmtmHRw==", "requires": { "@babel/runtime": "^7.16.0", "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/priority-queue": "^2.49.0", - "@wordpress/undo-manager": "^0.9.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/priority-queue": "^2.50.0", + "@wordpress/undo-manager": "^0.10.0", "change-case": "^4.1.2", - "clipboard": "^2.0.8", + "clipboard": "^2.0.11", "mousetrap": "^1.6.5", "use-memo-one": "^1.1.1" } }, "@wordpress/core-commands": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/core-commands/-/core-commands-0.18.0.tgz", - "integrity": "sha512-fb4YrD3JBNs1BgMmFZdPyLzegjd06zEck6mZreDz7NCXUjJwuqVp6wb0BcirwSC0u22iGkWQTuxP3mOyaLB1kw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@wordpress/core-commands/-/core-commands-0.19.1.tgz", + "integrity": "sha512-gmgiVtb17PEZgyH+UikE0B0Q6n22fXdscnu1lb/fBIKMgK10Jke4edin5qCbBINyqxykthkKvZO6VYpNjgcSHA==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/commands": "^0.20.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/router": "^0.18.0", - "@wordpress/url": "^3.50.0" + "@wordpress/block-editor": "^12.18.1", + "@wordpress/commands": "^0.21.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/router": "^0.19.0", + "@wordpress/url": "^3.51.0" } }, "@wordpress/core-data": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-6.26.0.tgz", - "integrity": "sha512-RI3uf3gHnjNyHgMm72IQlk0k83FJAYmLOGUJM01NuMvsVIxDxp03rfvy3lCfNy1+BknknOYFhUaX88NKrizgNA==", + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-6.27.1.tgz", + "integrity": "sha512-Nbm0xkgkkyk67f2GtnlS5udxYqBQcLGoDIhWjNY2m+uguM/Fr4cv6QGIyb1tIcwEBIrZcAaAsS/eA1yro5ygHw==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/sync": "^0.11.0", - "@wordpress/undo-manager": "^0.9.0", - "@wordpress/url": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/sync": "^0.12.0", + "@wordpress/undo-manager": "^0.10.0", + "@wordpress/url": "^3.51.0", "change-case": "^4.1.2", "equivalent-key-map": "^0.2.2", "fast-deep-equal": "^3.1.3", @@ -38149,48 +38169,48 @@ } }, "@wordpress/customize-widgets": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/customize-widgets/-/customize-widgets-4.26.0.tgz", - "integrity": "sha512-xxJGoF3PkzqdrdUU/xU6ZDre0BDjPWJSBqLW6lwuDIvcVVxxhTnEAun3I1p6lXaOAOTlVixU6eSy2UY1B3LYLQ==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/customize-widgets/-/customize-widgets-4.27.1.tgz", + "integrity": "sha512-iRKhFIT98NI2p7Ga25YiMI9A0FOm0vWyq2vwd3/Qahm5wOlBmOJHRxAOhnY7MRWhqZQE8a9Mb63o/7Kupct0tw==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/block-library": "^8.26.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/interface": "^5.26.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/media-utils": "^4.40.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/widgets": "^3.26.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/block-library": "^8.27.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/interface": "^5.27.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/media-utils": "^4.41.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/widgets": "^3.27.1", "classnames": "^2.3.1", "fast-deep-equal": "^3.1.3" } }, "@wordpress/data": { - "version": "9.19.0", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-9.19.0.tgz", - "integrity": "sha512-j+kzP638QQ2t6/4KsIzLTPem+X/oZUkYGGT7boo51Ychs07uLfEdzubwSJVChyBq14zmiAulK7tLWQI52i7jOg==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-9.20.0.tgz", + "integrity": "sha512-3cm2te6NUj/X1zzmRO+WhueCanjocniX6sJFVzkg5mGXme6wFI8iSOnGPKlMkGcZGd0fVei1ydBKaIUMjrPBTQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/is-shallow-equal": "^4.49.0", - "@wordpress/priority-queue": "^2.49.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/redux-routine": "^4.49.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/is-shallow-equal": "^4.50.0", + "@wordpress/priority-queue": "^2.50.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/redux-routine": "^4.50.0", "deepmerge": "^4.3.0", "equivalent-key-map": "^0.2.2", "is-plain-object": "^5.0.0", @@ -38201,91 +38221,91 @@ } }, "@wordpress/data-controls": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-3.18.0.tgz", - "integrity": "sha512-Xmj7KASecmVTp+Jcwi74blF0XcBz8m3hibTVNUcmqudvCPxeBDRv1Dv8jftlQDabQp7TS4Vz+0JFvBln8BV4PA==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-3.19.0.tgz", + "integrity": "sha512-ceUK8kB8r8s8XFYlYWGVLuaoDJx5IAXND6q7B6MX1gKndqnSNi1766Q9iAEwOT9eVMai0lDLNq7mdK2ktVh4bw==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0" + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0" } }, "@wordpress/dataviews": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@wordpress/dataviews/-/dataviews-0.3.0.tgz", - "integrity": "sha512-54s6VIgMKIHiAb8+BClIB1mzLBlZ5l3srgZfdneajjnc34yMzrV8eu2TmvBseBT129oLRnCmV5lSD1cfnI6WFw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/dataviews/-/dataviews-0.4.0.tgz", + "integrity": "sha512-fVw+VBntjUMBQKhmJnlajw1jyS572D2VNGhD+TXJKk+fshPwpb8oM4Y71g+2V/f9X/DnIn0VmVKPFt3m/CJxVw==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/primitives": "^3.47.0", - "@wordpress/private-apis": "^0.31.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/primitives": "^3.48.0", + "@wordpress/private-apis": "^0.32.0", "classnames": "^2.3.1", "remove-accents": "^0.5.0" } }, "@wordpress/date": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.49.0.tgz", - "integrity": "sha512-mU5V8DlnHKa6bxn+90tEmqXdpsOrr5cX2+t6mf8Wp8avhsrxiC7+bVahneFy9xOAlDumhuFTHBJTFx70byIcbQ==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.50.0.tgz", + "integrity": "sha512-FhfaG6YRXWmni66RjwhCB7rQNlLJ05+qTa/jXrj2UNWDNv/sfZ6Ky+b/rKrrUnLaIs9pGiW1195cSxsAS4EY3w==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.49.0", + "@wordpress/deprecated": "^3.50.0", "moment": "^2.29.4", "moment-timezone": "^0.5.40" } }, "@wordpress/dependency-extraction-webpack-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-5.0.0.tgz", - "integrity": "sha512-b3j4yCB5dR04rIbZ73iHN5hMXL4kMUUoApY36Zs8AAREHpgCDTPp5vNqc67zg2bcnpDEhMUZ28DISwrY4z7weg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-5.1.0.tgz", + "integrity": "sha512-W2W+9JNAaGirAtGDSf83pjEKb63DLhgpJGgvMOpEPoRPtucgO6CCm3uMoNkJTpKoxJQ2tSZEymAhF/YdLm+ScQ==", "dev": true, "requires": { "json2php": "^0.0.7" } }, "@wordpress/deprecated": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.49.0.tgz", - "integrity": "sha512-NxBJl9IvcEK5U3Z4UB8NpBdAxLlz5L0JEcq8+95DroYYxWmcH5sYtYPgXg2YZ24DP5nSnC12ZqGJ4QPzkMNH/Q==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.50.0.tgz", + "integrity": "sha512-DL01l0Wlo3df9OcSGHP11Ot/nq0HytbdmD+iPkiCCRI6Xctepbs/DzRR2CO3qLrJkWn6RReFwZWZZjzI7lZUqg==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.49.0" + "@wordpress/hooks": "^3.50.0" } }, "@wordpress/dom": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.49.0.tgz", - "integrity": "sha512-Amx3xaR+TrQiO0lFlX/TCkHkoKlLjeDgzpGrc9PQ3X3rKyf/yrCFSlOOqAby6m99jdoAD3SF0x+T6u4wR9iaQg==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.50.0.tgz", + "integrity": "sha512-rMnV1ysGOHbKnmjLQYwGkT1co1iEkC3YsKrEObP8mklw1R7rbCy7fc2brIz7kqcHU1DRyg/+7wOCMkg8a/EV/Q==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.49.0" + "@wordpress/deprecated": "^3.50.0" } }, "@wordpress/dom-ready": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.49.0.tgz", - "integrity": "sha512-2ZkHU/EzsR5gzTkmnA3QFFxKqXBs2YqWan6Q6eylM8SUG/Iz6r1aUkmV5OiOHJ9Z/TPJQUpPb0L4u+Ur39m7cQ==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.50.0.tgz", + "integrity": "sha512-97tJpat1emXnwfGlJMiG6p37CpHJXDLmM/SIbsGJ0Oj8P4/TXbTuE9DNT1H8B1wKe5zD7kICjp48y91ugmgSrQ==", "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/e2e-test-utils": { - "version": "10.20.0", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-10.20.0.tgz", - "integrity": "sha512-WpXu8h1KpYxwbQ6tV9Ar7TNJPEZAxYhbP5is9bUtuwI8VhRPPWagcljeofsdqSxjLV80E2s8/b/Ll71/t8fZfA==", + "version": "10.21.0", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-10.21.0.tgz", + "integrity": "sha512-Oh62GkqAKBIyD0IO3/Oa0l42yL/jbpTRDyh8H+t6gZbHWYTDvEGEr/LOqI9bk5Lwk7Jt5jpN6136FDwyMzHSXw==", "dev": true, "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/url": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/url": "^3.51.0", "change-case": "^4.1.2", "form-data": "^4.0.0", "node-fetch": "^2.6.0" @@ -38305,14 +38325,14 @@ } }, "@wordpress/e2e-test-utils-playwright": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-0.17.0.tgz", - "integrity": "sha512-WuyorK1PL4r0LtxdhwF8u31s/O7+reuU906dnM3pu6SKSPsyfhXi8O1hgQO4/VASooHygUbsn7PW0GaDdCamOA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-0.18.0.tgz", + "integrity": "sha512-Z8uH1dUzy/STQjOU6eb9nquVK4RC1rUx0gXY/GN1IVNDJvGN/yJxT/gNKmfiL7KpmHvNp2Q5M4bnUT9uiNcM+Q==", "dev": true, "requires": { - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/url": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/url": "^3.51.0", "change-case": "^4.1.2", "form-data": "^4.0.0", "get-port": "^5.1.1", @@ -38341,92 +38361,92 @@ } }, "@wordpress/edit-post": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-7.26.0.tgz", - "integrity": "sha512-/ZY5QBvsIOru1xJn/5jJDXchr/wIinchS0ERcJLgoXAT/i0+z1RjELkWEumsI3tAaBzV5om0AtXB2jRPMGhxAg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-7.27.1.tgz", + "integrity": "sha512-cXwDCU23AbkQhOYueAYN/g5USSX4BBvB2MueAJUc5iusL9boJzowAkkxRoGBBt5KZiSfseTGsHepmtEGG7X0Fg==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/block-library": "^8.26.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/commands": "^0.20.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-commands": "^0.18.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/editor": "^13.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/interface": "^5.26.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/media-utils": "^4.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/plugins": "^6.17.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/url": "^3.50.0", - "@wordpress/viewport": "^5.26.0", - "@wordpress/warning": "^2.49.0", - "@wordpress/widgets": "^3.26.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/block-library": "^8.27.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/commands": "^0.21.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-commands": "^0.19.1", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/editor": "^13.27.1", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/interface": "^5.27.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/media-utils": "^4.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/plugins": "^6.18.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/url": "^3.51.0", + "@wordpress/viewport": "^5.27.0", + "@wordpress/warning": "^2.50.0", + "@wordpress/widgets": "^3.27.1", "classnames": "^2.3.1", "memize": "^2.1.0", "rememo": "^4.0.2" } }, "@wordpress/edit-site": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/edit-site/-/edit-site-5.26.0.tgz", - "integrity": "sha512-jiNjBsdfUM+p3vL1q+tH6+igfCIi+Pr42IsYCj10SvAOGiChRKphE46mxsAfPaNiQhc7qQUEczYMNOAphY5I1g==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/edit-site/-/edit-site-5.27.1.tgz", + "integrity": "sha512-jl8nuCP4BwdI2PiYTQHDxUqXRIdDYV8PpMHkPEXPRrLPe/uJ6YnQqFj4zJb+0sGcDSBcUqEjZwfpd0evnqGiQw==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/block-library": "^8.26.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/commands": "^0.20.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-commands": "^0.18.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/dataviews": "^0.3.0", - "@wordpress/date": "^4.49.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/editor": "^13.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/escape-html": "^2.49.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/interface": "^5.26.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/media-utils": "^4.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/patterns": "^1.10.0", - "@wordpress/plugins": "^6.17.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/primitives": "^3.47.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/reusable-blocks": "^4.26.0", - "@wordpress/router": "^0.18.0", - "@wordpress/style-engine": "^1.32.0", - "@wordpress/url": "^3.50.0", - "@wordpress/viewport": "^5.26.0", - "@wordpress/widgets": "^3.26.0", - "@wordpress/wordcount": "^3.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/block-library": "^8.27.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/commands": "^0.21.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-commands": "^0.19.1", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/dataviews": "^0.4.0", + "@wordpress/date": "^4.50.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/editor": "^13.27.1", + "@wordpress/element": "^5.27.0", + "@wordpress/escape-html": "^2.50.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/interface": "^5.27.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/media-utils": "^4.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/patterns": "^1.11.1", + "@wordpress/plugins": "^6.18.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/primitives": "^3.48.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/reusable-blocks": "^4.27.1", + "@wordpress/router": "^0.19.0", + "@wordpress/style-engine": "^1.33.1", + "@wordpress/url": "^3.51.0", + "@wordpress/viewport": "^5.27.0", + "@wordpress/widgets": "^3.27.1", + "@wordpress/wordcount": "^3.50.0", "change-case": "^4.1.2", "classnames": "^2.3.1", "colord": "^2.9.2", @@ -38440,77 +38460,77 @@ } }, "@wordpress/edit-widgets": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/edit-widgets/-/edit-widgets-5.26.0.tgz", - "integrity": "sha512-79VEDPhl6l4OVNxJKB2opue5fsWdXfdZzQTf92SBMgdDo7oXKg5dQZWThGIAkC0SQaEmGzfJEk5QQ/1I55RXfw==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/edit-widgets/-/edit-widgets-5.27.1.tgz", + "integrity": "sha512-MTiIujW4KGTbJrlyglzIfm19rIVqK+Ny1rcBV8A1AM2rJc2vOjFyzlkGH+MkesrUHu4R4CUwzFyCRrPC/+VImA==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/block-library": "^8.26.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/interface": "^5.26.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/media-utils": "^4.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/patterns": "^1.10.0", - "@wordpress/plugins": "^6.17.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/reusable-blocks": "^4.26.0", - "@wordpress/url": "^3.50.0", - "@wordpress/widgets": "^3.26.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/block-library": "^8.27.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/interface": "^5.27.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/media-utils": "^4.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/patterns": "^1.11.1", + "@wordpress/plugins": "^6.18.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/reusable-blocks": "^4.27.1", + "@wordpress/url": "^3.51.0", + "@wordpress/widgets": "^3.27.1", "classnames": "^2.3.1", "rememo": "^4.0.2" } }, "@wordpress/editor": { - "version": "13.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-13.26.0.tgz", - "integrity": "sha512-EeJ8UNTspLdMsh1bYWMsV3ODOSVOsubhyz0SATEKmP3Cqra1hXwgzPdLyZg22cXlu7x3XX7tmu8Se9wV6B3SMg==", + "version": "13.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-13.27.1.tgz", + "integrity": "sha512-n8DwCqEGqXyPg/+2YBsoaUR9rWbXwB/YexbPdmRwCpWPzxPFDOz/nHBZwez1E24ty50YsBW8NTkXUaarpPkHJQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/commands": "^0.20.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/date": "^4.49.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/dom": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/keyboard-shortcuts": "^4.26.0", - "@wordpress/keycodes": "^3.49.0", - "@wordpress/media-utils": "^4.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/patterns": "^1.10.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/reusable-blocks": "^4.26.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/server-side-render": "^4.26.0", - "@wordpress/url": "^3.50.0", - "@wordpress/wordcount": "^3.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/commands": "^0.21.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/date": "^4.50.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/dom": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/keyboard-shortcuts": "^4.27.0", + "@wordpress/keycodes": "^3.50.0", + "@wordpress/media-utils": "^4.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/patterns": "^1.11.1", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/reusable-blocks": "^4.27.1", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/server-side-render": "^4.27.1", + "@wordpress/url": "^3.51.0", + "@wordpress/wordcount": "^3.50.0", "classnames": "^2.3.1", "date-fns": "^2.28.0", "memize": "^2.1.0", @@ -38520,14 +38540,14 @@ } }, "@wordpress/element": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-5.26.0.tgz", - "integrity": "sha512-pYZ2OsFgDN00amTxPoC7BtlkVtVBeLS/Y1+P1Mlu0CX+gHDP0Il9SUaLVEIAewLnZMN+O3ph3H5nfR0yKkSnAA==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-5.27.0.tgz", + "integrity": "sha512-IA5LTAfx5bDNXULPmctcNb/04i4JcnIReG0RAuPgrZ8lbMZWUxGFymh10PEQjs7ZJ++qGsI6E+6JISpjkRaDQQ==", "requires": { "@babel/runtime": "^7.16.0", "@types/react": "^18.0.21", "@types/react-dom": "^18.0.6", - "@wordpress/escape-html": "^2.49.0", + "@wordpress/escape-html": "^2.50.0", "change-case": "^4.1.2", "is-plain-object": "^5.0.0", "react": "^18.2.0", @@ -38535,24 +38555,24 @@ } }, "@wordpress/escape-html": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.49.0.tgz", - "integrity": "sha512-JmVm6IWr5EhXU5m7LCwMOiSv90qJU1l8Q2xlBCQ+0bIPcWRjsHX9pFKDOJvQ6D55W/CTGO1GQk50uolktTeTtw==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.50.0.tgz", + "integrity": "sha512-hBvoMCEZocziZDGCmBanSO+uupnd054mxd7FQ6toQ4UnsZ4JwXSmEC72W2Ed+cRGB1DeJDD0dY9iC0b4xkumsQ==", "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/eslint-plugin": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-17.6.0.tgz", - "integrity": "sha512-piANQS5eaSPmpzPXdNZdXbKcHjAyXbuHeUd9ctVA+6sOMVay70+ICQj7Isu4o61Wv43KtxugQoa2PSBqVtrRKA==", + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-17.7.0.tgz", + "integrity": "sha512-JSFaCogE0WlZpl0SV4q8DK8G6jwDjEzXRzOsgesWilea4OuVp1KxCamkddTorRNM3QAbjrGuPJ4NYaGrNG9QsA==", "dev": true, "requires": { "@babel/eslint-parser": "^7.16.0", "@typescript-eslint/eslint-plugin": "^6.4.1", "@typescript-eslint/parser": "^6.4.1", - "@wordpress/babel-preset-default": "^7.33.0", - "@wordpress/prettier-config": "^3.6.0", + "@wordpress/babel-preset-default": "^7.34.0", + "@wordpress/prettier-config": "^3.7.0", "cosmiconfig": "^7.0.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.25.2", @@ -38579,48 +38599,48 @@ } }, "@wordpress/format-library": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/format-library/-/format-library-4.26.0.tgz", - "integrity": "sha512-ntIyOuctTSPIoAVh3YkLoNHAUTbyYj7P0vtNPAosTvtYYK0bW62K8gOhGeU1ghuTCGnmS7LowsfIUOk7Vab60Q==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/format-library/-/format-library-4.27.1.tgz", + "integrity": "sha512-+jdmGf8cPk6jCZcndI/kqeaf6YYQCIjBYTgBJsUUOP92HTIDq6pAECH8XqBX2n2V+QX4WirXwBvjkZ5IgjPVvg==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/rich-text": "^6.26.0", - "@wordpress/url": "^3.50.0" + "@wordpress/a11y": "^3.50.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/rich-text": "^6.27.0", + "@wordpress/url": "^3.51.0" } }, "@wordpress/hooks": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.49.0.tgz", - "integrity": "sha512-GH546Jg8u/rw9I3fsvAhidwt8rUFNmkdXGByIPGsN3R6y+QwWMXPzsnoYdFmFOmDK9gOGCRDe5bXHikoWnaiKA==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.50.0.tgz", + "integrity": "sha512-YIhwT1y0ss7Byfz46NBx08EUmXzWMu+g5DCY7FMuDNhwxSEoZMB8edKMiwNmFk4mFKBCnXM1d5FeONUPIUkJwg==", "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/html-entities": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.49.0.tgz", - "integrity": "sha512-t9/eKhm/JBoRGze9hQOmQPO8TNOjLgIHFGzvca0MSurrR2C0Gy4eVxE/FFHtLBctN8fcgAghhQP06y1lZZ7FfQ==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.50.0.tgz", + "integrity": "sha512-DBRgShv6FLtDpapoTgmEx//6uHeq+mk5zKhAWAAqu6+/6LqOm/TCoUTxb0E2xtHh4oRBgU5nYC92pObRaczFdQ==", "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/i18n": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.49.0.tgz", - "integrity": "sha512-8aZmmRfOHzS/3pMWg+4f6QlPci0wK5V+PDllAwtwFFrXgc0pmk8VXu7Quajh1tiVoIQDCZpK6h1sqa+qrCLpZg==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.50.0.tgz", + "integrity": "sha512-FkA2se6HMQm4eFC+/kTWvWQqs51VxpZuvY2MlWUp/L1r1d/dMBHXu049x86+/+6yk3ZNqiK5h6j6Z76dvPHZ4w==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.49.0", + "@wordpress/hooks": "^3.50.0", "gettext-parser": "^1.3.1", "memize": "^2.1.0", "sprintf-js": "^1.1.1", @@ -38628,57 +38648,66 @@ } }, "@wordpress/icons": { - "version": "9.40.0", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.40.0.tgz", - "integrity": "sha512-NSbhur14Ypr+hbgp848430cmk2AHZ7E2e9zvj8917ZjhrVCD7zYT590hOspswJZEaFxJdY3QSnegGiBSI/MacQ==", + "version": "9.41.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.41.0.tgz", + "integrity": "sha512-L4fp9ZdxGBpMk3o2YqABgiPHNoHyu9Enid7JNkCdWP8iUgk7dEiDvo/XoiWPTAeNbF6W8Nqu54635mq01es0NQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/element": "^5.26.0", - "@wordpress/primitives": "^3.47.0" + "@wordpress/element": "^5.27.0", + "@wordpress/primitives": "^3.48.0" } }, "@wordpress/interactivity": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/interactivity/-/interactivity-3.2.0.tgz", - "integrity": "sha512-x4YPuBee7uOjwYB5Ncc5zsLKae6PZjN0Dy+DCZ6rMik1lUPTP4XjHrbCj7jx2FoH/5ApgBHnGy2Ql//l64wCuQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/interactivity/-/interactivity-4.0.0.tgz", + "integrity": "sha512-+KIzJVcz5Z0a/CeMBY7DEFsXCeEd+/gDYgQwWY7W7/nUwr5frT4X+i760Yv8J40JN8IMaQeKStcGEcm62C7jjg==", "requires": { - "@preact/signals": "^1.1.3", - "deepsignal": "^1.3.6", - "preact": "^10.13.2" + "@preact/signals": "^1.2.2", + "deepsignal": "^1.4.0", + "preact": "^10.19.3" + } + }, + "@wordpress/interactivity-router": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/interactivity-router/-/interactivity-router-1.0.0.tgz", + "integrity": "sha512-q+ulJGYFCX+CGTdGHraZvbpB+jsv0tYSEEV6mWsKU7ujj+NelPa5ngL9XbyGTAOEZqOauWQ/4H3SP9k25u6iQg==", + "requires": { + "@wordpress/interactivity": "^4.0.0" } }, "@wordpress/interface": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-5.26.0.tgz", - "integrity": "sha512-5Zt7e1Y4JYzJaXC8JQlX2RXmZCOUPoe7CamG+MwJDvtLtssL368Ar6aQVVhWB+2MVfl28OH9jQHI/mKCC7GpaA==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-5.27.0.tgz", + "integrity": "sha512-ZybF4tuuuFOgGsB0n9u5ajrWKf/PYaS8d2yu2T+6ukliLnXI6AMMCXvM534H0VZa7DMLjMYKRXtfs7QqR/p95Q==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/plugins": "^6.17.0", - "@wordpress/preferences": "^3.26.0", - "@wordpress/viewport": "^5.26.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/plugins": "^6.18.0", + "@wordpress/preferences": "^3.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/viewport": "^5.27.0", "classnames": "^2.3.1" } }, "@wordpress/is-shallow-equal": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.49.0.tgz", - "integrity": "sha512-cEII2Ik+qRNsU1lzGjBo0gtSFCNFlMvauPda4+F4U1H3mBPCq+zLm8vHLHtybwq2Dh32OsA/5NWWTbW8rRrdfg==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.50.0.tgz", + "integrity": "sha512-lX0fMa1f/TwWYYF+Oj0MG2Eze4Bb+vsnhXX6X1l+Ri3PG34wWGonjq729qHbJRDwm8o1y9GeswCgESIpuAm9wg==", "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/jest-console": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-7.20.0.tgz", - "integrity": "sha512-EXexYwBLaJSpSCUwpQeSqjJ9G7KDkzH+oCfiZp4ZYuemmCaJFOn8/HOLwfLU0o7i0bfYFAjt8lSVCr5HiYY0AA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-7.21.0.tgz", + "integrity": "sha512-o2vZRlwwJ6WoxRwnFFT5iZzfdc2d9MZvrtwB093RWPNcyK5qVtApji4VN/ieHijB4bjEHGalm0UKfKpt0EDlUQ==", "dev": true, "requires": { "@babel/runtime": "^7.16.0", @@ -38686,204 +38715,207 @@ } }, "@wordpress/jest-preset-default": { - "version": "11.20.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-11.20.0.tgz", - "integrity": "sha512-3x2ua/rc0540zfLOrHbfdrEOwS5xWPbX5/f2LUyM2T6zzmhXrnqG2WFdhftFFLAUhC8cbxuy1WNnrzgjUxGeDQ==", + "version": "11.21.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-11.21.0.tgz", + "integrity": "sha512-XAztKOROu02iBsz+Qosv/RYuPWB1XwwlU+FiA5Y68tRztrqFy4b/il+DFg4Jue/zXF7UECWUvosd5ow/GmKa6Q==", "dev": true, "requires": { - "@wordpress/jest-console": "^7.20.0", + "@wordpress/jest-console": "^7.21.0", "babel-jest": "^29.6.2" } }, "@wordpress/keyboard-shortcuts": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-4.26.0.tgz", - "integrity": "sha512-ijCDTSKmWUP4sanucgrOqhSaxqBE1nbR2FzBEITSSfh2x1i0IK5rzF5BL3waV4mWKuSe0UmpPz5vnqKvijc+Ug==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-4.27.0.tgz", + "integrity": "sha512-mpYhaSAMHXbRMp9hP08LejX/u1nLQaZONhwGSytqIhN1DQwpBbNbmV8ZNm1dnevUsYqEfPVVov6HFyPxYQ6m4w==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/keycodes": "^3.49.0", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/keycodes": "^3.50.0", "rememo": "^4.0.2" } }, "@wordpress/keycodes": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.49.0.tgz", - "integrity": "sha512-Hg+kUTV/ti+CyG4+D3dmRFMmrE45E2QEv7ZKaeIf+t1wlafekLSDwIpdF7e68HxEMmZSzHmLm7bHqQTNjxAoKQ==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.50.0.tgz", + "integrity": "sha512-ykWpyCbgwcaT8i5kSfotYtd2oOHyMDpWEYR73InYrzEhl7pnS3wD7hi/KfeKLvMfYhbysUXlCVr6q/oH+qK/DQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.49.0" + "@wordpress/i18n": "^4.50.0" } }, "@wordpress/list-reusable-blocks": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/list-reusable-blocks/-/list-reusable-blocks-4.26.0.tgz", - "integrity": "sha512-oM58hL3cgHD1jffVI80qrFQP1ATtiarwoNL3GnQ+keqIlP6DLEGvqNFtTzXK68ymywuS1GHG5IkfOfAxzbZbcQ==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/list-reusable-blocks/-/list-reusable-blocks-4.27.0.tgz", + "integrity": "sha512-szDQnIdU34yIvNel+Kk1oBOugiqwXNm4jF77T90kaWB/SIQFW80CFYoIjIYQc63r9v3wi0D483KpXoci1AUSeQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", "change-case": "^4.1.2" } }, "@wordpress/media-utils": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-4.40.0.tgz", - "integrity": "sha512-rr9hRq3dLMpg7QN4jd99i2AEKKD8I0XNx7+RmfHF93zNiaMaIogPaQB+UQBgPpLllptU0e3ZMPWwIINnkJkkuQ==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-4.41.0.tgz", + "integrity": "sha512-wCxk8DAhmZ/3/a+oPRrieGurMOKDrYoDnnA0jhTm2D45kvn9y+NfnNBvLo2q1Is1ZiVTtNq54IRUXcdOjZgR9A==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blob": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0" + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blob": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0" } }, "@wordpress/notices": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-4.17.0.tgz", - "integrity": "sha512-EH7f4YDQUtuY+UlS8OIv0bjXXK+SGMGPQNlecSKFoP3QBoXZy5zhVDAfr4vewPE19t3gWaf22zPtF0NTl06a2g==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-4.18.0.tgz", + "integrity": "sha512-Y2XpY6niJ7NuqPBtGYvDYSPCfw/y4yxv60ahu1kYd8r5BamKSchTYwKSnV0yrx/IUfNO04VAsNq9NCUQG12pRA==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/data": "^9.19.0" + "@wordpress/a11y": "^3.50.0", + "@wordpress/data": "^9.20.0" } }, "@wordpress/npm-package-json-lint-config": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.34.0.tgz", - "integrity": "sha512-mknDw+d5HIfx/1DyrhkbLJNu8XsmUEjc1SsYSgF2XCP20/khpO7YOi0LWn9uQ2QXWZrlhMc7JKSSOcTs0aLphQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.35.0.tgz", + "integrity": "sha512-QmkhYM4/s+2r3RuolVRRmoUa5o3lFgcHA6I3A9akaSVGZr//4p2p+iXOGmNub9njgGlj7j8SAPN8GUsCO/VqZQ==", "dev": true }, "@wordpress/nux": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wordpress/nux/-/nux-8.11.0.tgz", - "integrity": "sha512-nnfVkn476gn/OQeAydswF5LGqCba262aZxlw6uIDyM0zClCnE13iKVZS68cnTQjHhS0w32jaaf9Lyg3KzZOJPw==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@wordpress/nux/-/nux-8.12.0.tgz", + "integrity": "sha512-fMnm9f+lmaCV5YoRHjqQNVU0P+FxthY8Lt84ZW1owlPjpJqdYZX/bKtp+bfWFgR3/Th26/uO4WxZqQzj8V1Pjg==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", "rememo": "^4.0.2" } }, "@wordpress/patterns": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@wordpress/patterns/-/patterns-1.10.0.tgz", - "integrity": "sha512-TzHTmlbmQPUfrOIWmxKtN7L1Y1M5Qynt9/IRjscWDB9gUEpEiBwVR7mOPMh9kov32MyPIxHy9EnQD112zsaPbA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@wordpress/patterns/-/patterns-1.11.1.tgz", + "integrity": "sha512-fC05YOVXcCJA5iAqxgkoMuDR01TcOCgIBYuQdoLgmYMowaV060CHf4qRh79J7979ed/WHjg2UQR6sA5eJx+Z+Q==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/html-entities": "^3.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/url": "^3.50.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/html-entities": "^3.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/url": "^3.51.0", "nanoid": "^3.3.4" } }, "@wordpress/plugins": { - "version": "6.17.0", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-6.17.0.tgz", - "integrity": "sha512-ZwrJ7L0S45SxZmTWvWc+IgSEWj6HqCtVtdg2CRxRGbyfRV1zwqeEtofNQWRE3z1plZqeUOx/+hVjTiGmkUC+Pg==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-6.18.0.tgz", + "integrity": "sha512-m2BRJ5BApIMwT2Ck5E5yD8pS3RiIoOvWhzsYWrRqRfwjRhc6K46BreCbkiHgduBaFgzDIWpujlUHkYtdl27RoQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/element": "^5.26.0", - "@wordpress/hooks": "^3.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/is-shallow-equal": "^4.49.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/element": "^5.27.0", + "@wordpress/hooks": "^3.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/is-shallow-equal": "^4.50.0", "memize": "^2.0.1" } }, "@wordpress/postcss-plugins-preset": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-4.33.0.tgz", - "integrity": "sha512-RqKNf8XQTdae0cXO11l6mBw+A3IOEO9dd4sD70g15e4IltrbwuxqwOT5k9muNteUszTCOQKgWgD8gp1KM2/lvQ==", + "version": "4.34.0", + "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-4.34.0.tgz", + "integrity": "sha512-OLQBSLE2q11Ik+WdcO2QfGr/O4X/zJYOGXNsychx/EaMamLzJInFcRL6kGbPX41zPINhadq5x2vFIZI2EC+Uyg==", "dev": true, "requires": { - "@wordpress/base-styles": "^4.40.0", + "@wordpress/base-styles": "^4.41.0", "autoprefixer": "^10.2.5" } }, "@wordpress/preferences": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/preferences/-/preferences-3.26.0.tgz", - "integrity": "sha512-8fXN9T1sh9g6kl3ta0BWlZKeqlvMGj2VhNd564zZdfOsEojW1Fhq2RoLahcp2BnMmSojdgPCSQQ8O2IdirwDyA==", + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/preferences/-/preferences-3.27.0.tgz", + "integrity": "sha512-LMhOHX5FI4CJHv2YhtpiEtHfLqL/pjKAMja/v7skkHPlrh64Sgzi/gep016/My5SjcR64JUD1Na2U2j/BnrBNQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/components": "^25.15.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/private-apis": "^0.32.0", "classnames": "^2.3.1" } }, "@wordpress/preferences-persistence": { - "version": "1.41.0", - "resolved": "https://registry.npmjs.org/@wordpress/preferences-persistence/-/preferences-persistence-1.41.0.tgz", - "integrity": "sha512-Gg7R6agqW2aIseGEa1diKJLjppPk2w+Sjnsq53vs0PmEjc8vKCSTvCArIQ9RmRQANWdcvJX6FJurQzqpgUo4sw==", + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/@wordpress/preferences-persistence/-/preferences-persistence-1.42.0.tgz", + "integrity": "sha512-n/VBhZHUEXWoBGsvHUf5uq6b872Lzn+cenfB2ex/etcWLXiVUkEl3rlzocyS50g2YoNQg/zQOn1hoSh+AgCm8Q==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0" + "@wordpress/api-fetch": "^6.47.0" } }, "@wordpress/prettier-config": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-3.6.0.tgz", - "integrity": "sha512-51GuCeeEGOi4qsMpzGFBmKbqEUKLqWj3eZDIwATymUaHsJPx9oT93dlIP97MqKIaWjxlhxCMt5RjxcCNT7Pckw==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-3.7.0.tgz", + "integrity": "sha512-JRTc5p7UxtcPkqdSDXSFJoJnVuS510uiRVz8anXEl5nuOx5p+SJAzi9QPrxTgOE8bN3wRABH4eIhfOcta4CFdg==", "dev": true }, "@wordpress/primitives": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.47.0.tgz", - "integrity": "sha512-ho4XrOI9PTGmQhgEYHuRBfgnPzPuq2zXJpQa2GCrbhm4fojLmZ7oWVBzrL2cGtFGD6dJhY3dbY+l+rNs97A2TA==", + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.48.0.tgz", + "integrity": "sha512-uBoMxpl+FiZF6aRXH/+Hwol4EAL6QqlNSaGF1IzEwklFzdRF1m5wTM4vh21w8Bq7lgxiuAqyueY7X5u32v+zPw==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/element": "^5.26.0", + "@wordpress/element": "^5.27.0", "classnames": "^2.3.1" } }, "@wordpress/priority-queue": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.49.0.tgz", - "integrity": "sha512-KuFKPfjdKJe7VHAuIW7+1FV4nh6NRR97uGxb02unaVKOhVQmYFkCtk02KI6e63sLrqwLAKVt8Dolzd/94oYERg==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.50.0.tgz", + "integrity": "sha512-21E842EVFYUd1ZrNTLAW57IyloDCUZr6h1Te6BgqKoeKOEteoTQwA9BemMzZJUiThUSZymW94ot0Omb+C8VX2g==", "requires": { "@babel/runtime": "^7.16.0", "requestidlecallback": "^0.3.0" } }, "@wordpress/private-apis": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-0.31.0.tgz", - "integrity": "sha512-Hx2LJfkgbeAixXHDvi/rBly4+mShhrJfYXwyh6uTLnXkjp6OcPuBbCXhIfARw45lNdiqWdHoqXcAl1RTBFFd4g==", + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-0.32.0.tgz", + "integrity": "sha512-P7nxI/bGMDQhtlTfSe1Y2SDfrd20K5UMnTHbq+hmIkzBGRpNPbdGeNu2bZaZtIvmXk1OCR0Fkef+e6QqkOfYPg==", "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/redux-routine": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.49.0.tgz", - "integrity": "sha512-uXsU3ZEJoDkyqGYlMfvjgfZpoVYbOOUJMHTL8EHQ2yC9JwBoyWz9kWXAn4cal2LJY0cifQdFwmGOp4nEidne2g==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.50.0.tgz", + "integrity": "sha512-giHjQYhmFDCpeNEnsZKP0JNPBnpuQwsoxLmHAUUSNFWAmd4rtnNnG6M8HuqOLmgYTvEa8Hlx3Bl+reTGvrtI2g==", "requires": { "@babel/runtime": "^7.16.0", "is-plain-object": "^5.0.0", @@ -38892,73 +38924,73 @@ } }, "@wordpress/reusable-blocks": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-4.26.0.tgz", - "integrity": "sha512-RTHkbzsOXQdRW59MtMyWZwMc/VpL1gkrpAao1SXr1c+VY1aW7S59mfSLOOkhW71T/8UKOZPRneRSkF6iMn4nKg==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-4.27.1.tgz", + "integrity": "sha512-Q+mzjIZqoSLwFihpQzn4kApxj3/Rp+vLDPc2cUm41+L6belpSqXxvxrcB5gr/wjStTQKCLzZRptgvt/fG90OdQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/notices": "^4.17.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/url": "^3.50.0" + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/notices": "^4.18.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/url": "^3.51.0" } }, "@wordpress/rich-text": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-6.26.0.tgz", - "integrity": "sha512-qKb4tctDW3akaMuil0Kwlr8E3C6WyltyLXxb4f0Se6Buq+rODa7JeCr2aDtG5LfZh+GFLN8tAZlPgzLIgzDziA==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-6.27.0.tgz", + "integrity": "sha512-B7t++SldcI4nb+lO2m9oEdyD8y2FbH5DKY5F2G3xpcEnw4EKSt4SsTzeclMQ/2zzlEHPRKU/IR29SeOIJ1H8JQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.49.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/escape-html": "^2.49.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/keycodes": "^3.49.0", + "@wordpress/a11y": "^3.50.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/escape-html": "^2.50.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/keycodes": "^3.50.0", "memize": "^2.1.0", "rememo": "^4.0.2" } }, "@wordpress/router": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/router/-/router-0.18.0.tgz", - "integrity": "sha512-EmPgcihDOhCqXjm7eWb6HTTBQhEL9Y+Hhbfj5gHy9sg7v4fd19nJ09v4Rqmluj2vwxRBz2/ke4jfM3+AxtSmug==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@wordpress/router/-/router-0.19.0.tgz", + "integrity": "sha512-S2z4WrgrfMNAl6amIjekGV1V6XGnjolYmRgUH/VTN45CQUV/o5ABo04xI/L3uvUnaRpH022n/yQX5H1p1kKhdA==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/element": "^5.26.0", - "@wordpress/private-apis": "^0.31.0", - "@wordpress/url": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/private-apis": "^0.32.0", + "@wordpress/url": "^3.51.0", "history": "^5.1.0" } }, "@wordpress/scripts": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-27.0.0.tgz", - "integrity": "sha512-WXZPvgOaFCK1ZBov99lOOWE5Nl/eDMGTnx0sTsE1FcgAOVgKwaKvDCsRWYqYmf1O3aAhud0+YPIJyewbIHOQdQ==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-27.1.0.tgz", + "integrity": "sha512-jewyOxqaNrsct5R1NXv2lT8CA70vzrvpdZHYERCcH9LzKuvrcc32Telm9Jqso6ay1ZgHeIbjHSCd2+r2sBG7hw==", "dev": true, "requires": { "@babel/core": "^7.16.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", "@svgr/webpack": "^8.0.1", - "@wordpress/babel-preset-default": "^7.33.0", - "@wordpress/browserslist-config": "^5.32.0", - "@wordpress/dependency-extraction-webpack-plugin": "^5.0.0", - "@wordpress/e2e-test-utils-playwright": "^0.17.0", - "@wordpress/eslint-plugin": "^17.6.0", - "@wordpress/jest-preset-default": "^11.20.0", - "@wordpress/npm-package-json-lint-config": "^4.34.0", - "@wordpress/postcss-plugins-preset": "^4.33.0", - "@wordpress/prettier-config": "^3.6.0", - "@wordpress/stylelint-config": "^21.32.0", + "@wordpress/babel-preset-default": "^7.34.0", + "@wordpress/browserslist-config": "^5.33.0", + "@wordpress/dependency-extraction-webpack-plugin": "^5.1.0", + "@wordpress/e2e-test-utils-playwright": "^0.18.0", + "@wordpress/eslint-plugin": "^17.7.0", + "@wordpress/jest-preset-default": "^11.21.0", + "@wordpress/npm-package-json-lint-config": "^4.35.0", + "@wordpress/postcss-plugins-preset": "^4.34.0", + "@wordpress/prettier-config": "^3.7.0", + "@wordpress/stylelint-config": "^21.33.0", "adm-zip": "^0.5.9", "babel-jest": "^29.6.2", "babel-loader": "^8.2.3", @@ -39328,45 +39360,45 @@ } }, "@wordpress/server-side-render": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-4.26.0.tgz", - "integrity": "sha512-14b7aB9lc6SAlF+D1v0rR8SCK6PsySSmZcP14hV6HaIITftrlYTtNDWXV0Nq8umw/BVKbyHIY7BD+QmufkEciw==", + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-4.27.1.tgz", + "integrity": "sha512-hovofyT0z75NSK/CSkkSbbTdkq9Afc1MKbEVGXTGpqq5sKOa7IAcxWjzmh8byTgT8x7GEaAyHZUr31p4l0CGnQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/deprecated": "^3.49.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/url": "^3.50.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/deprecated": "^3.50.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/url": "^3.51.0", "fast-deep-equal": "^3.1.3" } }, "@wordpress/shortcode": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.49.0.tgz", - "integrity": "sha512-4E+CQTj+MWqmYGqyPGUddKX2JgNpMIA6MrTZOQ4MEJp3VIxkLubzIwORfDZ6rlXD8PJ3kvMMivzB1MZ2svnX3Q==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.50.0.tgz", + "integrity": "sha512-RnlqS2OsNUaI6VOLwyUiaL3trAJcWjtoiW21BjIXODbTkEreRJgBJnch7wdFpGimJmKIWBwRD8jQ4hdTND8xVw==", "requires": { "@babel/runtime": "^7.16.0", "memize": "^2.0.1" } }, "@wordpress/style-engine": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/@wordpress/style-engine/-/style-engine-1.32.0.tgz", - "integrity": "sha512-0Z3DjiUuwxH9t4P085EFXo+fCT+znOYNwEf59bn6e8jRxlQx7t88ecH8hlzQNswpYj0pKBzXQCUsJsxglZYv3g==", + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/@wordpress/style-engine/-/style-engine-1.33.1.tgz", + "integrity": "sha512-mkur1jw3Trz76iwxU6DalTFsJyF5P/NTdU9xniMT8bo1H9HspgKrzqXAaxkTL9F9BXkyiYs+ctVekJYRUKlgcw==", "requires": { "@babel/runtime": "^7.16.0", "change-case": "^4.1.2" } }, "@wordpress/stylelint-config": { - "version": "21.32.0", - "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-21.32.0.tgz", - "integrity": "sha512-cmrzU55alv+OZu1fXBC2eZGgJIUwyD47TSDDP7l0o9yF6D/w0am7FxC9ungk/S2uK1oatN05nIPsFSTkuHQSzg==", + "version": "21.33.0", + "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-21.33.0.tgz", + "integrity": "sha512-DwjXrjRBva0tkYILvDV7rjl3VaKXxvchlxnFfFs6l2DWL/Qo31CJ+f2rVw4XSWuuWxY1EsyIn9tOBS9URloWTQ==", "dev": true, "requires": { "stylelint-config-recommended": "^6.0.0", @@ -39374,13 +39406,13 @@ } }, "@wordpress/sync": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@wordpress/sync/-/sync-0.11.0.tgz", - "integrity": "sha512-690oDaDUYWX3sBeHsOlXyreRFgFzVrb+GO6Vo74lUbx0zdI0sNJeX7blBSn3QvZcysN0cAvCRO1sciJinD4e5A==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@wordpress/sync/-/sync-0.12.0.tgz", + "integrity": "sha512-45gU1Gu/ys3zqYO4dDQf6eG5gGgJK9nXa62IUtUWFXIH4FN29XlvGppMVK/zzhJwejF/XnDuT7mQuVEFCZGswA==", "requires": { "@babel/runtime": "^7.16.0", "@types/simple-peer": "^9.11.5", - "@wordpress/url": "^3.50.0", + "@wordpress/url": "^3.51.0", "import-locals": "^2.0.0", "lib0": "^0.2.42", "simple-peer": "^9.11.0", @@ -39391,71 +39423,71 @@ } }, "@wordpress/token-list": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.49.0.tgz", - "integrity": "sha512-TwLvEfkGqztps2xl+J57BYeJzG0lCLV418fem2VXdl2E2BCwt+d/kDggBPb4KmSdRvSO05QukZsRzPsfFRUbug==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.50.0.tgz", + "integrity": "sha512-LTjXkoljQpJIHqs0isTUzIc1fMu68y0N9HcDIdsCMGkmKptWUCETtb+DItnraxDDLuyWNuTYf840S83a3XAVRA==", "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/undo-manager": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-0.9.0.tgz", - "integrity": "sha512-ZD6fVOdDhH8NvV/2fqjkI6W3kURzU7grWMBSZLtnSmSSPdT//1VSIxe0gcbmRvVPWLdj+TXbHifIswcJK0bHhQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-0.10.0.tgz", + "integrity": "sha512-ODDqAL6BSvD+J7FV+sQTAaVHiPChh/4KBnKg8pb2ogg+Weq6VynthxDxGpQnN8FcMKB9ZoyS3SNIl8pVXLKIwA==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/is-shallow-equal": "^4.49.0" + "@wordpress/is-shallow-equal": "^4.50.0" } }, "@wordpress/url": { - "version": "3.50.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.50.0.tgz", - "integrity": "sha512-+YQzsPim5Zx55o/y9urtd0CKANUgwqZSdUNjDWYZ/1CWxtLLzPgQJOabtl79hG2yjrKvjDe9PrDPff18bCmG5A==", + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.51.0.tgz", + "integrity": "sha512-OjucjlP1763gfKbe8lv/k3RCisyX8AfNBrhASk7JqxAj6rFhb1ZZO7YmAgB2m+WoGB5v7fkOli0FZyDqISdYyg==", "requires": { "@babel/runtime": "^7.16.0", "remove-accents": "^0.5.0" } }, "@wordpress/viewport": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-5.26.0.tgz", - "integrity": "sha512-BZDegMGSckbAwN6eLb3Whn+UeeX1bbB5x6NteTmo4KOSjxTDAUNilBj+JfKoQowZ2fo2xlzySkkVQ/Oajg2rcA==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-5.27.0.tgz", + "integrity": "sha512-ET8X3Ln0K6wrBba+u0AjBD/mP02SuvwhK/EVaI3uAhNlGnkx+J3PdtShbu63lHmp0SG+J27CDjEqfcZ6CdAnfA==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0" + "@wordpress/compose": "^6.27.0", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0" } }, "@wordpress/warning": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.49.0.tgz", - "integrity": "sha512-W2Nj9Nj0o2udPLf8jfGijRff3lzQgPOiLZcN4LFUPT6yyb9MxvNIg7ZVTBJL2TB78+KQKGrIH4ERjV5WyDRoEQ==" + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.50.0.tgz", + "integrity": "sha512-y7Zf48roDfiPgbRAWGXDwN3C8sfbEdneGq+HvXCW6rIeGYnDLdEkpX9i7RfultkFFPVeSP3FpMKVMkto2nbqzA==" }, "@wordpress/widgets": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/widgets/-/widgets-3.26.0.tgz", - "integrity": "sha512-6nJcUDit1st7yDRkLGt1bbLE9o094rYPNrIQUSs4qfinem2+KcB057MeoYHRL/bNsMvzXTOXJSpWHTBB5Ljp7g==", + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/@wordpress/widgets/-/widgets-3.27.1.tgz", + "integrity": "sha512-KrN24nN4B5nNnzV572yeEQnvqf2p3rKBjA9mTSK7Ei5nY1yvuFQn/LxiihbqqSJikliEMkh/cZ152JvIx5j6JA==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/api-fetch": "^6.46.0", - "@wordpress/block-editor": "^12.17.0", - "@wordpress/blocks": "^12.26.0", - "@wordpress/components": "^25.15.0", - "@wordpress/compose": "^6.26.0", - "@wordpress/core-data": "^6.26.0", - "@wordpress/data": "^9.19.0", - "@wordpress/element": "^5.26.0", - "@wordpress/i18n": "^4.49.0", - "@wordpress/icons": "^9.40.0", - "@wordpress/notices": "^4.17.0", + "@wordpress/api-fetch": "^6.47.0", + "@wordpress/block-editor": "^12.18.1", + "@wordpress/blocks": "^12.27.1", + "@wordpress/components": "^25.16.0", + "@wordpress/compose": "^6.27.0", + "@wordpress/core-data": "^6.27.1", + "@wordpress/data": "^9.20.0", + "@wordpress/element": "^5.27.0", + "@wordpress/i18n": "^4.50.0", + "@wordpress/icons": "^9.41.0", + "@wordpress/notices": "^4.18.0", "classnames": "^2.3.1" } }, "@wordpress/wordcount": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.49.0.tgz", - "integrity": "sha512-zchwRmnGRFhX0DUYXNIx5dDYGQSluVQd7/qxaBoB6zlw+e9Fw5ZISGirZi+0lr8h6DHqvw/bpH4e5GNwqUX/Jw==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.50.0.tgz", + "integrity": "sha512-lRfIX3B9ha//bqsUihym2BnOiAsdDQr22vdy0wZIpm5G2tFvTddCKHy0YClf52IJK0z61WqbNuF9hrvzWWxL+g==", "requires": { "@babel/runtime": "^7.16.0" } diff --git a/package.json b/package.json index 88cdaced8ad6f..192386d8b906e 100644 --- a/package.json +++ b/package.json @@ -27,12 +27,12 @@ "@lodder/grunt-postcss": "^3.1.1", "@playwright/test": "1.32.0", "@pmmmwh/react-refresh-webpack-plugin": "0.5.5", - "@wordpress/babel-preset-default": "7.33.0", - "@wordpress/dependency-extraction-webpack-plugin": "5.0.0", - "@wordpress/e2e-test-utils": "10.20.0", - "@wordpress/e2e-test-utils-playwright": "0.17.0", - "@wordpress/prettier-config": "3.6.0", - "@wordpress/scripts": "27.0.0", + "@wordpress/babel-preset-default": "7.34.0", + "@wordpress/dependency-extraction-webpack-plugin": "5.1.0", + "@wordpress/e2e-test-utils": "10.21.0", + "@wordpress/e2e-test-utils-playwright": "0.18.0", + "@wordpress/prettier-config": "3.7.0", + "@wordpress/scripts": "27.1.0", "autoprefixer": "10.4.16", "chalk": "5.3.0", "check-node-version": "4.2.1", @@ -80,71 +80,72 @@ "dependencies": { "@emotion/is-prop-valid": "0.8.8", "@emotion/memoize": "0.7.4", - "@wordpress/a11y": "3.49.0", - "@wordpress/annotations": "2.49.0", - "@wordpress/api-fetch": "6.46.0", - "@wordpress/autop": "3.49.0", - "@wordpress/blob": "3.49.0", - "@wordpress/block-directory": "4.26.0", - "@wordpress/block-editor": "12.17.0", - "@wordpress/block-library": "8.26.0", - "@wordpress/block-serialization-default-parser": "4.49.0", - "@wordpress/blocks": "12.26.0", - "@wordpress/commands": "0.20.0", - "@wordpress/components": "25.15.0", - "@wordpress/compose": "6.26.0", - "@wordpress/core-commands": "0.18.0", - "@wordpress/core-data": "6.26.0", - "@wordpress/customize-widgets": "4.26.0", - "@wordpress/data": "9.19.0", - "@wordpress/data-controls": "3.18.0", - "@wordpress/dataviews": "0.3.0", - "@wordpress/date": "4.49.0", - "@wordpress/deprecated": "3.49.0", - "@wordpress/dom": "3.49.0", - "@wordpress/dom-ready": "3.49.0", - "@wordpress/edit-post": "7.26.0", - "@wordpress/edit-site": "5.26.0", - "@wordpress/edit-widgets": "5.26.0", - "@wordpress/editor": "13.26.0", - "@wordpress/element": "5.26.0", - "@wordpress/escape-html": "2.49.0", - "@wordpress/format-library": "4.26.0", - "@wordpress/hooks": "3.49.0", - "@wordpress/html-entities": "3.49.0", - "@wordpress/i18n": "4.49.0", - "@wordpress/icons": "9.40.0", - "@wordpress/interactivity": "3.2.0", - "@wordpress/interface": "5.26.0", - "@wordpress/is-shallow-equal": "4.49.0", - "@wordpress/keyboard-shortcuts": "4.26.0", - "@wordpress/keycodes": "3.49.0", - "@wordpress/list-reusable-blocks": "4.26.0", - "@wordpress/media-utils": "4.40.0", - "@wordpress/notices": "4.17.0", - "@wordpress/nux": "8.11.0", - "@wordpress/patterns": "1.10.0", - "@wordpress/plugins": "6.17.0", - "@wordpress/preferences": "3.26.0", - "@wordpress/preferences-persistence": "1.41.0", - "@wordpress/primitives": "3.47.0", - "@wordpress/priority-queue": "2.49.0", - "@wordpress/private-apis": "0.31.0", - "@wordpress/redux-routine": "4.49.0", - "@wordpress/reusable-blocks": "4.26.0", - "@wordpress/rich-text": "6.26.0", - "@wordpress/router": "0.18.0", - "@wordpress/server-side-render": "4.26.0", - "@wordpress/shortcode": "3.49.0", - "@wordpress/style-engine": "1.32.0", - "@wordpress/sync": "0.11.0", - "@wordpress/token-list": "2.49.0", - "@wordpress/undo-manager": "0.9.0", - "@wordpress/url": "3.50.0", - "@wordpress/viewport": "5.26.0", - "@wordpress/warning": "2.49.0", - "@wordpress/widgets": "3.26.0", - "@wordpress/wordcount": "3.49.0", + "@wordpress/a11y": "3.50.0", + "@wordpress/annotations": "2.50.0", + "@wordpress/api-fetch": "6.47.0", + "@wordpress/autop": "3.50.0", + "@wordpress/blob": "3.50.0", + "@wordpress/block-directory": "4.27.1", + "@wordpress/block-editor": "12.18.1", + "@wordpress/block-library": "8.27.1", + "@wordpress/block-serialization-default-parser": "4.50.0", + "@wordpress/blocks": "12.27.1", + "@wordpress/commands": "0.21.0", + "@wordpress/components": "25.16.0", + "@wordpress/compose": "6.27.0", + "@wordpress/core-commands": "0.19.1", + "@wordpress/core-data": "6.27.1", + "@wordpress/customize-widgets": "4.27.1", + "@wordpress/data": "9.20.0", + "@wordpress/data-controls": "3.19.0", + "@wordpress/dataviews": "0.4.0", + "@wordpress/date": "4.50.0", + "@wordpress/deprecated": "3.50.0", + "@wordpress/dom": "3.50.0", + "@wordpress/dom-ready": "3.50.0", + "@wordpress/edit-post": "7.27.1", + "@wordpress/edit-site": "5.27.1", + "@wordpress/edit-widgets": "5.27.1", + "@wordpress/editor": "13.27.1", + "@wordpress/element": "5.27.0", + "@wordpress/escape-html": "2.50.0", + "@wordpress/format-library": "4.27.1", + "@wordpress/hooks": "3.50.0", + "@wordpress/html-entities": "3.50.0", + "@wordpress/i18n": "4.50.0", + "@wordpress/icons": "9.41.0", + "@wordpress/interactivity": "4.0.0", + "@wordpress/interactivity-router": "1.0.0", + "@wordpress/interface": "5.27.0", + "@wordpress/is-shallow-equal": "4.50.0", + "@wordpress/keyboard-shortcuts": "4.27.0", + "@wordpress/keycodes": "3.50.0", + "@wordpress/list-reusable-blocks": "4.27.0", + "@wordpress/media-utils": "4.41.0", + "@wordpress/notices": "4.18.0", + "@wordpress/nux": "8.12.0", + "@wordpress/patterns": "1.11.1", + "@wordpress/plugins": "6.18.0", + "@wordpress/preferences": "3.27.0", + "@wordpress/preferences-persistence": "1.42.0", + "@wordpress/primitives": "3.48.0", + "@wordpress/priority-queue": "2.50.0", + "@wordpress/private-apis": "0.32.0", + "@wordpress/redux-routine": "4.50.0", + "@wordpress/reusable-blocks": "4.27.1", + "@wordpress/rich-text": "6.27.0", + "@wordpress/router": "0.19.0", + "@wordpress/server-side-render": "4.27.1", + "@wordpress/shortcode": "3.50.0", + "@wordpress/style-engine": "1.33.1", + "@wordpress/sync": "0.12.0", + "@wordpress/token-list": "2.50.0", + "@wordpress/undo-manager": "0.10.0", + "@wordpress/url": "3.51.0", + "@wordpress/viewport": "5.27.0", + "@wordpress/warning": "2.50.0", + "@wordpress/widgets": "3.27.1", + "@wordpress/wordcount": "3.50.0", "backbone": "1.5.0", "clipboard": "2.0.11", "core-js-url-browser": "3.6.4", diff --git a/src/wp-includes/blocks/block.php b/src/wp-includes/blocks/block.php index 54b54fad139ff..444001fa49859 100644 --- a/src/wp-includes/blocks/block.php +++ b/src/wp-includes/blocks/block.php @@ -46,17 +46,14 @@ function render_block_core_block( $attributes ) { $content = $wp_embed->run_shortcode( $reusable_block->post_content ); $content = $wp_embed->autoembed( $content ); - $gutenberg_experiments = get_option( 'gutenberg-experiments' ); - $has_partial_synced_overrides = $gutenberg_experiments - && array_key_exists( 'gutenberg-pattern-partial-syncing', $gutenberg_experiments ) - && isset( $attributes['overrides'] ); + $has_pattern_overrides = isset( $attributes['overrides'] ); /** * We set the `pattern/overrides` context through the `render_block_context` * filter so that it is available when a pattern's inner blocks are * rendering via do_blocks given it only receives the inner content. */ - if ( $has_partial_synced_overrides ) { + if ( $has_pattern_overrides ) { $filter_block_context = static function ( $context ) use ( $attributes ) { $context['pattern/overrides'] = $attributes['overrides']; return $context; @@ -67,7 +64,7 @@ function render_block_core_block( $attributes ) { $content = do_blocks( $content ); unset( $seen_refs[ $attributes['ref'] ] ); - if ( $has_partial_synced_overrides ) { + if ( $has_pattern_overrides ) { remove_filter( 'render_block_context', $filter_block_context, 1 ); } @@ -86,28 +83,3 @@ function register_block_core_block() { ); } add_action( 'init', 'register_block_core_block' ); - -$gutenberg_experiments = get_option( 'gutenberg-experiments' ); -if ( $gutenberg_experiments && array_key_exists( 'gutenberg-pattern-partial-syncing', $gutenberg_experiments ) ) { - /** - * Registers the overrides attribute for core/block. - * - * @param array $args Array of arguments for registering a block type. - * @param string $block_name Block name including namespace. - * @return array $args - */ - function register_block_core_block_args( $args, $block_name ) { - if ( 'core/block' === $block_name ) { - $args['attributes'] = array_merge( - $args['attributes'], - array( - 'overrides' => array( - 'type' => 'object', - ), - ) - ); - } - return $args; - } - add_filter( 'register_block_type_args', 'register_block_core_block_args', 10, 2 ); -} diff --git a/src/wp-includes/blocks/block/block.json b/src/wp-includes/blocks/block/block.json index aeccdbfc1051d..b30c865e57a7f 100644 --- a/src/wp-includes/blocks/block/block.json +++ b/src/wp-includes/blocks/block/block.json @@ -10,6 +10,9 @@ "attributes": { "ref": { "type": "number" + }, + "overrides": { + "type": "object" } }, "supports": { diff --git a/src/wp-includes/blocks/blocks-json.php b/src/wp-includes/blocks/blocks-json.php index 6fe87ba1188f3..0da1bb0e5b22d 100644 --- a/src/wp-includes/blocks/blocks-json.php +++ b/src/wp-includes/blocks/blocks-json.php @@ -196,6 +196,9 @@ 'attributes' => array( 'ref' => array( 'type' => 'number' + ), + 'overrides' => array( + 'type' => 'object' ) ), 'supports' => array( @@ -219,6 +222,9 @@ 'link' ), 'textdomain' => 'default', + 'usesContext' => array( + 'pattern/overrides' + ), 'attributes' => array( 'tagName' => array( 'type' => 'string', @@ -1513,6 +1519,9 @@ ), 'enableContrastChecker' => false ), + 'dimensions' => array( + 'aspectRatio' => true + ), 'typography' => array( 'fontSize' => true, 'lineHeight' => true, @@ -1735,7 +1744,6 @@ ), 'interactivity' => true ), - 'viewScript' => 'file:./view.min.js', 'editorStyle' => 'wp-block-file-editor', 'style' => 'wp-block-file' ), @@ -2065,6 +2073,7 @@ ) ), 'dimensions' => array( + 'aspectRatio' => true, 'minHeight' => true ), '__experimentalBorder' => array( @@ -2114,6 +2123,9 @@ 'subtitle' ), 'textdomain' => 'default', + 'usesContext' => array( + 'pattern/overrides' + ), 'attributes' => array( 'textAlign' => array( 'type' => 'string' @@ -2253,7 +2265,8 @@ 'usesContext' => array( 'allowResize', 'imageCrop', - 'fixedHeight' + 'fixedHeight', + 'pattern/overrides' ), 'description' => 'Insert an image to make a visual statement.', 'keywords' => array( @@ -2392,8 +2405,7 @@ ) ), 'editorStyle' => 'wp-block-image-editor', - 'style' => 'wp-block-image', - 'viewScript' => 'file:./view.min.js' + 'style' => 'wp-block-image' ), 'latest-comments' => array( '$schema' => 'https://schemas.wp.org/trunk/block.json', @@ -3135,7 +3147,6 @@ 'interactivity' => true, 'renaming' => false ), - 'viewScript' => 'file:./view.min.js', 'editorStyle' => 'wp-block-navigation-editor', 'style' => 'wp-block-navigation' ), @@ -3436,7 +3447,8 @@ ), 'textdomain' => 'default', 'usesContext' => array( - 'postId' + 'postId', + 'pattern/overrides' ), 'attributes' => array( 'align' => array( @@ -3474,7 +3486,6 @@ 'text' => true ) ), - '__experimentalConnections' => true, 'spacing' => array( 'margin' => true, 'padding' => true, @@ -4042,8 +4053,18 @@ 'arrow' => array( 'type' => 'string', 'default' => 'none' + ), + 'inSameTerm' => array( + 'type' => 'boolean' + ), + 'taxonomy' => array( + 'type' => 'string', + 'default' => '' ) ), + 'usesContext' => array( + 'postType' + ), 'supports' => array( 'reusable' => false, 'html' => false, @@ -4348,6 +4369,10 @@ 'text' => true ) ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), 'typography' => array( 'fontSize' => true, 'lineHeight' => true, @@ -4444,8 +4469,7 @@ 'layout' => true ), 'editorStyle' => 'wp-block-query-editor', - 'style' => 'wp-block-query', - 'viewScript' => 'file:./view.min.js' + 'style' => 'wp-block-query' ), 'query-no-results' => array( '$schema' => 'https://schemas.wp.org/trunk/block.json', @@ -5046,7 +5070,6 @@ ), 'html' => false ), - 'viewScript' => 'file:./view.min.js', 'editorStyle' => 'wp-block-search-editor', 'style' => 'wp-block-search' ), diff --git a/src/wp-includes/blocks/button/block.json b/src/wp-includes/blocks/button/block.json index 3c232700a876e..f04d4642bb98e 100644 --- a/src/wp-includes/blocks/button/block.json +++ b/src/wp-includes/blocks/button/block.json @@ -8,6 +8,7 @@ "description": "Prompt visitors to take action with a button-style link.", "keywords": [ "link" ], "textdomain": "default", + "usesContext": [ "pattern/overrides" ], "attributes": { "tagName": { "type": "string", diff --git a/src/wp-includes/blocks/cover/block.json b/src/wp-includes/blocks/cover/block.json index d2c55dd26b4d7..80562da309899 100644 --- a/src/wp-includes/blocks/cover/block.json +++ b/src/wp-includes/blocks/cover/block.json @@ -114,6 +114,9 @@ "__experimentalSkipSerialization": [ "gradients" ], "enableContrastChecker": false }, + "dimensions": { + "aspectRatio": true + }, "typography": { "fontSize": true, "lineHeight": true, diff --git a/src/wp-includes/blocks/file.php b/src/wp-includes/blocks/file.php index 5910a63e6cf18..06eb10cf1d895 100644 --- a/src/wp-includes/blocks/file.php +++ b/src/wp-includes/blocks/file.php @@ -14,35 +14,8 @@ * * @return string Returns the block content. */ -function render_block_core_file( $attributes, $content, $block ) { - $is_gutenberg_plugin = defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN; - $should_load_view_script = ! empty( $attributes['displayPreview'] ); - $view_js_file = 'wp-block-file-view'; - $script_handles = $block->block_type->view_script_handles; - - if ( $is_gutenberg_plugin ) { - if ( $should_load_view_script ) { - gutenberg_enqueue_module( '@wordpress/block-library/file-block' ); - } - // Remove the view script because we are using the module. - $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); - } else { - // If the script already exists, there is no point in removing it from viewScript. - if ( ! wp_script_is( $view_js_file ) ) { - - // If the script is not needed, and it is still in the `view_script_handles`, remove it. - if ( ! $should_load_view_script && in_array( $view_js_file, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); - } - // If the script is needed, but it was previously removed, add it again. - if ( $should_load_view_script && ! in_array( $view_js_file, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); - } - } - } - +function render_block_core_file( $attributes, $content ) { // Update object's aria-label attribute if present in block HTML. - // Match an aria-label attribute from an object tag. $pattern = '@aria-label="(?[^"]+)?")@i'; $content = preg_replace_callback( @@ -63,8 +36,10 @@ static function ( $matches ) { $content ); - // If it uses the Interactivity API, add the directives. - if ( $should_load_view_script ) { + // If it's interactive, enqueue the script module and add the directives. + if ( ! empty( $attributes['displayPreview'] ) ) { + wp_enqueue_script_module( '@wordpress/block-library/file' ); + $processor = new WP_HTML_Tag_Processor( $content ); $processor->next_tag(); $processor->set_attribute( 'data-wp-interactive', '{"namespace":"core/file"}' ); @@ -77,25 +52,6 @@ static function ( $matches ) { return $content; } -/** - * Ensure that the view script has the `wp-interactivity` dependency. - * - * @since 6.4.0 - * - * @global WP_Scripts $wp_scripts - */ -function block_core_file_ensure_interactivity_dependency() { - global $wp_scripts; - if ( - isset( $wp_scripts->registered['wp-block-file-view'] ) && - ! in_array( 'wp-interactivity', $wp_scripts->registered['wp-block-file-view']->deps, true ) - ) { - $wp_scripts->registered['wp-block-file-view']->deps[] = 'wp-interactivity'; - } -} - -add_action( 'wp_print_scripts', 'block_core_file_ensure_interactivity_dependency' ); - /** * Registers the `core/file` block on server. */ @@ -107,13 +63,11 @@ function register_block_core_file() { ) ); - if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { - gutenberg_register_module( - '@wordpress/block-library/file-block', - gutenberg_url( '/build/interactivity/file.min.js' ), - array( '@wordpress/interactivity' ), - defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) - ); - } + wp_register_script_module( + '@wordpress/block-library/file', + defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ? gutenberg_url( '/build/interactivity/file.min.js' ) : includes_url( 'blocks/file/view.min.js' ), + array( '@wordpress/interactivity' ), + defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) + ); } add_action( 'init', 'register_block_core_file' ); diff --git a/src/wp-includes/blocks/file/block.json b/src/wp-includes/blocks/file/block.json index 9dc6677e4adce..fd5da67d284f4 100644 --- a/src/wp-includes/blocks/file/block.json +++ b/src/wp-includes/blocks/file/block.json @@ -72,7 +72,6 @@ }, "interactivity": true }, - "viewScript": "file:./view.min.js", "editorStyle": "wp-block-file-editor", "style": "wp-block-file" } diff --git a/src/wp-includes/blocks/footnotes.php b/src/wp-includes/blocks/footnotes.php index bc6291dd21c38..0cd2ad73ef3d4 100644 --- a/src/wp-includes/blocks/footnotes.php +++ b/src/wp-includes/blocks/footnotes.php @@ -68,17 +68,26 @@ function render_block_core_footnotes( $attributes, $content, $block ) { * @since 6.3.0 */ function register_block_core_footnotes() { - foreach ( array( 'post', 'page' ) as $post_type ) { - register_post_meta( - $post_type, - 'footnotes', - array( - 'show_in_rest' => true, - 'single' => true, - 'type' => 'string', - 'revisions_enabled' => true, - ) - ); + $post_types = get_post_types( + array( + 'show_in_rest' => true, + 'public' => true, + ) + ); + foreach ( $post_types as $post_type ) { + // Only register the meta field if the post type supports the editor, custom fields, and revisions. + if ( post_type_supports( $post_type, 'editor' ) && post_type_supports( $post_type, 'custom-fields' ) && post_type_supports( $post_type, 'revisions' ) ) { + register_post_meta( + $post_type, + 'footnotes', + array( + 'show_in_rest' => true, + 'single' => true, + 'type' => 'string', + 'revisions_enabled' => true, + ) + ); + } } register_block_type_from_metadata( __DIR__ . '/footnotes', diff --git a/src/wp-includes/blocks/gallery.php b/src/wp-includes/blocks/gallery.php index 97877141ef333..342264de6fce3 100644 --- a/src/wp-includes/blocks/gallery.php +++ b/src/wp-includes/blocks/gallery.php @@ -42,9 +42,6 @@ function block_core_gallery_random_order( $parsed_block ) { if ( 'core/gallery' === $parsed_block['blockName'] && ! empty( $parsed_block['attrs']['randomOrder'] ) ) { shuffle( $parsed_block['innerBlocks'] ); } - - return $parsed_block; - return $parsed_block; } diff --git a/src/wp-includes/blocks/group/block.json b/src/wp-includes/blocks/group/block.json index df59c25a7751f..674b0645f5021 100644 --- a/src/wp-includes/blocks/group/block.json +++ b/src/wp-includes/blocks/group/block.json @@ -55,6 +55,7 @@ } }, "dimensions": { + "aspectRatio": true, "minHeight": true }, "__experimentalBorder": { diff --git a/src/wp-includes/blocks/heading/block.json b/src/wp-includes/blocks/heading/block.json index 72cc67caddd9e..a1eb3fce32ef1 100644 --- a/src/wp-includes/blocks/heading/block.json +++ b/src/wp-includes/blocks/heading/block.json @@ -7,6 +7,7 @@ "description": "Introduce new sections and organize content to help visitors (and search engines) understand the structure of your content.", "keywords": [ "title", "subtitle" ], "textdomain": "default", + "usesContext": [ "pattern/overrides" ], "attributes": { "textAlign": { "type": "string" diff --git a/src/wp-includes/blocks/image.php b/src/wp-includes/blocks/image.php index add8e5989ab7d..f926890c1a3fc 100644 --- a/src/wp-includes/blocks/image.php +++ b/src/wp-includes/blocks/image.php @@ -37,10 +37,6 @@ function render_block_core_image( $attributes, $content, $block ) { $link_destination = isset( $attributes['linkDestination'] ) ? $attributes['linkDestination'] : 'none'; $lightbox_settings = block_core_image_get_lightbox_settings( $block->parsed_block ); - $is_gutenberg_plugin = defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN; - $view_js_file_handle = 'wp-block-image-view'; - $script_handles = $block->block_type->view_script_handles; - /* * If the lightbox is enabled and the image is not linked, add the filter * and the JavaScript view file. @@ -51,34 +47,22 @@ function render_block_core_image( $attributes, $content, $block ) { isset( $lightbox_settings['enabled'] ) && true === $lightbox_settings['enabled'] ) { - if ( $is_gutenberg_plugin ) { - gutenberg_enqueue_module( '@wordpress/block-library/image' ); - // Remove the view script because we are using the module. - $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file_handle ) ); - } elseif ( ! in_array( $view_js_file_handle, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file_handle ) ); - } + wp_enqueue_script_module( '@wordpress/block-library/image' ); /* - * This render needs to happen in a filter with priority 15 to ensure - * that it runs after the duotone filter and that duotone styles are - * applied to the image in the lightbox. We also need to ensure that the - * lightbox works with any plugins that might use filters as well. We - * can consider removing this in the future if the way the blocks are - * rendered changes, or if a new kind of filter is introduced. + * This render needs to happen in a filter with priority 15 to ensure that + * it runs after the duotone filter and that duotone styles are applied to + * the image in the lightbox. Lightbox has to work with any plugins that + * might use filters as well. Removing this can be considered in the + * future if the way the blocks are rendered changes, or if a + * new kind of filter is introduced. */ add_filter( 'render_block_core/image', 'block_core_image_render_lightbox', 15, 2 ); } else { /* - * Remove the filter and the JavaScript view file if previously added by - * other Image blocks. + * Remove the filter if previously added by other Image blocks. */ remove_filter( 'render_block_core/image', 'block_core_image_render_lightbox', 15 ); - - // If the script is not needed, and it is still in the `view_script_handles`, remove it. - if ( in_array( $view_js_file_handle, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file_handle ) ); - } } return $processor->get_updated_html(); @@ -328,25 +312,6 @@ class="lightbox-trigger" return str_replace( '', $lightbox_html . '', $body_content ); } -/** - * Ensures that the view script has the `wp-interactivity` dependency. - * - * @since 6.4.0 - * - * @global WP_Scripts $wp_scripts - */ -function block_core_image_ensure_interactivity_dependency() { - global $wp_scripts; - if ( - isset( $wp_scripts->registered['wp-block-image-view'] ) && - ! in_array( 'wp-interactivity', $wp_scripts->registered['wp-block-image-view']->deps, true ) - ) { - $wp_scripts->registered['wp-block-image-view']->deps[] = 'wp-interactivity'; - } -} - -add_action( 'wp_print_scripts', 'block_core_image_ensure_interactivity_dependency' ); - /** * Registers the `core/image` block on server. */ @@ -358,13 +323,11 @@ function register_block_core_image() { ) ); - if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { - gutenberg_register_module( - '@wordpress/block-library/image', - gutenberg_url( '/build/interactivity/image.min.js' ), - array( '@wordpress/interactivity' ), - defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) - ); - } + wp_register_script_module( + '@wordpress/block-library/image', + defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ? gutenberg_url( '/build/interactivity/image.min.js' ) : includes_url( 'blocks/image/view.min.js' ), + array( '@wordpress/interactivity' ), + defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) + ); } add_action( 'init', 'register_block_core_image' ); diff --git a/src/wp-includes/blocks/image/block.json b/src/wp-includes/blocks/image/block.json index c5191e3dd8654..d60bcadf0eec7 100644 --- a/src/wp-includes/blocks/image/block.json +++ b/src/wp-includes/blocks/image/block.json @@ -4,7 +4,12 @@ "name": "core/image", "title": "Image", "category": "media", - "usesContext": [ "allowResize", "imageCrop", "fixedHeight" ], + "usesContext": [ + "allowResize", + "imageCrop", + "fixedHeight", + "pattern/overrides" + ], "description": "Insert an image to make a visual statement.", "keywords": [ "img", "photo", "picture" ], "textdomain": "default", @@ -129,6 +134,5 @@ { "name": "rounded", "label": "Rounded" } ], "editorStyle": "wp-block-image-editor", - "style": "wp-block-image", - "viewScript": "file:./view.min.js" + "style": "wp-block-image" } diff --git a/src/wp-includes/blocks/navigation-link.php b/src/wp-includes/blocks/navigation-link.php index 1165ce94b5921..71ef26b630d51 100644 --- a/src/wp-includes/blocks/navigation-link.php +++ b/src/wp-includes/blocks/navigation-link.php @@ -1,6 +1,6 @@ get_registered( 'core/navigation-link' ); @@ -338,16 +338,45 @@ function register_block_core_navigation_link_variation( $variation ) { return; } - $navigation_block_type->variations[] = $variation; + $navigation_block_type->variations = array_merge( + $navigation_block_type->variations, + array( $variation ) + ); +} + +/** + * Unregister a variation for a post type / taxonomy for the navigation link block. + * + * @param string $name Name of the post type / taxonomy (which was used as variation name). + * @return void + */ +function block_core_navigation_link_unregister_variation( $name ) { + // Directly get the variations from the registered block type + // because there's no server side (un)registration for variations (see #47170). + $navigation_block_type = WP_Block_Type_Registry::get_instance()->get_registered( 'core/navigation-link' ); + // If the block is not registered (yet), there's no need to remove a variation. + if ( ! $navigation_block_type || empty( $navigation_block_type->variations ) ) { + return; + } + $variations = $navigation_block_type->variations; + // Search for the variation and remove it from the array. + foreach ( $variations as $i => $variation ) { + if ( $variation['name'] === $name ) { + unset( $variations[ $i ] ); + break; + } + } + // Reindex array after removing one variation. + $navigation_block_type->variations = array_values( $variations ); } /** * Register the navigation link block. + * Returns an array of variations for the navigation link block. * - * @uses render_block_core_navigation() - * @throws WP_Error An WP_Error exception parsing the block definition. + * @return array */ -function register_block_core_navigation_link() { +function build_navigation_link_block_variations() { // This will only handle post types and taxonomies registered until this point (init on priority 9). // See action hooks below for other post types and taxonomies. // See https://github.com/WordPress/gutenberg/issues/53826 for details. @@ -382,32 +411,45 @@ function register_block_core_navigation_link() { } } + return array_merge( $built_ins, $variations ); +} + +/** + * Register the navigation link block. + * + * @uses render_block_core_navigation() + * @throws WP_Error An WP_Error exception parsing the block definition. + */ +function register_block_core_navigation_link() { register_block_type_from_metadata( __DIR__ . '/navigation-link', array( - 'render_callback' => 'render_block_core_navigation_link', - 'variations' => array_merge( $built_ins, $variations ), + 'render_callback' => 'render_block_core_navigation_link', + 'variation_callback' => 'build_navigation_link_block_variations', ) ); } add_action( 'init', 'register_block_core_navigation_link' ); // Register actions for all post types and taxonomies, to add variations when they are registered. // All post types/taxonomies registered before register_block_core_navigation_link, will be handled by that function. -add_action( 'registered_post_type', 'register_block_core_navigation_link_post_type_variation', 10, 2 ); -add_action( 'registered_taxonomy', 'register_block_core_navigation_link_taxonomy_variation', 10, 3 ); +add_action( 'registered_post_type', 'block_core_navigation_link_register_post_type_variation', 10, 2 ); +add_action( 'registered_taxonomy', 'block_core_navigation_link_register_taxonomy_variation', 10, 3 ); +// Handle unregistering of post types and taxonomies and remove the variations. +add_action( 'unregistered_post_type', 'block_core_navigation_link_unregister_post_type_variation' ); +add_action( 'unregistered_taxonomy', 'block_core_navigation_link_unregister_taxonomy_variation' ); /** * Register custom post type variations for navigation link on post type registration * Handles all post types registered after the block is registered in register_navigation_link_post_type_variations * - * @param string $post_type The post type name passed from registered_post_type filter. + * @param string $post_type The post type name passed from registered_post_type action hook. * @param WP_Post_Type $post_type_object The post type object passed from registered_post_type. * @return void */ -function register_block_core_navigation_link_post_type_variation( $post_type, $post_type_object ) { +function block_core_navigation_link_register_post_type_variation( $post_type, $post_type_object ) { if ( $post_type_object->show_in_nav_menus ) { $variation = build_variation_for_navigation_link( $post_type_object, 'post-type' ); - register_block_core_navigation_link_variation( $variation ); + block_core_navigation_link_register_variation( $variation ); } } @@ -420,9 +462,29 @@ function register_block_core_navigation_link_post_type_variation( $post_type, $p * @param array $args Array of taxonomy registration arguments. * @return void */ -function register_block_core_navigation_link_taxonomy_variation( $taxonomy, $object_type, $args ) { +function block_core_navigation_link_register_taxonomy_variation( $taxonomy, $object_type, $args ) { if ( isset( $args['show_in_nav_menus'] ) && $args['show_in_nav_menus'] ) { $variation = build_variation_for_navigation_link( (object) $args, 'post-type' ); - register_block_core_navigation_link_variation( $variation ); + block_core_navigation_link_register_variation( $variation ); } } + +/** + * Unregisters a custom post type variation for navigation link on post type unregistration. + * + * @param string $post_type The post type name passed from unregistered_post_type action hook. + * @return void + */ +function block_core_navigation_link_unregister_post_type_variation( $post_type ) { + block_core_navigation_link_unregister_variation( $post_type ); +} + +/** + * Unregisters a custom taxonomy variation for navigation link on taxonomy unregistration. + * + * @param string $taxonomy The taxonomy name passed from unregistered_taxonomy action hook. + * @return void + */ +function block_core_navigation_link_unregister_taxonomy_variation( $taxonomy ) { + block_core_navigation_link_unregister_variation( $taxonomy ); +} diff --git a/src/wp-includes/blocks/navigation.php b/src/wp-includes/blocks/navigation.php index 3af85afd92522..a0672a0bed580 100644 --- a/src/wp-includes/blocks/navigation.php +++ b/src/wp-includes/blocks/navigation.php @@ -5,6 +5,648 @@ * @package WordPress */ +/** + * Helper functions used to render the navigation block. + */ +class WP_Navigation_Block_Renderer { + /** + * Used to determine which blocks are wrapped in an
  • . + * + * @var array + */ + private static $nav_blocks_wrapped_in_list_item = array( + 'core/navigation-link', + 'core/home-link', + 'core/site-title', + 'core/site-logo', + 'core/navigation-submenu', + ); + + /** + * Used to determine which blocks need an
  • wrapper. + * + * @var array + */ + private static $needs_list_item_wrapper = array( + 'core/site-title', + 'core/site-logo', + ); + + /** + * Keeps track of all the navigation names that have been seen. + * + * @var array + */ + private static $seen_menu_names = array(); + + /** + * Returns whether or not this is responsive navigation. + * + * @param array $attributes The block attributes. + * @return bool Returns whether or not this is responsive navigation. + */ + private static function is_responsive( $attributes ) { + /** + * This is for backwards compatibility after the `isResponsive` attribute was been removed. + */ + + $has_old_responsive_attribute = ! empty( $attributes['isResponsive'] ) && $attributes['isResponsive']; + return isset( $attributes['overlayMenu'] ) && 'never' !== $attributes['overlayMenu'] || $has_old_responsive_attribute; + } + + /** + * Returns whether or not a navigation has a submenu. + * + * @param WP_Block_List $inner_blocks The list of inner blocks. + * @return bool Returns whether or not a navigation has a submenu. + */ + private static function has_submenus( $inner_blocks ) { + foreach ( $inner_blocks as $inner_block ) { + $inner_block_content = $inner_block->render(); + $p = new WP_HTML_Tag_Processor( $inner_block_content ); + if ( $p->next_tag( + array( + 'name' => 'LI', + 'class_name' => 'has-child', + ) + ) ) { + return true; + } + } + return false; + } + + /** + * Determine whether the navigation blocks is interactive. + * + * @param array $attributes The block attributes. + * @param WP_Block_List $inner_blocks The list of inner blocks. + * @return bool Returns whether or not to load the view script. + */ + private static function is_interactive( $attributes, $inner_blocks ) { + $has_submenus = static::has_submenus( $inner_blocks ); + $is_responsive_menu = static::is_responsive( $attributes ); + return ( $has_submenus && ( $attributes['openSubmenusOnClick'] || $attributes['showSubmenuIcon'] ) ) || $is_responsive_menu; + } + + /** + * Returns whether or not a block needs a list item wrapper. + * + * @param WP_Block $block The block. + * @return bool Returns whether or not a block needs a list item wrapper. + */ + private static function does_block_need_a_list_item_wrapper( $block ) { + return in_array( $block->name, static::$needs_list_item_wrapper, true ); + } + + /** + * Returns the markup for a single inner block. + * + * @param WP_Block $inner_block The inner block. + * @return string Returns the markup for a single inner block. + */ + private static function get_markup_for_inner_block( $inner_block ) { + $inner_block_content = $inner_block->render(); + if ( ! empty( $inner_block_content ) ) { + if ( static::does_block_need_a_list_item_wrapper( $inner_block ) ) { + return '
  • ' . $inner_block_content . '
  • '; + } + + return $inner_block_content; + } + } + + /** + * Returns the html for the inner blocks of the navigation block. + * + * @param array $attributes The block attributes. + * @param WP_Block_List $inner_blocks The list of inner blocks. + * @return string Returns the html for the inner blocks of the navigation block. + */ + private static function get_inner_blocks_html( $attributes, $inner_blocks ) { + $has_submenus = static::has_submenus( $inner_blocks ); + $is_interactive = static::is_interactive( $attributes, $inner_blocks ); + + $style = static::get_styles( $attributes ); + $class = static::get_classes( $attributes ); + $container_attributes = get_block_wrapper_attributes( + array( + 'class' => 'wp-block-navigation__container ' . $class, + 'style' => $style, + ) + ); + + $inner_blocks_html = ''; + $is_list_open = false; + + foreach ( $inner_blocks as $inner_block ) { + $is_list_item = in_array( $inner_block->name, static::$nav_blocks_wrapped_in_list_item, true ); + + if ( $is_list_item && ! $is_list_open ) { + $is_list_open = true; + $inner_blocks_html .= sprintf( + '
      ', + $container_attributes + ); + } + + if ( ! $is_list_item && $is_list_open ) { + $is_list_open = false; + $inner_blocks_html .= '
    '; + } + + $inner_blocks_html .= static::get_markup_for_inner_block( $inner_block ); + } + + if ( $is_list_open ) { + $inner_blocks_html .= ''; + } + + // Add directives to the submenu if needed. + if ( $has_submenus && $is_interactive ) { + $tags = new WP_HTML_Tag_Processor( $inner_blocks_html ); + $inner_blocks_html = block_core_navigation_add_directives_to_submenu( $tags, $attributes ); + } + + return $inner_blocks_html; + } + + /** + * Gets the inner blocks for the navigation block from the navigation post. + * + * @param array $attributes The block attributes. + * @return WP_Block_List Returns the inner blocks for the navigation block. + */ + private static function get_inner_blocks_from_navigation_post( $attributes ) { + $navigation_post = get_post( $attributes['ref'] ); + if ( ! isset( $navigation_post ) ) { + return new WP_Block_List( array(), $attributes ); + } + + // Only published posts are valid. If this is changed then a corresponding change + // must also be implemented in `use-navigation-menu.js`. + if ( 'publish' === $navigation_post->post_status ) { + $parsed_blocks = parse_blocks( $navigation_post->post_content ); + + // 'parse_blocks' includes a null block with '\n\n' as the content when + // it encounters whitespace. This code strips it. + $blocks = block_core_navigation_filter_out_empty_blocks( $parsed_blocks ); + + if ( function_exists( 'get_hooked_blocks' ) ) { + // Run Block Hooks algorithm to inject hooked blocks. + $markup = block_core_navigation_insert_hooked_blocks( $blocks, $navigation_post ); + $root_nav_block = parse_blocks( $markup )[0]; + + $blocks = isset( $root_nav_block['innerBlocks'] ) ? $root_nav_block['innerBlocks'] : $blocks; + } + + // TODO - this uses the full navigation block attributes for the + // context which could be refined. + return new WP_Block_List( $blocks, $attributes ); + } + } + + /** + * Gets the inner blocks for the navigation block from the fallback. + * + * @param array $attributes The block attributes. + * @return WP_Block_List Returns the inner blocks for the navigation block. + */ + private static function get_inner_blocks_from_fallback( $attributes ) { + $fallback_blocks = block_core_navigation_get_fallback_blocks(); + + // Fallback my have been filtered so do basic test for validity. + if ( empty( $fallback_blocks ) || ! is_array( $fallback_blocks ) ) { + return new WP_Block_List( array(), $attributes ); + } + + return new WP_Block_List( $fallback_blocks, $attributes ); + } + + /** + * Gets the inner blocks for the navigation block. + * + * @param array $attributes The block attributes. + * @param WP_Block $block The parsed block. + * @return WP_Block_List Returns the inner blocks for the navigation block. + */ + private static function get_inner_blocks( $attributes, $block ) { + $inner_blocks = $block->inner_blocks; + + // Ensure that blocks saved with the legacy ref attribute name (navigationMenuId) continue to render. + if ( array_key_exists( 'navigationMenuId', $attributes ) ) { + $attributes['ref'] = $attributes['navigationMenuId']; + } + + // If: + // - the gutenberg plugin is active + // - `__unstableLocation` is defined + // - we have menu items at the defined location + // - we don't have a relationship to a `wp_navigation` Post (via `ref`). + // ...then create inner blocks from the classic menu assigned to that location. + if ( + defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN && + array_key_exists( '__unstableLocation', $attributes ) && + ! array_key_exists( 'ref', $attributes ) && + ! empty( block_core_navigation_get_menu_items_at_location( $attributes['__unstableLocation'] ) ) + ) { + $inner_blocks = block_core_navigation_get_inner_blocks_from_unstable_location( $attributes ); + } + + // Load inner blocks from the navigation post. + if ( array_key_exists( 'ref', $attributes ) ) { + $inner_blocks = static::get_inner_blocks_from_navigation_post( $attributes ); + } + + // If there are no inner blocks then fallback to rendering an appropriate fallback. + if ( empty( $inner_blocks ) ) { + $inner_blocks = static::get_inner_blocks_from_fallback( $attributes ); + } + + /** + * Filter navigation block $inner_blocks. + * Allows modification of a navigation block menu items. + * + * @since 6.1.0 + * + * @param \WP_Block_List $inner_blocks + */ + $inner_blocks = apply_filters( 'block_core_navigation_render_inner_blocks', $inner_blocks ); + + $post_ids = block_core_navigation_get_post_ids( $inner_blocks ); + if ( $post_ids ) { + _prime_post_caches( $post_ids, false, false ); + } + + return $inner_blocks; + } + + /** + * Gets the name of the current navigation, if it has one. + * + * @param array $attributes The block attributes. + * @return string Returns the name of the navigation. + */ + private static function get_navigation_name( $attributes ) { + + $navigation_name = $attributes['ariaLabel'] ?? ''; + + // Load the navigation post. + if ( array_key_exists( 'ref', $attributes ) ) { + $navigation_post = get_post( $attributes['ref'] ); + if ( ! isset( $navigation_post ) ) { + return $navigation_name; + } + + // Only published posts are valid. If this is changed then a corresponding change + // must also be implemented in `use-navigation-menu.js`. + if ( 'publish' === $navigation_post->post_status ) { + $navigation_name = $navigation_post->post_title; + + // This is used to count the number of times a navigation name has been seen, + // so that we can ensure every navigation has a unique id. + if ( isset( static::$seen_menu_names[ $navigation_name ] ) ) { + ++static::$seen_menu_names[ $navigation_name ]; + } else { + static::$seen_menu_names[ $navigation_name ] = 1; + } + } + } + + return $navigation_name; + } + + /** + * Returns the layout class for the navigation block. + * + * @param array $attributes The block attributes. + * @return string Returns the layout class for the navigation block. + */ + private static function get_layout_class( $attributes ) { + $layout_justification = array( + 'left' => 'items-justified-left', + 'right' => 'items-justified-right', + 'center' => 'items-justified-center', + 'space-between' => 'items-justified-space-between', + ); + + $layout_class = ''; + if ( + isset( $attributes['layout']['justifyContent'] ) && + isset( $layout_justification[ $attributes['layout']['justifyContent'] ] ) + ) { + $layout_class .= $layout_justification[ $attributes['layout']['justifyContent'] ]; + } + if ( isset( $attributes['layout']['orientation'] ) && 'vertical' === $attributes['layout']['orientation'] ) { + $layout_class .= ' is-vertical'; + } + + if ( isset( $attributes['layout']['flexWrap'] ) && 'nowrap' === $attributes['layout']['flexWrap'] ) { + $layout_class .= ' no-wrap'; + } + return $layout_class; + } + + /** + * Return classes for the navigation block. + * + * @param array $attributes The block attributes. + * @return string Returns the classes for the navigation block. + */ + private static function get_classes( $attributes ) { + // Restore legacy classnames for submenu positioning. + $layout_class = static::get_layout_class( $attributes ); + $colors = block_core_navigation_build_css_colors( $attributes ); + $font_sizes = block_core_navigation_build_css_font_sizes( $attributes ); + $is_responsive_menu = static::is_responsive( $attributes ); + + // Manually add block support text decoration as CSS class. + $text_decoration = $attributes['style']['typography']['textDecoration'] ?? null; + $text_decoration_class = sprintf( 'has-text-decoration-%s', $text_decoration ); + + // Sets the is-collapsed class when the navigation is set to always use the overlay. + // This saves us from needing to do this check in the view.js file (see the collapseNav function). + $is_collapsed_class = static::is_always_overlay( $attributes ) ? array( 'is-collapsed' ) : array(); + + $classes = array_merge( + $colors['css_classes'], + $font_sizes['css_classes'], + $is_responsive_menu ? array( 'is-responsive' ) : array(), + $layout_class ? array( $layout_class ) : array(), + $text_decoration ? array( $text_decoration_class ) : array(), + $is_collapsed_class + ); + return implode( ' ', $classes ); + } + + private static function is_always_overlay( $attributes ) { + return isset( $attributes['overlayMenu'] ) && 'always' === $attributes['overlayMenu']; + } + + /** + * Get styles for the navigation block. + * + * @param array $attributes The block attributes. + * @return string Returns the styles for the navigation block. + */ + private static function get_styles( $attributes ) { + $colors = block_core_navigation_build_css_colors( $attributes ); + $font_sizes = block_core_navigation_build_css_font_sizes( $attributes ); + $block_styles = isset( $attributes['styles'] ) ? $attributes['styles'] : ''; + return $block_styles . $colors['inline_styles'] . $font_sizes['inline_styles']; + } + + /** + * Get the responsive container markup + * + * @param array $attributes The block attributes. + * @param WP_Block_List $inner_blocks The list of inner blocks. + * @param string $inner_blocks_html The markup for the inner blocks. + * @return string Returns the container markup. + */ + private static function get_responsive_container_markup( $attributes, $inner_blocks, $inner_blocks_html ) { + $is_interactive = static::is_interactive( $attributes, $inner_blocks ); + $colors = block_core_navigation_build_css_colors( $attributes ); + $modal_unique_id = wp_unique_id( 'modal-' ); + + $responsive_container_classes = array( + 'wp-block-navigation__responsive-container', + implode( ' ', $colors['overlay_css_classes'] ), + ); + $open_button_classes = array( + 'wp-block-navigation__responsive-container-open', + ); + + $should_display_icon_label = isset( $attributes['hasIcon'] ) && true === $attributes['hasIcon']; + $toggle_button_icon = ''; + if ( isset( $attributes['icon'] ) ) { + if ( 'menu' === $attributes['icon'] ) { + $toggle_button_icon = ''; + } + } + $toggle_button_content = $should_display_icon_label ? $toggle_button_icon : __( 'Menu' ); + $toggle_close_button_icon = ''; + $toggle_close_button_content = $should_display_icon_label ? $toggle_close_button_icon : __( 'Close' ); + $toggle_aria_label_open = $should_display_icon_label ? 'aria-label="' . __( 'Open menu' ) . '"' : ''; // Open button label. + $toggle_aria_label_close = $should_display_icon_label ? 'aria-label="' . __( 'Close menu' ) . '"' : ''; // Close button label. + + // Add Interactivity API directives to the markup if needed. + $open_button_directives = ''; + $responsive_container_directives = ''; + $responsive_dialog_directives = ''; + $close_button_directives = ''; + if ( $is_interactive ) { + $open_button_directives = ' + data-wp-on--click="actions.openMenuOnClick" + data-wp-on--keydown="actions.handleMenuKeydown" + '; + $responsive_container_directives = ' + data-wp-class--has-modal-open="state.isMenuOpen" + data-wp-class--is-menu-open="state.isMenuOpen" + data-wp-watch="callbacks.initMenu" + data-wp-on--keydown="actions.handleMenuKeydown" + data-wp-on--focusout="actions.handleMenuFocusout" + tabindex="-1" + '; + $responsive_dialog_directives = ' + data-wp-bind--aria-modal="state.ariaModal" + data-wp-bind--aria-label="state.ariaLabel" + data-wp-bind--role="state.roleAttribute" + '; + $close_button_directives = ' + data-wp-on--click="actions.closeMenuOnClick" + '; + $responsive_container_content_directives = ' + data-wp-watch="callbacks.focusFirstElement" + '; + } + + return sprintf( + ' +
    +
    +
    + +
    + %2$s +
    +
    +
    +
    ', + esc_attr( $modal_unique_id ), + $inner_blocks_html, + $toggle_aria_label_open, + $toggle_aria_label_close, + esc_attr( implode( ' ', $responsive_container_classes ) ), + esc_attr( implode( ' ', $open_button_classes ) ), + esc_attr( safecss_filter_attr( $colors['overlay_inline_styles'] ) ), + $toggle_button_content, + $toggle_close_button_content, + $open_button_directives, + $responsive_container_directives, + $responsive_dialog_directives, + $close_button_directives, + $responsive_container_content_directives + ); + } + + /** + * Get the wrapper attributes + * + * @param array $attributes The block attributes. + * @param WP_Block_List $inner_blocks A list of inner blocks. + * @return string Returns the navigation block markup. + */ + private static function get_nav_wrapper_attributes( $attributes, $inner_blocks ) { + $nav_menu_name = static::get_unique_navigation_name( $attributes ); + $is_interactive = static::is_interactive( $attributes, $inner_blocks ); + $is_responsive_menu = static::is_responsive( $attributes ); + $style = static::get_styles( $attributes ); + $class = static::get_classes( $attributes ); + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => $class, + 'style' => $style, + 'aria-label' => $nav_menu_name, + ) + ); + + if ( $is_responsive_menu ) { + $nav_element_directives = static::get_nav_element_directives( $is_interactive, $attributes ); + $wrapper_attributes .= ' ' . $nav_element_directives; + } + + return $wrapper_attributes; + } + + /** + * Gets the nav element directives. + * + * @param bool $is_interactive Whether the block is interactive. + * @param array $attributes The block attributes. + * @return string the directives for the navigation element. + */ + private static function get_nav_element_directives( $is_interactive, $attributes ) { + if ( ! $is_interactive ) { + return ''; + } + // When adding to this array be mindful of security concerns. + $nav_element_context = wp_json_encode( + array( + 'overlayOpenedBy' => array(), + 'type' => 'overlay', + 'roleAttribute' => '', + 'ariaLabel' => __( 'Menu' ), + ), + JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP + ); + $nav_element_directives = ' + data-wp-interactive=\'{"namespace":"core/navigation"}\' + data-wp-context=\'' . $nav_element_context . '\' + '; + + /* + * When the navigation's 'overlayMenu' attribute is set to 'always', JavaScript + * is not needed for collapsing the menu because the class is set manually. + */ + if ( ! static::is_always_overlay( $attributes ) ) { + $nav_element_directives .= 'data-wp-init="callbacks.initNav"'; + $nav_element_directives .= ' '; // space separator + $nav_element_directives .= 'data-wp-class--is-collapsed="context.isCollapsed"'; + } + + return $nav_element_directives; + } + + /** + * Handle view script module loading. + * + * @param array $attributes The block attributes. + * @param WP_Block $block The parsed block. + * @param WP_Block_List $inner_blocks The list of inner blocks. + */ + private static function handle_view_script_module_loading( $attributes, $block, $inner_blocks ) { + if ( static::is_interactive( $attributes, $inner_blocks ) ) { + wp_enqueue_script_module( '@wordpress/block-library/navigation' ); + } + } + + /** + * Returns the markup for the navigation block. + * + * @param array $attributes The block attributes. + * @param WP_Block_List $inner_blocks The list of inner blocks. + * @return string Returns the navigation wrapper markup. + */ + private static function get_wrapper_markup( $attributes, $inner_blocks ) { + $inner_blocks_html = static::get_inner_blocks_html( $attributes, $inner_blocks ); + if ( static::is_responsive( $attributes ) ) { + return static::get_responsive_container_markup( $attributes, $inner_blocks, $inner_blocks_html ); + } + return $inner_blocks_html; + } + + /** + * Returns a unique name for the navigation. + * + * @param array $attributes The block attributes. + * @return string Returns a unique name for the navigation. + */ + private static function get_unique_navigation_name( $attributes ) { + $nav_menu_name = static::get_navigation_name( $attributes ); + + // If the menu name has been used previously then append an ID + // to the name to ensure uniqueness across a given post. + if ( isset( static::$seen_menu_names[ $nav_menu_name ] ) && static::$seen_menu_names[ $nav_menu_name ] > 1 ) { + $count = static::$seen_menu_names[ $nav_menu_name ]; + $nav_menu_name = $nav_menu_name . ' ' . ( $count ); + } + + return $nav_menu_name; + } + + /** + * Renders the navigation block. + * + * @param array $attributes The block attributes. + * @param string $content The saved content. + * @param WP_Block $block The parsed block. + * @return string Returns the navigation block markup. + */ + public static function render( $attributes, $content, $block ) { + /** + * Deprecated: + * The rgbTextColor and rgbBackgroundColor attributes + * have been deprecated in favor of + * customTextColor and customBackgroundColor ones. + * Move the values from old attrs to the new ones. + */ + if ( isset( $attributes['rgbTextColor'] ) && empty( $attributes['textColor'] ) ) { + $attributes['customTextColor'] = $attributes['rgbTextColor']; + } + + if ( isset( $attributes['rgbBackgroundColor'] ) && empty( $attributes['backgroundColor'] ) ) { + $attributes['customBackgroundColor'] = $attributes['rgbBackgroundColor']; + } + + unset( $attributes['rgbTextColor'], $attributes['rgbBackgroundColor'] ); + + $inner_blocks = static::get_inner_blocks( $attributes, $block ); + // Prevent navigation blocks referencing themselves from rendering. + if ( block_core_navigation_block_contains_core_navigation( $inner_blocks ) ) { + return ''; + } + + static::handle_view_script_module_loading( $attributes, $block, $inner_blocks ); + + return sprintf( + '', + static::get_nav_wrapper_attributes( $attributes, $inner_blocks ), + static::get_wrapper_markup( $attributes, $inner_blocks ) + ); + } +} + // These functions are used for the __unstableLocation feature and only active // when the gutenberg plugin is active. if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { @@ -349,6 +991,17 @@ function block_core_navigation_get_fallback_blocks() { // Normalizing blocks may result in an empty array of blocks if they were all `null` blocks. // In this case default to the (Page List) fallback. $fallback_blocks = ! empty( $maybe_fallback ) ? $maybe_fallback : $fallback_blocks; + + if ( function_exists( 'get_hooked_blocks' ) ) { + // Run Block Hooks algorithm to inject hooked blocks. + // We have to run it here because we need the post ID of the Navigation block to track ignored hooked blocks. + $markup = block_core_navigation_insert_hooked_blocks( $fallback_blocks, $navigation_post ); + $blocks = parse_blocks( $markup ); + + if ( isset( $blocks[0]['innerBlocks'] ) ) { + $fallback_blocks = $blocks[0]['innerBlocks']; + } + } } /** @@ -360,7 +1013,7 @@ function block_core_navigation_get_fallback_blocks() { * * @since 5.9.0 * - * @param array[] default fallback blocks provided by the default block mechanic. + * @param array[] $fallback_blocks default fallback blocks provided by the default block mechanic. */ return apply_filters( 'block_core_navigation_render_fallback', $fallback_blocks ); } @@ -427,14 +1080,12 @@ function register_block_core_navigation() { ) ); - if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { - gutenberg_register_module( - '@wordpress/block-library/navigation-block', - gutenberg_url( '/build/interactivity/navigation.min.js' ), - array( '@wordpress/interactivity' ), - defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) - ); - } + wp_register_script_module( + '@wordpress/block-library/navigation', + defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ? gutenberg_url( '/build/interactivity/navigation.min.js' ) : includes_url( 'blocks/navigation/view.min.js' ), + array( '@wordpress/interactivity' ), + defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) + ); } add_action( 'init', 'register_block_core_navigation' ); @@ -473,25 +1124,6 @@ function block_core_navigation_typographic_presets_backcompatibility( $parsed_bl add_filter( 'render_block_data', 'block_core_navigation_typographic_presets_backcompatibility' ); -/** - * Ensure that the view script has the `wp-interactivity` dependency. - * - * @since 6.4.0 - * - * @global WP_Scripts $wp_scripts - */ -function block_core_navigation_ensure_interactivity_dependency() { - global $wp_scripts; - if ( - isset( $wp_scripts->registered['wp-block-navigation-view'] ) && - ! in_array( 'wp-interactivity', $wp_scripts->registered['wp-block-navigation-view']->deps, true ) - ) { - $wp_scripts->registered['wp-block-navigation-view']->deps[] = 'wp-interactivity'; - } -} - -add_action( 'wp_print_scripts', 'block_core_navigation_ensure_interactivity_dependency' ); - /** * Turns menu item data into a nested array of parsed blocks * @@ -710,3 +1342,120 @@ function block_core_navigation_get_most_recently_published_navigation() { return null; } + +/** + * Insert hooked blocks into a Navigation block. + * + * Given a Navigation block's inner blocks and its corresponding `wp_navigation` post object, + * this function inserts hooked blocks into it, and returns the serialized inner blocks in a + * mock Navigation block wrapper. + * + * If there are any hooked blocks that need to be inserted as the Navigation block's first or last + * children, the `wp_navigation` post's `_wp_ignored_hooked_blocks` meta is checked to see if any + * of those hooked blocks should be exempted from insertion. + * + * @param array $inner_blocks Parsed inner blocks of a Navigation block. + * @param WP_Post $post `wp_navigation` post object corresponding to the block. + * @return string Serialized inner blocks in mock Navigation block wrapper, with hooked blocks inserted, if any. + */ +function block_core_navigation_insert_hooked_blocks( $inner_blocks, $post = null ) { + $before_block_visitor = null; + $after_block_visitor = null; + $hooked_blocks = get_hooked_blocks(); + $attributes = array(); + + if ( isset( $post->ID ) ) { + $ignored_hooked_blocks = get_post_meta( $post->ID, '_wp_ignored_hooked_blocks', true ); + if ( ! empty( $ignored_hooked_blocks ) ) { + $ignored_hooked_blocks = json_decode( $ignored_hooked_blocks, true ); + $attributes['metadata'] = array( + 'ignoredHookedBlocks' => $ignored_hooked_blocks, + ); + } + } + + $mock_anchor_parent_block = array( + 'blockName' => 'core/navigation', + 'attrs' => $attributes, + 'innerBlocks' => $inner_blocks, + 'innerContent' => array_fill( 0, count( $inner_blocks ), null ), + ); + $before_block_visitor = null; + $after_block_visitor = null; + + if ( ! empty( $hooked_blocks ) || has_filter( 'hooked_block_types' ) ) { + $before_block_visitor = make_before_block_visitor( $hooked_blocks, $post ); + $after_block_visitor = make_after_block_visitor( $hooked_blocks, $post ); + } + + return traverse_and_serialize_block( $mock_anchor_parent_block, $before_block_visitor, $after_block_visitor ); +} + +/** + * Updates the post meta with the list of ignored hooked blocks when the navigation is created or updated via the REST API. + * + * @param WP_Post $post Post object. + */ +function block_core_navigation_update_ignore_hooked_blocks_meta( $post ) { + if ( ! isset( $post->ID ) ) { + return; + } + + // We run the Block Hooks mechanism so it will return the list of ignored hooked blocks + // in the mock root Navigation block's metadata attribute. + // We ignore the rest of the returned `$markup`; `$post->post_content` already has the hooked + // blocks inserted, whereas `$markup` will have them inserted twice. + $blocks = parse_blocks( $post->post_content ); + $markup = block_core_navigation_insert_hooked_blocks( $blocks, $post ); + $root_nav_block = parse_blocks( $markup )[0]; + $ignored_hooked_blocks = isset( $root_nav_block['attrs']['metadata']['ignoredHookedBlocks'] ) + ? $root_nav_block['attrs']['metadata']['ignoredHookedBlocks'] + : array(); + + if ( ! empty( $ignored_hooked_blocks ) ) { + $existing_ignored_hooked_blocks = get_post_meta( $post->ID, '_wp_ignored_hooked_blocks', true ); + if ( ! empty( $existing_ignored_hooked_blocks ) ) { + $existing_ignored_hooked_blocks = json_decode( $existing_ignored_hooked_blocks, true ); + $ignored_hooked_blocks = array_unique( array_merge( $ignored_hooked_blocks, $existing_ignored_hooked_blocks ) ); + } + update_post_meta( $post->ID, '_wp_ignored_hooked_blocks', json_encode( $ignored_hooked_blocks ) ); + } +} + +// Injection of hooked blocks into the Navigation block relies on some functions present in WP >= 6.4 +// that are not present in Gutenberg's WP 6.4 compatibility layer. +if ( function_exists( 'get_hooked_blocks' ) ) { + add_action( 'rest_insert_wp_navigation', 'block_core_navigation_update_ignore_hooked_blocks_meta', 10, 3 ); +} + +/** + * Hooks into the REST API response for the core/navigation block and adds the first and last inner blocks. + * + * @param WP_REST_Response $response The response object. + * @param WP_Post $post Post object. + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response The response object. + */ +function block_core_navigation_insert_hooked_blocks_into_rest_response( $response, $post ) { + if ( ! isset( $response->data['content']['raw'] ) || ! isset( $response->data['content']['rendered'] ) ) { + return $response; + } + $parsed_blocks = parse_blocks( $response->data['content']['raw'] ); + $content = block_core_navigation_insert_hooked_blocks( $parsed_blocks, $post ); + + // Remove mock Navigation block wrapper. + $start = strpos( $content, '-->' ) + strlen( '-->' ); + $end = strrpos( $content, '`. Support these by defaulting an undefined label and @@ -77,39 +77,19 @@ function render_block_core_search( $attributes, $content, $block ) { $input->set_attribute( 'value', get_search_query() ); $input->set_attribute( 'placeholder', $attributes['placeholder'] ); + // If it's interactive, enqueue the script module and add the directives. $is_expandable_searchfield = 'button-only' === $button_position; if ( $is_expandable_searchfield ) { + wp_enqueue_script_module( '@wordpress/block-library/search' ); + $input->set_attribute( 'data-wp-bind--aria-hidden', '!context.isSearchInputVisible' ); $input->set_attribute( 'data-wp-bind--tabindex', 'state.tabindex' ); - // Adding these attributes manually is needed until the Interactivity API SSR logic is added to core. + + // Adding these attributes manually is needed until the Interactivity API + // SSR logic is added to core. $input->set_attribute( 'aria-hidden', 'true' ); $input->set_attribute( 'tabindex', '-1' ); } - - $is_gutenberg_plugin = defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN; - $script_handles = $block->block_type->view_script_handles; - $view_js_file = 'wp-block-search-view'; - - if ( $is_gutenberg_plugin ) { - if ( $is_expandable_searchfield ) { - gutenberg_enqueue_module( '@wordpress/block-library/search-block' ); - } - // Remove the view script because we are using the module. - $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); - } else { - // If the script already exists, there is no point in removing it from viewScript. - if ( ! wp_script_is( $view_js_file ) ) { - - // If the script is not needed, and it is still in the `view_script_handles`, remove it. - if ( ! $is_expandable_searchfield && in_array( $view_js_file, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); - } - // If the script is needed, but it was previously removed, add it again. - if ( $is_expandable_searchfield && ! in_array( $view_js_file, $script_handles, true ) ) { - $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); - } - } - } } if ( count( $query_params ) > 0 ) { @@ -159,7 +139,9 @@ function render_block_core_search( $attributes, $content, $block ) { $button->set_attribute( 'data-wp-bind--aria-expanded', 'context.isSearchInputVisible' ); $button->set_attribute( 'data-wp-bind--type', 'state.type' ); $button->set_attribute( 'data-wp-on--click', 'actions.openSearchInput' ); - // Adding these attributes manually is needed until the Interactivity API SSR logic is added to core. + + // Adding these attributes manually is needed until the Interactivity + // API SSR logic is added to core. $button->set_attribute( 'aria-label', __( 'Expand search field' ) ); $button->set_attribute( 'aria-controls', 'wp-block-search__input-' . $input_id ); $button->set_attribute( 'aria-expanded', 'false' ); @@ -181,6 +163,8 @@ function render_block_core_search( $attributes, $content, $block ) { array( 'class' => $classnames ) ); $form_directives = ''; + + // If it's interactive, add the directives. if ( $is_expandable_searchfield ) { $aria_label_expanded = __( 'Submit Search' ); $aria_label_collapsed = __( 'Expand search field' ); @@ -213,14 +197,12 @@ function register_block_core_search() { ) ); - if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { - gutenberg_register_module( - '@wordpress/block-library/search-block', - gutenberg_url( '/build/interactivity/search.min.js' ), - array( '@wordpress/interactivity' ), - defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) - ); - } + wp_register_script_module( + '@wordpress/block-library/search', + defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ? gutenberg_url( '/build/interactivity/search.min.js' ) : includes_url( 'blocks/search/view.min.js' ), + array( '@wordpress/interactivity' ), + defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) + ); } add_action( 'init', 'register_block_core_search' ); diff --git a/src/wp-includes/blocks/search/block.json b/src/wp-includes/blocks/search/block.json index 15531475adc9a..8d5e208045068 100644 --- a/src/wp-includes/blocks/search/block.json +++ b/src/wp-includes/blocks/search/block.json @@ -87,7 +87,6 @@ }, "html": false }, - "viewScript": "file:./view.min.js", "editorStyle": "wp-block-search-editor", "style": "wp-block-search" } diff --git a/src/wp-includes/blocks/template-part.php b/src/wp-includes/blocks/template-part.php index 0c97f88b98e38..86a17f33c92f3 100644 --- a/src/wp-includes/blocks/template-part.php +++ b/src/wp-includes/blocks/template-part.php @@ -281,8 +281,8 @@ function register_block_core_template_part() { register_block_type_from_metadata( __DIR__ . '/template-part', array( - 'render_callback' => 'render_block_core_template_part', - 'variations' => build_template_part_block_variations(), + 'render_callback' => 'render_block_core_template_part', + 'variation_callback' => 'build_template_part_block_variations', ) ); } From 6b41f76b3abe5d7e3dbcc3264643648e1ca55d44 Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Thu, 25 Jan 2024 14:38:58 +0100 Subject: [PATCH 12/20] Add the preferences style handle --- src/wp-includes/script-loader.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php index a63fa2485018e..50864cfd7ba7f 100644 --- a/src/wp-includes/script-loader.php +++ b/src/wp-includes/script-loader.php @@ -1714,7 +1714,7 @@ function wp_default_styles( $styles ) { ); $package_styles = array( - 'block-editor' => array( 'wp-components' ), + 'block-editor' => array( 'wp-components', 'wp-preferences' ), 'block-library' => array(), 'block-directory' => array(), 'components' => array(), @@ -1726,17 +1726,20 @@ function wp_default_styles( $styles ) { 'wp-edit-blocks', 'wp-block-library', 'wp-commands', + 'wp-preferences', ), 'editor' => array( 'wp-components', 'wp-block-editor', 'wp-reusable-blocks', 'wp-patterns', + 'wp-preferences', ), 'format-library' => array(), 'list-reusable-blocks' => array( 'wp-components' ), 'reusable-blocks' => array( 'wp-components' ), 'patterns' => array( 'wp-components' ), + 'preferences' => array( 'wp-components' ), 'nux' => array( 'wp-components' ), 'widgets' => array( 'wp-components', @@ -1748,6 +1751,7 @@ function wp_default_styles( $styles ) { 'wp-block-library', 'wp-reusable-blocks', 'wp-patterns', + 'wp-preferences', ), 'customize-widgets' => array( 'wp-widgets', @@ -1756,12 +1760,14 @@ function wp_default_styles( $styles ) { 'wp-block-library', 'wp-reusable-blocks', 'wp-patterns', + 'wp-preferences', ), 'edit-site' => array( 'wp-components', 'wp-block-editor', 'wp-edit-blocks', 'wp-commands', + 'wp-preferences', ), ); From c5f0b57bd127bad95ef6fb3563b2bd3bd1febf4d Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Thu, 25 Jan 2024 15:25:19 +0100 Subject: [PATCH 13/20] Fix quote output --- .../data/blocks/fixtures/core__quote__style-1.server.html | 2 +- .../data/blocks/fixtures/core__quote__style-2.server.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/phpunit/data/blocks/fixtures/core__quote__style-1.server.html b/tests/phpunit/data/blocks/fixtures/core__quote__style-1.server.html index 369cebb77dbee..9bfb5f14a8577 100644 --- a/tests/phpunit/data/blocks/fixtures/core__quote__style-1.server.html +++ b/tests/phpunit/data/blocks/fixtures/core__quote__style-1.server.html @@ -1,3 +1,3 @@ -

    The editor will endeavour to create a new page and post building experience that makes writing rich posts effortless, and has “blocks” to make it easy what today might take shortcodes, custom HTML, or “mystery meat” embed discovery.

    Matt Mullenweg, 2017
    +

    The editor will endeavour to create a new page and post building experience that makes writing rich posts effortless, and has “blocks” to make it easy what today might take shortcodes, custom HTML, or “mystery meat” embed discovery.

    Matt Mullenweg, 2017
    diff --git a/tests/phpunit/data/blocks/fixtures/core__quote__style-2.server.html b/tests/phpunit/data/blocks/fixtures/core__quote__style-2.server.html index f75ac8088bedd..0a58628dbcfb8 100644 --- a/tests/phpunit/data/blocks/fixtures/core__quote__style-2.server.html +++ b/tests/phpunit/data/blocks/fixtures/core__quote__style-2.server.html @@ -1,3 +1,3 @@ -

    There is no greater agony than bearing an untold story inside you.

    Maya Angelou
    +

    There is no greater agony than bearing an untold story inside you.

    Maya Angelou
    From 4bb57824ecbc952f09d1c2aab909e0ff59e905a3 Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Mon, 29 Jan 2024 09:23:03 +0100 Subject: [PATCH 14/20] Increase the phpunit timeout --- .github/workflows/phpunit-tests-run.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/phpunit-tests-run.yml b/.github/workflows/phpunit-tests-run.yml index cdedb4527379e..9ead1ddfe777a 100644 --- a/.github/workflows/phpunit-tests-run.yml +++ b/.github/workflows/phpunit-tests-run.yml @@ -76,7 +76,7 @@ jobs: phpunit-tests: name: PHP ${{ inputs.php }} / ${{ 'mariadb' == inputs.db-type && 'MariaDB' || 'MySQL' }} ${{ inputs.db-version }}${{ inputs.multisite && ' multisite' || '' }}${{ inputs.memcached && ' with memcached' || '' }}${{ inputs.report && ' (test reporting enabled)' || '' }} runs-on: ${{ inputs.os }} - timeout-minutes: 20 + timeout-minutes: 30 steps: - name: Configure environment variables From 93abbc1c814b39507777caee94b90317a64a511e Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Mon, 29 Jan 2024 09:37:22 +0100 Subject: [PATCH 15/20] Update script loader packages post rebase --- src/wp-includes/assets/script-loader-packages.min.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/assets/script-loader-packages.min.php b/src/wp-includes/assets/script-loader-packages.min.php index 1ae002204dedb..bbbbec8b98656 100644 --- a/src/wp-includes/assets/script-loader-packages.min.php +++ b/src/wp-includes/assets/script-loader-packages.min.php @@ -1 +1 @@ - array('dependencies' => array('wp-dom-ready', 'wp-i18n', 'wp-polyfill'), 'version' => 'd90eebea464f6c09bfd5'), 'annotations.min.js' => array('dependencies' => array('wp-data', 'wp-hooks', 'wp-i18n', 'wp-polyfill', 'wp-rich-text'), 'version' => 'ffc4fc3374b0ab000805'), 'api-fetch.min.js' => array('dependencies' => array('wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '7adefb5a2462c9794332'), 'autop.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '9fb50649848277dd318d'), 'blob.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '4839ed746deca49ab64b'), 'block-directory.min.js' => array('dependencies' => array('wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-primitives', 'wp-url'), 'version' => 'e2591f24f76e26e1fa71'), 'block-editor.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-a11y', 'wp-api-fetch', 'wp-blob', 'wp-blocks', 'wp-commands', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-notices', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-shortcode', 'wp-style-engine', 'wp-token-list', 'wp-url', 'wp-warning', 'wp-wordcount'), 'version' => '0eab6d89da382fce4994'), 'block-library.min.js' => array('dependencies' => array('wp-a11y', 'wp-api-fetch', 'wp-autop', 'wp-blob', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keycodes', 'wp-notices', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-server-side-render', 'wp-url', 'wp-viewport', 'wp-wordcount'), 'version' => '7026615731f5919df7eb'), 'block-serialization-default-parser.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '14d44daebf663d05d330'), 'blocks.min.js' => array('dependencies' => array('wp-autop', 'wp-blob', 'wp-block-serialization-default-parser', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-private-apis', 'wp-shortcode'), 'version' => 'd132346e438a85295544'), 'commands.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-polyfill', 'wp-primitives', 'wp-private-apis'), 'version' => '8491b973b1428d71c03a'), 'components.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-a11y', 'wp-compose', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keycodes', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-warning'), 'version' => '0e5b6d2301dd36a27944'), 'compose.min.js' => array('dependencies' => array('react', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-is-shallow-equal', 'wp-keycodes', 'wp-polyfill', 'wp-priority-queue'), 'version' => 'f3f1356a04332a61ecf4'), 'core-commands.min.js' => array('dependencies' => array('wp-commands', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-router', 'wp-url'), 'version' => '14e55fdb97702146a400'), 'core-data.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-private-apis', 'wp-url'), 'version' => '45a906a457e78cdba465'), 'customize-widgets.min.js' => array('dependencies' => array('wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-widgets'), 'version' => '272384cd368be9ad542e'), 'data.min.js' => array('dependencies' => array('wp-compose', 'wp-deprecated', 'wp-element', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-priority-queue', 'wp-private-apis', 'wp-redux-routine'), 'version' => 'eecae3034d0f86dd057a'), 'data-controls.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-data', 'wp-deprecated', 'wp-polyfill'), 'version' => '49f5587e8b90f9e7cc7e'), 'date.min.js' => array('dependencies' => array('moment', 'wp-deprecated', 'wp-polyfill'), 'version' => 'ddd596bc6f2a45364bf2'), 'deprecated.min.js' => array('dependencies' => array('wp-hooks', 'wp-polyfill'), 'version' => 'e1f84915c5e8ae38964c'), 'dom.min.js' => array('dependencies' => array('wp-deprecated', 'wp-polyfill'), 'version' => '32d208f6a07c17446a20'), 'dom-ready.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'f77871ff7694fffea381'), 'edit-post.min.js' => array('dependencies' => array('wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-commands', 'wp-components', 'wp-compose', 'wp-core-commands', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-url', 'wp-viewport', 'wp-warning', 'wp-widgets'), 'version' => '028535d245a56e208021'), 'edit-site.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-commands', 'wp-components', 'wp-compose', 'wp-core-commands', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-editor', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-patterns', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-reusable-blocks', 'wp-router', 'wp-url', 'wp-viewport', 'wp-widgets', 'wp-wordcount'), 'version' => '73c99f27f045e755bdac'), 'edit-widgets.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-patterns', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-url', 'wp-viewport', 'wp-widgets'), 'version' => 'aa1b19232fd47b71966b'), 'editor.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-blob', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-patterns', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-server-side-render', 'wp-url', 'wp-wordcount'), 'version' => '8710448d3b72583dd74f'), 'element.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-escape-html', 'wp-polyfill'), 'version' => '9c7e1c05c67e37a69170'), 'escape-html.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '6561a406d2d232a6fbd2'), 'format-library.min.js' => array('dependencies' => array('wp-a11y', 'wp-block-editor', 'wp-components', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-polyfill', 'wp-primitives', 'wp-rich-text', 'wp-url'), 'version' => 'fd31f045f591d044ded2'), 'hooks.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '2810c76e705dd1a53b18'), 'html-entities.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '2cd3358363e0675638fb'), 'i18n.min.js' => array('dependencies' => array('wp-hooks', 'wp-polyfill'), 'version' => 'aee497d955fe7a29a7d6'), 'is-shallow-equal.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'e0f9f1d78d83f5196979'), 'keyboard-shortcuts.min.js' => array('dependencies' => array('wp-data', 'wp-element', 'wp-keycodes', 'wp-polyfill'), 'version' => '8d0cd13e3bb370f72d8a'), 'keycodes.min.js' => array('dependencies' => array('wp-i18n', 'wp-polyfill'), 'version' => '7e17818b141ff8f0eb95'), 'list-reusable-blocks.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-components', 'wp-compose', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => '52bc479bbcfc2f9376f5'), 'media-utils.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-blob', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => '3725b3cbc9d67853fce2'), 'notices.min.js' => array('dependencies' => array('wp-data', 'wp-polyfill'), 'version' => '673a68a7ac2f556ed50b'), 'nux.min.js' => array('dependencies' => array('wp-components', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives'), 'version' => '891d09ac9ffb76e20107'), 'patterns.min.js' => array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-notices', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-url'), 'version' => '110b479ee757d6c5102a'), 'plugins.min.js' => array('dependencies' => array('wp-compose', 'wp-element', 'wp-hooks', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-primitives'), 'version' => '3f319c2d963a64a180e3'), 'preferences.min.js' => array('dependencies' => array('wp-a11y', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives'), 'version' => '2cbf4a1104ebd69652a8'), 'preferences-persistence.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-polyfill'), 'version' => '5171fd253f5534917b6c'), 'primitives.min.js' => array('dependencies' => array('wp-element', 'wp-polyfill'), 'version' => '81082ab8cc08e6b73043'), 'priority-queue.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '391948bb0355121a7f52'), 'private-apis.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'a1c8c4111a1fd184e339'), 'redux-routine.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '72ec9ed71190c996fe2e'), 'reusable-blocks.min.js' => array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-url'), 'version' => '712cfe76fe540b7f2041'), 'rich-text.min.js' => array('dependencies' => array('wp-a11y', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-escape-html', 'wp-i18n', 'wp-keycodes', 'wp-polyfill'), 'version' => 'b8d4c74474407d65e6ea'), 'router.min.js' => array('dependencies' => array('wp-element', 'wp-polyfill', 'wp-private-apis', 'wp-url'), 'version' => '302b2c8e0982112d17f0'), 'server-side-render.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '11791fb851599a57f732'), 'shortcode.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'b7747eee0efafd2f0c3b'), 'style-engine.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '96ab95de891a22e6fa5a'), 'token-list.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '05f8a6df6258f0081718'), 'undo-manager.min.js' => array('dependencies' => array('wp-is-shallow-equal', 'wp-polyfill'), 'version' => 'f1701372eeeb8b605515'), 'url.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '30eb0a160d0e9993a073'), 'viewport.min.js' => array('dependencies' => array('wp-compose', 'wp-data', 'wp-element', 'wp-polyfill'), 'version' => '8222fccb0a9b934986c5'), 'warning.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'ed7c8b0940914f4fe44b'), 'widgets.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-polyfill', 'wp-primitives'), 'version' => 'c6d0bd07e3eebf0d82d6'), 'wordcount.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '55d8c2bf3dc99e7ea5ec')); + array('dependencies' => array('wp-dom-ready', 'wp-i18n', 'wp-polyfill'), 'version' => 'd90eebea464f6c09bfd5'), 'annotations.min.js' => array('dependencies' => array('wp-data', 'wp-hooks', 'wp-i18n', 'wp-polyfill', 'wp-rich-text'), 'version' => 'ffc4fc3374b0ab000805'), 'api-fetch.min.js' => array('dependencies' => array('wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '4c185334c5ec26e149cc'), 'autop.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '9fb50649848277dd318d'), 'blob.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '9113eed771d446f4a556'), 'block-directory.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-url'), 'version' => '9159053f41b8ec09d91b'), 'block-editor.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-a11y', 'wp-api-fetch', 'wp-blob', 'wp-blocks', 'wp-commands', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-notices', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-style-engine', 'wp-token-list', 'wp-url', 'wp-warning', 'wp-wordcount'), 'version' => '69980a3264510fc18d69'), 'block-library.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-autop', 'wp-blob', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keycodes', 'wp-notices', 'wp-patterns', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-server-side-render', 'wp-url', 'wp-viewport', 'wp-wordcount'), 'version' => '54f97f4073fca70c8eef'), 'block-serialization-default-parser.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '14d44daebf663d05d330'), 'blocks.min.js' => array('dependencies' => array('react', 'wp-autop', 'wp-blob', 'wp-block-serialization-default-parser', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-private-apis', 'wp-rich-text', 'wp-shortcode'), 'version' => '64a9ab28b62423f79e07'), 'commands.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-polyfill', 'wp-primitives', 'wp-private-apis'), 'version' => '0674417708cae5031b37'), 'components.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-a11y', 'wp-compose', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keycodes', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-warning'), 'version' => '629594950877ccba0f43'), 'compose.min.js' => array('dependencies' => array('react', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-is-shallow-equal', 'wp-keycodes', 'wp-polyfill', 'wp-priority-queue'), 'version' => '1f65d1d8719bc97357e7'), 'core-commands.min.js' => array('dependencies' => array('react', 'wp-commands', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-router', 'wp-url'), 'version' => 'dbbc54588f73c5b23fa3'), 'core-data.min.js' => array('dependencies' => array('react', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-private-apis', 'wp-rich-text', 'wp-url'), 'version' => 'dba2ea4cdd526475d52a'), 'customize-widgets.min.js' => array('dependencies' => array('react', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-widgets'), 'version' => 'a44197f146efda4b8ad1'), 'data.min.js' => array('dependencies' => array('react', 'wp-compose', 'wp-deprecated', 'wp-element', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-priority-queue', 'wp-private-apis', 'wp-redux-routine'), 'version' => '70790e390a9624c9cef4'), 'data-controls.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-data', 'wp-deprecated', 'wp-polyfill'), 'version' => '49f5587e8b90f9e7cc7e'), 'date.min.js' => array('dependencies' => array('moment', 'wp-deprecated', 'wp-polyfill'), 'version' => 'ddd596bc6f2a45364bf2'), 'deprecated.min.js' => array('dependencies' => array('wp-hooks', 'wp-polyfill'), 'version' => 'e1f84915c5e8ae38964c'), 'dom.min.js' => array('dependencies' => array('wp-deprecated', 'wp-polyfill'), 'version' => '4ecffbffba91b10c5c7a'), 'dom-ready.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'f77871ff7694fffea381'), 'edit-post.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-commands', 'wp-components', 'wp-compose', 'wp-core-commands', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-url', 'wp-viewport', 'wp-warning', 'wp-widgets'), 'version' => '853f8e34ea880df35bdd'), 'edit-site.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-blob', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-commands', 'wp-components', 'wp-compose', 'wp-core-commands', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-editor', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-patterns', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-reusable-blocks', 'wp-router', 'wp-url', 'wp-viewport', 'wp-widgets', 'wp-wordcount'), 'version' => '5a5096049a263de38add'), 'edit-widgets.min.js' => array('dependencies' => array('react', 'wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-patterns', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-url', 'wp-viewport', 'wp-widgets'), 'version' => '863e8bac0af20fba6e4a'), 'editor.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-blob', 'wp-block-editor', 'wp-blocks', 'wp-commands', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-patterns', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-server-side-render', 'wp-url', 'wp-wordcount'), 'version' => '6a00a5b42735b6a1b507'), 'element.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-escape-html', 'wp-polyfill'), 'version' => '603185df201aa54181a6'), 'escape-html.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '6561a406d2d232a6fbd2'), 'format-library.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-block-editor', 'wp-components', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-url'), 'version' => 'f2c401cc63ed8a35897d'), 'hooks.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '2810c76e705dd1a53b18'), 'html-entities.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '2cd3358363e0675638fb'), 'i18n.min.js' => array('dependencies' => array('wp-hooks', 'wp-polyfill'), 'version' => 'aee497d955fe7a29a7d6'), 'interactivity-router.min.js' => array('dependencies' => array('wp-interactivity', 'wp-polyfill'), 'version' => '184493be110bb3cd656c'), 'is-shallow-equal.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'e0f9f1d78d83f5196979'), 'keyboard-shortcuts.min.js' => array('dependencies' => array('react', 'wp-data', 'wp-element', 'wp-keycodes', 'wp-polyfill'), 'version' => '4d239ebc17efd846a168'), 'keycodes.min.js' => array('dependencies' => array('wp-i18n', 'wp-polyfill'), 'version' => '034ff647a54b018581d3'), 'list-reusable-blocks.min.js' => array('dependencies' => array('react', 'wp-api-fetch', 'wp-blob', 'wp-components', 'wp-compose', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => 'b9d73b532124daefd2c7'), 'media-utils.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-blob', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => '03fbd6c4f505a9385efe'), 'notices.min.js' => array('dependencies' => array('wp-data', 'wp-polyfill'), 'version' => '673a68a7ac2f556ed50b'), 'nux.min.js' => array('dependencies' => array('react', 'wp-components', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives'), 'version' => '46c93a71c3e2c2bf37f0'), 'patterns.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-notices', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-url'), 'version' => '181de8f9e2b40fca351b'), 'plugins.min.js' => array('dependencies' => array('react', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-primitives'), 'version' => '2d369cbfdcb887111e06'), 'preferences.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-components', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives', 'wp-private-apis'), 'version' => '3f5baaf6d334123043d3'), 'preferences-persistence.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-polyfill'), 'version' => '3f5184d775ed9dfb154f'), 'primitives.min.js' => array('dependencies' => array('wp-element', 'wp-polyfill'), 'version' => '81082ab8cc08e6b73043'), 'priority-queue.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '391948bb0355121a7f52'), 'private-apis.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '5e7fdf55d04b8c2aadef'), 'redux-routine.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '72ec9ed71190c996fe2e'), 'reusable-blocks.min.js' => array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-url'), 'version' => '008366ba172a4f4b92b4'), 'rich-text.min.js' => array('dependencies' => array('wp-a11y', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-escape-html', 'wp-i18n', 'wp-keycodes', 'wp-polyfill'), 'version' => '88a44b54270a7c0b39eb'), 'router.min.js' => array('dependencies' => array('react', 'wp-element', 'wp-polyfill', 'wp-private-apis', 'wp-url'), 'version' => '92fd517f31b92695552a'), 'server-side-render.min.js' => array('dependencies' => array('react', 'wp-api-fetch', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '8e53ef39c9065ebf9e46'), 'shortcode.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'b7747eee0efafd2f0c3b'), 'style-engine.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '5bd98acb9813a2d90abf'), 'token-list.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '05f8a6df6258f0081718'), 'undo-manager.min.js' => array('dependencies' => array('wp-is-shallow-equal', 'wp-polyfill'), 'version' => 'f1701372eeeb8b605515'), 'url.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'f93d00b28dd08ca5a662'), 'viewport.min.js' => array('dependencies' => array('react', 'wp-compose', 'wp-data', 'wp-polyfill'), 'version' => 'e555fda1d93ecf1fb1e0'), 'warning.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'ed7c8b0940914f4fe44b'), 'widgets.min.js' => array('dependencies' => array('react', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-polyfill', 'wp-primitives'), 'version' => 'c732b69b0507c9a5462b'), 'wordcount.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '55d8c2bf3dc99e7ea5ec')); From c04f1f9d59d3199fb96daf1ec33a9d1891feadde Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Mon, 29 Jan 2024 10:36:52 +0100 Subject: [PATCH 16/20] Tweaking the timeouts --- .github/workflows/phpunit-tests-run.yml | 2 +- .github/workflows/test-old-branches.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/phpunit-tests-run.yml b/.github/workflows/phpunit-tests-run.yml index 9ead1ddfe777a..16a36884202a8 100644 --- a/.github/workflows/phpunit-tests-run.yml +++ b/.github/workflows/phpunit-tests-run.yml @@ -76,7 +76,7 @@ jobs: phpunit-tests: name: PHP ${{ inputs.php }} / ${{ 'mariadb' == inputs.db-type && 'MariaDB' || 'MySQL' }} ${{ inputs.db-version }}${{ inputs.multisite && ' multisite' || '' }}${{ inputs.memcached && ' with memcached' || '' }}${{ inputs.report && ' (test reporting enabled)' || '' }} runs-on: ${{ inputs.os }} - timeout-minutes: 30 + timeout-minutes: 60 steps: - name: Configure environment variables diff --git a/.github/workflows/test-old-branches.yml b/.github/workflows/test-old-branches.yml index a7dc0210f58a7..02de3e67c9e5f 100644 --- a/.github/workflows/test-old-branches.yml +++ b/.github/workflows/test-old-branches.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest permissions: actions: write - timeout-minutes: 20 + timeout-minutes: 60 if: ${{ github.repository == 'WordPress/wordpress-develop' }} strategy: fail-fast: false From d24b38e88845bf7e0b27fe0807dfd1609e3d72d4 Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Mon, 29 Jan 2024 13:26:30 +0100 Subject: [PATCH 17/20] Forcing the local workflow --- .github/workflows/phpunit-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/phpunit-tests.yml b/.github/workflows/phpunit-tests.yml index 15cb91df50422..427f7736c4cfb 100644 --- a/.github/workflows/phpunit-tests.yml +++ b/.github/workflows/phpunit-tests.yml @@ -36,7 +36,7 @@ jobs: # test-with-mysql: name: PHP ${{ matrix.php }} - uses: WordPress/wordpress-develop/.github/workflows/phpunit-tests-run.yml@trunk + uses: youknowriad/wordpress-develop/.github/workflows/phpunit-tests-run.yml@update/packages-65 permissions: contents: read secrets: inherit @@ -88,7 +88,7 @@ jobs: # test-with-mariadb: name: PHP ${{ matrix.php }} - uses: WordPress/wordpress-develop/.github/workflows/phpunit-tests-run.yml@trunk + uses: youknowriad/wordpress-develop/.github/workflows/phpunit-tests-run.yml@update/packages-65 permissions: contents: read secrets: inherit From 97c1be70652ddc48f363bd8bb4e4d34a4db7b7c4 Mon Sep 17 00:00:00 2001 From: Anton Vlasenko Date: Mon, 29 Jan 2024 18:48:21 +0100 Subject: [PATCH 18/20] Revert changes. --- .github/workflows/phpunit-tests-run.yml | 2 +- .github/workflows/phpunit-tests.yml | 4 ++-- .github/workflows/test-old-branches.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/phpunit-tests-run.yml b/.github/workflows/phpunit-tests-run.yml index 16a36884202a8..cdedb4527379e 100644 --- a/.github/workflows/phpunit-tests-run.yml +++ b/.github/workflows/phpunit-tests-run.yml @@ -76,7 +76,7 @@ jobs: phpunit-tests: name: PHP ${{ inputs.php }} / ${{ 'mariadb' == inputs.db-type && 'MariaDB' || 'MySQL' }} ${{ inputs.db-version }}${{ inputs.multisite && ' multisite' || '' }}${{ inputs.memcached && ' with memcached' || '' }}${{ inputs.report && ' (test reporting enabled)' || '' }} runs-on: ${{ inputs.os }} - timeout-minutes: 60 + timeout-minutes: 20 steps: - name: Configure environment variables diff --git a/.github/workflows/phpunit-tests.yml b/.github/workflows/phpunit-tests.yml index 427f7736c4cfb..15cb91df50422 100644 --- a/.github/workflows/phpunit-tests.yml +++ b/.github/workflows/phpunit-tests.yml @@ -36,7 +36,7 @@ jobs: # test-with-mysql: name: PHP ${{ matrix.php }} - uses: youknowriad/wordpress-develop/.github/workflows/phpunit-tests-run.yml@update/packages-65 + uses: WordPress/wordpress-develop/.github/workflows/phpunit-tests-run.yml@trunk permissions: contents: read secrets: inherit @@ -88,7 +88,7 @@ jobs: # test-with-mariadb: name: PHP ${{ matrix.php }} - uses: youknowriad/wordpress-develop/.github/workflows/phpunit-tests-run.yml@update/packages-65 + uses: WordPress/wordpress-develop/.github/workflows/phpunit-tests-run.yml@trunk permissions: contents: read secrets: inherit diff --git a/.github/workflows/test-old-branches.yml b/.github/workflows/test-old-branches.yml index 02de3e67c9e5f..a7dc0210f58a7 100644 --- a/.github/workflows/test-old-branches.yml +++ b/.github/workflows/test-old-branches.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest permissions: actions: write - timeout-minutes: 60 + timeout-minutes: 20 if: ${{ github.repository == 'WordPress/wordpress-develop' }} strategy: fail-fast: false From 44ff77a69a02157f6af77f9d781f77c38abde96b Mon Sep 17 00:00:00 2001 From: Anton Vlasenko Date: Mon, 29 Jan 2024 19:15:26 +0100 Subject: [PATCH 19/20] Comment out. --- src/wp-includes/blocks/navigation-link.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/blocks/navigation-link.php b/src/wp-includes/blocks/navigation-link.php index 71ef26b630d51..d5411b2626e55 100644 --- a/src/wp-includes/blocks/navigation-link.php +++ b/src/wp-includes/blocks/navigation-link.php @@ -432,11 +432,11 @@ function register_block_core_navigation_link() { add_action( 'init', 'register_block_core_navigation_link' ); // Register actions for all post types and taxonomies, to add variations when they are registered. // All post types/taxonomies registered before register_block_core_navigation_link, will be handled by that function. -add_action( 'registered_post_type', 'block_core_navigation_link_register_post_type_variation', 10, 2 ); -add_action( 'registered_taxonomy', 'block_core_navigation_link_register_taxonomy_variation', 10, 3 ); -// Handle unregistering of post types and taxonomies and remove the variations. -add_action( 'unregistered_post_type', 'block_core_navigation_link_unregister_post_type_variation' ); -add_action( 'unregistered_taxonomy', 'block_core_navigation_link_unregister_taxonomy_variation' ); +//add_action( 'registered_post_type', 'block_core_navigation_link_register_post_type_variation', 10, 2 ); +//add_action( 'registered_taxonomy', 'block_core_navigation_link_register_taxonomy_variation', 10, 3 ); +//// Handle unregistering of post types and taxonomies and remove the variations. +//add_action( 'unregistered_post_type', 'block_core_navigation_link_unregister_post_type_variation' ); +//add_action( 'unregistered_taxonomy', 'block_core_navigation_link_unregister_taxonomy_variation' ); /** * Register custom post type variations for navigation link on post type registration From 92481094e1efc416a9c9ee7ae5b1d90a6098a3c1 Mon Sep 17 00:00:00 2001 From: Anton Vlasenko Date: Mon, 29 Jan 2024 21:46:39 +0100 Subject: [PATCH 20/20] Debug docker version. --- .github/workflows/phpunit-tests-run.yml | 1 + .github/workflows/phpunit-tests.yml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/phpunit-tests-run.yml b/.github/workflows/phpunit-tests-run.yml index cdedb4527379e..70b11d03b47aa 100644 --- a/.github/workflows/phpunit-tests-run.yml +++ b/.github/workflows/phpunit-tests-run.yml @@ -146,6 +146,7 @@ jobs: docker-compose run --rm php php -m docker-compose run --rm php php -i docker-compose run --rm php locale -a + node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --version - name: Install WordPress run: npm run env:install diff --git a/.github/workflows/phpunit-tests.yml b/.github/workflows/phpunit-tests.yml index 15cb91df50422..4284996bdbc08 100644 --- a/.github/workflows/phpunit-tests.yml +++ b/.github/workflows/phpunit-tests.yml @@ -36,7 +36,7 @@ jobs: # test-with-mysql: name: PHP ${{ matrix.php }} - uses: WordPress/wordpress-develop/.github/workflows/phpunit-tests-run.yml@trunk + uses: ./.github/workflows/phpunit-tests-run.yml permissions: contents: read secrets: inherit @@ -88,7 +88,7 @@ jobs: # test-with-mariadb: name: PHP ${{ matrix.php }} - uses: WordPress/wordpress-develop/.github/workflows/phpunit-tests-run.yml@trunk + uses: ./.github/workflows/phpunit-tests-run.yml permissions: contents: read secrets: inherit