diff --git a/.gitignore b/.gitignore
index 4cd1d9706b737..1d75f9f429d86 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@ build
build-module
build-style
build-types
+build-wp
node_modules
gutenberg.zip
coverage
diff --git a/backport-changelog/6.8/7895.md b/backport-changelog/6.8/7895.md
new file mode 100644
index 0000000000000..4750ab545ada3
--- /dev/null
+++ b/backport-changelog/6.8/7895.md
@@ -0,0 +1,3 @@
+https://github.com/WordPress/wordpress-develop/pull/7895
+
+* https://github.com/WordPress/gutenberg/pull/66459
diff --git a/changelog.txt b/changelog.txt
index 1a6b45a37fc7c..bf13c6b273e9b 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,5 +1,253 @@
== Changelog ==
+= 19.8.0-rc.1 =
+
+
+## Changelog
+
+### Enhancements
+
+#### Block Library
+- Details block: Use summary content as default label. ([67217](https://github.com/WordPress/gutenberg/pull/67217))
+- Make social icon navigation one arrow keypress. ([64883](https://github.com/WordPress/gutenberg/pull/64883))
+- Page List : Add border and spacing support. ([66385](https://github.com/WordPress/gutenberg/pull/66385))
+- Query Loop block: Remove 'add new post' prompt in the sidebar. ([67189](https://github.com/WordPress/gutenberg/pull/67189))
+- Query block: Update Enhanced Pagination help text. ([67173](https://github.com/WordPress/gutenberg/pull/67173))
+- Social Link: Add contentOnly editing support. ([66622](https://github.com/WordPress/gutenberg/pull/66622))
+
+#### Components
+- Autocomplete: Increase option height. ([67214](https://github.com/WordPress/gutenberg/pull/67214))
+- CircularOptionPicker: Update Button sizes. ([67285](https://github.com/WordPress/gutenberg/pull/67285))
+- ColorPalette: Disable `Clear` button if there's no color value. ([67108](https://github.com/WordPress/gutenberg/pull/67108))
+- ColorPicker: Update sizes of format select and copy button. ([67093](https://github.com/WordPress/gutenberg/pull/67093))
+- ComboboxControl: Update reset button size. ([67215](https://github.com/WordPress/gutenberg/pull/67215))
+
+#### DataViews
+- Add density option to `table` layout. ([67170](https://github.com/WordPress/gutenberg/pull/67170))
+- DataForm: Enable fields to declare a different layout. ([66531](https://github.com/WordPress/gutenberg/pull/66531))
+- DataViews list layout: Hide actions menu when there is only one action and is primary. ([67015](https://github.com/WordPress/gutenberg/pull/67015))
+- DataViews table layout: Hide actions menu when there is only one action and is primary. ([67020](https://github.com/WordPress/gutenberg/pull/67020))
+- Reduce the size of action button in Grid layout. ([67032](https://github.com/WordPress/gutenberg/pull/67032))
+- DataViews: Allow register/unregister fields. ([67175](https://github.com/WordPress/gutenberg/pull/67175))
+
+#### Global Styles
+- Block Supports: Extend stabilization to common experimental block support flags. ([67018](https://github.com/WordPress/gutenberg/pull/67018))
+- Borders: Stabilize border block supports within block processing. ([66918](https://github.com/WordPress/gutenberg/pull/66918))
+- Site Editor > Styles: Open styles inspector when clicking preview canvas. ([66996](https://github.com/WordPress/gutenberg/pull/66996))
+
+#### Media
+- Block Editor: Add notice action to revert image to original after cropping. ([67314](https://github.com/WordPress/gutenberg/pull/67314))
+- Block Editor: Add success notices for image editing. ([67312](https://github.com/WordPress/gutenberg/pull/67312))
+
+#### REST API
+- Feature: Set editor rendering mode by post type. ([62304](https://github.com/WordPress/gutenberg/pull/62304))
+- Terms: Respect order specified by register_taxonomy(). ([67154](https://github.com/WordPress/gutenberg/pull/67154))
+
+#### Zoom Out
+- Leave help text regardless of zoom state. ([67132](https://github.com/WordPress/gutenberg/pull/67132))
+- Preserve footer template bar in zoom out. ([67135](https://github.com/WordPress/gutenberg/pull/67135))
+- Add section styles switch button in block toolbar in zoom out mode. ([67140](https://github.com/WordPress/gutenberg/pull/67140))
+
+#### Post Editor
+- Move default template types and template part areas to REST API. ([66459](https://github.com/WordPress/gutenberg/pull/66459))
+- Move `usePostFields` to `wordpress/editor` package. ([67024](https://github.com/WordPress/gutenberg/pull/67024))
+
+#### Site Editor
+- Blocks: Adds check for parent before showing convert to pattern button. ([66158](https://github.com/WordPress/gutenberg/pull/66158))
+- Try dark toolbar for the write mode. ([66116](https://github.com/WordPress/gutenberg/pull/66116))
+
+#### Design Tools
+- Heading: Hide border controls by default. ([67105](https://github.com/WordPress/gutenberg/pull/67105))
+- Font family preview in the font family picker. ([67118](https://github.com/WordPress/gutenberg/pull/67118))
+
+### Bug Fixes
+
+
+
+
+#### Block Library
+- Fix block mover clickable area. ([67261](https://github.com/WordPress/gutenberg/pull/67261))
+- Fix dropping media from inserter into Cover block. ([67056](https://github.com/WordPress/gutenberg/pull/67056))
+- Fix: Preserve Display Preview State in File Block. ([67263](https://github.com/WordPress/gutenberg/pull/67263))
+- Paragraph: Update condition for rendering Drop Cap for a selected block. ([67111](https://github.com/WordPress/gutenberg/pull/67111))
+- RSS block: Check for description field before rendering excerpt. ([66985](https://github.com/WordPress/gutenberg/pull/66985))
+- Resolve search block button text overlapping issue. ([66868](https://github.com/WordPress/gutenberg/pull/66868))
+- Social Links: Fix font family and weight inconsistency in editor. ([67204](https://github.com/WordPress/gutenberg/pull/67204))
+
+#### Components
+- Composite: Restore `Hover` and `Typeahead` functionality. ([67212](https://github.com/WordPress/gutenberg/pull/67212))
+- Menu.ItemHelpText: Better line breaking. ([67011](https://github.com/WordPress/gutenberg/pull/67011))
+- SlotFill: Fix a bug with storing stale fillProps. ([67000](https://github.com/WordPress/gutenberg/pull/67000))
+- Storybook: Fix DataViews layout. ([66999](https://github.com/WordPress/gutenberg/pull/66999))
+- `FormFileUpload`: Prevent HEIC and HEIF files from always being uploaded on Safari. ([67139](https://github.com/WordPress/gutenberg/pull/67139))
+
+#### Block Editor
+- Add all color palettes to select from editor panel. ([65148](https://github.com/WordPress/gutenberg/pull/65148))
+- Correctly mark Block Comment SlotFills private. ([67271](https://github.com/WordPress/gutenberg/pull/67271))
+- Fix media placeholder to only activate for media objects. ([66986](https://github.com/WordPress/gutenberg/pull/66986))
+- Rich text: Preserve comments. ([62128](https://github.com/WordPress/gutenberg/pull/62128))
+- Fix TS types for the editor package. ([67196](https://github.com/WordPress/gutenberg/pull/67196))
+- PostTitle: Exit early when post type doesn't support titles. ([67086](https://github.com/WordPress/gutenberg/pull/67086))
+
+#### Global Styles
+- Avoid zooming out when browsing styles if the preview mode is active. ([67190](https://github.com/WordPress/gutenberg/pull/67190))
+- Remove styles from blocks' previews. ([67144](https://github.com/WordPress/gutenberg/pull/67144))
+- Style panel: Use correct revisions count. ([67180](https://github.com/WordPress/gutenberg/pull/67180))
+- Theme JSON: Include block style variations in path only output of get_block_nodes. ([66948](https://github.com/WordPress/gutenberg/pull/66948))
+- Fix: Logic for Highlight/text-color format availability. ([65530](https://github.com/WordPress/gutenberg/pull/65530))
+- Fix complex variation selectors when using selectors API. ([67061](https://github.com/WordPress/gutenberg/pull/67061))
+#### Site Editor
+- Prevent Pre-Publish Panel from Displaying Incorrect Information After Navigating away. ([67010](https://github.com/WordPress/gutenberg/pull/67010))
+- Site Editor Sidebar: Fixed focus/hover style for navigation item buttons. ([67251](https://github.com/WordPress/gutenberg/pull/67251))
+- Site Hub: Fix height in mobile layout. ([67110](https://github.com/WordPress/gutenberg/pull/67110))
+- Site Editor: Styles: Fix inspector opening. ([67004](https://github.com/WordPress/gutenberg/pull/67004))
+- Improve accessibility and consistency of the 'Last modified' Revisions button. ([66606](https://github.com/WordPress/gutenberg/pull/66606))
+- Remove styles from examples. ([67098](https://github.com/WordPress/gutenberg/pull/67098))
+- Editor: Correctly select post title support in 'DocumentOutline'. ([67109](https://github.com/WordPress/gutenberg/pull/67109))
+
+
+#### DataViews
+- Fix action visibility logic. ([67197](https://github.com/WordPress/gutenberg/pull/67197))
+- Fix primary field misalignment in grid layout. ([66995](https://github.com/WordPress/gutenberg/pull/66995))
+- Fix spacing when combining combined fields. ([67226](https://github.com/WordPress/gutenberg/pull/67226))
+
+#### Zoom Out
+- Zoom In/Out to correct canvas location. ([66917](https://github.com/WordPress/gutenberg/pull/66917))
+- Zoom in/out to correct location. ([67126](https://github.com/WordPress/gutenberg/pull/67126))
+- Zoom Out: Disable zooming out when Distraction Free mode is activated. ([67028](https://github.com/WordPress/gutenberg/pull/67028))
+
+#### Layout
+- Allow flex justification controls to be disabled at the block level. ([67059](https://github.com/WordPress/gutenberg/pull/67059))
+- Show vertical alignment toolbar with allowSwitching enabled. ([67022](https://github.com/WordPress/gutenberg/pull/67022))
+
+#### Patterns
+- Fix: JavaScript error when pattern category is unregistered. ([67063](https://github.com/WordPress/gutenberg/pull/67063))
+- Block Locking: Remove edit locking for Synced Patterns. ([67021](https://github.com/WordPress/gutenberg/pull/67021))
+
+### Accessibility
+
+#### Components
+- ColorPicker: Add accessible label for copy button. ([67094](https://github.com/WordPress/gutenberg/pull/67094))
+- Modal: Increase size of the Close button. ([66792](https://github.com/WordPress/gutenberg/pull/66792))
+- DataViews: Fix focus loss when removing all filters or resetting. ([67003](https://github.com/WordPress/gutenberg/pull/67003))
+
+#### Block Library
+- Improve accessibility of the video track editor. ([66832](https://github.com/WordPress/gutenberg/pull/66832))
+- Navigation: Fix 'ariaLabel' block support. ([66943](https://github.com/WordPress/gutenberg/pull/66943))
+
+#### Post Editor
+- Improve the featured image UI when it cannot retrieve the image file and data. ([66936](https://github.com/WordPress/gutenberg/pull/66936))
+
+### Experiments
+
+- Inline Commenting: Update placement of reply input and add author info header. ([66580](https://github.com/WordPress/gutenberg/pull/66580))
+- Place "Write mode" functionality behind a Gutenberg experiment. ([67008](https://github.com/WordPress/gutenberg/pull/67008))
+
+### Documentation
+
+- Add documentation about required Core changes when updating minimum WordPress version. ([67167](https://github.com/WordPress/gutenberg/pull/67167))
+- BoxControl: Auto-generate readme. ([67284](https://github.com/WordPress/gutenberg/pull/67284))
+- Components contributing guide: Fix relative links. ([67323](https://github.com/WordPress/gutenberg/pull/67323))
+- DataViews: Reorganize documentation for actions. ([67159](https://github.com/WordPress/gutenberg/pull/67159))
+- Docs: Correct `@return` type in `block_core_query_disable_enhanced_pagination()`. ([67128](https://github.com/WordPress/gutenberg/pull/67128))
+- Feat: Storybook: Improve component organisation - Layout Category - Issue #66275. ([66659](https://github.com/WordPress/gutenberg/pull/66659))
+- Feat: Storybook: Improve component organisation - Selection & Input Category - Issue #66275. ([66635](https://github.com/WordPress/gutenberg/pull/66635))
+- GradientPicker: Auto-generate readme. ([67250](https://github.com/WordPress/gutenberg/pull/67250))
+- Icon: Auto-generate readme. ([67282](https://github.com/WordPress/gutenberg/pull/67282))
+- Icon: Improve `icon` prop usage documentation in Storybook. ([67280](https://github.com/WordPress/gutenberg/pull/67280))
+- Storybook: Restore stable components back into categories. ([67216](https://github.com/WordPress/gutenberg/pull/67216))
+- Update BlockMover Stories and README. ([66519](https://github.com/WordPress/gutenberg/pull/66519))
+- Update custom store readme to use thunks instead of controls. ([67006](https://github.com/WordPress/gutenberg/pull/67006))
+- Update versions-in-wordpress.md. ([67298](https://github.com/WordPress/gutenberg/pull/67298))
+
+### Code Quality
+
+- ESLint: Enable `eslint-plugin-react-compiler`. ([61788](https://github.com/WordPress/gutenberg/pull/61788))
+- Extract selectors from useResolveEditedEntity hook. ([67031](https://github.com/WordPress/gutenberg/pull/67031))
+- Pattern: Remove backward compatibility code for WordPress < 6.4. ([67131](https://github.com/WordPress/gutenberg/pull/67131))
+- Post fields: Move `author` from `edit-site` to `fields` package. ([66939](https://github.com/WordPress/gutenberg/pull/66939))
+- Posts DataViews: Refactor the router to use route registration. ([67160](https://github.com/WordPress/gutenberg/pull/67160))
+- Comments controller: Fix issue where comments are allowed when closed. ([66976](https://github.com/WordPress/gutenberg/pull/66976))
+- Fix fatal error in in_array call in post_type_default_rendering_mode. ([67225](https://github.com/WordPress/gutenberg/pull/67225))
+- Data: Add changelog for Redux update. ([66968](https://github.com/WordPress/gutenberg/pull/66968))
+
+#### Components
+- BorderBoxControl: Suppress redundant warnings for deprecated 36px size. ([67213](https://github.com/WordPress/gutenberg/pull/67213))
+- ComboboxControl : Deprecate 36px default size. ([66900](https://github.com/WordPress/gutenberg/pull/66900))
+- CustomGradientPicker: Prepare `Button`s for 40px default size. ([67286](https://github.com/WordPress/gutenberg/pull/67286))
+- Dashicons: Remove non-existent icons from type. ([67235](https://github.com/WordPress/gutenberg/pull/67235))
+- DimensionControl: Deprecate 36px default size. ([66705](https://github.com/WordPress/gutenberg/pull/66705))
+- Feat: Adds the deprecation warning for 36px default size in range control. ([66721](https://github.com/WordPress/gutenberg/pull/66721))
+- FontSizePicker : Deprecate 36px default size. ([66920](https://github.com/WordPress/gutenberg/pull/66920))
+- Remove createPrivateSlotFill function. ([67238](https://github.com/WordPress/gutenberg/pull/67238))
+- SlotFill: Fix dependencies of registration effects, deduplicate code. ([67071](https://github.com/WordPress/gutenberg/pull/67071))
+- SlotFill: Remove registration API from useSlot result. ([67070](https://github.com/WordPress/gutenberg/pull/67070))
+- SlotFill: Rewrite base Slot to functional, unify rerenderable refs. ([67153](https://github.com/WordPress/gutenberg/pull/67153))
+- TextControl: Deprecate 36px default size. ([66745](https://github.com/WordPress/gutenberg/pull/66745))
+- ToggleGroupControl : Deprecate 36px default size. ([66747](https://github.com/WordPress/gutenberg/pull/66747))
+
+#### Post Editor
+- ESLint: Bump `eslint-plugin-react-compiler` to latest beta. ([67106](https://github.com/WordPress/gutenberg/pull/67106))
+- Edit Post: Refactor 'MetaBoxVisibility' component. ([67265](https://github.com/WordPress/gutenberg/pull/67265))
+- Edit Post: Remove unused 'hasHistory' flag. ([67293](https://github.com/WordPress/gutenberg/pull/67293))
+- Editor: Update focus return handler for the Featured Image. ([67236](https://github.com/WordPress/gutenberg/pull/67236))
+- Make `BlockManager` component reusable. ([67052](https://github.com/WordPress/gutenberg/pull/67052))
+- Preferences: Use hooks instead of HoC in 'EnableCustomFieldsOption'. ([67023](https://github.com/WordPress/gutenberg/pull/67023))
+- Preferences: Use hooks instead of HoC in 'EnablePanelOption'. ([66994](https://github.com/WordPress/gutenberg/pull/66994))
+- Preferences: Use hooks instead of HoC in 'EnablePublishSidebarOption'. ([67002](https://github.com/WordPress/gutenberg/pull/67002))
+
+#### Block Library
+- Fix React Compiler error for shortcuts. ([67019](https://github.com/WordPress/gutenberg/pull/67019))
+- Home Link: Remove label attribute synchronization. ([67151](https://github.com/WordPress/gutenberg/pull/67151))
+- Use rems for Nav overlay left padding. ([67168](https://github.com/WordPress/gutenberg/pull/67168))
+- useBlockNameForPatterns: Refactor as a single useSelect call. ([67171](https://github.com/WordPress/gutenberg/pull/67171))
+- Navigation Block: Remove obsolete Block Hooks filters. ([64676](https://github.com/WordPress/gutenberg/pull/64676))
+- [mini] 🧹 remove obsolete rich text css. ([67264](https://github.com/WordPress/gutenberg/pull/67264))
+
+#### Global Styles
+- Don't call store actions during the render. ([67146](https://github.com/WordPress/gutenberg/pull/67146))
+- Edit Site: Fix settings mutation in `ScreenBlock`. ([67085](https://github.com/WordPress/gutenberg/pull/67085))
+- Remove unused 'Fragment' import. ([67104](https://github.com/WordPress/gutenberg/pull/67104))
+
+#### Block Editor
+- Block Manager: Make it a private component in the block editor package. ([67255](https://github.com/WordPress/gutenberg/pull/67255))
+- Inserter: Set initial active tab ID during render. ([67103](https://github.com/WordPress/gutenberg/pull/67103))
+
+#### Site Editor
+- Deprecate edited entity state. ([66965](https://github.com/WordPress/gutenberg/pull/66965))
+- Remove redundant style-edit route. ([67057](https://github.com/WordPress/gutenberg/pull/67057))
+
+### Tools
+
+#### Testing
+- Fix ESLint Jest reporting entire body of the test function rather than the identifier. ([67222](https://github.com/WordPress/gutenberg/pull/67222))
+- Fix typo in use-block-sync tests. ([67145](https://github.com/WordPress/gutenberg/pull/67145))
+- Migrate Gradle wrapper validation action. ([66602](https://github.com/WordPress/gutenberg/pull/66602))
+
+#### Plugin
+- Bump minimum required WordPress version to 6.6. ([67117](https://github.com/WordPress/gutenberg/pull/67117))
+- Add #7895 Core Backport PR to the changelog. ([67319](https://github.com/WordPress/gutenberg/pull/67319))
+- WP Scripts: Revert changes that inline CSS imports early in the build process. ([66975](https://github.com/WordPress/gutenberg/pull/66975))
+
+## First-time contributors
+
+The following PRs were merged by first-time contributors:
+
+- @AKSHAT2802: Add all color palettes to select from editor panel. ([65148](https://github.com/WordPress/gutenberg/pull/65148))
+- @benazeer-ben: Page List : Add border and spacing support. ([66385](https://github.com/WordPress/gutenberg/pull/66385))
+- @himanshupathak95: Menu.ItemHelpText: Better line breaking. ([67011](https://github.com/WordPress/gutenberg/pull/67011))
+- @SainathPoojary: Social Links: Fix font family and weight inconsistency in editor. ([67204](https://github.com/WordPress/gutenberg/pull/67204))
+- @sarthaknagoshe2002: Prevent Pre-Publish Panel from Displaying Incorrect Information After Navigating away. ([67010](https://github.com/WordPress/gutenberg/pull/67010))
+- @Sukhendu2002: Fix: Preserve Display Preview State in File Block. ([67263](https://github.com/WordPress/gutenberg/pull/67263))
+
+
+## Contributors
+
+The following contributors merged PRs in this release:
+
+@aaronrobertshaw @afercia @ajlende @akasunil @AKSHAT2802 @benazeer-ben @benniledl @carolinan @cbravobernal @desrosj @dhruvang21 @dougwollison @ellatrix @getdave @gigitux @gziolo @hbhalodia @himanshupathak95 @Infinite-Null @jeryj @jsnajdr @juanfra @louwie17 @Mamaduka @manzoorwanijk @matiasbenedetto @mcsf @michalczaplinski @miminari @mirka @ndiego @ntsekouras @oandregal @ockham @PARTHVATALIYA @ramonjd @SainathPoojary @SantosGuillamot @sarthaknagoshe2002 @snehapatil2001 @Soean @Sukhendu2002 @t-hamano @talldan @tellthemachines @TylerB24890 @tyxla @up1512001 @vipul0425 @yogeshbhutkar @youknowriad
+
+
= 19.7.0 =
## Changelog
diff --git a/docs/contributors/versions-in-wordpress.md b/docs/contributors/versions-in-wordpress.md
index 4ba7b34da1555..c2be7e3fa4e88 100644
--- a/docs/contributors/versions-in-wordpress.md
+++ b/docs/contributors/versions-in-wordpress.md
@@ -6,6 +6,7 @@ If anything looks incorrect here, please bring it up in #core-editor in [WordPre
| Gutenberg Versions | WordPress Version |
| ------------------ | ----------------- |
+| 18.6-19.3 | 6.7.1 |
| 18.6-19.3 | 6.7 |
| 17.8-18.5 | 6.6.2 |
| 17.8-18.5 | 6.6.1 |
diff --git a/gutenberg.php b/gutenberg.php
index 3e4d6941b5a0f..40c4e86fbb1bf 100644
--- a/gutenberg.php
+++ b/gutenberg.php
@@ -5,7 +5,7 @@
* Description: Printing since 1440. This is the development plugin for the block editor, site editor, and other future WordPress core functionality.
* Requires at least: 6.6
* Requires PHP: 7.2
- * Version: 19.7.0
+ * Version: 19.8.0-rc.1
* Author: Gutenberg Team
* Text Domain: gutenberg
*
diff --git a/lib/compat/wordpress-6.8/preload.php b/lib/compat/wordpress-6.8/preload.php
index aabe0d4fb574c..ae6c738c6627c 100644
--- a/lib/compat/wordpress-6.8/preload.php
+++ b/lib/compat/wordpress-6.8/preload.php
@@ -32,6 +32,8 @@ function gutenberg_block_editor_preload_paths_6_8( $paths, $context ) {
'site_logo',
'timezone_string',
'url',
+ 'default_template_part_areas',
+ 'default_template_types',
)
);
$paths[] = '/wp/v2/templates/lookup?slug=front-page';
diff --git a/lib/compat/wordpress-6.8/rest-api.php b/lib/compat/wordpress-6.8/rest-api.php
index 080e4003f57b3..b94e42d5f2ccd 100644
--- a/lib/compat/wordpress-6.8/rest-api.php
+++ b/lib/compat/wordpress-6.8/rest-api.php
@@ -49,3 +49,41 @@ function ( $taxonomy ) {
remove_filter( "rest_{$taxonomy}_query", 'gutenberg_respect_taxonomy_default_args_in_rest_api' );
}
);
+
+/**
+ * Adds the default template part areas to the REST API index.
+ *
+ * This function exposes the default template part areas through the WordPress REST API.
+ * Note: This function backports into the wp-includes/rest-api/class-wp-rest-server.php file.
+ *
+ * @param WP_REST_Response $response REST API response.
+ * @return WP_REST_Response Modified REST API response with default template part areas.
+ */
+function gutenberg_add_default_template_part_areas_to_index( WP_REST_Response $response ) {
+ $response->data['default_template_part_areas'] = get_allowed_block_template_part_areas();
+ return $response;
+}
+
+add_filter( 'rest_index', 'gutenberg_add_default_template_part_areas_to_index' );
+
+/**
+ * Adds the default template types to the REST API index.
+ *
+ * This function exposes the default template types through the WordPress REST API.
+ * Note: This function backports into the wp-includes/rest-api/class-wp-rest-server.php file.
+ *
+ * @param WP_REST_Response $response REST API response.
+ * @return WP_REST_Response Modified REST API response with default template part areas.
+ */
+function gutenberg_add_default_template_types_to_index( WP_REST_Response $response ) {
+ $indexed_template_types = array();
+ foreach ( get_default_block_template_types() as $slug => $template_type ) {
+ $template_type['slug'] = (string) $slug;
+ $indexed_template_types[] = $template_type;
+ }
+
+ $response->data['default_template_types'] = $indexed_template_types;
+ return $response;
+}
+
+add_filter( 'rest_index', 'gutenberg_add_default_template_types_to_index' );
diff --git a/package-lock.json b/package-lock.json
index 1fc9131a33c8c..ccf779f2d67ea 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "gutenberg",
- "version": "19.7.0",
+ "version": "19.8.0-rc.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "gutenberg",
- "version": "19.7.0",
+ "version": "19.8.0-rc.1",
"hasInstallScript": true,
"license": "GPL-2.0-or-later",
"workspaces": [
@@ -84,6 +84,7 @@
"cssnano": "6.0.1",
"deep-freeze": "0.0.1",
"equivalent-key-map": "0.2.2",
+ "esbuild": "0.18.20",
"escape-html": "1.0.3",
"eslint-import-resolver-node": "0.3.4",
"eslint-plugin-eslint-comments": "3.1.2",
@@ -51889,7 +51890,7 @@
},
"packages/a11y": {
"name": "@wordpress/a11y",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -51903,7 +51904,7 @@
},
"packages/annotations": {
"name": "@wordpress/annotations",
- "version": "3.12.0",
+ "version": "3.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -51931,7 +51932,7 @@
},
"packages/api-fetch": {
"name": "@wordpress/api-fetch",
- "version": "7.12.0",
+ "version": "7.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -51945,7 +51946,7 @@
},
"packages/autop": {
"name": "@wordpress/autop",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -51957,7 +51958,7 @@
},
"packages/babel-plugin-import-jsx-pragma": {
"name": "@wordpress/babel-plugin-import-jsx-pragma",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -51969,7 +51970,7 @@
},
"packages/babel-plugin-makepot": {
"name": "@wordpress/babel-plugin-makepot",
- "version": "6.12.0",
+ "version": "6.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"deepmerge": "^4.3.0",
@@ -51986,7 +51987,7 @@
},
"packages/babel-preset-default": {
"name": "@wordpress/babel-preset-default",
- "version": "8.12.0",
+ "version": "8.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/core": "7.25.7",
@@ -53117,7 +53118,7 @@
},
"packages/base-styles": {
"name": "@wordpress/base-styles",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -53126,7 +53127,7 @@
},
"packages/blob": {
"name": "@wordpress/blob",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -53138,7 +53139,7 @@
},
"packages/block-directory": {
"name": "@wordpress/block-directory",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53174,7 +53175,7 @@
},
"packages/block-editor": {
"name": "@wordpress/block-editor",
- "version": "14.7.0",
+ "version": "14.8.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53274,7 +53275,7 @@
},
"packages/block-library": {
"name": "@wordpress/block-library",
- "version": "9.12.0",
+ "version": "9.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53340,7 +53341,7 @@
},
"packages/block-serialization-default-parser": {
"name": "@wordpress/block-serialization-default-parser",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -53352,7 +53353,7 @@
},
"packages/block-serialization-spec-parser": {
"name": "@wordpress/block-serialization-spec-parser",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"pegjs": "^0.10.0",
@@ -53365,7 +53366,7 @@
},
"packages/blocks": {
"name": "@wordpress/blocks",
- "version": "14.1.0",
+ "version": "14.2.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53419,7 +53420,7 @@
},
"packages/browserslist-config": {
"name": "@wordpress/browserslist-config",
- "version": "6.12.0",
+ "version": "6.13.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -53428,7 +53429,7 @@
},
"packages/commands": {
"name": "@wordpress/commands",
- "version": "1.12.0",
+ "version": "1.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53667,7 +53668,7 @@
},
"packages/components": {
"name": "@wordpress/components",
- "version": "28.12.0",
+ "version": "28.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@ariakit/react": "^0.4.10",
@@ -53788,7 +53789,7 @@
},
"packages/compose": {
"name": "@wordpress/compose",
- "version": "7.12.0",
+ "version": "7.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53825,7 +53826,7 @@
},
"packages/core-commands": {
"name": "@wordpress/core-commands",
- "version": "1.12.0",
+ "version": "1.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53854,7 +53855,7 @@
},
"packages/core-data": {
"name": "@wordpress/core-data",
- "version": "7.12.0",
+ "version": "7.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53899,7 +53900,7 @@
},
"packages/create-block": {
"name": "@wordpress/create-block",
- "version": "4.55.0",
+ "version": "4.56.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/lazy-import": "*",
@@ -53926,7 +53927,7 @@
},
"packages/create-block-interactive-template": {
"name": "@wordpress/create-block-interactive-template",
- "version": "2.12.0",
+ "version": "2.13.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -53935,7 +53936,7 @@
},
"packages/create-block-tutorial-template": {
"name": "@wordpress/create-block-tutorial-template",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -53944,7 +53945,7 @@
},
"packages/customize-widgets": {
"name": "@wordpress/customize-widgets",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53983,7 +53984,7 @@
},
"packages/data": {
"name": "@wordpress/data",
- "version": "10.12.0",
+ "version": "10.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54012,7 +54013,7 @@
},
"packages/data-controls": {
"name": "@wordpress/data-controls",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54030,7 +54031,7 @@
},
"packages/dataviews": {
"name": "@wordpress/dataviews",
- "version": "4.8.0",
+ "version": "4.9.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@ariakit/react": "^0.4.10",
@@ -54087,7 +54088,7 @@
},
"packages/date": {
"name": "@wordpress/date",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54102,7 +54103,7 @@
},
"packages/dependency-extraction-webpack-plugin": {
"name": "@wordpress/dependency-extraction-webpack-plugin",
- "version": "6.12.0",
+ "version": "6.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"json2php": "^0.0.7"
@@ -54117,7 +54118,7 @@
},
"packages/deprecated": {
"name": "@wordpress/deprecated",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54130,7 +54131,7 @@
},
"packages/docgen": {
"name": "@wordpress/docgen",
- "version": "2.12.0",
+ "version": "2.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/core": "7.25.7",
@@ -54151,7 +54152,7 @@
},
"packages/dom": {
"name": "@wordpress/dom",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54164,7 +54165,7 @@
},
"packages/dom-ready": {
"name": "@wordpress/dom-ready",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -54176,7 +54177,7 @@
},
"packages/e2e-test-utils": {
"name": "@wordpress/e2e-test-utils",
- "version": "11.12.0",
+ "version": "11.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54198,7 +54199,7 @@
},
"packages/e2e-test-utils-playwright": {
"name": "@wordpress/e2e-test-utils-playwright",
- "version": "1.12.0",
+ "version": "1.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"change-case": "^4.1.2",
@@ -54224,7 +54225,7 @@
},
"packages/e2e-tests": {
"name": "@wordpress/e2e-tests",
- "version": "8.12.0",
+ "version": "8.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/e2e-test-utils": "*",
@@ -54262,7 +54263,7 @@
},
"packages/edit-post": {
"name": "@wordpress/edit-post",
- "version": "8.12.0",
+ "version": "8.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54309,7 +54310,7 @@
},
"packages/edit-site": {
"name": "@wordpress/edit-site",
- "version": "6.12.0",
+ "version": "6.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54371,7 +54372,7 @@
},
"packages/edit-widgets": {
"name": "@wordpress/edit-widgets",
- "version": "6.12.0",
+ "version": "6.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54415,7 +54416,7 @@
},
"packages/editor": {
"name": "@wordpress/editor",
- "version": "14.12.0",
+ "version": "14.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54477,7 +54478,7 @@
},
"packages/element": {
"name": "@wordpress/element",
- "version": "6.12.0",
+ "version": "6.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54496,7 +54497,7 @@
},
"packages/env": {
"name": "@wordpress/env",
- "version": "10.12.0",
+ "version": "10.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"chalk": "^4.0.0",
@@ -54627,7 +54628,7 @@
},
"packages/escape-html": {
"name": "@wordpress/escape-html",
- "version": "3.12.0",
+ "version": "3.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -54639,7 +54640,7 @@
},
"packages/eslint-plugin": {
"name": "@wordpress/eslint-plugin",
- "version": "21.5.0",
+ "version": "21.6.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/eslint-parser": "7.25.7",
@@ -54708,7 +54709,7 @@
},
"packages/fields": {
"name": "@wordpress/fields",
- "version": "0.4.0",
+ "version": "0.5.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54749,7 +54750,7 @@
},
"packages/format-library": {
"name": "@wordpress/format-library",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54777,7 +54778,7 @@
},
"packages/hooks": {
"name": "@wordpress/hooks",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -54789,7 +54790,7 @@
},
"packages/html-entities": {
"name": "@wordpress/html-entities",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -54801,7 +54802,7 @@
},
"packages/i18n": {
"name": "@wordpress/i18n",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54821,7 +54822,7 @@
},
"packages/icons": {
"name": "@wordpress/icons",
- "version": "10.12.0",
+ "version": "10.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54835,7 +54836,7 @@
},
"packages/interactivity": {
"name": "@wordpress/interactivity",
- "version": "6.12.0",
+ "version": "6.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@preact/signals": "^1.3.0",
@@ -54848,7 +54849,7 @@
},
"packages/interactivity-router": {
"name": "@wordpress/interactivity-router",
- "version": "2.12.0",
+ "version": "2.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/a11y": "*",
@@ -54861,7 +54862,7 @@
},
"packages/interface": {
"name": "@wordpress/interface",
- "version": "8.1.0",
+ "version": "8.2.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54889,7 +54890,7 @@
},
"packages/is-shallow-equal": {
"name": "@wordpress/is-shallow-equal",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -54901,7 +54902,7 @@
},
"packages/jest-console": {
"name": "@wordpress/jest-console",
- "version": "8.12.0",
+ "version": "8.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54917,7 +54918,7 @@
},
"packages/jest-preset-default": {
"name": "@wordpress/jest-preset-default",
- "version": "12.12.0",
+ "version": "12.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/jest-console": "*",
@@ -54934,7 +54935,7 @@
},
"packages/jest-puppeteer-axe": {
"name": "@wordpress/jest-puppeteer-axe",
- "version": "7.12.0",
+ "version": "7.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@axe-core/puppeteer": "^4.0.0",
@@ -54956,7 +54957,7 @@
},
"packages/keyboard-shortcuts": {
"name": "@wordpress/keyboard-shortcuts",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54974,7 +54975,7 @@
},
"packages/keycodes": {
"name": "@wordpress/keycodes",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54987,7 +54988,7 @@
},
"packages/lazy-import": {
"name": "@wordpress/lazy-import",
- "version": "2.12.0",
+ "version": "2.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"execa": "^4.0.2",
@@ -55001,7 +55002,7 @@
},
"packages/list-reusable-blocks": {
"name": "@wordpress/list-reusable-blocks",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55024,7 +55025,7 @@
},
"packages/media-utils": {
"name": "@wordpress/media-utils",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55041,7 +55042,7 @@
},
"packages/notices": {
"name": "@wordpress/notices",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55058,7 +55059,7 @@
},
"packages/npm-package-json-lint-config": {
"name": "@wordpress/npm-package-json-lint-config",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -55070,7 +55071,7 @@
},
"packages/nux": {
"name": "@wordpress/nux",
- "version": "9.12.0",
+ "version": "9.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55093,7 +55094,7 @@
},
"packages/patterns": {
"name": "@wordpress/patterns",
- "version": "2.12.0",
+ "version": "2.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55123,7 +55124,7 @@
},
"packages/plugins": {
"name": "@wordpress/plugins",
- "version": "7.12.0",
+ "version": "7.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55147,7 +55148,7 @@
},
"packages/postcss-plugins-preset": {
"name": "@wordpress/postcss-plugins-preset",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/base-styles": "*",
@@ -55163,7 +55164,7 @@
},
"packages/postcss-themes": {
"name": "@wordpress/postcss-themes",
- "version": "6.12.0",
+ "version": "6.13.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -55175,7 +55176,7 @@
},
"packages/preferences": {
"name": "@wordpress/preferences",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55201,7 +55202,7 @@
},
"packages/preferences-persistence": {
"name": "@wordpress/preferences-persistence",
- "version": "2.12.0",
+ "version": "2.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55214,7 +55215,7 @@
},
"packages/prettier-config": {
"name": "@wordpress/prettier-config",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -55226,7 +55227,7 @@
},
"packages/primitives": {
"name": "@wordpress/primitives",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55243,7 +55244,7 @@
},
"packages/priority-queue": {
"name": "@wordpress/priority-queue",
- "version": "3.12.0",
+ "version": "3.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55256,7 +55257,7 @@
},
"packages/private-apis": {
"name": "@wordpress/private-apis",
- "version": "1.12.0",
+ "version": "1.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -55268,7 +55269,7 @@
},
"packages/project-management-automation": {
"name": "@wordpress/project-management-automation",
- "version": "2.12.0",
+ "version": "2.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@actions/core": "1.9.1",
@@ -55296,7 +55297,7 @@
},
"packages/react-i18n": {
"name": "@wordpress/react-i18n",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55452,7 +55453,7 @@
},
"packages/readable-js-assets-webpack-plugin": {
"name": "@wordpress/readable-js-assets-webpack-plugin",
- "version": "3.12.0",
+ "version": "3.13.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -55464,7 +55465,7 @@
},
"packages/redux-routine": {
"name": "@wordpress/redux-routine",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55507,7 +55508,7 @@
},
"packages/reusable-blocks": {
"name": "@wordpress/reusable-blocks",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55534,7 +55535,7 @@
},
"packages/rich-text": {
"name": "@wordpress/rich-text",
- "version": "7.12.0",
+ "version": "7.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55558,7 +55559,7 @@
},
"packages/router": {
"name": "@wordpress/router",
- "version": "1.12.0",
+ "version": "1.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55577,7 +55578,7 @@
},
"packages/scripts": {
"name": "@wordpress/scripts",
- "version": "30.5.1",
+ "version": "30.6.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/core": "7.25.7",
@@ -56010,7 +56011,7 @@
},
"packages/server-side-render": {
"name": "@wordpress/server-side-render",
- "version": "5.12.0",
+ "version": "5.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -56036,7 +56037,7 @@
},
"packages/shortcode": {
"name": "@wordpress/shortcode",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -56049,7 +56050,7 @@
},
"packages/style-engine": {
"name": "@wordpress/style-engine",
- "version": "2.12.0",
+ "version": "2.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -56062,7 +56063,7 @@
},
"packages/stylelint-config": {
"name": "@wordpress/stylelint-config",
- "version": "23.4.0",
+ "version": "23.5.0",
"license": "MIT",
"dependencies": {
"@stylistic/stylelint-plugin": "^3.0.1",
@@ -56173,7 +56174,7 @@
},
"packages/sync": {
"name": "@wordpress/sync",
- "version": "1.12.0",
+ "version": "1.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -56194,7 +56195,7 @@
},
"packages/token-list": {
"name": "@wordpress/token-list",
- "version": "3.12.0",
+ "version": "3.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -56206,7 +56207,7 @@
},
"packages/undo-manager": {
"name": "@wordpress/undo-manager",
- "version": "1.12.0",
+ "version": "1.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -56219,7 +56220,7 @@
},
"packages/url": {
"name": "@wordpress/url",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -56232,7 +56233,7 @@
},
"packages/viewport": {
"name": "@wordpress/viewport",
- "version": "6.12.0",
+ "version": "6.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -56262,7 +56263,7 @@
},
"packages/warning": {
"name": "@wordpress/warning",
- "version": "3.12.0",
+ "version": "3.13.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -56271,7 +56272,7 @@
},
"packages/widgets": {
"name": "@wordpress/widgets",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -56299,7 +56300,7 @@
},
"packages/wordcount": {
"name": "@wordpress/wordcount",
- "version": "4.12.0",
+ "version": "4.13.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
diff --git a/package.json b/package.json
index 41102f867f0e2..3ddcb981f6f6f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gutenberg",
- "version": "19.7.0",
+ "version": "19.8.0-rc.1",
"private": true,
"description": "A new WordPress editor experience.",
"author": "The WordPress Contributors",
@@ -93,6 +93,7 @@
"cssnano": "6.0.1",
"deep-freeze": "0.0.1",
"equivalent-key-map": "0.2.2",
+ "esbuild": "0.18.20",
"escape-html": "1.0.3",
"eslint-import-resolver-node": "0.3.4",
"eslint-plugin-eslint-comments": "3.1.2",
@@ -177,9 +178,10 @@
"build:package-types": "node ./bin/packages/validate-typescript-version.js && ( tsc --build || ( echo 'tsc failed. Try cleaning up first: `npm run clean:package-types`'; exit 1 ) ) && node ./bin/packages/check-build-type-declaration-files.js",
"prebuild:packages": "npm run clean:packages && npm run --if-present --workspaces build",
"build:packages": "npm run --silent build:package-types && node ./bin/packages/build.js",
+ "postbuild:packages": " npm run --if-present --workspaces build:wp",
"build:plugin-zip": "bash ./bin/build-plugin-zip.sh",
"clean:package-types": "tsc --build --clean && rimraf \"./packages/*/build-types\"",
- "clean:packages": "rimraf \"./packages/*/@(build|build-module|build-style)\"",
+ "clean:packages": "rimraf \"./packages/*/@(build|build-module|build-wp|build-style)\"",
"component-usage-stats": "node ./node_modules/react-scanner/bin/react-scanner -c ./react-scanner.config.js",
"dev": "cross-env NODE_ENV=development npm run build:packages && concurrently \"wp-scripts start\" \"npm run dev:packages\"",
"dev:packages": "cross-env NODE_ENV=development concurrently \"node ./bin/packages/watch.js\" \"tsc --build --watch\"",
diff --git a/packages/a11y/CHANGELOG.md b/packages/a11y/CHANGELOG.md
index dfd1e62906f9f..57b52651acc78 100644
--- a/packages/a11y/CHANGELOG.md
+++ b/packages/a11y/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.13.0 (2024-11-27)
+
## 4.12.0 (2024-11-16)
## 4.11.0 (2024-10-30)
diff --git a/packages/a11y/package.json b/packages/a11y/package.json
index 1fcffd9cdfe69..5eefe05954c79 100644
--- a/packages/a11y/package.json
+++ b/packages/a11y/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/a11y",
- "version": "4.12.0",
+ "version": "4.13.0",
"description": "Accessibility (a11y) utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/annotations/CHANGELOG.md b/packages/annotations/CHANGELOG.md
index 07e9267e5b04c..64bf565f8dd52 100644
--- a/packages/annotations/CHANGELOG.md
+++ b/packages/annotations/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.13.0 (2024-11-27)
+
## 3.12.0 (2024-11-16)
## 3.11.0 (2024-10-30)
diff --git a/packages/annotations/package.json b/packages/annotations/package.json
index 269c16d159e9f..47d39c978fccd 100644
--- a/packages/annotations/package.json
+++ b/packages/annotations/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/annotations",
- "version": "3.12.0",
+ "version": "3.13.0",
"description": "Annotate content in the Gutenberg editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/api-fetch/CHANGELOG.md b/packages/api-fetch/CHANGELOG.md
index e2ba79548592e..da4df186a8cd2 100644
--- a/packages/api-fetch/CHANGELOG.md
+++ b/packages/api-fetch/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.13.0 (2024-11-27)
+
## 7.12.0 (2024-11-16)
## 7.11.0 (2024-10-30)
diff --git a/packages/api-fetch/package.json b/packages/api-fetch/package.json
index 07d90568dc941..432eabf6ec5a1 100644
--- a/packages/api-fetch/package.json
+++ b/packages/api-fetch/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/api-fetch",
- "version": "7.12.0",
+ "version": "7.13.0",
"description": "Utility to make WordPress REST API requests.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/autop/CHANGELOG.md b/packages/autop/CHANGELOG.md
index dd9879ca23b74..caec56341262a 100644
--- a/packages/autop/CHANGELOG.md
+++ b/packages/autop/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.13.0 (2024-11-27)
+
## 4.12.0 (2024-11-16)
## 4.11.0 (2024-10-30)
diff --git a/packages/autop/package.json b/packages/autop/package.json
index 60b7102850020..bd48c84775d9e 100644
--- a/packages/autop/package.json
+++ b/packages/autop/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/autop",
- "version": "4.12.0",
+ "version": "4.13.0",
"description": "WordPress's automatic paragraph functions `autop` and `removep`.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md b/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md
index 38a36491fe9a8..b7030c3e4140a 100644
--- a/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md
+++ b/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.13.0 (2024-11-27)
+
## 5.12.0 (2024-11-16)
## 5.11.0 (2024-10-30)
diff --git a/packages/babel-plugin-import-jsx-pragma/package.json b/packages/babel-plugin-import-jsx-pragma/package.json
index 231886784bd3f..33244b4e7efb3 100644
--- a/packages/babel-plugin-import-jsx-pragma/package.json
+++ b/packages/babel-plugin-import-jsx-pragma/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-plugin-import-jsx-pragma",
- "version": "5.12.0",
+ "version": "5.13.0",
"description": "Babel transform plugin for automatically injecting an import to be used as the pragma for the React JSX Transform plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-plugin-makepot/CHANGELOG.md b/packages/babel-plugin-makepot/CHANGELOG.md
index 1e22ee8b4eabb..00efceb28c075 100644
--- a/packages/babel-plugin-makepot/CHANGELOG.md
+++ b/packages/babel-plugin-makepot/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.13.0 (2024-11-27)
+
## 6.12.0 (2024-11-16)
## 6.11.0 (2024-10-30)
diff --git a/packages/babel-plugin-makepot/package.json b/packages/babel-plugin-makepot/package.json
index 4f18f8556d68d..33d301545c468 100644
--- a/packages/babel-plugin-makepot/package.json
+++ b/packages/babel-plugin-makepot/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-plugin-makepot",
- "version": "6.12.0",
+ "version": "6.13.0",
"description": "WordPress Babel internationalization (i18n) plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-preset-default/CHANGELOG.md b/packages/babel-preset-default/CHANGELOG.md
index 8cce12417d2e2..4f5ef33b51298 100644
--- a/packages/babel-preset-default/CHANGELOG.md
+++ b/packages/babel-preset-default/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 8.13.0 (2024-11-27)
+
## 8.12.0 (2024-11-16)
## 8.11.0 (2024-10-30)
diff --git a/packages/babel-preset-default/package.json b/packages/babel-preset-default/package.json
index b305500dc2079..afe1025d604a8 100644
--- a/packages/babel-preset-default/package.json
+++ b/packages/babel-preset-default/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-preset-default",
- "version": "8.12.0",
+ "version": "8.13.0",
"description": "Default Babel preset for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/base-styles/CHANGELOG.md b/packages/base-styles/CHANGELOG.md
index 67fdcfa242453..196c6573d7b87 100644
--- a/packages/base-styles/CHANGELOG.md
+++ b/packages/base-styles/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.13.0 (2024-11-27)
+
## 5.12.0 (2024-11-16)
## 5.11.0 (2024-10-30)
diff --git a/packages/base-styles/_animations.scss b/packages/base-styles/_animations.scss
index ae5de9a803008..e5bbf86375735 100644
--- a/packages/base-styles/_animations.scss
+++ b/packages/base-styles/_animations.scss
@@ -41,8 +41,3 @@
@warn "The `edit-post__fade-in-animation` mixin is deprecated. Use `animation__fade-in` instead.";
@include animation__fade-in($speed, $delay);
}
-
-@mixin editor-canvas-resize-animation($additional-transition-rules...) {
- transition: all 400ms cubic-bezier(0.46, 0.03, 0.52, 0.96), $additional-transition-rules;
- @include reduce-motion("transition");
-}
diff --git a/packages/base-styles/_z-index.scss b/packages/base-styles/_z-index.scss
index e4d6ce4ce1b1c..167af583ed9dd 100644
--- a/packages/base-styles/_z-index.scss
+++ b/packages/base-styles/_z-index.scss
@@ -165,9 +165,9 @@ $z-layers: (
".components-resizable-box__corner-handle": 2,
// Make sure block manager sticky category titles appear above the options
- ".editor-block-manager__category-title": 1,
+ ".block-editor-block-manager__category-title": 1,
// And block manager sticky disabled block count is higher still
- ".editor-block-manager__disabled-blocks-count": 2,
+ ".block-editor-block-manager__disabled-blocks-count": 2,
// Needs to appear below other color circular picker related UI elements.
".components-circular-option-picker__option-wrapper::before": -1,
diff --git a/packages/base-styles/package.json b/packages/base-styles/package.json
index bcdb19206b39e..2fc026a9ee72a 100644
--- a/packages/base-styles/package.json
+++ b/packages/base-styles/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/base-styles",
- "version": "5.12.0",
+ "version": "5.13.0",
"description": "Base SCSS utilities and variables for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/blob/CHANGELOG.md b/packages/blob/CHANGELOG.md
index 2edfa51064106..2d518db27bb40 100644
--- a/packages/blob/CHANGELOG.md
+++ b/packages/blob/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.13.0 (2024-11-27)
+
## 4.12.0 (2024-11-16)
## 4.11.0 (2024-10-30)
diff --git a/packages/blob/package.json b/packages/blob/package.json
index 2134bcd21e934..4ecf660240049 100644
--- a/packages/blob/package.json
+++ b/packages/blob/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/blob",
- "version": "4.12.0",
+ "version": "4.13.0",
"description": "Blob utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-directory/CHANGELOG.md b/packages/block-directory/CHANGELOG.md
index 37b6b6b3ece40..ff4fac035eaa0 100644
--- a/packages/block-directory/CHANGELOG.md
+++ b/packages/block-directory/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.13.0 (2024-11-27)
+
## 5.12.0 (2024-11-16)
## 5.11.0 (2024-10-30)
diff --git a/packages/block-directory/package.json b/packages/block-directory/package.json
index a005e5be7cd60..2fa0bf52ea126 100644
--- a/packages/block-directory/package.json
+++ b/packages/block-directory/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-directory",
- "version": "5.12.0",
+ "version": "5.13.0",
"description": "Extend editor with block directory features to search, download and install blocks.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-editor/CHANGELOG.md b/packages/block-editor/CHANGELOG.md
index 3c1e63c75c75f..87dc0459bfb71 100644
--- a/packages/block-editor/CHANGELOG.md
+++ b/packages/block-editor/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 14.8.0 (2024-11-27)
+
## 14.7.0 (2024-11-16)
## 14.6.0 (2024-10-30)
diff --git a/packages/block-editor/package.json b/packages/block-editor/package.json
index 031b34933691a..008e02355ac70 100644
--- a/packages/block-editor/package.json
+++ b/packages/block-editor/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-editor",
- "version": "14.7.0",
+ "version": "14.8.0",
"description": "Generic block editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-editor/src/components/block-canvas/style.scss b/packages/block-editor/src/components/block-canvas/style.scss
index 8f6064de0b615..ea54646e64a59 100644
--- a/packages/block-editor/src/components/block-canvas/style.scss
+++ b/packages/block-editor/src/components/block-canvas/style.scss
@@ -4,6 +4,7 @@ iframe[name="editor-canvas"] {
height: 100%;
display: block;
// Handles transitions between device previews
- @include editor-canvas-resize-animation;
+ transition: all 400ms cubic-bezier(0.46, 0.03, 0.52, 0.96);
+ @include reduce-motion("transition");
background-color: $gray-300;
}
diff --git a/packages/block-editor/src/components/block-info-slot-fill/index.js b/packages/block-editor/src/components/block-info-slot-fill/index.js
deleted file mode 100644
index 3592fc0424329..0000000000000
--- a/packages/block-editor/src/components/block-info-slot-fill/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * WordPress dependencies
- */
-import { createSlotFill } from '@wordpress/components';
-
-/**
- * Internal dependencies
- */
-import {
- useBlockEditContext,
- mayDisplayControlsKey,
-} from '../block-edit/context';
-
-const { Fill, Slot } = createSlotFill( Symbol( 'BlockInformation' ) );
-
-const BlockInfo = ( props ) => {
- const context = useBlockEditContext();
- if ( ! context[ mayDisplayControlsKey ] ) {
- return null;
- }
- return ;
-};
-BlockInfo.Slot = ( props ) => ;
-
-export default BlockInfo;
diff --git a/packages/block-editor/src/components/block-inspector/index.js b/packages/block-editor/src/components/block-inspector/index.js
index 475d4f6a4b8c2..450a370b5c212 100644
--- a/packages/block-editor/src/components/block-inspector/index.js
+++ b/packages/block-editor/src/components/block-inspector/index.js
@@ -26,7 +26,6 @@ import useInspectorControlsTabs from '../inspector-controls-tabs/use-inspector-c
import AdvancedControls from '../inspector-controls-tabs/advanced-controls-panel';
import PositionControls from '../inspector-controls-tabs/position-controls-panel';
import useBlockInspectorAnimationSettings from './useBlockInspectorAnimationSettings';
-import BlockInfo from '../block-info-slot-fill';
import BlockQuickNavigation from '../block-quick-navigation';
import { useBorderPanelLabel } from '../../hooks/border';
@@ -253,7 +252,6 @@ const BlockInspectorSingleBlock = ( {
className={ blockInformation.isSynced && 'is-synced' }
/>
-
{ showTabs && (
0;
@@ -80,13 +80,13 @@ function BlockManagerCategory( {
{ title } }
/>
diff --git a/packages/editor/src/components/block-manager/checklist.js b/packages/block-editor/src/components/block-manager/checklist.js
similarity index 75%
rename from packages/editor/src/components/block-manager/checklist.js
rename to packages/block-editor/src/components/block-manager/checklist.js
index 2839e2c9e14c1..d5456a14355ef 100644
--- a/packages/editor/src/components/block-manager/checklist.js
+++ b/packages/block-editor/src/components/block-manager/checklist.js
@@ -1,16 +1,20 @@
/**
* WordPress dependencies
*/
-import { BlockIcon } from '@wordpress/block-editor';
import { CheckboxControl } from '@wordpress/components';
+/**
+ * Internal dependencies
+ */
+import BlockIcon from '../block-icon';
+
function BlockTypesChecklist( { blockTypes, value, onItemChange } ) {
return (
-
+
{ blockTypes.map( ( blockType ) => (
-
+
{ !! numberOfHiddenBlocks && (
-
+
{ sprintf(
/* translators: %d: number of blocks. */
_n(
@@ -88,16 +88,16 @@ export default function BlockManager( {
placeholder={ __( 'Search for a block' ) }
value={ search }
onChange={ ( nextSearch ) => setSearch( nextSearch ) }
- className="editor-block-manager__search"
+ className="block-editor-block-manager__search"
/>
{ filteredBlockTypes.length === 0 && (
-
+
{ __( 'No blocks found.' ) }
) }
diff --git a/packages/editor/src/components/block-manager/style.scss b/packages/block-editor/src/components/block-manager/style.scss
similarity index 65%
rename from packages/editor/src/components/block-manager/style.scss
rename to packages/block-editor/src/components/block-manager/style.scss
index 411ee9faf34f7..d72c682dcbb5d 100644
--- a/packages/editor/src/components/block-manager/style.scss
+++ b/packages/block-editor/src/components/block-manager/style.scss
@@ -1,14 +1,14 @@
-.editor-block-manager__no-results {
+.block-editor-block-manager__no-results {
font-style: italic;
padding: $grid-unit-30 0;
text-align: center;
}
-.editor-block-manager__search {
+.block-editor-block-manager__search {
margin: $grid-unit-20 0;
}
-.editor-block-manager__disabled-blocks-count {
+.block-editor-block-manager__disabled-blocks-count {
border: $border-width solid $gray-300;
border-width: $border-width 0;
// Cover up horizontal areas off the sides of the box rectangle
@@ -19,10 +19,10 @@
position: sticky;
// When sticking, tuck the top border beneath the modal header border
top: ($grid-unit-05 + 1) * -1;
- z-index: z-index(".editor-block-manager__disabled-blocks-count");
+ z-index: z-index(".block-editor-block-manager__disabled-blocks-count");
// Stick the category titles to the bottom
- ~ .editor-block-manager__results .editor-block-manager__category-title {
+ ~ .block-editor-block-manager__results .block-editor-block-manager__category-title {
top: $grid-unit-40 - 1;
}
.is-link {
@@ -30,32 +30,32 @@
}
}
-.editor-block-manager__category {
+.block-editor-block-manager__category {
margin: 0 0 $grid-unit-30 0;
}
-.editor-block-manager__category-title {
+.block-editor-block-manager__category-title {
position: sticky;
top: - $grid-unit-05; // Offsets the top padding on the modal content container
padding: $grid-unit-20 0;
background-color: $white;
- z-index: z-index(".editor-block-manager__category-title");
+ z-index: z-index(".block-editor-block-manager__category-title");
.components-checkbox-control__label {
font-weight: 600;
}
}
-.editor-block-manager__checklist {
+.block-editor-block-manager__checklist {
margin-top: 0;
}
-.editor-block-manager__category-title,
-.editor-block-manager__checklist-item {
+.block-editor-block-manager__category-title,
+.block-editor-block-manager__checklist-item {
border-bottom: 1px solid $gray-300;
}
-.editor-block-manager__checklist-item {
+.block-editor-block-manager__checklist-item {
display: flex;
justify-content: space-between;
align-items: center;
@@ -72,11 +72,11 @@
}
}
-.editor-block-manager__results {
+.block-editor-block-manager__results {
border-top: $border-width solid $gray-300;
}
// Remove the top border from results when adjacent to the disabled block count
-.editor-block-manager__disabled-blocks-count + .editor-block-manager__results {
+.block-editor-block-manager__disabled-blocks-count + .block-editor-block-manager__results {
border-top-width: 0;
}
diff --git a/packages/block-editor/src/components/block-patterns-list/index.js b/packages/block-editor/src/components/block-patterns-list/index.js
index 8128e89418f45..0c7e54c3c62b2 100644
--- a/packages/block-editor/src/components/block-patterns-list/index.js
+++ b/packages/block-editor/src/components/block-patterns-list/index.js
@@ -41,6 +41,7 @@ function BlockPattern( {
onHover,
showTitlesAsTooltip,
category,
+ isSelected,
} ) {
const [ isDragging, setIsDragging ] = useState( false );
const { blocks, viewportWidth } = pattern;
@@ -114,6 +115,7 @@ function BlockPattern( {
pattern.type ===
INSERTER_PATTERN_TYPES.user &&
! pattern.syncStatus,
+ 'is-selected': isSelected,
}
) }
/>
@@ -192,6 +194,7 @@ function BlockPatternsList(
ref
) {
const [ activeCompositeId, setActiveCompositeId ] = useState( undefined );
+ const [ activePattern, setActivePattern ] = useState( null ); // State to track active pattern
useEffect( () => {
// Reset the active composite item whenever the available patterns change,
@@ -201,6 +204,11 @@ function BlockPatternsList(
setActiveCompositeId( firstCompositeItemId );
}, [ blockPatterns ] );
+ const handleClickPattern = ( pattern, blocks ) => {
+ setActivePattern( pattern.name );
+ onClickPattern( pattern, blocks );
+ };
+
return (
) ) }
{ pagingProps &&
}
diff --git a/packages/block-editor/src/components/block-patterns-list/style.scss b/packages/block-editor/src/components/block-patterns-list/style.scss
index c46bb49b9a901..8b1b0b54c9b1a 100644
--- a/packages/block-editor/src/components/block-patterns-list/style.scss
+++ b/packages/block-editor/src/components/block-patterns-list/style.scss
@@ -44,19 +44,29 @@
outline: $border-width solid rgba($black, 0.1);
outline-offset: -$border-width;
border-radius: $radius-medium;
+
+ transition: outline 0.1s linear;
+ @include reduce-motion("transition");
}
}
- &:hover:not(:focus) .block-editor-block-preview__container::after {
+ // Selected
+ &.is-selected .block-editor-block-preview__container::after {
+ outline-color: $gray-900;
+ outline-width: var(--wp-admin-border-width-focus);
+ outline-offset: calc(-1 * var(--wp-admin-border-width-focus));
+ }
+
+ // Hover state
+ &:hover .block-editor-block-preview__container::after {
outline-color: rgba($black, 0.3);
}
- &:focus .block-editor-block-preview__container::after {
+ // Focused state
+ &[data-focus-visible] .block-editor-block-preview__container::after {
outline-color: var(--wp-admin-theme-color);
outline-width: var(--wp-admin-border-width-focus);
- outline-offset: calc((-1 * var(--wp-admin-border-width-focus)));
- transition: outline 0.1s linear;
- @include reduce-motion("transition");
+ outline-offset: calc(-1 * var(--wp-admin-border-width-focus));
}
.block-editor-patterns__pattern-details:not(:empty) {
@@ -68,6 +78,7 @@
.block-editor-patterns__pattern-icon-wrapper {
min-width: 24px;
height: 24px;
+
.block-editor-patterns__pattern-icon {
fill: var(--wp-block-synced-color);
}
diff --git a/packages/block-editor/src/components/block-settings-menu-controls/index.js b/packages/block-editor/src/components/block-settings-menu-controls/index.js
index 4ebce4172e9b3..b0755be4c2629 100644
--- a/packages/block-editor/src/components/block-settings-menu-controls/index.js
+++ b/packages/block-editor/src/components/block-settings-menu-controls/index.js
@@ -55,7 +55,8 @@ const BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {
const convertToGroupButtonProps =
useConvertToGroupButtonProps( selectedClientIds );
const { isGroupable, isUngroupable } = convertToGroupButtonProps;
- const showConvertToGroupButton = isGroupable || isUngroupable;
+ const showConvertToGroupButton =
+ ( isGroupable || isUngroupable ) && ! isContentOnly;
return (
{
const {
@@ -74,6 +76,7 @@ export function BlockSettingsDropdown( {
getBlockAttributes,
getOpenedBlockSettingsMenu,
getBlockEditingMode,
+ isZoomOut: _isZoomOut,
} = unlock( select( blockEditorStore ) );
const { getActiveBlockVariation } = select( blocksStore );
@@ -98,10 +101,12 @@ export function BlockSettingsDropdown( {
openedBlockSettingsMenu: getOpenedBlockSettingsMenu(),
isContentOnly:
getBlockEditingMode( firstBlockClientId ) === 'contentOnly',
+ isZoomOut: _isZoomOut(),
};
},
[ firstBlockClientId ]
);
+
const { getBlockOrder, getSelectedBlockClientIds } =
useSelect( blockEditorStore );
@@ -248,7 +253,7 @@ export function BlockSettingsDropdown( {
clientId={ firstBlockClientId }
/>
) }
- { ! isContentOnly && (
+ { ( ! isContentOnly || isZoomOut ) && (
>
) }
- <__unstableCommentIconFill.Slot
+
diff --git a/packages/block-editor/src/components/block-settings-menu/index.js b/packages/block-editor/src/components/block-settings-menu/index.js
index 50e8abe09d018..1b96f30e13038 100644
--- a/packages/block-editor/src/components/block-settings-menu/index.js
+++ b/packages/block-editor/src/components/block-settings-menu/index.js
@@ -7,12 +7,12 @@ import { ToolbarGroup, ToolbarItem } from '@wordpress/components';
* Internal dependencies
*/
import BlockSettingsDropdown from './block-settings-dropdown';
-import __unstableCommentIconToolbarFill from '../../components/collab/block-comment-icon-toolbar-slot';
+import CommentIconToolbarSlotFill from '../../components/collab/block-comment-icon-toolbar-slot';
export function BlockSettingsMenu( { clientIds, ...props } ) {
return (
- <__unstableCommentIconToolbarFill.Slot />
+
{ ( toggleProps ) => (
diff --git a/packages/block-editor/src/components/block-toolbar/index.js b/packages/block-editor/src/components/block-toolbar/index.js
index ea068d8126526..63b2f6ad7f9a0 100644
--- a/packages/block-editor/src/components/block-toolbar/index.js
+++ b/packages/block-editor/src/components/block-toolbar/index.js
@@ -74,6 +74,8 @@ export function PrivateBlockToolbar( {
showGroupButtons,
showLockButtons,
showSwitchSectionStyleButton,
+ hasFixedToolbar,
+ isNavigationMode,
} = useSelect( ( select ) => {
const {
getBlockName,
@@ -85,8 +87,10 @@ export function PrivateBlockToolbar( {
getBlockAttributes,
getBlockParentsByBlockName,
getTemplateLock,
+ getSettings,
getParentSectionBlock,
isZoomOut,
+ isNavigationMode: _isNavigationMode,
} = unlock( select( blockEditorStore ) );
const selectedBlockClientIds = getSelectedBlockClientIds();
const selectedBlockClientId = selectedBlockClientIds[ 0 ];
@@ -119,6 +123,7 @@ export function PrivateBlockToolbar( {
const _hasTemplateLock = selectedBlockClientIds.some(
( id ) => getTemplateLock( id ) === 'contentOnly'
);
+
return {
blockClientId: selectedBlockClientId,
blockClientIds: selectedBlockClientIds,
@@ -144,6 +149,8 @@ export function PrivateBlockToolbar( {
showGroupButtons: ! isZoomOut(),
showLockButtons: ! isZoomOut(),
showSwitchSectionStyleButton: isZoomOut(),
+ hasFixedToolbar: getSettings().hasFixedToolbar,
+ isNavigationMode: _isNavigationMode(),
};
}, [] );
@@ -170,6 +177,7 @@ export function PrivateBlockToolbar( {
// Shifts the toolbar to make room for the parent block selector.
const classes = clsx( 'block-editor-block-contextual-toolbar', {
'has-parent': showParentSelector,
+ 'is-inverted-toolbar': isNavigationMode && ! hasFixedToolbar,
} );
const innerClasses = clsx( 'block-editor-block-toolbar', {
diff --git a/packages/block-editor/src/components/block-tools/style.scss b/packages/block-editor/src/components/block-tools/style.scss
index b553d42668cf3..0ed9c138519d2 100644
--- a/packages/block-editor/src/components/block-tools/style.scss
+++ b/packages/block-editor/src/components/block-tools/style.scss
@@ -139,6 +139,45 @@
border-right-color: $gray-900;
}
+ .is-inverted-toolbar {
+ background-color: $gray-900;
+ color: $gray-100;
+
+ &.block-editor-block-contextual-toolbar {
+ border-color: $gray-800;
+ }
+
+ button {
+ color: $gray-300;
+
+ &:hover {
+ color: $white;
+ }
+
+ &:focus::before {
+ box-shadow: inset 0 0 0 1px $gray-900, 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
+ }
+ }
+
+ .block-editor-block-parent-selector .block-editor-block-parent-selector__button {
+ border-color: $gray-800;
+ background-color: $gray-900;
+ }
+
+ .block-editor-block-switcher__toggle {
+ color: $gray-100;
+ }
+
+ .components-toolbar-group,
+ .components-toolbar {
+ border-right-color: $gray-800 !important;
+ }
+
+ .is-pressed {
+ color: var(--wp-admin-theme-color);
+ }
+ }
+
// Hide the block toolbar if the insertion point is shown.
&.is-insertion-point-visible {
visibility: hidden;
diff --git a/packages/block-editor/src/components/collab/block-comment-icon-slot.js b/packages/block-editor/src/components/collab/block-comment-icon-slot.js
index 600db904b2874..bcf8c5f5ff0c5 100644
--- a/packages/block-editor/src/components/collab/block-comment-icon-slot.js
+++ b/packages/block-editor/src/components/collab/block-comment-icon-slot.js
@@ -3,10 +3,6 @@
*/
import { createSlotFill } from '@wordpress/components';
-const { Fill: __unstableCommentIconFill, Slot } = createSlotFill(
- '__unstableCommentIconFill'
-);
+const CommentIconSlotFill = createSlotFill( Symbol( 'CommentIconSlotFill' ) );
-__unstableCommentIconFill.Slot = Slot;
-
-export default __unstableCommentIconFill;
+export default CommentIconSlotFill;
diff --git a/packages/block-editor/src/components/collab/block-comment-icon-toolbar-slot.js b/packages/block-editor/src/components/collab/block-comment-icon-toolbar-slot.js
index dd84b284f082a..056b9a2623262 100644
--- a/packages/block-editor/src/components/collab/block-comment-icon-toolbar-slot.js
+++ b/packages/block-editor/src/components/collab/block-comment-icon-toolbar-slot.js
@@ -3,10 +3,8 @@
*/
import { createSlotFill } from '@wordpress/components';
-const { Fill: __unstableCommentIconToolbarFill, Slot } = createSlotFill(
- '__unstableCommentIconToolbarFill'
+const CommentIconToolbarSlotFill = createSlotFill(
+ Symbol( 'CommentIconToolbarSlotFill' )
);
-__unstableCommentIconToolbarFill.Slot = Slot;
-
-export default __unstableCommentIconToolbarFill;
+export default CommentIconToolbarSlotFill;
diff --git a/packages/block-editor/src/components/color-palette/test/__snapshots__/control.js.snap b/packages/block-editor/src/components/color-palette/test/__snapshots__/control.js.snap
index 3c4cef664a310..14196a221304b 100644
--- a/packages/block-editor/src/components/color-palette/test/__snapshots__/control.js.snap
+++ b/packages/block-editor/src/components/color-palette/test/__snapshots__/control.js.snap
@@ -219,7 +219,7 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
+
+
+
+ comment
+
+
+
+
🍒
@@ -289,6 +304,21 @@ exports[`recordToDom should preserve emoji in formatting 1`] = `
+
+
+
+ /funky
+
+
+
+
test test
diff --git a/packages/rich-text/src/test/helpers/index.js b/packages/rich-text/src/test/helpers/index.js
index f246ab956db3a..7658ede7e3773 100644
--- a/packages/rich-text/src/test/helpers/index.js
+++ b/packages/rich-text/src/test/helpers/index.js
@@ -551,6 +551,58 @@ export const spec = [
text: '\ufffc',
},
},
+ {
+ description: 'should preserve comments',
+ html: '',
+ createRange: ( element ) => ( {
+ startOffset: 0,
+ startContainer: element,
+ endOffset: 1,
+ endContainer: element,
+ } ),
+ startPath: [ 0, 0 ],
+ endPath: [ 2, 0 ],
+ record: {
+ start: 0,
+ end: 1,
+ formats: [ , ],
+ replacements: [
+ {
+ attributes: {
+ 'data-rich-text-comment': 'comment',
+ },
+ type: '#comment',
+ },
+ ],
+ text: '\ufffc',
+ },
+ },
+ {
+ description: 'should preserve funky comments',
+ html: '/funky>',
+ createRange: ( element ) => ( {
+ startOffset: 0,
+ startContainer: element,
+ endOffset: 1,
+ endContainer: element,
+ } ),
+ startPath: [ 0, 0 ],
+ endPath: [ 2, 0 ],
+ record: {
+ start: 0,
+ end: 1,
+ formats: [ , ],
+ replacements: [
+ {
+ attributes: {
+ 'data-rich-text-comment': '/funky',
+ },
+ type: '#comment',
+ },
+ ],
+ text: '\ufffc',
+ },
+ },
];
export const specWithRegistration = [
diff --git a/packages/rich-text/src/to-dom.js b/packages/rich-text/src/to-dom.js
index e7288e4ba1633..ac8308c7274b5 100644
--- a/packages/rich-text/src/to-dom.js
+++ b/packages/rich-text/src/to-dom.js
@@ -68,10 +68,16 @@ function append( element, child ) {
const { type, attributes } = child;
if ( type ) {
- child = element.ownerDocument.createElement( type );
+ if ( type === '#comment' ) {
+ child = element.ownerDocument.createComment(
+ attributes[ 'data-rich-text-comment' ]
+ );
+ } else {
+ child = element.ownerDocument.createElement( type );
- for ( const key in attributes ) {
- child.setAttribute( key, attributes[ key ] );
+ for ( const key in attributes ) {
+ child.setAttribute( key, attributes[ key ] );
+ }
}
}
diff --git a/packages/rich-text/src/to-html-string.js b/packages/rich-text/src/to-html-string.js
index f770dfdefc128..a4c12b4c47f00 100644
--- a/packages/rich-text/src/to-html-string.js
+++ b/packages/rich-text/src/to-html-string.js
@@ -88,6 +88,15 @@ function remove( object ) {
}
function createElementHTML( { type, attributes, object, children } ) {
+ if ( type === '#comment' ) {
+ // We can't restore the original comment delimiters, because once parsed
+ // into DOM nodes, we don't have the information. But in the future we
+ // could allow comment handlers to specify custom delimiters, for
+ // example `{comment-content}>` for Bits, where `comment-content`
+ // would be `/{bit-name}` or `__{translatable-string}` (TBD).
+ return ``;
+ }
+
let attributeString = '';
for ( const key in attributes ) {
diff --git a/packages/rich-text/src/to-tree.js b/packages/rich-text/src/to-tree.js
index 46671c951bc09..0e3caad4f70c8 100644
--- a/packages/rich-text/src/to-tree.js
+++ b/packages/rich-text/src/to-tree.js
@@ -229,7 +229,20 @@ export function toTree( {
const { type, attributes, innerHTML } = replacement;
const formatType = getFormatType( type );
- if ( ! isEditableTree && type === 'script' ) {
+ if ( isEditableTree && type === '#comment' ) {
+ pointer = append( getParent( pointer ), {
+ type: 'span',
+ attributes: {
+ contenteditable: 'false',
+ 'data-rich-text-comment':
+ attributes[ 'data-rich-text-comment' ],
+ },
+ } );
+ append(
+ append( pointer, { type: 'span' } ),
+ attributes[ 'data-rich-text-comment' ].trim()
+ );
+ } else if ( ! isEditableTree && type === 'script' ) {
pointer = append(
getParent( pointer ),
fromFormat( {
diff --git a/packages/router/CHANGELOG.md b/packages/router/CHANGELOG.md
index 7e65d08ea7a4b..07ff407d8435c 100644
--- a/packages/router/CHANGELOG.md
+++ b/packages/router/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.13.0 (2024-11-27)
+
## 1.12.0 (2024-11-16)
## 1.11.0 (2024-10-30)
diff --git a/packages/router/package.json b/packages/router/package.json
index 3ee2571913402..26b4f29df04f6 100644
--- a/packages/router/package.json
+++ b/packages/router/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/router",
- "version": "1.12.0",
+ "version": "1.13.0",
"description": "Router API for WordPress pages.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/scripts/CHANGELOG.md b/packages/scripts/CHANGELOG.md
index 0decdaca528b2..55143ae792ae5 100644
--- a/packages/scripts/CHANGELOG.md
+++ b/packages/scripts/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 30.6.0 (2024-11-27)
+
## 30.5.1 (2024-11-18)
### Bug Fix
diff --git a/packages/scripts/package.json b/packages/scripts/package.json
index fa50f90362a6f..f3e6b325f6d3b 100644
--- a/packages/scripts/package.json
+++ b/packages/scripts/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/scripts",
- "version": "30.5.1",
+ "version": "30.6.0",
"description": "Collection of reusable scripts for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/server-side-render/CHANGELOG.md b/packages/server-side-render/CHANGELOG.md
index d334d34897a7e..66a8d7c03136b 100644
--- a/packages/server-side-render/CHANGELOG.md
+++ b/packages/server-side-render/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.13.0 (2024-11-27)
+
## 5.12.0 (2024-11-16)
## 5.11.0 (2024-10-30)
diff --git a/packages/server-side-render/package.json b/packages/server-side-render/package.json
index 1e2d477840d72..d2cd9aa93d2ce 100644
--- a/packages/server-side-render/package.json
+++ b/packages/server-side-render/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/server-side-render",
- "version": "5.12.0",
+ "version": "5.13.0",
"description": "The component used with WordPress to server-side render a preview of dynamic blocks to display in the editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/shortcode/CHANGELOG.md b/packages/shortcode/CHANGELOG.md
index dd30fa01c08bd..8ee4e9aa3168d 100644
--- a/packages/shortcode/CHANGELOG.md
+++ b/packages/shortcode/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.13.0 (2024-11-27)
+
## 4.12.0 (2024-11-16)
## 4.11.0 (2024-10-30)
diff --git a/packages/shortcode/package.json b/packages/shortcode/package.json
index dde71b677e93f..f87fe06d9bb42 100644
--- a/packages/shortcode/package.json
+++ b/packages/shortcode/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/shortcode",
- "version": "4.12.0",
+ "version": "4.13.0",
"description": "Shortcode module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/style-engine/CHANGELOG.md b/packages/style-engine/CHANGELOG.md
index 91ffb32099a23..768ea039f24f3 100644
--- a/packages/style-engine/CHANGELOG.md
+++ b/packages/style-engine/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.13.0 (2024-11-27)
+
## 2.12.0 (2024-11-16)
## 2.11.0 (2024-10-30)
diff --git a/packages/style-engine/package.json b/packages/style-engine/package.json
index ef7adbe720f6c..bec29df32f762 100644
--- a/packages/style-engine/package.json
+++ b/packages/style-engine/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/style-engine",
- "version": "2.12.0",
+ "version": "2.13.0",
"description": "A suite of parsers and compilers for WordPress styles.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/stylelint-config/CHANGELOG.md b/packages/stylelint-config/CHANGELOG.md
index 402ca7cf9de59..5e6fa218da6f8 100644
--- a/packages/stylelint-config/CHANGELOG.md
+++ b/packages/stylelint-config/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 23.5.0 (2024-11-27)
+
## 23.4.0 (2024-11-16)
## 23.3.0 (2024-10-30)
diff --git a/packages/stylelint-config/package.json b/packages/stylelint-config/package.json
index 6aff6076c76f0..0c35601e9c535 100644
--- a/packages/stylelint-config/package.json
+++ b/packages/stylelint-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/stylelint-config",
- "version": "23.4.0",
+ "version": "23.5.0",
"description": "stylelint config for WordPress development.",
"author": "The WordPress Contributors",
"license": "MIT",
diff --git a/packages/sync/CHANGELOG.md b/packages/sync/CHANGELOG.md
index 867e1fb2b3233..b8ecad37f3f5d 100644
--- a/packages/sync/CHANGELOG.md
+++ b/packages/sync/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.13.0 (2024-11-27)
+
## 1.12.0 (2024-11-16)
## 1.11.0 (2024-10-30)
diff --git a/packages/sync/package.json b/packages/sync/package.json
index 42c784ae13ac6..042e154419929 100644
--- a/packages/sync/package.json
+++ b/packages/sync/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/sync",
- "version": "1.12.0",
+ "version": "1.13.0",
"description": "Sync Data.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/token-list/CHANGELOG.md b/packages/token-list/CHANGELOG.md
index 2e72e21a44f64..0b72a43de88d4 100644
--- a/packages/token-list/CHANGELOG.md
+++ b/packages/token-list/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.13.0 (2024-11-27)
+
## 3.12.0 (2024-11-16)
## 3.11.0 (2024-10-30)
diff --git a/packages/token-list/package.json b/packages/token-list/package.json
index 17837ccd5d1b7..50fe379c1a08e 100644
--- a/packages/token-list/package.json
+++ b/packages/token-list/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/token-list",
- "version": "3.12.0",
+ "version": "3.13.0",
"description": "Constructable, plain JavaScript DOMTokenList implementation, supporting non-browser runtimes.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/undo-manager/CHANGELOG.md b/packages/undo-manager/CHANGELOG.md
index d35ddd1b89592..e84658632a054 100644
--- a/packages/undo-manager/CHANGELOG.md
+++ b/packages/undo-manager/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.13.0 (2024-11-27)
+
## 1.12.0 (2024-11-16)
## 1.11.0 (2024-10-30)
diff --git a/packages/undo-manager/package.json b/packages/undo-manager/package.json
index 99fa4c7f8a9bb..5046d9591a8c0 100644
--- a/packages/undo-manager/package.json
+++ b/packages/undo-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/undo-manager",
- "version": "1.12.0",
+ "version": "1.13.0",
"description": "A small package to manage undo/redo.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/url/CHANGELOG.md b/packages/url/CHANGELOG.md
index 94fc29e83f98d..e4273fc57f2e0 100644
--- a/packages/url/CHANGELOG.md
+++ b/packages/url/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.13.0 (2024-11-27)
+
## 4.12.0 (2024-11-16)
## 4.11.0 (2024-10-30)
diff --git a/packages/url/package.json b/packages/url/package.json
index 0e237f4e95788..8e3fc0dc140cd 100644
--- a/packages/url/package.json
+++ b/packages/url/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/url",
- "version": "4.12.0",
+ "version": "4.13.0",
"description": "WordPress URL utilities.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/viewport/CHANGELOG.md b/packages/viewport/CHANGELOG.md
index 78f0fa1c9292c..faf1bd4b437f0 100644
--- a/packages/viewport/CHANGELOG.md
+++ b/packages/viewport/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.13.0 (2024-11-27)
+
## 6.12.0 (2024-11-16)
## 6.11.0 (2024-10-30)
diff --git a/packages/viewport/package.json b/packages/viewport/package.json
index 548efa124f374..a3d15a587645c 100644
--- a/packages/viewport/package.json
+++ b/packages/viewport/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/viewport",
- "version": "6.12.0",
+ "version": "6.13.0",
"description": "Viewport module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/warning/CHANGELOG.md b/packages/warning/CHANGELOG.md
index 189af916a46a7..424ab1403506a 100644
--- a/packages/warning/CHANGELOG.md
+++ b/packages/warning/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.13.0 (2024-11-27)
+
## 3.12.0 (2024-11-16)
## 3.11.0 (2024-10-30)
diff --git a/packages/warning/package.json b/packages/warning/package.json
index 3d6223ba47ff0..e41b9205d6d37 100644
--- a/packages/warning/package.json
+++ b/packages/warning/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/warning",
- "version": "3.12.0",
+ "version": "3.13.0",
"description": "Warning utility for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/widgets/CHANGELOG.md b/packages/widgets/CHANGELOG.md
index 2c02849b6ceee..b1c63a0ca7f4c 100644
--- a/packages/widgets/CHANGELOG.md
+++ b/packages/widgets/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.13.0 (2024-11-27)
+
## 4.12.0 (2024-11-16)
## 4.11.0 (2024-10-30)
diff --git a/packages/widgets/package.json b/packages/widgets/package.json
index db712cd70d544..0ab7fe138cf51 100644
--- a/packages/widgets/package.json
+++ b/packages/widgets/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/widgets",
- "version": "4.12.0",
+ "version": "4.13.0",
"description": "Functionality used by the widgets block editor in the Widgets screen and the Customizer.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/wordcount/CHANGELOG.md b/packages/wordcount/CHANGELOG.md
index ef65ec41b00db..f323aa3a810d7 100644
--- a/packages/wordcount/CHANGELOG.md
+++ b/packages/wordcount/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.13.0 (2024-11-27)
+
## 4.12.0 (2024-11-16)
## 4.11.0 (2024-10-30)
diff --git a/packages/wordcount/package.json b/packages/wordcount/package.json
index 637d935fc11e6..e4e7efbba3325 100644
--- a/packages/wordcount/package.json
+++ b/packages/wordcount/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/wordcount",
- "version": "4.12.0",
+ "version": "4.13.0",
"description": "WordPress word count utility.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/test/e2e/specs/editor/blocks/image.spec.js b/test/e2e/specs/editor/blocks/image.spec.js
index b2195f2c67688..d3cddd9c3a51c 100644
--- a/test/e2e/specs/editor/blocks/image.spec.js
+++ b/test/e2e/specs/editor/blocks/image.spec.js
@@ -528,14 +528,13 @@ test.describe( 'Image', () => {
name: 'Block: Image',
} );
- const html = `
-
-
- "Cat" by tomhouslay is licensed under CC BY-NC 2.0.
-
- `;
-
- await page.evaluate( ( _html ) => {
+ await page.evaluate( () => {
+ const { createBlock } = window.wp.blocks;
+ const block = createBlock( 'core/image', {
+ url: 'https://live.staticflickr.com/3894/14962688165_04759a8b03_b.jpg',
+ alt: 'Cat',
+ caption: `"Cat" by tomhouslay is licensed under CC BY-NC 2.0.`,
+ } );
const dummy = document.createElement( 'div' );
dummy.style.width = '10px';
dummy.style.height = '10px';
@@ -545,13 +544,17 @@ test.describe( 'Image', () => {
dummy.style.left = 0;
dummy.draggable = 'true';
dummy.addEventListener( 'dragstart', ( event ) => {
- event.dataTransfer.setData( 'default', _html );
+ event.dataTransfer.setData(
+ 'wp-blocks',
+ JSON.stringify( { blocks: [ block ] } )
+ );
+ event.dataTransfer.setData( 'wp-block:core/image', '' );
setTimeout( () => {
dummy.remove();
}, 0 );
} );
document.body.appendChild( dummy );
- }, html );
+ } );
await page.mouse.move( 0, 0 );
await page.mouse.down();
diff --git a/test/e2e/specs/site-editor/zoom-out.spec.js b/test/e2e/specs/site-editor/zoom-out.spec.js
index 464bd4a4a4efa..e698a94b7cf0d 100644
--- a/test/e2e/specs/site-editor/zoom-out.spec.js
+++ b/test/e2e/specs/site-editor/zoom-out.spec.js
@@ -3,6 +3,63 @@
*/
const { test, expect } = require( '@wordpress/e2e-test-utils-playwright' );
+const EDITOR_ZOOM_OUT_CONTENT = `
+
+
+
First Section Start
+
+
+
+
First Section Center
+
+
+
+
First Section End
+
+
+
+
+
+
Second Section Start
+
+
+
+
Second Section Center
+
+
+
+
Second Section End
+
+
+
+
+
+
Third Section Start
+
+
+
+
Third Section Center
+
+
+
+
Third Section End
+
+
+
+
+
+
Fourth Section Start
+
+
+
+
Fourth Section Center
+
+
+
+
Fourth Section End
+
+`;
+
test.describe( 'Zoom Out', () => {
test.beforeAll( async ( { requestUtils } ) => {
await requestUtils.activateTheme( 'twentytwentyfour' );
@@ -47,4 +104,115 @@ test.describe( 'Zoom Out', () => {
expect( htmlRect.y + paddingTop ).toBeGreaterThan( iframeRect.y );
expect( htmlRect.x ).toBeGreaterThan( iframeRect.x );
} );
+
+ test( 'Toggling zoom state should keep content centered', async ( {
+ page,
+ editor,
+ } ) => {
+ // Add some patterns into the page.
+ await editor.setContent( EDITOR_ZOOM_OUT_CONTENT );
+ // Find the scroll container element
+ await page.evaluate( () => {
+ const { activeElement } =
+ document.activeElement?.contentDocument ?? document;
+ window.scrollContainer =
+ window.wp.dom.getScrollContainer( activeElement );
+ return window.scrollContainer;
+ } );
+
+ // Test: Test from top of page (scrollTop 0)
+ // Enter Zoom Out
+ await page.getByRole( 'button', { name: 'Zoom Out' } ).click();
+
+ const scrollTopZoomed = await page.evaluate( () => {
+ return window.scrollContainer.scrollTop;
+ } );
+
+ expect( scrollTopZoomed ).toBe( 0 );
+
+ // Exit Zoom Out
+ await page.getByRole( 'button', { name: 'Zoom Out' } ).click();
+
+ const scrollTopNoZoom = await page.evaluate( () => {
+ return window.scrollContainer.scrollTop;
+ } );
+
+ expect( scrollTopNoZoom ).toBe( 0 );
+
+ // Test: Should center the scroll position when zooming out/in
+ const firstSectionEnd = editor.canvas.locator(
+ 'text=First Section End'
+ );
+ const secondSectionStart = editor.canvas.locator(
+ 'text=Second Section Start'
+ );
+ const secondSectionCenter = editor.canvas.locator(
+ 'text=Second Section Center'
+ );
+ const secondSectionEnd = editor.canvas.locator(
+ 'text=Second Section End'
+ );
+ const thirdSectionStart = editor.canvas.locator(
+ 'text=Third Section Start'
+ );
+ const thirdSectionCenter = editor.canvas.locator(
+ 'text=Third Section Center'
+ );
+ const thirdSectionEnd = editor.canvas.locator(
+ 'text=Third Section End'
+ );
+ const fourthSectionStart = editor.canvas.locator(
+ 'text=Fourth Section Start'
+ );
+
+ // Test for second section
+ // Playwright scrolls it to the center of the viewport, so this is what we scroll to.
+ await secondSectionCenter.scrollIntoViewIfNeeded();
+
+ // Because the text is spread with a group height of 100vh, they should both be visible.
+ await expect( firstSectionEnd ).not.toBeInViewport();
+ await expect( secondSectionStart ).toBeInViewport();
+ await expect( secondSectionEnd ).toBeInViewport();
+ await expect( thirdSectionStart ).not.toBeInViewport();
+
+ // After zooming, if we zoomed out with the correct central point, they should both still be visible when toggling zoom out state
+ // Enter Zoom Out
+ await page.getByRole( 'button', { name: 'Zoom Out' } ).click();
+ await expect( firstSectionEnd ).toBeInViewport();
+ await expect( secondSectionStart ).toBeInViewport();
+ await expect( secondSectionEnd ).toBeInViewport();
+ await expect( thirdSectionStart ).toBeInViewport();
+
+ // Exit Zoom Out
+ await page.getByRole( 'button', { name: 'Zoom Out' } ).click();
+ await expect( firstSectionEnd ).not.toBeInViewport();
+ await expect( secondSectionStart ).toBeInViewport();
+ await expect( secondSectionEnd ).toBeInViewport();
+ await expect( thirdSectionStart ).not.toBeInViewport();
+
+ // Test for third section
+ // Playwright scrolls it to the center of the viewport, so this is what we scroll to.
+ await thirdSectionCenter.scrollIntoViewIfNeeded();
+
+ // Because the text is spread with a group height of 100vh, they should both be visible.
+ await expect( secondSectionEnd ).not.toBeInViewport();
+ await expect( thirdSectionStart ).toBeInViewport();
+ await expect( thirdSectionEnd ).toBeInViewport();
+ await expect( fourthSectionStart ).not.toBeInViewport();
+
+ // After zooming, if we zoomed out with the correct central point, they should both still be visible when toggling zoom out state
+ // Enter Zoom Out
+ await page.getByRole( 'button', { name: 'Zoom Out' } ).click();
+ await expect( secondSectionEnd ).toBeInViewport();
+ await expect( thirdSectionStart ).toBeInViewport();
+ await expect( thirdSectionEnd ).toBeInViewport();
+ await expect( fourthSectionStart ).toBeInViewport();
+
+ // Exit Zoom Out
+ await page.getByRole( 'button', { name: 'Zoom Out' } ).click();
+ await expect( secondSectionEnd ).not.toBeInViewport();
+ await expect( thirdSectionStart ).toBeInViewport();
+ await expect( thirdSectionEnd ).toBeInViewport();
+ await expect( fourthSectionStart ).not.toBeInViewport();
+ } );
} );
diff --git a/tools/webpack/packages.js b/tools/webpack/packages.js
index 1dc396a4d75a1..4459cc063d001 100644
--- a/tools/webpack/packages.js
+++ b/tools/webpack/packages.js
@@ -36,6 +36,7 @@ const WORDPRESS_NAMESPACE = '@wordpress/';
// !!
const BUNDLED_PACKAGES = [
'@wordpress/dataviews',
+ '@wordpress/dataviews/wp',
'@wordpress/icons',
'@wordpress/interface',
'@wordpress/sync',